用iptables限制黑客破解密碼
用iptables限制黑客我使用了下,效果不錯(cuò),你們可以試試。
一般使用Linux做服務(wù)器都會(huì)開(kāi)SSH服務(wù)用于管理,但世界上總有些無(wú)聊加無(wú)賴(lài)的黑客掛上字典暴力猜解你的密碼,看著日志中不斷增加的稀奇古怪的用戶名,我不由的對(duì)這些不知疲倦的菜鳥(niǎo)起了敬佩之心。
好了,不想跟小菜玩了,今天介紹如何使用iptables的recent模塊來(lái)防止暴力破解密碼。
SSH服務(wù)默認(rèn)端口是22,不過(guò)既然是你自己管理,大可改個(gè)端口,比如,本例中將SSH端口改成44322,一般只知用工具的菜鳥(niǎo)黑客都只會(huì)掃1000以下的端口,但一臺(tái)計(jì)算機(jī)擁有65536個(gè)端口,隨便把你的端口改到哪個(gè)犄角旮旯,就可以大幅度增加攻擊者的成本。
下面的代碼是直接修改/etc/sysconfig/iptables文件,當(dāng)然也可以用腳本,腳本只要在每句前面加iptables就行了。
view sourceprint?01#SSH Login log 注:先記錄都是誰(shuí)要登錄我的SSH服務(wù),可以使用tail /var/log/iptables -n 100 | grep "SSH Login"查看最近誰(shuí)在登錄,iptables是日志文件名,日志名需要你自己在syslog中設(shè)置
02-A INPUT -p tcp --dport 44322 --tcp-flags ALL SYN -m state --state NEW -j LOG --log-prefix "[SSH Login]:" --log-level debug
03#1 Hour allow 5 SSH Login 注:每3600秒(每小時(shí))只限5次連接我的SSH服務(wù),可以自己改時(shí)間和次數(shù),在這里你可以用-j DROP來(lái)代替-j REJECT,-j REJECT --reject-with tcp-reset是對(duì)客戶端明確的返回一個(gè)重置TCP連接的包,告訴對(duì)方我關(guān)閉連接了,如果你覺(jué)得不需要對(duì)攻擊者這么好心,就用-j DROP直接丟棄包,讓對(duì)方傻傻的等回包去。
04-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
05-A INPUT -p tcp --dport 44322 --tcp-flags ALL SYN -m state --state NEW -m recent --name SSH-SYN --set -j ACCEPT
06#SSH Service back data filter 注:過(guò)濾建立TCP連接后收到的數(shù)據(jù)包
07-A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK -m state --state ESTABLISHED -j ACCEPT
08-A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,PSH -m state --state ESTABLISHED -j ACCEPT
09-A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,FIN -m state --state ESTABLISHED -j ACCEPT
10-A INPUT -p tcp --dport 44322 --tcp-flags ALL RST -m state --state ESTABLISHED -j ACCEPT
11-A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,RST -m state --state ESTABLISHED -j ACCEPT
12-A INPUT -p tcp --dport 44322 --tcp-flags ALL ACK,URG -m state --state ESTABLISHED -j ACCEPT
這里使用了iptables的連接跟蹤功能,就是-m state --state,因?yàn)門(mén)CP連接的第一個(gè)包只能是SYN包,所以第2、4、5行只允許SYN包進(jìn)入,這樣就防止了其他類(lèi)型的包來(lái)攪局。第4、5行也能防止不偽造源IP地址的SYN FLood攻擊。7至12行表示過(guò)濾TCP連接已建立后的包的類(lèi)型,注意--tcp-flags ALL后面是正常的包,比如根本不能出現(xiàn)SYN/FIN包、FIN/RST包、SYN/FIN/PSH包、SYN/FIN/RST包、SYN/FIN/RST/PSH包,一旦出現(xiàn)這樣的包說(shuō)明你被攻擊了。
這里要注意的一點(diǎn)就是,如果服務(wù)器管理員在一小時(shí)內(nèi)成功登錄了5次之后,他也不能登錄了。因?yàn)閕ptables計(jì)算的是每小時(shí)內(nèi)建立SSH連接的次數(shù),不管你是猜密碼還是正常登錄。所以管理員最好做好配置計(jì)劃。
本代碼經(jīng)iptables 1.3.5,ipt_recent 0.3.1測(cè)試。
通過(guò)閱讀文章,我們知道了用iptables的recent模塊來(lái)防止暴力破解密碼,很管用,快跟朋友分享吧!
【編輯推薦】