暴露在公网的Linux服务器,上线后数小时内就会开始收到端口扫描和SSH爆破请求。多数入侵事件不是因为攻击手段高明,而是默认配置留下的口子:root直接登录、密码认证开着、防火墙全放行。服务器安全加固的核心思路是收缩攻击面,按SSH服务、防火墙、账户策略三个层面逐一收紧。
SSH服务安全加固:密钥登录与fail2ban防爆破
编辑 /etc/ssh/sshd_config,做以下修改:
Port 58222 # 改用高位非默认端口,避开批量扫描
PermitRootLogin no # 禁止root远程登录
PasswordAuthentication no # 仅允许密钥认证
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy # 白名单限定可登录账户
修改前先确认密钥登录可用,另开一个终端保持连接测试新会话,避免把自己锁在门外。确认无误后重载配置:
sudo systemctl reload sshd
密钥认证之外,配合fail2ban处理残余的爆破尝试, jail.local中配置:
[sshd]
enabled = true
maxretry = 5
findtime = 600
bantime = 3600
防火墙最小开放原则:ufw与firewalld配置
Ubuntu/Debian用ufw:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 58222/tcp # SSH新端口
sudo ufw allow 80,443/tcp # Web端口
sudo ufw enable
CentOS/RHEL用firewalld:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=58222/tcp
sudo firewall-cmd --reload
云服务器还要检查安全组规则,主机防火墙与云安全组叠加生效,只改一处不等于收口。数据库、缓存、消息队列端口一律不对公网开放,跨机访问走内网或VPN。
账户与口令策略:从源头消除弱口令
先清理账户:锁定长期不用的系统账户,检查uid为0的非root账户:
sudo usermod -L olduser # 锁定账户
awk -F: '$3==0 {print $1}' /etc/passwd # 检查root等价账户
口令复杂度通过pam_pwquality强制,编辑 /etc/security/pwquality.conf:
minlen = 12
minclass = 3
maxrepeat = 2
日常管理权限统一收敛到sudo,只给指定账户授予白名单命令,避免直接共享root密码;离职和转岗账户当天回收,纳入交接清单。
登录审计与入侵痕迹排查
定期检查登录记录:
last # 成功登录历史
lastb # 失败登录记录(爆破痕迹)
grep "Failed password" /var/log/auth.log | wc -l
关键文件变动用auditd监控,例如审计 /etc/passwd 的写操作:
sudo auditctl -w /etc/passwd -p wa -k identity_change
sudo ausearch -k identity_change | tail -20
发现异常登录IP后,按进程、计划任务(crontab -l、/etc/cron.*)、SSH authorized_keys三处排查,多数入侵会在这三处留下持久化后门。
自动化基线检查:lynis定期体检
手工加固完成后,用lynis做一次基线扫描,输出按警告级别排序的改进项:
sudo apt install lynis # 或 yum install lynis
sudo lynis audit system
关注输出中的warning和suggestion,逐项处理。安全加固不是一次性任务,新开端口、新增账户、升级组件时都要同步更新防火墙规则和审计范围,把基线检查纳入月度例行。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ssh-fang-hu-fang-huo/