Как мы уже знаем, есть программы, которые могут проверять конфигурацию. Это должно происходить на компьютере локально. В настоящее время уже написано достаточно много утилит для автоматизации контроля. Некоторые из них устарели и давно не обновлялись, а какие-то появились недавно и только еще наращивают свою функциональность (количество проверок).
12.3.1. lsat
Первая программа, с которой нам предстоит познакомиться, — lsat. Ее история не слишком длинная, но за счет частого обновления возможности программы быстро выросли, а благодаря модульной архитектуре расширение функций происходит легко и быстро.
Программа lsat поставляется в исходных кодах, и найти ее можно по адресу http://usat.sourceforge.net/. На момент написания этой книги была доступна версия 0.9.2. Скачайте архив в свою домашнюю директорию, и давайте рассмотрим, как установить и использовать программу. На сайте доступны tgz- и zip-версия. Я рекомендую воспользоваться первой, потому что это родной архив для Linux и проще в использовании.
Для установки выполните следующие команды:
tar xzvf lsat-0.9.2.tgz
./lsat-0.9.2.tgz/configure
./lsat-0.9.2.tgz/make
Первая директива распаковывает архив lsat-0.9.2.tgz. Имя файла может отличаться, если у вас другая версия программы. Вторая команда запускает конфигурирование, а третья — собирает проект из исходных кодов в один исполняемый файл.
Для запуска программы используйте следующую команду:
./lsat-0.9.2.tgz/lsat
Теперь можно идти готовить кофе и медленно и печально пить его. Процесс тестирования системы занимает довольно много времени, особенно на слабых машинах. При запуске можно указать один из следующих ключей:
□ -o имя файла — отчет записывать в указанный файл. По умолчанию отчет попадает в lsat.out;
□ -v — выдавать подробный отчет;
□ -s — не выдавать никаких сообщений на экран. Это удобно при выполнении команды через cron;
□ -r — выполнять проверку контрольных сумм (это делается с помощью RPM). Это позволяет выявить незаконно измененные программы.
Лучше всего lsat будет работать на Red Hat-подобных системах, потому что в нее встроена возможность работы с RPM-пакетами, которые являются отличительной особенностью дистрибутива Red Hat Linux и его клонов.
Во время проверки вы увидите примерно следующий текст на экране:
Starting LSAT...
Getting system information...
Running modules...
Running checkpkgs module...
...
...
Running checkx module...
Running checkftp module...
Finished.
Check lsat.out for details.
Don't, forget to check your umask or file perms
when modifying files on the system.
Пока слова о безопасности отсутствуют. Только информация о том, что сканировалось. Все самое интересное после тестирования можно найти в файле ./lsat-0.9.2.tgz/lsat.out. Я прогнал эту программу на системе сразу после установки и получил документ размером 190 Кбайт. Таким образом, есть над чем подумать и что изучать в вашей системе.
В выходном файле вы найдете множество советов. Так, в самом начале можно увидеть рекомендации по пакетам, которые нужно удалить:
****************************************
Please consider removing these packages.
sendmail-8.11.6-15.asp
portmap-4.0-41
bind-utils-9.2.1-1.asp
nfs-utils-0.3.3-5
pidentd-3.0.14-5
sendmail-devel-8.11.6-15.asp
sendmail-cf-8.11.6-15.asp
ypbind-1.10-7
ypbind-1.10-7
В самом деле, некоторые пакеты можно отнести к разряду не очень надежных. Например, в программе Sendmail регулярно находят ошибки, поэтому lsat предлагает его подчистить.
В выходном файле мне очень понравилась надпись:
default init level is not set to 5. Good.
(уровень загрузки по умолчанию не равен 5. Хорошо.)
Мой уровень загрузки равен 3 (текстовый режим) и программа сообщает, что это хорошо. Разработчик lstat посчитал, что загрузка в графическом режиме хуже для безопасности. Действительно, это лишние программы и дополнительные проблемы. Текстовый режим не требует столько ресурсов, работает меньше утилит, а значит, он быстрее и безопаснее.
Если немного опуститься ниже, то вы увидите список всех файлов в системе с установленными битами SUID и SGID. При использовании программы lsat нет смысла самостоятельно заниматься поисками потенциально опасных программ.
Еще немного ниже идет список общедоступных файлов:
****************************************
This is a list of world writable files
/var/lib/texmf/ls-R
/var/www/html/cache/archive/index.html
/var/www/html/cache/categories/category.cgi
/var/www/html/cache/categories/index.html
/var/www/html/cache/download/download-2-1.cgi
/var/www/html/cache/download/download-3-1.cgi
/var/www/html/cache/download/download-4-1.cgi
Это те файлы, которые имеют право изменять любые пользователи системы, даже с минимальными правами.
Далее идет список файлов, в которые могут писать пользователи каких-либо групп. Проверьте, возможно, не всем пользователям нужно давать такой статус. В идеале таких записей вообще не должно быть. В любой файл должны иметь право писать только владельцы или, в крайнем случае, пользователи группы, но никак не все.
Отчеты удобны и легко читаются, но в самом конце появляется ложка дегтя. Пусть она и небольшая, но она есть. Программа показывает изменения в файловой системе с момента последнего запуска. Вот тут разобраться с чем-либо очень сложно. Информация выводится как угодно, а ведь удобнее было разделить модификации по степени опасности. Например, удаленный или добавленный в разделе /tmp файл не так важен, потому что там изменения происходят тоннами каждые пять минут. А вот все, что касается раздела /etc, намного опаснее, и эти записи нужно выделять.
12.3.2. bastille
Проект bastille (http://bastille-linux.sourceforge.net/) существует уже давно и создан специалистами по безопасности Linux. Разработчики собирались написать свою версию ОС, которая будет более безопасной, но, видимо, не рассчитали свои силы. Глядя на bastille, так и хочется сказать: "Жаль!!!".
Программа проверяет систему и выдает отчет, из которого вы можете узнать о найденных слабостях в ОС, и если пожелаете, то bastille автоматически примет необходимые меры по устранению уязвимости.
Работа программы настолько проста и удобна, что я даже не буду ее описывать. В отличие от подобных средств, bastille может работать не только в текстовом, но и в графическом режиме. Для установки программы можно воспользоваться RPM-архивом или скомпилировать файлы из исходного кода.
12.4. Выявление атак
Хороший администратор должен сделать все, чтобы убить попытку атаки на свою систему еще в зародыше. Давайте вспомним, с чего начинается взлом системы? Конечно, со сбора информации об интересующем компьютере или сервере, и это мы рассмотрели в самом начале книги. Хакер пытается узнать о системе все, что только можно, а администратор должен сделать так, чтобы предотвратить этот процесс или запутать взломщика.
Самый простой и один из наиболее информативных методов — сканирование портов. Чтобы выяснить, кто, когда и откуда произвел попытку проникновения, необходимо отлавливать любые нестандартные события портов. Конечно же, вручную это сделать сложно, поэтому лучше запастись хорошей программой.
Средства автоматического выявления атак достаточно хороши, но не всегда приемлемы. Например, если ваш сервер популярен, то количество сканирований в день будет довольно большим. Я думаю, что такие узлы, как www.yahoo.com или www.microsoft.com, сканируют тысячи, а то и миллионы раз в день, и на каждую попытку обращать внимание бесполезно. А самое главное, автоматическое выявление атак требует ресурсы, а иногда и немалые. Если попытаться протоколировать каждое сканирование, то злоумышленник может сделать такие пакеты, которые будут имитировать атаки, и тогда вся вычислительная мощь сервера уйдет на выявление этих наскоков. Получится классический отказ от обслуживания (DoS), потому что сервер уже не будет обрабатывать запросы клиентов.
Но если у вас локальный сервер в организации или просто домашний компьютер в небольшой сети, то определение любителей сканирования помогут заведомо предотвратить взлом.
Еще один недостаток автоматического определения атак — вы сами не сможете воспользоваться утилитами сканирования безопасности своих серверов, потому что это будет воспринято как нападение. Когда вы сами сканируете систему, то обязательно отключайте программы обнаружения атак, иначе ваши действия не принесут результата.
12.4.1. Klaxon
Самой простой и эффективной является утилита Klaxon (http://www.eng.auburn.edu/users/doug/second.html). Она следит за неиспользуемыми системой портами и при обращении на них пытается определить всю возможную информацию о сканирующем IP-адресе и сохранить ее в журнале.