Linux 管理員的一個(gè)重要任務(wù)是保護(hù)服務(wù)器免受非法攻擊或訪問(wèn)。 默認(rèn)情況下,Linux 系統(tǒng)帶有配置良好的防火墻,比如iptables、Uncomplicated Firewall(UFW),ConfigServer Security Firewall(CSF)等,可以防止多種攻擊。
任何連接到互聯(lián)網(wǎng)的機(jī)器都是惡意攻擊的潛在目標(biāo)。 有一個(gè)名為 Fail2Ban 的工具可用來(lái)緩解服務(wù)器上的非法訪問(wèn)。
什么是 Fail2Ban?
Fail2Ban 是一款入侵防御軟件,可以保護(hù)服務(wù)器免受暴力攻擊。 它是用 Python 編程語(yǔ)言編寫(xiě)的。 Fail2Ban 基于auth 日志文件工作,默認(rèn)情況下它會(huì)掃描所有 auth 日志文件,如 /var/log/auth.log、/var/log/apache/access.log 等,并禁止帶有惡意標(biāo)志的IP,比如密碼失敗太多,尋找漏洞等等標(biāo)志。
通常,F(xiàn)ail2Ban 用于更新防火墻規(guī)則,用于在指定的時(shí)間內(nèi)拒絕 IP 地址。 它也會(huì)發(fā)送郵件通知。 Fail2Ban 為各種服務(wù)提供了許多過(guò)濾器,如 ssh、apache、nginx、squid、named、mysql、nagios 等。
Fail2Ban 能夠降低錯(cuò)誤認(rèn)證嘗試的速度,但是它不能消除弱認(rèn)證帶來(lái)的風(fēng)險(xiǎn)。 這只是服務(wù)器防止暴力攻擊的安全手段之一。
如何在 Linux 中安裝 Fail2Ban
Fail2Ban 已經(jīng)與大部分 Linux 發(fā)行版打包在一起了,所以只需使用你的發(fā)行包版的包管理器來(lái)安裝它。
對(duì)于 Debian / Ubuntu,使用 APT-GET 命令或 APT 命令安裝。

對(duì)于 Fedora,使用 DNF 命令安裝。

對(duì)于 CentOS/RHEL,啟用 EPEL 庫(kù)或 RPMForge 庫(kù),使用 YUM 命令安裝。

如何配置 Fail2Ban
默認(rèn)情況下,F(xiàn)ail2Ban 將所有配置文件保存在 /etc/fail2ban/ 目錄中。 主配置文件是 jail.conf,它包含一組預(yù)定義的過(guò)濾器。 所以,不要編輯該文件,這是不可取的,因?yàn)橹灰行碌母拢渲镁蜁?huì)重置為默認(rèn)值。
只需在同一目錄下創(chuàng)建一個(gè)名為 jail.local 的新配置文件,并根據(jù)您的意愿進(jìn)行修改。
默認(rèn)情況下,大多數(shù)選項(xiàng)都已經(jīng)配置的很完美了,如果要啟用對(duì)任何特定 IP 的訪問(wèn),則可以將 IP 地址添加到 ignoreip 區(qū)域,對(duì)于多個(gè) IP 的情況,用空格隔開(kāi) IP 地址。

配置文件中的 DEFAULT 部分包含 Fail2Ban 遵循的基本規(guī)則集,您可以根據(jù)自己的意愿調(diào)整任何參數(shù)。

· ignoreip:本部分允許我們列出 IP 地址列表,F(xiàn)ail2Ban 不會(huì)禁止與列表中的地址匹配的主機(jī)
· bantime:主機(jī)被禁止的秒數(shù)
· findtime:如果在最近 findtime 秒期間已經(jīng)發(fā)生了 maxretry 次重試,則主機(jī)會(huì)被禁止
· maxretry:是主機(jī)被禁止之前的失敗次數(shù)
· destemail:是拒絕IP地址后發(fā)送郵件通知的收件地址
如何配置服務(wù)
Fail2Ban 帶有一組預(yù)定義的過(guò)濾器,用于各種服務(wù),如 ssh、apache、nginx、squid、named、mysql、nagios 等。 我們不希望對(duì)配置文件進(jìn)行任何更改,只需在服務(wù)區(qū)域中添加 enabled = true 這一行就可以啟用任何服務(wù)。 禁用服務(wù)時(shí)將 true 改為 false 即可。

· enabled: 確定服務(wù)是打開(kāi)還是關(guān)閉。
· port:指明特定的服務(wù)。 如果使用默認(rèn)端口,則服務(wù)名稱可以放在這里。 如果使用非傳統(tǒng)端口,則應(yīng)該是端口號(hào)。
· logpath:提供服務(wù)日志的位置
· backend:指定用于獲取文件修改的后端。
重啟 Fail2Ban
進(jìn)行更改后,重新啟動(dòng) Fail2Ban 才能生效。

驗(yàn)證 Fail2Ban iptables 規(guī)則
你可以使用下面的命令來(lái)確認(rèn)是否在防火墻中成功添加了Fail2Ban iptables 規(guī)則。

要查看啟用的程序列表,請(qǐng)運(yùn)行以下命令。

通過(guò)運(yùn)行以下命令來(lái)獲取禁止的 IP 地址。

要從 Fail2Ban 中刪除禁止的 IP 地址,請(qǐng)運(yùn)行以下命令。
