Snort и Suricata — простой путь к использованию IDPS: от установки на сервер до грамотной настройки
Межсетевые экраны — один из первых эшелонов защиты интернет-сервисов с довольно широким функционалом по безопасности. В их состав обычно входит класс решений IDPS, который позволяет с высокой точностью определять нелегитимные запросы и блокировать их.
В этом материале рассказываю, что такое системы IDPS и какие они бывают. А также показываю, как их разворачивать на виртуальных серверах и настраивать сигнатуры для блокирования вредоносного трафика. Все инструкции — на примере Snort и Suricata. Подробности под катом.
Знакомство с IDPS
Intrusion Detection and Prevention System, IDPS — это системы обнаружения и предотвращения вторжения. По сути, IDPS мониторит транзитный и локальный трафик на попытки сканирования и атак, соотнося их с имеющимися сигнатурами. Если трафик «зловредный» — он блокируется.
Классификация IDPS и популярные решения
IDPS можно разделить на два класса — NIDS (Network Intrusion Detection System) и HIDS (Host-based Intrusion Detection). Первые — мониторят сетевой трафик, в то время как вторые — анализируют события хоста, в том числе приходящий и уходящий трафик внутри систем.
Как видно из названия, NIDS необходимо ставить на хосты, управляющие трафиком, а HIDS больше подходят для endpoint-хостов с локальными сервисами. Более подробно о классификации и особенностях IDPS-систем можно почитать в Академии Selectel.
В рамках статьи покажем, как начать работать с двумя представителями систем IDPS:
- Suricata (как инстанс в Ubuntu 20.04) — это высокопроизводительный софт для анализа трафика и поиска угроз;
- Snort (как пакет в pfSense 2.6.0) — это один из самых популярных IDPS с открытым исходным кодом.
Между этими решениями есть одно важное отличие. Snort работает только в однопоточном режиме, в то время как Suricata может запускаться в многопоточных сценариях и позволяет обрабатывать больше трафика одномоментно.
Сетевая схема на базе Suricata
В рамках статьи рассмотрим схемы включения IDPS в «разрыв».
Сетевая схема на базе Suricata
В данной схеме между целевым веб-сервером и интернетом установлена IDPS. То есть маршрутизацию и проброс портов обеспечивает именно хост с IDPS. Таким образом, правильно настроив систему, можно блокировать трафик при срабатывании сигнатур.
Настройка хоста
Для начала развернем хост для IDPS.
Для этого выведем доступные сетевые интерфейсы. Один из них будет вести в интернет, а второй — в локальную сеть, ему необходимо назначить свободный адрес.
eth1: inet 192.168.1.254/24 brd 192.168.1.255 scope global eth1
Теперь настроим для локальной сети выход в интернет и заранее «опубликуем» веб-сервер наружу:
$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 192.168.1.2:80
$ sudo iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables-save > /etc/iptables/rules.v4
Вторым этапом развернем хост для веб-сервера, на котором поставим Nginx и проверим доступность снаружи:
$ sudo apt install nginx -y
$ curl http://45.145.64.243
Welcome to nginx!