一、别等被入侵了才想起安全这件事
很多朋友买完云服务器,第一件事就是装环境、跑业务,安全防护往往被抛到脑后。直到某天早上打开网站,发现首页被挂了一堆奇怪的广告,或者 SSH 登录时提示密码错误,才意识到问题的严重性。
其实 Linux 服务器的安全防护并不复杂,它不像电影里演的那样充满黑客攻防的戏剧性,更多的是一些枯燥但有效的日常操作。今天这篇文章,笔者就把这些年积累的实战经验整理成一份清单,从账号、端口、文件、日志到自动化巡检,帮你把该做的防护都做扎实。
二、账号与登录安全:守住第一道门
1. 禁用 root 直接登录
root 账号是攻击者的首要目标。我们建议创建一个普通用户,赋予 sudo 权限,然后禁用 root 的 SSH 登录。
# 创建新用户并加入 sudo 组
useradd -m -s /bin/bash admin
usermod -aG sudo admin
passwd admin
# 修改 SSH 配置
vim /etc/ssh/sshd_config
# 找到并修改以下两行
PermitRootLogin no
PasswordAuthentication no
修改完成后记得重启 SSH 服务:systemctl restart sshd。注意,在禁用密码登录之前,务必确保你已经配置好了 SSH 密钥,否则容易把自己锁在门外。
2. 使用密钥对替代密码认证
密码暴力破解是服务器被入侵最常见的原因。使用 SSH 密钥对可以彻底解决这个问题。生成密钥后,将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中,然后关闭密码认证即可。
3. 配置 Fail2ban 自动封禁恶意 IP
即使做了上述配置,也不排除有漏网之鱼。Fail2ban 会监控日志文件,发现多次认证失败后自动封禁对应 IP。
apt install fail2ban -y # Debian/Ubuntu
yum install fail2ban -y # CentOS/RHEL
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl enable fail2ban
systemctl start fail2ban
三、端口与服务:缩小攻击面
1. 只开放必要的端口
用 ss -tlnp 命令查看当前监听的端口,关闭不需要的服务。比如如果你只跑 Web 服务,那就只需要开放 80 和 443 端口,SSH 端口建议改成非默认的 2222 或其他高位端口。
2. 防火墙规则要精细化
无论是使用 iptables 还是 firewalld,都应该遵循”默认拒绝,按需放行”的原则。以下是一个简单的 UFW 配置示例:
ufw default deny incoming
ufw default allow outgoing
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 2222/tcp
ufw enable
四、文件与系统权限:别给攻击者留后门
1. 关键文件加锁
对 /etc/passwd、/etc/shadow、/etc/sudoers 等关键文件设置不可变属性,防止被篡改:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/sudoers
如果需要修改这些文件,记得先 chattr -i 解锁。
2. 定期检查可疑文件
使用 find 命令找出最近被修改的可疑文件,特别是 web 目录下的可执行文件:
find /var/www -name "*.php" -mtime -7
find /tmp -type f -executable
五、日志审计与自动化监控
日志是发现入侵痕迹的重要依据。建议配置 logrotate 进行日志轮转,同时使用 logwatch 或 auditd 进行日志审计。对于重要操作,比如 sudo 命令执行、用户登录等,都要有对应的日志记录。
这里提醒一下,很多朋友在配置完 Nginx 后会发现日志里出现大量 304 状态码,这其实和 Nginx 反向代理频繁出现 304 状态码?别慌,这篇文章帮你彻底搞懂它 有详细说明,属于正常缓存机制,不必过于紧张。
六、系统更新与补丁管理
很多入侵事件都是利用已知漏洞进行的,而这些漏洞往往在数月前就已经有补丁了。建议开启自动安全更新:
# Debian/Ubuntu
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
# CentOS/RHEL
yum install dnf-automatic
systemctl enable --now dnf-automatic
七、Web 应用层面的防护
如果你的服务器运行着 Web 应用,还需要关注应用层安全。比如配置 Nginx 限制请求频率、隐藏版本号、禁用不安全的 HTTP 方法等。对于 WordPress 站点,可以参考 WordPress 打开慢如蜗牛?这份性能优化加速实战清单,让你的网站飞起来 中的方法进行优化,同时也要注意插件的安全更新。
八、安全加固清单速查表
| 防护项 | 操作要点 | 优先级 |
|---|---|---|
| SSH 安全 | 禁用 root 登录、使用密钥认证、修改默认端口 | 最高 |
| 防火墙 | 默认拒绝,仅放行必要端口 | 最高 |
| 系统更新 | 开启自动安全更新 | 高 |
| Fail2ban | 监控登录日志,自动封禁恶意 IP | 高 |
| 文件保护 | 关键文件加锁,定期扫描可疑文件 | 中 |
| 日志审计 | 配置日志轮转和审计策略 | 中 |
九、写在最后
安全防护不是一劳永逸的事情,它更像是一种习惯。建议每季度做一次全面的安全检查,包括查看登录记录、检查可疑进程、更新安全补丁等。如果你使用的是云服务器,选择靠谱的服务商也很重要——正规云厂商通常会提供基础的安全组和 DDoS 防护能力。
另外,服务器性能和安全其实是相辅相成的。一台被入侵的服务器,往往也会因为恶意进程导致 CPU 和内存飙升。关于性能问题,推荐阅读 云服务器测评分数高,网站却卡成狗?测评与调优的正确打开方式,别再本末倒置 这篇文章,能帮你理清思路。
最后提醒一句:安全防护做得好不好,不取决于你用了多少工具,而在于你是否坚持执行。从今天开始,对照这份清单逐项检查你的服务器,把该补的漏洞都补上吧。