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

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

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


       debian下安裝fail2ban
ssh

apt-get install fail2ban

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


     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<a href="http://my.oschina.net/localhost" class="referer" target="_blank">@localhost</a>
#默認的動做執行行爲,在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 目錄裏面定義的是根據日誌文件進行過濾的規則,主要是利用正則匹配出現錯誤的關鍵字。tcp


      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

測試以下:  ide

 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破解,還能夠防止不少相似的應用,你們能夠繼續摸索。

轉載自:http://my.oschina.net/guol/blog/52219
測試

相關文章
相關標籤/搜索