Letmein 是一個簡單的連接埠敲擊器,具有簡單且安全的身份驗證機制。它可用於強化對 SSH、VPN、IMAP 等服務的預先驗證攻擊。
Letmein 將伺服器上的服務隱藏在敲擊身份驗證屏障後面,以減少服務的攻擊面。除非敲門認證成功,否則該服務將無法存取。如果敲門成功,letmeind 伺服器只會為執行敲門的用戶端 IP 位址開啟被敲門的連接埠。具有不同 IP 位址的電腦仍然無法存取受保護的服務。
無法成功驗證敲門序列的電腦將無法存取受保護的服務。他們將透過提供的範例nftables.conf
在受保護的服務連接埠上收到 ICMP reject
。 (您也可以決定將資料包drop
到nftables.conf
中)。
Letmein 需要一個基於nftables
防火牆。它不適用於iptables
。如果您使用基於iptables
的防火牆,請在安裝 letmein 之前轉換為nftables
。互聯網上有關於如何執行此操作的說明。這並不像聽起來那麼難和那麼多工作。 :)
letmein 控制通訊本身預設為 TCP 連接埠 5800,但可以設定為任何 TCP 或 UDP 連接埠。如果您選擇 UDP 連接埠作為控制連接埠並配置 control-error-policy=basic-auth,則 letmein 服務本身將以隱身模式運行,並且不會回應未經驗證的傳入訊息。
首頁
Git 儲存庫
Github 儲存庫
在伺服器上安裝 letmein 伺服器軟體(請參閱下面的部分)。
在用戶端上安裝 letmein 用戶端軟體(請參閱下方的部分)。
請閱讀該專案提供的 nftables.conf 範例設定檔。需要將 letmein 特定輸入鏈新增至現有的nftables
配置中。相應地修改您的nftables.conf
。
使用下列客戶端命令產生要安裝在伺服器和用戶端上的共用金鑰和使用者識別碼:
letmein gen-key -u 00000000
gen-key 指令會將產生的金鑰字串列印到控制台。預設情況下,這將為使用者識別碼00000000
產生一個安全隨機金鑰。如果需要,您可以手動編輯使用者標識符,也可以保持原樣。
將產生的字串(使用者識別碼和共用金鑰)新增至/opt/letmein/etc/letmeind.conf
中的伺服器設定。將產生的金鑰字串與使用者識別碼一起放入設定檔的[KEYS]
部分。
將相同的產生字串(使用者識別碼和共用金鑰)新增至/opt/letmein/etc/letmein.conf
中的用戶端設定。將產生的金鑰字串與使用者識別碼一起放入設定檔的[KEYS]
部分。
在伺服器中建立一個resource
,描述可以開啟的sshd
連接埠。在伺服器設定檔/opt/letmein/etc/letmeind.conf
的[RESOURCES]
部分中,必須指定所有可能開啟的連接埠。資源由資源標識符和連接埠標識符組成,如下所示:
[RESOURCES]
00000022 = port: 22
資源識別碼是一個 8 位元十六進制數。在此範例中,它是 22(十六進位),但它可以是任何數字。伺服器和客戶端上的號碼必須相同。 port:
指定可敲開的連接埠號碼(十進位)。
將具有相同資源標識符和相同連接埠號碼的相同資源新增至/opt/letmein/etc/letmein.conf
中的用戶端設定。
重啟letmein伺服器:
systemctl restart letmeind.service
現在從nftables.conf
防火牆配置中刪除靜態sshd
連接埠 (22) accept
。敲擊認證成功後,Letmein 會動態地將這樣的規則安裝到 Letmein 輸入鏈中。然後重新啟動nftables:
systemctl restart nftables.service
完畢!您現在應該能夠開啟伺服器上的sshd
連接埠:
# This must fail! No successful knock authentication, yet.
# If this does not fail, check if you have removed the sshd accept rule from nftables.conf.
ssh your-server.com
# Knock-open port 22 (sshd) on the server using user-id/key 00000000:
# (You do not have to specify -u 00000000 if that is your default user (see config).)
letmein knock -u 00000000 your-server.com 22
# Now you should be able to ssh into your server successfully:
ssh your-server.com
要在使用 ssh 連線之前自動敲入端口,您可以將Match exec
規則新增至~/.ssh/config
檔案:
Match host your-server.com exec "letmein knock -u 00000000 your-server.com 22"
有關如何建置和安裝 letmein 的更多信息,請參閱安裝說明。
如果您想從系統中完全刪除letmein,請參閱卸載說明。
客戶端應用程式letmein
是可移植的並且應該在所有主要平台上運行。測試過的平台有:
伺服器應用程式letmeind
僅適用於Linux,因為它僅支援nftables
作為防火牆後端。
有關如何配置letmein伺服器和客戶端的詳細信息,請參閱配置文件。
請注意,設定檔中的使用者識別碼和資源識別碼透過網路傳輸,未以明文加密。
確保使用者識別碼和資源標識符不包含任何私人資訊。
這些標識符只是用於管理不同letmein
密鑰、安裝和設定的抽象標識。
Letmein的主要設計目標是:
-4
和-6
客戶端命令列選項來調整此行為。有關安全性和報告漏洞的更多信息,請參閱letmein的安全文件。
版權所有 (c) 2024 麥可‧布施 [email protected]
根據您的選擇,根據 Apache 許可證版本 2.0 或 MIT 許可證進行許可。