Главная » 2013 » Декабрь » 12 » 8.9. Система обнаружения и защиты от вторжения
01:54
8.9. Система обнаружения и защиты от вторжения

8.9.1. Что такое LIDS?

LIDS (Linux Intrusion Detection System) – система обнаружения вторжения. Данная система представляет собой патч к ядру, который позволяет обнаружить и защитить вашу систему от вторжения.

Система LIDS была создана китайским и французским разработчиками Xie Huagang и Philippe Biondi и доступна на сайте http://www. Iids. org. На этом сайте доступна как сама система LIDS, так и документация к ней. Однако разработчики системы не спешат обновлять документацию к новым версиям системы. А документация по версии 0.8.x ничем вам не поможет, если вы используете версию 0.9.x. Поэтому в этой главе я не буду рассматривать одну определенную версию, так как при выходе следующей версии этот материал безнадежно устареет, а рассмотрю общую настройку LIDS – все написанное в этой главе должно работать у вас вне зависимости от версии LIDS.

Система LIDS позволяет запретить или просто ограничить доступ пользователя root к файлам, сетевым интерфейсам, памяти, блочным устройствам. Почему именно пользователя root, я думаю, вы уже догадались: ограничить доступ любого пользователя можно с помощью стандартных средств самой Linux. В первую очередь система защищает систему от злоумышленника, который, воспользовавшись багом («дырой» или функцией на языке Microsoft) какой‑нибудь программы, получил права root.

Основным преимуществом системы LIDS является то, что ее нельзя отключить обычными способами.

Во‑первых, для отключения LIDS необходимо находиться непосредственно за компьютером жертвы, а такое могут себе позволить не все хакеры.

Примечание. Значение слова «хакер» значительно объемнее, чем просто «вандал», пытающийся разрушить вашу систему. Подробнее вы можете прочитать об этом в документе Hacker‑HOWTO, который вы найдете на прилагаемом к книге CD.

Во‑вторых, чтобы снять защиту с определенного объекта, например, файла /etc/passwd, нужно знать пароль администратора LIDS, а не пользователя root. Этот пароль хранится в зашифрованном виде в специальном файле. А этот файл, в свою очередь, «виден» только программе LIDS, вы его не увидите, даже если введете команду Is –l. Таким образом можно защитить не только файл паролей LIDS, но и файл /etc/passwd, предварительно разрешив доступ к нему только программам login, su и passwd, то есть тем программам, которым действительно этот файл нужен. Ограничить доступ можно по‑разному, например, разрешив одной программе только читать файл, а другой – записывать в него.

LIDS может запретить загрузку или выгрузку модулей ядра, защитив вас таким образом от модулей‑троянов. С помощью LIDS также можно запретить перезагрузку системы.

Встроенный детектор сканирования портов позволяет обнаружить большинство известных методов сканирования.

О любых «незаконных» действиях по отношению к защищенным с помощью LIDS объектам будет сообщено по электронной почте администратору, что позволит ему незамедлительно отреагировать на попытку взлома.

8.9.2. Установка LIDS

Для работы LIDS необходимо ядро версии 2.2.13 или выше. Загрузить версию LIDS для вашего ядра можно по адресу http://www. lids. org/download.

Сразу следует оговориться, что вам нужно будет настроить систему LIDS так, чтобы она была незаметной для остальных пользователей вашей системы и, в то же время, препятствовала бы вторжению в вашу систему. Для этого нужно учесть работу всех программ, поскольку после установки LIDS некоторые программы могут не функционировать. В связи с этим не устанавливайте LIDS на рабочей станции или на своем домашнем компьютере: работу на системе, защищенной с помощью LIDS, комфортной не назовешь. Идеальным узлом сети для установки LIDS является сервер или Firewall, ограничивающий внутреннюю локальную сеть от Интернет. На сервере установлено сравнительно малое количество программ (в основном – это серверы служб), поэтому вам не нужно учитывать многочисленные пользовательские программы. В самом крайнем случае LIDS можно установить на рабочей станции, напрямую (то есть не через бастион) подключенной к Интернет. При большом количестве программ, установленных на рабочей станции, настройка LIDS может оказаться намного сложнее, чем в случае с сервером.

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

Итак, если вы решили установить LIDS, приступим к ее установке. Для начала убедитесь, что у вас есть копия исходных текстов ядра (например, в виде rpm‑пакетов). Если ее нет, скопируйте исходные тексты ядра в другой каталог – на всякий случай. Это правило относится не только к LIDS, а и ко всем программам, которые добавляют патчи или сами являются патчами к ядру Linux. Распакуйте LIDS:

В номере версии LIDS я заменил номера версии буквами х, а номера версии ядра – буквами k. Теперь перейдите в каталог /usr/src и введите команду:

Этой командой вы добавите патч LIDS к вашему ядру (LIDS я распаковал в каталог/usr/src). Затем нужно установить программу администрирования системы LIDS, а потом пересобрать ядро с поддержкой LIDS. С этой целью перейдите в каталог/usr/src/LlDS‑x. x.x/lidsadm‑x. x.x и введите команды:

Если в процессе выполнения команды make install вы увидите сообщение, что не найден файл lidsadm.1.gz (такое наблюдалось в версии LIDS 0.9.8), просто введите команду:

А затем снова – make install.

Теперь займемся конфигурированием ядра. Перейдите в каталог с исходными текстами ядра и запустите программу menuconfig (команда make menuconfig). Вам нужно включить следующие опции:

1. Prompt for development and/or incomplete code/drivers (Code maturity level options).

2. Sysctl support (General Setup).

3. Linux Intrusion Detection System support (EXPERIMENTAL) (General Setup).

При включении поддержки LIDS вы увидите список опций LIDS (табл. 8.9).

Опции LIDS Таблица 8.9

Опция

Описание

Maximum protected objects to manage

Максимальное количество защищаемых объектов. По умолчанию 1024. Пока не следует изменять данное значение

Maximum ACL subjects to manage

Максимальное количество субъектов правил. О субъектах и о правилах мы поговорим в следующем пункте, а пока оставьте данное значение без изменения (1024)

Maximum ACL

Objects to manage Максимальное количество объектов правил

Maximum protected proceeds

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

Hang up console when raising security alert

Отключает консоль злоумышленника при попытке доступа к защищенному объекту. Рекомендую включить данную опцию

Security alert when excepting unprotected programs before sealing LIDS

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

Do not execute unprotected programs before sealing LIDS

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

Try not to flood logs

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

Allow switching LIDS protections

Включает или выключает защиту LIDS, то есть это возможность включения или выключения LIDS в процессе работы системы после ввода пароля администратора LIDS. Включите эту опцию. При включении этой опции вы увидите список подобных опций, например, опция Allow remote users to switch LIDS protections, разрешающая включать или выключать защиту LIDS удаленным пользователям. Не включайте эти опции! (особенно опцию allow any program to switch LIDS protections)

Port Scanner Detector in kernel

Эта опция добавляет мощный сканер портов в ядро, определяющий практически все известные способы сканирования портов. Несмотря на увеличение размера ядра, включите эту опцию

Send security alerts through network

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

LIDS debug (не во всех версиях LIDS)

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

Теперь убедитесь, что вы находитесь в каталоге /usr/src/linux и введите команды:

Примечание. Вместо пяти вышеуказанных команд можно ввести одну команду:

Параметры (clean, dep…) – это просто цели для сборки. Каждая цель определяет какие‑нибудь действия, например, modules собирает модули, a modules_install – устанавливает модули ядра.

Теперь перейдем к настройке самой системы LIDS. Ни в коем случае не перезагружайте систему, чтобы убедиться, работает ли ядро или нет! Сначала нужно настроить LIDS, а только затем перезагрузить компьютер, чтобы убедиться, что все работает правильно. При настройке LIDS будьте предельно внимательны, иначе последствия могут быть катастрофическими, особенно, если у вас нет загрузочной дискеты.

8.9.3. Базовая настройка

После установки системы LIDS в каталоге /etc у вас появится подкаталог /lids. В нем вы обнаружите четыре файла: lids. cap, lids. net, lids. pw, lids. conf.

В первом из них хранятся текущие установки способностей (cap – от Capabilities– способности). О том, что такое способности, мы поговорим немного позже.

Во втором файле (lids. net) находятся установки для отправки сообщений электронной почты. В третьем (lids. pw) – пароль в зашифрованном виде. Система LIDS использует метод шифрования RipeMD‑160. Пароль можно изменить только с помощью программы lidsadm. В последнем файле определяются правила доступа. Этот файл можно изменять только с помощью программы lidsadm.

[+/‑]номер:название

Если в первом поле установлен знак «+», значит эта способность включена. Номер – это просто порядковый номер способности. Название определяет действие, разрешенное или запрещенное программам. Выключение способности распространяется на все программы, кроме тех, которые непосредственно указаны в правилах доступа с помощью программы lidsadm. Если способность включена, ее ограничение распространяется на все без исключения программы. Нельзя установить ограничение на все программы, кроме нескольких. Пример файла lids. сaр приведен в листинге 8.15.

Листинг 8.15. Пример файла lids. cap

Способности Таблица 8.10

Способность

Описание

CAP_CHOWN

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

CAP_DAC_OVERRIDE

Программы, запускаемые пользователем root, не будут принимать во внимание права доступа к файлам. Например, если режим доступа к файлу пользователя равен 0600, то даже root не сможет открыть его (получить доступ к файлу)

CAP_DAC_READ_SEARCH

То же самое, но для каталогов (режимы доступа: чтение и поиск)

CAP_FOWNER

Запрещает операции с файлами, если идентификатор владельца файла не совпадает с идентификатором пользователя, который выполняет операцию

CAP_FSETID

Разрешает установку битов SUID и SGID для файлов, не принадлежащих пользователю root

CAP_KILL

Разрешает процессам пользователя root завершать («убивать») процессы других пользователей

CAP_SETGID

Разрешает программам изменять группу, под которой они работают. Программа должна быть запущена пользователем root. Эту возможность используют программы: httpd, sendmail, safe_mysql, safe_finger, postfix, ftpd

CAP_SETUID

Разрешает программам изменять пользователя, под которым они работают. Программа должна быть запущена пользователем root

CAP_SETPCAP

Включает способность программ редактировать способности

CAP_LINUX_IMMUTABLE

Отключите данную способность. Эта способность относится к таким атрибутам файлов, как S_IMMUTABLE (команда chattr –i) и S_APPEND (chattr –a)

CAP_NET_BIND_SERVICE

Разрешает программам прослушивать порты с номерами, меньшими 1024

CAP_NET_BROADCAST

Разрешает программам отправлять широковещательные пакеты

CAP_NET_ADMIN

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

CAP_NET_RAW

Разрешает программам использовать сокет‑соединения (Raw Unix Socket)

CAP_IPC_LOCK

Разрешает процессам пользователя root блокировать сегменты разделяемой памяти

CAP_IPC_OWNER

Разрешает процессам пользователя root вмешиваться в межпроцессорное взаимодействие процессов других пользователей

CAP_SYS_MODULE

Управляет способностью загружать (выгружать) модули ядра. Отключите данную способность

CAP_SYS_RAWIO

Управление доступом к файлам устройств, например, /dev/mem, /dev/hd*, /dev/sd*. Другими словами, разрешает прямой ввод/вывод

CAP_SYS_CHROOT

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

CAP_SYS_PTRACE

Разрешает программа использовать функцию ptrace(). Включите данную способность

CAP_SYS_PACCT

Управляет способностью конфигурировать учет процессов. Отключите данную способность

CAP_SYS_ADMIN

Управляет способностью изменения многих системных параметров: от установления имени компьютера до монтирования дисков. Отключите данную способность, иначе ничего не сможете сделать в системе

CAP_SYS_BOOT

Управляет способностью перезагружать машину

CAP_SYS_NICE

Управляет способностью изменять приоритет процессов других пользователей

CAP_SYS_RESOURCE

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

CAP_SYS_TIME

Разрешает изменять системное время

CAP_SYS_TTY_CONFIG

Разрешает изменять настройки консолей

CAP HIDDEN

Разрешает программам становиться невидимыми в списке процессов

CAP_INIT_KILL

Разрешает «убивать» потомков процесса init. К потомкам относятся практически все демоны, запущенные при запуске системы

Для инициализации способностей используются команды lidsadm –I. Эту команду обычно помещают в сценарии автозагрузки системы, например, rc. lосаl, и, как правило, эта команда должна быть последней, чтобы могли беспрепятственно загрузиться демоны и инициализироваться сетевые интерфейсы.

Теперь перейдем к настройке параметров отправления сообщений электронной почты. Эти параметры, как уже было отмечено, находятся в файле lids. net (см. листинг 8.16).

Листинг 8.16. Файл lids. net

Первый параметр включает (1) или отключает (0) функцию отправки сообщения. Параметр MAIL_RELAY определяет IP‑адрес сервера SMTP и порт сервиса SMTP. MAIL_SOURCE – это источник почты, то есть узел, отправивший сообщение. Параметр MAIL_FROM устанавливает адрес отправителя, а MAIL_TO – адрес получателя. MAIL_SUBJECT – это тема сообщения.

В качестве адреса получателя рекомендую установить номер мобильного телефона, точнее e‑mail‑адрес, который сопоставлен с вашим номером телефона. Этот адрес можно узнать у вашего оператора мобильной связи. В этом случае сообщение о вторжении будет отправлено по SMS прямо на мобильный телефон, что очень удобно – не будете же вы всегда находиться возле компьютера, ожидая сообщения от LIDS?

Следующий этап настройки системы LIDS – это изменение пароля администратора системы LIDS. Для изменения пароля (точнее, установки нового пароля), введите команду:

8.9.4. Правила доступа

Правила доступа системы LIDS чем‑то напоминают правила бастиона, но данные правила распространяются не на пакеты, а на программы. Правила доступа хранятся в файле lids. conf и редактировать этот файл можно только с помощью программы lidsadm. Первоначально у вас уже установлены определенные правила, просмотреть которые вы можете с помощью команды:

Обновить правила вы можете с помощью команды:

Я рекомендую вам очистить все правила и создать собственные. К тому же, первоначально установленные правила у вас не будут работать, так как кроме имени файла система LIDS также использует и номер mode, а в вашей системе номера информационных узлов (inodes) будут отличаться от номеров узлов на машине разработчиков LIDS. Очистить правила можно с помощью команды:

Правила состоят из трех частей:

1. Объекта.

2. Субъекта.

3. Доступа (цели).

Объект – это любой объект (файл, каталог), который будет защищен с помощью системы LIDS или на который будет действовать ограничение доступа. Если защитить каталог, то будут защищены все файлы в этом каталоге, все подкаталоги, все файлы в подкаталогах и т. д.

Субъектом является защищенная программа, которой предоставляется доступ к защищенному объекту. Субъект также должен быть защищен с помощью LIDS.

Параметр доступ (цель) устанавливает тип доступа к объекту:

READ – чтение.

WRITE – запись.

DENY – запрещает любой доступ.

APPEND – разрешает запись в конец файла.

IGNORE – игнорирование защиты.

Устанавливается правило так:

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

Для начала защитим нашу систему от самого известного «троянского коня» – rootkit. О том, что такое rootkit и какой вред он может причинить вашей системе вы можете прочитать в статье Инги Захаровой «Сканирование на предмет обнаружения rootkit'oB» http://www. softerra. ru/review/security/16999/page1.html.

Пакет rootkit заменяет стандартные утилиты администрирования их «поддельными» версиями, что позволяет скрыть следы атаки и несанкционированного доступа.

Для защиты от такого рода «троянов» создайте такие правила:

Как видите, мы не определили субъект в наших правилах, поэтому установленные ограничения будут распространяться на все программы: мы разрешаем доступ «только чтение» всем программам, но запрещаем запись в указанные каталоги.

Как я уже отмечал, при установке правил нужно учитывать особенности установленных в вашей системе программ. Если оставить все как есть, некоторые программы не смогут работать. Например, программа mount пишет в файл /etc/mtab при монтировании новой файловой системы. Установите такие дополнительные правила, разрешив некоторым субъектам доступ WRITE к некоторым файлам:

Однако в этих правилах перечислены далеко не все субъекты, которым необходим доступ к указанным объектам, но этих правил достаточно для запуска системы и монтирования файловых систем. В этой главе будут еще рассмотрены субъекты регистрации пользователей в системе, которым необходим доступ к файлам /etc/passwd и /etc/shadow, а правила для всех остальных программ, которые используются в вашей системе вам предстоит добавить самостоятельно. Вот эти правила:

Если не добавлять в систему LIDS последние три правила, никто (даже root) не сможет зарегистрироваться в системе. Иногда такая возможность бывает полезной, например, при создании стационарных серверов, не нуждающихся в администрировании. Такими серверами могут быть маршрутизаторы между подсетями большого предприятия. Если увеличение количества подсетей не предвидится, можно вообще отключить регистрацию пользователей (в том числе и пользователя root). Изменить конфигурационные файлы в такой системе можно, загрузившись с системной дискеты. Естественно, что такую дискету нужно создать до установки LIDS.

Полезно также защитить системные журналы от изменений. Для этого нужно защитить каталог /var/log, установив доступ READ для всех программ, а затем отдельно разрешив каждой программе писать только в свой протокол. Это довольно утомительный процесс, но один раз проделав его, вы будете уверены, что никто уже не сможет изменить протоколы, чтобы «замести следы». При использовании программы logrotate предоставьте ей доступ ко всему каталогу /var/log.

В качестве объекта могут выступать не только программы, но и способность. Например, вы можете выключить способность для всех программ и предоставить ее только какой‑нибудь одной определенной. Доступом в этом случае будут являться такие режимы:

INHERIT –  предоставлять потомкам процесса данную возможность.

NO_INHERIT – не предоставлять.

Для определения таких правил используется команда:

Вся разница между указанием обыкновенного объекта и способности заключается в наличии параметра –t.

После настройки LIDS перезагрузите систему для проверки ее работоспособности. Если что‑то пошло не так, загрузите Linux, передав ядру параметр security=0. Указание данного параметра отключит систему LIDS и вы сможете настроить ее заново:

8.9.5. Администрирование LIDS

Иногда уже в процессе работы системы нужно отключить или включить некоторые способности или произвести некоторые действия, которые запрещены с помощью системы LIDS, например, добавить какой‑нибудь модуль в ядро при включенной способности CAP_SYS_MODULE.

Администрирование системы LIDS выполняется с помощью все той же программы – lidsadm. Каждый раз при выполнении программы lidsadm у вас будет запрошен пароль. Каждая попытка запуска lidsadm будет фиксироваться в протоколах, так же как и каждая попытка ввода неправильного пароля. В зависимости от настроек вашей системы на указанный вами e‑mail будут посылаться сообщения при каждой попытке подобрать пароль администратора LIDS. Формат использования lidsadm в данном контексте таков: lidsadm –S ‑ +/‑флаг

При администрировании доступны флаги, указанные в табл. 8.11.

Флаги администрирования LIDS Таблица 8.11

Флаг

Описание

‑LIDS

Прекращение работы системы LIDS в текущей оболочке и всех его потомках. При этом вам можно будет запускать программы, запуск которых был запрещен при работе LIDS. Однако в глобальных масштабах (в масштабах всей системы) работа LIDS не будет прекращена, а это значит, что действия других пользователей будут ограничены системой LIDS. Обычно этот режим наиболее оптимален при администрировании LIDS

+LIDS

Возобновляет работу LIDS после ее останова

+RELOAD_CONF

При указании этого флага LIDS перечитывает файлы конфигурации

LIDS_GLOBAL

Прекращение или возобновление работы LIDS в масштабах всей системы

Способность

Включает или выключает указанную способность

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

Теперь разберемся подробнее с этим примером. Сначала вы останавливаете работу LIDS для текущей оболочки. Затем вы редактируете файлы конфигурации, например, файл lids. cap. Потом вы заставляете LIDS перечитать файлы конфигурации и возобновляете ее работу. При этом на время правки файлов конфигурации система LIDS будет функционировать для других пользователей.

Приведу еще один полезный пример. Например, вы включили способность CAP_SYS_MODULE, а вам нужно добавить модуль «на лету», то есть в процессе работы системы. Для этого не нужно останавливать всю систему, достаточно просто отключить данную способность, добавить модуль и включить способность снова.

Категория: Конфигурирование сервера | Просмотров: 450 | Добавил: spb_serge | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: