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 身份登录系统?


分享到:


相關文章: