Security

我可以在通過 SSH 傳輸網路流量時禁用互動式 shell 訪問嗎?

  • April 13, 2020

我正在考慮實施 SSH 隧道作為一種廉價的 VPN 解決方案,供外部使用者訪問僅面向 Intranet 的 Web 應用程序。

我目前正在使用安裝了 OpenSSH 的 Ubuntu Server 10.04.1 64 位。

我在 Windows 機器上使用 Putty 在本地埠上創建到我的 ssh 伺服器的隧道。

start putty -D 9999 mysshserver.com -N

然後我使用告訴 Firefox 在 localhost:9999 上使用 SOCKS 代理。

-N 標誌將從客戶端禁用互動式 shell。有沒有辦法在伺服器端做到這一點?

除了禁用root訪問,使用rsa密鑰認證,更改預設埠;為此,我應該遵循任何其他明顯的安全做法嗎?我的目標是簡單地能夠隧道網路流量。

四年後,這個答案值得更新。雖然最初我使用authorized_keys自己並且可能在某些特定情況下仍會使用它,但您也可以使用中央sshd_config伺服器配置文件。

sshd_config

proxy-only您可以(針對您的特定案例)指定一個組,例如Match單個使用者。在sshd_config. 這是在全域設置和撤銷、重複或優化全域設置中給出的一些設置之後完成的。

注意:中使用的一些語法/指令sshd_config(5)記錄manssh_config(5). 特別要確保閱讀PATTERNS部分ssh_config(5)

對於一個組,這意味著您的Match塊將像這樣開始:

Match group proxy-only

您可以Match使用以下條件:UserGroupHostLocalAddress和。要匹配多個標準,只需用逗號分隔標準模式對(如上)。LocalPort``Address``group proxy-only

在這樣的塊中,為了簡潔起見(但不必如此),傳統上會相應地縮進(但不必如此),然後您可以聲明要應用於使用者組的設置,而無需編輯authorized_keys該組成員的每個文件。

no-pty設置 fromauthorized_keys將由設置鏡像PermitTTY no,並將command="/sbin/nologin"變為ForceCommand /sbin/nologin.

此外,您還可以設置更多設置來滿足管理員的偏執,例如chroot- 將使用者放入他的主文件夾並最終得到如下內容:

Match group proxy-only
   PermitTTY no
   ForceCommand /sbin/nologin
   ChrootDirectory %h
   # Optionally enable these by un-commenting the needed line
   # AllowTcpForwarding no
   # GatewayPorts yes
   # KbdInteractiveAuthentication no
   # PasswordAuthentication no
   # PubkeyAuthentication yes
   # PermitRootLogin no

(檢查自己是否需要或想要註釋掉的行並根據需要取消註釋)

%h是一個由使用者主目錄替換的令牌(%u將產生使用者名和%%百分號)。我發現ChrootDirectory限制我的sftp-only使用者特別有用:

Match group sftp-only
   X11Forwarding no
   AllowTcpForwarding no
   ChrootDirectory %h
   ForceCommand internal-sftp
   PasswordAuthentication no

請注意,只有某些指令可以在Match塊中使用。詳情請參閱man頁面sshd_config(5)(搜尋Match)。

授權密鑰

*注意:*此評論下方的部分是我的原始答案。同時-但這也取決於您的確切sshd版本的功能-在大多數情況下,我會採用上述方法。

是的,你可以,就像你可以分配公鑰一樣細粒度。除了 ajdecon 推薦的 nologin 之外,我建議在 key 條目的前面設置以下內容authorized_keys

no-pty ssh-rsa ...

no pty 告訴伺服器端不應為該密鑰分配偽終端。

您還可以通過預先添加以下內容來強制執行特定鍵的 nologin 之類的操作:

command="/sbin/nologin",no-pty ssh-rsa ...

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