Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

4 способа отключить доступ к аккаунту Root в Linux

Оригинал: 4 Ways to Disable Root Account in Linux
Автор: Aaron Kili
Дата публикации: 19 октября 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2019 г.

Учетная запись root является главной учетной записью в Linux и других Unix-подобных операционных системах. Эта учетная запись имеет доступ ко всем командам и файлам в системе с полными разрешениями на чтение, запись и выполнение. Она используется для выполнения любых системных задач: создания/обновления/получения доступа/удаления учетных записей других пользователей, установки/удаления/обновления программных пакетов и многого другого.

Поскольку пользователь root обладает абсолютными полномочиями, любые выполняемые им действия являются критическими для системы. В связи с этим любые ошибки пользователя root могут иметь огромное влияние на нормальную работу системы. Кроме того, эта учетная запись может также подвергаться взлому, либо пользователь может использовать ее ненадлежащим образом, случайно, злонамеренно, либо в результате незнания политик.

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

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

Внимание: Прежде чем заблокировать доступ к учетной записи root, убедитесь, что вы создали административную учетную запись, способную использовать команду sudo для получения привилегий пользователя root, с помощью команды useradd, и задайте для этой учетной записи надежный пароль. Флаг -m означает создание домашнего каталога пользователя, а -c позволяет указать комментарий:

# useradd -m -c "Admin User" admin
# passwd admin

Затем добавьте этого пользователя в соответствующую группу системных администраторов с помощью команды usermod, где ключ -a означает добавление учетной записи пользователя, а -G указывает группу, в которую нужно добавить пользователя (wheel или sudo в зависимости от вашего дистрибутива Linux):

# usermod -aG wheel admin    #CentOS/RHEL
# usermod -aG sudo admin     #Debian/Ubuntu 

Создав пользователя с правами администратора, переключитесь на эту учетную запись, чтобы заблокировать доступ с правами root.

# su admin

1. Изменение командной оболочки пользователя root

Самый простой способ отключить вход в систему для пользователя root - это изменить его оболочку с /bin/bash (или любой другой оболочки, разрешающей вход пользователя) на /sbin/nologin в файле /etc/passwd, который вы можете открыть для редактирования, используя любой из ваших любимых текстовых редакторов, как показано ниже.

$ sudo vim /etc/passwd

Замените строку:

root:x:0:0:root:/root:/bin/bash
на
root:x:0:0:root:/root:/sbin/nologin

редактирование файла /etc/passwd

Сохраните файл и закройте его.

С этого момента, когда пользователь root входит в систему, он /она получит сообщение «This account is currently not available». Это сообщение по умолчанию, но вы можете изменить его и задать собственное сообщение в файле /etc/nologin.txt.

Этот метод эффективен только для программ, которым требуется оболочка для входа пользователя, в противном случае клиенты sudo, ftp и email могут получить доступ к учетной записи root.

2. Отключение авторизации root с устройства консоли (TTY)

Во втором методе используется модуль PAM с именем pam_securetty, который разрешает root-доступ, только если пользователь входит в «защищенный» TTY, как определено в листинге в /etc/securetty.

Приведенный выше файл позволяет вам указать, на каких устройствах TTY разрешен вход в систему пользователю root, очистка этого файла предотвращает вход в систему root на всех устройствах, подключенных к системе.

Чтобы создать пустой файл, выполните:

$ sudo mv /etc/securetty /etc/securetty.orig
$ sudo touch /etc/securetty
$ sudo chmod 600 /etc/securetty

Этот метод имеет некоторые ограничения, он затрагивает только такие программы, как вход в систему, менеджеры дисплеев (например, gdm, kdm и xdm) и другие сетевые службы, которые запускают TTY. Такие программы, как su, sudo, ssh и другие связанные утилиты openssh будут иметь доступ к учетной записи root.

3. Отключение доступа к Root по SSH

Самый распространенный способ доступа к удаленным серверам или VPS - через SSH, и для блокировки входа пользователя root под ним необходимо отредактировать файл /etc /ssh /sshd_config.

$ sudo vim /etc/ssh/sshd_config

Затем раскомментируйте (если это закомментировано) директиву PermitRootLogin и установите для нее значение no, как показано на скриншоте.

раскомментирование директивы PermitRootLogin

Как только вы закончите, сохраните и закройте файл. Затем перезапустите службу sshd, чтобы применить последние изменения в конфигурации.

$ sudo systemctl restart sshd 
или
$ sudo service sshd restart 

Как вы, возможно, уже знаете, этот метод влияет только на набор инструментов openssh, такие программы, как ssh, scp, sftp, будут заблокированы от доступа к учетной записи root.

4. Ограничение доступа root к службам с помощью PAM

Pluggable Authentication Modules (сокращенно PAM) - это централизованный, подключаемый, модульный и гибкий метод аутентификации в системах Linux. PAM через модуль /lib/security/pam_listfile.so обеспечивает большую гибкость в ограничении привилегий определенных учетных записей.

Вышеупомянутый модуль может использоваться для ссылки на список пользователей, которым не разрешено входить через некоторые целевые сервисы, такие как login, ssh и любые программы, поддерживающие PAM.

В этом случае мы хотим отключить доступ пользователя root к системе, ограничив доступ к службам входа и sshd. Сначала откройте и отредактируйте файл для целевой службы в каталоге /etc/pam.d/, как показано ниже.

$ sudo vim /etc/pam.d/login
или
sudo vim /etc/pam.d/sshd

Затем добавьте приведенную ниже конфигурацию в один из этих файлов (или в оба).

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

Когда вы закончите, сохраните и закройте каждый файл. Затем создайте простой файл /etc/ssh/deniedusers, который должен содержать по одному элементу в строке и не должен читаться всеми.

Добавьте в него имя root, затем сохраните и закройте его.

$ sudo vim /etc/ssh/deniedusers

Также установите необходимые разрешения на это.

$ sudo chmod 600 /etc/ssh/deniedusers

Этот метод влияет только на те программы и службы, которые поддерживают PAM. Вы можете заблокировать root-доступ к системе через ftp и почтовые клиенты и многое другое.

Для получения дополнительной информации обратитесь к соответствующим справочным страницам.

$ man pam_securetty
$ man sshd_config
$ man pam