Блокування завантаження файлів з розширення
Привіт Хабре! Існує багато обладнання та ПЗ, яке може займатися фільтрацією трафіку. У моєму випадку це Mikrotik RB3011UiAS-RM. Завдання було наступним: заборонити завантаження певних форматів файлів.
А там ми бачимо, що для роботи Layer7 треба заповнити регулярний вираз, яким оперуватиме роутер. Також є позначка про використання POSIX-сумісних regexp.

Один з перших варіантів regexp:
Не працює! Не всі завантаження блокуються, іноді блокуються і сайти, в назві чи рядку запиту яких є символи розширення.
Далі було перевірено велику кількість сайтів з перших трьох сторінок видачі Google. І я дійшов висновку — треба колупати regexp.
І знову Google та пошук. У результаті натрапив на чудові сайти:
Перший видає якісь запити йдуть на завантаження файлу. Другий із цього запиту за регулярним виразом видає збіги.
У результаті я дійшов наступного варіанту:
- GET— початок рядка, в якому відбувається запит чогось на сайті example.com
- .*— скільки завгодно будь-яких символів
- (\.exe\.bat\.reg\.cmd\.scr\.vbs\.vbs\.ws\.wsf\.wsc\.apk)— список того, що шукаємо
- .*— скільки завгодно будь-яких символів
- [^a-zA-Z0-9]— знаки,^=НЕвходять до множиниa-z, A-Z, 0-9
- .*HTTP.*\n— HTTP, обрамлене будь-якими символами (HTTP.*необов'язково), і\n— переклад рядка
- Connect to 72.52.91.14 on port 80 . ok GET /manual/ua/function.exec.phpHTTP/1.1 Host: php.net
- Connect to 72.52.91.14 on port 80 . ok GET /manual/ua/function.exe.phpHTTP/1.1 Host: php.net
Так, рядокGETде буде.розширення.буде дропатися. Але в моєму випадку цього достатньо. Користувачі не нарікали. А ви зможете доповнити як завгодно ці правила.
Далі, щоб усе працювало як треба, створюємо правила для Firewall:upd:— замість DROP вказуйте REJECT-TCP RESET.У цьому випадку браузеру надходить відповідь «З'єднання скинуто». Дозволяє відразу відмовлятися від завантаження сторінки або кадру, на які спрацювало правило, що прискорить завантаження. (Дякую за підказку AcidVenom)
Перевіряємо набір регулярних виразів Layer7:
Ви можете допомогти і перевести небагато коштів на розвиток сайту