главная - Статьи - Linux, FreeBSD - Прокси-сервер Squid
Авторизация Squid в домене Windows 2003
Теги: Настройка прокси Squid
Введение
Многие небольшие организации используют домены Windows для управления учетными записями пользователей. Но далеко не все устанавливают у себя платные решения на ISA Server, Kerio WinRoute или др. Также можно сказать, что многие небольшие организации привлекают (за неимением своего) стороннего специалиста для настройки доступа в интернет с возможностью контроля доступа сотрудников (кто-что скачал и т.п.). В таких случаях часто имеет место настройка Squid на базе Linux / FreeBSD.
Удобство работы, простота и доступность Squid привлекает к себе многих, но как разрешить ходить в интернет только определенным сотрудникам, причем, желательно, поудобнее этим процессом управлять?
Вариант 1: настроить Squid на фильтрацию по IP-адресу. В небольшом офисе из 2-5 машин это может быть удобным, но если машин 20 и более? Все равно будет ротация машин (замена на новые, сотрудники могут меняться местами и пр.). При этом неизбежно для одного и того же человека IP-адрес будет меняться. Поэтому это хоть и простой вариант, но не самый удобный.
Вариант 2: уж коль мы вначале статьи решили, что наша сеть с контроллером домена Windows 2003, намного удобнее управлять доступом в интернет, управляя учетными записями пользователей из домена. Проблема в том, что Squid, хоть и поддерживает эту возможность, реализация ее не совсем очевидная, по крайней мере, вы уже должны были не раз и не два встретить на формах кучу вариантов, причем часто в обсуждении пишут о больших сложностях. Особенно, что касается внедрения авторизации через samba. Я сам, пролистав несколько таких руководств с кучей листингов и скриптов, отказался от мысли сразу ломиться в бой. Вместо этого я решил разделить задачу на два этапа, причем максимально проще и без скриптов по 50 строк каждый:
1 этап: проверка работы авторизации squid в домене;
2 этап: внедрение этого способа в рабочий squid.
Проверка авторизации Squid в домене Windows 2003
Для начала проверим, как вообще работает авторизация Squid в домене Windows. Нам будет нужен файл "squid_ldap_auth". В зависимости от операционной системы прокси-сервера, этот файл может быть в разных местах, у меня в CentOS он находиться по адресу:
/usr/lib/squid/squid_ldap_auth
Теперь создадим отдельное организационное подразделение в домене Windows 2003:
В русском варианте примерно тоже самое, только вместо "Organization Unit" будет "Подразделение".
Создадим в этом подразделении двух пользователей: SquidWebAccess (пароль "squid") и testuser (пароль "12345"). Права для этих пользователей - минимальные.
Пользователь SquidWebAccess нужен для того, чтобы от его имени Squid мог обращаться к контроллеру домена для проверки существования других пользователей. Естественно, пароль от этого пользователя должен быть неизвестен пользователям вашей сети.
Пользователь testuser - это имитация реального пользователя.
На этом этапе возникнет вопрос - а с чего это в уже настроенной структуре пользователей домена с отработанными политиками безопасности и пр. делать отдельного пользователя в новом OU, а не использовать текущие учетные данные? Ответ: можно использовать и те учетные записи, которые уже настроены. Но при этом теряется малая часть гибкости: если надо будет запретить пользователю доступ к интернет (за провинность, например), в моем случае не придется отключать его основную учетную запись домена. Я просто отключу учетную запись для доступа в интернет. Можно спорить, что удобнее, что нет. Мне удобнее разделить доступ в интернет от доступа к файлам и пр.
Заходим на прокси-сервер (где Squid) и вводим команду (в одну строку, у меня разделены символом \):
/usr/lib/squid/squid_ldap_auth -v 3 -R -D SquidWebAccess@domain.local -w squid \
-b "ou=InternetUsers,dc=domain,dc=local" -f "sAMAccountName=%s" 192.168.1.2
где
считаем, что домен называется "domain.local"
-D SquidWebAccess@domain.local - полное имя пользователя для возможности Squid сравнить введенные данные пользователя с теми, которые мы задали пользователю testuser
-w squid - пароль пользователя SquidWebAccess
-b "ou=InternetUsers,dc=domain,dc=local" - полный путь до места хранения учетных записей пользователей для доступа в интернет. Заметьте, что использовать свои учетные записи (в т.ч. учетную запись администратора домена) для доступа в интернет не выйдет! Можете это считать дополнительной опцией безопасности.
192.168.1.2 - ip-адрес контроллера домена Windows 2003.
После выполнения команды вводим:
testuser 12345
В ответ должны получить OK. Если нет, то ищем, описать все возможные варианты проблем - задача нереальная.
Если все OK, то переходим ко второму этапу: внедряем авторизацию squid в домене уже в самом прокси-сервере Squid, а не в тестовом варианте.
Авторизация Squid в домене Windows 2003
Для настройки авторизации в Squid, нам нужно изменить только squid.conf.
# LDAP-авторизация
# В одну строку, или разделяйте символом \
auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -R -D SquidWebAccess@domain.local -w squid \
-b "ou=InternetUsers,dc=domain,dc=local" -f "sAMAccountName=%s" 192.168.1.2
auth_param basic children 5
auth_param basic realm Web-Proxy
auth_param basic credentialsttl 1 minute
acl ldap-auth proxy_auth REQUIRED
http_access allow ldap-auth
http_access allow localhost
http_access deny all
Остальные настройки Squid трогать не надо. Перезапустите Squid:
/sbin/service squid restart
Stopping squid: ........[ OK ]
Starting squid: ........[ OK ]
Наслаждайтесь :) Про подсчет трафика с учетом такой авторизации напишу позже.
Авторизуйтесь для добавления комментариев!