Должны ли мы отключить пользователя root?

21

Должны ли мы удалить пароль root, отключить удаленный вход и, по сути, требовать от администраторов использования sudo для выполнения административных действий?

альтернативный текст

jldugger
источник

Ответы:

16

На всех моих серверах учетная запись root отключена ( sp_pwdpустановлена ​​на *). Это требуется sudoдля всех корневого доступа. [1] Целью этого является аудит всех действий суперпользователя, чтобы люди могли видеть, что было сделано с системой.

Для более хардкорного варианта вы можете сделать sudoзапись в файл журнала (в отличие от syslog) и сделать этот файл доступным только для добавления ( chattrв Linux или chflagsBSD). Таким образом, никто не может редактировать аудит впоследствии.

[1] У меня также есть политика не запускать корневую оболочку или выполнять экранирование оболочки от корневого процесса. (Это нормально использовать sudo sh -c '...'для выполнения конвейеров или перенаправлений, хотя.)

Крис Шут-Янг
источник
3
"Не работает снарядов, либо!" Хм, вы знаете, сколько программ содержат команду «drop to shell»? Даже прежде, чем вы начнете смотреть на управление работой оболочки ...
womble
Я говорю о «без оболочки» как о политике, а не как о sudo. (У sudo есть опция noexec, но, очевидно, она не является водонепроницаемой, если вы не ограничиваете конкретные программы, которые может запускать пользователь.)
Крис Йестер-Янг
Можно ли настроить sudo так, чтобы "sudo -s" не мог использоваться? Я использовал sudoers только для настройки отдельных команд.
@ Грэм: можно. Однако, как вы можете видеть из комментариев выше, это ничего не останавливает, если ваши пользователи могут запустить что-нибудь другое. Единственным водонепроницаемым решением является подход белого списка, в котором вы указываете конкретные программы, которые могут запускать пользователи, и все они должны быть динамически связаны (чтобы опция «noexec» могла делать свое дело).
Крис Джестер-Янг
Как политика, где вы доверяете администраторам, это хорошо. Вы можете видеть, какие команды запускают люди, что может быть очень полезно при попытке выяснить, что изменилось.
Хэмиш Даунер
15

Я настоятельно рекомендую не отключать пользователя root. Отключите или ограничьте входы в систему root (через securetty и через sshd_config и через PAM и через что у вас есть) Если ваша система это разрешает, ограничьте привилегии root или разделите роль root (аналогично тому, как это делает RSBAC ). Но, пожалуйста , сделайте Не отключайте учетную запись root, удалив пароль, иначе станет невозможно войти в систему через sulogin. suloginиспользуется всеми начальными сценариями, которые я знаю, в случае серьезных ошибок, о которых сообщает fsck - и это означает, что вы будете заблокированы из системы, если корневая файловая система будет повреждена.

Для пояснения: под «отключением учетной записи root путем удаления пароля» я подразумеваю различные механизмы, которые в конечном итоге заканчиваются на! или * в поле пароля / etc / shadow, или аналогичное. Я не имею в виду «изменить механизм входа в систему root, чтобы не запрашивать пароль».

Михай Лимбашан
источник
Это проблема в таких системах, как Ubuntu, которые никогда не устанавливают пароль root? Кажется, я могу выполнить «sudo sulogin», но, возможно, я не понимаю критического аспекта.
Jldugger
К сожалению, я не знаком с тем, как Ubuntu обрабатывает root. Но если вы можете сделать «sudo sulogin» и получить оболочку root без запроса пароля root, то нет, это не проблема, поскольку, вероятно, тот же механизм будет применяться при загрузке. Вы можете попробовать поискать sulogin в initscripts, чтобы проверить, когда и как он вызывается.
Михай Лимбашан
1
Ubuntu не использует сулогин. Если вы перейдете в однопользовательский режим, вы сразу получите корневую оболочку. Тем не менее, прочитайте мой комментарий (в моем посте), чтобы понять, почему это не проблема, в большинстве случаев.
Крис Джестер-Янг
Кроме того, есть утверждения, что наличие suили sudoдоступность в вашей системе пользователей означает больше рисков для безопасности, которых вы можете избежать, если у вас есть только выделенные пользователи root. Это позиция, отстаиваемая авторами безопасного дистрибутива Owl (и среди них Solar Designer ) - unix.stackexchange.com/questions/8581/… пытается представить свою позицию со ссылками.
imz - Иван Захарящев
У меня была именно эта проблема: я заблокировал своего пользователя root, и fsck был вынужден из-за полной перезагрузки. К счастью, я мог загрузить свой неисправный Linux с этой fastbootопцией, разблокировать учетную запись root и перезапустить, чтобы наконец запустить fsckвручную.
Томмид
3

У меня включена учетная запись root на всех моих серверах. Все администраторы имеют своего собственного пользователя и должны войти через него. Оттуда они переключаются на root. (root ssh отключен)

Держите счет администратора низким. Только люди, которым действительно нужен root-доступ на этом сервере, имеют пароль.

Я не фанат sudo. Слишком просто просто сделать sudo bash для корневой оболочки. Я знаю, что это можно отключить, но зачем? Просто ограничьте пользователей, которые могут выполнять задачи администратора и общаться друг с другом. У нас есть политика, запрещающая открывать корневые терминалы без присмотра. Так что, войдите, su, сделайте работу, выйдите.

Примечание: я работаю в довольно небольшой компании (около 50 человек), и у нас есть только 2 администратора с частичной занятостью (1 windows / 1 linux). Такой способ работы может быть не лучшим, когда у вас на порядок больше пользователей. Лично я бы по-прежнему не использовал sudo. Есть и другие способы регистрации активности root.

Герт М
источник
Если вам нужна корневая оболочка из консоли, вы можете просто сделать 'sudo -i' вместо того, чтобы открывать ее из sudo bash. Лично мне действительно не нравится идея входа в систему как пользователь root напрямую, так как это слишком рискованно для злонамеренного взлома (то есть случайного оставления компьютера разблокированным с открытой корневой оболочкой).
Спойк
Вы теряете регистрацию / аудит с этим, все же. Заставьте всех использовать sudo и запретите людям делать sudo bash, или sudo -i, или sudo -s с корпоративной политикой. Это дает вам контрольный журнал, и если вы отправляете все свои журналы на центральный хост-хост, легко проверить, что люди следуют политикам.
Кристофер Кашелл
Именно этот подход используется и поддерживается авторами безопасного дистрибутива Owl (и среди них Solar Designer ) - unix.stackexchange.com/questions/8581/… пытается представить свою позицию со ссылками.
imz - Иван Захарящев
2

Отключение пароля root является ложной «хорошей идеей». В тот день, когда он вам понадобится, он вам действительно понадобится. (в зависимости от вашей конфигурации вам может понадобиться войти в однопользовательский режим для примера)

Отключение удаленного входа в систему root может иметь значение, но только если вы можете войти в систему локально.

И да, sudo должен быть установлен на каждом из ваших серверов. Это полезно и легко настроить. Почему бы вам не использовать его?

Benoit
источник
Что если загрузка в однопользовательском режиме является опцией grub?
Jldugger
Какова цель отключения учетной записи root? Что вы будете делать, если вы тормозите бинарный файл или конфигурацию sudo (или какой-либо другой инструмент)?
Бенуа
Disabling root remote login might be relevant but only if you are able to log on locally.Это просто очевидно ложно. Вы можете войти удаленно с любой учетной записи; отключение root удаленного входа не ограничивает вас локальным доступом.
Дан,
2

Я просто отключаю SSH-доступ для root и требую, чтобы пользователи (часто просто разработчики) использовали ssh-ключи. Просто слишком много атак по словарю, и изменение порта SSH для нас не вариант.

Таким образом, вам не нужно доверять чьей-либо способности написать хороший пароль. Оказавшись внутри только администраторы имеют права на sudo.

pablasso
источник
Смена порта SSH в любом случае не имеет смысла. Простое сканирование портов дает его легко. Когда я подключаюсь к порту 22 на моей машине, я получаю SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Мэтт Симмонс,
@MattSimmons Да, но большинство атак по словарю автоматизированы и очень элементарны. Они не беспокоятся о сканировании портов; они пытаются подключиться к случайным IP-адресам на порте 22 и, если они превышают время ожидания, переходят к следующему IP-адресу в своем списке. Это не мера безопасности, это просто помогает избавиться от автоматизированных атак на порт 22. Очевидно, что целевая атака - это совершенно другая игра в мяч.
Дан,
2

Я знаю, что эта ветка действительно старая, но в логике связанных статей есть некоторые серьезные недостатки, и я чувствую себя "rant'ie" - sudo допускает как белый, так и черный список. Не только черный, как указано в связанной статье. Это пропускает идею AAA (Аутентификация, Авторизация и Аудит) - su & sudo допускает как дифференцированную аутентификацию, так и отчетность.

Сценарий 1 Администратор случайно вводит в систему некоторый мошеннический код, вошедший в систему как root, у которого полный доступ к коду, и администратор может никогда не узнать, что произошло. По крайней мере, с помощью логинов с градуированной регистрацией (например, su / sudo) администратору будет предложено пройти аутентификацию, если мошеннический код пытается использовать повышенные права ... Если он не повышает права, он ограничивается правами пользователей, что должно привести к минимальному ущербу.

Сценарий 2: мошеннический администратор хочет получить информацию / внести изменения. Они подключаются к консоли (физический доступ к консоли, доступ к консоли HP iLo / аналогичный или vGuest), входят в систему как root и делают все, что пожелают. Если не существует именованной учетной записи / карты доступа, используемой для получения доступа к консоли, возможно, не так много следов аудита.

  1. Убедитесь, что они действительно те, кем они себя называют. Кража личных данных не проблема, проверка личности.
  2. Проверьте их авторизацию, дайте им только то, что им нужно в это время. Градуированная авторизация позволяет им подняться, когда им это нужно.
  3. Одитируйте все это, запишите, чтобы вы знали, кто, что сделал, когда и где. Желательно почему
Майк
источник
1

Вы должны требовать, чтобы все использовали sudo для каждой корневой команды в качестве политики. Нет никакой причины запускать «sudo bash» или тому подобное, это только для удобства, из-за невежества или для того, чтобы скрыть следы.

Если вы отключите входы в систему под учетной записью root напрямую, вы лишите вас возможности исправлять систему в случае серьезных проблем.

Если вы не можете убедить своих администраторов войти в систему как они сами и запустить sudo для каждой команды, запускаемой от имени пользователя root, и не вырваться из нее в оболочку, у вас есть серьезные проблемы, для которых не существует технического решения.

Карлито
источник
1

Авторы безопасного дистрибутива Owl (и Solar design) придерживаются противоположной, тщательно обоснованной точки зрения; см., например, ответ /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 для представление своих требований. Проблема аудита действий суперпользователя (кто и чем занимался) также рассматривается с их точки зрения (в основном, решение состоит в том, чтобы иметь нескольких корневых пользователей с разными именами).

imz - Иван Захарящев
источник