Задача блокировки социальных сетей Вконтакте, Одноклассники, да и любых других сайтов, очень просто решается средствами самого маршрутизатора Mikrotik. В основном, в сети можно найти описание уже устаревшего варианта решения данной проблемы с использованием L7 протокола.
Однако, такой вариант блокировки нежелательных сайтов сильно нагружает процессор маршрутизатора, так как приходится разбирать регулярные выражения, зачастую ещё и не правильно составленные в этих инструкциях. Таким образом можно заблокировать и те сайты, которые по ошибке тоже попали под регулярное выражение.
Пример такого неудачного регулярного выражения Layer7 Protocols для фильтрации социальных сетей:
Нетрудно заметить, что под действие данного правила, например, попадают любые сайты с окончанием доменного имени *ok.ru. Плюс возросшая нагрузка на роутер.
Блокировка cоцсетей на Mikrotik через адресные листы
В RouterOS, начиная с версии v6.36, появилась возможность добавлять доменные имена в адресные листы. В результате отпала необходимость заморачиваться с составлением регулярных выражений для Layer7 Protocols и такой вариант блокировки нежелательных сайтов практически не нагружает процессор роутера.
Первым делом добавляем нужные сайты в адресный лист (назовём его social). Сделать это можно и через web-интерфейс, перейдя в меню IP > Firewall > Address_Lists, но в данном случае удобнее использовать режим терминала (тоже в web-интерфейсе):
/ip firewall address-list add address=vk.com list=social
/ip firewall address-list add address=ok.ru list=social
Весьма удобно, что соцсети сами делают редирект на свои короткие доменные имена, потому нет необходимости дополнительно прописывать vkontakte.ru или odnoklassniki.ru и тому подобное, они заблокируются самостоятельно.
Осталось добавить правило блокировки в файервол:
/ip firewall filter add action=drop chain=forward src-address=192.168.11.0/24 dst-address-list=social
В приведённом примере блокируются соединения для доменов vk.com и ok.ru для всей подсети 192.168.11.0/24. Роутер самостоятельно добавляет нужные ip адреса, соотвествующие этим доменам в файервол. Вместо drop я бы рекомендовал использовать reject, так как оно быстрее сбрасывает соединение:
/ip firewall filter add action=reject chain=forward src-address=192.168.11.0/24 dst-address-list=social protocol=tcp reject-with=tcp-reset
Что ещё почитать про настройку MikroTik:
Не ленитесь ставить лайк и подписываться на канал Дзен и паблик Вконтакте, будет ещё много интересного.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Комментариев: 2
- 2018-11-25 в 13:37:39 | Игорь Сошников
Весьма толково все описано и в принципе понятно и хотя лично мне не нужно блокировать соц сети, но несомненно найдется достаточно заинтересованных лиц.
Запретить доступ к социальным сетям и прочим сайтам на маршрутизаторах Mikrotik можно несколькими способами.
Первый и наиболее эффективный
способ, это включить web-proxy, запретить в нем конкретные сайты, в фаерволе во вкладке NAT добавить правило которое будет нужные IP направлять на web-proxy.
Добавляется правило в IP — Firewall — NAT (Chain: dstnat, protocol: tcp, Dst. port: 80, Action: redirect, To Ports: 8080, в Src. Address или Src. Address List указываем кого необходимо направить на Web proxy)
Включаем Web proxy поставив галочку в IP — Web proxy — Enabled, смотрим чтобы порт был 8080.
Добавляем сайты которые нужно заблокировать в IP — Web proxy — Access (например Dst. host: vk.com, Action: deny)
Второй и один из простых
это добавить статическую DNS запись, тогда все кто подключены к маршрутизатору не смогут зайти на сайт.
Для этого необходимо нажать «IP» — «DNS» — «Add New», в поле «Name» указать домен сайта, в «Address» — 127.0.0.1.
Пример добавления через командную строку:
Команда просмотра статических DNS записей на маршрутизаторе:
Однако этот запрет можно обойти прописав вручную на компьютерах сторонний DNS сервер, например Google DNS — 8.8.8.8 и 8.8.4.4.
Третий вариант
это посмотреть на каких ip-адресах находится сайт, например набрав в командной строке Windows команду nslookup vk.com, потом в фаерволе заблокировать доступ к ним для всех пользователей или конкретным. Вместо кучи ip адресов можно указать подсеть, например 87.240.131.0/24 (это ip 87.240.131.1-254). На сайтах типа «http://bgp.he.net/AS47541#_prefixes» можно посмотреть диапазоны IP адресов принадлежащие AS компании.
Пример команд:
Четвертый вариант
через протокол седьмого уровня (все пакеты в которых будут встречаться указанные выражения будут отбрасываться, таким образом могут блокироваться даже сообщения в чате, в которых встречаются выражения):
Популярная серия бюджетных маршрутизаторов из Латвии на базе RouterOS предоставляет пользователям широкие возможности по настройке. Сегодня я подробно рассмотрю возможности mikrotik по блокировке сайтов, рекламы, социальных сетей, по созданию списка запретов на доступ. Все эти средства присутствуют в роутерах из коробки и не требуют специальных знаний для настройки, кроме стандартных средств управления.
Данная статья является частью единого цикла статьей про Mikrotik.
Как быстро закрыть доступ к сайту
Начнем с самого простого. У нас есть роутер Mikrotik, утилита winbox и желание конкретному пользователю установить запрет на посещение определенного сайта. Подключаемся к роутеру и идем в раздел IP -> Firewall , открываем закладку Filter Rules :
Нажимаем на + и добавляем новое правило блокировки сайта:
На первой вкладке General заполняем:
- Указываем цепочку Forward.
- Указываем адрес пользователя, которому будет закрыт доступ к сайту.
- Выбираем протокол TCP.
Дальше переходим на вкладку Advanced :
В поле Content указываем адрес сайта, который нужно заблокировать, например vk.com. Переходим на вкладку Action :
Здесь выполняем следующие действия:
- В поле Action выбираем reject.
- В пункте Reject With указываем tcp reset.
- Нажимаем OK.
На этом основная настройка закончена. В данный момент правило по фильтрации сайта уже работает. Мы с помощью стандартных средств mikrotik смогли заблокировать vk.com. Это нетрудно проверить на клиенте. При попытке открыть адрес сайта популярной соц. сети он получит следующее сообщение в браузере chrome:
В данном случае мы в ручном режиме сделали блокировку сайта конкретному пользователю. Если у вас таких сайтов и пользователей много, процесс надо по-возможности автоматизировать.
Черный список сайтов для фильтрации
Давайте создадим отдельно список сайтов и укажем его в правиле, чтобы не создавать запрет для каждого имени отдельно. Сделать это не сложно. Для этого опять идем в раздел IP -> Firewall , открываем вкладку Layer7 Protocols и нажимаем «+» для добавления списка:
В поле regexp необходимо ввести регулярное выражение для организации списка сайтов. Я сам лично не умею составлять правильно регулярные выражения, поэтому приходится их искать в интернете. Подавляющее большинство регулярок, которые я нашел, у меня не заработали. Привожу вам список видеохостинга для блокировки в виде регулярного выражения, которое заработало лично у меня:
Список можно расширить, добавляя значения в скобках через знак вертикальной палки, что означает логическое «или».
После составления списка, включаем его в правило. Как создать правило я уже рассказал в первой части статьи. В данном случае отличие будет только в одном пункте:
Вместо поля Content выбираем название нашего списка для блокировки video в поле Layer7 Protocol.
Если у вас настроен firewall на микротике и в нем присутствуют какие-то правила, то текущее правило блокировки нужно правильно разместить в списке, чтобы оно работало. Например, у меня есть материал на тему настройки firewall. Там есть правила:
Текущее правило блокировки списка сайта на основе Layer7 Protocol должно стоять выше этого правила, иначе оно не будет работать. Я не до конца понял, почему, но я провел достаточно много тестов, чтобы убедиться, что его реально надо ставить выше. Ну и, разумеется, оно должно стоять выше правила, разрешающего соединения forward из локальной сети.
В этом правиле блокировки в поле Src.Address вы можете указать конкретный ip пользователя, можете указать всю подсеть, либо вообще оставить поле пустым для запрета выхода на закрытые сайты всему транзитному трафику маршрутизатора, в независимости от его источника.
Вот как у меня выглядит список моих правил на фаерволе с учетом добавленного правила блокировки:
Тут я блокирую доступ c тестового ip адреса. Все остальные правила похожи на те, что я описывал в своей статье по настройке простого фаервола на микротике, ссылку на которую я приводил выше.
Вы можете включить логирование заблокированных соединений с сайтами из списка на вкладке Action самого правила:
Mikrotik будет генерировать подобные логи:
Эти записи вы можете перенаправить на удаленный сервер для логов, чтобы потом анализировать статистику срабатывания правила. Для удобства, эти правила можно разделить по сайтам, по пользователям и т.д. В общем, поле для контроля работы правила обширное.
Запретить социальные сети в mikrotik
Так как мы научились составлять списки для блокировки сайтов, на основе этой информации легко закрыть доступ в социальные сети одним правилом. Для этого как и ранее добавляем регулярное выражение со списком соц сетей:
Дальше создаем правило, как мы это делали выше и выбираем список, который только что добавили:
Выбираем как и ранее адреса источников для блокировки и добавляем правило. Все, этого достаточно для того, чтобы заблокировать социальные сети у пользователей. А включив логи, сможете еще и следить за тем, кто время от времени пытается в них зайти.
Блокировка рекламы средствами mikrotik
С помощью изученного средства по ограничению доступа к сайтам достаточно просто блокировать рекламу. Для примера рассмотрим вариант по блокировке рекламы в Skype. Так как я знаю адреса серверов, куда скайп лезет за рекламой, я могу его заблокировать в mikrotik. У меня есть список:
Это адреса, откуда загружается реклама. Списки эти могут меняться время от времени, нужно периодически проверять и обновлять. Самому подготовить список рекламных адресов для конкретного сервиса можно, к примеру, с помощью настройки собственного dns сервера и включения логирования запросов.
Дальше как обычно создаем regexp выражение для списка адресов:
Добавляем новое правило, подключаем к нему список, созданный ранее и наслаждаемся работой скайпа без рекламы.
Заключение
Материала в интернете по Микротику много. Я сам пока разбирался в данном вопросе перечитал кучу статей. И все они какие-то недоделанные. Либо вопрос слабо раскрыт, либо что-то вообще не работает. Не знаю, в чем причина такой ситуации. Возможно что-то меняется в настройках и информация становится неактуальной. Сходу у меня не заработала фильтрация на основе Layer7 Protocols, пришлось повозиться, покопаться в regexp, в правилах, в их расположениях. Надеюсь мой материал немного исправит данную ситуацию.
Буду рад любым замечаниям к статье, так как сам учусь в процессе написания. В своей работе лично я не использую какие либо ограничения доступа к сайтам, так как считаю это бесполезным занятием. Но многие пользуются, поэтому разбираться в этом вопросе считаю полезным делом.
Напоминаю, что данная статья является частью единого цикла статьей про Mikrotik.
Помогла статья? Есть возможность отблагодарить автора
Рекомендую полезные материалы по схожей тематике: