《利用iptables限制黑客暴力猜解LINUX服務器SSH密碼》要點:
本文介紹了利用iptables限制黑客暴力猜解LINUX服務器SSH密碼,希望對您有用。如果有疑問,可以聯系我們。
相關主題:服務器安全 / iptables配置
作者:高張遠矚(HiLoveS)
博客:http://www.cnblogs.com/hiloves/
一般使用Linux做服務器都會開SSH服務用于管理,但世界上總有些無聊加無賴的黑客掛上字典暴力猜解你的密碼,看著日志中不斷增加的稀奇古怪的用戶名,我不由的對這些不知疲倦的菜鳥起了敬佩之心。
那么,今天就介紹如何使用iptables的recent模塊來防止暴力破解密碼。
SSH服務默認端口是22,不過既然是你自己管理,大可改個端口,比如,本例中將SSH端口改成44322,一般只知用工具的菜鳥黑客都只會掃1000以下的端口,但一臺計算機擁有65536個端口,隨便把你的端口改到哪個犄角旮旯,就可以大幅度增加攻擊者的成本。
下面的代碼是直接修改/etc/sysconfig/iptables文件,當然也可用腳本,腳本只要在每句前面加iptables就行了。
#SSH Login log 注:先記錄都是誰要登錄我的SSH服務,可以使用tail /var/log/iptables -n 100 | grep "SSH Login"查看最近誰在登錄,iptables是日志文件名,日志名需要你自己在syslog中設置 -A INPUT -p tcp --dport 44322 --tcp-flags ALL SYN -m state --state NEW -j LOG --log-prefix "[SSH Login]:" --log-level debug #1 Hour allow 5 SSH Login 注:每3600秒(每小時)只限5次連接我的SSH服務,可以自己改時間和次數,在這里你可以用-j DROP來代替-j REJECT,-j REJECT --reject-with tcp-reset是對客戶端明確的返回一個重置TCP連接的包,告訴對方我關閉連接了,如果你覺得不需要對攻擊者這么好心,就用-j DROP直接丟棄包,讓對方傻傻的等回包去。 -A INPUT -p tcp --dport 44322 --tcp-flags ALL SYN -m state --state NEW -m recent --name SSH-SYN --update --seconds 3600 --hitcount 5 --rttl -j REJECT --reject-with tcp-reset -A INPUT -p tcp --dport 44322 --tcp-flags ALL SYN -m state --state NEW -m recent --name SSH-SYN --set -j ACCEPT #SSH Service back data filter 注:過濾建立TCP連接后收到的數據包 -A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,PSH -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,FIN -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --dport 44322 --tcp-flags ALL RST -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,RST -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,URG -m state --state ESTABLISHED -j ACCEPT
這里使用了iptables的連接跟蹤功能,就是-m state --state,因為TCP連接的第一個包只能是SYN包,所以第2、4、5行只允許SYN包進入,這樣就防止了其他類型的包來攪局。第4、5行也能防止不偽造源IP地址的SYN FLood攻擊。7至12行表示過濾TCP連接已建立后的包的類型,注意--tcp-flags ALL后面是正常的包,比如根本不能出現SYN/FIN包、FIN/RST包、SYN/FIN/PSH包、SYN/FIN/RST包、SYN/FIN/RST/PSH包,一旦出現這樣的包說明你被攻擊了。
這里要注意的一點就是,如果服務器管理員在一小時內成功登錄了5次之后,他也不能登錄了。因為iptables計算的是每小時內建立SSH連接的次數,不管你是猜密碼還是正常登錄。所以管理員最好做好配置計劃。
本代碼經iptables 1.3.5,ipt_recent 0.3.1測試。
上面的iptables代碼你可以免費用于任何途徑
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/46.html