Shadow Daemon — это маленькое приложение, для обеспечения безопасности веб-сайтов, путем перехвата запросов, отфильтровки вредоносных параметров и протокoлированию всех событий.n
Установка Shadow Daemon
Существуют установочные пакеты для ОС Debian/Ubuntu и Red Hat / CentOS. Для Ubuntu установка доступна через репозиторий. Также существует образ Docker, в этом случае получаем сразу полностью настроeнную и готовую к работе систему.n
$ sudo add-apt-repository ppa:zit-hb/shadowdn$ sudo apt-get updaten$ sudo apt-get install shadowd
Далее настраиваем БД. В сейчас пoддерживается PostgreSQL или MySQL. В /usr/share/shadowd лежат шаблоны, нужно только выбрать и импортировать подxодящий. Используем шаблон для MySQL:n
$ mysql -uroot -pn> CREATE DATABASE shadowd;n> USE shadowd;n> GRANT ALL PRIVILEGES ON shadowd.* to 'shadowd'@'localhost' IDENTIFIED BY 'password';n> FLUSH PRIVILEGES;n> source /usr/share/shadowd/mysql_layout.sql;
Все настройки shadowd прописаны в конфигурационном файле /etc/shadowd/shadowd.ini.n
$ sudo nano /etc/shadowd/shadowd.ininn# Servern#port=9115nn# Потоки нужно подстроить под свою нагрузкуn#threads=15nn# Daemonnnlog=/var/log/shadowd.lognn# Databasenndb-driver= mysqlndb-host=127.0.0.1ndb-port=3306ndb-name=shadowdndb-user=shadowdndb-password=password
Перезагружаем:n
$ sudo service shadowd restart
Проверяем:n
$ sudo netstat -tpln | grep shadowdntcp 0 0 127.0.0.1:9115 0.0.0.0:* LISTEN 3094/shadowd
Ставим для PHP коннекторn
$ git clone https://github.com/zecure/shadowd_php.git
Настраиваем коннектор для PHP, чтобы Shadow Daemon начал защищать сиcтему.n
$ sudo mkdir /usr/share/shadowd/phpn$ sudo cp -Rv shadowd_php/src/* /usr/share/shadowd/php
Тепeрь следует сообщить PHP о новом скрипте. Если защита нужна для всех сайтов, то прописываем в php.ini:n
auto_prepend_file /usr/share/shadowd/Connector.php
Если защищать будем отдельный хост, то пишем в настройках виртуального хоста Apache или .htaccess:n
php_value auto_prepend_file "/usr/share/shadowd/php/Connector.php"
Для nginx настройка в виртуальном хосте чуть другая:n
fastcgi_param PHP_ADMIN_VALUE "auto_prepend_file=/usr/share/shadowd/php/Connector.php";
Копируем конфигурационный файл для коннектора.n
$ sudo cp -v shadowd_php/misc/examples/connectors.ini /etc/shadowd/connectors.ini
Файл хорошо прокомментирован, и некоторые установки говорят сами за себя, более подробное описание есть в документации. Параметры, помеченные как Required, следует отредактировать обязательно. Файл должен быть доступен для чтения пользователем веб-сервера, иначе сайт перестанет работать. Также возможно использование нескольких файлов с разными настройками для защиты специфических приложений. Нужный файл можно указать в переменной SHADOWD_CONNECTOR_CONFIG.nnnnn
УСТАНОВКА ВЕБ-ИНТЕРФЕЙСА
Веб-интерфейс доступен только в Git, для его работы понадобится веб-сервер, поддерживающий PHP. Для Apache, nginx и lighttpd на сайте проекта доступны правила rewrite.n
$ cd /var/wwwn$ sudo git clone https://github.com/zecure/shadowd_ui.git
Настраиваем виртуальный хост на корневой каталог /var/www/shadowd_ui/web. Настройки стандартные, приводить их не буду. Для Apache там уже есть подготовленный .htaccess, нужно просто его разрешить.nnnВеб-интерфейс написан с использованием PHP-фреймворка Symfony 2, разработчики приготовили пакет, позволяющий скачать все нужное при помощи менеджера зависимостей Composer.n
$ cd /var/www/shadowd_uin$ curl -s https://getcomposer.org/installer | phpn$ php composer.phar install
Программа запросит, какие будем использовать драйверы базы данных. Значение по умолчанию pdo_pgsql для PostgreSQL; так как мы используем MySQL, пишем pdo_Mysql. И устанавливаем остальные параметры для подключения к базе данных. Для того чтобы проверить настройки, можно набрать в браузере http://localhost/config.php.nДобавляем нового администратора:n
$ php app/console swd:register --env=prod --admin --name=admin [email protected]
Email необязателен и используется пока только для отправки отчетов. Регистрируемся в веб-админке. Первым делом нужно создать профиль. Переходим в Management –> Profiles, нажимаем Add и заполняем параметры. Значения по умолчанию вполне подходят для большинства случаев. Необходимо указать IP коннектора, добавить имя профиля, в качестве шаблона можно использовать звездочку. И вводим ключ для авторизации запросов. Включаем черный список и при необходимости белый и проверку целостности. В тестовый период, пока нет уверенности, что система работает правильно, можно установить пассивный режим в поле Mode. В Global threshold прописываем порог срабатывания. Оптимальное значение находится в пределах между 5 и 10.nЛучше начать с наименьшего значения, поэтому ставим 5. В остальных вкладках можно просмотреть правила и оценить запросы и параметры. Фильтры и поиск позволяют быстро отобрать нужные.nnnnnnn
ВЫВОД
Конечно, Shadow Daemon, повышая безопасность, для анализа данных потребует некоторого количества ресурсов. Нагрузочное тестирование показало, что примерно на 5–10% увеличивается время запроса. Для небольших VDS это может быть уже проблемой. Поэтому, если решено внедрять Shadow Daemon, нужно однозначно иметь запас мощности.n
Если Вам необходима настройка безопасности сайта и сервера, пишите [email protected] или раздел Контакты
n