Установка
Squid на
CentOS 6.x 64 с авторизацией из
Win2008AD, групповое распределение, привязка по
mac адресам, фильтр расширений файлов и запрещенных сайтов.
Не будем описывать саму установку
Win2008AD. Подразумеваем, что контроллер уже установлен и настроен. Наша первая задача создать структуру групп для распределения в них пользователей, которые в дальнейшем будут иметь определенные права.
Создаем пользователя
squid, он будет отвечать за получение списка пользователей их паролей и групповую принадлежность. Назначаем ему делегирование на эти возможности.
Жмем правой клавишей мыши на корне нашего домена, выбираем
Делегирование управления. Появляется мастер настройки. Жмем
Далее. Жмем
Добавить. Пишем нашего пользователя
squid, который будет иметь права чтения из домена. Жмем
ОК. Добавился наш пользователь. Жмем
Далее. Включаем
Чтение информации о всех пользователях и
Чтение всей информации для intOrgPerson. Жмем
Далее. Жмем
Готово.
Создаем в корне дерева домена
Подразделение proxy. Жмем правой клавишей мыши на корне нашего домена, выбираем
Создать, выбираем
Подразделение. Пишем имя
proxy. Жмем
ОК. В корне домена появится так называемый
Организационный юнит с именем
proxy.
В этом подразделении создаем структуру групп для распределения пользователей на получение разных прав доступа через
Squid. Создаем группу
admins-proxy и
users-proxy.
Жмем правой клавишей мыши на
proxy, выбираем
Создать, выбираем
Группа. Пишем имя группы
admins-proxy. Жмем
ОК. Повторяем для группы
users-proxy.
Первая группа будет иметь полный доступ, вторая будет иметь ограничения. В каждую группу добавляем уже имеющихся пользователей. Пусть в группе
admins-proxy будет находиться пользователь
padmins, а в группе
users-proxy будет находиться пользователь
pusers, которые были созданы ранее и мы их сейчас добавили. Два раза жмем на имени группы. Выбираем закладку
Члены группы. Жмем
Добавить. Пишем нужного пользователя. Жмем
ОК. Повторяем для остальных пользователей и групп.
Устанавливаем пакет
Squid:
yum install squidПосле успешной установки прописываем автозапуск
squid:
chkconfig squid onАвторизацию в
squid будем использовать на основе
LDAP. Для этого сначала необходимо проверить соединение с
Win2008AD механизмом
LDAP, который заложен в
Squid.
Проверяем связку логина
padmins и пароля
VzRGI5xS пользователя из домена.
Выполняем:
echo «padmins VzRGI5xS» | /usr/lib64/squid/squid_ldap_auth -R -D squid@developer.com -w 3zdjK2H9 -b «dc=developer,dc=com» -f «sAMAccountName=%s» -h 192.168.151.2padmins # /пользователь домена/
VzRGI5xS # /пароль пользователя padmins в домене/
squid@developer.com # /пользователь домена имеющий права просмотра списка пользователей их паролей и всех данных о них/
3zdjK2H9 # /пароль делегированного пользователя squid/
dc=developer,dc=com # /контроллер домена/
192.168.151.2 # /IP адрес домена/
И так, если это выполнено правильно, мы получим ответ
OK. Это означает, что наш пользователь
padmins найден в домене и он сверен с паролем
VzRGI5xS. Если соответствия нет, то получим ответ
ERR Success.
Теперь проверяем связку логина
padmins и группы
admins-proxy из домена в которую входит пользователь.
Выполняем:
echo «padmins admins-proxy» | /usr/lib64/squid/squid_ldap_group -R -D squid@developer.com -w 3zdjK2H9 -b «dc=developer,dc=com» -f "(&(objectclass=person) (sAMAccountName=%v)(memberof=cn=%a,ou=proxy,dc=developer,dc=com))" -h 192.168.151.2И так, если это выполнено правильно, мы получим ответ
OK. Это означает, что наш пользователь
padmins найден в группе
admins-proxy нашего домена. Если соответствия нет, то получим ответ
ERR Success.
Принимаемся за настройку
Squid.
Создаем каталог
/etc/squid/rules:
mkdir /etc/squid/rulesВ каталоге
/etc/squid/rules создаем файлы для правил:
touch block-extension.txttouch inet-mac.txttouch url-block.txtСодержимое файла
block-extension.txt (фильтр расширений файлов):
\.exe$
\.mp3$
\.mpg$
\.mp4$
\.mpeg$
\.flv$
\.avi$
\.wmv$
\.swf$
\.mov$
\.mkv$
\.wav$
\.rar$
\.msi$
\.zip$
\.tar$
\.iso$
\.nrg$
Содержимое файла
inet-mac.txt (фильтр mac адресов, разрешенные):
04:00:27:3a:45:13
10:6e:87:c4:8c
00:1f:d0:b5:c4:65
Содержимое файла
url-block.txt (фильтр url):
odnoklassniki\.ru
vk\.com
facebook\.com
Открываем на редактирование файл конфиг
/etc/squid/squid.conf и приводим его к виду:
squid.conf
################################################################################
# Squid normally listens to port 3128http_port 3128visible_hostname router-int.developer.com## Recommended minimum configuration:#acl manager proto cache_objectacl localhost src 127.0.0.1/32 ::1acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1# Example rule allowing access from your local networks.# Adapt to list your (internal) IP networks from where browsing# should be allowedacl localnet src 10.0.0.0/8 # RFC1918 possible internal networkacl localnet src 172.16.0.0/12 # RFC1918 possible internal networkacl localnet src 192.168.0.0/16 # RFC1918 possible internal networkacl localnet src fc00::/7 # RFC 4193 local private network rangeacl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machinesacl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECT## Recommended minimum Access Permission configuration:## Only allow cachemgr access from localhosthttp_access allow manager localhosthttp_access deny manager# Deny requests to certain unsafe portshttp_access deny !Safe_ports# Deny CONNECT to other than secure SSL portshttp_access deny CONNECT !SSL_ports# We strongly recommend the following be uncommented to protect innocent# web applications running on the proxy server who think the only# one who can access services on «localhost» is a local user#http_access deny to_localhost## INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS#################################################################################### AD команды для подключения к AD2008R2 ###################################################################################auth_param basic program /usr/lib64/squid/squid_ldap_auth -R -D squid@developer.com -w 3zdjK2H9 -b «dc=developer,dc=com» -f «sAMAccountName=%s» -h 192.168.151.2auth_param basic children 5auth_param basic realm Please insert your Windows credentials to navigateauth_param basic credentialsttl 1 hour################################################################################################################################################################### AD команды для подключения к группам AD2008R2 ###################################################################################external_acl_type ldap_group %LOGIN /usr/lib64/squid/squid_ldap_group -R -D squid@developer.com -w 3zdjK2H9 -b «dc=developer,dc=com» -f "(&(objectclass=person) (sAMAccountName=%v)(memberof=cn=%a,ou=proxy,dc=developer,dc=com))" -h 192.168.151.2################################################################################################################################################################### Листы доступа и блокировок по группам из AD2008R2 #################################################################################### (лист доступа пользователей из группы admins-proxy находящаяся в AD2008R2)acl admins-proxy external ldap_group admins-proxy# (лист доступа пользователей из группы users-proxy находящаяся в AD2008R2)acl users-proxy external ldap_group users-proxy# (лист доступа пользователей по MAС-адресу)acl inet-mac arp "/etc/squid/rules/inet-mac.txt"# (лист блокировки по списку URL)acl url-block url_regex "/etc/squid/rules/url-block.txt"# (лист блокировки по списку расширений файлов)acl block-extension url_regex -i "/etc/squid/rules/block-extension.txt"# (блокировка стрим потоков)acl media rep_mime_type -i ^audio/.*$acl media rep_mime_type -i ^video/.*$acl media rep_mime_type -i ^video/x-flv$acl media rep_mime_type -i ^application/x-shockwave-flash$acl media rep_mime_type -i ^application/octet-stream$# (разрешаем все для группы admins-proxy с привязкой по mac адресу)http_access allow admins-proxy inet-mac# (запрещаем группе users-proxy список url-block)http_access deny users-proxy url-block# (запрещаем группе users-proxy список block-extension)http_access deny users-proxy block-extension# (запрещаем группе users-proxy список media)http_reply_access deny users-proxy media# (разрешаем группе users-proxy все, что осталось)http_access allow users-proxy################################################################################# And finally deny all other access to this proxyhttp_access deny all# We recommend you to use at least the following line.hierarchy_stoplist cgi-bin?# Uncomment and adjust the following to add a disk cache directory.#cache_dir ufs /var/spool/squid 100 16 256# Leave coredumps in the first cache dircoredump_dir /var/spool/squid# Add any of your own refresh_pattern entries above these.refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern. 0 20% 4320################################################################################
Приведенный конфиг
100% рабочий.
Стартуем
Squid:
service squid startКак это работает.
В настройках браузера прописываем адрес и порт
3128 нашего прокси сервера. Заходим на страницу сайта, получаем приглашение ввести логин и пароль.
Если наш пользователь
padmins правильно ввел пароль,
squid его пропускает и к нему применяются правила заданной группы. Из конфига видно, что для группы
admins-proxy ограничений нет. Есть только привязка к
mac адресам из списка.
Теперь если наш пользователь
pusers правильно ввел пароль,
squid его пропускает и к нему применяются правила заданной группы. Из конфига видно, что для группы
users-proxy применяются фильтры
url-block (список блокировки url),
block-extension (список блокировки расширений) и
media (списк блокировки стрим потоков).
И не забываем открыть порт, если он закрыт:
iptables -A INPUT -p tcp -m state -m tcp -s 192.168.0.0/16 --dport 3128 --state NEW -j ACCEPT