Drupal для параноиков: безопасность сайта и системного окружения VPS и выделенных серверов А.Графов
Проблемы Нежелательный контент (спам, трояны) Изменение кода сайта (кража данных пользователей, вставка нежелательного контента показ скрытой рекламы, перенаправление на другой ресурс) Несанкционированное использование ресурсов сервера (рассылка спама и др.)
Причины проблем Сеть: Скрипты сайта Вебсервер Другие сетевые службы (ftp, ssh, СУБД...) Локальный доступ: Пользователи имеющие доступ (ssh, ftp) Или получившие доступ к серверу при успешной атаке по сети Физический доступ к серверу: Данные на жёстких дисках
Способы защиты Контроль работы скриптов Защита сетевых сервисов Разграничение прав между пользователями на исполняемые процессы Разграничение прав на доступ к файловой систему Ограничение доступа к сетевым сервисам Защита данных хранимых на жёстком диске
Drupal: защита изнутри Обновления ядра и модулей Модуль update status Фильтр исполнения PHP Лишние модули Пользователь 1 Модуль paranoia Блокирует создание форматов включающих исполнение PHP Блокирует изменения аккаунта 1 Блокирует отключение модуля paranoia
Drupal + HTTPS Вариант использования: - контент пользователям Запрет доступа к Доступ к админке only! Как сделать? Нам поможет: custom_url_rewrite_inbound( &$result, $path, $path_language) Переменные например $_SERVER['HTTP_X_SSL_CONNECT'] $_SERVER['HTTP_X_FORWARDED_HOST'] $_SERVER['HTTP_HOST'] и др.
Фильтруем контент: технические средства «Фейсконтроль» сайта роботам вход воспрещён: captcha Самобучающиеся фильтры Модуль Spam на алгоритме Байеса Правила для URL в модуле Spam Публичные спам базы и блок листы Mollom проект Дриса Байтаерта Akismet
Фильтруем контент: организационные методы Общественная модерация Премодерация Постмодерация Пример вики-модерации на drupal.ru Ничего не удаляется! Больше 100 модераторов Легкость внесения правок Бан одним кликом Тем эффективнее, чем больше человек задействовано в модерации
Apache mod_security mod_security «файрвол для веб приложений» Проверка GET и POST Фильтрация подозрительного содержимого (ввод-вывод) на основе правил SQL injections XSS Команды ОС Обнаружение троянов Аномалии HTTP-запросов
Установка PHP mod_php в Apache один пользователь на все процессы open_base_dir можно указывать для каждого виртуального хоста FastCGI в Apache и NGINX можно легко разделить пользователей виртуальных хостов Suhosin патч и модуль расширения к PHP
Средства ОС Кража паролей самый частый способ «взлома» FTP на продуктивен лучше отключать (use SFTP) Защита от последствий украденного пароля на VPS/сервере: Права владения на скрипты сайта передаются другому пользователю (например root) Папки files и tmp единственные места, куда Drupal требует прав на запись Совет: index.html с правами на запись
Средства ОС POSIX ACL на файловой системе: Более гибкая схема, чем механизм user:group:other – rwx Упрощённо говоря ACL задавать отдельные права на файл для нескольких пользователей и групп Пакет acltools: getfacl/setfacl
Блокировка перебора паролей Можно сделать в друпале через hook_user() Fail2ban защита от перебора паролей и от DOS Защита входов SSH и FTP Защита авторизационных форм веб сервера Защита авторизации Drupal: failregex = \|user\| \|.*\|Login attempt failed (.+)\.$ Блокирует IP или производит другие действия
Сетевой файрвол Ограничения доступа на уровне сетевых протоколов и портов Не всем приложениям нужен доступ отовсюду из сети: ограничения по IP Всегда ли нужен файрвол?
Последний рубеж ФС в файле через loopback-интерфейс Или ФС в отдельном разделе Включить поддержку криптографии в ядре AES, Blowfish, DES... Критичные данные на шифрованном разделе Пример для Linux:
Мониторинг работы Мониторинг работы основных сервисов локально и перезапуск при необходимости (веб сервер, СУБД, PHP) Комплексный мониторинг (Zabbix, ZenOSS) CPU Память Место на ФС Доступность сетевых сервисов Уведомления по почте, СМС Вебинтерфейс с таблицами и графиками Агенты под Linux, *BSD, Windows
Ссылки на самое вкусное Коды примеров и файлов конфигурации можно скачать: Ссылки на п/о: Статьи по теме: - fail2ban + Drupal настройка шифрования ФС
Презентация подготовлена в OpenOffice Использована иллюстрация из мультсериала Futurama Вопросы? А.Графов