pfSense - удавка для социалок
on
5/07/2012 01:51:00 AM
Со времен приобретения дикой популярности пиринговых и социальных сетей в массе пролетариата и прочих тружеников меня интересовал вопрос а как бы отстранить пользователя сети от этого пагубного для работы время провождению и жадному использованию ресурсов сети. Использование арсенала прокси служб уже не давало должного КПД ибо анонимайзеров и сторонних проксей развелось как собак не резанных. И если со сторонними проксами повоевать можно посредством фаервола то с анонимайзером уже фиг отстоишь флаг базы. К счастью на любое действие имеется противодействие(к сожалению как я для себя подметил, в случае ИТ действия исходит от условно хороших парней а противодействия от не очень и как правило эти противодействия ахрененхые головные боли создают ибо являются результатом дыр решений первых) и к тому времени уже существовали такие штучки как layer-7 ipp2p(заточенный в основном на пиринговые сети типа битторента, козульки и пр). Самым привлекательным решением было конечно внедрение layer-7 ибо отзывы были весьма положительные да и спецификация приблудки охватывала большой спектр протоколов. Версию юзерспэйс со старта не рассматривал как эффективную. Хотелось прикрутить это дело с ядру и далее уже конечно к iptables. Трахания и шаманства имели место не единожды. Накладывание патчей и собирание ядра с поддержкой в нетфильтре злосчастного layer-7 не приносили желаемого результата - то новое ядро в упор не принимало новые желаемые модули, то iptables отказывался понимать и сходится с, вроде бы успешно, установленным layer-7.
Через некоторое время познакомился с MikroTik'ом и его прекрасным внедрением layer-7. Ну вроде как торренты можно было душить, впрочем как и социалки, но несколько недостатков в проксе чуда латвийских кудесников сводили решение проблем к уровню частично. И вот буквально несколько месяцев назад я знакомлюсь уже с pfSense(к тому времени уже была версия 2.0). Я имел удовольствие щупать его предка m0n0wall(к которому отношусь крайне тепло),. знал его возможности но почему то упускал из виду замечательных отпрысков BSD. Ну да ладно, не в этом суть.
Установив на тестовую лошадку сие чудо я был крайне приятно удивлен что в портах есть сквид, впрочем как и много другого вкусного лакомства и поддержка layer-7. Бинго!!! Забегая вперед скажу что в итоге я подружил рутерборд с детищем БСДшки и в итоге у меня образовался весьма кусачий и мощный инструмент для дележа канала и наведения в нем марафета.
Итак, пока все носило чисто ознакомительный и саморазвивающий характер, пользователи той сетки которую мне вверили барагозили по полной. Не спасало даже отключение с портов цыски(всегда находились отмазки моля я не я и коза не моя, естественно администрация благосклонно относилась к себе подобным, чем к аргументам и доказательствам админа). В свете всего этого крайне остро стоял вопрос получения инструмента глушения всего в зародыше, на сетевом уровне. В некотором итоге праздник на улице случился и администрация, убедившись в полной неэффективности своих некогда горячо любимых оболтусов, дала отмашку на закрытие соц сетей. Ооо, это был по истине beautiful day! Ну все суки, папочка даст вам скоро прикурить. В моем случае топология чуть иначе но ниже изложенное прекрасно должно работать на машинке задом повернутой к локалке. Проще говоря это гейт некой сети. Важный момент что через эту машинку проходит весть сетевой траффик или по крайней мере http.
Создание правил не займет более 5-10 минут.. Первым делом заходим ссшом на наш фаерволл с pfSense и точне в /usr/local/share/protocols (тут как раз и дремлют спокойно паттерны layer-7). К слову тут много всего интересного, но нас интересует http в первую очередь. Собственно тут мы и создаем наш собственный паттерн который будет щелкать пакетики на предмет нахождения в ним указания на одноклассники и прочей ереси(кроме ВК :) ). Итак, создаем файлик antisocial.pat
!!! Крайне важно чтобы название файла совпадало с названием протокола объявленного в вашем паттерне, в противном случае pfSense попросту не увидит ваш самопал.
В самой простой реализацией можно наполнить паттерн следующим:
nano antisocial.pat:
# Protocol name
antisocial
# Pattern
^.+(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook).*$
Бережно сохраняем и щимимся на вэб морду нашего pfSense. Шаги сдесь следующие. Сперва в разделе Firewall->Traffic Shaper->Layer7 мы проделываем следующее:
Сохраняем и получаем контейнер с паттерном для нашего протокола antisocial. Далее собственно мы используем его по назначению. Заходим в Firewall->Rules и создаем правило которое будет блокировать все что будет носить в себе семя соц разврата. Я например добавил в Floating.следующее:
Не забываем про продвинутые возможности и выбираем наконец недавно созданный протокол паттерн:
Сохраняемся и получаем нечто подобное:
Что мы получили? Мы получили в итоге такую ситуацию на стороне нерадивого потребителя сетевых ресурсов - гражданин(в моем случае чаще гражданочка) бодро набирает заветный адрес с надеждой что через ночь кто то оценил на 5+, не менее, китообразное тельцо распластанное на просторах предбанника, объективно все же напоминающее, по количеству складок, туловище доктора Зойдберга. Пока клиент находится в предвкушении его бедный браузер отправляет ниже по всему стэку сетевых протоколов злосчастный запрос который добравшись кадром до pfSense получает от него пинок а ля Роберто Карлос. В тщетном ожидании браузер высырает пирамиду кирпичей не меньше египетских и в каком то итоге капитулирует ошибкой типа сетевой ресурс недоступен или тайм аут по соединению. Наш клиент в полном ахуе набирает номер тех поддержки с целью высказать свое крайнее не довольствие по поводу отсутствия интернета, или его плохого качества(к сожалению это не гипербола и для многих даун какого нибудь сетевого ресурса непременно означает отсутствие интернета), но в итоге получает злорадный форвард на постановление руководства и в придачу "на-кося выкусь сцуко"(так. для себя).
Стоит заметить что фильтрация проходи успешно и в случае анонимных и элитных проксей и анонимайзеров со включенным SSL шифрованием(по крайней мере daidostup и hidemyass успешно обсырались). Как показал сниффинг нескольких пакетов, в случае использования хайдмайэс со включенным SSL есть пакетики с методом GET на урл социалки.
В этой чудесной истории есть место одному малоприятному НО!. Не так давно каждый кому ни лень стал пиздячить клепать на свои странички кнопочки и ссылки на популярные соц сети. Это в свою очередь приводит к тому что такая страница будет испытывать затруднения с загрузкой ибо наш pfSense настолько злой что не пропускает ничего мимо себя(пусть даже запрос гуглы о том why facebook doesn't work). В итоге херня вроде vesti.ru может с большими хрустами открыться наполовину или вообще заглохнуть с тайм аутом по ожиданию. Вынос мозга по такому случаю гарантирован.
Возможно я чего то недоглядел и можно вырулить и эту ситуацию. но личгно меня все так вконец достало что пришлось открыть кран и пойти по самому нездоровому пути - привлечь средства блокировки проксы и глушение пфсенсом анонимайзеров.
Финальное решение принимается как абсолютная и без компромиссная херня, но в мире где юзвери диктуют свои условия без профанации, ереси и херни наверно не обойтись.
!!!ТуДу!!!
Рассмотреть возможности использования каких то хитрых правил фаера в купе с фильтрацией на сетевом уровне....