Fail2Ban是一款实用软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作。
本次操作是因为博客主机经常有扫描尝试登陆SSH服务,所以想利用Fail2Ban联动防火墙来阻止恶意扫描和密码猜测等恶意攻击行为。
配置发送邮件功能
不需要安装第三方的邮件工具,直接使用系统自带的mail即可。
这里使用163的邮件来做为服务器上的发邮件服务,通过它把警告发送到指定的企业邮箱。
1、修改配置文件/etc/mail.rc 添加以下内容:
因为腾讯云无法访问到smtp.163.com 的25端口,所以只能使用465的ssl协议来发送邮件了。
未使用ssl协议时的配置:
set from=邮件地址@163.com set smtp=smtp.163.com set smtp-auth-user=邮件地址@163.com set smtp-auth-password=e8456ds78c23 set smtp-auth=login
使用ssl协议来发邮件的配置:
set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb set from=邮件地址@163.com set smtp=smtps://smtp.163.com:465 set smtp-auth-user=邮件地址@163.com set smtp-auth-password=e8456ds78c23 set smtp-auth=login
说明:
- smtp-auth-password 并不是邮箱的密码而是一个客户端授权,当然利用授权码就等同密码差不多可以实现发邮件认证了。
- SSl验证跟普通的难证就差别在证书和smtps协议,还有就是端口变成了465
发邮件测试:
echo "邮件内容".|mail -v -s "邮件标题" service@ibian.online
完成上面的邮件发送配置后,这样在接下来的邮件提醒功能才能完成,当然如果你不想要提示,可以直接跳过上面的邮件配置。
Fail2Ban安装
先安装EPLP源:
yum -y install epel-release
为了方便直接使用fail2ban-all安装
============================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================ Installing: fail2ban-all noarch 0.9.7-1.el7 epel 11 k Installing for dependencies: fail2ban-hostsdeny noarch 0.9.7-1.el7 epel 12 k fail2ban-mail noarch 0.9.7-1.el7 epel 15 k fail2ban-shorewall noarch 0.9.7-1.el7 epel 12 k gamin x86_64 0.1.10-16.el7 os 128 k gamin-python x86_64 0.1.10-16.el7 os 34 k perl-Digest noarch 1.17-245.el7 os 23 k perl-Digest-SHA x86_64 1:5.85-4.el7 os 58 k python-inotify noarch 0.9.4-4.el7 os 49 k shorewall noarch 5.1.10.2-1.el7 epel 636 k shorewall-core noarch 5.1.10.2-1.el7 epel 82 k whois x86_64 5.1.1-2.el7 os 72 k Transaction Summary ============================================================================================================================================================ Install 1 Package (+11 Dependent packages) Total download size: 1.1 M Installed size: 4.1 M Is this ok [y/d/N]:
说明:
因为使用fail2ban安装时会只会安装fail2ban包;而使用fail2ban-all安装时就会把邮件提醒的工具也安装上。就是mail-whois.conf相关的一些配置文件。
配置Fail2Ban
进入/etc/fail2ban目录:
在目录/etc/fail2ban/jail.d/下添加一个配置文件sshd.local,这里不对文件修改/etc/fail2ban/jail.conf所以自己添加一新的配置文件。
[root@VM_0_5_centos jail.d]# cat /etc/fail2ban/jail.d/sshd.local [DEFAULT] ignoreip = 127.0.0.1/8 bantime = 300 findtime = 60 maxretry = 5 backend = systemd destemail = 接收报警的邮件地址 sender = 发送者邮件地址 mta = mail protocol = tcp action = %(action_mw)s //这里是有变动的 [sshd] enabled = true port = ssh端口,根据情况修改 logpath = %(sshd_log)s backend = %(sshd_backend)s
配置fail2ban发邮件提醒
以下是我配置的邮件格式:
[root@VM_0_5_centos jail.d]# egrep -v "^#|^$" /etc/fail2ban/action.d/mail-whois.conf [INCLUDES] before = mail-whois-common.conf [Definition] actioncheck = actionban = printf %%b "警告!!!n 攻击者IP:<ip>n 被攻击机器名:`uname -n` n 被攻击机器IP:`/bin/curl ifconfig.co` n 攻击服务:<name> n 攻击次数:<failures> 次 n 攻击方法:暴力破解,尝试弱口令.n 该IP:<ip>已经被Fail2Ban加入防火墙黑名单,屏蔽时间5分钟.nn 以下是攻击者 <ip>信息 :n `/bin/curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>`nn Fail2Ban邮件提醒nn "|/bin/mailx -s "服务器:<name>服务疑似遭到<ip>暴力攻击." <dest> actionunban = [Init] name = default dest = root
说明
- 通过
curl ifconfig.co
获取服务器的外网IP地址,方便知道哪台机报出来的告警。 - 通过
curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>
淘宝的IP查询获取攻击者的一些IP信息。
修改完后启动服务:
systemctl enable fail2ban.service systemctl start fail2ban.service
如果启动的时候有异常可以,修改配置文件/etc/fail2ban/fail2ban.conf
开启DEBUG日志方便排查。第24行左右loglevel = DEBUG
;一般正常情况下使用INFO格式日志即可以了。
尝试使用一台机器对本机的SSH尝试登陆,失败5次后就会把它加入到防火墙规则里,其实在第四次密码错误后,到第五次输密码时就已经发邮件了。
查看防火墙规则:[默认生成一个f2b-sshd表]
[root@VM_0_5_centos action.d]# iptables -vnL f2b-sshd Chain f2b-sshd (1 references) pkts bytes target prot opt in out source destination 13 1488 REJECT all -- * * 101.201.38.40 0.0.0.0/0 reject-with icmp-port-unreachable 185 17268 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
暂无评论内容