- 4 способа отключить доступ к аккаунту Root в Linux
- 1. Изменение командной оболочки пользователя root
- 2. Отключение авторизации root с устройства консоли (TTY)
- 3. Отключение доступа к Root по SSH
- 4. Ограничение доступа root к службам с помощью PAM
- 4 Ways to Disable Root Account in Linux
- 1. Change root User’s Shell
- 2. Disable root Login via Console Device (TTY)
- 3. Disabl SSH Root Login
- 4. Restrict root Acess to Services Via PAM
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- Related Posts
- 19 thoughts on “4 Ways to Disable Root Account in Linux”
- Got something to say? Join the discussion. Cancel reply
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 позволяет указать комментарий:
Затем добавьте этого пользователя в соответствующую группу системных администраторов с помощью команды usermod, где ключ -a означает добавление учетной записи пользователя, а -G указывает группу, в которую нужно добавить пользователя (wheel или sudo в зависимости от вашего дистрибутива Linux):
Создав пользователя с правами администратора, переключитесь на эту учетную запись, чтобы заблокировать доступ с правами root.
1. Изменение командной оболочки пользователя root
Самый простой способ отключить вход в систему для пользователя root — это изменить его оболочку с /bin/bash (или любой другой оболочки, разрешающей вход пользователя) на /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 на всех устройствах, подключенных к системе.
Чтобы создать пустой файл, выполните:
Этот метод имеет некоторые ограничения, он затрагивает только такие программы, как вход в систему, менеджеры дисплеев (например, gdm, kdm и xdm) и другие сетевые службы, которые запускают TTY. Такие программы, как su, sudo, ssh и другие связанные утилиты openssh будут иметь доступ к учетной записи root.
3. Отключение доступа к Root по SSH
Самый распространенный способ доступа к удаленным серверам или VPS — через SSH, и для блокировки входа пользователя root под ним необходимо отредактировать файл /etc /ssh /sshd_config.
Затем раскомментируйте (если это закомментировано) директиву PermitRootLogin и установите для нее значение no, как показано на скриншоте.
Как только вы закончите, сохраните и закройте файл. Затем перезапустите службу sshd, чтобы применить последние изменения в конфигурации.
Как вы, возможно, уже знаете, этот метод влияет только на набор инструментов 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/, как показано ниже.
Затем добавьте приведенную ниже конфигурацию в один из этих файлов (или в оба).
Когда вы закончите, сохраните и закройте каждый файл. Затем создайте простой файл /etc/ssh/deniedusers, который должен содержать по одному элементу в строке и не должен читаться всеми.
Добавьте в него имя root, затем сохраните и закройте его.
Также установите необходимые разрешения на это.
Этот метод влияет только на те программы и службы, которые поддерживают PAM. Вы можете заблокировать root-доступ к системе через ftp и почтовые клиенты и многое другое.
Для получения дополнительной информации обратитесь к соответствующим справочным страницам.
Источник
4 Ways to Disable Root Account in Linux
The root account is the ultimate account on a Linux and other Unix-like operating systems. This account has access to all commands and files on a system with full read, write and execute permissions. It is used to perform any kind of task on a system; to create/update/access/delete other users’ accounts, install/remove/upgrade software packages, and so much more.
Because the root user has absolute powers, any actions he/she performs are critical on a system. In this regard, any errors by the root user may have huge implications on the normal operation of a system. In addition, this account may also be abused by using it improperly or inappropriately either accidentally, maliciously, or through contrived ignorance of policies.
Therefore, it is advisable to disable the root access in your Linux server, instead, create an administrative account which should be configured to gain root user privileges using the sudo command, to perform critical tasks on the server.
In this article, we will explain four ways to disable root user account login in Linux.
Attention: Before you block access to the root account, make sure you have created an administrative account, capable of using sudo command to gain root user privileges, with the useradd command and give this user account a strong password. The flag -m means create user’s home directory and -c allows to specify a comment:
Next, add this user to the appropriate group of system administrators using the usermod command, where the switch -a means append user account and -G specifies a group to add the user in (wheel or sudo depending on your Linux distribution):
Once you have created a user with administrative privileges, switch to that account in order to block root access.
1. Change root User’s Shell
The simplest method to disable root user login is to change its shell from /bin/bash or /bin/bash (or any other shell that permits user login) to /sbin/nologin , in the /etc/passwd file, which you can open for editing using any of your favorite command line editors as shown.
Change the line:
Change root User Shell
Save the file and close it.
From now on, when root user logs in, he/she will get the message “This account is currently not available.” This is the default message, but, you can change it and set a custom message in the the file /etc/nologin.txt.
This method is only effective with programs that require a shell for user login, otherwise, sudo, ftp and email clients can access the root account.
2. Disable root Login via Console Device (TTY)
The second method uses a PAM module called pam_securetty, which permits root access only if the user is logging in on a “secure” TTY, as defined by the listing in /etc/securetty.
The above file allows you to specify which TTY devices the root user is allowed to login on, emptying this file prevents root login on any devices attached to the computer system.
To create an empty file, run.
This method has some limitations, it only affects programs such as login, display managers (i.e gdm, kdm and xdm) and other network services that launch a TTY. Programs such as su, sudo, ssh, and other related openssh tools will have access to the root account.
3. Disabl SSH Root Login
The commonest way of accessing remote servers or VPSs is via SSH and to block root user login under it, you need to edit the /etc/ssh/sshd_config file.
Then uncomment (if it is commented) the directive PermitRootLogin and set its value to no as shown in the screenshot.
Disable Root Login in SSh
Once you are done, save and close the file. Then restart the sshd service to apply the recent change in configurations.
As you may already know, this method only affects openssh tools set, programs such as ssh, scp, sftp will be blocked from accessing the root account.
4. Restrict root Acess to Services Via PAM
Pluggable Authentication Modules (PAM in short) is a centralized, pluggable, modular, and flexible method of authentication on Linux systems. PAM, through the /lib/security/pam_listfile.so module, allows great flexibility in limiting the privileges of specific accounts.
The above module can be used to reference a list of users who are not allowed to log in via some target services such as login, ssh and any PAM aware programs.
In this case, we want to disable root user access to a system, by restricting access to login and sshd services. First open and edit the file for the target service in the /etc/pam.d/ directory as shown.
Next, add the configuration below in both files.
When you are done, save and close each file. Then create the plain file /etc/ssh/deniedusers which should contain one item per line and not world readable.
Add the name root in it, then save and close it.
Also set the required permissions on this.
This method only affect programs and services that are PAM aware. You can block root access to the system via ftp and email clients and more.
For more information, consult the relevant man pages.
That’s all! In this article, we have explained four ways of disabling the root user login (or account) in Linux. Do you have any comments, suggestions or questions, feel free to reach us via the feedback form below.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Related Posts
19 thoughts on “4 Ways to Disable Root Account in Linux”
From my reading of the article, it looks like there is no one method that will universally (in ALL possible programs) disable root user from logging into the system. Each one of the mentioned methods disables root login for only certain programs. Seems like a hit and miss, error-prone procedure. The procedure to restore root access could be even more error-prone and fraught with pitfalls.
“any errors by the root user may have huge implications on the normal operation of a system. In addition, this account may also be abused by using it improperly or inappropriately either accidentally, maliciously, or through contrived ignorance of policies”.
It is to be assumed that, by the time somebody attains the position of System Administrator, that person has become thoroughly versed in command language and is trusted by management not to abuse his/her powers.
“It is advisable to disable the root access in your Linux server, instead, create an administrative account which should be configured to gain root user privileges using the sudo command, to perform critical tasks on the server”.
But is it logical? A System Administrator needs complete, unfettered access to a system to perform his/her job properly. To create an”administrative account” without access to ALL the commands and utilities is ludicrous. On the other hand, if this artificial “administrative account” has all the root privileges, then no problems have been prevented. Sudo command will in no way prevent system destruction through inappropriate use of commands. Neither will it prevent any abuse or willful bad acts.
This article is an exercise in what is theoretically possible but it has very little practical application.
Got something to say? Join the discussion. Cancel reply
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Источник