Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #68, ИЮЛЬ 2006 г.

железобетонный сервер

_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 второй версии, которая еще не совсем стабильна, во-вторых – проект уже довольно долгое время находится в стадии альфа-тестинга, и в-третьих – модуль (по второй причине) невозможно установить из портов, а значит веб-сервер придется собирать из исходников, а это не только дополнительная возможность наделать ошибок, но и немалый геморрой с апдейтами. Думаю, что если разработчики все же разродятся стабильным релизом этого модуля – это решит множество проблем для админов хостинговых серверов.

Назад на стр. 068-052-3  Содержание  Вперед на стр. 068-052-5