Читаем Linux глазами хакера полностью

□ SecFilter xxx redirect:http://www.webkreator.com — обеспечивает переадресацию. Если правила соблюдены, то пользователя отправляют на сайт http://www.webkreator.com;

□ SecFilter yyy log,exec:/home/apache/report-attack.pl — запускает сценарий. Если фильтр срабатывает, то будет выполнен скрипт /home/apache/report-attack.pl;

□ SecFilter /etc/password — устанавливает запрет на использование в запросе пользователя обращения к файлу /etc/passwd. Таким же образом нужно добавить ограничение на файл /etc/shadow;

□ SecFilter /bin/ls — отказ пользователям в обращении к директивам. В данном случае запрещается команда ls, которая может позволить хакеру увидеть содержимое каталогов, если в сценарии есть ошибка. Необходимо предотвратить обращение к таким командам, как cat, rm, cp, ftp и др.;

□ SecFilter "\.\./" — классическая атака, когда в URL указываются символы точек. Их не должно там быть;

□ SecFilter "delete[[:space:]]+from" — запрет текста delete ... from, который чаще всего используется в SQL-запросах для удаления данных. Такая строка очень часто используется в атаках типа SQL injection. Помимо этого, рекомендуется установить следующие три фильтра:

 • SecFilter "insert[[:space:]]+into" — используется в SQL-запросах для добавления данных;

 • SecFilter "select.+from" — используется в SQL-запросах для чтения данных из таблицы базы данных;

 • SecFilter "<(.|\n)+>" и SecFilter "<[[:space:]]*script" — позволяют защититься от XSS-атак (Cross-Site Scripting, межсайтовое выполнение сценариев).

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

<p>7.7.3. Секреты и советы</p>

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

Ограничение сценариев

Во-первых, ограничьте выполнение сценариев только отдельной директорией. Чаще всего это каталог cgi-bin. Однажды я видел систему, в которой для этих целей администратор указал корневой каталог, что позволяло хранить сценарии, где угодно. Не стоит повторять эту ошибку, потому что в системе могут быть различные программы, написанные на Perl, и они должны быть недоступны для выполнения на Web-сервере.

Резервные копии

Никогда не сохраняйте резервные копии сценариев в каталогах, доступных Web-серверам. Рассмотрим пример. Если на сервере есть PHP-скрипты, то пользователи видят только результат их выполнения. Чтобы посмотреть исходный код, хакеру необходим доступ к серверу, например FTP или Telnet, т.к. сервер Apache не передает таких данных клиенту.

Перед тем как вносить изменения в сценарий, программисты любят создавать на сервере резервные копии, чтобы в случае ошибки можно было восстановить старую, но рабочую версию. Для этого очень часто содержимое файла копируется в тот же каталог, под тем же именем, но с другим расширением, например, old или bak (наиболее часто встречаемые).

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

Когда злоумышленник исследует сценарии на сервере, то никто не мешает проверить наличие резервной копии. Допустим, что у вас есть файл www.servername.com/index.php, хакер попробует загрузить www.servername.com/index.bak или www.servername.com/index.old. На любительских сайтах такие версии встречаются очень часто. Не допускайте подобных промахов.

Любой специалист по безопасности должен запретить пользователям работу с резервными копиями. Сколько бы мы не говорили программистам о том, что нельзя держать на сервере ничего лишнего, они все равно продолжают это делать, потому что им так удобно. Наша задача — сделать хранение этих копий безопасными, т.е. запретить доступ со стороны Web-клиентов.

Это можно сделать, используя следующие директивы:

 Order deny, allow

 Deny from all

 Order deny, allow

 Deny from all

<p>7.8. Индексация Web-страниц</p>
Перейти на страницу:

Похожие книги