Чтение онлайн

ЖАНРЫ

Стахнов Алексей Александрович

Шрифт:

ОПЦИЯ = «значение»

Ниже приведен список основных поддерживаемых опций:

• TCP_PORTS – в этой опции через запятую перечисляются ТСР-порты, которые проверяются программой Portsentry. При обнаружении подключения к перечисленным портам Portsentry записывает информацию об этом в системный журнал и выполняет команду, заданную пользователем, а после этого блокирует хост посредством брандмауэра. ТСР-порты, открытые на защищаемом компьютере другими программами, в этот список включаться не должны;

• UDP_PORTS – то же, что и tcp_ports, но для UDP-портов;

• ADVANCED_PORTS_TCP – значение этой опции определяет верхнюю границу множества TCP-портов, которые проверяются Portsentry при работе в режиме Advanced Stealth Scan Detection Mode. Нижней границей является 1, т. е. при значении advanced_ports_tcp, равном 2048, проверяется подключение к любому порту в промежутке от 1 до 2048;

• ADVANCED_PORTS_UDP – то же, что и advanced_portsjtcp, но для UDP-портов;

• ADVANCED_EXCLUDE_TCP – TCP-порты, которые исключаются из промежутка проверяемых портов, заданного параметром advanced_portsjtcp. Здесь обязательно нужно перечислить ТСР-порты, открытые работающими на защищаемом компьютере программами;

• ADVANCED_EXCLUDE_UDP – то же, что и advanced_exclude_tcp, но для UDP-портов;

• IGNORE_FILE – имя и путь к файлу с IP-адресами хостов, которые не блокируются при подключении к портам, проверяемым программой Portsentry;

• HISTORY_FILE – имя и путь к файлу с историей работы программы Portsentry. В файл записывается время блокирования, имя и IP хоста, атакованный порт, протокол;

• BLOCKED_FILE – строка, из которой формируется имя и путь к файлам, куда записывается информация о блокированных хостах;

• BLOCK_TCP – эта опция в зависимости от значения задает ответную реакцию Portsentry на сканирование портов:

– 0 – не блокировать хост, не запускать заданную пользователем команду;

– 1 – блокировать хост и запустить команду;

– 2 – только запустить заданную команду.

Команда задается при помощи опции KILL_RUN_CMD;

• BLOCK_UDP – то же, что и BLOCK_TCP, но для UDP;

• KILL_ROUTE – эта опция задает команду, которую надо выполнить для блокирования атакующего хоста. Для указания IP-адреса используется переменная $target$. Переменная $port$ используется для указания порта, к которому было подключение;

• KILL_HOSTS_DENY – эти опция задает строку, которая записывается в /etc/hosts.deny для блокирования доступа к сервисам, запускаемым через inetd;

• KILL_RUN_CMD – с помощью этой опции можно задать команду, запускаемую до блокирования хоста;

• SCAN_TRIGGER – данная опция задает количество разрешенных подключений к проверяемым программой Portsentry портам одного и того же хоста, прежде чем Portsentry начнет действовать. О определяет немедленную реакцию;

• PORT_BANNER – задает сообщение, которое будет выводиться при подключении к проверяемому Portsentry порту.

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

Запуск

Portsentry можно запускать

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

• Classic – при работе в этом режиме Portsentry открывает порты, указанные в tcp_ports или udp_ports, и ждет соединения. При попытке подключиться к такому порту происходит блокировка удаленного хоста. Этот режим работы задается опциями командной строки -tcp – для ТСР-портов и – udp – для UDP-портов;

• Enhanced Stealth Scan Detection – этот режим используется для проверки перечисленных в tcp_ports или udp_ports портов на предмет подключения или сканирования. Выявляет почти все виды Stealth-сканирования, а не только сканирование подключением. В отличие от режима Classic, не держит открытыми порты, поэтому сканировщик получает достоверную информацию об открытых портах. Задается опциями командной строки -step – для TCP-портов и -sudp – для UDP-портов;

• Advanced Stealth Scan Detection – этот режим используется для проверки всех портов в промежутке от 1 до advance d_port_tcp или advanced_port_udр. Порты, открытые другими программами и перечисленные в advanced_exlude_tcp или advanced_exclude_udp, исключаются из проверки. Любой компьютер, попытавшийся подключиться к порту в этом промежутке, тут же блокируется. Задается опциями командной строки – atcp – для TCP-портов и -audp – для UDP-портов.

Сетевая статистика

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

NeTraMet

Этот программный пакет позволяет подсчитывать трафик по IP-адресам в локальной сети раздельно по типам трафика: SMTP, ICMP, HTTP, FTP, UDP, TCP и т. п. Также существует возможность подробного регистрирования трафика.

Программный пакет состоит из:

• NeTraMet – программы-сборщика трафика. Собирает и хранит в оперативной памяти статистику с сетевых интерфейсов сервера;

• NeMaC – программы-менеджера сборщика NeTraMet. NeMaC собирает статистику и записывает ее в журнал;

• srl – компилятора правил для NeMaC;

• fd_filter – программы обработки журналов NeMaC;

• fd_extract – программы обработки результатов fd_filter.

Ключи запуска NeTraMet

Программа запускается со следующими ключами:

• -i network_interface – определяет сетевой интерфейс, трафик которого будет считать NeTraMet;

• -l – предписывает использовать размер пакета из заголовка, а не аппаратный размер;

• -m 614 – определяет UDP-порт, на котором будет соединяться NeTraMet с NeMaC;

• -r password_for_read – устанавливает пароль на чтение;

• -w password_for_write_and_read – устанавливает пароль на чтение/ запись;

• -f 60000 – определяет максимальное количество сетевых потоков в NeTraMet. Чем больше клиентов, трафика и степень детализации статистики, тем больше сетевых потоков.

Ключи запуска NeMaC

Программа запускается со следующими ключами:

• -k 120 – каждые 120 секунд NeMaC будет проверять – не перезагрузился ли NeTraMet;

• -F /var/ntm. iog/$DATER. flows – в этот файл записывать статистику;

• -m 614 – определяет порт для управления NeTraMet;

• -c 900 – предписывает забирать статистику с NeTraMet каждые 15 минут;

• -р – предписывает после записи в файл статистики данных закрывать его. Если файл не найден, то создается новый файл;

• -L /var/ntm. log/$DATER.nemac – журнал работы NeMaC;

• -r /root/ntm.sh/short.3.rules – файл с правилами.

Протоколирование

Нет смысла тратить много времени на защиту компьютера от взлома и не обращать внимания на систему протоколирования событий. Каким образом вы сможете узнать о попытке и способе взлома, не используя инструментов для ведения log-файлов? В этом разделе мы познакомимся со стандартной системой ведения log-файлов – демоном syslogd.

Демон syslogd является частью пакета sysklogd, в который входят две программы: syslogd и klogd. Syslogd отвечает за протоколирование сообщений системы, a klogd – ядра.

Демон syslogd

Демон syslogd запускается автоматически при старте системы и обеспечивает протоколирование событий, которое используется большинством программ. Демон syslogd пишет сообщения в файлы /var/log/* в зависимости от настроек. Обычно записи в log-файле, создаваемом syslogd, содержат следующие поля: дата и время, имя компьютера, программа, сообщение.

Параметры запуска

В табл. 27.1 приведены основные параметры командной строки демона syslogd.

Таблица 27.1. Основные параметры командной строки syslogd

Файл конфигурации По умолчанию используется файл конфигурации /etc/syslog.conf. Вы можете указать другой файл конфигурации с помощью опции -f. Типичный файл конфигурации приведен ниже.

# Все сообщения ядра операционной системы выводить на консоль #kern.* /dev/console

# Все сообщения уровня info или выше протоколировать в файл

# /var/log/messages

# Кроме почтовых сообщений и сообщений аутентификации

*.info;mail.none;authpriv.none;cron.none /var/log/messages

# Протоколирование аутентификации.

# Файл протокола /var/log/secure

authpriv.* /var/log/secure

# Все log-сообщения почтовой системы сохранять в файле /var/log/maillog.

mail.* /var/log/maillog

# Все сообщения демона сгоп сохранять в файле /var/log/cron cron.* /var/log/cron

# Everybody gets emergency messages *.emerg *

# Сообщения системы новостей уровня crit и выше сохранять в файле

# /var/log/spooler

uucp,news.crit /var/log/spooler

# Все загрузочные сообщения хранить в файле /var/log/boot.log lоса17.* /var/log/boot.log

Файл конфигурации состоит из двух полей: объект протоколирования и файл, в который будут записываться сообщения, порождаемые этим объектом. Для каждого объекта можно указать один из уровней протоколирования:

• debug – отладочная информация;

• info – просто информация;

• notice – уведомление;

• warn – предупреждение;

• err – ошибка;

• emerg – критический уровень.

Первые три уровня протоколирования относятся к информационным сообщениям. Уровень warn – это предупреждения, a err – ошибки. Помимо этого, существуют критические сообщения, которые выводятся прямо на консоль. Для обозначения объектов и для обозначения уровней протоколирования можно использовать символ *, который обозначает все объекты или все уровни.

Сетевое протоколирование

Для обеспечения повышенной защищенности сети все сообщения можно хранить не на локальном компьютере, а передавать по сети на специальный сервер, на котором будет находиться база log-файлов компьютеров, подключенных к сети.

Для передачи сообщений используется протокол UDP. Для нормального функционирования необходимо в файле /etc/service раскомментировать строку syslog 514/udp.

После этого необходимо внести изменения в файл конфигурации /etc/syslog.conf – вместо файлов протоколов используйте параметр @hostname, где hostname – это имя компьютера, на который будут перенаправлены сообщения.

Имя узла желательно указать в файле /etc/hosts, поскольку демон syslogd обычно стартует раньше, чем сервер DNS.

Демон klogd

Демон klogd предназначен для перехвата и протоколирования сообщений ядра Linux. В табл. 27.2 приведены основные параметры командной строки демона klogd.

Таблица 27.2. Основные параметры командной строки klogd

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

Защита системы после взлома

Правда, несколько странное название раздела? Как это – защита системы после взлома? Если вы помните, вопросы обеспечения безопасности компьютера в целом уже рассматривались нами в гл. 7. В этом же разделе мы остановимся на сетевой безопасности, а именно на том моменте, когда взлом уже произошел. После обнаружения факта взлома стандартным решением является отключение взломанного компьютера от сети и полная переустановка операционной системы с последующей установкой всех обновлений программного обеспечения, используемого на компьютере. А что делать, если нет возможности вывести из работы взломанный компьютер, а защитить его все равно необходимо? Именно этот случай мы и рассмотрим в этом разделе.

Взломы операционной системы бывают разные. Самый простой вариант – какой-то подросток начитался литературы или нашел в Интернете программку-взламыватель, например sendmail, применил свои псевдознания к вашей системе, пошалил – удалил что-то с вашего компьютера или, наоборот, оставил послание – "ваш компьютер взломан супер-хакером Васей" и ушел, причем, зачастую, не уничтожив следы своего воздействия на компьютер. На такой простой случай вам рассчитывать не стоит. Как правило, серьезный взлом подготавливается долгое время, и о нем вы узнаете, например, от администратора какого-нибудь сервера на другом конце земного шара, да и то потому, что от вас на его сервер идет очень большой трафик или еще по каким-либо косвенным признакам. Такой взлом преследует чисто прагматические цели – воспользоваться вашей системой для дальнейшего взлома других компьютеров, устроить на вашем сервере хранилище файлов или что-нибудь в подобном роде. Причем взломщик после себя всегда оставляет на вашем компьютере набор специальных утилит, называемых rootkit.

Rootkit

Rootkit (набор инструментов администратора) – это набор утилит, которые взломщик устанавливает на взломанном компьютере после получения первоначального доступа. Rootkit обычно содержит сетевой sniffer (утилиту, способную получать и обрабатывать весь сетевой трафик вашей локальной сети, вне зависимости от того, какому компьютеру адресованы сетевые пакеты) для прослушивания сетевого трафика, программы для модификации log-файлов, позволяющие скрыть присутствие взломщика на вашем компьютере, и специально модифицированные системные утилиты, замещающие основные утилиты системы, например ps, netstat, ifconfig, killall, login.

Основное назначение rootkit – позволить взломщику возвращаться во взломанную систему и получать доступ к ней, не будучи при этом обнаруженным системным администратором. Обычно для этого используется модифицированная версия telnetd или sshd. Модифицированный сервис будет использовать сетевой порт, отличный то того, который этот демон по умолчанию прослушивает. Большинство версий rootkit снабжены модифицированными системными программами, которые замещают существующие во взломанной системе. Конкретный набор модифицируемых системных утилит весьма зависит от версии rootkit и нужд и квалификации взломщика, но, как правило, заменяются программы ps, w, who, netstat, Is, find, login и другие, которые могут быть использованы для контроля за работой взломанной системы.

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

В принципе, можно воспользоваться возможностями, предоставляемыми менеджером пакетов RPM – контрольной суммой пакета, рассчитанной по алгоритму MD5. При этом RPM использует контрольные суммы пакетов, хранящиеся в базе данных установленных RPM. Как легко заметить, данный способ не подходит для обнаружения опытных взломщиков. Причин к тому две.

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

• База данных RPM находится на взломанном компьютере, и взломщику не составляет труда модифицировать ее нужным образом или вообще повредить ее.

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

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

Наибольшую угрозу для безопасности вашей системы представляют rootkit, использующие загружаемые модули ядра (Loadable Kernel Module, LKM), что позволяет не подменять системные утилиты, а нарушать их правильное функционирование через ядро операционной системы.

Обнаружение rootkit

Мы нарисовали достаточно мрачную картину – получается, что после взлома системы сделать для ее излечения ничего не возможно? К счастью, не все так плохо.

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

Сканирование портов

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

Проще всего просканировать порты с помощью программы nmap. Для этого достаточно выполнить следующую команду:

nmap -р 1-65535 192.168.0.1

Указываем диапазон сканируемых портов – от 1 до 65535, а также адрес сканируемого компьютера. После этого на консоль будет выдан список портов, протокол, используемый для каждого порта, и сервис, который использует этот порт. Обычно всякие «специальные» программы обращаются к портам выше 1023, причем зачастую это порты с номером выше десяти тысяч. Помимо nmap, можно воспользоваться программой lsof. Она позволяет получить список открытых на вашем компьютере сетевых портов. Для этого достаточно выполнить команду

lsof -i Использование RPM

Хотя чуть ранее мы утверждали, что

использование RPM для обнаружения rootkit – дело бесперспективное, это не совсем так. RPM можно применить для быстрой проверки. Если он не найдет ничего подозрительного – воспользуемся другими средствами, если найдет и на том спасибо – будем знать, что у нас не так в системе.

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

Сканер для rootkit

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

Пакет chkrootkit состоит из следующих утилит:

• chkrootkit – используется для выявления сигнатур известных rootkit;

• ifpromisc – используется для обнаружения прослушивания сетевого трафика взломанным компьютером;

• chklastlog, chkwtmp, check_wtmpx – утилиты для проверки log-файлов;

• chkproc – предназначена для обнаружения «посторонних» загружаемых модулей ядра операционной системы.

Об особенностях применения chkrootkit можно узнать в документации, идущей в комплекте с пакетом.

После обнаружения

Что делать после обнаружения rootkit? Единственно верный способ избавиться от последствий взлома – заново полностью переустановить операционную систему и установить все обновления пакетов для вашего дистрибутива. Однако не всегда есть возможность проделать такие действия сразу – квартальный отчет, непрерывное производство, болезнь администратора – да мало ли что еще.

В дистрибутивах на основе RPM-пакетов вы можете определить поврежденные пакеты. После этого необходимо переустановить их, используя следующую команду:

rpm -U –force rpm_package_name.rpm

После переустановки пакетов вы должны удалить файлы, установленные в вашу систему взломщиком. Данные, полученные chkrootkit, помогут вам определить местонахождение файлов.

После удаления всех обнаруженных «чужих» файлов запустите top и ps для выявления и уничтожения оставшихся нежелательных процессов. Помимо этого, необходимо проверить стартовые скрипты операционной системы и убедиться, что эти скрипты не используются никакими посторонними программами.

LIDS

LIDS (Linux Intrusion Detection/Defence System) – система обнаружения и защиты от вторжения. Представляет собой дополнение к ядру операционной системы Linux, добавляющее дополнительные возможности для увеличения безопасности операционной системы. LIDS позволяет запретить или ограничить доступ к файлам, памяти, устройствам, сетевым интерфейсам, запущенным приложениям и т. п. пользователю root, что дает возможность надежно оградить даже взломанную операционную систему от дальнейшего вмешательства.

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

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

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

Помимо всего прочего, в LIDS присутствует встроенный детектор сканирования сетевых портов.

Установка

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

Далее, нам необходимо перекомпилировать ядро операционной системы Linux с поддержкой LIDS. Для этого в пункте меню конфигурации ядра Code maturity level options необходимо включить опцию Prompt for development and/or incomplete code/drivers .

После этого в пункте меню General setup необходимо включить опцию Sysctl support .

Далее необходимо зайти в меню Linux Intrusion Detection System. Это меню полностью относится к конфигурированию LIDS. Первым идет включение поддержки LIDS в ядре:

[*] Linux Intrusion Detection System support (EXPERIMENTAL)

После включения поддержки LIDS станет доступным список опций настройки LIDS:

Maximum protected objects to manage – этот пункт позволяет установить максимальное количество защищаемых объектов;

Maximum ACL subjects to manage – позволяет установить максимальное количество субъектов правил доступа LIDS;

Maximum ACL objects to manage – позволяет установить максимальное количество объектов правил доступа LIDS;

Maximum protected proceeds – позволяет установить максимальное количество защищаемых процессов;

Hang up console when raising securit alert – разрешает закрытие консоли, с которой произошло нарушение безопасности;

Security alert when execing unprotected programs before sealing LIDS – разрешает вывод сообщения о нарушении безопасности при запуске незащищенных программ;

Do not execute unprotected programs before sealing LIDS – включает запрет на запуск незащищенных программ до установки способностей;

Try not to flood logs – при включении этой опции LIDS не будет записывать в log-файлы дублирующиеся сообщения об одном и том же нарушении защиты;

Autorized time between two identic logs (seconds)  – устанавливается время в секундах, в течение которых проверяется появление двух идентичных сообщений, чтобы не записывать одинаковые сообщения в log-файлы;

Allow switching LIDS protections – включает возможность отключения и включения LIDS в процессе работы системы после ввода пароля. При включении данной опции появляется возможность поменять любые параметры работы без перезагрузки операционной системы;

Numbers of attempts to submit password – определяет количество попыток ввода пароля, по истечении которых отключение LIDS становится невозможным на заданный далее промежуток времени;

Time to wait after fail (seconds)  – время в секундах, в течение которого после ввода неправильного пароля указанное количество раз, отключение 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 – позволяет в ядро операционной системы добавить детектор сканирования портов;

Send security alerts through network – разрешает отправку электронной почты при нарушении безопасности на указанный электронный адрес с информацией о нарушении. Письмо отправляется незамедлительно при попытке совершения несанкционированных действий;

Hide klids network threads – позволяет скрывать сетевые соединения LIDS;

Number of connection tries before giving up – задается количество попыток соединения с SMTP-сервером;

Sleep time after a failed connection – задает время в секундах между попытками соединения с почтовым сервером;

Message queue size – определяет максимальное количество почтовых сообщений в очереди. При превышении данного количества самое старое неотправленное сообщение удаляется из очереди;

LIDS debug – используется для включения вывода отладочных сообщений LIDS.

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

Конфигурирование LIDS

После установки LIDS в каталоге /etc появляется каталог lids, содержащий следующие конфигурационные файлы:

• lids.cap – предназначен для хранения текущих значений установок способностей;

• lids.net – предназначен для настройки отправки электронных сообщений системой LIDS;

• lids.pw – в этом файле записан в зашифрованном виде пароль администратора. Изменять этот файл можно только с помощью lidsadm;

• lids.conf – файл содержит текущие установки правил доступа. Изменять этот файл можно только с помощью lidsadm.

Способности

Способности (capabilities) – определяют возможность программ совершать какие-либо действия. LIDS позволяет использовать по отношению к программам большое количество способностей. В частности, LIDS поддерживает способность перезагружать компьютер, изменять владельца файла, загружать или выгружать модули ядра и многое другое.

Текущие установки способностей хранятся в файле lids.cap в формате:

[+I-] Номер: Способность

Здесь:

• + – включает способность;

• – – отключает способность.

Редактировать файл lids.cap можно с помощью любого текстового редактора.

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

Сразу после установки LIDS файл lids.cap содержит включенными следующие способности:

• CAP_CHOWN – устанавливает способность программ изменять владельца и группу владельца файла;

• CAP_DAC_OVERRIDE – разрешает программам, запускаемым пользователем root, не принимать во внимание режимы доступа к файлам. При отключении этой способности пользователь root теряет возможность изменять любые файлы, невзирая на права доступа;

• CAP_DAC_READ_SEARCH – то же самое, что и предыдущая способность, только по отношению к каталогам;

• CAP_FOWNER – разрешает операции с файлами, когда владелец файла должен совпадать с пользователем, совершающим операцию;

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

• CAP_KILL – разрешает процессам пользователя root «убивать» чужие процессы;

• CAP_SETGID – управляет способностью программ пользователя root изменять группу, под которой работает программа;

• CAP_SETUID – управляет способностью программ пользователя root изменять пользователя, под которым работает программа;

• CAP_SETPCAP – разрешает программам менять способности;

• CAP_LINUX_IMMUTABLE – управляет способностью снимать атрибуты S_IMMUTABLE и S_APPEND с файлов;

• CAP_NET_BIND_SERVICE – разрешает программам использовать сетевой порт, меньший чем 1024;

• CAP_NET_BROADCAST – управляет способностью программ рассылать широковещательные пакеты;

• CAP_NET_ADMIN – параметр управляет большим количеством различных способностей: конфигурирование сетевых интерфейсов, изменение правил брандмауэра, изменение таблиц маршрутизации и многих других, связанных с сетевыми настройками Linux;

• CAP_NET_RAW – управляет способностью программ использовать сокеты;

• CAP_IPC_LOCK – управляет способностью процессов пользователя root блокировать сегменты разделяемой памяти;

• CAP_IPC_OWNER – управляет доступом программ пользователя root к ресурсам межпроцессорного взаимодействия процессов, не принадлежащих пользователю root;

• CAP_SYS_MODULE – управляет способностью загружать модули ядра;

• CAP_SYS_RAWIO – управляет доступом на чтение/запись к таким устройствам, как /dev/mem, /dev/kmem, /dev/port, /dev/hdXX, /dev/sdXX;

• CAP_SYS_CHROOT – управляет способностью устанавливать корневой каталог для текущей командной оболочки;

• CAP_SYS_PTRACE – этот параметр включает способность программ использовать вызов функции ptrace , которая позволяет управлять выполнением процессов-потомков процессу-родителю;

• CAP_SYS_PACCT – управляет способностью конфигурировать учет процессов;

• CAP_SYS_ADMIN – управляет множеством способностей: управление устройством /dev/random, создание новых устройств, конфигурирование дисковых квот, настройка работы klogd, установка имени домена, установка имени хоста, сброс кэша, монтирование и размонтирование дисков, включение/отключение swap-раздела, установка параметров последовательных портов и многое другое;

• CAP_SYS_BOOT – управляет способностью перегружать систему;

• CAP_SYS_NICE – управляет способностью изменять приоритет процессов, не принадлежащих пользователю root;

• CAP_SYS_RESOURCE – управляет способностью изменять лимиты использования ресурсов системы: дисковые квоты, зарезервированное пространство на Ext2-разделах, максимальное количество консолей и т. п.;

• CAP_SYS_TIME – управляет способностью изменять системное время;

• CAP_SYS_TTY_CONFIG – управляет способностью изменять настройки tty-устройств;

• CAP_HIDDEN – управляет способностью программ делаться невидимыми в списке процессов. Не влияет на все программы;

• CAP_INIT_KILL – управляет способностью «убивать» процессы-потомки процесса init.

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

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

lidsadm -I

Обычно ее ставят в конце /etc/rc.d/rc.local, что позволяет произвести отключение способностей только после запуска всех необходимых для работы сервера программ. Правила доступа Все управление LIDS осуществляется с помощью программы – lidsadm. Lidsadm работает в двух режимах – настройки правил доступа или ввода команд администрирования. Установки правил доступа находятся в файле /etc/lids/lids.conf. Для просмотра текущих установок правил доступа необходимо выполнить следующую команду:

lidsadm -L

LIST

Subject ACCESS TYPE Object

Any File READ /sbin

Any File READ /bin

Any File READ /boot

Any File READ /lib

Any File READ /usr

Any File DENY /etc/shadow

/bin/login READ /etc/shadow

/bin/su READ /etc/shadow

Any File APPEND /var/log

Any File WRITE /var/log/wtmp

/sbin/fsck.ext2 WRITE /etc/mtab

Any File WRITE /etc/mtab

Any File WRITE /etc

/usr/sbin/sendmail WRITE /var/log/sendmail.st

/bin/login WRITE /var/log/lastlog

/bin/cat READ /home/xhg

Any File DENY /home/httpd

/usr/sbin/httpd READ /home/httpd

Any File DENY /etc/httpd/conf

/usr/sbin/httpd READ /etc/httpd/conf

/usr/sbin/sendmail WRITE /var/log/sendmail.st

/usr/XHR6/bin/XF8 6_SVGA NO_INHERIT RAWIO

/usr/sbin/in.ftpd READ /etc/shadow

/usr/sbin/httpd NO_INHERIT HIDDEN

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

• READ – доступ на чтение;

• WRITE – запись;

• DENY – запрет на какой-либо доступ;

• APPEND – открытие только для записи в конец файла;

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

Построение прав доступа подробно описано в документации на пакет LIDS, поэтому мы на этом здесь не останавливаемся.

После настройки LIDS необходимо перезагрузить операционную систему. В том случае, если с функционированием LIDS возникли проблемы, можно загрузить Linux с выключенным LIDS, для чего при загрузке необходимо передать ядру операционной системы параметр security=o. Например, для LILO это будет выглядеть так:

Поделиться с друзьями: