每天醒来,第一件事当然是在床上用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
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的“ssh-iptables”监狱使用iptables来阻塞问题IP地址,你可以通过以下方式来检测当前iptables来验证禁止规则。()
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
iptables -D fail2ban-SSH -s ***.***.***.*** -j DROP
使用fail2ban-client命令行工具也可以对其进行管理。这个命令不仅允许你对"ssh-iptables"监狱进行管理,同时也是一个标准的命令行接口,可以管理其他类型的fail2ban监狱。
fail2ban-client status
为了检验一个特定监狱的状态(例如ssh-iptables):
fail2ban-client status ssh-iptables
为了解锁特定的IP地址:
fail2ban-client set ssh-iptables unbanip ***.***.***.***