如何使用knockd讓黑客看不見(jiàn)你的服務(wù)器?
譯文【51CTO.com快譯】如果你有一臺(tái)公眾可訪(fǎng)問(wèn)的服務(wù)器,黑客可以輕松掃描其IP地址,查找服務(wù)器上的開(kāi)放端口(尤其是用于SSH的端口22)。將服務(wù)器隱藏起來(lái)、不讓黑客看見(jiàn)的一種方法是使用knockd。knockd是一種端口試探服務(wù)器工具。它偵聽(tīng)以太網(wǎng)或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客戶(hù)軟件通過(guò)向服務(wù)器上的端口發(fā)送TCP或數(shù)據(jù)包來(lái)啟動(dòng)端口命中。
我們?cè)诒疚闹袑⒔榻B如何使用knockd來(lái)隱藏在Linux服務(wù)器上運(yùn)行的服務(wù)。
1.在Linux服務(wù)器上安裝knockd
knockd在大多數(shù)發(fā)行版的代碼倉(cāng)庫(kù)中都有。在基于Debian/Ubuntu/Ubuntu的服務(wù)器上,可以使用apt-get命令來(lái)安裝knockd。
- sudo apt-get install knockd
如果是Fedora、CentOS或REHL用戶(hù),可以使用yum命令:
- yum install knockd
2. 安裝和配置Iptables
如果你的服務(wù)器上還沒(méi)有安裝Iptables,請(qǐng)立即安裝。
- sudo apt-get install iptables iptables-persistent
程序包iptables-persistent接手自動(dòng)加載已保存的iptables的任務(wù)。
接下來(lái),你需要通過(guò)iptables允許已建立的連接以及當(dāng)前會(huì)話(huà)。使用下列命令來(lái)完成這項(xiàng)任務(wù):
- iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
接下來(lái),需要阻止通向端口22 SSH的所有入站連接。
- iptables -A INPUT -p tcp --dport 22 -j REJECT
不妨通過(guò)下列命令來(lái)保存防火墻規(guī)則:
- netfilter-persistent save
- netfilter-persistent reload
可以通過(guò)由你的計(jì)算機(jī)連接到服務(wù)器,進(jìn)一步檢查是否確實(shí)阻止了端口22。
- ssh my-server-ip
3. 配置knockd
現(xiàn)在是時(shí)候配置knockd默認(rèn)設(shè)置了。它位于“/etc/knockd.conf”。為此,請(qǐng)使用下列命令,切換到knockd配置文件:
- cd /etc
- sudo leafpad knockd.conf
為了便于說(shuō)明,我使用leafpad編輯器。在你的服務(wù)器上,你可以使用nano或Vi。
屏幕截圖顯示了knockd配置文件。
- Options:你可以在此字段中找到knockd的配置選項(xiàng)。正如你在上面屏幕截圖中所看到,它使用syslog進(jìn)行日志記錄。
- OpenSSH:該字段包括序列、序列超時(shí)、命令和tcp標(biāo)志。
- Sequence:它顯示可由客戶(hù)軟件用作啟動(dòng)操作的模式的端口序列。
- Sequence timeout:它顯示分配給客戶(hù)端以完成所需的端口試探序列的總時(shí)間。
- command:這是一旦客戶(hù)軟件的試探序列與序列字段中的模式,執(zhí)行的命令。
- TCP_FLAGS:這是必須針對(duì)客戶(hù)軟件發(fā)出的試探設(shè)置的標(biāo)志。如果標(biāo)志不正確,但試探模式正確,不會(huì)觸發(fā)動(dòng)作。
4. 啟用并啟動(dòng)knockd服務(wù)
使用下列程序啟用“/etc/default/knock”中的knockd服務(wù)。
將值從0改為1,如屏幕截圖所示:
- START_KNOCKD = 1
之后,保存并關(guān)閉文件“/etc/default/knockd”。
接下來(lái),可以使用下列命令之一來(lái)啟動(dòng)knockd服務(wù):
- sudo service knockd start
或者:
- sudo systemctl start knockd
5. 是時(shí)候試探測(cè)試你的Linux服務(wù)器了
現(xiàn)在是時(shí)候測(cè)試你的Linux SSH服務(wù)器了。要想在指定的IP地址處打開(kāi)端口22,請(qǐng)?jiān)谟?jì)算機(jī)上使用下列命令。(你還需要在計(jì)算機(jī)上安裝knockd)
- knock -v my-server-ip 7000 8000 9000
需要將“my-server-ip”換成服務(wù)器的IP地址。
現(xiàn)在可以使用下列命令連接到端口22 SSH:
- ssh my-server-ip
完成你通過(guò)端口22想要完成的任何操作后,可以使用下列命令關(guān)閉該端口:
- knock -v my-server-ip 9000 8000 7000
結(jié)束語(yǔ)
使用knockd,你盡可放心:你的SSH服務(wù)器是安全的,并且遠(yuǎn)離使用復(fù)雜掃描工具的攻擊者。此外,你還完全掌控自己的SSH服務(wù)器。
原文標(biāo)題:How to Make Your Server Invisible with Knockd,作者:Michael Aboagye
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】





























