位置:首页 » 文章/教程分享 » CentOS下fail2ban安装与配置教程

介绍

fail2ban用于监视系统日志,通过正则表达式匹配错误错误信息,设置一定的条件触发相应的屏蔽动作。
在笔者的vps里,主要是用于ssh的保护,ssh登录错误的时候会记录到 /var/log/secure,fail2ban通过 gamin检测到新增日志,10min内同一ip连续登陆5次就会封禁30min。
当然,一个足够的强密码也是必须的!

官方主页:http://www.fail2ban.org/wiki/index.php/Main_Page

github:https://github.com/fail2ban/fail2ban

安装

这里有两种安装方式,使用yum安装或者通过rpm安装。笔者的系统版本是CentOS-6.7

yum安装

#首先安装epel源,如果已经安装可以跳过此步
yum install -y epel-release
#然后安装fail2ban:
yum install -y fail2ban  
 rpm安装

fail2ban依赖下面四个安装包:
ed: Linux 操作系统下最简单的文本编辑器,以行为单位对文件进行编辑
gamin-python: python调用gamin的一个模块,gamin实现了一套监控文件变化的机制
ipset: 管理 ip地址/端口/mac地址 的模块,一般用于辅助提高iptables的性能
python-inotify: python的一个模块,实现了文件变化通知机制

#其中前三个都可以使用yum安装:
yum -y install ed gamin-python ipset python-inotify
#然后根据系统架构不同,使用不同的rpm包安装:
#i386
rpm -Uvh ftp://rpmfind.net/linux/atrpms/el6-i386/atrpms/stable/python-inotify-0.9.1-1.1.el6.noarch.rpm  
rpm -Uvh ftp://rpmfind.net/linux/epel/testing/6/i386/fail2ban-0.9.3-1.el6.noarch.rpm
#x86-64
rpm -Uvh ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/python-inotify-0.9.1-1.1.el6.noarch.rpm  
rpm -Uvh ftp://rpmfind.net/linux/epel/testing/6/x86_64/fail2ban-0.9.3-1.el6.noarch.rpm  

配置

目前的最新版本是0.9.3

配置文件位于:
/etc/fail2ban/action.d/ //采取相对应措施的目录
/etc/fail2ban/fail2ban.conf //fail2ban的配置文件
/etc/fail2ban/fail2ban.d/ //fail2ban的配置文件目录
/etc/fail2ban/filter.d/ //具体过滤规则文件目录
/etc/fail2ban/jail.conf //阻挡设定文件
/etc/fail2ban/jail.d/ //阻挡设定文件的目录
/etc/fail2ban/paths-*.conf //不同linux发行版下路径的相关设置,在jail.conf的[INCLUDES]里指定
fail2ban.conf 是针对fail2ban程序运行本身的一些设置。
jail.conf 是fail2ban的业务功能设置,里面设置了需要监控那些服务以及如何保护等,里边已经针对常用的服务提供了监控方案,比如sshd、apache、3proxy等,笔者只启用了sshd的保护。

jail.conf里的注释十分丰富,简单介绍一些基本的设置:
#所有监控项的默认设置
[DEFAULT]
#忽略的ip,这里表示本机ip将永不被封禁
ignoreip = 127.0.0.1/8  
#封禁时间,单位为秒
bantime = 600

#监控周期,表示在600s内,失败次数达到maxretry的主机将会被封禁
findtime = 600

#最大重试次数,表示在findtime内,失败次数达到5次的主机将会被封禁
maxretry = 5

#默认关闭对所有服务的保护
enabled = false  
启用sshd的保护很简单,在jail.conf的[sshd]中加上一行enabled = true就可以:
# SSH servers
#

[sshd]

port = ssh  
logpath = %(sshd_log)s  
enabled = true  
最后就是设置服务自启动了
chkconfig fail2ban on  
service fail2ban start