整理一些關於SSH、FTP白名單設定的操作
SSH 訪問白名單
http://www.zhixing123.cn/ubuntu/25502.html
這篇文章中講了如何通過iptables進行ssh白名單的設定
FTP或者MySQL同理可得。
/var/log/nginx 檢視nginx日誌
/var/log/auth.log 檢視系統日誌
sshd會給每個連線fork一個程序,所以當被大量攻擊的時候,ssh的程序會變得很多
為了對付這種攻擊,網上查了有關於限制IP、使用者連線數的,也有關於取消root賬戶密碼登入,採用證書認證的,之前寫過一篇文章免口令登入遠端SSH服務就是使用證書登入的。但是我覺得最有效的方法就是在防火牆裡設定IP白名單了。這樣既避免了產生大量的流量,也不會產生sshd的連線程序。
配置iptables
新增兩個信任的IP段,其他網段的資料包都DROP了,而不是REJECT(REJECT還要傳送ICMP迴應包給連線方)。
# iptables -A INPUT -p tcp --dport 22 -s 120.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 183.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
第一和第二行表示接收指定IP段的埠訪問請求。
第三行表示drop其餘ip段的訪問。
嘗試在另外一個機子連線這個ssh服務,資料包被成功DROP了。
檢視iptables結果:
iptables -L -n
==============以下ubuntu下預設缺少相應服務=====================
將iptables設定成系統服務,開機自啟:
chkconfig --level 345 iptables on
對重新設定過的iptables規則使用命令:
service iptables save
儲存,重啟後才可重用。
iptables重啟:
service iptables restart
iptables配置檔案:
/etc/sysconfig/iptables
遠端訪問伺服器SSH進行配置
修改SSH的埠很大程度上能杜絕被黑客掃描,增加系統的安全係數,最近有客戶修改完埠沒有設定防火牆開啟修改後的埠導致修改後連結不上VPS,下面教大家如何修改並在iptables裡開啟相應的埠:
1.修改SSH配置檔案:
vi /etc/ssh/sshd_config
找到#Port 22一段,這裡是標識預設使用22埠,修改為如下:
Port 22
Port 1234
儲存退出
重啟SSH
/etc/init.d/sshd restart
這樣SSH埠將同時工作與22和1234上
2.修改iptables配置檔案:vi /etc/sysconfig/iptables新增以下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1234 -j ACCEPT
重啟iptalbes服務:
service iptables restart(ubuntu在這裡提示沒有iptables服務)
然後使用SSH工具測試你所設定的埠是否能正常使用
如果能正常使用返回到第一步,刪除原來的22埠,以及修改防火牆配置檔案
之所以先設定成兩個埠,測試成功後再關閉一個埠,是為了方式在修改的過程中,萬一出現掉線、斷網、誤操作等未知情況時候,還能通過另外一個埠連線上去除錯以免發生連線不上的狀況。
當然,你也可以直接關閉防火牆(不推薦):
重啟後生效
開啟:chkconfig iptables on
關閉:chkconfig iptables off
即時生效,重啟後失效
開啟:service iptables start
關閉:service iptables stop
service iptables save
之後你所有加的規則就會儲存在/etc/sysconfig/iptables裡面了;
如果不執行該命令,那麼規則只儲存在記憶體內,重新啟動服務或者機器就會沒有了;
==============以上ubuntu下預設缺少相應服務====================
/*****************這個ubuntu可以!********************/
將這些規則都配置成開機啟動。
首先將配置好的規則儲存:
sudo iptables-save > /etc/iptables-rules
然後編輯/etc/network/interface檔案,在檔案的末端插入:
pre-up iptables-restore < /etc/iptables-rules
這樣重啟以後就可以自動載入了。
如果iptables經常變化,可以在interface中再次新增以下:
post-down iptables-save > /etc/iptables-rules
這樣,每次重啟或down up網路interface時,都會先儲存規則,重啟後再恢復規則。
當然,如果突然掉電,那是儲存不了上次的規則的。
===============================================
刪除iptables規則:
iptables -L INPUT --line-numbers 列出INPUT 鏈所有的規則
刪除規則的方法:
語法是: iptables -D chain rulenum [options]
其中: chain 是鏈的意思,就是INPUT FORWARD 之類的
rulenum 是規則的編號。從1 開始。可以使用 --line-numbers 列出規則的編號
所以,例如上面要刪除一個INPUT鏈的規則的話可以這樣:iptables -D INPUT 3
意思是刪除第3條規則。
還有第二種方法。第二種辦法是 -A 命令的對映,不過用-D替換-A。當你的鏈中規則很複雜,而你不想計算它們的編號的時候這就十分有用了。也就是說,你如何用iptables -A.... 語句定義了一個規則,則刪除此規則時就用 -D 來代替- A 其餘的都不變即可。