По умолчанию в 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
В чем разница между каждым из типов записей ( console
, vc/*
, и tty*
)? В частности, каков конечный результат добавления и удаления каждого типа записи?
Я понимаю, что они влияют на то, как и когда вы можете войти в систему, но есть ли какие-либо другие эффекты? И когда вы можете и когда не можете войти в систему в зависимости от того, какие записи есть?
ПРАВКА 1
Что я знаю, так это то, что это tty1-6
соответствует тому, можете ли вы войти с первых 6 консолей, которые вы достигаете, используя Ctrl- Alt- F1через Ctrl- Alt- F6. Я всегда думал, что это виртуальные консоли, поэтому я немного запутался. А что соответствует console
?
Спасибо.
ПРАВКА 2
Каков эффект, если он есть, в однопользовательском режиме?
решение1
/etc/securetty
модуль обращается к нему, pam_securetty
чтобы решить, с каких виртуальных терминалов ( tty*
) root
разрешено входить в систему.
Раньше, /etc/securetty
обращались программы, как login
напрямую, но теперь PAM обрабатывает это. Поэтому изменения в /etc/securetty
повлияют на все, что использует PAM с файлом конфигурации, который использует pam_securetty.so
. Таким образом, login
по умолчанию влияет только программа.
/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 с указанного номера виртуальной консоли. - Обычно указание
console
в списке/etc/securetty
не имеет никакого эффекта, поскольку/dev/console
указывает на текущую консоль и обычно используется только какtty
имя файла в однопользовательском режиме, на который не влияет/etc/securetty
- Добавление записей, подобных тем,
pts/[0-9]*
что позволит программам, использующим псевдотерминалы (pty
),pam_securetty
входить в систему,root
предполагая, что выделенный терминалpty
является одним из перечисленных; обычно это хорошая идеянетвключить эти записи, поскольку это представляет угрозу безопасности; например, это позволит кому-то войти в систему как root через telnet, который отправляет пароли в открытом виде (обратите внимание, что именно этотpts/[0-9]*
форматudev
используется в RHEL 5.5; он будет отличаться при использованииdevfs
или какой-либо другой формы управления устройствами).
Для однопользовательского режима /etc/securetty
не учитывается, поскольку sulogin
вместо этого используется login
(см. sulogin
страницу руководства для получения дополнительной информации). Также вы можете изменить программу входа, используемую /etc/inittab
для каждого уровня запуска.
Обратите внимание, что вам не следует использовать /etc/securetty
для управления root
входами через ssh
. Для этого измените значение PermitRootLogin
в /etc/ssh/sshd_config
. По умолчанию /etc/pam.d/sshd
не настроено на консультацию pam_securetty
(и, следовательно /etc/securetty
, ). Вы можете добавить строку для этого, но ssh
не устанавливает фактическое значение tty
до некоторого времени после auth
этапа, поэтому оно не работает так, как ожидалось. Во время этапов auth
и account
— по крайней мере, для openssh
— tty
( PAM_TTY
) жестко закодировано в ssh
.
Приведенный выше ответ основан на RHEL 5.5. Большая его часть будет относиться к текущим дистрибутивам других систем *nix, но есть различия, некоторые из которых я отметил, но не все.
Я сам ответил на этот вопрос, потому что другие ответы были неполными и/или неточными. Многие другие форумы, блоги и т. д. в сети также содержат неточную и неполную информацию по этой теме, поэтому я провел обширное исследование и тестирование, чтобы попытаться получить правильные данные. Если что-то из того, что я сказал, неверно, пожалуйста, дайте мне знать.
Источники:
- 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/Виртуальная_консоль
- 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
решение2
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 display manager и т. д.), не затрагиваются.