Linux服务器安全加固实操:SSH加固与fail2ban防暴力破解

服务器安全加固第一件事是收口SSH入口。公网上的22端口每分钟都在被扫描,root密码爆破是最高发的入侵路径。本文给出一套可执行的Linux服务器安全加固步骤,覆盖SSH配置、fail2ban防护、防火墙策略和审计基线。

SSH登录安全加固配置

修改/etc/ssh/sshd_config,关闭root直接密码登录、强制密钥认证、限制重试次数,并将默认端口迁移到高位端口降低扫描命中率。

# /etc/ssh/sshd_config
Port 2222
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
MaxAuthTries 5
ClientAliveInterval 300
ClientAliveCountMax 2
sshd -t
systemctl restart sshd

改端口后先保留原会话,用新端口开新连接验证无误再断旧会话,防止把自己锁在门外。

fail2ban防暴力破解部署

fail2ban轮询认证日志,发现异常登录尝试自动封禁来源IP。安装后编辑jail.local覆盖默认规则。

# Debian/Ubuntu
apt install fail2ban -y
# CentOS/RHEL
yum install epel-release -y
yum install fail2ban -y
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 600
bantime = 3600
ignoreip = 127.0.0.1 10.0.0.0/8
systemctl enable --now fail2ban
fail2ban-client status sshd

ignoreip务必加入公司出口网段,防止办公网络误封。封禁时长按威胁等级配置,核心资产可配置为永久封禁。

防火墙最小化开放端口

对外只暴露必要端口,用firewalld把白名单写成配置。

# firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

用ss -tlnp核对监听端口与防火墙规则是否一致,业务不需要的端口一律不开。

系统审计与异常检测

auditd记录关键文件变更,定期核对UID为0的账号、计划任务与开机项。

systemctl enable --now auditd
auditctl -w /etc/passwd -p wa -k passwd_watch
auditctl -w /etc/ssh/sshd_config -p wa -k ssh_watch

# 检查异常项
awk -F: '$3==0{print $1}' /etc/passwd
crontab -l
ls -l /etc/cron.d/

加固结果自检脚本

把加固项写成检查脚本,每次变更后执行确认状态。

#!/bin/bash
echo "== SSH配置 =="
grep -E '^(PermitRootLogin|PasswordAuthentication|Port)' /etc/ssh/sshd_config
echo "== 空密码账户 =="
awk -F: '($2==""){print $1}' /etc/shadow
echo "== 监听端口 =="
ss -tlnp
echo "== fail2ban状态 =="
fail2ban-client status sshd

服务器安全加固做完入口、密钥、防火墙、审计四层,再配合定期补丁更新,公网暴露面就压到了可控范围。安全不是一次性动作,每次变更后跑一遍自检脚本,状态持续可验证。

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

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

相关推荐