
Лаборатория Snort 3 IDS → IPS на Kali. Пользовательские правила обнаружения + принудительное применение iptables против ICMP-разведки, Nmap SYN-сканирования, Hydra FTP-брутфорса и бэкдора vsftpd 2.3.4 (CVE-2011-2523).
Полноценное развертывание Snort 3 в качестве системы обнаружения вторжений (пассивный мониторинг) и системы предотвращения вторжений (активная блокировка через iptables), проверенное на четырех векторах атак в трехмашинной виртуальной сети на Kali Linux.
Лаборатория демонстрирует операционное различие между обнаружением и предотвращением, запуская одинаковую цепочку атак из четырех векторов дважды — сначала против IDS, которая регистрирует, но не может блокировать, затем против IDS + уровень IPS на iptables, который выборочно блокирует атаки, сохраняя легитимный трафик.
| Компонент | Подробности |
|---|---|
| Анализатор / Маршрутизатор | Kali Linux — 3 адаптера: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, host-only), eth2 LAN2 (192.168.50.1, host-only) |
| Атакующий | Kali Linux — eth0 на VMnet9 (10.10.10.10) — шлюз по умолчанию 10.10.10.1 |
| Цель | Metasploitable 2 — eth0 на VMnet10 (192.168.50.10) — шлюз по умолчанию 192.168.50.1 |
| Версия Snort | Snort++ 3.12.1.0-0kali1 (установлен на Анализаторе) |
| Инструменты атак | Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole) |
| Виртуализация | VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (оба host-only) |
Весь трафик между Атакующим и Metasploitable проходит через Анализатор, что делает его естественной точкой контроля как для мониторинга, так и для принудительного применения правил.
┌─────────────────────────┐
│ Анализатор / Маршрут. │
│ Kali + Snort 3 │
│ │
Attacker Kali ──VMnet9──┤ eth1: 10.10.10.1 │
10.10.10.10 │ │
│ eth0: 192.168.10.143 ───┼──> WAN (NAT)
│ │
Metasploitable 2 ─VMnet10┤ eth2: 192.168.50.1 │
192.168.50.10 │ │
└─────────────────────────┘
Замените этот ASCII-набросок на
screenshots/01-network-topology.pngпосле того, как разместите рисунок:Топология
Лаборатория выполняется в два этапа с одинаковой цепочкой атак из четырех векторов на каждом:
ping для обнаружения хостаnmap -sS для перечисления портов (1000 портов)Этап 1 (IDS) запускает Snort пассивно на Анализаторе с пятью пользовательскими правилами — наблюдайте предупреждения в реальном времени, убедитесь, что атаки все равно выполняются.
Этап 2 (IPS) объединяет Snort с принудительным уровнем iptables, используя точные правила сброса — убедитесь, что атаки блокируются, а ICMP-пинг и легитимный вход по FTP остаются рабочими.
MASQUERADE + FORWARD, чтобы Анализатор маршрутизировал между подсетями и в WAN — см. scripts/router_config.sh.scripts/ping_check.sh перед установкой Snort.Snort устанавливается через менеджер пакетов Kali (sudo apt install snort -y) и настраивается в /etc/snort/snort.conf:
HOME_NET = "10.10.10.0/24,192.168.50.0/24"
EXTERNAL_NET = "any"
ips = {
enable_builtin_rules = true,
include = "/etc/snort/rules/local.rules",
variables = default_variables
}
alert_fast = { file = true, packet = false }
HOME_NET охватывает обе внутренние подсети, чтобы Snort считал весь межподсетевой трафик на Анализаторе заслуживающим проверки. alert_fast создает компактные однострочные предупреждения (попакетное логирование создало бы чрезмерный объем).
Проверка конфигурации:
sudo snort -T -c /etc/snort/snort.conf
# Результат: 652 rules loaded (5 custom text + 647 built-in), 0 warnings
Пять правил в /etc/snort/rules/local.rules (полный файл в scripts/local.rules):
| SID | Имя | Триггер |
|---|---|---|
| 1000001 | Обнаружен ICMP Ping | Любой ICMP-трафик в любом направлении — ловит разведывательные пинги |
| 1000002 | Попытка подключения по FTP | Любое TCP-соединение на порт 21 — ловит легитимный и брутфорс-трафик |
| 1000003 | Возможное SYN-сканирование Nmap | TCP-пакеты только с установленным флагом SYN (flags:S) — признак полуоткрытого сканирования |
| 1000004 | Попытка использования бэкдора VSFTPD 2.3.4 | content:":)" на FTP-порту 21 — точная строка-триггер CVE-2011-2523 |
| 1000005 | Возможный шеллкод Metasploit | `content:" |
Snort работает в пассивном режиме на обоих внутренних интерфейсах:
sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
-A alert_fast -l /var/log/snort/
# Наблюдайте предупреждения во втором терминале:
sudo tail -f /var/log/snort/alert_fast.txt
Вывод при запуске подтверждает pcap DAQ configured to passive — Snort видит каждый пакет, но не может сбросить или изменить ни один из них.
После выполнения scripts/attack_simulator.sh с Атакующего:
| Атака | Обнаружение | Результат |
|---|---|---|
| ICMP-разведка | ✅ SID 1000001 — двунаправленные предупреждения | Пинг выполнен |
| SYN-сканирование Nmap | ✅ SID 1000003 — тысячи предупреждений менее чем за 1 секунду | Обнаружено 23 открытых порта |
| Брутфорс FTP через Hydra | ✅ SID 1000002 — повторяющиеся предупреждения о подключении к FTP | Учетные данные msfadmin:msfadmin взломаны |
| Бэкдор vsftpd 2.3.4 | ✅ SID 1000004 — сработало совпадение содержимого :) | Получена root-оболочка Meterpreter |
IDS обнаружил всё и не остановил ничего. Это главный урок Этапа 1: работающая IDS без принудительного применения — это сигнализация, а не замок. К тому времени, когда аналитик прочитает предупреждения, атакующий уже получит root.
Второе наблюдение: встроенные правила Snort (116:408, 116:414) срабатывают на широковещательный трафик DHCP — не вредоносный, но в производственной среде потребуются правила подавления, чтобы журнал предупреждений оставался полезным.
Уровень IPS развертывается с помощью scripts/ips_setup.sh, который:
-D) для непрерывного логирования