Linux 服务器安全加固:10个必须做的基础配置
前言
刚装完的 Linux 服务器就像没锁门的房子,任何人都能进来。本文整理了 10 个最基础但最重要的安全加固配置,帮你把门锁上。
1. 修改 SSH 端口,禁止 root 登录
默认 22 端口是黑客扫描的首选目标,改个端口能挡掉 90% 的自动扫描。
# 编辑 sshd 配置
vi /etc/ssh/sshd_config
# 修改端口
Port 22222
# 禁止 root 登录
PermitRootLogin no
# 重启 sshd
systemctl restart sshd
注意:改完端口后,记得在防火墙和安全组里放行新端口,否则你自己也进不去了。
2. 使用 SSH 密钥登录,禁用密码登录
密码再复杂也扛不住暴力破解,密钥登录才是正道。
# 本地生成密钥对(在你自己的电脑上执行)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 把公钥传到服务器
ssh-copy-id -p 22222 user@your_server_ip
# 服务器上禁用密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no
3. 配置防火墙,只开必要端口
# 只开 SSH、HTTP、HTTPS
ufw default deny incoming
ufw default allow outgoing
ufw allow 22222/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
4. 自动安全更新
# Ubuntu/Debian
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
# CentOS/RHEL
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timer
5. 创建普通用户,配置 sudo
永远不要用 root 跑日常操作,创建一个普通用户,需要时用 sudo 提权。
# 创建用户
adduser deploy
# 加入 sudo 组
usermod -aG sudo deploy
6. 禁用不必要的服务
# 查看正在运行的服务
systemctl list-unit-files --type=service --state=enabled
# 禁用不需要的服务
systemctl disable --now avahi-daemon
systemctl disable --now cups
7. 配置 fail2ban 防暴力破解
apt install fail2ban
# 配置 sshd 防护
vi /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 22222
maxretry = 3
bantime = 3600
systemctl restart fail2ban
8. 设置密码策略
# 编辑 pwquality 配置
vi /etc/security/pwquality.conf
minlen = 12 # 最小长度
dcredit = -1 # 至少1个数字
ucredit = -1 # 至少1个大写字母
lcredit = -1 # 至少1个小写字母
ocredit = -1 # 至少1个特殊字符
9. 监控日志,定期检查
# 查看登录失败记录
grep "Failed password" /var/log/auth.log
# 查看当前登录用户
w
# 查看最近登录记录
last -n 20
10. 定期备份,备份再备份
安全加固做得再好,也不如有一份能快速恢复的备份。
# 简单的文件备份脚本
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/
把备份文件同步到异地存储,别只放在同一台服务器上。
总结
这 10 条配置不需要高深的技术,但每一条都能实实在在地降低服务器被攻破的风险。建议新服务器装好后,第一件事就是把这 10 条全部过一遍。
安全不是一次性的工作,而是一个持续的过程。定期更新系统、监控日志、检查异常,才能真正把服务器守好。