Учетная запись root является конечной учетной записью в Linux и других Unix-подобных операционных системах.
Эта учетная запись имеет доступ ко всем командам и файлам в системе с полными разрешениями на чтение, запись и выполнение.
Она используется для выполнения любой задачи в системе; создавать / обновлять / получать доступ / удалять учетные записи других пользователей, устанавливать / удалять / обновлять пакеты программного обеспечения и многое другое.
Поскольку пользователь root имеет абсолютные полномочия, любые действия, которые он выполняет, имеют решающее значение для системы.
В этом отношении любые ошибки пользователя root могут иметь серьезные последствия для нормальной работы системы.
Кроме того, этой учетной записью можно также злоупотреблять, используя ее ненадлежащим образом либо случайно, либо злонамеренно, либо путем незнания политик безопасности.
Поэтому рекомендуется отключить доступ root на вашем Linux-сервере, вместо этого создать учетную запись администратора, которая должна быть настроена для получения привилегий пользователя root с помощью команды sudo для выполнения критических задач на сервере.
В этой статье мы объясним четыре способа отключения учетной записи пользователя root в Linux.
Внимание. Прежде чем блокировать доступ к учетной записи root, убедитесь, что вы создали админскую учетную запись, способную использовать команду sudo для получения привилегий пользователя root, с помощью команды useradd и предоставить этой учетной записи надежный пароль. Флаг -m означает создание домашнего каталога пользователя, а -c позволяет указать комментарий:
# useradd -m -c "Admin User" admin # passwd admin
Затем добавьте этого пользователя в соответствующую группу системных администраторов, используя команду usermod, где ключ -a означает добавление учетной записи пользователя, а -G указывает группу для добавления пользователя в (колесо или 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
Сохраните файл и закройте его.
С этого момента, когда пользователь root войдет в систему, он / она получит сообщение «This account is currently not available».
Это сообщение по умолчанию, но вы можете изменить его и установить собственное сообщение в файле /etc/nologin.txt.
Этот метод эффективен только для программ, для которых требуется учетная запись пользователя для входа в систему, иначе sudo, ftp и почтовые клиенты смогут получить доступ к учетной записи root.
2. Отключить root через консольное устройство (TTY)
Второй метод использует модуль PAM, называемый pam_securetty, который разрешает root-доступ только в том случае, если пользователь регистрируется в «защищенном» TTY, как определено в списке в /etc/securetty.
В приведенном выше файле вы можете указать устройства TTY, c которыми пользователь 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, даже если это VPS в США – через SSH и блокировка пользователя root на вход, а для этого вам нужно отредактировать файл /etc/ssh/sshd_config.
$ sudo vim /etc/ssh/sshd_config
Затем раскомментируйте (если она закомментирован) директиву PermitRootLogin и установите ее значение равным no, как показано на скриншоте.
Как только вы закончите, сохраните и закройте файл.
Затем перезапустите службу sshd, чтобы применить последние изменения в конфигурациях.
$ sudo systemctl restart sshd или $ sudo service sshd restart
Как вы уже знаете, этот метод влияет только на набор инструментов openssh, такие программы, как ssh, scp, sftp, будут заблокированы для доступа к учетной записи root.
4. Ограничение доступа root к службам через PAM
Подключаемые модули аутентификации (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/login
Затем добавьте конфигурацию ниже в оба файла.
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