Защита протоколов от посторонних

Действия взломщика, выполняемые в ходе внедрения, скорее всего, будут запечатлены в различных системных протоколах (журналах). Это хорошая «зацепка» для аудита, и ее необходимо защитить. Без надежных протоколов было бы очень сложно понять, как взломщик проник в систему или откуда была произведена атака. Эта информация является ключевой для анализа инцидента и используется в ходе общения участвующих в нем сторон. Однако если попытка взлома оказалась успешной и нарушитель получил root-полномочия, что остановит его от удаления следов своих действий? Вот когда атрибуты файла спасают положение (или хотя бы облегчают его). В Linux- и BSD-системах имеется возможность присваивать файлам и каталогам дополнительные атрибуты. В этом состоит отличие от стандартной схемы разрешений Unix, в которой атрибуты, определенные для файла, применяются глобально ко всем пользователям системы и влияют на доступ к файлам на более низком уровне, чем разрешения файлов и ACL. В Linux просмотреть и изменить атрибуты, установленные для определенного файла, можно с помощью команд Isattr и chattr соответственно. В BSD-системах для просмотра используется команда Is -Tо, а для изменения — команда chflags. На момент написания этих строк атрибуты файлов в Linux доступны только при использовании файловых систем ext2 и ext3. Также существуют обновления ядра, обеспечивающие поддержку атрибутов в XFS и reiserfs.
Одним из полезных атрибутов файла протокола является append-only (только добавление). Когда установлен этот атрибут, файл невозможно удалить, допускается только добавление записей в конец файла.
Для установки флага append-only в ОС Linux выполните команду.

# chattr +а имя_файла

В BSD-системах используется следующая команда:
# chflags sappnd имя_файла
Вот как работает атрибут +а (создаем файл и устанавливаем атрибут):
# touch /var/log/logfile
# echo "append-only not set" > /var/log/logfile
# chattr +a /var/log/logfile
# echo "append-only set" > /var/log/logfile bash: /var/log/logfile: Operation not permitted
Вторая попытка записи была неудачной, поскольку привела к перезаписи файла. Однако добавление в конец файла по-прежнему возможно:
# echo "appending to file" » /var/log/logfile
# cat /var/log/logfile append-only not set appending to file   Очевидно, что взломщик, уже получивший root-полномочия, может понять, что используются атрибуты файла, и просто удалит атрибут append-only из протоколов с помощью команды chattr -а. Чтобы не допустить этого, необходимо отключить возможность удаления этого атрибута. Для этого в ОС Linux воспользуйтесь механизмом capabilities, а в BSD-системах — функцией securelevel. Модель capabilities (мандат) в Linux разделяет привилегии, предоставляемые «всемогущей» учетной записи root, и позволяет избирательно отключать их. Для предотвращения возможности удаления атрибута необходимо удалить мандат CAP LINUX IMMUTABLE. Когда в работающей системе этот мандат активен, допускается модификация атрибутов. Для модификации набора мандатов, имеющихся в системе, используется простая утилита leap (http://packetstorrnsecurity.org/ linux/admin/lap-0.0.3.tar.bz2).
Для распаковки и компиляции этого средства выполните команду
# tar xvfj Icap-0.0.3.tar.bz2 && cd lcap-0.0.3 && make
После этого для отключения возможности модификации атрибута append-only выполните:
# ./leap CAP_LINUX_IMMUTABLE
# ./leap CAP_SYS_RAWIO
необходимо убедиться, что удаление мандатов в общем порядке загрузки выполняется позже. После того как leap удаляет мандаты ядра, они могут быть восстановлены только перезагрузкой системы.
BSD-системы реализуют эту же возможность с помощью securelevels. Securelevels по переменная ядра, которая может устанавливаться для отключения некоторой функциональности. Установка securelevels в 1 аналогична удалению двух только что рассмотренных мандатов Linux. После того как securelevels присвоено значение более 0, его невозможно понизить. По умолчанию OpenBSD в многопользовательском режиме устанавливает secure! evel в 1. Во FreeBSD securelevel устанавливается в 1 по умолчанию.
Для изменения такого поведения добавьте в /etc/sysctl.conf следующую строку: kern.securelevel=1
Прежде чем сделать это, необходимо учесть, что установка флагов append-only на протоколах, скорее всего, вызовет неудачное выполнение сценариев системы хранения протоколов. Однако реализация этой возможности значительно повышает безопасность аудита, который является неоценимым при доказывании любых событий.

Метки:

Статьи по теме