Post

CentOS VPS 安全加固

由于正常上网和经常产生新的 idea 需要,手上的 VPS 越来越多,每次都要对新 VPS 进行安全加固,防止被黑。顺便记录常用加固项。

添加 alias 信息

编辑本地 ~/.ssh/config 文件,添加 VPS 的 alias 信息,方便以后通过 ssh alias-name 连接 VPS。

以 masOS 为例,首先打开 ~/.ssh/config 文件:

1
$ vi ~/.ssh/config

然后将自己的 VPS 信息填写进去,格式如下:

1
2
3
4
Host alias-name # 自定义的主机昵称
   HostName ip_address # VPS 主机地址
   Port port_number # 端口号
   User user # 登陆用户名

如果记不住那么多机器的 alias ,可以写个脚本命令列出已经添加的配置,例如 sshl ,每次需要的显示一下敲一下就 OK 了。

1
$ alias sshl='cat ~/.ssh/config | grep "Host "'

安装 NTP 服务

1
2
3
4
$ sudo yum install ntp ntpdate # 安装 ntp 服务
$ chkconfig ntpd on # 开机自动启动
$ ntpdate pool.ntp.org # 添加 ntp 服务器
$ systemctl start ntpd # 启动 ntp 服务

CentOS 8 使用 chrony

1
2
$ yum install chrony
$ systemctl start chronyd

在登陆时提示上次登录失败的信息

1
2
3
$ vim /etc/pam.d/systemd-user
# 将下面这一行复制进去
session required pam_lastlog.so showfailed

设置每个会话最大密码尝试次数

1
2
3
$ vim /etc/pam.d/systemd-user
# 将下面这一行复制进去
auth pam_pwquality.so retry=3

阻止错误密码尝试

编辑 /etc/pam.d/system-auth/etc/pam.d/password-auth 两个 PAM 配置文件(尝试3次错误锁定20分钟),添加下面两行进去

1
2
auth [default=die] pam_faillock.so authfail deny=3 unlock_time=1200 fail_interval=900
auth required pam_faillock.so authsucc deny=3 unlock_time=1200 fail_interval=900

限制密码重用

使用 PAM 模块配置,在 /etc/pam.d/system-auth 这个 PAM 配置文件里面,在 pam_unix.so 所在的行添加 remember=24 。这样服务器就会记录历史上的前 24 个旧密码,为啥为 24?因为这是美国国防部的标准。

1
password sufficient pam_unix.so existing_options remember=24

设置 /boot/grub2/grub.cfg 权限

设置 /boot/grub2/grub.cfg 的权限为 600

1
sudo chmod 600 /boot/grub2/grub.cfg

创建具有 sudo 权限的普通用户

创建一个新用户

1
2
adduser demo
passwd demo

查看当前活跃用户

1
w

查看用户列表

1
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more

给新用户 sudo 权限

现在,我们有了普通用户,进行普通的操作,但是有时,我们需要更大的权限进行操作,如 yum update,进行这样的操作,我们一般不会使用 root 登进登录,一般使用 sudo (Super User do)命令。

为了将 sudo 权限给普通用户,我们需要将新用户加入 wheel 组中,CentOS 默认的 wheel 组有运行 sudo 的权限。

我们使用 root 用户,将 demo 用户加入到 wheel 组中。

1
gpasswd -a demo wheel

配置 SSH 服务

我们添加了普通用户,也可以执行 sudo 命令,需要配置 ssh 服务,去掉 root 用户的远程登录,这样更加安全。

登录到服务器

1
$ ssh demo@SERVER_IP_ADDRESS

进行配置

1
$ sudo vi /etc/ssh/sshd_config

1
#PermitRootLogin yes

改为

1
PermitRootLogin no

:wq 保存并退出。

重启 ssh 服务

1
$ sudo systemctl reload sshd

这样,服务器的 root 用户就被禁止了远程登录。

修改端口

1
2
$ sudo vi /etc/ssh/sshd_config
Port *

禁止空密码登录

1
2
3
vim /etc/ssh/sshd_config:

PermitEmptyPasswords no

只允许 ssh proto 2

1
2
3
vim /etc/ssh/sshd_config

Protocol 2
This post is licensed under CC BY 4.0 by the author.