腾讯云centos7安装fail2ban

每天醒来,第一件事当然是在床上用ipad的webssh登陆一下自己的服务器看看啦

但是有一天注意到,

There were 14534 failed login attempts since the last successful login.

妈耶这么多次失败登陆,上网一搜相关资料不出意外是被攻击了

再一查登陆记录

vi /var/log/secure

好吧,这么多名为root的失败登陆,都来自同一个IP: 118.26.170.*** 。还有一些其他的地址也有很多次尝试的记录看着很揪心,好在自己的ssh密码很复杂,半天还是破解不开的。处女座表示这种事不能忍,咱们得防黑加固,装一个fail2ban来阻止这种攻击。


运行以下命令

yum install fail2ban
为SSH服务器配置Fail2ban
配置文件: /etc/fail2ban/jail.conf。 在配置文件的“[DEFAULT]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定服务的配置部分,你可以为每个服务(例如SSH,Apache等)设置特定的配置来覆盖默认的参数配置。


在针对服务的监狱区(在[DEFAULT]区后面的地方),你需要定义一个[ssh-iptables]区,这里用来定义SSH相关的监狱配置。真正的禁止IP地址的操作是通过iptables完成的。


下面是一个包含“ssh-iptables”监狱配置的/etc/fail2ban/jail.conf的文件样例。当然根据你的需要,你也可以指定其他的应用监狱。

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 = 864000
 
# 客户端主机被禁止前允许失败的次数 
maxretry = 5
 
# 查找失败次数的时长(秒)
findtime = 600
 
mta = sendmail
 
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected]]
logpath = /var/log/secure
# ssh 服务的最大尝试次数 
maxretry = 5


根据上述配置,fail2ban会自动禁止在最近10分钟内有超过5次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在240小时内一直被禁止访问 SSH 服务。这个事件也会通过sendemail发送邮件通知。(需要安装sendmail,并在云主机控制台解封25端口)


一旦配置文件准备就绪,按照以下方式重启fail2ban服务

systemctl restart fail2ban


为了验证fail2ban成功运行,使用参数'ping'来运行fail2ban-client 命令。 如果fail2ban服务正常运行,你可以看到“pong(嘭)”作为响应。

sudo fail2ban-client ping

Server replied: pong


设置 Fail2ban 自动启动

systemctl enable fail2ban

检查fail2ban状态并解禁被锁住的IP地址

由于fail2ban的“ssh-iptables”监狱使用iptables来阻塞问题IP地址,你可以通过以下方式来检测当前iptables来验证禁止规则。()

iptables -L 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-SSH    tcp  --  anywhere             anywhere             tcp dpt:ssh


Chain FORWARD (policy ACCEPT)
target     prot opt source               destination


Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Chain f2b-SSH (1 references)

target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0


如果你想要从fail2ban中解锁某个IP地址,你可以使用iptables命令:
iptables -D fail2ban-SSH -s ***.***.***.*** -j DROP


使用fail2ban-client命令行工具也可以对其进行管理。这个命令不仅允许你对"ssh-iptables"监狱进行管理,同时也是一个标准的命令行接口,可以管理其他类型的fail2ban监狱。


为了检验fail2ban状态(会显示出当前活动的监狱列表):
fail2ban-client status
为了检验一个特定监狱的状态(例如ssh-iptables):
fail2ban-client status ssh-iptables
为了解锁特定的IP地址:
fail2ban-client set ssh-iptables unbanip ***.***.***.***


你可能感兴趣的:(centos)