如何在CentOS 8和Fedora 33上安裝和配置Fail2Ban
如何在CentOS 8和Fedora 33上安裝和配置Fail2Ban
Fail2Ban是一個日誌分析實用程序,可掃描各種進程的日誌文件,並禁止IP地址出現太多密碼錯誤。如果找到登錄嘗試,則Fail2Ban會向iptables添加新規則,以暫時或永久阻止攻擊者的IP地址。您也可以通過電子郵件發送相同的內容。
它主要側重於通過SSH檢測入侵,但可以配置為與使用日誌文件的任何服務一起使用。
先決條件
具有非sudo特權的非root用戶的Fedora 33或基於CentOS 8的服務器。
安裝Nano編輯器。用這個。
$ sudo dnf install nano -y
安裝Fail2Ban
要在CentOS 8上安裝Fail2Ban,必須首先安裝EPELYum存儲庫。
$ sudo dnf install epel-release
Fedora 33包含在Fail 2 Ban中。
運行以下命令以在Fedora 33和CentOS 8上安裝Fail2Ban。
$ sudo dnf install fail2ban
安裝後,您需要啟用該服務。
$ sudo systemctl enable fail2ban
然後啟動fail2ban服務。
$ sudo systemctl start fail2ban
現在,您可以檢查服務的狀態,以查看其是否正常運行。
$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
Docs: man:fail2ban(1)
Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 19032 (f2b/server)
Tasks: 3 (limit: 1125)
Memory: 11.0M
CPU: 96ms
CGroup: /system.slice/fail2ban.service
??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready
配置Fail2Ban
Fail2Ban服務放置配置文件 /etc/fail2ban
目錄。您會遇到一個文件 jail.conf
初始化。不要編輯此文件,因為它通常在軟件包升級過程中被覆蓋。
相反,所有配置均應在新文件中進行調用 jail.local
..這兩個文件中的設置可以通過中的文件進一步覆蓋。 /etc/fail2ban/jail.d/
目錄。
這些配置按以下順序應用:
/etc/fail2ban/jail.conf
etc/fail2ban/jail.d/*.conf
,按字母順序/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
,按字母順序
jail.conf
包含 [DEFAULT]
各個部分之後是各個服務的各個部分。可以通過定義in來覆蓋這兩個部分。 .local
文件。
配置jail.local
做點新鮮的 jail.local
文件。
$ sudo nano /etc/fail2ban/jail.local
粘貼以下代碼。
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd
[sshd]
enabled = true
推 Ctrl + X 關閉編輯器,然後按 ÿ 如果要求您保存文件。這將設置新的默認值 bantime
將後端更改為所有服務 systemd
啟用 `sshd
監獄。
重新啟動Fail2ban以實施新更改。
$ sudo systemctl restart fail2ban
您可以使用查看新應用的設置 fail2ban-client
效用。
$ sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
另外,您可以通過以下方法了解每個監獄的詳細情況。
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
其他設定
jail.conf
提供更多可以使用進行自定義的設置 /jail.local
文件。下面介紹一些設置。
IP白名單
您可以使用以下代碼將IP列入白名單/忽略該IP,以便它不會被Fail2ban阻止。
[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89
如果您只想將特定監獄的IP列入白名單,則可以執行以下操作: fail2ban-client
..
$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89
交換 JAIL
使用上述命令中的jail名稱編輯設置。
禁止時間和重試次數
共有三種設置,可讓您設置禁止重試的時間和次數。
bantime
-禁止IP的時間長度(以秒為單位)。將此值設置為負數可設置永久禁止。默認值為10分鐘或600秒。
findtime
-設置禁令前兩次登錄嘗試之間的時間長度。此值始終是秒數。例如,如果將Fail2ban配置為在5次失敗的登錄嘗試後禁止IP,則這5次嘗試必須在配置的10分鐘內發生。 bantime
極限廣告
maxretry
-在實施禁令之前,從單個IP地址重試的次數。預設值為3。
要自定義這些設置,請將以下行粘貼到 etcfail2banjail.local
下方檔案 [DEFAULT]
部分。
bantime = 3600
findtime = 300
maxretry = 4
電子郵件提醒
要發送電子郵件警報,您必須首先安裝郵件轉發代理(MTA)。為了我們的目的,我們將安裝 sendmail
..
$ sudo dnf install sendmail
要接收電子郵件,請將以下代碼添加到 etcfail2banjail.local
下方檔案 [DEFAULT]
部分。
destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s
destemail
引用收件人電子郵件ID,這是電子郵件的收件人ID。 sendername
我正在使用Fail2Ban,因為它指的是發件人的名字。 mta
指使用的郵件轉發代理。 sendmail
這裡。如果您正在使用 Postfix
,然後使用值 mail
對於 mta
變量。
action
指檢測到入侵時採取的默認操作。默認值為 %(action_)s
這僅禁止用戶。 %(action_mw)s
禁止並發送包含Whois報告的電子郵件。另一方面 %(action_mwl)s
禁止Whois報告並發送包含來自相關日誌文件的信息的電子郵件。這也可以根據監獄的特定標準進行更改。
設立個別監獄
正如你已經知道的 [DEFAULT]
本部分適用於所有監獄,現在是時候看看一些特定的監獄及其設置。
SSHD監獄
已經定義 [sshd]
在我們的早期 jail.local
文件。您可以使用以下代碼對其進行更多自定義。
[sshd]
enabled = true
port = ssh
logpath = %(ssh_log)s
在這種情況下,我們使用預定義的變量 ssh
對於作為默認SSH端口的端口。如果您使用其他SSH端口,則需要對其進行更改。 logpath
指要監視的日誌文件的位置。 %(ssh_log)s
使用Fail2ban標準配置文件中定義的值(/etc/fail2ban/paths-common.conf
)。
Nginx監獄
Nginx有幾個可以與Fail2Ban一起使用的Jails。例如,如果一遍受密碼保護的網站的一部分遭到了反覆攻擊,則可以使用 [nginx-http-auth]
至 jail.local
一個文件。廣告
[nginx-http-auth]
enabled = true
您還可以添加一個名為 [nginx-botsearch]
停止對不存在的文件夾或位置的請求。
[nginx-badbots]
enabled = true
還有其他Nginx Jail,但未使用Fail2Ban進行預配置。它們必須手動創建,並且大多數可以基於Fail2Ban隨附的Apache。
Fail2Ban篩選器和Failregex
Fail2Ban配置具有另一個稱為過濾器的設置。篩選器確定日誌文件中的行是否指示身份驗證失敗。
配置文件中的過濾器值是對位於其中的文件的引用。 /etc/fail2ban/filter.d
該目錄 .conf
該擴展名已被刪除。
您可以通過查看目錄來查看可用的過濾器類型。
$ ls /etc/fail2ban/filter.d
包含兩個Nginx日誌文件。 nginx-badbots.conf
和 nginx-http-auth.conf
..
這些配置文件使用正則表達式(regex)解析日誌文件。這些稱為Failregex。您可以創建自己的正則表達式以自定義或創建新的過濾器。這些規範表達式不在本教程的討論範圍之內,在此不再詳細討論。
監視Fail2Ban日誌和防火牆
您可以使用以下方法檢查Fail2Ban的狀態: systemctl
正如我之前提到的。
$ sudo systemctl status fail2ban
多一點細節 journalctl
命令。
$ sudo journalctl -b -u fail2ban
也可以使用 fail2ban-client
查詢狀態 fail2ban-server
或個別監獄。
$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name
您還可以查詢Fail2ban日誌文件。
$ sudo tail -F /var/log/fail2ban.log
您可以列出iptables中設置的當前規則。
$ sudo iptables -L
您還可以以反映啟用它們所需的命令的格式列出iptables規則。
$ sudo iptables -S
結論
到此結束了有關在基於Fedora 33或CentOS 8的服務器上安裝和配置Fail2Ban的教程。如有任何疑問,請在下面的評論部分中發表。