Пошук по сайту
Результати пошуку за тегами 'sni'.
Найдено 1 результат
-
Припустимо що ви заблокувати фаєрволом щось маленьке, наприклад 154.47.36.16/32 або щось велике, наприклад 178.154.128.0/17. І вам цікаво куди пробують стукатись користувачі чи мобільні аплікації. HTTP зараз стає менш популярним, більшість коннектів відбувається по HTTPS (TLS). Переважна більшість серверів і клієнтів вміють і будуть використовувати SNI https://uk.wikipedia.org/wiki/Server_Name_Indication Цим фактом ми і скористаємось. Отже крок 1 - перезбираємо nginx cd /usr/ports/www/nginx make config опції які нам потрібні [x] STREAM Enable stream module [x] STREAM_SSL_PREREAD Enable stream_ssl_preread module ну і далі make install clean чи portmaster nginx 2 - конфігуруємо nginx stream { log_format main '[$time_local] $remote_addr $server_addr "$ssl_preread_server_name"'; access_log /var/log/ssl_preread.log main; server { listen 843; ssl_preread on; return ""; } } Коментарі: потрібно саме секція stream а не звична http рядок return ""; означає повернути 0 байт і закрити з'єднання, можна пробувати повертати щось інше, наприклад "Blocked!", але TLS стек клієнта ітак їх не зрозуміє і розірве конект. Не забуваємо перезапусти nginx і перевіряємо що він слухає порт netstat -na | grep 843 3 - перенаправляємо трафік ipfw add 05210 fwd 127.0.0.1,843 tcp from any to table\(40\) dst-port 443 В табличці 40 адреси які моніторимо (і блокуємо теж, бо коннекти на порт 443 будуть йти на наш nginx) Результат В файлі /var/log/ssl_preread.log маємо рядки типу [23/Dec/2018:19:13:28 +0200] 192.168.33.38 178.154.131.216 "yastatic.net" [23/Dec/2018:19:13:33 +0200] 192.168.25.47 87.240.129.133 "vk.com" Перша айпішка це клієнт, друга це (заблокований) ресурс. Раджу слідкувати за розміром логу, бо запитів від мобільних аплікацій дуууже багато. Користуємось поки не прийшов ESNI (Encrypted SNI), де хостів видно не буде.
