Linux

如何在 Linux 上“監禁”使用者帳戶的網路功能?

  • September 30, 2012

Linuxa機器通過動態 DNS 註冊連接到家庭 DSL 線路,託管一個tmux會話,多個客戶端通過 SSH 以只讀模式連接到該會話。所有使用者都使用相同的憑據進行連接: user b

Example: ssh b@a.dynip.org tmux attach -t screencast

一切正常,但我有一個使用者從盒子到網際網路做“頑皮”的事情。這是不可接受的,因為我要對與 ISP 的網際網路契約負責;除了授予使用該帳戶的能力之外,我如何完全監禁每個使用者b,over ssh,用於在我的機器上tmux觀看會話?screencast``a

我正在考慮在使用者通過 ssh 連接後立即更新 ipchains,只允許流量返回該 IP 地址,但是……多個查看者共享同一個帳戶?

我不完全理解您的要求:使用者將被監禁在哪台機器上?他們可以做任何不涉及網路的事情嗎?儘管如此,我想我可以告訴你必要的建構塊是什麼。

要將使用者限制為特定的網路連接,請參閱 如何在 Linux 中使用 iptables 限制區域網路上特定使用者的 Internet 訪問。簡而言之,將使用者 1234 的網路流量限制為通過 ssh 連接到 192.0.2.42(機器 A 的 IP 地址):

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -d 192.0.2.42 --dport 22 -j ACCEPT
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

如果您有 IPv6,請記住也要阻止它。

在機器 A 上,要將受限使用者限制為帳戶 B,最有效的方法是安排這些使用者沒有其他帳戶的憑據。您可以使用Match指令sshd_config來限制來自某些 IP 地址的連接以驗證某些使用者,但這可能不是一件好事,因為它會阻止您獲得管理訪問權限。

Match 192.0.2.99
   AllowTCPForwarding No
   AllowUsers B
   PasswordAuthentication No
   X11Forwarding No

要將賬戶 B 限制為單個命令,有兩種方法:

  • 給使用者一個私鑰(最好是每個使用者一個),並在authorized_keys文件中使用command=指令設置此密鑰的限制。
command="tmux attach-session -r -t screencast" ssh-rsa …
  • tmux將使用者的 shell 設置為使用正確參數啟動的腳本。這樣做的好處是您可以允許密碼身份驗證,但可能更難以一種不允許使用者突破到 shell 提示符的方式正確處理。

我認為 tmux 不允許在只讀會話中進行 shell 轉義,但我不確定,請檢查使用者此時是否無法轉義。

引用自:https://unix.stackexchange.com/questions/46697