Linux 服务器安全加固指南

大家好,今天想跟你们聊聊 Linux 服务器安全加固的事儿。这几年我维护了不少服务器,踩过的坑那是真的不少,所以今天把一些实用的经验整理出来,希望能帮到正在管理服务器的朋友们。

引言

别以为服务器放在数据中心就安全了,实际上每天都有大量的扫描和攻击在互联网上进行。我之前就见过有人把服务器开开心心部署上去,结果没几天就被植入挖矿木马,CPU 跑得飞起,流量也异常得吓人。所以啊,安全加固真的是越早做越好,别等到出事了才后悔莫及。

下面我从几个关键的方面来聊聊怎么加固你的 Linux 服务器。

1. SSH 安全配置

SSH 是我们登录服务器的主要方式,但默认配置其实有不少安全隐患。

首先,禁用密码登录,改用密钥对。这是最基本也是最重要的一步。生成密钥对的方法很简单:

ssh-keygen -t ed25519 -C "[email protected]"

然后把公钥上传到服务器:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your_server_ip

接下来修改 SSH 配置文件 /etc/ssh/sshd_config

# 禁用密码登录

PasswordAuthentication no

禁用 root 直接登录

PermitRootLogin no

更改默认端口(可选,但能避开大量自动化扫描)

Port 22222

限制允许登录的用户

AllowUser your_user

改完配置记得重启 SSH 服务:

sudo systemctl restart sshd

还有一个小技巧,就是安装 fail2ban 这个工具,它可以自动封禁那些尝试暴力破解 SSH 的 IP:

sudo apt install fail2ban

sudo systemctl enable fail2ban

2. 用户和权限管理

有时候安全问题不是来自外部,而是内部。合理的用户和权限管理能避免很多麻烦。

创建普通用户,别用 root 干所有事
sudo adduser newuser

sudo usermod -aG sudo newuser # 赋予 sudo 权限

检查有没有多余的超级用户
awk -F: '($3 == 0) {print}' /etc/passwd

应该只有 root 这一行。

设置合理的 umask,编辑 /etc/profile 或者用户家目录下的 .bashrc
umask 077

这样创建的新文件默认权限会更严格。

定期检查系统用户,看看有没有奇怪的账号:
cat /etc/passwd

如果有不在计划内的用户,尤其是 UID 為 0 的,那就要小心了。

3. 防火墙配置

防火墙是服务器的第一道防线。Linux 自带的 iptables 或者 ufw 都很好用。

如果你用的是 Ubuntu,ufw 非常简单:

# 开启防火墙

sudo ufw enable

只允许 SSH

sudo ufw allow 22222/tcp

如果有 Web 服务

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

查看状态

sudo ufw status

如果是 CentOS/RHEL 系列,可以用 firewalld:

sudo firewall-cmd --permanent --add-port=22222/tcp

sudo firewall-cmd --permanent --add-service=http

sudo firewall-cmd --permanent --add-service=https

sudo firewall-cmd --reload

sudo firewall-cmd --list-all

还有一个很实用的策略:只允许特定 IP 段访问 SSH。如果你有固定的工作地点或者 VPN,可以在防火墙规则里加上:

sudo ufw allow from 192.168.1.0/24 to any port 22222

这样就算密码泄露了,攻击者也从其他地方连不上。

4. 系统更新和漏洞修复

这个真的不用多说,但很多人就是忽略了。服务器上的软件和系统一定要保持更新,因为很多更新就是用来修复安全漏洞的。

设置自动安全更新

Ubuntu/Debian:

sudo apt install unattended-upgrades

sudo dpkg-reconfigure -plow unattended-upgrades

CentOS:

sudo yum install yum-cron

sudo systemctl enable yum-cron

还有个重要的事情:定期检查已安装的软件有没有已知漏洞。可以用 lynis 这个工具:

sudo lynis audit system

它会给你一个很详细的安全报告,告诉你哪些地方需要改进。

5. 日志监控和入侵检测

最后聊聊监控。你得知道服务器上发生了什么。

常用日志位置

- SSH 登录日志:/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS)

- 系统日志:/var/log/syslog

- 应用日志:通常在 /var/log/ 下的对应目录

查看最近登录失败的记录
sudo lastb
查看谁在什么时候登录过
sudo last
实时监控 SSH 登录
sudo tail -f /var/log/auth.log | grep "Failed password"

如果想更专业一点,可以装 aide 或者 rkhunter 做入侵检测:

# 安装 aide

sudo apt install aide

sudo aideinit

安装 rkhunter

sudo apt install rkhunter

sudo rkhunter --check

这些工具可以帮你检测文件是否被篡改、系统是否有被rootkit入侵的迹象。

总结

好了,今天聊了这么多,其实核心就是几点:锁好 SSH 这扇门、管好用户权限、设好防火墙、保持系统更新、看好日志。这些做起来其实花不了多少时间,但能帮你挡住绝大多数的攻击。

安全这事儿吧,就是平时多用心,出事少糟心。希望大家的服务器都能稳稳当当的。如果觉得有用,转发给身边需要的朋友也看看呗。有问题欢迎在评论区留言讨论~