暴力式攻擊是泛指使用常用字眼攻擊某些協議的通訊埠,進而嘗試取得密碼。這種攻擊十分討厭,既無技術可而,但安全上卻是個問題,而且系統還要耗掉一些效能來應付,所以這一篇我們講講如何使用 iptables 來防範 SMTP 的暴力式攻擊。

一個正常的 SMTP 的通訊內容大約是這樣的

# telnet mail.example.org 25
Trying 1.2.3.4...
Connected to mail.example.org.
Escape character is '^]'.
220 mail.example.org ESMTP
EHLO brute.attack.com
250-mail.example.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
dXNlcm5hbWUuY29t
334 UGFzc3dvcmQ6
bXlwYXNzd29yZA==
535 5.7.8 Error: authentication failed:

所以密碼錯誤驗證失敗最後面一定會有個錯誤碼 535 5.7.8,這次我們利用這個字串來告訴 iptables 如果某 IP 在 180 秒內連續三次出現這個字眼就把封包給攔截,這樣就達到防堵 SMTP 暴力式攻擊了。

# iptables -I OUTPUT -p tcp --sport 25 -m string --to 90 --string "535 5.7.8 Error: authentication failed:" --algo bm -m recent --rdest --name SMTP_AUTH_ERROR --set
# iptables -I OUTPUT -m recent --name SMTP_AUTH_ERROR --rdest --rcheck --seconds 180 --hitcount 3 -j DROP

這樣 iptables 就會根據這個字串來封鎖一些惡意攻擊 SMTP 的 IP 地址。

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料