Solución:
/etc/securetty
es consultado por pam_securetty
módulo para decidir desde qué terminales virtuales (tty*
) root
tiene permitido iniciar sesión desde.
En el pasado, /etc/securetty
fue consultado por programas como login
directamente, pero ahora PAM se encarga de eso. Así que cambia a /etc/securetty
afectará a cualquier cosa que utilice PAM con un archivo de configuración que utilice pam_securetty.so
. Entonces, solo el login
El programa se ve afectado por defecto.
/etc/pam.d/login
se utiliza para inicios de sesión locales y /etc/pam.d/remote
se utiliza para inicios de sesión remotos (como telnet).
Los tipos de entrada principales y sus efectos son los siguientes:
- Si
/etc/securetty
no existeroot
tiene permitido iniciar sesión desde cualquiertty
- Si
/etc/securetty
existe y está vacío,root
El acceso estará restringido al modo de usuario único o programas que no estén restringidos porpam_securetty
(es decirsu
,sudo
,ssh
,scp
,sftp
) - Si esta usando
devfs
(un sistema de archivos obsoleto para el manejo/dev
), agregando entradas del formulariovc/[0-9]*
permitirá el inicio de sesión de root desde el número de consola virtual dado. - Si esta usando
udev
(para la gestión dinámica de dispositivos y el reemplazo dedevfs
), agregando entradas del formulariotty[0-9]*
permitirá el inicio de sesión de root desde el número de consola virtual dado. - Listado
console
en/etc/securetty
normalmente no tiene efecto ya que/dev/console
apunta a la consola actual y normalmente solo se usa como eltty
nombre de archivo en modo de usuario único, que no se ve afectado por/etc/securetty
- Agregar entradas como
pts/[0-9]*
permitirá programas que utilicen pseudo-terminales (pty
) ypam_securetty
para iniciar sesiónroot
asumiendo el asignadopty
es uno de los enumerados; normalmente es una buena idea no incluir estas entradas porque es un riesgo para la seguridad; permitiría, por ejemplo, que alguien inicie sesión en root a través de telnet, que envía contraseñas en texto plano (tenga en cuenta quepts/[0-9]*
es el formato paraudev
que se utiliza en RHEL 5.5; será diferente si usasdevfs
o alguna otra forma de gestión de dispositivos).
Para el modo de usuario único, /etc/securetty
no es consultado porque el sulogin
se usa en lugar de login
(ver el sulogin
página de manual para obtener más información). También puede cambiar el programa de inicio de sesión utilizado en /etc/inittab
para cada nivel de ejecución.
Tenga en cuenta que no debe utilizar /etc/securetty
al control root
inicios de sesión a través de ssh
. Para hacer eso, cambie el valor de PermitRootLogin
en /etc/ssh/sshd_config
. Por defecto /etc/pam.d/sshd
no está configurado para consultar pam_securetty
(y por lo tanto /etc/securetty
). Puede agregar una línea para hacerlo, pero ssh
no establece el real tty
hasta algún tiempo después de la auth
etapa, por lo que no funciona como se esperaba. Durante el auth
y account
etapas – al menos para openssh
– los tty
(PAM_TTY
) está codificado en ssh
.
La respuesta anterior se basa en RHEL 5.5. Gran parte pertenecerá a las distribuciones actuales de otros sistemas * nix, pero hay diferencias, algunas de las cuales noté, pero no todas.
Respondí esto yo mismo porque las otras respuestas estaban incompletas y / o inexactas. Muchos otros foros, blogs, etc. en línea también tienen información inexacta e incompleta en este tema, por lo que he realizado una extensa investigación y pruebas para tratar de obtener los detalles correctos. Si algo de lo que he dicho está mal, hágamelo saber.
Fuentes:
- http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-sec-network.html#s1-wstation-privileges
- http://www.mathematik.uni-marburg.de/local-doc/centos5/pam-0.99.6.2/html/sag-pam_securetty.html
- http://linux.die.net/man/1/login
- http://www.tldp.org/HOWTO/html_single/Text-Terminal-HOWTO/
- http://www.kernel.org/doc/Documentation/devices.txt
- http://en.wikipedia.org/wiki/Virtual_console
- http://en.wikipedia.org/wiki/Linux_console
- http://www.kernel.org/doc/man-pages/online/pages/man4/console.4.html
- http://www.unix.com/security/8527-restricting-root-login.html
- http://www.redhat.com/mirrors/LDP/HOWTO/Serial-HOWTO-11.html#ss11.3
- http://www.mathematik.uni-marburg.de/local-doc/centos5/udev-095/udev_vs_devfs
vc/X
y ttyX
son sinónimos: diferentes caminos hacia los mismos dispositivos. El objetivo de la redundancia es detectar varios casos para no bloquearlo.
Tradicionalmente, login
(y posiblemente getty
, No puedo recordarlo con seguridad) comprobaría /etc/securetty
y negar root
inicios de sesión en terminales no cotizadas. En los sistemas modernos, hay otras formas de hacer esto y también otras medidas de seguridad. Consulte el contenido de /etc/login.defs
(que también cubre securetty
funcionalidad y es recomendado por el securetty(5)
manpage), y también /etc/pam.d/login
, donde puede controlar el comportamiento de esta función.
Ya que securetty
solo es verificado por login
, medios de inicio de sesión que no utilizan login
(por ejemplo, SSH con use_login=no
, Administradores de pantalla X, etc.) no se ven afectados.