服务器安全加固为什么是上线前必做项
裸机或云服务器交付后默认配置几乎无法抵抗自动化扫描攻击。2026年公开威胁情报显示,一台暴露SSH 22端口的Linux服务器平均在4分钟内就会被暴力破解工具锁定。安全加固不是可选项,是上线前的硬性要求。下面按攻击面顺序,从网络层到内核层逐项加固。
SSH访问防护:禁用密码登录与密钥管理
SSH暴力破解占服务器入侵事件的67%。加固的第一步:
# /etc/ssh/sshd_config 修改以下配置
Port 29722 # 改掉默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证
PubkeyAuthentication yes # 仅允许密钥登录
MaxAuthTries 3 # 最多3次认证尝试
LoginGraceTime 30 # 30秒内完成认证
AllowUsers deploy admin@10.0.0.0/8 # 限制用户和来源IP
密钥生成与分发:
# 本地生成Ed25519密钥(比RSA更短更安全)
ssh-keygen -t ed25519 -C "deploy@prod-01" -f ~/.ssh/prod_ed25519
# 将公钥推送到服务器
ssh-copy-id -i ~/.ssh/prod_ed25519.pub -p 29722 deploy@1.2.3.4
Ed25519密钥仅68字符,比3072位RSA的544字符短很多,认证速度也快3倍。
防火墙配置:只放行必要端口
用iptables或nftables做白名单策略:
# nftables规则示例
nft flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# 已建立连接放行
ct state established,related accept
# 回环接口
iif lo accept
# SSH只允许办公网段
ip saddr 10.0.0.0/8 tcp dport 29722 accept
# HTTP/HTTPS
tcp dport { 80, 443 } accept
# ICMP限速放行
icmp type echo-request limit rate 5/second accept
# 记录丢弃包
log prefix "nft-drop: " drop
}
}
所有未明确放行的流量默认DROP。SSH端口只对管理网段开放,公网完全不可达。
内核参数安全调优
sysctl内核参数调整,防SYN Flood、IP欺骗等网络层攻击:
# /etc/sysctl.d/99-security.conf
# SYN Flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
# 禁用IP转发和源路由
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# 连接跟踪调优
net.netfilter.nf_conntrack_max = 524288
net.netfilter.nf_conntrack_tcp_timeout_established = 7200
生效:sysctl --system
文件系统与权限加固
关键目录权限收紧:
# /etc/passwd /etc/shadow 权限
chmod 644 /etc/passwd
chmod 600 /etc/shadow
# 禁止SUID滥用,查找所有SUID文件
find / -perm -4000 -type f 2>/dev/null
# 移除不必要的SUID权限
chmod u-s /usr/bin/chsh /usr/bin/chfn /usr/bin/gpasswd
chmod u-s /usr/bin/newgrp /usr/bin/passwd
# /tmp分区noexec选项(编辑/etc/fstab)
# /tmp ext4 defaults,nosuid,nodev,noexec 0 0
攻击者提权时经常利用SUID二进制文件。去掉chsh、chfn等非必要SUID后,即使拿到普通用户shell也无法通过这些路径提权。
入侵检测:AIDE文件完整性监控
AIDE(Advanced Intrusion Detection Environment)定期扫描文件系统,对比哈希值发现篡改:
# 安装
apt install aide # Debian/Ubuntu
yum install aide # CentOS
# 初始化数据库
aideinit
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 每日检查cron
cat > /etc/cron.daily/aide-check << 'EOF'
#!/bin/bash
aide --update > /var/log/aide/diff-$(date +%Y%m%d).log 2>&1
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 发现变更发告警
grep -q "changed entries" /var/log/aide/diff-$(date +%Y%m%d).log && mail -s "AIDE Alert" admin@example.com < /var/log/aide/diff-$(date +%Y%m%d).log
EOF
chmod +x /etc/cron.daily/aide-check
Fail2Ban自动封禁暴力破解IP
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 29722
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 86400
action = iptables-multiport[name=sshd, port="29722", protocol=tcp]
3次失败尝试即封IP 24小时。配合修改过的SSH端口,暴力破解流量基本被拦截。
自动安全审计与合规检查
用lynis做一键安全审计:
apt install lynis
lynis audit system --quick
Lynis输出100+检查项的评分和修复建议。重点关注BOOT-5122(GRUB密码)、AUTH-9228(密码强度策略)、FIRE-4512(防火墙状态)。每次加固后跑一遍,确认关键项全部通过。
安全加固没有终点,定期更新内核补丁、审计异常登录、review防火墙规则,形成闭环运维习惯。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ssh-fang-hu-nei-he/