Архив метки: pfsense

pfSense блокирование социальных сетей и других сайтов

Требуется ограничить доступ сотрудников к опеределенным интернет ресурсам, социальных сетей и прочее. Для решения данной задачи будем использовать такую технологию как Layer 7, на сколько мне известно, данная технология считываем первые 2 килобайта в пакете, в котором ищет указаное вхождение. Если найдено, то выполняются указанные действия.
Заходим через SSH на pfSense. Переходим в деррикторию

cd /usr/local/share/protocols/

В данном каталоге находятся паттерны, через которые идет отлов пакетов. Но нас интересует социальные сети, для них паттера нет — решаем. Для начала создадим файл с раширением .pat в который буде записано правило.

ee antisocial.pat

Важно, нужно чтобы называние файла совпадало с названием протокола объявленного в создаваемом паттере.
Запишем в наш паттер следующие строки.

# Protocol name
antisocial
# Pattern
^.+(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook).*$

Сохраняем.
Переходим к web-интерфейсу pfsense. В раздел Firewall: Traffic Shaper: Layer7. В данном разделе создаем новое правило Create new l7 rules group. Если в предыдущих пунктах все было сделано правильно, то в списке протоколов появится новый пункт antisocial.
120520150804
Теперь требуется применить это ограничение к группе адресов. В разделе правил маршрутизации создаем правило. И в пункте Layer7 выбираем наше ограничение.
120520150814
Применяем новое правило. И проверяем.

Пользователи у нас хитрые. И пытаються использовать такую богомерзкую программу как TOR, но и на это у pfsense есть достойный ответ.
Для этого установим такой инструмент как pfBlocker. После установки, находим его в разделе Firewall.
Делаем настройки как на рисунке. В разделе Inbound Interface(s) выставляем WAN интерфейс, в разделе Outbound Interface(s) указываем LAN.
Под каждым интерфейсом выставляем параметр Block
22092015

Далее в разделе Lists, указываем URL откуда будем брать списки TOR серверов, я использую для этого эту http://list.iblocklist.com/?list=tor ссылку. Вставляем ее в указаное поле, выставляем обновлять список каждый час. Сохраняем.155022092015

Все, после этого у меня ТОР перестал работать.

pfsense + squid + LDAP + AD

Попытаюсь рассказать как я решил проблему установки и настройки pfsense на Hyper-V 2012, а так же организовать аутентификацию через LDAP для разграничения прав доступа к сайтам по группам из AD. Используем pfsense 2.1.4-RELEASE (amd64) built on Fri Jun 20 12:59:50 EDT 2014. Из трудностей которые возникли это то что pfsense после установки не хотел видеть виртуальные интерфейсы, которые использует Hyper-V Core 2012 по умолчанию. Решение данного вопроса — поставить «устаревшие виртуальные интерфейсы», но они не поддерживают VLAN, зато pfsens их видит. На этом неприятности с интерфейсами не заканчиваются. ОС pfsense видит сетевые интерфейсы (de0 и de1), но трафик через них не ходит. Это какой то баг не совместимости. Для решения — просто выключаем/включаем интерфейсы из консоли pfsenseifconfig de0 down|up. После этого интерфейсы начинают работать. Далее из пакетов ставим squid 2. Нам надо настроить авторизацию пользователей через LDAP: в принципе как это сделать написано на каждом заборе, но тут тоже есть свои нюансы. 260920161109 Нюанс заключается вот в чем, для поиска пользователей в разных контейнерах требуется рекурсивный запрос. Для этого надо выставить ключ ‘-R’. Некоторые предлагают подправить конфиг pfsense. Я же придерживаюсь более консервативных взглядов «не лезть внутрь без надобности». По этому предлагаю вам выставить данный ключ после имени доменного пользователя как на скриншоте.
Немного о параметрах:
LDAP server user DN — тут нужен самый простой пользователь, он имеет право на чтение AD.
LDAP base domain — тут указывается домен «dc=domain,dc=local»
LDAP username DN attribute — этот параметр соответствует атрибуту в AD. Обычно там полностью ФИО пользователя. Смутно представляю для чего нужен этот параметр.
LDAP search filter — sAMAccountName тоже атрибут AD, в него передается параметр ‘%s’ в котором лежит логин пользователя.
Вконце концов чтобы отладить все свои параметры, потребуется отладка через shell. Должно получиться примерно вот что:

1
2
3
 /usr/pbi/squid-amd64/libexec/squid/squid_ldap_auth -v 3 -b "dc=terra,dc=local" -D test1@terra.local -R -w p@ssw0rd -f "sAMAccountName=%s" -u cn -P 192.168.100.201:389
test2 p@ssw0rd2
OK

Второй строчкой вводится логин и пароль пользователя, при правильных действиях должны получить значение ОК.
Ну вот вроде теперь пользователи могут авторизоваться на сервере squid и можно вести логирование трафика по доменному имени пользователя. Но есть следующая задача, ограничить некоторых пользователей в доступе к внешним ресурсам. Для этого нам понадобиться перейти на вкладку General. И в поле ввода Custom Options вводим параметры, первая строка:

external_acl_type myextgroup1 ttl=12 %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -d -b "dc=terra,dc=local" -f "(&(objectclass=user)(sAMAccountName=%v)(memberOf=cn=%a,OU=Users,OU=MyBusiness,DC=terra,DC=local))" -D squid@terra.local -K -w p@ssw0rd 192.168.100.201

external_acl_type — указывает squid’у что будет использоваться внешний acl
myextgroup1 — название расширенной acl
objectclass=user — мы же ищем пользователя? (атрибут AD)
sAMAccountName=%v — В параметр %v передается логин из %LOGIN (атрибут AD)
memberOf=cn=%a — В параметр %a передается название группы
ttl=12 — новый пользователь в группе, по умолчанию может начинать работать через 3600 секунд (1 час), делаем что через 12 секунд
-K — «обрезает» часть имени @domain и позволяет корректно сравнивать имя пользователя и группу.
Еще один момент, пользователь squid@terra.local должен обладать большими правами, чем обычный пользователь, для чтения групп, паролей.
Задаем acl который будет передавать название группы в переменную %a.Вторая строка:

acl mygroup1 external myextgroup1 AllowAllInet

AllowAllInet — название группы AD
myextgroup1 — название расширенной группы
mygroup1 — простая группа с которой будет работать squid
Создаем acl с социальынми сетями:

acl socialnet dstdomain vk.com odnoklassniki.ru facebook.com facebook.ru

Ну и теперь запрещаем нашей группе выход в соц. сети:

http_access deny mygroup1 socialnet

Ну вот и все. Как сделать еще две группы? … написать эти же правила еще ДВА раза.

Ссылки достойные внимания по этому вопросу:
http://www.k-max.name/linux/squid-auth-kerberos-ldap-grupp-active-directory/
http://www.thin.kiev.ua/router-os/50-pfsense/537-pfsense-20squid-ldap-ad-.html