Блокиране на изтегляне на файлове чрез разширение

Здравей Habr! Има много хардуер и софтуер, които могат да филтрират трафика. В моя случай това е Mikrotik RB3011UiAS-RM. Задачата беше следната: да се забрани изтеглянето на определени файлови формати.

И там виждаме, че за да работи Layer7, трябва да попълните регулярен израз, с който ще работи рутерът. Има също бележка относно използването на POSIX-съвместими регулярни изрази.

чрез

Една от първите опции за регулярен израз:

Не работи! Не всички изтегляния са блокирани, понякога са блокирани сайтове, в чието име или в низа на заявката има разширение.

След това бяха проверени много сайтове от първите три страници на издаването на 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е нов ред
Предпоследната клауза с[^a-zA-Z0-9]се използва за разрешаване на неконтролиращи знаци, например: php.net/manual/ru/function.exec.php

  1. Свържете се към 72.52.91.14 на порт 80. добре GET /manual/ru/function.exec.phpHTTP/1.1 Хост: php.net
  2. Свържете се към 72.52.91.14 на порт 80. Добре GET /manual/ru/function.exe.phpHTTP/1.1 Хост: php.net
Правилото ще се прилага само във втория случай.

Да, редътGETкъдето.extension.ще бъде премахнат. Но в моя случай това е достатъчно. Потребителите не се оплакаха. И вие можете да допълвате тези правила както искате.

След това, за да работи всичко както трябва, създаваме правила за защитната стена:upd:- вместо DROP, посочете REJECT-TCP RESET.В този случай браузърът получава отговор „Нулиране на връзката“. Позволява ви незабавно да откажете да заредите страницата или рамката, върху която е работило правилото, което от своя страна ще ускори зареждането. (Благодаря за съвета AcidVenom)

Проверка на набора регулярни изрази Layer7:

Можете да помогнете и да прехвърлите средства за развитието на сайта