使用 fail2ban 防護 SSH 服務器的暴力破解

對於SSH服務的常見的攻擊就是暴力破解攻擊——遠程攻擊者經過不一樣的密碼來無限次地進行登陸嘗試。固然SSH能夠設置使用非密碼驗證驗證方式來對抗這種攻擊,例如公鑰驗證或者雙重驗證。將不一樣的驗證方法的優劣處先放在一邊,若是咱們必須使用密碼驗證方式怎麼辦?你是如何保護你的 SSH 服務器免遭暴力破解攻擊的呢?html

fail2ban 是 Linux 上的一個著名的入侵保護的開源框架,它會監控多個系統的日誌文件(例如:/var/log/auth.log 或者 /var/log/secure)並根據檢測到的任何可疑的行爲自動觸發不一樣的防護動做。事實上,fail2ban 在防護對SSH服務器的暴力密碼破解上很是有用。linux

在這篇指導教程中,我會演示如何安裝並配置 fail2ban 來保護 SSH 服務器以免來自遠程IP地址的暴力攻擊git

在linux上安裝Fail2bangithub

爲了在CentOS 或 RHEL上安裝fail2ban,首先設置EPEL倉庫,而後運行如下命令。ubuntu

$ sudo yum install fail2ban

在Fedora上安裝fail2ban,簡單地運行如下命令:服務器

$ sudo yum install fail2ban

在ubuntu,Debian 或 Linux Mint上安裝fail2ban:框架

$ sudo apt-get install fail2ban

爲SSH服務器配置Fail2banssh

如今你已經準備好了經過配置 fail2ban 來增強你的SSH服務器。你須要編輯其配置文件 /etc/fail2ban/jail.conf。 在配置文件的「[DEFAULT]」區,你能夠在此定義全部受監控的服務的默認參數,另外在特定服務的配置部分,你能夠爲每一個服務(例如SSH,Apache等)設置特定的配置來覆蓋默認的參數配置。tcp

在針對服務的監獄區(在[DEFAULT]區後面的地方),你須要定義一個[ssh-iptables]區,這裏用來定義SSH相關的監獄配置。真正的禁止IP地址的操做是經過iptables完成的。分佈式

下面是一個包含「ssh-iptables」監獄配置的/etc/fail2ban/jail.conf的文件樣例。固然根據你的須要,你也能夠指定其餘的應用監獄。

$ sudo vi /etc/fail2ban/jail.local
[DEFAULT]
# 以空格分隔的列表,能夠是 IP 地址、CIDR 前綴或者 DNS 主機名
# 用於指定哪些地址能夠忽略 fail2ban 防護
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24

# 客戶端主機被禁止的時長(秒)
bantime = 86400

# 客戶端主機被禁止前容許失敗的次數 
maxretry = 5

# 查找失敗次數的時長(秒)
findtime = 600

mta = sendmail

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
# Debian 系的發行版 
logpath = /var/log/auth.log
# Red Hat 系的發行版
logpath = /var/log/secure
# ssh 服務的最大嘗試次數 
maxretry = 3

根據上述配置,fail2ban會自動禁止在最近10分鐘內有超過3次訪問嘗試失敗的任意IP地址。一旦被禁,這個IP地址將會在24小時內一直被禁止訪問 SSH 服務。這個事件也會經過sendemail發送郵件通知。

一旦配置文件準備就緒,按照如下方式重啓fail2ban服務。

在 Debian, Ubuntu 或 CentOS/RHEL 6:

$ sudo service fail2ban restart

在 Fedora 或 CentOS/RHEL 7:

$ sudo systemctl restart fail2ban

爲了驗證fail2ban成功運行,使用參數'ping'來運行fail2ban-client 命令。 若是fail2ban服務正常運行,你能夠看到「pong(嘭)」做爲響應。

$ sudo fail2ban-client ping
Server replied: pong

測試 fail2ban 保護SSH免遭暴力破解攻擊

爲了測試fail2ban是否能正常工做,嘗試經過使用錯誤的密碼來用SSH鏈接到服務器模擬一個暴力破解攻擊。與此同時,監控 /var/log/fail2ban.log,該文件記錄在fail2ban中發生的任何敏感事件。

$ sudo tail -f /var/log/fail2ban.log

如何使用 fail2ban 防護 SSH 服務器的暴力破解攻擊

根據上述的日誌文件,Fail2ban經過檢測IP地址的屢次失敗登陸嘗試,禁止了一個IP地址192.168.1.8。

檢查fail2ban狀態並解禁被鎖住的IP地址

因爲fail2ban的「ssh-iptables」監獄使用iptables來阻塞問題IP地址,你能夠經過如下方式來檢測當前iptables來驗證禁止規則。

$ sudo iptables --list -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP       all  --  192.168.1.8          0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

若是你想要從fail2ban中解鎖某個IP地址,你可使用iptables命令:

$ sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP

固然你可使用上述的iptables命令手動地檢驗和管理fail2ban的IP阻塞列表,但實際上有一個適當的方法就是使用fail2ban-client命令行工具。這個命令不只容許你對"ssh-iptables"監獄進行管理,同時也是一個標準的命令行接口,能夠管理其餘類型的fail2ban監獄。

爲了檢驗fail2ban狀態(會顯示出當前活動的監獄列表):

$ sudo fail2ban-client status

爲了檢驗一個特定監獄的狀態(例如ssh-iptables):

$ sudo fail2ban-client status ssh-iptables

上面的命令會顯示出被禁止IP地址列表。

如何使用 fail2ban 防護 SSH 服務器的暴力破解攻擊

爲了解鎖特定的IP地址:

$ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8

如何使用 fail2ban 防護 SSH 服務器的暴力破解攻擊

注意,若是你中止了Fail2ban 服務,那麼全部的IP地址都會被解鎖。當你重啓 Fail2ban,它會從/etc/log/secure(或 /var/log/auth.log)中找到異常的IP地址列表,若是這些異常地址的發生時間仍然在禁止時間內,那麼Fail2ban會從新將這些IP地址禁止。

設置 Fail2ban 自動啓動

一旦你成功地測試了fail2ban以後,最後一個步驟就是在你的服務器上讓其在開機時自動啓動。在基於Debian的發行版中,fail2ban已經默認讓自動啓動生效。在基於Red-Hat的發行版中,按照下面的方式讓自動啓動生效。

在 CentOS/RHEL 6中:

$ sudo chkconfig fail2ban on

在 Fedora 或 CentOS/RHEL 7:

$ sudo systemctl enable fail2ban

總結

在該教程中,我演示瞭如何安裝並配置fail2ban來保護一個SSH服務器。固然fail2ban能夠緩解暴力密碼攻擊,可是請注意,這並不能保護SSH服務器避免來自複雜的分佈式暴力破解組織,這些攻擊者經過使用成千上萬個機器控制的IP地址來繞過fail2ban的防護機制。

via: http://xmodulo.com/how-to-protect-ssh-server-from-brute-force-attacks-using-fail2ban.html

做者:Dan Nanni 譯者:theo-l 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

本文地址:http://www.linuxprobe.com/fail2ban-ssh-crack.html編輯員:逄增寶,審覈員:劉遄

相關文章
相關標籤/搜索