Фильтруем и управляем подключением Skype
Добрый день.
Многие наверное подумают - что это немного не тот сайт и не стоило сюда писать, но решил поделиться данной наработкой. Думаю кому-то эта статья будет полезна.
Вопрос с управлением доступом к Skype - это больная тема многих сетевиков и администраторов. В попытках найти решение в интернете многие собирают статистику подключений Skype и открывают доступ полностью в весь пул сетей - но анализ этой чудо программы показал что это не вариант, так как я не очень люблю как работают некоторые вещи для меня непонятным образом, решил что нужно принимать какие-то меры. Так же многие упоминают про Layer 7 protocol - но в случае с L7 у Вас получится только корректно заблокировать доступ, но не управлять им. Для понимания: Skype - очень противное приложение в плане сетевого взаимодействия, ломится на кучу IP-адресов и хостов по куче портов среди которых и 80 и 443. Решение есть и оно довольно простое, мы будем использовать метки DSCP (TOS) и делать будем это средствами самой Windows. О самих же метках лучше почитать внимательно в интернете.
Немного теории
Имеем доменную машину, с Skype на борту, через групповые политики добавляем DSCP(TOS) метку на приложение, маршрутизатор в свою очередь принимая метку маркирует соединение и на основе access-листа разрешает, либо запрещает соединение.
Собственно будем пытаться сделать как на схеме. Метку при этом я выбрал 32 - она довольно распространенная даже среди провайдеров, но мы не будем лезть в входящий и исходящий трафик, мы лезем только в "проходящий мимо". Почему 32? - а у нее просто очень хорошее число, в бинарном виде DSCP передается как 100000, а TOS 100 - дело в том что некоторые старые устройства не понимают что такое DSCP и метку обрезают с конца до TOS и число 100000 превращается в 100 - такую метку наш роутер тоже поймет. Еще бывает коммутаторы промежуточные срезают метку поставленную роутером - не доверяют типа роутеру, для этого надо на примере коммутаторов SNR добавлять строку на интерфейс mls qos trust dscp. Ладно, хватит теории, к делу.
Практическая часть
Сначала нам надо повешать метку на приложение - открываем редактор локальной групповой политики
Переходим Конфигурация компьютера -> Конфигурация Windows -> QoS на основе политики
Нажимаем правой кнопкой мыши Создать новую политику. Добавляем профиль политики я ее назвал skype_dscp, следом нужно указать значение (от 0 до 63) и частоту передачи - я выбрал значение 32 и частоту передачи 2 Мб/с.
Далее нам надо выбрать приложение или URL-адрес приложения, URL как мы поняли нам неизвестен, собственно поэтому эта статья и написана, выбираем только к приложениям с именем исполняемого файла - в данном случае указываем skype.exe.
Далее нам следует указать IP-адреса, но нам опять же они неизвестны, да и не интересно собственно, в целом у нас итак будет возможность управлять им на роутере, поэтому ставим к любому исходному IP-адресу и к любому конечному IP-адресу.
Далее нужно указать протоколы и порты подключения, нам они опять же неизвестны, но известно что Skype использует как TCP так и UDP соединения, поэтому надо выпадающий список поставить TCP и UDP.
Нажимаем Ок и наша политика готова.
Для раскатывания политиками или добавления вручную достаточно добавить значения в ветке реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\QoS\skype_dscp
Далее нам надо отмаркировать это дело на нашем микротике, заходим IP -> Firewall -> Mangle и добавляем новое правило:
Консольный вариант:
add action=mark-connection chain=forward comment=DSCP_32_mark_skype_connection_except_allow_all dscp=32 new-connection-mark=DSCP_32 passthrough=no src-address-list=!allow_all
У меня маркируется трафик Skype, кроме тех, кто в адрес-листе allow_all - это люди, которым дан полный доступ в интернет - нет смысла маркировать то, что итак доступно.
Теперь у нас приложение маркируется на роутере. Как узнаем? Да просто: заходим на микротик IP -> Firewall -> Connections, фильтруем по нашему Src.address и видим:
ОГО! И это подключения только с одного компьютера.....
Осталось разрешать или запрещать, создадим 3 правила на основе access-листа.
Создадим разрешающие правила, правило на source:
Правило на destination отличается от source только в вкладке Advanced:
Создадим теперь запрещающее правило - все тоже самое, только в Advanced ничего не ставим, а Action -Drop:
Консольный вариант всех трех правил:
add action=accept chain=forward comment=DSCP_32_allow_source_skype_connection_except_allow_skype_for_user connection-mark=DSCP_32 src-address-list=Allow_Skype_for_User
add action=accept chain=forward comment=DSCP_32_allow_destination_skype_connection_except_allow_skype_for_user connection-mark=DSCP_32 dst-address-list=Allow_Skype_for_User
add action=drop chain=forward comment=DSCP_32_reject_skype_connection_except_allow_skype_for_user connection-mark=DSCP_32
Все готово! Для того, чтобы Skype разрешить пользователю доступ в Skype добавляем адрес компьютера пользователя в IP -> Firewall -> Address Lists название листа Allow_Skype_for_User. Для его запрета просто удаляем адрес из списка. Раскатать массово доменными политиками думаю сложности администратору не составит. На этом настройка закончена.
Рад если кому-то пригодится данный мануал.