安装 CentOS 8 / RHEL 8 服务器后,非常有必要做一些安全设置,以防止未经授权的访问和入侵。
1) 配置防火墙
默认情况下,Centso8 / RHEL 8 系统自带 firewalld 防火墙,启动并启用服务
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
查看防火墙允许的服务
$ sudo firewall-cmd --list all
打开防火墙的端口,比如 443 端口,使用以下命令
$ sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
To allow a service e.g ssh , use the command:
允许一个服务,比如 ssh,使用以下命令
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
要删除端口和服务,请分别使用 remove-port 和 remove-service 选项
为使更改生效,重新加载防火墙
$ sudo firewall-cmd --reload
2) 禁用未使用 / 不良服务
通常建议关闭服务器上不使用或不必要的服务。这是因为运行的服务数量越多,系统上开放的端口数量就越多,攻击者就可以利用这些端口进入您的系统。此外,不要使用旧的和不安全的服务,比如 telnet(它发送纯文本数据)
最佳安全实践建议禁用未使用的服务,并清除系统上运行的所有不安全服务。您可以使用 nmap 工具 扫描您的系统,并检查哪些端口是开放的和正在被监听。
3) 保护重要文件
锁定重要文件以防止意外删除或编辑至关重要,比如:/etc/passwd 和 /etc/gshadow 文件,为了使文件不变(即防止修改或意外删除)使用 chattr 命令,如下所示:
$ sudo chattr +i /etc/passwd
$ sudo chattr +i /etc/shadow
这确保黑客不能更改任何或删除用户的密码导致拒绝登录系统。
4) 设置 SSH
SSH 协议是一种常用的远程登录协议,默认情况下,该协议有可能被黑客利用的固有弱点。
默认情况下,SSH 允许 root 用户远程登录。这是一个潜在的漏洞,如果黑客获得了你系统的 root 密码,那么你的服务器只能靠菩萨保佑了。为了防止这种情况,建议拒绝 root 远程登录,创建具有 sudo 特权的常规用户登录系统。
修改 SSH 配置文件 /etc/ssh/sshd_config 禁用 root 远程登录
PermitRootLogin no
另一种保护 SSH 的方法是使用 SSH 密钥设置 SSH 无密码身份验证。
首先,生成密钥对,如下所示:
$ ssh-keygen
这会生成一对公钥和私钥,公钥复制到远程系统或服务器,私钥保存于客户机上。
接下来,修改 /etc/ssh/sshd_config 配置文件,更改如下参数
PasswordAuthentication no
重启 SSH 服务,以使更改生效
$ sudo systemctl restart sshd
5 ) 限制密码尝试次数
为了进一步加强服务器,可以考虑在通过 SSH 登录时限制密码尝试次数,以防止暴力攻击。
修改 /etc/ssh/sshd_config 配置文件,更改如下参数
MaxAuthTries 3
6) 配置入侵防御系统 (IPS)
Fail2ban 是一个免费开源的入侵防御系统,它通过在一定次数的登录尝试后禁止 IP 地址来保护服务器免受暴力攻击,一旦被阻止,恶意或未经授权的用户甚至不能发起 SSH 登录尝试。
7) 定期更新服务器
确保您的服务器获得最新的功能和安全更新,这对于解决现有的安全问题至关重要。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。