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

LFCA: Как улучшить безопасность системы Linux – Часть 20


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

Проблемы возникают, когда обычные пользователи имеют неконтролируемый доступ к ресурсам или непреднамеренно получают права root. Это серьезная угроза безопасности, которая может привести к взлому, нежелательным изменениям и, в худшем случае, к сбою системы. Другой потенциальный риск заключается в том, что файлы имеют менее безопасные разрешения. Например, загрузочные файлы с разрешениями на запись для глобальных пользователей могут быть легко изменены или повреждены, что приведет к поломке системы.

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

В области безопасности системы мы сосредоточимся на следующих ключевых моментах:

  • Права доступа – разрешения пользователей и групп.
  • Обеспечьте соблюдение политики паролей с помощью модуля PAM.

Права доступа – разделение пользователей и групп

Вы, наверное, слышали, что в Linux все считается файлом. А если нет, то это процесс. Каждый файл в системе Linux принадлежит пользователю и группе пользователей. Он также имеет права доступа к файлам для трех категорий пользователей: пользователь (u), группа (g) и другие (o). Разрешения представлены в виде чтения, записи и выполнения ( rwx) для каждой категории пользователей.

rwx        rwx	     rwx
User       Group     Others

Как было показано ранее, в разделе «Основы Linux» вы можете просмотреть права доступа к файлам, используя длинный формат команды ls, как показано.

ls -l

Напомним, что разрешения обычно обозначаются девятью символами. Первые три символа представляют права доступа фактического пользователя, владеющего файлом. Второй набор символов представляет разрешения группы владельца файла. Наконец, последний набор для других или глобальных пользователей. Эти символы постоянно находятся в порядке чтение, запись, выполнение (rwx).

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

Изменение разрешений и прав собственности на файл/каталог

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

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

Следовательно, если пользователю нужно только просмотреть содержимое файла или каталога, ему не следует предоставлять разрешения на выполнение или запись. На самом базовом уровне предоставляйте только минимальное количество разрешений и прав собственности, необходимых пользователю для выполнения задач. В разделе «Основные команды Linux» мы рассмотрели, как изменить права пользователей и владельцев файлов/каталогов с помощью команд chmod и chown.

Режим разрешения липкого бита

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

Липкий бит

В сценарии, когда к общему каталогу могут получить доступ все пользователи системы или сети, существует потенциальный риск того, что некоторые пользователи смогут удалить или изменить файлы внутри каталога. Это нежелательно, если вы хотите сохранить целостность содержимого каталога. И вот здесь-то и появляется липкий момент.

Липкий бит — это специальные права доступа к файлу, установленные для файла или всего каталога. Он предоставляет только владельцу этого файла/каталога разрешение на удаление или внесение изменений в содержимое файла или каталога. Ни один другой пользователь не может удалить или изменить файл/каталог. Он имеет символическое значение t и числовое значение 1000.

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

chmod +t directory_name

В приведенном ниже примере мы применили бит закрепления к каталогу под названием test. В случае каталога все содержимое унаследует разрешения липкого бита. Вы можете проверить разрешения липкого бита с помощью команды ls -ld. Обязательно обратите внимание на символ t в конце разрешений файла.

ls -ld test

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

И в этом суть разрешения файла Stick Bit.

Мониторинг разрешений SUID и SGID

SUID (Установить идентификатор пользователя) – это еще одно специальное разрешение файла, которое позволяет другому обычному пользователю запускать файл с разрешениями владельца файла. Обычно он обозначается символическим значением s в пользовательской части разрешений файла вместо x, который представляет разрешения на выполнение. SUID имеет числовое значение 4000.

SGID (установить идентификатор группы) позволяет обычному пользователю наследовать групповые разрешения владельца группы файлов. Вместо x для разрешений на выполнение вы увидите s в групповой части разрешений файла. SGID имеет числовое значение 2000.

Какими бы удобными они ни были, разрешения SUID и SGID связаны с угрозами безопасности, и их следует избегать любой ценой. Это связано с тем, что они предоставляют особые привилегии обычным пользователям. Если злоумышленник, выдающий себя за обычного пользователя, встретит исполняемый файл, принадлежащий пользователю root, с установленным битом SUID, он может использовать эту лазейку и эксплуатировать систему.

Чтобы найти все файлы с битом SUID, установленным в Linux, выполните команду find от имени пользователя root.

find / -perm -4000 type -f

Для каталогов выполните:

find / -perm -4000 type -d

Чтобы найти все файлы с установленным битом SGID, выполните:

find / -perm -2000 type -f

Для каталогов выполните:

find / -perm -2000 type -d

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

chmod u-s /path/to/file

Чтобы удалить бит SGID в файле, выполните команду:

chmod g-s filename /path/to/file

Обеспечьте соблюдение политики паролей с помощью модуля PAM

Пользователи нередко устанавливают слабые пароли. Многие устанавливают короткие, простые и легко угадываемые пароли, чтобы не забыть их при входе в систему. Несмотря на удобство, слабые пароли можно легко взломать с помощью сценариев атаки методом перебора.

Модуль PAM ( Подключаемый модуль аутентификации) — это модуль, который позволяет системным администраторам применять политики паролей в системах Linux. Для этого вам понадобится модуль pam_pwquality, предоставляемый библиотекой libpam_pwquality. Модуль pam_pwquality проверяет надежность пароля на соответствие набору правил и системному словарю и выявляет слабые варианты пароля.

Чтобы установить модуль pam_pwquality в Ubuntu 18.04 и более поздних версиях, запустите:

sudo apt install libpam_pwquality

Для RHEL/CentOS 8 выполните команду:

sudo dnf install libpwquality

Файл конфигурации находится в следующем месте:

  • В системах Debian – /etc/pam.d/common-password
  • В системах RedHat – /etc/pam.d/system-auth

Настройка политики паролей

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

Сведения об устаревании пароля

Их можно найти в файле /etc/login.defs.

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

  • PASS_MAX_DAYS: максимальное количество дней, в течение которых можно использовать пароль.
  • PASS_MIN_DAYS: минимальное число. дней между сменами пароля.
  • PASS_WARN_AGE: количество дней, в течение которых выдается предупреждение до истечения срока действия пароля.

Значения по умолчанию указаны ниже.

Атрибут PASS_MAX_DAYS ограничивает количество дней, в течение которых пользователь может использовать свой пароль. При достижении этого значения или истечении срока действия пароля пользователь вынужден сменить пароль, чтобы войти в систему. По умолчанию для этого значения установлено значение 99999, что соответствует 273 годам. С точки зрения безопасности это не имеет особого смысла, поскольку пользователь может продолжать использовать свой пароль в течение всей своей жизни.

Вы можете установить для этого значения значимое значение, скажем, 30 дней, как показано.

PASS_MAX_DAYS  30

По истечении 30 дней пользователь будет вынужден сменить пароль на другой.

Атрибут PASS_MIN_DAYS определяет минимальный срок, в течение которого пользователи могут использовать свой пароль, прежде чем изменить его. Что это значит? Если, например, для этого значения установлено значение 15 дней, пользователь не сможет снова изменить свой пароль до истечения 15 дней.

PASS_MAX_DAYS  15

Атрибут PASS_WARN_AGE определяет количество дней, в течение которых пользователь получит предупреждение о приближающемся истечении срока действия своего пароля до истечения срока его действия. Например, вы можете установить значение 7 дней, как показано.

PASS_MAX_DAYS  7

ПРИМЕЧАНИЕ. Эти элементы управления паролями не работают с уже существующими учетными записями. Они применяются только к новым учетным записям, созданным после определения правил.

Настройка сложности пароля с помощью модуля PAM

Прежде чем редактировать файл /etc/pam.d/common-password, создайте резервную копию. В этом примере мы создали файл резервной копии common-password.bak.

sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

Затем откройте файл.

sudo vim /etc/pam.d/common-password 

Найдите строку, показанную ниже.

password        requisite          pam_pwquality.so retry=3

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

Добавьте в строку следующие атрибуты:

minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username 

Давайте конкретизируем эти атрибуты.

  • minlen=10: устанавливает минимально допустимый размер пароля. В данном случае 10 символов.
  • difok=3: максимальное количество символов, содержащихся в предыдущем пароле.
  • lcredit=-1: это минимальное количество символов нижнего регистра, которое должно присутствовать в пароле.
  • ucredit=-1: максимальное количество символов нижнего регистра, которое должно присутствовать в пароле.
  • dcredit=-1: минимальное количество цифровых символов, которое должно быть определено в пароле.
  • ocredit=-1: минимальное количество специальных символов, например @, # и, которые должны быть определены в пароле.
  • reject_username: этот параметр вызывает отклонение пароля, если пароль представляет собой имя пользователя в прямом или обратном формате.

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

Краткое содержание

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