如何即時封鎖想要用「暴力密碼」破解 SSH 的入侵者

本程式無法處理 IPv6 的問題,請改用功能更強大、更完整的 Fail2Ban,請參考本站文章:


粉久之前寫了一支 Log 分析的程式,可以統計、分析前一天系統的 Log,在這一份報表裡面,總是會看到有一些人使用「暴力法」,嘗試以各種帳號、密碼,藉由 SSH 或 FTP 入侵伺服器! 而我只能看著「前一天」的報表,分析他們用過哪些帳號、統計他們嘗試了幾次…實在有點不是滋味

我一直在找這樣的程式,這個程式的功能,就是可以及時把使用「暴力法」的入侵者給封鎖掉。我找這樣的程式已經很久了,我也認為應該會有這樣的程式才對,可是就是找不著! (如果你用過這樣的程式,請不要笑我)

程式原理

於是我就自己用 Perl 寫了一支程式,程式的原理,並不是每隔五分鐘就去分析系統 Log,因為我覺得這樣對系統太操了,我希望可以在用戶準備登入時,才去分析該用戶最近的登入狀況。

這整個流程,首先藉由 TCP_Wrappers 的機制 (hosts.deny 及 hosts.allow) 在用戶登入時觸發本程式,然後程式會分析該用戶最近這一小時登入的狀況,對於登入失敗 10 次的用戶,直接以防火牆封鎖其 IP,然後程式會寄出一封電子郵件通知管理者。

安裝步驟

  1. 下載 block_ssh.pl,將檔案存放在 /usr/bin/,並將權限設為 755:
    cd /usr/bin
    wget http://here.vixual.net/files/source/block_ip/block_ssh_pl
    mv block_ssh_pl block_ssh.pl
    chmod 755 block_ssh.pl
  2. 編輯 /etc/hosts.allow,加入:
    sshd    :       ALL     :       spawn (/usr/bin/block_ssh.pl %c %d)
  3. 這樣就完成了,如有必要,請自行修改 block_ssh.pl 裡相關的參數。

程式缺點

  1. 目前只有針對 ssh 做分析。
  2. 遇到不斷變換 IP 的駭客就沒輒了。

SSH 的安全設定

建議修改 /etc/ssh/sshd_config,做以下設定:

#只允許用戶使用 SSH2 協定登入
Protocol 2
#禁止 root 使用 SSH 登入
PermitRootLogin no
#最多可以同時開啟 10 個連線要求
MaxStartups 10
    • Philips
    • 01/30. 2008 1:08上午

    感謝大大分享,
    小弟也受惠良多。

    • Anonymous
    • 03/07. 2008 11:41上午

    THanks You, I 'll try it!

    • wenchi
    • 06/26. 2008 5:41下午
    Using Internet Explorer Internet Explorer 6.0 on Windows Windows XP

    你好,我想要嘗試用你的方式抵擋ssh 攻擊,但是目前找不到 block_ssh.pl 的檔案可以下載?
    想請問能否mail 一份給我試試看,謝謝囉^^

    • citypig
    • 06/26. 2008 7:42下午
    Using Mozilla Firefox Mozilla Firefox 2.0.0.11 on Windows Windows XP

    WECHI 您好:
    文章我已經更新過了,照著步驟執行即可下載到 block_ssh.pl。

    • STONE
    • 07/31. 2008 3:15下午
    Using Mozilla Firefox Mozilla Firefox 3.0.1 on Windows Windows XP

    由secure.log去分析然後加入iptable drop的方式應該算是簡單而傳統的方式
    如果資料量多的話 會拖慢連線速度吧 因為iptables變長了
    再者 最近發現 try的不是連續試 而是1-2小時才試一次
    一直在用knockd的方法,但卻一直不成功 =.=

    • CML
    • 08/22. 2008 12:41上午
    Using Mozilla Firefox Mozilla Firefox 2.0.0.16 on Windows Windows XP

    你好
    已經有這種程式囉
    監看log檔然後搭配iptable來阻擋暴力法入侵
    這程式名子叫fail2ban
    教學可參考下列網址
    http://gentoo-wiki.com/HOWTO_fail2ban
    滿好用的
    可以阻擋的項目也很多
    例如ssh, ftp, sasl...等
    滿不錯用的
    大家參考一下^^

  1. 03/29. 2010

return top

%d 位部落客按了讚: