当你初次创建新的 Centos 服务器的时候, Centos 默认的配置安全性和可用性上会存在一点缺陷(运维人员往往会有初始化的脚本)。为了增强服务器的安全性和可用性,有些配置你应该尽快地完成。 这篇文章大致从这方面去讲 - 账号安全 - ssh 安全 - 防火墙 - 交换区文件(swap file)

用户密码安全

关于 root 用户

root 用户是在linux环境下拥有非凡权限的的超级管理员。因为root用户的权限很高,所以在日常使用中不建议使用。这是因为 root 用户能做出一些非常有破坏性的行为,甚至是事故。(比如是臭名昭彰的rm -rf /,或者你会对这篇文章《Linux 中如何避免 rm -rf /*》感兴趣) 下一步,我们为了日常工作会设置一个权限较小的替代用户。我们会教你当你需要更大的权限的时候怎样获取。

创建一个新的用户

这个例子会创建一个用户叫 demo,你可以替换成你喜欢的用户名:

adduser demo

下一步,为新的用户分配密码(再次说明,用你刚创建的用户替换demo)

passwd demo

输入一个强密码,然后再重复输入以完成验证。

用户权限

现在,我们已经有了一个普通权限的用户。然而我们有时需要执行一些管理员任务。 为了避免要注销普通用户,然后用 root 用户重新登录,Linux 中有个优雅的解决方式,系统授权特定用户或用户组作为 root 或他用户执行某些(或所有)命令系统。在这个用户组的用户在每条命令前加个单词 sudo,就可以用管理员权限执行命令。

安装 sudo

有些版本会没有 sudo 命令的,所以首先要安装 sudo

yum install -y sudo

属于wheel用户组的用户可以使用sudo命令。 在 RedHat 系只需我们需要添加用户到那个wheel组。属于wheel组的用户可以使用sudo命令。 以root的身份执行以下命令,会将新用户添加到wheel组中(将 demo 替换成你的新用户)

gpasswd -a demo wheel

ssh 安全

保护你的服务器的下一步是为你的新用户设置公钥认证。通过使用 SSH 私钥登录来会提高服务器的安全性。

生成密钥对

如果你没有包含公钥和私钥的密钥对,你需要生成一个。如果你已经有了想要使用的密钥,请跳到复制公钥的步骤。 要生成新的密钥对,请在本地机器终端输入以下命令:

ssh-keygen

假设你的本地用户叫 localuser ,你会看到的输出如下所示

ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

按回车键以接受这文件名和路径(或者输入新的名称) 下一步,系统会提示你输入密码确保密钥的安全。你可以输入密码或者将密码留空。 注意:如果你将密码留空,你可以用私钥进行身份验证,不输入再输入密码。如果你输入密码了,你需要私钥和密码才能登陆。使用密码保护密码会更加安全,但两者都有自己的用途,并且都比基本密码验证更安全。 这会在 localuser 的Home(主)目录的 .ssh 文件夹 中生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。记住私钥不要和任何不该访问你服务器的人共享。

复制公钥

生成 ssh 密钥对后,你需要将你的公钥复制到新的服务器上。我们将介绍两种简单的方法来做到这点。

方案一: 使用 ssh-copy-id

如果您的本地计算机安装了 ssh-copy-id ,则可以使用它将你的公钥安装到你拥有登录凭据的任何用户。 执行 ssh-copy-id脚本需要指定要安装密钥的服务器的用户名和 IP 地址来,如下所示:

ssh-copy-id demo@SERVER_IP_ADDRESS

在提示符处输入密码后,你的公钥用会被添加到远程用户的.ssh/authorized_keys的文件中。现在可以使用相应的私钥登录到服务器了。

方案二:手动配置密钥

1.如果服务器上没有.ssh/authorized_keys文件, 要先创建.ssh文件夹以及.ssh/authorized_keys文件

cd ~
mkdir .ssh
chmod 700 ~/.ssh
cd ssh
touch authorized_keys
chmod 600 authorized_keys

2.复制公钥内容到服务器上

scp id_rsa.pub userName@host:/home/userName/.ssh/wait_to_authorized_key

3.将公钥字符串添加到authorized_keys文件中

cat wait_to_authorized_key >> authorized_keys

禁止 root 用户登录

现在我们有了新用户,通过修改 SSH 的守护进程(允许我们远程登录的程序)的配置来禁止远程SSH访问 root 用户,这样可以更好第保护我们的服务器。 /etc/ssh/sshd_config

#PermitRootLogin yes

改成

PermitRootLogin no
  • (可选) 禁止密码登录: 把 PasswordAuthentication yes修改为PasswordAuthentication no

然后重载一下ssh的配置

sudo systemctl reload sshd

现在,在我们退出服务器之前,我们应该测试我们的新配置。直到我们确认可以成功建立新的连接。

更多

你可以看我这篇文章 提高-ssh-安全性

防火墙设置

防火墙能控制端口、应用程序的流量,让服务器更加安全。在 Centos 7 中引进 firewalld 作为 iptables 的前端。firewalld 对比 iptables,有区域(zones)划分, 更简单,能动态配置等特点。 下面主要介绍杂在新服务器中 Firewalld 的基本配置 启动

sudo systemctl start firewalld

设置默认区域

sudo firewall-cmd --set-default-zone=public

查看激活区域

sudo firewall-cmd --get-active-zones

如果激活区域中没有public的话,可能是没有为public区域设置接口,你需要用id addr 查看网卡接口(其中 lo 是本地回环接口),再使用设置

sudo firewall-cmd --permanent --zone=public --change-interface=eth0

给防火墙添加允许通过的服务

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=ssh

查看更多可以添加的服务

sudo firewall-cmd --get-services

查看你的 firewalld 信息

sudo firewall-cmd --list-all

重载配置

sudo firewall-cmd --reload

开机启动

sudo systemctl enable firewalld

更多

更多的你可以看官方文档

设置交换分区(可选)

当你服务器内存不够用的时候,就会被访问频率较低暂时放在交换分区的磁盘文件中。现在设置交换分区的公司应该不多,因为不够用还不如直接加内存。分区文件执行效率肯定比内存低很多。 为何还是会有人用分区文件呢? 穷。比如我(逃 下面来讲下如何设置分区文件。 交换分区的大小大概等于或者是物理内存的2倍。 比如说,如果我们需要创建一个4千兆字节的文件,我们可以通过输入以下内容创建在 /swapfile 的交换文件

sudo fallocate -l 4G /swapfile

我们需要限制对文件的访问,要让其他用户或其他进程无法看到写入的内容

sudo chmod 600 /swapfile

格式化分区文件

sudo mkswap /swapfile

告诉系统可以用这个文件可以用于交换

sudo swapon /swapfile

开机自动执行

sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'

可以用free -m查看使用的情况

最后

以上几个步骤会让你的 Linux 更加安全和可用,如果你不想每次创建服务器都要做同样的步骤,建议你上面的内容都写都脚本中。

新的 Centos 服务器初始化配置的更多相关文章

  1. 搭建yum本地源_阿里云CentOS服务器初始化设置

    CentOS服务器初始化设置其实不分阿里云或其它服务器了,操作配置过程与步骤也差不多一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb fdisk /de ...

  2. CentOS服务器初始化设置

    CentOS服务器初始化设置 以阿里云服务器为例 一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb,或者为/dev/vdb(阿里云io优化型) fdis ...

  3. Ubuntu 系统服务器初始化配置、安全加固、内核优化和常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875402?spm_id_from=333.999.0.0 描述: 适用于企业内部 Ubuntu 操作服务器初始化.系统安 ...

  4. CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...

  5. centos系统初始化配置

    .改主机名: sed -i 's#HOSTNAME=.*#HOSTNAME=u05mix06.yaya.corp#g' /etc/sysconfig/network && hostna ...

  6. 在centos服务器上配置gitlab钩子引发的一系列问题

    为了给公司的服务器上搭建gitlab环境并且配置钩子(实现在本地git push之后服务器自动git pull),整了好久,最后终于把问题解决了,下面是记录安装gitlab之后引发的一系列问题: 首先 ...

  7. ansible-playbook编写服务器初始化脚本

    1.原理:通过limit的参数,限制新定义的服务器.即可给新买的服务器初始化优化.(如下图所示) 首先我们编写一个总入口的palybook脚本: init.yml --- - hosts: all u ...

  8. 【转】CentOS 6 服务器安全配置指南

    原文连接: CentOS 6 服务器安全配置指南(通用) Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 L ...

  9. Linux - CentOS6.5服务器搭建与初始化配置详解(下)

    传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面  因为这就是最小化安装 ...

随机推荐

  1. equalsIgnoreCase()和equals()的区别

    String a="ABC";a.equals("abc")为false,a.equalsIgnoreCase("abc")为true;eq ...

  2. odoo开发笔记--from视图隐藏顶部&tree视图保留

    场景描述: 开发过程中,有时候我们需要去除odoo自带的一些样式, 比如,form视图,要集成自定义的界面时,就希望把顶部的服务动作 和 分页按钮 隐藏掉. 处理方式: 分两种情况: 1. 保留顶部区 ...

  3. csv与xlsx导出

    一.csv与xlsx格式基本介绍       csv即comma seperate values - 逗号分隔值,文件以纯文本形式来存储表格数据,它可以由任意数目的记录组成,记录之间通过某种换行符来分 ...

  4. web认证

    前言: HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来.即无法实现状态管理,我们使用Cookie来管理Session(会话),以弥补HTTP协议中不存在的状态管理功能. 步骤: ...

  5. Linux Namespace : User

    User namespace 是 Linux 3.8 新增的一种 namespace,用于隔离安全相关的资源,包括 user IDs and group IDs,keys, 和 capabilitie ...

  6. 翻译:window function(已提交到MariaDB官方手册)

    本文为mariadb官方手册:window functions的译文. 原文:https://mariadb.com/kb/en/window-functions-overview/ 我提交到Mari ...

  7. Python 的反射机制

    什么叫做反射 利用字符串的形式去对象(模块)中操作(查找/添加/获取/删除)成员,一种基于字符串的事件驱动. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以 ...

  8. Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

    应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略: 自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成 ...

  9. Python爬虫之诗歌接龙

    介绍   本文将展示如何利用Python爬虫来实现诗歌接龙.   该项目的思路如下: 利用爬虫爬取诗歌,制作诗歌语料库: 将诗歌分句,形成字典:键(key)为该句首字的拼音,值(value)为该拼音对 ...

  10. [转]MySQL修改时区的方法小结

    本文转自:https://www.cnblogs.com/mracale/p/6064447.html 这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令 ...