文档章节

Fail2ban 原理 安装 使用

wild-life
 wild-life
发布于 2015/05/22 14:59
字数 1120
阅读 2311
收藏 4

一、原理

原理的话可以查看百度和fail2ban的主页,这里需要说明一点,第一次运行fail2ban,它会将之前的日志都分析一次,如果是大量的web日志,你的设置不会立即生效,只有当分析到了你启动那个时间点才会有效果,同时查看debug日志你会发现大量的“ Ignore line since time 1432137724 < 1432196463.42 - 30”,别担心这些。


二、安装

支持平台较多,这里以redhat/centos为例

方式一

添加epel源,以yum安装 https://fedoraproject.org/wiki/EPEL/zh-cn epel主页

rpm -ivh http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install fail2ban

其中

/etc/fail2ban/ 为配置文件目录;

/usr/share/fail2ban/ 为项目文件里面包含了整应用的python代码;

/etc/init.d/fail2ban 为启动脚本

方式二

源码安装

你可以直接clone最新的代码或者下载最新代码

git clone https://github.com/fail2ban/fail2ban.git

or

wget "https://github.com/fail2ban/fail2ban/archive/master.zip";unzip master.zip

然后

cd fail2ban
python setup.py install

/etc/fail2ban/ 为配置文件目录;

/usr/lib/pythonx.x/site-packages/fail2ban-0.9.2.dev-py2.6.egg/fail2ban 项目文件,依赖你的python版本

启动脚本:复制源码路径files下相应的操作系统的启动脚本到/etc/init.d/下即可

cp files/redhat-initd /etc/init.d/fail2ban

安装过程结束


三、配置

rpm包安装方式和源码包安装方式的配置方法不同,官方在0.9或更高的版本将jail.conf文件拆分成,jail.conf文件和jail.d目录 这一点通过对比配置文件的目录结构便可以发现,

#rpm安装

ll /etc/fail2ban/

total 32
drwxr-xr-x 2 root root  4096 May 22 14:01 action.d
-rw-r--r-- 1 root root  1510 Aug 20  2014 fail2ban.conf
drwxr-xr-x 2 root root  4096 May 22 14:01 filter.d
-rw-r--r-- 1 root root 19313 Aug 20  2014 jail.conf

其中fail2ban.conf为fail2ban的主配置文件

grep -v ^# fail2ban.conf |grep -v ^$

[Definition]
loglevel = 3
logtarget = SYSLOG
socket = /var/run/fail2ban/fail2ban.sock
pidfile = /var/run/fail2ban/fail2ban.pid

各个参数在配置文件中均有详细说明,jail.conf为定义的需要处理的的动作是否生效,指定需要分析的logpath等等

这里我们直接追加下面的内容

[nginx-get-cc]
#是否开启防护
enabled = true
#使用的是哪个filter文件  filter.d/nginx-get-cc.conf
filter = nginx-get-cc
#执行的操作,更多操作查看配置文件。
action = iptables-multiport[name=cc-attrack, port="http", protocol=tcp]
#日志路径 
logpath = /var/log/nginx/*error.log   
#时间范围
findtime = 60
#添加到防火墙后多久失效
bantime = 7200
#最大重试次数
maxretry = 1000

然后添加filter文件

vim filter.d/nginx-get-cc.conf

# Fail2Ban configuration file
#
#
[Definition]

# Option: failregex
# Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.
# You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.

failregex =  ^<HOST> - .*GET

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

然后启动

/etc/init.d/fail2ban start

然后使用ab或者webbench工具

ab -n 10000 -c 1000 http://192.168.0.208/

然后观察防火墙状态

iptables-save

-A f2b-cc-attrack -s 192.168.0.213/32 -j REJECT --reject-with icmp-port-unreachable

#源码包安装

ll

total 60
drwxr-xr-x 2 root root  4096 May 20 12:44 action.d
-rw-r--r-- 1 root root  2329 May 21 06:19 fail2ban.conf
drwxr-xr-x 2 root root  4096 May 20 12:44 fail2ban.d
drwxr-xr-x 3 root root  4096 May 21 02:37 filter.d
-rw-r--r-- 1 root root 17755 May 20 12:44 jail.conf
drwxr-xr-x 2 root root  4096 May 21 02:36 jail.d
-rw-r--r-- 1 root root  1889 May 20 12:44 paths-common.conf
-rw-r--r-- 1 root root   645 May 20 12:44 paths-debian.conf
-rw-r--r-- 1 root root   689 May 20 12:44 paths-fedora.conf
-rw-r--r-- 1 root root  1174 May 20 12:44 paths-freebsd.conf
-rw-r--r-- 1 root root   290 May 20 12:44 paths-osx.conf

和yum安装配置唯一的区别在于 jail.conf会自动引用jail.d下以.conf结尾的配置文件,这里我们直接添加一个nginx-get-cc.conf 同时添加内容

vim nginx-get-cc.conf

[nginx-get-cc]
\#是否开启防护
enabled = true
\#使用的是哪个filter文件  filter.d/nginx-get-cc.conf
filter = nginx-get-cc
\#执行的操作,更多操作查看配置文件。
action = iptables-multiport[name=cc-attrack, port="http", protocol=tcp]
\#日志路径 
logpath = /var/log/nginx/*error.log   
\#时间范围
findtime = 60
\#添加到防火墙后多久失效
bantime = 7200
\#最大重试次数
maxretry = 1000

然后添加filter文件,在启动fail2ban然后使用ab工具测试。


© 著作权归作者所有

共有 人打赏支持
wild-life
粉丝 16
博文 94
码字总数 56147
作品 0
成都
技术主管
私信 提问
linux系统安全

方法一: 密码足够复杂 密码的长度要大于8位,最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字符和特殊字符混合组成。 修改默认ssh端口 使用iptables关闭不需要使用的端口 sshd 默...

xucaibao1979
2017/06/30
0
0
Linux 系统安全 -- 防暴力破解

fail2ban防止暴力破解 1. 下载stable稳定版解压缩1 2. 编译安装1 3. 拷贝启动脚本1 4. 修改配置文件1 5. 启动fail2ban2 6. 测试,ssh连接,连续输入3次密码2 7. 此时在查看服务端的防火墙和f...

雨后的春笋
2017/02/24
0
0
web服务器防止dos拒绝服务攻击

服务器安全防护是非常重要的滴,mysql 3306 ,ftp 21 20 ,ssh 22端口等等都可以直接用iptables设置访问的权限,centos系统可以在etc/sysconfig/iptables中加入类似的语句。 -A INPUT -s 19...

落叶刀
2015/10/14
215
0
fail2ban-防止用户暴力破解ssh工具

关于fail2ban: fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!...

weilovepan520
2017/09/30
0
0
Linux 王子 带你完成 Linux SSHD服务“gong fang”实战

重要声明: 本文以研究角度去说明SSHD服务的“gong ji”和防护原理,也不会提供文中所提到的“gong ji”工具(因为会被和谐掉哦!没办法^_^),请读者不要用违法用途,本人对于读者用户违法行...

xruan
06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式“6”大原则!

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要...

Java干货分享
17分钟前
1
0
mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
今天
4
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
今天
4
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
今天
19
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
今天
7
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部