如何在linux上使用埠敲打(以及為什麼不應該)

埠敲打是一種透過關閉防火牆埠來保護伺服器的方法,即使您知道這些埠將被使用。當且僅當連線請求提供祕密敲門時,這些端口才按需開啟。...

埠敲打是一種透過關閉防火牆埠來保護伺服器的方法,即使您知道這些埠將被使用。當且僅當連線請求提供祕密敲門時,這些端口才按需開啟。

左舷敲擊是“祕密敲擊”

在20世紀20年代,當禁酒令如火如荼的時候,如果你想進入一個酒吧,你必須知道祕密敲門聲,然後正確地敲出它才能進去。

左舷撞擊是一種現代的等價物。如果您希望人們可以訪問您計算機上的服務,但不想開啟您的防火牆到internet,您可以使用埠敲門。它允許您關閉防火牆上允許傳入連線的埠,並在進行預先安排的連線嘗試時自動開啟這些埠。連線嘗試的序列充當祕密敲門。另一個祕密的敲門聲關閉了港口。

港口敲門是一個新鮮的東西,但重要的是要知道這是一個安全的例子,透過默默無聞,這一概念是根本上的缺陷。如何訪問系統的祕密是安全的,因為只有特定組中的人知道它。但是一旦這個祕密被洩露,或者因為它被揭露,被觀察,被猜測,或者被解決了,你的安全就無效了。最好用其他更強大的方法保護伺服器,比如要求SSH伺服器基於金鑰登入。

網路安全最可靠的方法是多層次的,因此,也許埠敲門應該是其中一個層次。層數越多越好,對吧?然而,您可能會認為埠敲擊並沒有給一個經過適當加固的安全系統增加太多(如果有的話)。

網路安全是一個龐大而複雜的話題,但你不應該使用埠攻擊作為你唯一的防禦方式。

相關:如何從Linux Shell建立和安裝SSH金鑰

安裝knockd

為了演示埠敲擊,我們將使用它來控制埠22,即SSH埠。我們將使用一個叫做knockd的工具。如果您使用Ubuntu或其他基於Debian的發行版,請使用apt get將此軟體包安裝到您的系統上。在其他Linux發行版上,請改用Linux發行版的包管理工具。

鍵入以下內容:

sudo apt-get install knockd

如何在linux上使用埠敲打(以及為什麼不應該)

您的系統上可能已經安裝了iptables防火牆,但是您可能需要安裝iptables持久包。它處理儲存的iptable規則的自動載入。

鍵入以下內容進行安裝:

sudo apt-get install iptables-persistent

如何在linux上使用埠敲打(以及為什麼不應該)

出現IPV4配置螢幕時,按空格鍵接受“是”選項。

如何在linux上使用埠敲打(以及為什麼不應該)

在IPv6配置螢幕中再次按空格鍵以接受“是”選項並繼續。

如何在linux上使用埠敲打(以及為什麼不應該)

下面的命令告訴iptables允許已建立和正在進行的連線繼續。我們現在將發出另一個命令來關閉SSH埠。

如果我們發出此命令時有人透過SSH連線,我們不希望他們被切斷:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

如何在linux上使用埠敲打(以及為什麼不應該)

此命令向防火牆新增一條規則,即:

  • -A:將規則附加到防火牆規則表。也就是說,新增到底部。
  • 輸入:這是關於傳入連線的規則。
  • -m conntrack:防火牆規則作用於與規則中的條件匹配的網路流量(資料包)。m引數使iptables使用額外的包匹配模組在這種情況下,名為conntrack的模組與核心的網路連線跟蹤功能一起工作。
  • –cstate ESTABLISHED,RELATED:指定規則將應用的連線型別,即已建立的和相關的連線。已建立的連線是正在進行的連線。相關連線是由於已建立連線的操作而建立的連線。可能連線的某個人想要下載一個檔案;這可能發生在主機啟動的新連線上。
  • -j ACCEPT:如果流量符合規則,則跳轉到防火牆中的ACCEPT目標。換句話說,流量被接受並允許透過防火牆。

現在我們可以發出關閉埠的命令:

sudo iptables -A INPUT -p tcp --dport 22 -j REJECT

如何在linux上使用埠敲打(以及為什麼不應該)

此命令向防火牆新增一條規則,即:

  • -A:將規則附加到防火牆規則表中,即新增到底部。
  • 輸入:此規則與傳入連線有關。
  • -p tcp:此規則適用於使用傳輸控制協議的通訊量。
  • –dport 22:此規則特別適用於以埠22(SSH埠)為目標的TCP通訊。
  • -拒絕:如果流量符合規則,跳轉到防火牆中的拒絕目標。因此,如果流量被拒絕,就不允許透過防火牆。

我們必須啟動netfilter持久守護程式。我們可以用這個命令:

sudo systemctl start netfilter-persistent

如何在linux上使用埠敲打(以及為什麼不應該)

我們希望netfilter persistent經歷一個儲存和重新載入週期,因此它載入並控制iptable規則。

鍵入以下命令:

sudo netfilter-persistent save

如何在linux上使用埠敲打(以及為什麼不應該)

sudo netfilter-persistent reload

如何在linux上使用埠敲打(以及為什麼不應該)

現在您已經安裝了實用程式,SSH埠已經關閉(希望沒有終止任何人的連線)。現在,是時候配置祕密敲門了。

配置knockd

您可以編輯兩個檔案來配置knockd。第一個是以下knockd配置檔案:

sudo gedit /etc/knockd.conf

如何在linux上使用埠敲打(以及為什麼不應該)

gedit編輯器開啟並載入knockd配置檔案。

如何在linux上使用埠敲打(以及為什麼不應該)

我們將編輯這個檔案以滿足我們的需要。我們感興趣的部分是“openSSH”和“closeSSH”。每個部分中有以下四個條目:

  • 順序:開啟或關閉埠22時必須訪問的埠的順序。預設埠為7000、8000和9000以開啟埠,9000、8000和7000以關閉埠。您可以更改這些埠或向列表中新增更多埠。出於我們的目的,我們將堅持預設值。
  • seq\ u timeout:某人必須訪問埠以觸發其開啟或關閉的時間段。
  • 命令:觸發開啟或關閉操作時傳送到iptables防火牆的命令。這些命令要麼將規則新增到防火牆(開啟埠),要麼將其取出(關閉埠)。
  • tcpflags:每個埠在祕密序列中必須接收的資料包的型別。SYN(synchronize)資料包是TCP連線請求中的第一個資料包,稱為三方握手。

“openSSH”部分可以理解為“必須按此順序在5秒內向埠7000、8000和9000發出TCP連線請求,才能將開啟埠22的命令傳送到防火牆。”

“closeSSH”部分可以理解為“必須按此順序向埠9000、8000和7000發出TCP連線請求,並在5秒內將關閉埠22的命令傳送到防火牆。”

防火牆規則

openSSH和closeSSH部分中的“command”條目保持不變,只是有一個引數。它們是這樣組成的:

  • -答:將規則附加到防火牆規則列表的底部(對於openSSH命令)。
  • -D:從防火牆規則列表中刪除命令(對於closeSSH命令)。
  • 輸入:此規則與傳入的網路流量有關。
  • -s%IP%:請求連線的裝置的IP地址。
  • -p:網路協議;在這個例子中,它是TCP。
  • –dport:目標埠;在我們的示例中,它是埠22。
  • -j ACCEPT:跳轉到防火牆內的ACCEPT目標。換言之,讓資料包透過其餘規則而不對其執行操作。

knockd配置檔案編輯

我們將對檔案進行的編輯在下面以紅色突出顯示:

如何在linux上使用埠敲打(以及為什麼不應該)

我們將“序列超時”延長到15秒。這是慷慨的,但如果有人手動觸發連線請求,他可能需要這麼多時間。

在“openSSH”部分,我們將命令中的-A(append)選項更改為-I(insert)。此命令在防火牆規則列表的頂部**新的防火牆規則。如果保留-A選項,它將附加防火牆規則列表並將其放在底部。

根據列表中的每個防火牆規則自上而下測試傳入流量。我們已經有關閉22號埠的規則了。因此,如果傳入流量在看到允許該流量的規則之前根據該規則進行測試,則拒絕連線;如果它首先看到該新規則,則允許連線。

close命令從防火牆規則中刪除openSSH新增的規則。SSH通訊再次由預先存在的“埠22已關閉”規則處理。

進行這些編輯後,儲存配置檔案。

相關:如何使用gedit在Linux上以圖形方式編輯文字檔案

knockd控制檔案編輯

knockd控制檔案更簡單。但是,在深入並編輯它之前,我們需要知道網路連線的內部名稱;要找到它,請鍵入以下命令:

ip addr

如何在linux上使用埠敲打(以及為什麼不應該)

這臺機器用來研究這篇文章的連線叫做enp0s3。記下連線的名稱。

以下命令編輯knockd控制檔案:

sudo gedit /etc/default/knockd

如何在linux上使用埠敲打(以及為什麼不應該)

這是gedit中的knockd檔案。

如何在linux上使用埠敲打(以及為什麼不應該)

我們需要進行的少數編輯以紅色突出顯示:

如何在linux上使用埠敲打(以及為什麼不應該)

我們將“START\u KNOCKD=”條目從0更改為1。

我們還刪除了“KNOCKD#u OPTS=”條目開頭的雜湊,並將“eth1”替換為網路連線的名稱enp0s3。當然,如果您的網路連線是eth1,則不會更改它。

證據就在布丁裡

是時候看看這是否管用了。我們將使用以下命令啟動knockd守護程序:

sudo systemctrl start knockd

如何在linux上使用埠敲打(以及為什麼不應該)

現在,我們跳到另一臺機器上試著連線。我們也在那臺計算機上安裝了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

如何在linux上使用埠敲打(以及為什麼不應該)

誠然,這並不是一個特別富有成效的遠端會話,但它演示了透過埠敲擊開啟和關閉埠,並適合於一個螢幕截圖。

那麼,從另一邊看這是什麼樣子?埠敲門主機上的系統管理員使用以下命令檢視到達系統日誌的新條目:

tail -f /var/log/syslog

如何在linux上使用埠敲打(以及為什麼不應該)

  • 您將看到三個openSSH條目。當遠端敲打實用程式以每個埠為目標時,會引發這些問題。
  • 當觸發序列的所有三個階段都滿足時,會記錄一個寫著“OPEN SESAME”的條目
  • 傳送將規則**iptables規則列表的命令。它允許透過埠22上的SSH從給出正確祕密敲門(192.168.4.23)的PC的特定IP地址進行訪問。
  • 使用者“dave”只連線幾秒鐘,然後斷開連線。
  • 您將看到三個closeSSH條目。當遠端敲打實用程式將每個埠作為目標時,就會引發這些問題,它會通知埠敲打主機關閉埠22。
  • 在所有三個階段都被觸發之後,我們再次收到“opensesame”訊息。命令被髮送到防火牆以刪除規則。(關閉港口時為什麼不“關閉芝麻”?誰知道呢?)

現在iptables規則列表中關於埠22的唯一規則是我們在開始時鍵入的關閉該埠的規則。所以,埠22現在又關閉了。

敲它的頭

那是波特·克林的客廳戲法。把它當作消遣,不要在現實世界中這樣做。或者,如果你必須的話,不要依賴它作為你唯一的安全保障。

  • 發表於 2021-04-03 02:18
  • 閱讀 ( 52 )
  • 分類:網際網路

你可能感興趣的文章

12種重用舊路由器的有用方法(不要把它扔掉!)

...路收音機的選擇,這仍然是一個偉大的專案。它讓您瞭解如何安裝自定義韌體,以及如何欣賞流媒體音樂。 ...

  • 發佈於 2021-03-10 20:12
  • 閲讀 ( 76 )

別退出windows!繼續使用它的12大理由

... 如果您想在讀完本文後試用Windows10,請檢視如何在任何計算機上安裝它。 ...

  • 發佈於 2021-03-12 00:14
  • 閲讀 ( 57 )

linux傳輸檔案的速度比windows快嗎?

...單元大小(或群集大小)。為了管理這些叢集,作業系統使用檔案系統。 ...

  • 發佈於 2021-03-12 06:54
  • 閲讀 ( 57 )

不,linux不需要防病毒或防火牆

... 想想軟體是如何安裝的。在Windows和Mac上,使用者通常下載請求系統級訪問的EXE、MSI和DMG安裝程式檔案,以便進行必要的安裝更改。這是惡意軟體攻擊的主要途徑。一個錯誤,一個把...

  • 發佈於 2021-03-12 20:15
  • 閲讀 ( 53 )

在linux上保護隱私的10大技巧

... 您可以看到如何容易地開始形成一個強大的密碼,可以很容易記住和複雜的同時。 ...

  • 發佈於 2021-03-13 08:16
  • 閲讀 ( 59 )

為什麼你現在不應該買桌上型電腦

...在於庫珀蒂諾某處的一塊白板上。在會議上,蘋果向專業使用者承諾,沒有什麼可擔心的。將會有一個新的Mac-Pro,甚至可能是iMac-Pro,而Mac在任何地方都不會很快出現。 ...

  • 發佈於 2021-03-14 14:45
  • 閲讀 ( 49 )

為什麼應該(不應該)雙引導linux的7個原因

...,雙引導意味著對硬體元件的訪問更多,一般來說,它比使用虛擬機器更快。虛擬機器通常是系統密集型的,因此在虛擬機器中執行Linux或Windows需要非常強大的規範才能獲得良好的效能。 ...

  • 發佈於 2021-03-17 06:05
  • 閲讀 ( 54 )

為什麼不應該使用web瀏覽器的密碼管理器

...碼管理器。 相關:為什麼你應該使用密碼管理器,以及如何開始 你的網頁瀏覽器的密碼管理器還可以 您的web瀏覽器的密碼管理器總比沒有好。沒有額外的軟體,你的網路瀏覽器可以記住你所有的密碼,並安全地在你的裝置之...

  • 發佈於 2021-04-02 23:00
  • 閲讀 ( 53 )

為什麼不應該在單反相機或無鏡相機中使用microsd卡

...遊戲機,應有盡有。但是你可能不應該在你的專用相機中使用它,至少如果它沒有MicroSD卡插槽的話。 為什麼?這一切都是關於“袖子”,一個小塑膠介面卡,幾乎每一個MicroSD卡在零售商**。如果您需要在沒有專用MicroSD插槽的膝...

  • 發佈於 2021-04-04 02:58
  • 閲讀 ( 40 )

什麼是system32目錄?(以及為什麼不應該刪除它)

...案。 最後,我們單擊了“高階選項”,並告訴Windows無論如何都要啟動。什麼都沒發生。在電腦再次啟動到自動修復模式之前,我們只看到了一秒鐘的黑屏。很明顯,啟動Windows所需的重要檔案都沒有了,作業系統甚至無法啟動。...

  • 發佈於 2021-04-06 14:34
  • 閲讀 ( 52 )
bppbfdx
bppbfdx

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦