[an error occurred while processing this directive]

Блокирование Skype по IP-адресам во FreeBSD
Раздумывая на досуге о наболевшем вопросе как заблокировать Skype, пришла идея,
может она здесь уже описывалась, но всё таки решил поделиться личным опытом,
может кому и пригодится.

Первый раз заблокировать Skype удалось путём перекрытия всех не нужных портов и
кое каких правил в прокси squid, которые не давали соединятся по ip-адресам
методом CONNECT. Но это не самый лучший вариант, так как блокируется и всё
остальное, icq, маил агенты и т.п.
Новая идея основана на отслеживании и блокировке IP, на которые пытается
соединиться Skype. И так, как я это делал (шлюз работает под управлением
FreeBSD 8.1):


1. Нужен какой ни будь компьютер с Windows и установленным скайпом, желательно последней версии.

2. Отключаем на ПК все программы, которые могли бы обратиться в интернет,
windows update и всё остальное (что бы эти адреса не попали в дальнейшем в
список блокируемых).

3. Нужно включить скайп и залогиниться, что бы он взял с сервера базу
ip-адресов, на которые можно соединяться. После этого выключаем его.

4. На шлюзе настраиваем фаервол, что бы он блокировал весь сетевой трафик ПК с протоколированием:

   ipfw add 50 deny log logamount 10000000 all from ip_машины to any

пояснение: все обращение с нашей машины будут сыпаться с запретом в лог, у меня /var/log/all.log.

5. Включаем сбор логов и отсеиваем в отдельный файл:

   tail --f /var/log/all.log | grep ipfw: 50 > /usr/skype.ip

6. Включаем Skype на нашем компьютере и пытаемся залогиниться.
получаем в файле skype.ip примерно следующее:

   Jul  9 14:34:10 server kernel: ipfw: 50 Deny UDP 192.168.3.41:40335 217.114.226.118:37950 in via rl0
   Jul  9 14:34:11 server kernel: ipfw: 50 Deny UDP 192.168.3.41:40335 87.228.19.207:15134 in via rl0
   Jul  9 14:34:12 server kernel: ipfw: 50 Deny UDP 192.168.3.41:40335 95.52.139.143:52195 in via rl0
   Jul  9 14:34:12 server kernel: ipfw: 50 Deny UDP 192.168.3.41:40335 95.236.12.233:15842 in via rl0

Это малая часть моего примера из файла. Там больше записей.

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

8. Теперь нам нужно из всей этой каши отобрать IP, на которые обращался скайп и
заблокировать в фаерволе. Я написал не большой скрипт, создаём файлик и пишем
туда следующее:

   # Очищаем таблицу 1, если таковая существует.
   ipfw table 1 flush 

   # Запускаем считывание ip адресов(сортируем и отбираем только уникальные записи, 
   # потому что могут быть повторяющиеся), куда стучался скайп.
   awk '{print ($11)}' /usr/skype.ip | sed 's#:.*##' | sort | uniq |  while read ip; 

      # Добавляем поочерёдно извлечённые адреса в таблицу 1.
      do ipfw table 1 add $ip 
   done 

9. Запускаем наш скрипт, если всё сделано верно, то таблица под номером 1
должна была заполниться адресами. Это можно проверить командой

   ipfw table 1 list

10. Всё, у нас есть таблица ip-адресов, куда соединялся скайп, теперь остаётся
только написать правило:

   ipfw add 50 deny all from ip_машины to table\(1\)

11. Включаем скайп на нашей машине и проверяем, что скайп не может залогиниться.

Вот в принципе и всё. Проделав это, удалось заблокировать скайп, без вреда для
других программ. Да и ещё, нужно настроить сквид, что бы тот блокировал попытку
соединения вида CONNECT по ip-адресам. Если ваши пользователи знают адрес
прокси сервера и порт, то они могу указать это в скайпе и тот спокойно будет
работать через прокси. Как это сделать есть масса статей в интернете.

И ещё нужно не забывать, что скайп может соединиться с сервером через другой
компьютер, на котором запущен скайп и есть доступ в интернет. Они называются
супернодами. Но у меня это не вышло, я запустил скайп на своём компьютере,
залогинился и закрыл доступ другому, тот второй не смог соединиться.

Есть много способов вычислить адреса на которые стучится скайп. Мой пример -
это один из вариантов и он проверен. Как часто обновляется база ip адресов я не
знаю, но если эту операцию проделывать несколько раз в неделю, мне кажется
можно поддерживать базу ip адресов в актуальном состоянии.
 
09.07.2011 , Автор: Тикунов Максим
Ключи: skype, freebsd, firewall, ipfw / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

[an error occurred while processing this directive]

[an error occurred while processing this directive]