防 ssh 暴力破解
一直以來,面對 vim 顯示的 auth.log 裡滿屏的紅色 ssh 登入失敗記錄,要麼容忍,要麼換埠號,要麼是fail2ban。換埠號顯然會造成很多不便,尤其是使用者比較多的時候。fail2ban以前也用得挺好的,但是需要手工編輯配置檔案,閱讀其中長長的注釋並且小心翼翼地修改引數。配置好之後還會經常收到 fail2ban發出的郵件。這些都可以忍受。直到有一天,某位使用者不小心登入失敗多次以後,那個 ip 被封掉了。我從 /etc/hosts.deny中刪除了對應的專案,但是沒有用,因為 fail2ban 會去檢查 auth.log,然後把那個 ip 給加回去……
前兩天本來是尋找限速的命令的,卻無意之中看到了防 ssh 暴力破解的命令,如下:
iptables -i input -p tcp --dport 22 -i eth0 -m state --state new -m recent --set
iptables -i input -p tcp --dport 22 -i eth0 -m state --state new -m recent --update --seconds 60 --hitcount 4 -j drop
第一句是說,對於外來資料,如果是 tcp 協議,目標埠號是 22,網路介面是eth0,狀態是新連線,那麼把它加到最近列表中。第二句是說,對於這樣的連線,如果在最近列表中,並且在 60秒內達到或者超過四次,那麼丟棄該資料。其中的-m是模組的意思。
也就是說,如果有人從乙個 ip 一分鐘內連線嘗試四次 ssh登入的話,那麼它就會被加入黑名單,後續連線將會被丟棄。這是對付 ssh 暴力破解的絕佳規則了。不用修改openssh,也不用另啟乙個容易招麻煩的服務。不過不知道多久以後那個 ip 才能重新連線上。
我實際使用時正有一北京 ip 在嘗試 ssh 登入。命令執行後,auth.log裡的紅色失敗訊息又出現了四次,然後就沒有了。後來再檢視時,雖然還是能看到不少紅色,但是沒有以前那麼密集了。更重要的是,每四條登入失敗訊息間的時間間隔比較大了。可謂效果顯著啊。
網路限速
這是我這次搜尋 iptables相關資訊的本意。起因是這樣子的,在本地測試的時候,經常會發現本地連線的速度實在是太快了。對於**,不能反映其真實的使用體驗;對於網路程式,無法測試其在網路不良時的表現,由於測試的規模小,一些真實使用時容易出現的競態也由於操作完成得太快而無法重現。
很早就知道 iptables 能夠對**流量進行限速。既然是 iptables而不是某些商業軟體,它就沒理由只能對外部流量而不對本地介面 lo 進行限速。於是最後弄到如下命令:
iptables -a input -s 127.0.0.1 -p tcp -d 127.0.0.1 --dport 6900:6901 -m limit --limit 1/s -j accept
iptables -a input -s 127.0.0.1 -p tcp -d 127.0.0.1 --dport 6900:6901 -j drop
這兩條規則組合起來是說,對於所有從 127.0.0.1 到同樣的位址的 6900 到 6901 埠的 tcp連線,每秒只接受乙個資料報,多餘的丟棄。後邊那句是必要的,如果不寫的話就沒作用了,因為預設策略是接受。
利用iptables防止syn flood攻擊
命令 iptables n syn flood iptables a syn flood m limit limit 50 s limit burst 10 j return iptables a syn flood j drop iptables i input j syn flood 解釋 n ...
使用Iptables防止CC攻擊
要想明白cc攻擊就要先了解dos攻擊 1 製造大流量無用資料,造成通往被攻擊主機的網路擁塞,使被攻擊主機無法正常和外界通訊。1 2 利用被攻擊主機提供服務或傳輸協議上處理重複連線的缺陷,反覆高頻的發出攻擊性的重複服務請求,使被攻擊主機無法及時處理其它正常的請求。3 利用被攻擊主機所提供服務程式或傳輸...
防止SSH暴力破解
我的伺服器每天都會有無數的ssh失敗嘗試記錄,有些無聊的人一直不停的掃瞄,這些人真夠無聊的,沒事吃飽了撐著,老找些軟體在那裡窮舉掃瞄,所以大家第一要記的設定乙個好的夠複雜的密碼。怎麼樣防,如果要一條一條將這些ip阻止顯然治標不治本,還好有denyhosts軟體來代替我們手搞定他。denyhosts是...