Поиск по сайту:

Как ограничить команду Su авторизованными пользователями в Linux

Ограничение использования команды su в Linux для лучшей защиты.

Команда su — это мощный инструмент, который можно использовать для переключения на учетную запись другого пользователя. Однако злоумышленники также могут использовать его для получения несанкционированного доступа к вашей системе. Ограничивая использование команды su, вы можете защитить свою систему Linux от несанкционированного доступа.

Введение

В нашем предыдущем руководстве мы узнали, как «предоставить или запретить доступ sudo к группе» в Linux, чтобы повысить безопасность и улучшить управление группами. Однако одного этого может быть недостаточно.

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

Чтобы решить эту проблему, нам необходимо убедиться, что только определенные учетные записи имеют право использовать команду su. Этот дополнительный шаг повысит безопасность нашей системы. В этом кратком руководстве мы узнаем, как ограничить использование команды su авторизованными пользователями в Linux.

Вот некоторые причины, по которым вы можете захотеть ограничить использование команды su:

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

1. Ограничьте использование команды Su отдельными пользователями в Debian и его производных.

Чтобы ограничить круг лиц, которые могут использовать команду su, нам нужно создать специальную группу и разрешить только членам этой конкретной группы использовать команду su. Давайте посмотрим, как это сделать.

1. Для целей данного руководства я собираюсь создать двух пользователей, а именно user1 и user2.

sudo adduser user1
sudo adduser user2

2. Затем создайте новую группу под названием adminmembers.

sudo groupadd adminmembers

3. Добавьте в группу пользователей «user1» и «user2».

sudo usermod -aG adminmembers user1
sudo usermod -aG adminmembers user2

Аналогично добавьте в эту группу всех остальных пользователей.

Вы можете проверить членов этой группы с помощью команды:

getent group adminmembers

Пример вывода:

adminmembers:x:1005:user1,user2

4. Теперь выполните следующую команду, чтобы разрешить использование команды su только членам группы 'adminmembers':

sudo dpkg-statoverride --update --add root adminmembers 4750 /bin/su

Здесь команда sudo dpkg-statoverride --update --add используется для переопределения прав доступа к файлам и владения определенным файлом в дистрибутиве Linux на основе Debian. В данном случае команда устанавливает специальное разрешение и право собственности на двоичный файл /bin/su.

Давайте разберем команду:

  • sudo: используется для запуска команды с правами суперпользователя (root). Для изменения системных файлов вам потребуются права администратора.
  • dpkg-statoverride: это инструмент командной строки в системах на базе Debian, который позволяет вам переопределять права доступа к файлам и право собственности на пакеты, управляемые менеджером пакетов.
  • --update: этот параметр указывает dpkg-statoverride обновить указанное переопределение, если оно уже существует.
  • --add: этот параметр указывает, что мы хотим добавить новое переопределение.
  • root: указывает пользователя, чье право собственности будет установлено для файла.
  • adminmembers: указывает группу, чье право собственности будет установлено для файла.
  • 4750: это числовое представление прав доступа к файлу. Значение 4750 представляет собой специальное разрешение, называемое «SetUID» (установить идентификатор пользователя) при выполнении. Если в двоичном файле su установлен бит SetUID, он запускается с эффективным идентификатором пользователя владельца файла (root), а не пользователя, выполнившего его. Это позволяет обычным пользователям временно переключаться на привилегии пользователя root при запуске su.
  • /bin/su: это путь к файлу, для которого устанавливается переопределение. В данном случае это двоичный файл /bin/su, который позволяет пользователям переключаться на учетную запись другого пользователя (часто пользователя root) после предоставления необходимого пароля.

Таким образом, команда добавляет переопределение разрешений и владения двоичным файлом /bin/su. Он устанавливает владельца файла как root, группу как adminmembers и дает разрешение SetUID для файла. Это означает, что когда пользователи запускают команду su, она будет выполняться с привилегиями root, что позволит им переключиться на пользователя root или другого пользователя с привилегиями суперпользователя после предоставления соответствующего пароля. Лица, не являющиеся членами группы «adminmembers», не могут использовать команду su, даже если у них есть привилегии sudo.

Давайте проверим это. Прямо сейчас я вошел в свою систему как пользователь с именем «ostechnix», и у этого пользователя есть привилегии sudo.

sudo -lU ostechnix
[sudo] password for ostechnix: 
Matching Defaults entries for ostechnix on debian12:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
    use_pty

User ostechnix may run the following commands on debian12:
    (ALL : ALL) ALL

Как вы видите в приведенном выше выводе, пользователь «ostechnix» может запускать все команды.

Теперь давайте воспользуемся командой su и посмотрим, что произойдет.

su - user1

Пример вывода:

-bash: /usr/bin/su: Permission denied

Видеть? Пользователь ostechnix не может использовать команду su, несмотря на наличие привилегий sudo, поскольку он не является членом группы adminmembers. Потому что мы ограничили использование команды su только членами этой конкретной группы.

Переключение пользователя с помощью команды su

Теперь выйдите из текущего сеанса и снова войдите в систему как «пользователь1», «пользователь2» или любой член группы «adminmembers».

И проверьте, работает ли команда su:

user1@debian12:~$ whoami
user1
user1@debian12:~$ 
user1@debian12:~$ su - user2
Password: 
user2@debian12:~$ 
user2@debian12:~$ whoami
user2
user2@debian12:~$ 
user2@debian12:~$ su - user1
Password: 
user1@debian12:~$ 
user1@debian12:~$ whoami
user1
user1@debian12:~$ 

Ограничьте использование команды Su отдельными пользователями

Как вы можете видеть в приведенном выше выводе, и «user1», и «user2» имеют возможность переключаться между разными учетными записями пользователей с помощью команды su, поскольку они оба являются членами группы «adminmembers».

1.1. Верните команду su к исходной конфигурации.

Чтобы отменить изменения, внесенные командой sudo dpkg-statoverride --update --add root adminmembers 4750 /bin/su, вам необходимо удалить переопределение, установленное для /bin/ su двоичный. Команда dpkg-statoverride позволяет вам управлять правами доступа к файлам и владением пакетами в системах на базе Debian.

Чтобы удалить переопределение двоичного файла /bin/su, выполните следующие действия:

1. Проверьте текущую конфигурацию dpkg-statoverride:

Прежде чем удалять переопределение, рекомендуется проверить, существует ли переопределение для /bin/su и какова текущая конфигурация. Запустите следующую команду, чтобы просмотреть текущие настройки dpkg-statoverride:

dpkg-statoverride --list /bin/su

Эта команда покажет вам текущие разрешения и права собственности для двоичного файла /bin/su.

Пример вывода:

root adminmembers 4750 /bin/su

2. Удалите запись dpkg-statoverride:

Чтобы удалить переопределение, используйте следующую команду:

sudo dpkg-statoverride --remove /bin/su

Эта команда удалит запись переопределения для /bin/su.

3. Сбросьте исходные разрешения (при необходимости):

Если вы хотите сбросить разрешения /bin/su до значения по умолчанию, используйте следующую команду:

sudo chmod 4755 /bin/su

Значение 4755 устанавливает бит SetUID в файле, что позволяет команде su запускаться с правами root.

Верните команду su к исходной конфигурации.

Выполнив эти действия, вы должны отменить изменения, внесенные начальной командой sudo dpkg-statoverride --update --add root adminmembers 4750 /bin/su, и вернуть /bin/su двоичный файл в исходную конфигурацию.

Предупреждение. Всегда соблюдайте осторожность при изменении конфигурации системы, особенно при работе с правами доступа к файлам и владением ими, поскольку неправильные изменения могут повлиять на безопасность и стабильность системы.

2. Ограничьте использование команды Su в системах на базе RHEL.

Предыдущий метод предназначен только для Debian и его производных, таких как Ubuntu. Процесс ограничения использования команд su в RPM отличается. Давайте посмотрим, как это сделать.

Чтобы ограничить использование команды su в системах на базе RHEL, выполните следующие действия:

1. Создайте нового пользователя (например, «user1») и добавьте его в группу «wheel»:

sudo adduser user1
sudo passwd user1
sudo usermod -G wheel user1

Это предоставляет пользователю «user1» доступ к команде su через группу «wheel», которая часто настраивается на особые привилегии.

2. Откройте файл конфигурации PAM для su с помощью текстового редактора:

sudo nano /etc/pam.d/su

3. Добавьте следующую строку в конец файла или раскомментируйте эту строку, если она уже существует:

auth required /lib/security/pam_wheel.so use_uid

Альтернативно вы можете раскомментировать или добавить эту строку:

auth required pam_wheel.so use_uid

4. Сохраните изменения и закройте файл.

Благодаря этим шагам использование команды su будет ограничено, и ее смогут использовать только пользователи, принадлежащие к группе «wheel».

Когда вы попытаетесь использовать команду su из группы, не являющейся членом группы Wheel, вы увидите вывод, подобный приведенному ниже:

[user3@Almalinux9ct ~]$ su - user1
Password: 
su: Module is unknown

Ограничить использование команды Su в системах на базе RHEL

Чтобы вернуться к исходным настройкам, просто закомментируйте или удалите строку, добавленную на предыдущем шаге.

Часто задаваемые вопросы

Вопрос: Что такое команда su в Linux?

О: Команда su, сокращенно от «переключить пользователя», позволяет пользователям выполнять команды от имени другого пользователя, часто root-пользователя с привилегиями суперпользователя.

Вопрос: Почему я должен ограничивать использование команды su?

О: Ограничение использования команды su повышает безопасность, ограничивая доступ к привилегированным операциям и снижая риск того, что неавторизованные пользователи получат неограниченный контроль над системой.

Вопрос: Как я могу ограничить использование команды su?

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

Вопрос: Как предоставить доступ к su определенной группе?

О: Добавьте нужных пользователей в назначенную группу (например, «wheel») и настройте файл /etc/pam.d/su, чтобы требовать членства в этой группе для su. командный доступ.

Вопрос: Как проверить, ограничена ли команда su соответствующим образом?

О: Используйте команду su с непривилегированным пользователем, чтобы убедиться, что доступ ограничен только авторизованными пользователями или группами.

Заключение

Ограничение использования команды su в Linux — жизненно важный шаг на пути к усилению безопасности системы Linux и защите конфиденциальной информации. Тщательно контролируя доступ к привилегированным командам, таким как su, мы можем снизить риск того, что неавторизованные пользователи получат повышенные привилегии и потенциально скомпрометируют систему.

Реализация этих ограничений в сочетании с другими передовыми методами обеспечения безопасности создает более отказоустойчивую и безопасную среду Linux.

Связанное чтение:

  • Как запускать команды от имени другого пользователя через Sudo в Linux

Статьи по данной тематике