使用iptables來抵擋brute force ssh攻擊

每天都會有script kids到處亂掃機器,嘗試使用一些簡單常見的組合,看看能不能瞎貓碰到死號子,成功矇進去機器裡面,相信這是手邊有機器的朋友們共同的遭遇,打開log應該都是一整片try and error的紀錄。雖然透過這種方式成功的機會實在不高,但是機器三不五時就讓人家這樣try還是很不爽,有時候遇到機車一點的,還用個超長字典檔來嘗試,導致系統loading增高,感覺實在不好受。

網路上有許多現成的script或是套件來幫忙阻擋,雖然多了一些比較彈性的設定以及美美的統計,但是對我來說,只要能達到阻擋目的即可,所以我選擇不安裝額外套件的方式,採取已經就存在的iptables中的recent module來抵擋。只要短短兩行就搞定了:

iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set  –name SSH -j ACCEPT

iptables -A INPUT -p tcp –dport 22 -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP

第一行的部分是在INPUT的chain中建立一個叫做SSH(可以隨便換成你愛的)的清單,用來記錄連線的資訊。

第二行用白話文解釋便是:當同一個來源在60秒內所產生新的連線達到第4次的時候,就把連線給drop掉。使用–update則是要求每次比對後更新SSH這個清單。而–rttl則是檢查source address及ttl是否為相同,避免spoofing的問題。

短短兩行就搞定收工啦,效果相當讓人滿意。

0 Response to “使用iptables來抵擋brute force ssh攻擊”


  • No Comments

Leave a Reply