Апрель 24

Скрипт для блокирования социальных сетей средствами маршрутизатора Mikrotik

stop-social-networks Доброе время суток всем!

Все админы сталкивались с проблемой когда начальник даёт задачу заблокировать социальные сети. Есть два пути:

1. Установить, настроить софт, который контролирует и блокирует доступ к определенным сайтам. Но все упирается в цену вопроса. Если организация готова заплатить от 10 000 рублей, то это облегчает борьбу с соц.сетями. Тут нужно разбираться с настройками антивируса. Для блокирования социальных сетей нужно покупать бизнес пакеты антивирусов Касперский, Эссет Нод32, Доктор ВЭБ.Минусы этого решения:

  • Данные продукты не дешевое решение,
  • Медленно работает интернет соединение из-за того, что все запросы пользователя проверяются серверами антивирусов.
  • Не всегда правила отрабатывают правильно

2. Используем инструментарий который дает нам RouterOS и маршрутизаторы Mikrotik

Я предполагаю, что у вас уже есть этот удивительный и надежный от латвийского бренда Mikrotik. Если вы еще не успели его приобрести, то покупайте тут. После покупки советую вам прочитать две мои статьи по настройки роутера:

Итак, будем блокировать домены социальных сетей по их ip адресам. Но т.к. тот же facebook имеет кучу разных адресов на домен facebook.com, то нам придется прибегнуть к помощи наших дорогих пользователей. Суть вот в чем. Пользователь при заходе на данные сайты просит mikrotik отрезолвить ip адрес домена. Ну а dns сервер mikrotik в свою очередь записывает все адреса себе в кэш. Вот именно кэшем мы и воспользуемся.
В общем вот скрипт:

:foreach i in=[/ip dns cache all find where (name~»facebook» || name~»fbcdn» || name~»odnokl» ) && (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. Или делаем очень просто забиваем в Яндексе или Гугле наименование социальной сети и копируем то, что получаем. У меня получилось вот что:

name~»facebook» || name~»fbcdn» || name~»odnokl» || name~»ok.ru» || name~»vk.com» || name~»vkontakte» || name~»badoo» || name~»flickr» || name~»foursquare» || name~»instagram» || name~»plus.google» || name~»linkedin» || name~»twitter» || name~»taba» || name~»vkrugudruzei» || name~»professionali.ru» || name~»mamba» || name~»loveplanet» || name~»damochka» || name~»tumblr» || name~»moikrug» || name~»my.mail» || name~»anon» || name~»prox» || name~»hid» || name~»zastav»

Этот скрипт можно не только использовать для блокирования социальных сетей, а так же для других. У меня реализовано два таких скрипта. Один ищет и заносит в список блокирования социальные сети, а другой игры и также заносит во второй список для блокирования.

Итак, перейдем к настройке Mikrotik для работы со скриптом:

1. Добавляем скрипт

Программой Winbox цепляемся к Mikrotik. Идем в System, нажимаем на пункт меню Skript

1.System_Skript

Открывается окно со всеми скриптам которые у вас работают.

2.Skript

Для того, чтобы добавить новый скрипт нажимаем на плюсик:

3.Skript2

Пишем в поле «Name» название скрипта. Далее в поле «Source» вставляем скрипт, который вы отсюда скопировали. У нас должно получиться как показано на следующем скрине.

3.Skript3

Осталось только проверить работоспособность скрипта, жмем на кнопку «Run Script». Если вы все правильно сделали, что в Фаерволе должен появиться адрес лист «Block» с IP адресами социальных сетей.

Для того, чтобы наш скрипт работал автоматически, нужно настроить расписание задач.

2. Настраиваем расписание задач

Для того, чтобы настроить автоматическое срабатывание скрипт, нужно настроить Sheduler Mikrotik

Для этого мы идем в пункт меню System, выбираем подпункт Sheduler

4.Sheduler

Нам открывается окно со всеми задачами, которые у нас работают на роутере. Далее нажимаем на плюсик для того, чтобы добавить новую задачу.

Нам открывается новое окно для добавления задачи.

5.Sheduler2

В поле «Name» пишем название задачи, в поле «Interval» ставим время, через которое задание должно срабатывать 3 секунды в самый раз, в поле «On event» пишем /system script run название скрипта (у меня: /system script run blockgame, где «blockgame» название скрипта). У вас должно получиться:

6.Sheduler3

И в конце нам осталось настроить фаервол

3. Настройка фаервола

Пишем правило:

/ip firewall filter add chain=forward dst-address-list=block src-address-list=!»dostup na sots seti» action=reject reject-with=icmp-host-prohibited disabled=no
Где src-address-list=!»dostup na sots seti» говорит что правило работает для всех адресов, кроме забитых в адреслист «dostup na sots seti» (т.е. там хранятся адреса тех кому можно ходить на соц сети 🙂 ).
И обращаю внимание на action — стоит reject,  это для того что бы браузер не «повисал» когда обращается к этим адресам, а сразу выдавал ошибку о том что сеть не доступна.

 




Copyright © 2014. All rights reserved.

Опубликовано 24.04.2015 Васин Сергей в категории "Настройки и примочки роутера Mikrotik", "Системное администрирование

Добавить комментарий