Linux

為什麼’bin’使用者需要一個登錄shell?

  • November 28, 2019

在對我的一個公共網路伺服器進行審計期間/var/log/auth.log,我發現了這一點:

Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure; 
   logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53  user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53 
   port 50647 ssh2

乍一看,這看起來像是ssh來自隨機黑客的典型登錄垃圾郵件;然而,當我仔細觀察時,我注意到了別的東西。大多數失敗的/var/log/auth.log條目invalid user都在其中說,就像這個:

Jan  9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales 
   from 123.212.43.5 port 10552 ssh2

關於失敗的登錄消息的令人不安的事情bin是它是一個有效的使用者/etc/passwd甚至有一個登錄外殼:

[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh

我以為我已經涵蓋了禁用時可以遠端登錄的所有預設使用者PermitRootLogin/etc/ssh/sshd_config;發現這個條目在我偏執的頭腦中開啟了新的可能性。如果服務以某種方式在 下執行bin,那麼遠端可能有人可以通過機器上正在執行的服務以某種方式將 ssh 密鑰插入bin使用者目錄,所以如果可能的話,我想完全禁用bin使用者的登錄。

問題

  • 這台伺服器是遠端的,而且修復起來很昂貴(即,我將支付遠端手來連接 KVM,外加 KVM 租金)。我試圖弄清楚如果我將/etc/passwd條目更改為bin如下所示可能會破壞什麼:

bin:x:2:2:bin:/bin:/bin/false

  • 我執行了以下命令,試圖找出bin需要什麼……但是,這些命令沒有提供任何文件,而且我找不到bin. 使用者到底bin做了什麼?

$ sudo find / -group bin

$ sudo find / -user bin

  • 是否有其他使用者應該將其登錄 shell 設置為/bin/false?僅供參考,我已經有了/bin/falsewww-data
  • 我是不是太偏執了?

我正在執行 Debian,如果這很重要的話。

擁有有效 shell 且沒有密碼的使用者仍然可以通過非基於密碼的方法登錄,最常見的是 ssh 密鑰。執行 cron 作業需要有效的 shell。有效的 shell 也是su bin -c 'wibble'工作所必需的(至少在 Linux 上su bin -s /bin/sh -c 'wibble'也可以工作)。

在 的情況下bin,大多數係統從未像bin正常操作那樣執行命令,因此將 shell 設置為/bin/false就可以了。

允許通過 SSH 登錄不存在任何直接攻擊的風險bin,因為這需要/bin/.ssh/authorized_keys以使用者bin或 root 身份創建。換句話說,進入的唯一方法就是進入。然而,擁有一個有效的 shell 確實會增加錯誤配置的風險。它還可以允許使用 SSH 以外的服務進行一些遠端攻擊;例如,使用者報告攻擊者可以daemon通過 Samba 遠端設置密碼,然後使用該密碼通過 SSH 登錄。

DenyUsers您可以通過在指令中列出系統使用者的名稱來堵住 SSH 漏洞/etc/ssh/sshd_config(不幸的是,您不能使用數字範圍)。或者,相反,您可以放置​​一個AllowGroups指令,只允許包含物理使用者的組(例如users,如果您授予所有物理使用者該組成員資格)。

在 Debian ( #274229 , #330882 , #581899 ) 中針對此問題送出了一些錯誤,目前已打開並歸類為“願望清單”。我傾向於同意這些是錯誤,系統使用者應該將/bin/false其作為他們的外殼,除非看起來有必要這樣做。

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