我在管理 Linux 主機時最常遇到的一個問題就是只要系統一上線,就會開始有人來 try 我的主機,所以我通常把不太對外的 port 用 iptables 設定僅限於特定 IP 可以存取,不過有時後主機必須對外的時候,被 try 的機會就很高了,例如說 SSHD 就是最常被入侵攻擊的服務之一,今天將介紹 DenyHosts 套件,可有效的幫你阻擋非法的入侵行為。
DenyHosts 是一支用 python 寫成的 Script,主要目的就是幫助 Linux 系統管理者保護你的 SSH 伺服器,避免被駭客用字典攻擊或暴力攻擊(就是一直用不同的帳號、密碼嘗試登入就是了)。如果你有固定在看你的 /var/log/auth.log (或 /var/log/secure)安全紀錄檔的話,就可以知道有多少人在攻擊或嘗試登入你的主機了。而 DenyHosts 就是用來分析這個檔案,將非法登入的行為紀錄下來,超過允許的次數後就會將遠端的 IP 寫入到 /etc/hosts.deny 檔案裡,直接將該 IP 給封鎖住,讓駭客無法再連線。
DenyHosts 真的很簡單易用,不像 iptables 要設定許多複雜的 rules,如果你是用 Ubuntu 的話,只要下一行指令就可以完成所有安裝、設定、啟用服務的工作了,如下:
yum install denyhosts
如果你想讓 DenyHosts 偵測到攻擊行為時發一封 Email 通知你的話,你也可以設定 /etc/denyhosts.conf 檔案
根據自己需要進行相應的配置(解釋見下文件的配置文件)
DenyHosts配置文件:
啟動服務
讓他和系統啟動時一起啟動
#/etc/ini.d/denyhosts start
#chkconfig denyhosts on
可以用一台電腦遠端連接過來測試.如果可以看到/etc/hosts.deny內是否有禁止的IP,有的話說明已經裝設成功了。
注.我發現時間deny以後,刪除ip的時間不是很準.解決的方法是改變DAEMON_PURGE = 這個的時間.我發現系統刪除時間是以他為準.
DAEMON_PURGE:預設清除:當DenyHosts在預設模式下執行,執行清除機械作用過期最久的HOSTS_DENY,這個會影響PURGE_DENY的間隔
DenyHosts配置文件:
SECURE_LOG = /var/log/secure #ssh 日誌文件,它是根據這個文件來判斷的。 HOSTS_DENY = /etc/hosts.deny #控制用戶登陸的文件 PURGE_DENY = 5m #過多久後清除已經禁止的 BLOCK_SERVICE = sshd #禁止的服務名 DENY_THRESHOLD_INVALID = 1 #允許無效用戶失敗的次數 DENY_THRESHOLD_VALID = 3 #允許普通用戶登陸失敗的次數 DENY_THRESHOLD_ROOT = 5 #允許root登陸失敗的次數 HOSTNAME_LOOKUP=NO #是否做網域名稱反解 ADMIN_EMAIL = mickeysplay@gmail.com #管理員郵件地址,它會給管理員發郵件 DAEMON_LOG = /var/log/denyhosts #自己的日誌文件
啟動服務
讓他和系統啟動時一起啟動
#/etc/ini.d/denyhosts start
#chkconfig denyhosts on
可以用一台電腦遠端連接過來測試.如果可以看到/etc/hosts.deny內是否有禁止的IP,有的話說明已經裝設成功了。
注.我發現時間deny以後,刪除ip的時間不是很準.解決的方法是改變DAEMON_PURGE = 這個的時間.我發現系統刪除時間是以他為準.
DAEMON_PURGE:預設清除:當DenyHosts在預設模式下執行,執行清除機械作用過期最久的HOSTS_DENY,這個會影響PURGE_DENY的間隔
設定好之後必須要重新啟動 DenyHosts:
/etc/init.d/denyhosts restart
相關連結
沒有留言:
張貼留言