DenyHosts

English Version


2011/05/30

我好久了想使用 DenyHosts 也封住 vsftpd 的攻擊。我在谷歌找答案,試了建議的方法但是我都沒有成功。 這試驗算是試驗/放棄的階段。

因為沒有方法,最後我使用 iptables 把一個 IP 每分鐘只能做三個連接到我 ftp 伺服器。 (請參考: http://kevin.vanzonneveld.net/techblog/article/block_brute_force_attacks_with_iptables/)。 這方法算是很不錯,但是沒有完全停止 vsftpd 的攻擊。

最近,我又看看這個問題。最後,我想,我找到了答案。(請參考: http://www.mail-archive.com/denyhosts-user@lists.sourceforge.net/msg00306.html)。

將在你的 /etc/denyhosts.conf 改變:

BLOCK_SERVICE = sshd ==> BLOCK_SERVICE = ALL

然後加以下:

SSHD_FORMAT_REGEX=.* (sshd.*:|\[sshd\]|vsftpd.*:) (?P.*)
USERDEF_FAILED_ENTRY_REGEX=authentication failure.* rhost=(?P\S+)\s+user=(?P\S+).*
USERDEF_FAILED_ENTRY_REGEX=authentication failure.* rhost=(?P\S+).*

這樣,DenyHosts 就會開始把 vsftpd 之攻擊 IP 也列入到黑名單裡。


最近我注意到我們 sshd 伺服器收到很多的攻擊。要防範這些攻擊,我會將這攻擊的 IP 手動的方式加到 iptables。但是每一天會有新的攻擊。要手動的放式一一將這些 IP 加到 iptables 是相當耗時間。我需要一個程式幫我自動防範這些攻擊。 DenyHosts 答覆了這個需求。

DenyHosts FAQ:

DenyHosts 是什麼?

DenyHosts 是一個 Python 程式。它會分析 sshd 伺服器的紀錄訊息檔案來確定哪一些主機 在攻擊你的系統。它也會確定哪一些使用者帳號是攻擊的對象。它會記錄每一個主機攻擊的次數。

當它發現重複的攻擊就會攻擊主機的 IP 加到 /etc/hosts.deny 檔案。這樣就可以避免這主機再攻擊。

要的話也可以寄 email 給系統管理員。

安裝和設定

Fedora 7,我現在使用的 Linux,有支援 denyhosts。如果你使用 yum 來安裝或更新你的系統,執行以下指令安裝 denyhosts:

yum   install   denyhosts

或者,下載 denyhosts rpm 包裝然後手動的方式安裝:

rpm   -Uvh   denyhosts-xx.xx.i386.rpm

現在 denyhosts 已經安裝好了。需要的話,你可以編輯 /etc/denyhosts.conf。初始值都可以使用。

你也可以加入你 class c 的 IP 到 /var/lib/denyhosts/allowed-hosts。這樣的,denyhosts 不會攔截這些 IP。

現在我們可以啟動 denyhosts 了:

chkconfig   --add   denyhosts
chkconfig   denyhosts   on
service   denyhosts   start

DenyHosts 已經啟動了,防範所有 ssh 伺服器之攻擊。


蔡由世神父
2005/08/17
更新: 2011/05/30