Blog

Mikrotik (3)

Нарыл скрипт в просторах интернета, который позваляет блокировать на mikrotik социальные сайты http и https. Пользователи могут зайти на сайт буквально пару минут (в зависимости как часто мы будем запускать скрипт), после чего сайт блокируется (если найдены ключевые слова). Очень удобно и главное работает.

:foreach i in=[/ip dns cache all find where (name~"facebook" || name~"youtube" || name~"ok.ru" || name~"video" || name~"vk.com" ) && (type="A") ] do={
:local tmpAddress [/ip dns cache get $i address];
delay delay-time=10ms
#prevent script from using all cpu time
:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={
:local cacheName [/ip dns cache get $i name] ;
:log info ("added entry: $cacheName $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=block comment=$cacheName;
}
}

В первой строке мы забиваем в кавычках какие домены искать find where (name~"facebook" || name~"fbcdn" || name~"odnokl" ) . Если есть совпадения то мы закидываем ip адрес этого домена в адреслист с именем block.

Остается создать правило в файрволе, которое блочит адреслист block:

/ip firewall filter add chain
=forward dst-address-list=block src-address-list=!"HotSpot" action=reject reject-
with=icmp-host-prohibited disabled=no


Где src-address-list=!"HotSpot" говорит что правило работает для всех адресов, кроме забитых в адреслист "HotSpot" (т.е. там хранятся адреса тех кому можно ходить на соц сети :) ).
И обращаю в нимание на action - стоит reject, это для того что бы браузер не "повисал" когда обращается к этим ардесам, а сразу выдавал ошибку о том что сеть не доступна.

 

P.S. Осталось написать скрипт, который будет очищать время от времени адреслист block, а то как-то грязно будет)

Данный способ считает количество повторений в логах

/log print file=([/log print count-only where message~"dhcp1 assigned"]); \ /tool e-mail send to="mailЭтот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра." cc="mailЭтот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра." from="Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра." subject=([/system identity get name] . " Log " . \ [/system clock get date]) file=([/log print count-only where message~"dhcp1 assigned"]  . ".txt"); :delay 10; \ /file rem [/file find name=([/log print count-only where message~"dhcp1 assigned"] . ".txt")]; \ :log info ("System Log emailed at " . [/sys cl get time] . " " . [/sys cl get date])

"dhcp1 assigned" - поиск строки в логах, по которой считаем количество

На почту прийде сообщение с вложением, название файла и будет количество найденных строк в логах

После выполения данного скрипта, нужно очищать лог, иначе при следующем повторении скрипта вы повторите прошлые результаты:

/system logging action set memory memory-lines=1; \ /system logging action set memory memory-lines=5000;

Для конфигурирования устройств Mikrotik доступны следующие сервисы: www, telnet, ssh, winbox, api. Если вы настраиваете устройство через командную строку, то операционная система вам не помеха. А вот если вы привыкли делать это через winbox, то клиента winbox для linux нет. Но тут мы можем найти выход - запустить данную программу черех Wine.

На примере Linux Mint:

Устанавливаем Wine  через Администрирование - Менеджер программ

Заходим на вебинтерфейс устройства и качаем WinBox

Заходим в свойство ярлыка и устанавливаем галочку "Позволять выполнение файла как программы" (Вкладка "Права")

Во вкладке "Открыть в программе" устанавливаем - "Wine - загрузчик Windows программ"

После этого можем запускать наш файл Winbox.exe

При первом запуске вы получите предложение установить нужные пакеты для программы Wine - соглашаемся (3 раза)

Все... пользуемся

Счетчики

Gallery

Украина, Киев

P: +38(044) 361-0274

P: +38(044) 364-3769