埠敲打是一種透過關閉防火牆埠來保護伺服器的方法,即使您知道這些埠將被使用。當且僅當連線請求提供祕密敲門時,這些端口才按需開啟。
在20世紀20年代,當禁酒令如火如荼的時候,如果你想進入一個酒吧,你必須知道祕密敲門聲,然後正確地敲出它才能進去。
左舷撞擊是一種現代的等價物。如果您希望人們可以訪問您計算機上的服務,但不想開啟您的防火牆到internet,您可以使用埠敲門。它允許您關閉防火牆上允許傳入連線的埠,並在進行預先安排的連線嘗試時自動開啟這些埠。連線嘗試的序列充當祕密敲門。另一個祕密的敲門聲關閉了港口。
港口敲門是一個新鮮的東西,但重要的是要知道這是一個安全的例子,透過默默無聞,這一概念是根本上的缺陷。如何訪問系統的祕密是安全的,因為只有特定組中的人知道它。但是一旦這個祕密被洩露,或者因為它被揭露,被觀察,被猜測,或者被解決了,你的安全就無效了。最好用其他更強大的方法保護伺服器,比如要求SSH伺服器基於金鑰登入。
網路安全最可靠的方法是多層次的,因此,也許埠敲門應該是其中一個層次。層數越多越好,對吧?然而,您可能會認為埠敲擊並沒有給一個經過適當加固的安全系統增加太多(如果有的話)。
網路安全是一個龐大而複雜的話題,但你不應該使用埠攻擊作為你唯一的防禦方式。
相關:如何從Linux Shell建立和安裝SSH金鑰
為了演示埠敲擊,我們將使用它來控制埠22,即SSH埠。我們將使用一個叫做knockd的工具。如果您使用Ubuntu或其他基於Debian的發行版,請使用apt get將此軟體包安裝到您的系統上。在其他Linux發行版上,請改用Linux發行版的包管理工具。
鍵入以下內容:
sudo apt-get install knockd您的系統上可能已經安裝了iptables防火牆,但是您可能需要安裝iptables持久包。它處理儲存的iptable規則的自動載入。
鍵入以下內容進行安裝:
sudo apt-get install iptables-persistent出現IPV4配置螢幕時,按空格鍵接受“是”選項。
在IPv6配置螢幕中再次按空格鍵以接受“是”選項並繼續。
下面的命令告訴iptables允許已建立和正在進行的連線繼續。我們現在將發出另一個命令來關閉SSH埠。
如果我們發出此命令時有人透過SSH連線,我們不希望他們被切斷:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT此命令向防火牆新增一條規則,即:
現在我們可以發出關閉埠的命令:
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT此命令向防火牆新增一條規則,即:
我們必須啟動netfilter持久守護程式。我們可以用這個命令:
sudo systemctl start netfilter-persistent我們希望netfilter persistent經歷一個儲存和重新載入週期,因此它載入並控制iptable規則。
鍵入以下命令:
sudo netfilter-persistent savesudo netfilter-persistent reload現在您已經安裝了實用程式,SSH埠已經關閉(希望沒有終止任何人的連線)。現在,是時候配置祕密敲門了。
您可以編輯兩個檔案來配置knockd。第一個是以下knockd配置檔案:
sudo gedit /etc/knockd.confgedit編輯器開啟並載入knockd配置檔案。
我們將編輯這個檔案以滿足我們的需要。我們感興趣的部分是“openSSH”和“closeSSH”。每個部分中有以下四個條目:
“openSSH”部分可以理解為“必須按此順序在5秒內向埠7000、8000和9000發出TCP連線請求,才能將開啟埠22的命令傳送到防火牆。”
“closeSSH”部分可以理解為“必須按此順序向埠9000、8000和7000發出TCP連線請求,並在5秒內將關閉埠22的命令傳送到防火牆。”
openSSH和closeSSH部分中的“command”條目保持不變,只是有一個引數。它們是這樣組成的:
我們將對檔案進行的編輯在下面以紅色突出顯示:
我們將“序列超時”延長到15秒。這是慷慨的,但如果有人手動觸發連線請求,他可能需要這麼多時間。
在“openSSH”部分,我們將命令中的-A(append)選項更改為-I(insert)。此命令在防火牆規則列表的頂部**新的防火牆規則。如果保留-A選項,它將附加防火牆規則列表並將其放在底部。
根據列表中的每個防火牆規則自上而下測試傳入流量。我們已經有關閉22號埠的規則了。因此,如果傳入流量在看到允許該流量的規則之前根據該規則進行測試,則拒絕連線;如果它首先看到該新規則,則允許連線。
close命令從防火牆規則中刪除openSSH新增的規則。SSH通訊再次由預先存在的“埠22已關閉”規則處理。
進行這些編輯後,儲存配置檔案。
相關:如何使用gedit在Linux上以圖形方式編輯文字檔案
knockd控制檔案更簡單。但是,在深入並編輯它之前,我們需要知道網路連線的內部名稱;要找到它,請鍵入以下命令:
ip addr這臺機器用來研究這篇文章的連線叫做enp0s3。記下連線的名稱。
以下命令編輯knockd控制檔案:
sudo gedit /etc/default/knockd這是gedit中的knockd檔案。
我們需要進行的少數編輯以紅色突出顯示:
我們將“START\u KNOCKD=”條目從0更改為1。
我們還刪除了“KNOCKD#u OPTS=”條目開頭的雜湊,並將“eth1”替換為網路連線的名稱enp0s3。當然,如果您的網路連線是eth1,則不會更改它。
是時候看看這是否管用了。我們將使用以下命令啟動knockd守護程序:
sudo systemctrl start knockd現在,我們跳到另一臺機器上試著連線。我們也在那臺計算機上安裝了knockd工具,不是因為我們想設定埠敲門,而是因為knockd包提供了另一個名為knock的工具。我們將用這臺機器按我們的祕密順序開火併為我們敲門。
使用以下命令將連線請求的祕密序列傳送到IP地址為192.168.4.24的埠敲擊主機上的埠:
knock 192.168.4.24 7000 8000 9000 -d 500這將告訴knock以IP地址192.168.4.24的計算機為目標,依次向埠7000、8000和9000發出連線請求,它們之間的a-d(延遲)為500毫秒。
然後,一個名為“dave”的使用者向192.168.4.24發出SSH請求:
ssh [email protected]他的連線被接受,他輸入密碼,他的遠端會話開始。他的命令提示符從戴夫@諾斯特羅莫至戴夫@howtogeek。要登出遠端計算機,他鍵入:
exit他的命令提示符返回到他的本地計算機。他再次使用了knock,這次,它以埠為目標,以相反的順序關閉遠端計算機上的SSH埠。
knock 192.168.4.24 9000 8000 7000 -d 500誠然,這並不是一個特別富有成效的遠端會話,但它演示了透過埠敲擊開啟和關閉埠,並適合於一個螢幕截圖。
那麼,從另一邊看這是什麼樣子?埠敲門主機上的系統管理員使用以下命令檢視到達系統日誌的新條目:
tail -f /var/log/syslog現在iptables規則列表中關於埠22的唯一規則是我們在開始時鍵入的關閉該埠的規則。所以,埠22現在又關閉了。
那是波特·克林的客廳戲法。把它當作消遣,不要在現實世界中這樣做。或者,如果你必須的話,不要依賴它作為你唯一的安全保障。
...路收音機的選擇,這仍然是一個偉大的專案。它讓您瞭解如何安裝自定義韌體,以及如何欣賞流媒體音樂。 ...
... 如果您想在讀完本文後試用Windows10,請檢視如何在任何計算機上安裝它。 ...
... 想想軟體是如何安裝的。在Windows和Mac上,使用者通常下載請求系統級訪問的EXE、MSI和DMG安裝程式檔案,以便進行必要的安裝更改。這是惡意軟體攻擊的主要途徑。一個錯誤,一個把...
...在於庫珀蒂諾某處的一塊白板上。在會議上,蘋果向專業使用者承諾,沒有什麼可擔心的。將會有一個新的Mac-Pro,甚至可能是iMac-Pro,而Mac在任何地方都不會很快出現。 ...
...,雙引導意味著對硬體元件的訪問更多,一般來說,它比使用虛擬機器更快。虛擬機器通常是系統密集型的,因此在虛擬機器中執行Linux或Windows需要非常強大的規範才能獲得良好的效能。 ...
...碼管理器。 相關:為什麼你應該使用密碼管理器,以及如何開始 你的網頁瀏覽器的密碼管理器還可以 您的web瀏覽器的密碼管理器總比沒有好。沒有額外的軟體,你的網路瀏覽器可以記住你所有的密碼,並安全地在你的裝置之...
...遊戲機,應有盡有。但是你可能不應該在你的專用相機中使用它,至少如果它沒有MicroSD卡插槽的話。 為什麼?這一切都是關於“袖子”,一個小塑膠介面卡,幾乎每一個MicroSD卡在零售商**。如果您需要在沒有專用MicroSD插槽的膝...
...案。 最後,我們單擊了“高階選項”,並告訴Windows無論如何都要啟動。什麼都沒發生。在電腦再次啟動到自動修復模式之前,我們只看到了一秒鐘的黑屏。很明顯,啟動Windows所需的重要檔案都沒有了,作業系統甚至無法啟動。...