Содержание

centos-5-isp-hardened

Применимость: «Linux, OpenVZ, colobridge.net»

Слова для поиска: защищенный вебсервер


Задача:

Нужен вебсервер с повышенной степенью защиты и простым управлением.

Решение:

Мы предгаем использовать шаблон операционной системы минимальным набором средств защиты и увеличения производительности.

Некоторые использованные средства могут быть несовместимы с вашими вебприложениями. Может потребоваться тонкая настройка или отключение.

Описанные здесь средства уже установлены и предварительно сконфигурированы.

Алгоритм криптования паролей

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

Проверка типа используемого алгоритма:

authconfig --test | grep hashing

Ответ на команду вероятно будет таким:

password hashing algorithm is md5

Включить алгоритм SHA-512

authconfig --passalgo=sha512 --update 

После это смените пароль. Будет сгенерирован новый хэш.

Этот пример дан для centos. В других дистрибутивах используйте соответствующие средства.

Оптимизация производительности

Кроме установки различных средств защиты мы сочли нужным оптимизировать сервер по производительности.

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

Акселератор PHP

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

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

Для обхода этого узкого места были разработаны акселераторы PHP — модули, кэширующие скомпилированный байт-код в памяти и/или на диске и в разы увеличивающие производительность PHP.

Установлен и сконфигурирован eAccelerator.

Что такое eAccelerator? eAccelerator это свободно-распространяемый PHP акселератор, оптимайзер и средство для кеширования динамического контента. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз.

nginx-proxy

Для ускорения работы вебсервера использован технология обратного прокси на основе nginx.

Подробности:

Оптимизация apache

Мы добавили некоторые параметры для оптимизации производительности вебсервера.

Вы можете их найти в файле /etc/httpd/conf.d/colobridge.optim.conf. Там имеется описание назначения настроек.

Смотрите также:

5 простых способов “ускорения” сайта

Общая защита уязвимостей системы

SSH

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

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

защита файловой системы от загрузки опасных файлов

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

Злоумышленник может загрузить файл с атрибутом suid (смена идентификатора владельца) чтобы выполнить команду с правами пользователя root имеющего неограниченные права. Злоумышленник может загрузить файл с атрибутом который позволит ядру системы интерпретировать его как устройство с особыми свойствами и получить неограниченные возможности. Злоумышленник может попытаться выполнить файл с опасными командами из каталога где вообще не должно быть исполняемых файлов.

Для предотвращения этого следует использовать специальные опции монтирования

Однако есть особенность - виртуальный контейнер системы в OpenVZ не может работать непосредственно с файловыми системами. Поэтому используем специфическое монтирование каталога в каталог c опцией bind. Для этого создаем два каталога /home/www и /home/tmp и смонтируем их в каталоги /var/www и /tmp соответственно.

Для того чтобы это делалось автоматически при запуске VPS в файле /etc/fstab добавлено две строки:

/home/tmp 	/tmp		none 	nosuid,noexec,nodev,bind 	0 0
/home/www 	/var/www	none 	nosuid,noexec,nodev,bind 	0 0
У вас не будут работать скрипты CGI. По умолчанию они располагаются где нибудь внутри каталога /var/www. Наши опции запрещают запуск файлов на выполнение.

Для решения этой проблемы вам можно разместить каталог со скриптами за пределами /var/www или убрать опцию noexec из файла /etc/fstab и перезагрузить VPS.

Сказанное не касается скриптов PHP. Для них не требуется право на выполнение.

rkhunter

RkHunter (Rootkit Hunter) является инструментом для сканирования системы на наличие руткитов, бэкдоров и другие возможные аномалии. Это делается путем сравнения SHA-1 хэшей важных файлов с известными в онлайновой базе данных, используется поиск по проблемам с правами доступа, скрытых файлов, подозрительных строк в модулях ядра, а также выполняются специальные тесты для Linux.

В шаблоне этой операционной системы rkhunter предварительно настроен и выполняется автоматически один раз в сутки.

Однако нужно еще кое что добавить:

Rootkit Hunter не исправляет и не лечит систему, только выявляет аномалии и уведомляет администратора.

Укажите адрес куда нужно отправлять отчеты о проверках в файле /etc/rkhunter.conf

MAIL-ON-WARNING=""
Внимательно читайте отчеты которые будет присылать rkhunter.

Пример опасного отчета о проверке:

Checking for passwd file changes [ Warning ] 

или

Checking for group file changes [ Warning ]

Если вы настроили запрет логина для root, то замените в файле /etc/rkhunter.conf параметр

ALLOW_SSH_ROOT_USER=yes

на

ALLOW_SSH_ROOT_USER=no

Запуск для выполнения интерактивной проверки:

rkhunter -c --update --noappend-log --vl

Подробности:

LogWatch

LogWatch - инструмент контроля системных журналов сервера.

Все события системы регистрируются службой syslog и представляют собой массу трудночитаемой информации.

LogWatch ежедневно анализирует эти записи и высылает отчет администратору о значительных событиях и состоянии системы.

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

Важно не забыть указать ваш адрес почты куда отправлять отчеты.

Это параметр MailTo в файле /etc/logwatch/conf/logwatch.conf

Внимательно просматривайте отчеты

Подробности:

PHP suhosin patch

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

Возможности suhosin patch

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

mod_security

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

основные возможности mod_security

Действия mod_security после обработки запроса:

Если с вашим вебприложением есть проблемы, попробуйте отключить этот модуль.

В файле /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf замените параметр

SecRuleEngine On

на

SecRuleEngine Off

В любом случае можно добиться совместимости с вашим вебприложением изучив документацию

Рекомендации

Заключение

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

Ссылки:


Актуальность: 2011/06/17 13:05