Применимость: «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.
Установлен и сконфигурирован eAccelerator.
Что такое eAccelerator? eAccelerator это свободно-распространяемый PHP акселератор, оптимайзер и средство для кеширования динамического контента. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз.
Для ускорения работы вебсервера использован технология обратного прокси на основе nginx.
Подробности:
Мы добавили некоторые параметры для оптимизации производительности вебсервера.
Вы можете их найти в файле /etc/httpd/conf.d/colobridge.optim.conf. Там имеется описание назначения настроек.
Смотрите также:
Измените стандартный порт на любой в диапазоне 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
Для решения этой проблемы вам можно разместить каталог со скриптами за пределами /var/www или убрать опцию noexec из файла /etc/fstab и перезагрузить VPS.
RkHunter (Rootkit Hunter) является инструментом для сканирования системы на наличие руткитов, бэкдоров и другие возможные аномалии. Это делается путем сравнения SHA-1 хэшей важных файлов с известными в онлайновой базе данных, используется поиск по проблемам с правами доступа, скрытых файлов, подозрительных строк в модулях ядра, а также выполняются специальные тесты для Linux.
В шаблоне этой операционной системы rkhunter предварительно настроен и выполняется автоматически один раз в сутки.
Однако нужно еще кое что добавить:
Укажите адрес куда нужно отправлять отчеты о проверках в файле /etc/rkhunter.conf
MAIL-ON-WARNING=""
Пример опасного отчета о проверке:
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 - инструмент контроля системных журналов сервера.
Все события системы регистрируются службой syslog и представляют собой массу трудночитаемой информации.
LogWatch ежедневно анализирует эти записи и высылает отчет администратору о значительных событиях и состоянии системы.
Вы не пропустите если кто нибудь без вашего ведома установил программу. Вовремя обнаружите, что заканчивается место на диске. Если кто нибудь станет упорно подбирать пароль к вашей системе, то LogWatch уведомит вас об этом.
Важно не забыть указать ваш адрес почты куда отправлять отчеты.
Это параметр MailTo в файле /etc/logwatch/conf/logwatch.conf
Подробности:
Suhosin представляет собой систему защиты PHP скриптов. Он был разработан для защиты серверов и пользователей от известных и неизвестных недостатков PHP приложений.
Более подробное описание возможностей есть в документации
mod_security - модуль Apache, добавляющий возможности обнаружения и предотвращения вторжения на Web сервер. Модуль способен проверять HTTP запросы на наличие признаков злонамеренного воздействия и отбрасывать их с регистрацией в системном журнале.
Действия mod_security после обработки запроса:
Если с вашим вебприложением есть проблемы, попробуйте отключить этот модуль.
В файле /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf замените параметр
SecRuleEngine On
на
SecRuleEngine Off
В любом случае можно добиться совместимости с вашим вебприложением изучив документацию
Здесь описана лишь небольшая часть богатого ассортимента средств защиты вебсервера. Это можно считать только базовой защитой или необходимым минимальным набором для защиты профессионального вебсервера. Для высококачественной защиты необходимо постоянное внимание опытного специалиста по защите и регулярные проверки.