Intro
LIDS (Linux Intrusion Detection System) - по моему самый мощный
IDS для Linux систем (ну не считая всеми любимого SNORT-a). Его основными авторами и разработчиками являются: Xie Huagang из Китая (ему принадлежит идея создания LIDS-а), Philippe Biondi из Франции, администратор Steve Bremer (ведет LIDS_FAQ). При создании LIDS-а разработчики выделили основную проблему, связанную с безопасностью Linux систем, а именно получение взломщиком Root-овских привилегий,
после того, как хакер получал данные привилегии он мог творить в системе все что угодно.
Обычно действия средне статических взломщиков ограничиваются изменением содержимого главной страницы сайта (если взламываемая система является web-сервером),
расшифровкой /etc/shadow, запуском руткитов,
подчисткой лог-файлов и т.д. Поэтому основной задачей при создании LIDS-а являлось уменьшение root-овских возможностей (а также возможностей других пользователей), что привело бы к тому, что взломщик не смог бы проделать выше приведенные действия. LIDS позволяет распределять права доступа к файлам, устройствам, сетевым интерфейсам на уровне программ, а не на уровне пользователей (например мы сможем спрятать наш "/etc/shadow" от всех и разрешить к нему доступ на чтение только программе "/bin/login"), в нем есть встроенный детектор сканирования портов (который с каждой новой версией позволяет определить все более новые виды сканирования). LIDS
по сути не является программой, так как это патч для ядра => он работает на уровне ядра.
В данной статье я попытаюсь описать принцип работы и конфигурации LIDS-а на основе материала взятого из man-ов, HOWTO, и собственных знаний. Вообще документацию по LIDS-у его создатели не сильно часто пишут, некоторый период они вообще не подавали признаков жизни, и их официальный сайт был в дауне, но сейчас вроде все нормализовалось.
В данном материале описана версия LIDS-а под ядро
2.4.18 , на сайте создателей описывается только версии под ядро
2.2.* и они имеют некоторые отличия. Но это не значит, что если у вас иная версия ядра, то все, что описывается в данной статье, у вас не будет работать, напротив
- оно будет работать, только может возникнуть маленькое отличие в синтаксисе написания команд (например вместо слова READONLY вам придется писать слово READ и т.д.)
Приступим
LIDS можно скачать с официального сайта
www.lids.org или его зеркал (одно из которых
http://lids.gnuchina.org). Номер версии LIDS-а, состоит из 2 частей, давайте посмотрим, почему это так. Для примера возьмем пакет "lids-1.1.1r2-2.4.18.tar.gz" - мы видим что "1.1.1r2" это первая часть, она указывает на версию самого LIDS-а, а "2.4.18" вторая часть которая указывает на версию ядра, которое может быть пропатченно данной версией LIDS-а, поэтому если у вас стоит ядро иной версии то вы должны
будете выбрать LIDS именно под вашу версию.
Внимание! Не забудьте создать загрузочную дискету с вашей текущей версией ядра, для того чтобы в случае каких-либо проблем с LIDS-ом вы смогли бы загрузить вашу систему без него.
Конфигурация ядра
Перед тем как пропатчить ядро, вам нужно будет зайти в папку с вашим ядром ("/usr/src/linux") и ввести команду "make config" или "make menuconfig", которая сгенерирует различные файлы, в том числе и файл version.h.
Теперь вы можете пропатчить код вашего ядра, для этого запустите утилиту "patch" которая пропатчит его :
# patch -p1 < /путь_к_lids-у/*.patch
если в результате выполнения данной команды возникли ошибки, то проверьте правильную ли вы скачали версию LIDS-а. Если же все прошло хорошо, то вы можете приступить к непосредственной конфигурации ядра, введя одну из ниже перечисленных команд:
# make xconfig
# make menuconfig
# make config
Для того чтобы теперь включить LIDS в ядро, вам нужно в разделе "Code maturity level options" выбрать опцию "Prompt for development and incomplete code/drivers", которая позволит выводить все ошибки возникшие в LIDS-e (у меня таких не возникало, ну кто знает…:), и в разделе "General setup" включить опцию "Sysctl support
(CONFIG_SYSCTL)", которая позволяет производить различные конфигурационные изменения в ядре (и в LIDS-е), не
перекомпилируя его. Теперь у вас должен появится новый раздел с названием "Linux Intrusion Detection System", который позволяет сконфигурировать основные опции LIDS-а. Ниже приводятся сами опции и краткие советы по их использованию (советы заключены в скобки) :
Maximum protected objects to manage - максимальное количество защищаемых объектов (лучше ставить не меньше 1024 и не больше 2024).
Maximum ACL subjects to manage - максимальное количество субъектов, которые будут заноситься в качестве правил (лучше ставить не меньше 1024 и не больше 2024).
Maximum ACL objects to manage - максимальное количество объектов, которые будут заноситься в качестве правил (лучше ставить не меньше 1024 и не больше 2024).
Hang up console when raising a security alert - закрывать консоль когда нарушаются правила установленные LIDS-ом (желательно ее конечно включить, но если вы впервые настраиваете LIDS, то данную опцию лучше не трогать, пока вы полностью не разберетесь с его настройкой).
Security alert when execing unprotected programms before sealing - данная опция отвечает за вывод предупреждений при нарушении правил установленных в LIDS-e до того, как LIDS будет инициализирован (у меня данная опция отключена).
Attempt not to flood logs - устанавливает режим, при котором LIDS будет пытаться не засорять логи, то есть туда будет заноситься только важная информация о нарушении правил, работе LIDS-a и т.д. (желательно включить эту опцию).
Attempt between two identic logs - устанавливает таймаут при котором не будут логироваться 2 идентичных сообщения (лучше оставить значение по умолчанию 60).
Allow switching LIDS protections - отвечает за возможность выключения/включения LIDS-a в процессе работы.
Restrict mode switching to specified terminals - позволяет выбрать определенные терминалы, c которых можно будет отключить LIDS (включайте данную опцию).
Allow mode switching from a Linux console - разрешает выключать/включать LIDS с Linux консоли (tty*), чтобы туда попасть просто нажмите [Ctrl+Alt+F(1-6)]. (следует включить).
Number of attempts to submit password - количество попыток ввода неправильного пароля для LIDS-a (выбирайте данную опцию).
Time to wait after fail - указать время задержки, при котором если кто-то ввел неправильный пароль заданное в верхней опции количество раз, то LIDS заблокируется и запретит производить какие либо с ним действия, в том числе и отключать его (на ваше усмотрение).
Allow remote users to switch LIDS protections - разрешает удаленным пользователям включать/выключать LIDS (данную опцию лучше не включать).
Allow any program to switch LIDS protections - разрешает программам включать/выключать LIDS (данную опцию лучше не включать).
Allow reloading config. file - разрешает перезагрузку конфигураций LIDS-а (данную опцию нужно включить).
Port Scanner Detector in kernel - детектор сканинга портов, может детектить большое количество различных методов сканирования включая
SYN, FIN, NULL (желательно включить).
Send security alerts through network - позволяет отправлять все предупреждения/логи на ваш е-мэйл
(по вашему усмотрению).
Hide klids network threads - прятать демон который будет производить отправку писем (желательно включить).
Number of connection tries before giving up - количество попыток отправки писем (на ваше усмотрение).
Sleep time after a failed connection - таймаут при неудачных попытках послания письма (на ваше усмотрение).
Message queue size - число не отправленных писем в очереди, при превышении которого последнее письмо будет удаляться (на ваше усмотрение).
Use generic mailer pseudo-script - использовать стандартный скрипт для отправки писем (нужно включить).
LIDS debug - отвечает за вывод отладочных сообщений (желательно выключить).
После того как вы закончите с конфигурацией LIDS-а вы можете приступить к инсталляции ядра, для этого вводите следующие команды:
# make dep
# make clean
# make bzlilo
# make modules
# make modules_install
# mv /vmlinuz /boot/vmlinuz
# mv /System.map /boot/System.map
Также в файл "/etc/lilo.conf" добавьте такие строки :
image=/boot/vmlinuz
label=linuxLIDS
read-only
root=/dev/hda6 # у вас может отличаться, поэтому введите команду "df", и удостоверьтесь в том что Linux установлен именно тут.
После чего перезапустите лилу 🙂
# lilo
Внимание! Разработчики LIDS-а в целях безопасности, и лучшей настройки запрещают перезагружать комп до того, как не будет настроен сам LIDS (но если вы его и перезагрузите, то ничего страшного не произойдет).
(Продолжение следует)