Ubuntu

我的 Dante SOCKS5 配置是否“安全”?

  • November 18, 2019

我意識到“安全”是一個非常重要的定義。

我需要連接到 SFTP 日誌伺服器(僅限使用者/密碼,沒有 ssh 密鑰)。

SFTP 伺服器有 IP 白名單,我所有的伺服器 IP 都是動態的。我想設置一個帶有靜態 IP 的 SOCKS5 代理伺服器,它允許我從我的伺服器連接並代理 SSH 連接。不幸的是,我無法將防火牆中的傳入 IP 列入白名單,因為我使用的是 Heroku,它使用 Amazon 上的任何 IP

我主要關心這個代理伺服器是對外開放的,我想確保我所做的步驟是好的,或者我是否需要做更多的事情。我知道安全性可以朝著極端的方向發展,但我不是超級先進,所以我想要一點中間立場,這對 99.95% 的應用程序都有好處。

這是我所做的步驟,沒有別的(所以沒有額外的配置或軟體安裝等)。

  1. 在 Google Cloud 上創建一個實例,使用Ubuntu 18.04,給它一個靜態 IP
  2. tcp:1080使用 Google Cloud Web 界面在防火牆中打開埠,阻止80443
  3. 使用以下命令創建一個新使用者,使用非常安全的密碼(長度為 24 個字元,包括字母和數字)
useradd -M -s /usr/sbin/nologin -p $(openssl passwd -1 PASSWORD) USERNAME 
  1. 安裝 Dante,配置如下(ens4來自執行ifconfig並獲取適配器名稱。我猜這就是Google云所說的):
logoutput: /var/log/danted.log

internal: ens4 port = 1080
external: ens4

socksmethod: username
clientmethod: none

user.privileged: root
user.unprivileged: nobody
# comment out user.libwrap lines

timeout.io: 43200

client pass {
 from: 0.0.0.0/0 to: 0.0.0.0/0
 log: error
}

socks pass {
 from: 0.0.0.0/0 to: logging-service.example.com
 log: error
}

以下是我的主要擔憂:

  1. 打開1080埠可以嗎?有些人說這很糟糕,但他們將我連結到一些我不理解的東西,比如“netplan.io”。如果這是一個壞主意,我可以做一個簡單的解決方案嗎?
  2. 我注意到您可以在and塊method內使用關鍵字…我應該在那裡放一些東西嗎?還是它使用上面的和下面的內容?client``socks``socksmethod``clientmethod
  3. 我是否應該添加一些阻止失敗的登錄嘗試的內容(我認為它稱為fail2ban?)
  4. 我確實在元件上添加了一個限制,socks只允許連接到logging-service.example.com,儘管我認為如果有人闖入到那一點是非常錯誤的。
  5. 我使用的net-ssh/庫也支持“跳轉”代理,這樣更安全嗎?net-sftp
  6. 讓世界只連接到埠 1080 並嘗試猜測使用者名/密碼似乎很奇怪。我想這使它成為最薄弱的環節。只要密碼長且安全,還有什麼可以加強這個最薄弱的環節嗎?

還有其他想法可以使這更安全嗎?

1)不確定他們在說什麼。顯然,您需要打開一個埠,並且只要您的伺服器可以訪問該埠,該埠號是什麼並沒有太大區別。

然而 1080 是標準的 socks 埠,所以如果有人進行埠掃描並且他們看到埠 1080 是打開的,他們的第一個猜測可能是在該埠上執行了一個 socks 伺服器,他們將使用他們的“socks 攻擊工具”攻擊它. 相反,如果您讓 Dante 在埠 443 上偵聽,也許他們最初會猜測它是一個 https 伺服器,並首先使用他們的“https 攻擊工具”對其進行攻擊。也就是說,它可能會使攻擊者有點混淆。

2)它將使用上面的內容。僅當上面是幾個方法/客戶端方法的列表並且您希望將某些規則限制為該列表的子集時,將其放入其中才有用。

3)不知道“fail2ban”是什麼,但你可能想為此制定規則。如果您隨後在 Dante 日誌文件中註意到來自 IP 地址“k”的一百個被阻止的請求,那麼為該 IP 地址添加“客戶端阻止”規則可能是明智的做法,而不是讓它繼續玩猜謎遊戲。

  1. 有道理。

5)是的,如果您可以使其在您的案例中工作。

6)也許不是。然而,一些可能性可能是:

  • 使用“方法:gssapi”而不是“方法:使用者名”。這更加安全(沒有通過網路向 Dante 發送明文使用者名/密碼),但也更難以配置,並且涉及設置 Kerberos。
  • 如果您從執行 identd/rfc931-servers 連接到 Dante 的伺服器,您可以將“clientmethod:none”更改為“clientmethod:rfc931”,並為此在 Dante 主機上添加一個額外的“identd”使用者名。

將作為一種雙因素身份驗證,其中有人必須猜測 Dante 將從哪些 identd 使用者名接受連接,以及 Dante 將從這些連接接受哪些使用者名/密碼。然而,這也是一個明文協議,所以如果有人可以嗅探網路流量,他們可以看到 identd 名稱,以及您的襪子使用者名和密碼。

引用自:https://serverfault.com/questions/986024