centos

怎样防止CentOS SSH被暴力破解

小樊
60
2025-03-11 10:04:22
栏目: 智能运维

防止CentOS SSH被暴力破解可以通过以下几种方法:

1. 修改SSH配置文件

编辑 /etc/ssh/sshd_config 文件,设置以下参数:

示例配置:

Port 2222
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers user1 user2

修改配置后,重启SSH服务:

sudo systemctl restart sshd

2. 使用Fail2Ban

Fail2Ban 是一个开源工具,可以分析SSH登录日志,对多次失败的登录尝试进行封禁。

安装Fail2Ban

sudo yum install fail2ban

配置Fail2Ban

编辑 /etc/fail2ban/jail.local 文件,设置以下内容:

[DEFAULT]
bantime = 3600  # 封禁时间,单位秒
maxretry = 5     # 最大尝试次数

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5

启动Fail2Ban

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

3. 使用端口敲门(Port Knocking)

端口敲门是一种安全措施,要求客户端按特定顺序敲击多个端口,防火墙才会开放SSH端口。

安装Knockd

sudo yum install knockd

配置Knockd

编辑 /etc/knockd.conf 文件,设置以下内容:

[openSSH]
sequence = 5003,5001
seq_timeout = 15
start_command = /sbin/iptables -C INPUT -s %IP% -p tcp --dport 22 -j ACCEPT || /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
cmd_timeout = 10

[closeSSH]
sequence = 7001
seq_timeout = 15
start_command = /sbin/iptables -C INPUT -p tcp --dport 22 -j DROP || /sbin/iptables -I INPUT 1 -p tcp --dport 22 -j DROP && /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
cmd_timeout = 10

启动Knockd

sudo systemctl enable knockd
sudo systemctl start knockd

4. 监控和日志分析

编写脚本定期分析SSH登录日志,例如:

#!/bin/bash
LOG_FILE="/var/log/secure"
THRESHOLD=5
BLOCK_TIME=600

fail2ban() {
    awk '/Failed password for invalid user/ { print $11 }' "$LOG_FILE" | sort | uniq -c | while read count ip; do
        if [ $count -gt $THRESHOLD ]; then
            echo "Blocking $ip - $count failed attempts"
            iptables -I INPUT -s $ip -j DROP
            (sleep $BLOCK_TIME; iptables -D INPUT -s $ip -j DROP) &
        fi
    done
}

clean_old_rules() {
    iptables -D INPUT -s $ip -j DROP 2>/dev/null
}

main() {
    fail2ban
    # 可以选择运行清理函数,定期清理旧的规则
    # clean_old_rules
}

main

确保脚本有执行权限并定期运行。

5. 使用防火墙限制访问

配置防火墙规则,限制特定IP地址或用户的访问。

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="ssh" drop'
sudo firewall-cmd --reload

6. 定期更新系统和软件

保持系统和软件的最新状态,及时修补已知的安全漏洞。

sudo yum update

通过上述措施,可以显著提高CentOS系统的安全性,有效防御SSH暴力破解攻击。

0
看了该问题的人还看了