2007年10月19日 星期五

防止暴力攻擊 Linux 終極絕招

發表人 ceasar _POSTON 2007/9/21 0:32:44 (69 人讀取)
Reference:
http://itblog.blogdns.net/index.php?load=read&id=96



如果架了一個 Linux 主機在公用網路上,可以檢查一下 /var/log/secure 這個紀錄檔,會發現每天都會有來自不同 IP 的攻擊者,不斷的嘗試竊取主機的帳號,之前除了被動的作一些加強主機安全性的措施,如關閉不必要服務、絕不使用懶人密碼、限制 SSHD 的登入帳號等等,但是這些只能降低帳號被竊取成功的機率,而不能阻絕那些攻擊者行為,每當檢視那些安全紀錄檔時,總還是提心吊膽的。

然而,今天在悠遊網路時發現一個很好用的工具-DenyHosts ,它是用 Python 語言開發的,用在 Linux 上在適合不過了。

簡單說明一下它的原理,這是一個很小的程式,可以選擇兩種執行模式 Crontab 或 Daemon,程式運行時會去分析系統安全紀錄檔 /var/log/secure,將那些攻擊者的 IP 位址收集並以系統檔 /etc/hosts.deny 將其阻絕連線,被紀錄在 hosts.deny 的 IP 位址就無法與主機連線。

系統需求:
請先檢查 SSHD 是否支援 tcp_wrappers,如不確定請按下述的方法作測試
1. 開啟 SSHD 服務,並以 root 登入
2. 編輯 /etc/hosts.deny,加上一行
sshd: 127.0.0.1

3. 以本機方式登入測試
ssh localhost

4. 你應該會看到這一段訊息
ssh_exchange_identification: Connection closed by remote host

如未出現這訊息,你的 SSHD 尚未支援 tcp_wrappers

如何安裝:
因為筆者的作業系統是用 CentOS 4.4 所以下載 RPM 來裝

#wget http://downloads.sourceforge.net/denyhosts/DenyHosts-2.6-1.src.rpm?modtime=1165494113&big_mirror=0
#rpmbuild --rebuild DenyHosts-2.6-1.src.rpm
#rpm -Uvh /usr/src/redhat/RPMS/noarch/DenyHosts-2.6-1.noarch.rpm

初始化設定:
#cp /usr/share/denyhosts/denyhosts.cfg-dist /etc/denyhosts.cfg
#cp /usr/share/denyhosts/daemon-control-dist /etc/init.d/denyhosts
#vi /etc/init.d/denyhosts

DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
改成
DENYHOSTS_CFG = "/etc/denyhosts.cfg"

以 Daemon 方式啟動
# service denyhosts start

檢查一下有無 IP 位址加入到 /etc/hosts.deny

進階設定:
1.避免 log 無限制增長,可設定 logrotate,參照這方法
編輯/新增 /etc/logrotate.d/denyhosts,包含這些內容

# this should match the DAEMON_LOG configuration setting of DenyHosts
/var/log/denyhosts {
missingok
rotate 5
notifempty
prerotate
service denyhosts stop
endscript
postrotate
service denyhosts start
endscript
}

2. 線上資料同步功能,預設是關閉的,這有點類似防毒軟體及防廣告信軟體的線上更新。

官方網站: http://denyhosts.sourceforge.net/index.html

沒有留言: