当前位置: 首页 > 工具软件 > Forban > 使用案例 >

源码安装fail2ban

莫逸仙
2023-12-01

fail2ban简单介绍

Fail2ban 能够监控系统日志,匹配日志中的错误信息(使用正则表达式),执行相应的屏蔽动作(支持多种,一般为调用 iptables ),是一款很实用、强大的软件。
如:攻击者不断尝试穷举 SSH 、SMTP 、FTP 密码等,只要达到预设值,fail2ban 就会调用防火墙屏蔽此 IP ,并且可以发送邮件通知系统管理员。
功能、特性:
1、支持大量服务:sshd 、apache 、qmail 等
2、支持多作动作:iptables 、tcp-wrapper 、shorewall 、mail notifications 等
3、logpath 选项中支持通配符
4、需要 Gamin 支持(Gamin 用于监控文件和目录是否更改)
5、如果需要邮件通知,则系统事先要确保能够正常发送邮件

官网网址:http://www.fail2ban.org

  1. 下载安装包
wget https://github.com/fail2ban/fail2ban/archive/0.8.14.tar.gz
  1. 解压tar包并查看说明
tar zxf 0.8.14.tar.gz
cd fail2ban-0.8.12
vim README.md
  1. 检查环境
[root@localhost ~]# python -V 
Python 2.7.5 
[root@localhost ~]# uname -r 
3.10.0-693.el7.x86_64
  1. 安装
python setup.py install
  1. 生成服务启动脚本软连接并开机自启
cp files/redhat-initd /etc/init.d/fail2ban 
/sbin/chkconfig fail2ban on
  1. 文件目录结构

/etc/fail2ban介绍
/etc/fail2ban ## fail2ban 服务配置目录
/etc/fail2ban/action.d ## iptables 、mail 等动作文件目录
/etc/fail2ban/filter.d ## 条件匹配文件目录,过滤日志关键内容
/etc/fail2ban/jail.conf ## fail2ban 防护配置文件
/etc/fail2ban/fail2ban.conf ## fail2ban 配置文件,定义日志级别、日志、sock 文件位置等
fail2ban.conf配置文件
[Definition]
loglevel = 3 ## 定义日志级别,默认
logtarget = /var/log/fail2ban.log ## 定义 fail2ban 日志文件
socket = /var/run/fail2ban/fail2ban.sock ## sock 文件存放位置,默认
pidfile = /var/run/fail2ban/fail2ban.pid ## pid 文件存放位置,默认
jail.conf 防护配置
[DEFAULT] ## 全局设置,优先级最小
ignoreip = 127.0.0.1/8 ## 不受限制的 IP ,多组用空格分割
bantime = 600 ## 非法 IP 被屏蔽时间(秒),-1 代表永远封锁
findtime = 600 ## 设置多长时间(秒)内超过 maxretry 限制次数即被封锁
maxretry = 3 ## 最大尝试次数
backend = auto ## 日志修改检测机制(gamin 、polling 、auto 三种)
usedns = warn
[ssh-iptables] ## 分类设置(基于 SSHD 服务的防护)
enabled = true ## 是否开启防护,false 为关闭
filter = sshd ## 过滤规则 filter 名称,对应 filter.d 目录下的 sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp] ## 动作参数
logpath = /var/log/secure ## 检测系统登陆日志文件
maxretry = 5 ## 最大尝试次数

  1. 启动
/etc/init.d/fail2ban start
  1. 测试
    故意输入错误密码3次,再进行登录时,会拒绝登录
[root@localhost~]# ssh 192.168.110.112
root@192.168.110.112's password: 
Permission denied, please try again.
root@192.168.110.112's password: 
Permission denied, please try again.
root@192.168.110.112's password: 
Permission denied (publickey,password).
[root@localhost~]# ssh 192.168.110.112
ssh: connect to host 192.168.110.112 port 22: Connection refused
  1. 查看当前被封禁的IP
[root@localhost]# fail2ban-client status ssh-iptables 
Status for the jail: ssh-iptables|- filter|  |- File list:    /var/log/secure     #日志文件路径|  |- Currently failed:    0        #当前失败次数|  `- Total failed:    3            #总失败次数
`- action
   |- Currently banned:    1        #当前禁止的ip数量
   |  `- IP list:    192.168.110.112        #当前禁止的ip
   `- Total banned:    1        #禁止的ip总数
 类似资料: