fail2ban的使用以及防暴力破解與郵件預警

 

  fail2ban能夠監視你的系統日誌,而後匹配日誌的錯誤信息(正則式匹配)執行相應的屏蔽動做(通常狀況下是防火牆),並且能夠發送e-mail通知系統管理員!php

  fail2ban運行機制:簡單來講其功能就是防止暴力破解。工做的原理是經過分析必定時間內的相關服務日誌,將知足動做的相關IP利用iptables加入到dorp(丟棄)列表必定時間。python

  fail2ban 官方網址:http://www.fail2ban.org
git

  文章的主要內容: 1. 安裝fail2ban   2. 配置fail2ban    3. fail2ban的經常使用命令以及詳解   4.郵件預警  5.注意事項
github

1. 安裝fail2ban
vim

  源碼安裝:bash

  1.1 下載安裝包並解壓  ssh

cd /tmp && wget  https://github.com/fail2ban/fail2ban/archive/0.8.14.tar.gz && tar -xvzf  0.8.14.tar.gz 

   1.2  查看安裝須要的環境tcp

[root@vultr fail2ban-0.8.14]# cd  /tmp/fail2ban* && cat README.md

Installation:
-------------

**It is possible that Fail2ban is already packaged for your distribution.  In
this case, you should use it instead.**

Required:
- [Python >= 2.4](http://www.python.org)

Optional:
- [pyinotify >= 0.8.3](https://github.com/seb-m/pyinotify)
  - Linux >= 2.6.13
- [gamin >= 0.0.21](http://www.gnome.org/~veillard/gamin)

To install, just do:

    tar xvfj fail2ban-0.8.12.tar.bz2
    cd fail2ban-0.8.12
    python setup.py install

This will install Fail2Ban into /usr/share/fail2ban. The executable scripts are
placed into /usr/bin, and configuration under /etc/fail2ban.

Fail2Ban should be correctly installed now. Just type:

    fail2ban-client -h

to see if everything is alright. You should always use fail2ban-client and
never call fail2ban-server directly.

我把README.md裏的主要內容貼出來了。測試

環境檢查ui

[root@localhost ~]# python -V
Python 2.7.5
[root@localhost ~]# uname -r 
3.10.0-693.el7.x86_64

  1.3 安裝fail2ban

cd /tmp/fail2ban-*  && python setup.py install
echo $?

   生成服務啓動腳本並開機自啓:

cp /tmp/fail2ban-*/files/redhat-initd   /etc/init.d/fail2ban
/sbin/chkconfig fail2ban on 

  yum安裝:

yum install fail2ban 

  fail2ban的配置文件路徑:/etc/fail2ban

  fail2ban安裝目錄:/usr/share/fail2ban

  日誌文件:/var/log/fail2ban.log

  達到閾值以後的執行的動做的配置文件:   action.d

  包含全部的過濾規則filter.d/

2. 配置fail2ban並實現防暴力破解

  官方的文檔寫到:在配置時,咱們應該避免修改由fail2ban安裝建立的文件,咱們應該去編寫具備.local擴展名的新文件。在.local新文件裏配置的內容會覆蓋jail.conf內容裏相同的值。

  當咱們的配置發生改變了咱們能夠使用  fail2ban-client reload ,來加載新的配置。

  2.1配置fail2ban

    編輯配置文件 jail.local  並實現防暴力破解 

vim /etc/fail2ban/jail.d/jail.local 

 文件內容

#defalut這裏是設定全局設置,若是下面的監控沒有設置就以全局設置的值設置。
[DEFAULT]
# 用於指定哪些地址ip能夠忽略 fail2ban 防護,以空格間隔。
ignoreip = 127.0.0.1/8
# 客戶端主機被禁止的時長(默認單位爲秒)
bantime  = 3600
# 過濾的時長(秒)
findtime  = 600
# 匹配到的閾值(次數)
maxretry = 3



[ssh-iptables]
# 是否開啓
enabled  = true
# 過濾規則
filter   = sshd
# 動做
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# 日誌文件的路徑
logpath  = /var/log/secure
# 匹配到的閾值(次數)
maxretry = 3

  在這裏須要注意一點就是:咱們上面的action設置的時候,port=ssh,若是咱們更改了sshd服務的端口號,我能須要在這裏設置對應的端口號,不然配置不生效。

  2.2 防暴力破解測試

    在上面配置好了以後,咱們須要讓配置生效:

fail2ban-client reload

    測試:故意輸入錯誤密碼3次,再進行登陸時,會拒絕登陸

[root@121~]# ssh 192.168.1.121
root@192.168.1.121's password: 
Permission denied, please try again.
root@192.168.1.121's password: 
Permission denied, please try again.
root@192.168.1.121's password: 
Permission denied (publickey,password).
[root@121~]# ssh 192.168.1.121
ssh: connect to host 192.168.1.121 port 22: Connection refused

   咱們能夠查看當前被禁止登錄的ip:

[root@121]# 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.1.112 #當前禁止的ip
   `- Total banned:    1        #禁止的ip總數

3. fail2ban經常使用的命令

  3.1 啓動暫停查看狀態

systemctl   start/restart/stop/status   fail2ban

    3.2 fail2ban-client

start 啓動fail2ban server和監獄
reload 從新加載配置文件
stop 暫停fail2ban和監獄
status 查看運行的監控服務數量和列表
set loglevel  設置日誌等級,有 CRITICAL, ERROR, WARNING,NOTICE, INFO, DEBUG
get loglevel 獲取當前日誌的等級
set <JAIL> idle on|off  設置某個監控(監獄)的狀態。
set <JAIL> addignoreip <IP> 設置某個監控(監獄)能夠忽略的ip
set <JAIL> delignoreip <IP> 刪除某個監控(監獄)能夠忽略的ip
set <JAIL> banip <IP> 將ip加入 監控(監獄)
set <JAIL> unbanip <IP> 將ip從監控(監獄)移除

     還有不少沒有列出來,我只在列出了我經常使用的一些。

  3.3 fail2ban-regex 

   測試篩選規則設否匹配當前的日誌格式:

fail2ban-regex /var/log/secure  /etc/fail2ban/filter.d/sshd.conf

4. fail2ban郵件預警

  fail2ban 利用sendmail 進行發郵件也能夠用mail進行發郵件,在嘗試了sendmail無果後,決定使用mail。

  具體步驟:

   4.1 在/etc/mail.rc末尾配置發件人的信息:

set ssl-verify=ignore
set from=djx
set smtp=smtps://mail.163.com:25
set smtp-auth-user=dj
set smtp-auth-password=
set smtp-auth=login
set nss-config-dir=/root/.certs

     4.2 而後在jail.local(本身的配置文件裏),加入:

 mail-whois[name=SSH, dest=1120@qq.com, sender=djx@163.com]

dest 是填入收件人郵箱

sender 是填入 發送郵箱

最後從新加載下配置便可。

 注意的問題:

  時區問題:

http://www.fail2ban.org/wiki/index.php/FAQ_englishIf time reference is not the same everywhere, then fail2ban won't ban any IP!

當咱們更改了時區後,而後日誌的時間並無修改過來,致使二者的時間不一致,這樣fail2ban的工做就失效了

解決辦法:重啓日誌服務systemctl restart rsyslog,保證二者的時間一致。

  修改端口問題:

   sshd更改端口號後使用fail2ban須要注意在填寫配置的時候也須要更改端口號。不然會出現就算會將ip添加到防火牆,可是因爲我更改了端口號,是起不到禁止做用的。

解決方法:配置文件中  action = iptables[name=SSH, port=ssh, protocol=tcp] ,port位置修改成新的端口。

 

fail2ban一鍵安裝腳本和fail2ban防cc攻擊在端午節後會寫出來。

相關文章
相關標籤/搜索