Linux服务器安全加固实操:从SSH防护到内核参数调优

服务器安全加固的核心策略

服务器安全加固是运维工作的底线要求。暴露在公网的服务器每天承受数千次扫描和暴力破解尝试,默认配置的Linux系统几乎无法抵御自动化攻击。这篇文章从SSH防护、防火墙配置、内核参数和安全审计四个层面,给出一套可直接执行的加固方案。所有命令在CentOS 8/Ubuntu 22.04上验证通过。

SSH访问控制:禁用密码认证与端口混淆

SSH暴力破解是最常见的入侵方式。第一步是彻底禁用密码登录,只允许密钥认证。编辑/etc/ssh/sshd_config

# SSH安全加固配置
Port 2222                          # 修改默认端口,减少扫描命中
PermitRootLogin no                 # 禁止root直接登录
PasswordAuthentication no          # 禁用密码认证
PubkeyAuthentication yes           # 启用密钥认证
MaxAuthTries 3                     # 最大认证尝试次数
LoginGraceTime 30                  # 登录超时30秒
AllowUsers deploy admin            # 白名单用户
ClientAliveInterval 300            # 空闲检测间隔
ClientAliveCountMax 2              # 最大空闲检测次数

修改前务必先确认密钥登录可用,否则配置生效后无法连接。生成密钥对:

ssh-keygen -t ed25519 -C "deploy@prod-server-01"
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@your-server

fail2ban对未修改端口仍被扫描的情况提供额外保护,自动封禁多次失败的IP:

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600

防火墙配置:iptables/nftables最小开放原则

只开放业务必需端口,其余全部DROP。使用nftables(CentOS 8+/Ubuntu 22.04+默认):

#!/usr/sbin/nft -f
table inet firewall {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        ct state invalid drop
        iif lo accept
        tcp dport 2222 accept          # SSH
        tcp dport {80, 443} accept     # HTTP/HTTPS
        icmp type echo-request limit rate 5/second accept
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

验证规则生效:nft list ruleset。策略设为drop后,任何未明确放行的入站流量都被拒绝,包括ICMP ping(已限速放行5次/秒)。

内核参数调优:网络与安全相关参数

内核/etc/sysctl.conf中的网络参数直接影响服务器抵御DDoS和网络扫描的能力:

# SYN Flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2

# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# 反IP欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 连接追踪优化
net.netfilter.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 7200

# 内核安全参数
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
fs.suid_dumpable = 0

执行sysctl -p立即生效。其中tcp_syncookies在SYN队列满时启用cookie机制,避免合法连接被SYN Flood挤占。rp_filter开启反向路径过滤,丢弃源地址伪造的数据包。

安全审计与入侵检测

加固后需要持续监控。安装AIDE(Advanced Intrusion Detection Environment)建立文件完整性基线:

# 初始化AIDE数据库
aide --init
cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

# 每日检查脚本 /etc/cron.daily/aide-check
aide --check | mail -s "AIDE Report $(hostname)" admin@example.com

AIDE监控所有关键系统文件(/etc、/bin、/sbin、/usr)的权限、大小、哈希变化。任何被篡改的文件都会在报告中高亮。

日志方面,配置rsyslog将auth日志远程转发到日志服务器,防止入侵者清除本地日志。定期审查/var/log/secure/var/log/auth.log中的异常登录记录,配合auditd监控系统调用级别的关键操作。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-cao-cong-ssh-fang-hu-dao/

(0)
小编小编
上一篇 15小时前
下一篇 15小时前

相关推荐