User Tools

Site Tools


dpi_из_подручных_материалов

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dpi_из_подручных_материалов [2024/05/13 06:22]
val [Шаг 5. Превращаем IDS в IPS]
dpi_из_подручных_материалов [2024/05/15 11:28] (current)
val [DPI из подручных материалов]
Line 1: Line 1:
 ====== DPI из подручных материалов ====== ====== DPI из подручных материалов ======
 +
 +  * [[https://​habr.com/​ru/​articles/​813799/​|DPI из подручных материалов]]
  
 Всем привет! Всем привет!
  
-Однажды,​ много лет назад, во времена эпидемии вируса ​CodeRed, я работал сисадмином в одном вузе и невежливо ответил на электронное письмо из какого то банка с требованием немедленно прекратить атаку на их веб сервер Apache, через месяц пришло бумажное письмо от их службы безопасности,​ и завертелось. Так я познакомился с сервисом Snort, который некоторое время защищал Интернет от наших студентов. Со временем трафик стал https, и решение потеряло смысл, но есть места, где он снова превращается в http, например после https прокси. Тут то мы и сможем его подсмотреть,​ выявить атаки и заблокировать злоумышленника!+Однажды,​ много лет назад, во времена эпидемии вируса ​[[https://​ru.wikipedia.org/​wiki/​Code_Red|Code Red]], я работал сисадмином в одном вузе и невежливо ответил на электронное письмо из какого то-банка с требованием немедленно прекратить атаку на их веб сервер, работающий под управлением ​Apache, через месяц пришло бумажное письмо от их службы безопасности,​ и завертелось. Так я познакомился с системой [[https://​ru.wikipedia.org/​wiki/​Snort|Snort]], которая некоторое время защищала Интернет от наших студентов. Со временем, большая часть ​трафика стала https, и решение потеряло смысл, ноесть места, где он снова превращается в http, например после https прокси. Тут то мы и сможем его ​"подсмотреть", выявить атаки и заблокировать злоумышленника!
  
-Что бы было интереснее,​ рассмотрим вариант, который можно ​воспроизвести в домашних условиях. На единственной системе развернем https прокси,​ веб приложение за ним, и защитим от атак на основе анализа содержимого http запросов. ​ Потребуется VirtualBox (или любой другой гипервизор) и дистрибутив Linux, например Ubuntu, там Snort имеется в виде пакета. Можно взять готовый ova образ:+Что бы было интереснее, ​не будем ​рассматривать [[https://​youtu.be/​oIczkkD-hOU?​si=tb7ucLRAdH2rbSVL|реальный ​кейс]], а воспроизведем все "в домашних условиях". На единственной системе развернем https прокси,​ веб приложение за ним, и защитим от атак на основе анализа содержимого http запросов. ​ Потребуется VirtualBox (или любой другой гипервизор) и дистрибутив Linux, например Ubuntu, там Snort имеется в виде пакета. Можно взять ​мой ​готовый ova образ:
  
 https://​val.bmstu.ru/​unix/​img/​My%20Documents/​ubuntu_24.04_01.ova https://​val.bmstu.ru/​unix/​img/​My%20Documents/​ubuntu_24.04_01.ova
  
-и выполнить 1-й шаг из этой статьи: ​https://​habr.com/​ru/​articles/​716454/​+и выполнить 1-й шаг из [[https://​habr.com/​ru/​articles/​716454/​|этой статьи]]
  
 ===== Шаг 2. Разворачиваем http приложение ===== ===== Шаг 2. Разворачиваем http приложение =====
  
-Можно развернуть что-нибудь поинтереснее ​(https://​youtu.be/​oIczkkD-hOU?​si=tb7ucLRAdH2rbSVL) ​но, сути это не меняет,​ поэтому обойдемся простым вариантом:​+Можно развернуть ​[[https://​youtu.be/​ykWLHQ2i_8E?​si=VBVfi9w-vhl_bGDg|что-нибудь поинтереснее]], но, сути это не меняет,​ поэтому обойдемся простым вариантом:​
  
 <​code>​ <​code>​
Line 45: Line 47:
 ===== Шаг 3. Разворачиваем https прокси ===== ===== Шаг 3. Разворачиваем https прокси =====
  
-В качестве https прокси рассмотрим nginx (можно haproxy, суть не изменится). Поскольку тестировать все будем по ip адресу,​ настроим перенаправление любых запросов (server_name ​ _) на 443 порт в наше http приложение. X-Forwarded-For нуженпоскольку только в этом заголовке будет ip адрес клиента в трафике между https прокси и приложением.+В качестве https прокси рассмотрим nginx (можно haproxy, суть не изменится). Поскольку тестировать все будем по ip адресу,​ настроим перенаправление любых запросов (server_name ​ _) на 443 порт в наше http приложение. X-Forwarded-For ​в нашем случае ​нужен потому, что ​только в этом заголовке будет ip адрес клиента в трафике между https прокси и приложением.
  
 <​code>​ <​code>​
Line 69: Line 71:
 </​code>​ </​code>​
  
-Теперь наше http приложение должно быть доступно по URL: https://​ip_адрес_виртульной_машины/​ правда,​ браузер будет ругаться на сертификат.+Теперь наше http приложение должно быть доступно по URL: https://​ip_адрес_виртульной_машины/​ правда,​ браузер будет ругаться на сертификат ​и придется "​перейти на сайт небезопасно"​
  
 ===== Шаг 4. Разворачиваем IDS Snort ===== ===== Шаг 4. Разворачиваем IDS Snort =====
Line 77: Line 79:
 </​code>​ </​code>​
  
-В вопросах ​визарда про сетевые интерфейсы указываем docker0, в нашем случае именно через него идет трафик между https прокси и http приложением в контейнере. Остальные ответы "по умолчанию",​ результат работы ​визарда записывается в файл:+В вопросах инсталлятора про сетевые интерфейсы указываем docker0, в нашем случае именно через него идет трафик между https прокси и http приложением в контейнере. Остальные ответы "по умолчанию",​ результат работы инсталлятора записывается в файл:
  
 <​code>​ <​code>​
-nano /​etc/​snort/​snort.debian.conf+less /​etc/​snort/​snort.debian.conf
 </​code><​code>​ </​code><​code>​
 ... ...
Line 110: Line 112:
 </​code>​ </​code>​
  
-Для тестирования будем использовать тот самый злополучный ​CodeRed, для которого,​ как раз, есть правило "из коробки":​+Для тестирования будем использовать тот самый злополучный ​Code Red, для которого,​ как раз, есть правило "из коробки":​
  
 <​code>​ <​code>​
Line 138: Line 140:
 <​code>​ <​code>​
 # u2spewfoo /​var/​log/​snort/​snort.alert # u2spewfoo /​var/​log/​snort/​snort.alert
 +</​code><​code>​
 ... ...
         priority: 1     ip source: 172.17.0.1 ​  ip destination:​ 172.17.0.2         priority: 1     ip source: 172.17.0.1 ​  ip destination:​ 172.17.0.2
Line 181: Line 184:
 ===== Шаг 5. Превращаем IDS в IPS ===== ===== Шаг 5. Превращаем IDS в IPS =====
  
-Теперь в журнале поваляются адреса клиентов,​ сигнатуры пакетов которых попадают в правила Snort (с правилами все печально,​ были платные подписки или бесплатно с месячной задержкой,​ теперь только Community rules, в составе пакета,​ ну, и, можно писать свои ​:)+Теперь в журнале поваляются адреса клиентов,​ сигнатуры пакетов которых попадают в правила Snort (с правилами все печально, Snort принадлежит Cisco, были платные подписки или бесплатно с месячной задержкой,​ теперь только Community rules, в составе пакета,​ ну, и, можно писать свои)
  
-Для чтения журнала и блокировки злоумышленником будем использовать fail2ban ​+Для чтения журнала и блокировки злоумышленников будем использовать fail2ban ​
  
 Вообще,​ он ставится командой:​ Вообще,​ он ставится командой:​
Line 231: Line 234:
 </​code>​ </​code>​
  
-А так же снять блокировку:​+А также снять блокировку:​
  
 <​code>​ <​code>​
dpi_из_подручных_материалов.1715570576.txt.gz · Last modified: 2024/05/13 06:22 by val