非常有限的遠端 Linux shell 的預設解決方案

非常有限的遠端 Linux shell 的預設解決方案

我有一個用戶需要連接到遠端電腦M(透過 ssh)並在一組固定的命令中運行一個命令(N總共)。

這些命令依賴 python、其庫以及對網路的特權存取(哪台機器M擁有)。

是否有預設策略限制 linux 使用者 shell 只能執行這些N命令,而沒有任何可能性:

  • 進一步訪問金融服務部
  • 讀取命令本身的內容
  • 獲得對網路的特權訪問
  • 和類似的

換句話說,在使用者登入後向使用者提示有限控制台的預設策略是什麼,例如僅允許1和之間的數字N作為輸入?

答案1

authorized_keys 檔案中有一個巧妙的技巧,您可以使用命令選項來定義要在登入時執行的命令,由金鑰標識,因此如果您的 N 個命令是靜態的 - 您可以在伺服器上定義它們,瞧。它不會限製網絡,只會啟動命令。它看起來像authorized_keys 檔案中的那樣:

command = "date" ssh-rsa AAAA

您可以找到有關此的更多信息教學

為了阻止使用者存取網路 - 您可以使用 SELinux 或其他類似的軟體,您也可以編寫 eBPF 鉤子來允許您完全執行您想要的操作。

答案2

讓我們假設這不是一個只有他們需要的東西的小型 chroot 或容器,而是通用的多用戶作業系統。

如果有足夠的自動化,可能不需要登入主機。也許透過一些自助系統提供這些有限的選項,這是自動化所做的。

為了讓他們在主機上執行操作,請嘗試我所說的強製文字選單。這是您可能需要編寫的腳本。

嚴格限制這個人做其他事情需要一些技巧。

  • 以非特權身分登錄,最好是該使用者唯一的身分。使用 doas 或 sudo 等工具升級特權內容。
  • 強制此選單是與 OpenSSHForceCommand區塊一起運行的。
  • 也可以從 shell 設定檔中執行它。 exec 因此它取代了 shell 進程,當選單退出時,它們的會話也會退出。
  • 選單腳本中的陷阱訊號。
  • 當心可以運行任意指令的程式。掏錢是小事在vim中,指令是:shell
  • 編寫並用作選單項目包裝腳本,以實現更複雜的操作或對輸出的更多控制。

選擇用於編寫選單的腳本語言。輸入循環本身並不困難,但使其健壯、易於修改並具有良好的用戶體驗才是您在生產中真正想要的。

相關內容