Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Защита сайта с помощью WAF Shadow Daemon

Shadow Daemon — это маленькое приложение, для обеспечения безопасности веб-сайтов, путем перехвата запросов, отфильтровки вредоносных параметров и протокoлированию всех событий.

Установка Shadow Daemon

Существуют установочные пакеты для ОС Debian/Ubuntu и Red Hat / CentOS. Для Ubuntu установка доступна через репозиторий. Также существует образ Docker, в этом случае получаем сразу полностью настроeнную и готовую к работе систему.

$ sudo add-apt-repository ppa:zit-hb/shadowd
$ sudo apt-get update
$ sudo apt-get install shadowd

Далее настраиваем БД. В сейчас  пoддерживается PostgreSQL или MySQL. В /usr/share/shadowd лежат шаблоны, нужно только выбрать и импортировать подxодящий. Используем шаблон для MySQL:

$ mysql -uroot -p
> CREATE DATABASE shadowd;
> USE shadowd;
> GRANT ALL PRIVILEGES ON shadowd.* to 'shadowd'@'localhost' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> source /usr/share/shadowd/mysql_layout.sql;

Все настройки shadowd прописаны в конфигурационном файле /etc/shadowd/shadowd.ini.

$ sudo nano /etc/shadowd/shadowd.ini

# Server
#port=9115

# Потоки нужно подстроить под свою нагрузку
#threads=15

# Daemon

log=/var/log/shadowd.log

# Database

db-driver= mysql
db-host=127.0.0.1
db-port=3306
db-name=shadowd
db-user=shadowd
db-password=password

Перезагружаем:

$ sudo service shadowd restart

Проверяем:

$ sudo netstat -tpln | grep shadowd
tcp    0    0 127.0.0.1:9115    0.0.0.0:*    LISTEN    3094/shadowd

Ставим для PHP коннектор

$ git clone https://github.com/zecure/shadowd_php.git

Настраиваем коннектор для PHP, чтобы Shadow Daemon начал защищать сиcтему.

$ sudo mkdir /usr/share/shadowd/php
$ sudo cp -Rv shadowd_php/src/* /usr/share/shadowd/php

Тепeрь следует сообщить PHP о новом скрипте. Если защита нужна для всех сайтов, то прописываем в php.ini:

auto_prepend_file /usr/share/shadowd/Connector.php

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

php_value auto_prepend_file "/usr/share/shadowd/php/Connector.php"

Для nginx настройка в виртуальном хосте чуть другая:

fastcgi_param PHP_ADMIN_VALUE "auto_prepend_file=/usr/share/shadowd/php/Connector.php";

Копируем конфигурационный файл для коннектора.

$ sudo cp -v shadowd_php/misc/examples/connectors.ini /etc/shadowd/connectors.ini

Файл хорошо прокомментирован, и некоторые установки говорят сами за себя, более подробное описание есть в документации. Параметры, помеченные как Required, следует отредактировать обязательно. Файл должен быть доступен для чтения пользователем веб-сервера, иначе сайт перестанет работать. Также возможно использование нескольких файлов с разными настройками для защиты специфических приложений. Нужный файл можно указать в переменной SHADOWD_CONNECTOR_CONFIG.

защита сайта

безопасность сайта

УСТАНОВКА ВЕБ-ИНТЕРФЕЙСА

Веб-интерфейс доступен только в Git, для его работы понадобится веб-сервер, поддерживающий PHP. Для Apache, nginx и lighttpd на сайте проекта доступны правила rewrite.

$ cd /var/www
$ sudo git clone https://github.com/zecure/shadowd_ui.git

Настраиваем виртуальный хост на корневой каталог /var/www/shadowd_ui/web. Настройки стандартные, приводить их не буду. Для Apache там уже есть подготовленный .htaccess, нужно просто его разрешить.

shadow-daemon-2
Веб-интерфейс написан с использованием PHP-фреймворка Symfony 2, разработчики приготовили пакет, позволяющий скачать все нужное при помощи менеджера зависимостей Composer.

$ cd /var/www/shadowd_ui
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install

Программа запросит, какие будем использовать драйверы базы данных. Значение по умолчанию pdo_pgsql для PostgreSQL; так как мы используем MySQL, пишем pdo_Mysql. И устанавливаем остальные параметры для подключения к базе данных. Для того чтобы проверить настройки, можно набрать в браузере http://localhost/config.php.
Добавляем нового администратора:

$ php app/console swd:register --env=prod --admin --name=admin [email protected]

Email необязателен и используется пока только для отправки отчетов. Регистрируемся в веб-админке. Первым делом нужно создать профиль. Переходим в Management –> Profiles, нажимаем Add и заполняем параметры. Значения по умолчанию вполне подходят для большинства случаев. Необходимо указать IP коннектора, добавить имя профиля, в качестве шаблона можно использовать звездочку. И вводим ключ для авторизации запросов. Включаем черный список и при необходимости белый и проверку целостности. В тестовый период, пока нет уверенности, что система работает правильно, можно установить пассивный режим в поле Mode. В Global threshold прописываем порог срабатывания. Оптимальное значение находится в пределах между 5 и 10.
Лучше начать с наименьшего значения, поэтому ставим 5. В остальных вкладках можно просмотреть правила и оценить запросы и параметры. Фильтры и поиск позволяют быстро отобрать нужные.

shadow-daemon-3

web интерфейс shadow daemon

shadow-daemon-5

ВЫВОД

Конечно, Shadow Daemon, повышая безопасность, для анализа данных потребует некоторого количества ресурсов. Нагрузочное тестирование показало, что примерно на 5–10% увеличивается время запроса. Для небольших VDS это может быть уже проблемой. Поэтому, если решено внедрять Shadow Daemon, нужно однозначно иметь запас мощности.

Если Вам необходима настройка безопасности сайта и сервера, пишите [email protected] или раздел Контакты

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.