Linux 服务器安全防护到底要做哪些?这份实战清单帮你堵住 90% 的漏洞

一、别等被入侵了才想起安全这件事

很多朋友买完云服务器,第一件事就是装环境、跑业务,安全防护往往被抛到脑后。直到某天早上打开网站,发现首页被挂了一堆奇怪的广告,或者 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 和内存飙升。关于性能问题,推荐阅读 云服务器测评分数高,网站却卡成狗?测评与调优的正确打开方式,别再本末倒置 这篇文章,能帮你理清思路。

最后提醒一句:安全防护做得好不好,不取决于你用了多少工具,而在于你是否坚持执行。从今天开始,对照这份清单逐项检查你的服务器,把该补的漏洞都补上吧。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部