如何在CentOS 8和Fedora 33上安裝和配置Fail2Ban

如何在CentOS 8和Fedora 33上安裝和配置Fail2Ban

Fail2Ban是一個日誌分析實用程序,可掃描各種進程的日誌文件,並禁止IP地址出現太多密碼錯誤。如果找到登錄嘗試,則Fail2Ban會向iptables添加新規則,以暫時或永久阻止攻擊者的IP地址。您也可以通過電子郵件發送相同的內容。

它主要側重於通過SSH檢測入侵,但可以配置為與使用日誌文件的任何服務一起使用。

先決條件

  1. 具有非sudo特權的非root用戶的Fedora 33或基於CentOS 8的服務器。

  2. 安裝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/ 目錄。

這些配置按以下順序應用:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf,按字母順序
  3. /etc/fail2ban/jail.local
  4. /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.confnginx-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的教程。如有任何疑問,請在下面的評論部分中發表。

Sidebar