fail2ban防御ssh攻击

其实可以设置证书登录,然后把ssh登录22端口关了

在linux上安装Fail2ban

sudo yum install fail2ban
sudo apt-get install fail2ban

为SSH服务器配置Fail2ban

sudo vi /etc/fail2ban/jail.local
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24
# 客户端主机被禁止的时长(秒)
bantime = 86400
# 客户端主机被禁止前允许失败的次数 
maxretry = 5
# 查找失败次数的时长(秒)
findtime = 600
mta = sendmail
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
# Debian 系的发行版 
logpath = /var/log/auth.log
# Red Hat 系的发行版
logpath = /var/log/secure
# ssh 服务的最大尝试次数 
maxretry = 3

根据上述配置,fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在24小时内一直被禁止访问 SSH 服务

重启

sudo service fail2ban restart
在 Fedora 或 CentOS/RHEL 7:
sudo systemctl restart fail2ban

查看拦截列表

sudo iptables --list -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP       all  --  192.168.1.8          0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

如果你想要从fail2ban中解锁某个IP地址,你可以使用iptables命令:

sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP

显示出被禁止IP地址列表

sudo fail2ban-client status ssh-iptables

解锁特定的IP地址:

sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8

开机自启

在 CentOS/RHEL 6中:
sudo chkconfig fail2ban on
在 Fedora 或 CentOS/RHEL 7:
sudo systemctl enable fail2ban
posted @ 2024-03-26 11:54  朝阳1  阅读(18)  评论(0编辑  收藏  举报