Telnet 為什麼不能以 root 身份登錄系統?

為什麼 root 無法以 telnet 直接登入系統,但用 ssh 卻可以?

  • telnet 會引用 login 的 PAM 模塊,而 login 的驗證階段會有 /etc/securetty 的限制;
  • 因為此遠程登入屬於 pts/n 的終端機接口裝置,該名稱沒有寫入到 /etc/securetty,因此 root 無法用 telnet 登入;
  • ssh 使用的是 /etc/pam.d/sshd 模塊,該模塊驗證階段並沒有加入 pam_securetty,因此沒有 /etc/securetty 的限制!
Telnet 為什麼不能以 root 身份登錄系統?

瞭解一下 PAM 模塊:

  • pam_securetty.so

限制系統管理員(root)只能從安全的(secure)終端機登錄,例如傳統的終端機名稱: tty1, tty2 等。安全的終端機設定寫在 /etc/securetty 文件中。

  • pam_nologin.so

限制一般用戶是否能登錄系統。當 /etc/nologin 這個文件存在時,一般用戶無法登陸系統(終端機會顯示該文件內容);

Redhat 系統的設定:

紅帽推薦用戶使用安全的ssh來遠程登錄服務器,而不要使用telnet,因為telnet連接服務器時,密碼是以明文方式傳輸。因此默認root是不允許telnet直接登錄服務器的。

假設你安裝了 telnet-server 軟件包,進行了正確的配置,開放了23端口。

希望強制允許root通過telnet連接服務器,可以修改/etc/pam.d/login,默認文件如下:

#%PAM-1.0
auth required pam_securetty.so
auth required pam_stack.so service=system-auth
...

第一行控制 root 不允許 telnet 服務器,

為了允許 root 通過 telnet 登錄服務器,修改該文件如下:

#%PAM-1.0
# auth required pam_securetty.so (註釋掉此行)
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
...

測試一下:

Telnet 為什麼不能以 root 身份登錄系統?


分享到:


相關文章: