Linux 服务器安全加固指南:新机器到手必须做的 3 件事
互联网世界并不安全。只要你买了一台公网 IP 的云服务器,不出 10 分钟,各种扫描器和暴力破解机器人就会找上门来。
如果你刚拿到一台全新的 Ubuntu 或 CentOS 服务器,不要急着装跑环境,请务必先做完以下几步基础加固。这些步骤只需要 10 分钟,却能帮你挡住 90% 以上的自动攻击。
1. 禁用 Root 直接登录
Root 权限太大,一旦密码被爆破成功,服务器就彻底沦陷了。我们应该创建一个普通用户,需要时再用 sudo 提权。
首先创建新用户并赋予 sudo 权限:
1 | adduser deployer |
然后配置该用户的 SSH 公钥登录:
1 | # 在本地机器上生成密钥对(如果还没有的话) |
最后修改 SSH 配置文件:vim /etc/ssh/sshd_config
1 | PermitRootLogin no |
修改完成后重启 SSH 服务:systemctl restart sshd
重要提醒: 在关闭密码登录之前,务必确认密钥登录已经可以正常工作!否则你可能会把自己锁在服务器外面。建议保留一个已打开的终端窗口,直到测试通过。
2. 更改默认的 SSH 端口
端口 22 是全网机器人的重点关照对象。把它改成一个高端口(比如 22022),可以挡住 90% 的低级自动扫描脚本。
同样是在 /etc/ssh/sshd_config 中修改:
1 | Port 22022 |
重启 SSH 后,之后登录就需要指定端口了:
1 | ssh -p 22022 deployer@YOUR_SERVER_IP |
3. 配置防火墙 (UFW)
千万别让服务器处于”裸奔”状态。以 Ubuntu 的 UFW 为例,原则是:默认拒绝所有入站,仅开放需要的端口。
1 | ufw default deny incoming |
验证防火墙状态:ufw status verbose
进阶防御:安装 Fail2ban
仅仅改端口还不够,对于持续攻击同一端口的暴力破解,我们需要 Fail2ban。它会监控日志,发现某个 IP 短时间内多次尝试失败后,自动将其加入防火墙黑名单。
1 | apt install fail2ban -y |
创建一个本地配置覆盖默认值:
1 | cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local |
编辑 jail.local,重点配置 SSH 防护:
1 | [sshd] |
启动并设置开机自启:
1 | systemctl enable fail2ban |
查看封禁记录:fail2ban-client status sshd
遗漏就会后悔:开启审计日志
服务器被入侵后,如果没有日志,你根本无从查起发生了什么。建议开启命令审计:
1 | # 在 /etc/profile 末尾添加 |
这会在 syslog 中记录每个用户执行的每条命令,出事后有迹可循。
自动安全更新
软件漏洞每天都在被发现。配置无人值守的安全更新,可以避免你遗忘更新导致的漏洞:
1 | apt install unattended-upgrades -y |
总结
安全无小事。这简单的几步只需要 10 分钟,却能帮你免去日后服务器被植入挖矿木马、沦为肉鸡的巨大麻烦。敬畏每一行代码,也敬畏互联网的黑暗森林法则——你不主动加固,就有人帮你”加固”。
