Сегодня хотелось бы поделиться опытом создания устройства для защиты периметра сети небольшой организации, построенного на базе open source решений: стандартного линуксового межсетевого экрана NETFilter с графическим интерфейсом Firewall Builder, системы обнаружения и предотвращения вторжений Suricata с веб-интерфейсом Snorby и шлюза удаленного доступа OpenVPN на одной виртуальной машине.
Надеюсь, статья поможет молодым администраторам в решении возможных проблем, которые могут возникнуть при установке open source решений по безопасности сети.
Всех заинтересовавшихся приглашаю под кат.
Что и куда будем устанавливать
Собирать мы будем UTM-решение (что такое UTM, можно прочитать здесь), которое в себе объединит межсетевой экран, IPS и VPN-шлюз.
Порядок установки и настройки следующий:
• Установка и настройка Snorby (веб-интерфейс мониторинга для Suricata), barnyard2 (утилита для связи Suricata и Snorby) и Suricata (собственно, сама IPS);
• Установка Firewall Builder (графический интерфейс настройки NETFilter), настройка политики межсетевого экранирования (ACL и NAT);
• Установка и настройка сервера и клиента OpenVPN.
Сами решения по безопасности (NETFilter, Suricata, OpenVPN) были выбраны по той причине, что они являются своеобразной «классикой» и очень распространены, так что в случае необходимости можно найти кучу инфы о настройке и работе с ними. Графические интерфейсы устанавливаем же только для удобства настройки и мониторинга, не более, при желании можно обойтись и без них.
Платформой для нашего UTM-решения будет виртуальный сервер с ОС Ubuntu 14.04 на борту и следующей конфигурацией:
• 4 ядра;
• 4 Гб оперативной памяти;
• 40 Гб жесткий диск.
Т.е. для решения задачи защиты периметра сети небольшой организации подойдет самый средненький по характеристикам сервер.
Установка Suricata, Snorby, barnyard2
Перед началом лучше обновиться:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Устанавливаем необходимые пакеты:
sudo apt-get install gcc g++ build-essential libssl-dev libreadline6-dev zlib1g-dev linux-headers-generic libsqlite3-dev libxslt-dev libxml2-dev imagemagick git-core libmysqlclient-dev mysql-server libmagickwand-dev default-jre ruby1.9.3
Устанавливаем wkhtmltopdf:
wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox-0.12.1_linux-trusty-i386.deb
sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-i386.deb
Устанавливаем GEMS :
sudo GEM install thor i18n bundler tzinfo builder memcache-client rack rack-test erubis mail text-format rack-mount rails sqlite3
Устанавливаем Snorby:
sudo git clone http://github.com/Snorby/snorby.git /var/www/snorby
Редактируем файл /var/www/snorby/config/database.yml (если его нет, то можно отредактировать *.example):
snorby: &snorby
adapter: mysql
username: root
password: <enter the mysql root password here>
host: localhost
Редактируем файл /var/www/snorby/config/snorby_config.yml (если его нет, то можно отредактировать *.example):
development:
domain: localhost:3000
wkhtmltopdf: /usr/bin/wkhtmltopdf
test:
domain: localhost:3000
wkhtmltopdf: /usr/bin/wkhtmltopdf
production:
domain: localhost:3000
wkhtmltopdf: /usr/bin/wkhtmltopdf
Запускаем настройку Snorby:
cd /var/www/snorby
sudo bundle update activesupport railties rails
sudo gem install arel ezprint && sudo bundle install
sudo bundle exec rake snorby:setup
Настройка mysql:
mysql -u root -p
create user 'snorbyuser'@'localhost' IDENTIFIED BY 'новый_пароль';
grant all privileges on snorby.* to 'snorbyuser'@'localhost' with grant option;
flush privileges;
exit
Возвращаемся к редактированию файла /var/www/snorby/config/database.yml, куда вписываем нового пользователя и пароль:
snorby: &snorby
adapter: mysql
username: snorbyuser
password: новый_пароль
host: localhost
Установка Apache2 и необходимых пакетов:
sudo apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev
sudo apt-get install libcurl4-openssl-dev
sudo service apache2 start
Установка passenger:
sudo gem install --no-ri --no-rdoc passenger
sudo /usr/local/bin/passenger-install-apache2-module -a
Создаем файл /etc/apache2/mods-available/passenger.load и пишем туда:
LoadModule passenger_module /var/lib/GEMS /1.9.1/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.48
PassengerDefaultRuby /usr/bin/ruby1.9.1
</IfModule>
Активация модулей:
sudo a2enmod passenger
sudo a2enmod rewrite
sudo a2enmod ssl
sudo chown www-data:www-data /var/www/snorby -R
Создаем файл /etc/apache2/sites-available/snorby и пишем туда:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName snorby.local
DocumentRoot /var/www/snorby/public
<Directory "/var/www/snorby/public">
AllowOverride all
Order deny,allow
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Активируем сайт:
sudo ln -s /etc/apache2/sites-available/snorby /etc/apache2/sites-enabled/snorby
Перезапускаем apache:
sudo service apache2 restart
Из /var/www/snorby запускаем:
sudo bundle pack && sudo bundle install --path vender/cache
В файле /etc/apache2/sites-available/000-default.conf меняем строчку:
DocumentRoot /var/www/
Делаем тестовый пуск snorby. В папке /var/www/snorby запускаем:
sudo bundle exec rails server -e production
Идем на http://localhost:3000 и, если видим окно входа, то значит мы на правильном пути.

Далее будем ставить непосредственно саму Suricata.
Установка необходимых пакетов:
sudo apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libcap-ng-dev libnet1-dev mysql-client
wget http://security.ubuntu.com/ubuntu/pool/main/m/mysql-dfsg-5.1/libmysqlclient16_5.1.73-0ubuntu0.10.04.1_i386.deb
sudo dpkg -i libmysqlclient16_5.1.73-0ubuntu0.10.04.1_i386.deb
wget http://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-1.0.1.tar.bz2
sudo tar xvfz libnfnetlink-1.0.1.tar.bz2
sudo ./configure && sudo make && sudo make install
Установка yaml:
wget http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz
sudo tar xvfz yaml-0.1.3.tar.gz
cd yaml-0.1.3
sudo ./configure && sudo make && sudo make install
Установка barnyard2:
wget http://ftp.psu.ac.th/pub/snort/barnyard2-1.9.tar.gz
sudo tar xvfz barnyard2-1.9.tar.gz
cd barnyard2-1.9
sudo ./configure --with-mysql && sudo make && sudo make install
Установка suricata:
sudo apt-get install suricata
sudo cp /etc/suricata/suricata-debian.yaml /etc/suricata/suricata.yaml
cd /etc/suricata
sudo wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
sudo tar xvfz emerging.rules.tar.gz
В файле /etc/suricata/suricata.yaml меняем строчки:
default-rule-path: /etc/suricata/rules/
HOME_NET: "[ip_адрес/маска]"
Настройка barnyard2:
sudo cp downloads_folder/barnyard2-1.9/etc/barnyard2.conf /etc/suricata/
Изменим строки в файле /etc/suricata/barnyard2.conf:
config reference_file: /etc/suricata/reference.config
config classification_file: /etc/suricata/classification.config
config gen_file: /etc/suricata/rules/gen-msg.map
config sid_file: /etc/suricata/rules/sid-msg.map
output database: log, mysql, user=snorbyuser password=новый_пароль dbname=snorby host=localhost sensor_name=sensor1
Последний штрих и все должно заработать:
sudo mkdir /var/log/barnyard2
sudo iptables -I FORWARD -j NFQUEUE
sudo suricata -c /etc/suricata/suricata.yaml -q 0
Если снова зайти на http://localhost:3000, то увидим дашборд и информацию по некоторым событиям.

На этом настройка IPS закончена.
Установка FWBuilder и настройка iptables
Скачиваем последнюю сборку по ссылке.
Устанавливаем необходимый пакет:
sudo apt-get install libqt4-gui
Устанавливаем FWBuilder:
sudo dpkg -i fwbuilder_5.1.0.3599-ubuntu-precise-1_i386.deb
Запускаем FWBuilder и создаем элемент Firewall. Для этого жмем Create new firewall и заполняем поля:

Теперь настраиваем интерфейсы:


Создаем минимально необходимый набор правил:


В принципе, все довольно наглядно, так что дальше можно создавать правила под свои нужды.
Когда правила готовы, жмем Install, вводим логин/пароль и адрес шлюза:

На этом настройка межсетевого экрана закончена.
Источник: http://habrahabr.ru/company/it/blog/238315/ |