從系統驗證中刪除「nullok」可防止任何 root 密碼

從系統驗證中刪除「nullok」可防止任何 root 密碼

[這是我在 ServerFault 上的帖子的後續內容:https://serverfault.com/questions/661136/root-accepts-any-password-how-to-change-to-a-real-password]

在舊系統上,root 帳號接受任何密碼,只要密碼不為空即可。任何密碼都會被接受為正確的密碼,因此任何人都可以登入。

在過去(十多年前)這不是問題,因為系統位於具有自己的身份驗證的撥號數據機後面......但幾年後,可以透過公用 IP 位址存取系統。

奇蹟般的是,直到上週才有人關心它的 SSH 端口。

有人(中國IP位址)以root身分登入並更改了一些系統設定並登出。

我從備份中恢復了系統,並更改了 SSH 端口,使其無法再透過 ADSL 調製解調器訪問,以便給我一些時間來解決此問題。

問題似乎出在/etc/pam.d/system-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/pam_env.so
auth        sufficient    /lib/security/pam_unix.so likeauth nullok
auth        required      /lib/security/pam_deny.so

account     required      /lib/security/pam_unix.so

password    required      /lib/security/pam_cracklib.so retry=3
password    sufficient    /lib/security/pam_unix.so nullok use_authtok md5
password    required      /lib/security/pam_deny.so

session     required      /lib/security/pam_limits.so
session     required      /lib/security/pam_unix.so

當我改變時

auth        sufficient    /lib/security/pam_unix.so likeauth nullok

auth        sufficient    /lib/security/pam_unix.so likeauth

那麼 root 帳號不再接受任何隨機密碼,但它也不接受我設定的密碼

我嘗試了以下方法:

  • 首先透過命令修改root密碼passwd。結果:我可以使用任何密碼登入
  • 然後刪除nullok:我無法在新的 SSH 會話中使用任何密碼登錄,即使使用我剛剛設定的密碼也無法登入
  • 然後我又改了root密碼。結果:我仍然無法在新的 SSH 會話中使用任何密碼登入。
  • 然後我放回nullok系統身份驗證:我可以再次使用任何密碼登入

我一直在保持開啟的 SSH 會話中進行編輯和密碼設置,並透過開啟新的 SSH 會話來測試結果。

我不敢關閉主 SSH 會話,因為擔心無法再次進入。我也沒有重新啟動系統,因為它是一個正在運行的交通燈系統

我很驚訝我不必輸入舊密碼,而只需輸入新密碼(兩次)。

更改密碼後我得到了答案Password changed,但我無法使用新密碼透過 SSH 登入。

我必須在其他地方設定 root 密碼嗎?或刪除是否會nullok透過 SSH 完全阻止 root 帳號?

我希望唯一root能夠使用 1 個特定密碼登入並拒絕任何其他密碼的存取。

相關內容