Fail2ban防暴力破解SSH

fail2ban 防止暴力破解各類程序密碼

        fail2ban能夠監視你的系統日誌,而後匹配日誌的錯誤信息(正則式匹配)執行相應的屏蔽動做(通常狀況下是調用防火牆屏蔽),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火牆屏蔽這個IP。

debian下安裝fail2ban  shell

apt-get install fail2ban

      安裝完成後主要的配置文件在/etc/fail2ban目錄下,裏面有兩個文件和兩個目錄:

      fail2ban.conf 配置文件裏面定義了fail2ban記錄的日誌等級、日誌文件的位置以及socket,默認配置以下:       
loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock
       jail.conf 裏面定義了對那些服務進行監控,以及使用的一些策略
       jail.conf 裏面開頭是默認全局配置塊[DEFAULT],默認配置以下:
[DEFAULT]
#忽略哪些IP,能夠是具體IP、CIDR類型的地址,多個IP用空格分開
ignoreip = 127.0.0.1

#設置IP被鎖住的時間,單位爲秒
bantime  = 600

#檢測時間,在此時間內超過規定的次數會激活fail2ban
findtime  = 600

#嘗試的次數
maxretry = 3

#日誌檢測機器,有"gamin", "polling" and "auto"三種模式。
backend = polling

#發送報警郵件的地址
destemail = root@localhost #默認的動做執行行爲,在action.d目錄下有各類行爲策略,默認是iptables-#multiport
banaction = iptables-multiport

#0.8.1版本後fail2ban默認用sendmail MTA
mta = sendmail

#默認使用tcp協議
protocol = tcp

#定義了各類行動的參數
#banaction參數在action.d目錄下具體定義,name port protocol 也能夠本身定義
#只禁止IP
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
#即禁止IP又發送email
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
              %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
#禁止IP、發送email、報告有關日誌			  
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]

#若是沒有定義行爲,則默認的行爲爲action,可選擇action_,action_mw, action_mwl 等		
action = %(action_)s

默認配置文件含有此模塊
#定義子模塊名
[ssh]
#是否激活
enabled = true
#定義port,能夠是數字端口號表示,也能夠是字符串表示
port= ssh
#過濾規則,在filter.d目錄下定義
filter	= sshd
#檢測日誌的路徑
logpath  = /var/log/auth.log
#嘗試的次數,覆蓋了全局配置的
maxretry = 6
#banaction 在action.d目錄下定義,此參數值會替換action中選用的默認行爲中定義的banaction參數
banaction = iptables-allports
#注意 port protocol banaction 能夠不用分開定義,直接使用action定義也能夠,例如:
#action   = iptables[name=SSH, port=ssh, protocol=tcp]
#在子模塊中定義的port protocol banaction 都會在action_ action_mw, action_mwl中替換成具體的設置值。

       filter.d 目錄裏面定義的是根據日誌文件進行過濾的規則,主要是利用正則匹配出現錯誤的關鍵字。

       action.d目錄裏面是根據過濾的規則對相應的IP採起什麼樣的行爲

       debian下默認安裝完成後會在/etc/fail2ban目錄底下有一個jail.conf配置文件,裏面已經加入了不少經常使用的檢測服務,不過裏面的參數講解不詳細,若是想知道關於配置文件的更多信息能夠查看/usr/share/doc/fail2ban/examples/jail.conf

      fail2ban-server 命令:啓動fail2ban服務
            -b 在後臺啓動
            -f 在前臺啓動
            -s 指定socket file

     fail2ban-client 命令:編輯和配置服務
            fail2ban-client [OPTIONS] <COMMAND>
            OPTIONS 不作介紹
            COMMAND
            start <jail> 啓動服務和全部的規則,或者某個規則
            reload <jail> 從新加載全部配置或者單獨加載某個jail的配置
            stop <jail> 中止服務和全部的規則或者某個規則
            status <jail> 查看目前服務運行狀況或者某個規則
            set/get loglevel <LEVEL> 設置或者查看日誌等級
            set <JAIL> addignoreip/delignoreip <IP>  在忽略IP列表中添加或者刪除某個IP


     faillog 命令:顯示日誌中記錄的登錄失敗的記錄
           -a 顯示日誌中全部的失敗的記錄
           -l 設置登陸失敗後被鎖定的秒數
           -r 重置日誌中的登錄失敗的信息

下面舉個SSH防暴力破解的例子:
jail.conf中SSH模塊的配置以下:

[ssh]
enabled = true
port	= 22222
filter	= sshd
logpath  = /var/log/auth.log
maxretry = 6

測試以下: ssh

1 fail2ban啓動在10.1.1.174,在10.1.1.175上登錄10.1.1.74,在10.1.1.175連續六次故意輸錯密碼:


2 在10.1.1.174上查看相關信息

如圖顯示10.1.1.175已經被屏蔽

3 fail2ban 自動生成的iptables規則


4 在10.1.1.175繼續登錄10.1.1.174


5 10分鐘後查看日誌,發現10.1.1.175已經被解禁



     fail2ban不止能夠防止SSH破解,還能夠防止不少相似的應用,你們能夠繼續摸索。
相關文章
相關標籤/搜索