Сегодня будем проводить настройку Прокси сервера Squid с авторизацией в домене FreeIPA.
Начнем с подготовки сервера:
Установим squid:
apt-get install squid
Получим таблицу ключей для проверки пользователей:
ipa-getkeytab -s srv1.company.loc -p HTTP/srv2.company.loc -k /etc/squid/krb5.keytab
Выдадим права на таблицу для squid:
chown root:squid /etc/squid/krb5.keytab
chmod 640 /etc/squid/krb5.keytab
Настроим запуск Squid с ключами домена:
nano /etc/sysconfig/squid
KRB5_KTNAME=/etc/squid/krb5.keytab
export KRB5_KTNAME
Сделаем копию конфигурации:
cp /etc/squid/squid.conf /etc/squid/squid_bak.conf
Очистим конфиг от комментариев для удобства работы:
grep -v '^ *#\|^ *$' /etc/squid/squid.conf > ~/squid.conf
cp ~/squid.conf /etc/squid/squid.conf
Настроим конфигурацию:
В начале будем использовать библиотеку basic_ldap_auth для проверки логина и пароля:
-b база поиска домен
-f фильтр на отбор только записей пользователей
-H адрес сервера домена
Далее будем использовать расширенный список в который будут попадать пользователи прошедшие проверку на наличие в группе через плагин ext_kerberos_ldap_group_acl
%LOGIN передается uid пользователя из basic_ldap_auth
-a разрешить SSL без проверки сертификата.
-g группа домена
-D домен
Взаимодействовать с расширенной группой не возможно, поэтому создадим обычные списки из расширенных:
acl group1_acl external krb_group1
Так же можно создать список хоста:
acl client1 src ip_address
Список домена:
acl badomain dstdomain domain
Для указания нескольких доменов нужно создать файл и вписать туда домены в виде(иногда нужно выдать права squid для файла):
.google.com
.redhat.com
И список будет выглядеть:
acl blackdomains dstdomain "путь до файла"
Порядок доступа в squid очень важен и указывать надо в порядке уменьшения прав:
http_access allow group1_acl
http_access allow client1 !badomain
http_access allow group2_acl !blackdomains
http_access deny all
В моем случае я разрешил доступ группе 1 к локальной сети, группе 2 разрешил доступ на локальный мониторинг и запретил весь трафик остальным