1. 程式人生 > >整理一些關於SSH、FTP白名單設定的操作

整理一些關於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  其餘的都不變即可。