Linux服务器安全加固实战:SSH防爆破与内核参数调优配置指南

SSH暴力破解防护体系搭建

Linux服务器暴露在公网后,SSH暴力破解是最常见的攻击方式。一台新上架的云服务器,如果在22端口运行默认SSH配置,通常24小时内就会收到数千次登录尝试。服务器安全加固的第一步就是构建SSH防爆破体系,这比装防火墙更加紧迫。

最基础的措施是修改SSH默认端口并禁止root登录。编辑/etc/ssh/sshd_config

Port 2222
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
LoginGraceTime 30

禁用密码认证后,必须配置密钥登录。在本地机器生成ED25519密钥对(比RSA更安全且更短):

ssh-keygen -t ed25519 -C "admin@yunthe.com"
ssh-copy-id -p 2222 user@your-server

修改配置后重启SSH服务:systemctl restart sshd。操作前务必保持一个已连接的终端会话,避免配置错误导致锁死。

Fail2Ban自动封禁配置

修改端口只能减少扫描流量,无法阻止针对性攻击。Fail2Ban通过解析SSH日志自动封禁异常IP,是防爆破的核心工具。安装与配置:

# CentOS/RHEL
yum install -y fail2ban
# Ubuntu/Debian
apt install -y fail2ban

创建本地配置文件/etc/fail2ban/jail.local

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
findtime = 600
bantime = 86400
action = iptables-multiport[name=sshd, port="2222", protocol=tcp]

参数说明:maxretry表示600秒内失败3次即触发封禁,bantime为封禁时长86400秒(24小时)。生产环境建议bantime设为604800(7天)甚至更长。启动服务并设置开机自启:

systemctl enable --now fail2ban
fail2ban-client status sshd

查看封禁状态可以确认规则是否生效。对于频繁扫描的网段,可以在/etc/fail2ban/jail.local中添加ignoreip参数放行可信IP,防止误封。

内核网络参数调优

Linux内核默认参数面向通用场景,服务器安全加固需要对网络栈进行针对性调优。修改/etc/sysctl.conf

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

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

# 禁止IP转发和源路由
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# SYN重试次数
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 5

执行sysctl -p使配置生效。SYN Cookie机制可以有效缓解SYN Flood攻击,将半连接占用的资源从内核内存转移到计算COOKIE值,牺牲少量CPU换取内存安全。tcp_max_syn_backlog调大到8192可以容纳更多并发连接请求,避免正常连接被拒绝。

文件系统与进程安全加固

内核参数之外,文件系统级别的安全同样关键。禁用不必要的SUID二进制文件,防止提权攻击:

# 查找所有SUID文件
find / -perm -4000 -type f 2>/dev/null

# 移除不必要的SUID权限
chmod u-s /usr/bin/chsh
chmod u-s /usr/bin/chfn
chmod u-s /usr/bin/mount
chmod u-s /usr/bin/umount

常见需要保留SUID权限的只有sudopasswdsu等极少数命令,其余的都可以移除。限制/tmp分区权限也很重要:

# /etc/fstab中添加
/tmp  /tmp  tmpfs  defaults,nosuid,nodev,noexec  0 0

设置noexec后,即使攻击者在/tmp下放置了恶意可执行文件也无法直接运行。nodev禁止设备文件,nosuid禁止SUID权限,三者组合有效限制了/tmp分区的攻击面。

日志审计与入侵检测

安全加固不是一次性工作,持续监控才能及时发现异常。安装auditd进行系统调用审计:

yum install -y audit
systemctl enable --now auditd

添加关键文件监控规则/etc/audit/rules.d/audit.rules

# 监控passwd文件修改
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudo_changes

# 监控SSH配置变更
-w /etc/ssh/sshd_config -p wa -k sshd_config

# 监控内核模块加载
-a always,exit -F arch=b64 -S init_module -S finit_module -k module_load

通过aureportausearch命令可以快速检索审计日志。例如查看今天的登录事件:aureport -l -ts today。配合日志轮转策略(/etc/logrotate.d/)定期归档审计日志,既保证磁盘不被撑满,也保留足够的历史数据用于事后追溯。

服务器安全加固是一个持续迭代的过程。每轮加固后使用ss -tlnp检查监听端口、iptables -L -n检查防火墙规则、fail2ban-client status检查封禁列表,确认配置正确生效。定期使用Lynis等安全扫描工具做全面检查,将系统安全评分维持在85分以上,是生产环境的基本要求。

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

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

相关推荐