<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/3029

                    0x00 介紹


                    fail2ban可以監視你的系統日志,然后匹配日志的錯誤信息(正則式匹配)執行相應的屏蔽動作(一般情況下是調用防火墻iptables屏蔽),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火墻屏蔽這個IP,而且可以發送e-mail通知系統管理員,是一款很實用、很強大的軟件!

                    fail2ban由python語言開發,基于logwatch、gamin、iptables、tcp-wrapper、shorewall等。如果想要發送郵件通知道,那還需要安裝postfix或sendmail。

                    fail2ban在pycon2014中演講,是一個相對成熟的第三方軟件。附上大會ppt部分內容:fail2ban-pycon2014.pdf。

                    百度盤:http://pan.baidu.com/s/1qWBHHBe

                    0x01安裝


                    1) apt-get?安裝

                    apt-get install fail2ban log watch gamin
                    

                    2) yum安裝

                    yum install fail2ban logwatch gamin
                    

                    3) 源代碼安裝

                    http://www.fail2ban.org/wiki/index.php/Downloads

                    目前有兩個版本:

                    stable? ??0.8.14 
                    beta? ??? ?0.9.0
                    

                    根據需要下載編譯安裝。

                    0x02 配置


                    安裝完成后配置文件在目錄/etc/fail2ban/中:

                    /etc/fail2ban/fail2ban.conf ?#fail2ban的配置文件
                    /etc/fail2ban/jail.conf #阻擋設定文件
                    /etc/fail2ban/filter.d/ #具體過濾規則文件目錄 
                    /etc/fail2ban/action.d/ #具體過濾規則檢測到后采取相對應措施的目錄 
                    

                    fail2ban默認有許多已經寫好的規則,如ssh、ftp、proftpd等常見應用軟件的支持,只需要設置enable屬性為true即可啟動,這里就不闡述了。

                    0x03 監控nginx日志


                    假設nginx默認日志路徑為/var/log/nginx/access_log,需要防止黑客暴力破解HTTP FORM登陸,此登陸檢測鏈接為

                    http://test.com/login_check.do
                    

                    根據分析正常登陸一般不超過三四次,并且登陸時間一般也不超過一分鐘;因此,規定檢測周期為1分鐘,最大嘗試登陸次數為10次;在規定時間內超過指定次數則被認為是黑客在嘗試暴力破解。

                    具體設置方法如下:

                    1) 首先在jail.conf文件下追加以下內容:

                    [nginx]    ;規則名字
                    enabled = true ;是否戶用
                    port = http,https ;監控端口
                    filter = nginx    ;需要過濾匹配規則
                    logpath = /var/log/nginx/access_log; 日志路徑
                    findtime =60    ;檢測周期 單位秒 以下一樣
                    bantime =300    ;iptable封禁IP時間
                    maxretry =10    ;最大嘗試次數
                    action = iptables[name=nginx, port=http, protocal=tcp] ;發現暴力破解采取iptalbes封禁IP的措施
                    sendmail[name=nginx, [email protected]]    ;發現暴力破解后采取sendmail發送郵件的措施,需要注意的是:iptables和sendmail必須對齊,要不然會發生錯誤;不要問我為什么會知道,我先哭會兒-_-!!!
                    

                    2)然后創建?/etc/fail2ban/filter.d/nginx.conf文件,并添加以下內容:

                    [Definition]
                    failregex =<HOST>.*-.*-.*POST.*/login_check.do.* HTTP\/1.*http://test.com.*$ ;需要匹配日志發現攻擊行為的正則,<HOST>為fail2ban內置變量匹配IP,不可修改
                    ignoreregex =    ;需要忽略的正則
                    

                    完成上述步驟就可以運行命令/etc/init.d/fail2ban restart重啟了。查看iptables有fail2ban-nginx的規則和收到sendmail發送fail2ban已經啟動的郵件就說明OK了。

                    不過運維的同學可能知道,sendmail發送郵件延遲很多,并不好用,使用mutt代替sendmail是個不錯的選擇。安裝mutt的過程就不在時闡述了,這里介紹我修改使用mutt發送action的配置文件。

                    1)首先創建一個/etc/fail2ban/action.d/mutt.conf文件,然后添加以下內容:

                    # Fail2Ban configuration file
                    #
                    # Author: Cyril Jaquier
                    #
                    #
                    [Definition]
                    # Option: actionstart
                    # Notes.: command executed once at the start of Fail2Ban.
                    # Values: CMD
                    #
                    actionstart = printf %%b "Hi,\n
                    The jail <name> has been started successfully.\n
                    Regards,\n
                    Fail2Ban"|mutt -s "[Fail2Ban] <name>: started on `uname -n`"<dest>
                    # Option: actionstop
                    # Notes.: command executed once at the end of Fail2Ban
                    # Values: CMD
                    #
                    actionstop = printf %%b "Hi,\n
                    The jail <name> has been stopped.\n
                    Regards,\n
                    Fail2Ban"|mutt -s "[Fail2Ban] <name>: stopped on `uname -n`"<dest>
                    # Option: actioncheck
                    # Notes.: command executed once before each actionban command
                    # Values: CMD
                    #
                    actioncheck =
                    # Option: actionban
                    # Notes.: command executed when banning an IP. Take care that the
                    # command is executed with Fail2Ban user rights.
                    # Tags: See jail.conf(5) man page
                    # Values: CMD
                    #
                    actionban = printf %%b "Hi,\n
                    The IP <ip> has just been banned by Fail2Ban after
                    <failures> attempts against <name>.\n
                    Regards,\n
                    Fail2Ban"|mutt -s "[Fail2Ban] <name>: banned <ip> from `uname -n`"<dest>
                    # Option: actionunban
                    # Notes.: command executed when unbanning an IP. Take care that the
                    # command is executed with Fail2Ban user rights.
                    # Tags: See jail.conf(5) man page
                    # Values: CMD
                    #
                    actionunban =
                    [Init]
                    # Default name of the chain
                    #
                    name = default
                    # Destination/Addressee of the mutt
                    #
                    dest = root
                    

                    2)然后在jail.conf文件下添加以下內容:

                    action = mutt[name=nginx, [email protected]]   
                    

                    [email protected]??名詞是筆者自己翻譯,可能表達的意思并不精確,請大牛們手下留情。有不對的地方歡迎指出,有興趣的同學也歡迎交流。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频