为什么 root 无法以 telnet 直接登入系统,但用 ssh 却可以?
- telnet 会引用 login 的 PAM 模块,而 login 的验证阶段会有 /etc/securetty 的限制;
- 因为此远程登入属于 pts/n 的终端机接口装置,该名称没有写入到 /etc/securetty,因此 root 无法用 telnet 登入;
- ssh 使用的是 /etc/pam.d/sshd 模块,该模块验证阶段并没有加入 pam_securetty,因此没有 /etc/securetty 的限制!
了解一下 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.0auth required pam_securetty.soauth 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-authauth required pam_nologin.so...