/ etc / securetty中条目的影响


19

默认情况下,在RHEL 5.5上,我有

[deuberger@saleen trunk]$ sudo cat /etc/securetty 
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11

每种条目类型(控制台,vc / 和tty)之间的区别是什么。具体来说,添加和删除每种条目类型的最终结果是什么?

我的理解是,它们会影响您登录的方式和时间,但是还有其他影响吗?以及什么时候可以,什么时候不能登录(取决于那里有哪些条目)?

编辑1 我所知道的是tty 1-6对应于您是否可以使用CTRL-ALT-F1到CTRL-ALT-F6从前6个控制台登录。我一直以为是虚拟控制台,所以有点困惑。控制台也对应什么?谢谢。

编辑2 如果在单用户模式下有什么影响?

Answers:


34

/etc/securetty由pam_securetty模块咨询以决定允许从哪个虚拟终端(ttyS)根登录。过去,/etc/securetty直接由诸如login之类的程序咨询过,但是现在PAM可以解决该问题。因此,对的更改/etc/securetty将影响使用PAM和配置文件的任何文件,该配置文件使用pam_securetty.so。因此,默认情况下仅影响登录程序。/etc/pam.d/login用于本地登录,/etc/pam.d/remote用于远程登录(如telnet)。

主要条目类型及其影响如下:

  • 如果/etc/securetty不存在,则允许root从任何tty登录
  • 如果/etc/securetty存在且为空,则root用户访问权限将限制为不受pam_securetty限制的单用户模式或程序(即su,sudo,ssh,scp,sftp)
  • 如果使用devfs(用于处理/ dev的不推荐使用的文件系统),则添加vc / [0-9] *形式的条目将允许从给定的虚拟控制台号进行root登录
  • 如果使用udev(用于动态设备管理和替换devfs),则添加tty [0-9] *形式的条目将允许从给定的虚拟控制台号进行root登录。
  • 在securetty中列出控制台,通常不起作用,因为/ dev / console指向当前控制台,并且通常仅在单用户模式下用作tty文件名,不受以下影响 /etc/securetty
  • 假设分配的pty是列出的pty之一,则添加pts / [0-9] *之类的条目将允许使用伪终端(pty)和pam_securetty的程序登录到root。通常不包含这些条目是一个好主意,因为这存在安全风险;例如,这将允许某人通过远程登录以root身份登录到root,然后以纯文本形式发送密码(请注意pts / [0-9] *是在RHEL 5.5中使用的udev格式;如果使用devfs,则将有所不同)或其他某种形式的设备管理)

对于单用户模式,/etc/securetty不进行查询,因为使用sulogin代替登录。有关更多信息,请参见sulogin手册页。您也可以更改/etc/inittab用于每个运行级别的登录程序。

请注意,您不应使用/etc/securettyssh来控制root登录。为此,请更改PermitRootLogin中的值/etc/ssh/sshd_config。默认情况下/etc/pam.d/sshd,未配置为咨询pam_securetty(因此/etc/securetty)。您可以添加一行来执行此操作,但是ssh直到auth阶段之后才设置实际的tty,因此它无法按预期工作。在身份验证和帐户阶段(至少对于openssh),将tty(PAM_TTY)硬编码为“ ssh”。

上面的答案基于RHEL 5.5。其中大部分将与其他* nix系统的当前发行版有关,但存在差异,我注意到其中一些,但并非全部。

我自己回答了这个问题,因为其他答案不完整和/或不准确。在线上的许多其他论坛,博客等也都具有关于该主题的不准确和不完整的信息,因此,我已经进行了广泛的研究和测试,以尝试获取正确的详细信息。如果我说的话有误,请让我知道。

资料来源:


+1以抽出时间对这种深度做出回应。我不确定为什么这里没有可接受的答案。好像您已经回答了OP的问题。我喜欢@Alexios评论,“ vc / X和ttyX是同义词[ous] ...”
harperville,2016年

Debian最近删除了/ etc / securetty。它被认为是过时的,而且麻烦多于其价值。它用于telnet和rlogin,但是为了使某些容器登录正常工作,在某些系统上添加了伪终端(例如“ pts / 0”),这违背了其最初的目的。如果需要将root登录限制为一组特定的设备,则有更可靠的机制。参见bugs.debian.org/731656
dlitz

4

vc/X并且ttyX是同义词:指向相同设备的不同路径。冗余的目的是抓住各种情况,以免将您拒之门外。

传统上login((可能getty我不确定)可能会检查/etc/securetty并拒绝root未列出终端上的登录。在现代系统上,还有其他方法可以执行此操作,也可以使用其他安全措施。检出其内容/etc/login.defs(本手册还介绍了securetty的功能,该内容也涵盖了该功能securetty(5)),以及/etc/pam.d/login,您都可以在其中控制此功能的行为。

由于securetty仅由选中login,因此不使用的登录方式login(例如SSH和use_login=no,X显示管理器等)不受影响。


值得注意的是,在busybox基于系统的系统上,由于其login/etc/login.defs提供支持这一简单事实,它可能仍然有用。
phk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.