- PVSM.RU - https://www.pvsm.ru -
Привет! Существует много оборудования и ПО, которое может заниматься фильтрацией трафика. В моем случае это Mikrotik RB3011UiAS-RM. Задача была следующей: запретить загрузку определенных форматов файлов.
Вроде простая задача, и быстрое гугление привело к решению блокировать соединения через Layer7, ибо Web-Proxy работает только с HTTP. И примеры были, но работать так как надо — не работало.
Итак, первая ссылка по Mikrotik Layer7 приводит на Wiki-Mikrotik [1].
А там мы видим, что для работы Layer7 надо заполнить регулярное выражение, которым будет оперировать роутер. Также есть пометка об использовании POSIX-совместимых regexp.
Один из первых вариантов regexp:
^.+(exe|mp3|mpeg).*$
Не работает! Не все загрузки блокируются, иногда блокируются и сайты, в названии или в строке запроса которых, есть символы расширения.
Далее было проверено множество сайтов из первых трех страниц выдачи Google. И я пришел к выводу — надо ковырять regexp.
И снова Google и поиск. В итоге набрел на замечательные сайты:
http://web-sniffer.net/ [2]
https://regex101.com/ [3]
Первый выдает какие запросы уходят на загрузку файла. Второй из этого запроса по регулярному выражению выдает совпадения.
В итоге я пришел к следующему варианту:
GET .*(.exe|.bat|.reg|.cmd|.scr|.vbs|.vbs|.ws|.wsf|.wsc|.apk)[^a-zA-Z0-9].*HTTP.*n
Рассмотрим подробно:
Предпоследний пункт, с [^a-zA-Z0-9] используется, чтобы позволить неуправляющие символы, например: php.net/manual/ru/function.exec.php [4]
Connect to 72.52.91.14 on port 80 ... ok
GET /manual/ru/function.exec.php HTTP/1.1
Host: php.net
Connect to 72.52.91.14 on port 80 ... ok
GET /manual/ru/function.exe.php HTTP/1.1
Host: php.net
Правило применится только лишь во втором случае.
Да, строка GET где будет .расширение. будет дропаться. Но в моем случае этого достаточно. Пользователи не жаловались. А вы сможете дополнить как угодно эти правила.
Далее, чтобы все работало как надо создаем правила для Firewall:
В списке AllowAll находятся IP адреса, к которым правило не применяется.
Проверяем набор регулярных выражений Layer7:
Вот и все!
Автор: xapoh11
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/regexp/241378
Ссылки в тексте:
[1] Wiki-Mikrotik: http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/L7
[2] http://web-sniffer.net/: http://web-sniffer.net/
[3] https://regex101.com/: https://regex101.com/
[4] php.net/manual/ru/function.exec.php: http://php.net/manual/ru/function.exec.php
[5] Источник: https://habrahabr.ru/post/321408/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.