生產(chǎn)環(huán)境中的 Apache 服務(wù)器可能會(huì)受到不同的攻擊。攻擊者或許試圖通過暴力攻擊或者執(zhí)行惡意腳本來獲取未經(jīng)授權(quán)或者禁止訪問的目錄。一些惡意爬蟲或許會(huì)掃描你網(wǎng)站下的各種安全漏洞,或者通過收集email地址和web表單來發(fā)送垃圾郵件。
Apache服務(wù)器具有全面的日志功能,可以捕捉到各種攻擊所反映的異常事件。然而,它還不能系統(tǒng)地解析具體的apache 日志并迅速地對(duì)潛在的攻擊進(jìn)行反應(yīng)(比如,禁止/解禁IP地址)。這時(shí)候fail2ban可以解救這一切,解放了系統(tǒng)管理員的工作。
fail2ban是一款入侵防御工具,可以基于系統(tǒng)日志檢測(cè)不同的工具并且可以自動(dòng)采取保護(hù)措施比如:通過iptables禁止ip、通過 /etc/hosts.deny 阻止連接、或者通過郵件發(fā)送通知。fail2ban具有一系列預(yù)定義的“監(jiān)獄”,它使用特定程序日志過濾器來檢測(cè)通常的攻擊。你也可以編寫自定義的規(guī)則來檢測(cè)來自任意程序的攻擊。
在本教程中,我會(huì)演示如何配置fail2ban來保護(hù)你的apache服務(wù)器。我假設(shè)你已經(jīng)安裝了apache和fail2ban。
什么是 Fail2ban 監(jiān)獄
讓我們更深入地了解 fail2ban 監(jiān)獄。監(jiān)獄定義了具體的應(yīng)用策略,它會(huì)為指定的程序觸發(fā)一個(gè)保護(hù)措施。fail2ban在 /etc/fail2ban/jail.conf 下為一些流行程序如Apache、Dovecot、Lighttpd、MySQL、Postfix、SSH 等預(yù)定義了一些監(jiān)獄。每個(gè)監(jiān)獄都通過特定的程序日志過濾器(在/etc/fail2ban/fileter.d 下面)來檢測(cè)通常的攻擊。讓我看一個(gè)例子監(jiān)獄:SSH監(jiān)獄。
復(fù)制代碼 代碼如下:[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
banaction = iptables-multiport
SSH監(jiān)獄的配置定義了這些參數(shù):
[ssh]: 方括號(hào)內(nèi)是監(jiān)獄的名字。
enabled:是否啟用監(jiān)獄
port: 端口號(hào)(或者對(duì)應(yīng)的服務(wù)名稱)
filter: 檢測(cè)攻擊的日志解析規(guī)則
logpath: 所檢測(cè)的日志文件
maxretry: 最大失敗次數(shù)
banaction: 所進(jìn)行的禁止操作
定義在監(jiān)獄配置中的任意參數(shù)都會(huì)覆蓋fail2ban-wide 中相應(yīng)的默認(rèn)配置參數(shù)。相反,任何缺少的參數(shù)都會(huì)使用定義在[DEFAULT] 字段的默認(rèn)值。
預(yù)定義的日志過濾器都放在/etc/fail2ban/filter.d,而可以采取的禁止操作放在 /etc/fail2ban/action.d。
如果你想要覆蓋fail2ban的默認(rèn)操作或者定義任何自定義監(jiān)獄,你可以創(chuàng)建/etc/fail2ban/jail.local*文件。本篇教程中,我會(huì)使用/etc/fail2ban/jail.local。
啟用預(yù)定義的apache監(jiān)獄
fail2ban的默認(rèn)安裝為Apache服務(wù)提供了一些預(yù)定義監(jiān)獄和過濾器。我要啟用這些內(nèi)建的Apache監(jiān)獄。由于Debian和RedHat配置的稍微不同,我會(huì)分別提供它們的配置文件。
在Debian 或者 Ubuntu啟用Apache監(jiān)獄
要在基于Debian的系統(tǒng)上啟用預(yù)定義的apache監(jiān)獄,如下創(chuàng)建/etc/fail2ban/jail.local。
$ sudo vi /etc/fail2ban/jail.local
新聞熱點(diǎn)
疑難解答
圖片精選