閱讀338 返回首頁    go 汽車大全


Linux係統通過fail2ban對暴力破解進行防護

暴力破解攻擊是指攻擊者通過係統地組合所有可能性(例如登錄時用到的賬戶名、密碼),嚐試所有的可能性破解用戶的賬戶名、密碼等敏感信息。攻擊者會經常使用自動化腳本工具組合出正確的用戶名和密碼。

針對這種攻擊除了常規性的調整服務器的設置賬號密碼的複雜度,以及調整默認端口外等方式提升攻擊難度外,還可以通過開源工具fail2ban來進行設置防護規則來提高防護能力。

首先簡單說一下服務器的基礎防護設置
1、密碼要滿足複雜性要求
a.密碼長度要求8位以上,最好是14位以上
b.密碼要求至少包含大小寫字母、數字和特殊符號四種字符中的三種以上

2、修改ssh程序默認的遠程端口號
這一點可以通過調整 /etc/ssh/sshd_config 文件中的Port 參數來實現
修改了端口號之後遠程工具進行連接時需要指定端口號才可以正常連接,通過ssh命令連接時需要通過-p參數指定端口號

3、修改默認的管理員賬號
a.先對默認的root賬號進行禁用(注意:阿裏雲控製台上的密碼重置功能隻對默認的root賬號生效,如果做了此操作後後期是不能使用阿裏雲控製台的密碼重置功能的),禁用方法直接修改root用戶的登陸shell為 /sbin/nologin 即可。
screenshot

b.創建新的用戶名,作為管理員賬號,Linux係統判定管理員賬號的方法是可以通過UID實現的,默認UID為0的用戶是管理員,所以隻需要創建用戶後,在passwd文件中把用戶UID改為0即可
創建用戶,並設置密碼,以及最終的修改效果,可以參考下圖,通過id命令查詢結果可以看到新建的用戶權限是root權限
screenshot

通過上述方式的設置,是可以提升服務器針對暴力破解的防護能力的,設置之後基本上黑客想要暴力成功是很困難的。
但是如果暴力破解的情況很嚴重,雖然經過上述設置後,黑客很難暴力破解成功,但是由於暴力破解時服務器需要不斷的對用戶登錄進行認證,也會導致服務器產生很多額外的開銷,進而影響服務器的資源負載狀況。
針對這種情況,可以考慮通過開源工具fail2ban監視日誌情況將滿足動作的相關IP利用iptables加入到dorp列表一定時間。
注意:這種方法如果手動重啟了iptables服務的話,所有的drop規則會失效。
1、到fail2ban官網下載程序源碼包
官網地址https://www.fail2ban.org 由於是海外站點,所以下載速度上可能比較慢,本文中通過穩定版fail2ban-0.8.14做演示,具體的下載地址
https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.8.14
screenshot
screenshot

2、下載好的程序是源碼包的形式,需要手動進行編譯安裝
這個程序是通過python語言編寫的,需要通過python命令安裝,要求python版本不能低於2.4 ,具體的python版本情況可以在係統中執行python -V進行核實
screenshot

安裝完成後要手動生成一下程序的啟動腳本
screenshot

3、程序文件說明
安裝完成後程序文件都是保存在 /etc/fail2ban 目錄下的
screenshot

/etc/fail2ban/action.d #動作文件夾,內含默認文件。iptables以及mail等動作配置
/etc/fail2ban/fail2ban.conf #定義了fai2ban日誌級別、日誌位置及sock文件位置
/etc/fail2ban/filter.d #條件文件夾,內含默認文件。過濾日誌關鍵內容設置
/etc/fail2ban/jail.conf #主要配置文件,模塊化。主要設置啟用ban動作的服務及動作閾值

4、配置案例
設置條件:ssh遠程登錄5分鍾內3次密碼驗證失敗,禁止用戶IP訪問主機1小時,1小時該限製自動解除,用戶可重新登錄。
需要修改/etc/fail2ban/jail.conf 文件實現防護規則配置
首先是全局配置,主要配置項如下
[DEFAULT] #全局設置
ignoreip = 127.0.0.1/8 #忽略的IP列表,不受設置限製
bantime = 600 #屏蔽時間,單位:秒
findtime = 600 #這個時間段內超過規定次數會被ban掉
maxretry = 3 #最大嚐試次數
backend = auto #日誌修改檢測機製(gamin、polling和auto這三種)
然後是sshd程序防護設置
[ssh-iptables]
enabled = true #啟用配置
filter = sshd #規律規則名,對應filter.d目錄下的sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp]
#動作的相關參數,對應action.d/iptables.conf文件
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] #觸發報警的收件人
logpath = /var/log/secure #檢測的係統的登陸日誌文件。這裏要寫sshd服務日誌文件
bantime = 3600 #禁止用戶IP訪問主機1小時
findtime = 300 #在5分鍾內內出現規定次數就開始工作
maxretry = 3 #3次密碼驗證失敗

注意:單個服務檢查設置,如設置bantime、findtime、maxretry和全局衝突,服務優先級大於全局設置。

客戶端測試,連續輸錯3次密碼後無法正常連接到服務器,查看服務器中多了條針對源地址的連接REJECT策略
screenshot

5、fail2ban工作狀態查詢
a.插敘當前總的狀態信息,可以看到有哪些規則存在攔截狀態
screenshot

b.根據規則命令查詢具體的攔截狀態信息,可以查看到具體攔截了哪些IP
screenshot

最後更新:2017-09-05 15:02:52

  上一篇:go  高速通道部署實踐:如何讓跨地域雲上私網互通
  下一篇:go  記一次JavaWeb網站技術架構總結