Fail2ban

​   fail2ban扫描日志文件并且可以识别禁用某些多次尝试登录的IP,通过更新系统的防火墙规则来实现拒绝该IP连接,也可以配置禁用的时间。fail2ban提供了一些常用软件默认的日志过滤规则,方便用户使用,当然也可以自己进行配置filter,预定于提供过滤规则的软件有sshd、apache、nginx等。fail2ban是开源的自由软件,可以在github上查看详细介绍。fail2ban

1. 安装

yum install fail2ban #Centos使用安装源安装
###当然也可以使用github源码的安装脚本进行安装
fail2ban-client -h #安装完成后,可以查看client的帮助

​   安装完成后,可以在/usr/bin/目录下找到fail2ban-*相关的二进制可执行文件,在/etc/fail2ban/目录下找到相关的配置文件。/etc/fail2ban/目录下的配置文件有action(执行的动作)相关的、filter(日志过滤匹配)相关的、jail.conf(配置启用的参数)相关的。我这里介绍设置使用默认的sshd过滤规则,然后如果触发了禁用该IP连接并邮件通知。

2. 使用

​   默认安装好的fail2ban并没有设置开机自启,按需是否设置开机自启:

service fail2ban status #查看服务是否开机自启
service fail2ban enable #设置fail2ban服务开机自启
  • 配置邮件

​   我这里使用网易邮箱作为邮件发送方,其它邮箱服务器按需调整。Centos默认是有邮件服务的,需要设置相关的配置文件。首先编辑/etc/mail.rc文件,设置邮件发送方的配置:

vim /etc/mail.rc

​   在mail.rc文件最后填入配置

set ssl-verify=ignore                   #不验证使用ssl
set from=superlollipop@163.com #邮件发送方
set smtp=smtp.163.com #邮箱服务器
set smtp-auth-user=xxx@163.com #发送方邮箱账号
set smtp-auth-password=xxxx #发送方邮件密码,xxx不是登录密码,是163邮箱的SMTP授权码
set smtp-auth=login

​   配置完mail.rc文件后保存,可以测试是否可以成功发送邮件:

echo "邮件内容" | mail -v -s "邮件标题" xxx@qq.com #测试邮件发送,xxx@qq.com为收件人邮箱
  • 配置jail.local

  上述邮件配置测试通过后,就可以自定义jail.local文件进行配置了,在/etc/fail2ban/目录下新建jail.local文件

vim /etc/fail2ban/jail.local

  输入配置文本并保存:

[DEFAULT]					#也可以不设置这个
ignoreip = 127.0.0.1 #默认忽略IP
bantime = 86400 #禁用时间,描述。这里为1天
maxretry = 3 #最大尝试次数
findtime = 1800 #在1800秒内尝试了3次失败就触发action,这里没有action [ssh-iptables] #ssh防火墙配置模块
enabled = true #true为启动该配置,false不启用
filter = sshd #filter为sshd,在/etc/fail2ban/filter.d/目录下有过滤规则文件sshd.conf,这个是预配置提供的,也可以自己修改
ignoreip = 14.23.92.186 #忽略IP
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois[name=SSH,dest=xxxx@qq.com,sender=xxxx@163.com]
#action为触发后执行的动作,这里有两个动作,第一个是使用iptables禁用IP连接,第二个发送邮件,[]符号内的为参数。第二个动作的的参数dest是收件人,sender是发件人。iptables和mail-whois等action可以在/etc/fail2ban/action.d/目录下查看到相关的配置.conf文件,当然也可以自己修改。
logpath = /var/log/secure #过滤规则的源文件,这是centos的日志文件,Ubuntu的好像是/var/log/auth.log文件,根据实际修改
maxretry = 10 #最大尝试次数为10次
findtime = 600 #在10分钟内尝试
bantime = 86400 #禁止时间为一天
  • 启动服务

  配置成功后,就可以启动服务运行了。

service fail2ban start	#启动服务
fail2ban-client status #通过fail2ban-client查看启动的模块
fail2ban-client status ssh-iptables #通过fail2ban-client查看启动的ssh-iptables模块详细

最新文章

  1. EL表达式不解析
  2. visual studio 查找/替换对话框
  3. 目前主流的Android定位有如下几种:
  4. Streaming replication slots in PostgreSQL 9.4
  5. MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found
  6. wget ftp
  7. spring+mybatis的优缺点
  8. 转载收藏之用 - 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
  9. 利用Effmpeg 提取视频中的音频(mp3)
  10. 5650 so easy
  11. JumpServer1.0 服务搭建
  12. mysql百万级全文索引及match快速查找
  13. cmd命令查看当前IIS运行的网站iisapp appcmd
  14. 搭建单机版的FastDFS服务
  15. Docker Kubernetes 健康检查
  16. 云笔记项目-Java反射知识学习
  17. MongDB篇,第一章:数据库知识2
  18. vue 开发系列(六) 企业微信整合
  19. MiZ702学习笔记10——文本实例化IP的方法
  20. Android手游2048核心功能

热门文章

  1. 题解-Little C Loves 3 III
  2. Idea+Git+GitHub图文教程,一篇教程帮你搞定
  3. SQL盲注、SQL注入 - SpringBoot配置SQL注入过滤器
  4. 【开源】基于 SpringBoot 的 web kettle 在线采集平台
  5. MySQL timestamp 的两个属性
  6. react第八单元(什么是纯函数-组件的性能优化-pureComponent-组件性能优化的原理)
  7. Flink任务暂停重启
  8. Web服务器-正则表达式-小例子(3.1.2)
  9. 使用gitlab-runner本地验证.gitlab-ci.yml
  10. SpringBoot从入门到精通教程(一)