Авторизация пользователей на прокси-сервере Squid через Microsoft AD

Рассмотрим вариант, когда пользователь будет авторизоваться на нашем прокси-сервере, используя свою доменную учетную запись.

  Настройка домена

   Пусть у нас есть домен study.local и его контроллер с именем dc-study и IP-адресом 192.168.0.10

Создадим в домене группу inet. Все пользователи, которые в нее будут входить, будут иметь доступ в Интернет. И внесем в нее пользователя student.

Так же нужно создать в домене пользователя, с аккаунтом которого наш прокси-сервер будет обращаться на контроллер домена для проверки учетных данных пользователей. Для этих целей сделаем в нашем домене пользователя squid с паролем squid123

  

Настройка Squid

Для авторизации пользователя в LDAP, у Squid есть специальный модуль squid_ldap_auth

Для начала проверим, работает ли вообще у нас авторизация в домене

Выполним такую команду, и в следующей строке введем логин и пароль доменного пользователя через пробел:

# /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

squid squid123

OK

Если в результате вывелось OK — значит все нормально, и можно продолжать проверку.

Далее мы проверим, работает ли определение группы пользователя в домене.

Выполним такую команду, и в следующей строке введем имя пользователя, и группу, принадлежность к которой хотим проверить.

 

# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -w "squid123" 192.168.0.10

student inet

OK

 

И, для проверки, повторим эту же команду, но для другой учетной записи

  

# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -w "squid123" 192.168.0.10

administrator inet

ERR

 

Как мы видим, группа пользователя определяется правильно.

Теперь откроем на редактирование файл /etc/squid3/squid.conf

И опишем наши новые acl

  

#Параметры авторизации в домене

auth_param basic program /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

auth_param basic children 5

auth_param basic realm study.local

#Далее пропишем проверку на наличие пользователя в группе (все это записывается в одну строку)

 

external_acl_type ldapgr children=5 %LOGIN /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -w "squid123" 192.168.0.10

 

#Затребуем авторизацию

acl auth proxy_auth REQUIRED

#И проверим, есть ли пользователь в группе inet

 

acl myinet external ldapgr inet

  

#И далее, в разделе разрешений, пропишем разрешение выхода в интернет пользователям, которые входят в доменную группу inet.

http_access allow myinet

http_access deny all

  

Перезапустим Squid

#/etc/init.d/squid restart

  

И можно проверять.

Теперь в интернет смогут выйти только пользователи, которые входят в доменную группу inet.