Fail2ban 原理 安裝 使用

1、原理

原理的話能夠查看百度和fail2ban的主頁,這裏須要說明一點,第一次運行fail2ban,它會將以前的日誌都分析一次,若是是大量的web日誌,你的設置不會當即生效,只有當分析到了你啓動那個時間點纔會有效果,同時查看debug日誌你會發現大量的「 Ignore line since time 1432137724 < 1432196463.42 - 30」,別擔憂這些。python


2、安裝

支持平臺較多,這裏以redhat/centos爲例nginx

方式一

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

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

其中github

/etc/fail2ban/ 爲配置文件目錄;web

/usr/share/fail2ban/ 爲項目文件裏面包含了整應用的python代碼;vim

/etc/init.d/fail2ban 爲啓動腳本centos

方式二

源碼安裝socket

你能夠直接clone最新的代碼或者下載最新代碼tcp

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

安裝過程結束


3、配置

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工具測試。

相關文章
相關標籤/搜索