CentOS各發行版中SSH連接埠預設為22,如果正式做站或其它用途,為了提高安全性就需要修改掉預設的SSH連接埠號碼,防止被有心人窮舉密碼。部分VPS供應商,若您的VPS伺服器SSH遭受多次的暴力破解,可能會遭到罰款或臨時終止服務,所以修改SSH的預設連接埠是有必要的
廢話不多說,先通過當前的SSH連接埠(預設為:22)登陸。
1、修改設定檔:/etc/ssh/sshd_config ,找到
#port 22
2、先將Port 22 前面的 # 號去掉,並另起一行。如定義SSH連接埠號碼為33322,則輸入
Port 33322
自訂連接埠選擇建議在萬位的連接埠(如:10000-65535之間)
也許您會問為什麼要先把port 22前面的 # 去掉呢?因為在設定檔中,# 是Linux的注釋字元。注釋字元後的代碼程式是不會執行的。SSH預設的(即非手動指定)連接埠為22,所以設定檔在預設的情況下以注釋字元出現。當需要指定其它連接埠或多連接埠同時訪問時,就要刪掉注釋符號,告知程式按照您的意願來執行響應操作。
以上操作,手動指定SSH連接埠為22和33322(雙連接埠號碼),保留22是為了防止個別防火牆屏蔽了其它連接埠導致無法串連VPS(如沒單獨指定22,新指定的33322連接埠防火牆也沒允許存取,那麼可能無法通過SSH串連VPS或伺服器)。為了防止不必要問題的產生,所以要給自己保留條“後路”。
3、修改完畢後,重啟SSH服務,並退出當前串連的SSH連接埠。(如圖)
service sshd restart
4、重啟完畢,嘗試使用新連接埠登陸
串連成功,需要重新添加SSH-RSA驗證,點擊是(或Yes)即可。
5、若能正常訪問,返回第一步,根據第二步的操作將原port 22整段注釋或刪掉,再按第三步重啟SSH即可。
以上步驟重啟後使用預設22號連接埠無法進入SSH,達到目的。
【請注意】:
如果您啟用了防火牆iptables,那麼必須先添加新開的33322連接埠
補充:iptables開放連接埠端樣本
為了方便舉例說明,飄易就直接拿來一段我的現有伺服器上啟動並執行防火牆iptables內容。
請注意:後面的注釋解說文字:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # (ssh連接埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # (web連接埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # (ftp連接埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # (ftp被動模式連接埠範圍)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT # (mysql連接埠)
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
修改完防火牆iptables後,需要重新啟動:
/etc/init.d/iptables restart
或者
service iptables restart
注意:iptables設定檔存放位置是:/etc/sysconfig/iptables
儲存命令:service iptables save
使用命令:iptables -L -n 可以查看當前iptables的開放連接埠情況。
iptables服務開機自動啟動:
chkconfig iptables on
檢查iptables服務:
# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
上面開放的連接埠後面都有註明,有一個要注意的地方,就是FTP連接埠,FTP的預設連接埠21肯定要開放,但是一般的ftp軟體都是預設先嘗試幾次被動模式PASV串連,在PASV模式串連失敗後,才會進行主動模式PORT串連。
如果我們僅僅開放21連接埠,這裡就有問題了。FTP PASV模式下,還會隨機使用一個空閑連接埠,這個連接埠範圍在20000-30000之間。所以,我們需要把這個連接埠範圍加入防火牆:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT
關於FTP的PASV被動模式和PORT主動模式的說明:
FTP協議要用到兩個TCP串連,一個是命令鏈路,用來在FTP用戶端與伺服器之間傳遞命令;另一個是資料鏈路,用來上傳或下載資料。
FTP協議有兩種工作方式:PORT方式(主動)和PASV方式(被動),中文意思為主動式和被動式。
Port模式:
ftp server:tcp 21 <------client:dynamic
ftp server:tcp 20 ------>client:dynamic
Pasv模式:
ftp server:tcp 21 <----client:dynamic
ftp server:tcp dynamic <----client:dynamic
port模式和pasv模式區別:
1、port模式:這種模式的FTP網管人員比較輕鬆,但相容性較差,比如假如用戶端在區域網路內就會無法登入FTP伺服器。假如有人無法使用port模式登入FTP的話,作為FTP治理員來說,你無論如何努力都是沒有用的。因為這時問題癥結在對方用戶端的防火牆或網關。所以對於一個FTP伺服器來說,盡量要使用pasv模式。
2、pasv模式:這種模式的FTP相容性好,但對FTP治理員來說有一定挑戰性,而且設定的情況比較複雜,以下舉例均以有防火牆的情況來說明:
我們僅以伺服器在公網上的情況舉例:
這是最理想的情況。21連接埠當然要首先開放,然後再作如下設定:
windows系統下serv-u伺服器:
本機伺服器——設定——進階,在"pasv連接埠連接埠範圍"中填入一段不與其它連接埠衝突的範圍,如3001-3020,然後在防火牆中開放3001-3020的連接埠。
Linux系統下PureFTPd伺服器:
把連接埠20000-30000加入到iptables允許連接埠範圍。
如果你沒有設定防火牆允許ftp pasv模式下的連接埠,那麼在用戶端使用ftp軟體串連伺服器的時候,將會出現類似以下的串連過程:
[右] PASV
[右] 227 Entering Passive Mode (42,51,100,50,110,83)
[右] 正在開啟資料連線 IP: 42.51.100.50 連接埠: 28243
[右] 資料 Socket 錯誤: 沒有到主機的通道
[右] 列表 錯誤
[右] PASV
[右] 227 Entering Passive Mode (42,51,100,50,116,60)
[右] 正在開啟資料連線 IP: 42.51.100.50 連接埠: 29756
[右] 資料 Socket 錯誤: 沒有到主機的通道
[右] 列表 錯誤
[右] PASV 模式失敗,正在嘗試 PORT 模式。
[右] 偵聽於連接埠: 16585,正在等候串連。
[右] PORT 192,168,1,6,64,201
[右] 200 PORT command successful
[右] MLSD
[右] 150 Connecting to port 16585
[右] 226-Options: -a -l
[右] 226 3 matches total
[右] 列表完成: 316 位元組 於 0.11 秒 (2.7 KB/秒)
[右] PORT 模式已成功,請更新網站設定檔中的資料連線。
從上面的ftp返回的資訊,我們可以輕易的看出,ftp先進行了2次pasv被動模式串連,由於20000-30000之間的連接埠範圍沒有開放,所以pasv模式串連失敗,最後進行了port主動模式串連才成功。
但是正如我們上面所說,ftp port模式相容性差,假如用戶端在區域網路內就會無法登入FTP伺服器。所以,我們還是應該配置ftp伺服器端的pasv被動模式下的連接埠。