железобетонный сервер _MIF_ (ROOT@SECURITYLAB.CO.IL) Спецвыпуск: Хакер, номер #068, стр. 068-052-4 # cd /usr/ports/security/logcheck # make install clean Утилита написана на sh скриптах, и занимает всего 29 Кб в архиве. После установки в /usr/local/etc у тебя появятся четыре конфига: переименуй их, убрав из названия файла «sample»: logcheck.hacking – о каких странностях сообщать; logcheck.violations – о каких попытках взлома сообщать; logcheck.ignore – какие странности игнорировать; logcheck.violations.ignore – какие попытки взлома игнорировать. В целом и общем, первый файл от второго ничем не отличается, равно как и третий от четвертого :). Просто разработчики скрипта решили разнести сообщения о подозрительной активности и сообщения о явной атаке в разные конфиги. Затем необходимо перенести файл logcheck.sh: # mv logcheck.sh /usr/local/sbin # chmod 0700 /usr/local/sbin/logcheck.sh # chown root:wheel /usr/local/sbin/logcheck.sh Теперь можно запускать скрипт по крону, хотя бы раз в сутки: 0 4 * * * /usr/local/sbin/logcheck.sh Так же следует учесть тот факт, что, при большой активности хостящихся сайтов, логи веб-сервера начнут занимать немало места. И в то же время их надо сохранять. Тут есть два варианта. Можно использовать утилиту logrotate (/usr/ports/sysutils/logrotate), но я использую небольшой самописный скрипт. Его основной конфиг я поясню, а скрипт целиком можно найти на диске (rLog.sh). # Где лежат логи вхостов? logs_dir=/var/log/www # Куда складывать архивы с логами? arc_logs=/var/wwwlogs # Кого устанавливать владельцем архивов? user=root group=wheel # Темп-файл rLog_l=/tmp/rLog.log Скрипт заархивирует все логи виртуальных хостов, создаст архив в указанном тобой месте, обнулит логи и пошлет отчет руту. Разумеется, скрипт нужно прописать в crontab: 0 6 * * * /usr/local/sbin/rLog.sh [Apache.] К сожалению, на сегодняшний день не существует хотя бы близкой к безупречности модели защиты Apache. Любая конфигурация этого веб-сервера так или иначе оставляет возможности для взлома, даже при использовании suexec или cgi врапперов. Единственный более-менее интересный вариант – это модуль PerUser для Apache 2. Он позволяет запускать Апач с привилегиями пользователя, который указан в конфиге виртуального хоста. Это значит, что каждый вхост (читай домен) на сервере запускается из-под отдельного системного юзера. Даже если поломают один сайт то, чтобы добраться до других, хакеру нужно будет поднимать привилегии до рута. А на хорошо настроенной BSD-системе сделать это намного сложнее, нежели залить веб-шелл через багу в скрипте. Однако у модуля PerUser есть три серьезных недостатка. Во-первых, он существует только для Apache второй версии, которая еще не совсем стабильна, во-вторых – проект уже довольно долгое время находится в стадии альфа-тестинга, и в-третьих – модуль (по второй причине) невозможно установить из портов, а значит веб-сервер придется собирать из исходников, а это не только дополнительная возможность наделать ошибок, но и немалый геморрой с апдейтами. Думаю, что если разработчики все же разродятся стабильным релизом этого модуля – это решит множество проблем для админов хостинговых серверов. |