梦站博客-免费资源
  技术教程分享平台

Centos7巧用fail2ban/Firewalld防止SSH爆破和CC攻击

1.fail2ban简介

Fail2ban是通过扫描日志文件(例如/var/log/apache/error_log)显示恶意动作的IP。比如密码登录失败次数太多,寻找漏洞等。通常,Fail2Ban用于更新防火墙规则以拒绝IP,也可以配置其他动作使用(例如发送电子邮件/iptables)。Fail2Ban带有各种服务的过滤器(apache,nginx,courier,ssh等)。
项目地址:https://github.com/fail2ban/fail2ban
官网网站:http://www.fail2ban.org

2.fail2ban安装

下载源文件安装:

# wget https://github.com/fail2ban/fail2ban/archive/0.11.zip# unzip 0.11.zip# cd fail2ban-0.11# python setup.py install

或者通过GitHub克隆到您选择的目录,然后进行安装:

# git clone https://github.com/fail2ban/fail2ban.git# cd fail2ban# sudo python setup.py install 

如果你使用的是oneinestack,可以使用命令一键安装

安装成功后fail2ban配置文件位于/etc/fail2ban,主要对jail.conf文件进行配置,相关的匹配规则位于filter.d目录,其它目录/文件很少用到,如果需要可自行搜索探究。

3.fail2ban防止SSH爆破

考虑到Centos7已经自带Firewalld,我们这里直接配合Fail2ban展开工作。
新建配置fail2ban规则

vi /etc/fail2ban/

下面对jail.local编辑:

[DEFAULT]ignoreip = 127.0.0.1/8             //白名单IPbantime  = 86400                   //屏蔽时间,秒为单位findtime = 600                     //错误时间范围maxretry = 5                       //最大错误次数banaction = firewallcmd-ipset      //banaction必须用firewallcmd-ipsetaction = %(action_mwl)s[sshd]enabled = truefilter  = sshdport    = 22                       //SSH开启的端口action = %(action_mwl)s            //采取的行动logpath = /var/log/secure          //监视的日志路径

上面的配置意思是如果同一个IP,在10分钟内,连续超过5次登录错误,则使用Firewalld将他IP拉入黑名单就是被ban。
使用另一台服务器不断尝试连接SSH,并且不断的将密码输入错误,你会发现连续超过5次后直接连不上,说明IP被ban了,可以输入:fail2ban-client status sshd查看被ban的IP,如下截图。

4.配合nginx防止CC

其实这里的意思就是监控nginx来banIP,实际原理和SSH防爆破是一样的。

#需要先新建一个nginx日志匹配规则vi /etc/fail2ban/filter.d/nginx-cc.conf#填写如下内容[Definition]failregex =  -.*- .*HTTP/1.* .* .*$ignoreregex =

继续修改jail.local追加对nginx-cc的监控内容:

[nginx-cc]enabled = trueport = http,httpsfilter = nginx-ccaction = %(action_mwl)smaxretry = 20findtime = 60bantime = 3600logpath = /usr/local/nginx/logs/access.log   //logpath为nginx日志路径

配置意思是如果在60s内,如果同一IP请求次数达到20次,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

5.常用命令

#启动systemctl start fail2ban#停止systemctl stop fail2ban#开机启动systemctl enable fail2ban#查看被ban IP,其中sshd为名称,比如上面的[wordpress]fail2ban-client status sshd#删除被ban IPfail2ban-client set sshd delignoreip 192.168.111.111#查看日志tail /var/log/fail2ban.log

6.总结

一般使用fail2ban来阻止SSH爆破还是比较有效的。并且特别方便,如果是使用oneinstacke,还提供一键安装。但是如果遇到大规模CC,其实并没有太大作用。但是聊胜于无不是吗,嘿嘿。

 

嘉华在线

雅星娱乐

恩佐娱乐

未经允许不得转载:emlog梦站 » Centos7巧用fail2ban/Firewalld防止SSH爆破和CC攻击