別讓黑客輕易入侵:端口敲門,讓你的SSH固若金湯!
在網(wǎng)絡(luò)安全領(lǐng)域,SSH(Secure Shell)是一種常用的加密協(xié)議,用于在不安全的網(wǎng)絡(luò)上進行安全的遠程登錄和其他安全網(wǎng)絡(luò)服務(wù)。然而,SSH服務(wù)默認監(jiān)聽的22端口常常成為攻擊者的目標,他們會使用各種方法嘗試破解SSH密碼,從而獲得系統(tǒng)的控制權(quán)。為了保護SSH服務(wù),除了基本的強密碼和雙因素認證外,還有一種名為“端口敲門”的技術(shù)可以顯著提高SSH的安全性。
什么是端口敲門?
端口敲門(Port Knocking)是一種安全措施,它通過在防火墻上動態(tài)打開端口來允許合法用戶訪問受保護的服務(wù)。具體來說,端口敲門技術(shù)要求用戶在嘗試連接到SSH服務(wù)之前,按照預(yù)定義的順序訪問一系列隱藏端口。這種技術(shù)通過在網(wǎng)絡(luò)層添加額外的驗證步驟,有效地隱藏了實際的服務(wù)端口,并減少了被暴力破解的風險。
端口敲門的工作原理
- 預(yù)定義端口序列:管理員設(shè)定一組特定的端口序列,例如,訪問端口1111、2222和3333,順序和時間間隔都非常重要。
- 防火墻配置:防火墻初始配置為拒絕所有進入的SSH連接請求。
- 敲門事件:用戶在嘗試SSH連接之前,必須按照正確的順序和時間間隔訪問預(yù)定義的端口序列。
- 防火墻規(guī)則更新:當防火墻檢測到正確的端口敲門序列時,它會暫時開放SSH端口(如22端口),允許該用戶的IP地址連接SSH服務(wù)。
- 連接和關(guān)閉:用戶成功連接SSH后,防火墻可以設(shè)置為在一段時間后自動關(guān)閉SSH端口,以恢復(fù)安全狀態(tài)。
端口敲門的優(yōu)點
- 隱藏性:由于服務(wù)端口關(guān)閉,因此對外部觀察者來說,系統(tǒng)上可能存在的服務(wù)是不可見的。
- 安全性:不會直接暴露真實的服務(wù)端口,只有在正確的端口敲擊序列被觸發(fā)后才會打開相應(yīng)的端口,這增加了系統(tǒng)的安全性。
- 防止掃描攻擊:由于服務(wù)端口一直處于關(guān)閉狀態(tài),因此對端口的掃描攻擊幾乎沒有意義。
實現(xiàn)端口敲門
實現(xiàn)端口敲門的方法有很多種,下面介紹使用 knockd 工具實現(xiàn)端口敲門的基本步驟:
1.安裝 knockd
在大多數(shù)Linux發(fā)行版上,你可以通過包管理器安裝 knockd:
sudo apt-get install knockd
2.配置 knockd
安裝完成后,編輯 knockd 的配置文件,通常位于/etc/knockd.conf,添加你的敲門序列和相應(yīng)的動作,例如:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 1234,5678,9012
seq_timeout = 15
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9012,5678,1234
seq_timeout = 15
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
我們需要修改的另一個配置是 /etc/default/knockd,例如:
# control if we start knockd at init or not
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1
# command line options
KNOCKD_OPTS="-i eth0"
找到行START_KNOCKD=0 。取消注釋,并將值設(shè)置為 1。接下來,轉(zhuǎn)到取消KNOCKD_OPTS="-i eth1"注釋行,并將默認值替換為系統(tǒng)的活動網(wǎng)絡(luò)接口,要檢查您的網(wǎng)絡(luò)接口,只需運行 ip addr或 ifconfig命令。
3.啟動 knockd
配置完成后,啟動 knockd 服務(wù),并設(shè)置開機啟動。
sudo systemctl start knockd
sudo systemctl enable knockd
啟動成功如下圖:
4.使用端口敲門
要使用端口敲門,可以使用 knock 命令行工具或其他類似工具:
knock your.server.com 1234 5678 9012
完成敲門后,你的IP地址將被允許訪問SSH服務(wù)。
現(xiàn)在通過關(guān)閉端口進行測試,先通過192.168.31.103 9999 8888 7777關(guān)閉SSH端口。如下圖所示:
現(xiàn)在要登錄已經(jīng)被完美阻擊了,如下圖:
要想登錄就要先敲門,輸入正確的敲門端口序列,如下:
knock 192.168.31.103 7777 8888 9999
成功敲門后,SSH端口就處于開放中,這時,我們就可以通過SSH登錄到服務(wù)器,如下圖所示:
其他服務(wù)器服務(wù)器想登錄該服務(wù)器,要先進行敲門才能正常訪問SSH端口。當客戶端正確敲門后,服務(wù)端會再防火墻插入一條策略。如下圖:
結(jié)論
端口敲門技術(shù)通過增加一個額外的驗證步驟,有效地提高了SSH服務(wù)的安全性。它不僅隱藏了實際的服務(wù)端口,還減少了被暴力攻擊的風險。雖然端口敲門并不能替代強密碼和雙因素認證等其他安全措施,但它作為一種額外的保護層,可以顯著增強系統(tǒng)的安全性。通過合理配置和使用端口敲門,你可以大大降低SSH服務(wù)被攻擊的概率,從而保護你的網(wǎng)絡(luò)資源和數(shù)據(jù)安全。