Squid3 на сервере FreeBSD 10.0 и доменные пользователи
До недавнего времени на моем сервере под управлением FreeBSD 10.0 работал кеширующий сервер Squid версии squid-2.7.STABLE9, выпущенный аж 24 августа 2011 года. После обновления портов, произошедшего с месяц назад, выяснилось, что разработчики FreeBSD убрали более не поддерживаемую ветку 2.7. В качестве альтернативы предлагалось сделать апгрейд squid сразу до 3.4.8. |
Однако, файлы конфигурации squid второй и третьей ветки несколько различны, поэтому только сейчас “дошли руки” разобраться с настройкой этого кеширующего прокси-сервера под мои нужды.
В моем дневнике была опубликована статья, в которой рассматривалась возможность использования squid совместно с доменными пользователями. В том варианте для ntlm-аутентификации использовалась samba – своеобразные “костыли”, которые сильно усложняли настройку. В нынешней статье приведен пример настройки squid для использования доменных пользователей с встроенной ldap аутентификацией.
Произведем штатную установку squid-3.4.8:
# cd /usr/ports/www/squid # make config
Необходимо обязательно отметить опцию установки LDAP хелпера для аутентификации:
Произведём собственно установку:
# make install clean
Которая автоматически потянет за собой установку порта openldap-client:
После окончания установки squid-3.4.8, все его хелперы для аутентификации будут помещены в каталог
/usr/local/libexec/squid
:
# ls -Al /usr/local/libexec/squid total 412 -r-xr-xr-x 1 root wheel 4150 27 окт 14:14 basic_db_auth -r-xr-xr-x 1 root wheel 7168 27 окт 14:14 basic_fake_auth -r-xr-xr-x 1 root wheel 8992 27 окт 14:14 basic_getpwnam_auth -r-xr-xr-x 1 root wheel 20504 27 окт 14:14 basic_ldap_auth -r-xr-xr-x 1 root wheel 35592 27 окт 14:14 basic_msnt_auth -r-xr-xr-x 1 root wheel 3960 27 окт 14:14 basic_msnt_multi_domain_auth -r-xr-xr-x 1 root wheel 21248 27 окт 14:14 basic_ncsa_auth -r-xr-xr-x 1 root wheel 13464 27 окт 14:14 basic_pam_auth -r-xr-xr-x 1 root wheel 1466 27 окт 14:14 basic_pop3_auth -r-xr-xr-x 1 root wheel 21408 27 окт 14:14 basic_radius_auth -r-xr-xr-x 1 root wheel 54856 27 окт 14:14 cachemgr.cgi -r-xr-xr-x 1 root wheel 21184 27 окт 14:14 digest_file_auth -r-xr-xr-x 1 root wheel 16920 27 окт 14:14 diskd -r-xr-xr-x 1 root wheel 12184 27 окт 14:14 ext_file_userip_acl -r-xr-xr-x 1 root wheel 21112 27 окт 14:14 ext_ldap_group_acl -r-xr-xr-x 1 root wheel 12944 27 окт 14:14 ext_time_quota_acl -r-xr-xr-x 1 root wheel 12008 27 окт 14:14 ext_unix_group_acl -r-xr-xr-x 1 root wheel 5505 27 окт 14:14 helper-mux.pl -r-xr-xr-x 1 root wheel 8728 27 окт 14:14 log_file_daemon -r-xr-xr-x 1 root wheel 20288 27 окт 14:14 ntlm_fake_auth -r-xr-xr-x 1 root wheel 53640 27 окт 14:14 ntlm_smb_lm_auth -r-xr-xr-x 1 root wheel 2428 27 окт 14:14 storeid_file_rewrite -r-xr-xr-x 1 root wheel 5720 27 окт 14:14 unlinkd -r-xr-xr-x 1 root wheel 7184 27 окт 14:14 url_fake_rewrite -r-xr-xr-x 1 root wheel 2251 27 окт 14:14 url_fake_rewrite.sh
Для аутентификации пользователей из нашего домена мы будем использовать хелпер basic_ldap_auth и хелпер ext_ldap_group_acl для определения принадлежности пользователей к группам, заведенным в нашем домене.
Теперь необходимо осуществить некоторые подготовительные работы, которые заключаются в следующем:
- В домене (примем его название, как domain.ru – уровень домена и леса – Windows Server 2003, хотя в моей сети и присутствует вторичный dc под управлением Windows Server 2008 R2) необходимо завести пользователя с обычными правами, достаточными для просмотра всего каталога AD. В моем случае – это пользователь squid с паролем squid, которого я внес в группу squid.denyall (у меня она предназначена для запрета доступа в интернет);
- В корне AD у меня создан контейнер с именем Squid, в котором у меня находятся все группы с пользователями для разграничения доступа к интернету. Такие, как squid.denyall, squid.fullaccess и т.д.;
- Для удобства, в каталоге с конфигурационными файлами squid по пути
/usr/local/etc/squid
создадим файл (в моем случае – его имя scrt) для хранения пароля пользователя squid в нашем домене:
# touch /usr/local/etc/squid/scrt # echo squid > /usr/local/etc/squid/scrt
Теперь с помощью команды ldapsearch проверим доступность для нашего пользователя squid каталога AD на чтение. Для этого во FreeBSD дадим команду:
# ldapsearch -D "squid@domain.ru" -x -W -b "DC=domain,DC=ru" -h 192.168.0.2 Enter LDAP Password:*******
где:
- -D — имя нашего пользователя для просмотра каталога AD;
- -x — указывает на использование простой аутентификации, а не SASL;
- -W — указывает на требование пароля при простой аутентификации в командной строке;
- -b — обозначим наш каталог AD, в котором необходимо вести поиск пользователей;
- -h — укажем домен-контроллер при обращении к LDAP-серверу.
После ввода доменного пароля для пользователя squid на экран монитора выведется все содержимое вашего AD (по понятным причинам я его опустил).
Теперь необходимо проверить аутентификацию пользователя. Делается это с помощью команды basic_ldap_auth (из каталога /usr/local/libexec/squid
):
# /usr/local/libexec/squid/basic_ldap_auth -R -D squid@domain.ru \ -W /usr/local/etc/squid/scrt -b "DC=domain,DC=ru" \ -f "sAMAccountName=%s" -h 192.168.0.2 squid squid OK ^C
где:
- -R — указывает не следовать по ссылкам внутри AD;
- -D — обозначаем пользователя, под которым осуществляется поиск в AD;
- -W — пароль для указанного пользователя находится в файле по указанному пути:
/usr/local/etc/squid/scrt
; - -b — обозначим наш каталог AD;
- -f — фильтр для поиска пользователя в AD;
- -h — LDAP сервер.
В командной сроке необходимо ввести пару пользователь пароль (через пробел). При правильном сопоставлении выведется OK, как видно выше. Выход по Ctrl+C.
Теперь проверим принадлежность пользователей к заведенным группам. Делается это с помощью команды ext_ldap_group_acl (все из того же каталога /usr/local/libexec/squid
):
# /usr/local/libexec/squid/ext_ldap_group_acl -R -b "DC=domain,DC=ru" \ -f "(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))" \ -D squid@domain.ru -W /usr/local/etc/squid/scrt -h 192.168.0.2 squid squid.fullaccess ERR squid squid.denyall OK ^C
где:
- -R — указывает не следовать по ссылкам внутри AD;
- -b — обозначим наш каталог AD;
- -f — фильтр для поиска пользователей (где OU=Squid – контейнер с группами разграничения доступа, которые мы будем использовать на нашем кеширующем squid);
- -D -W — совместное использование этих двух ключей говорит о том, что пароль для указанного пользователя находится в файле по указанному пути:
/usr/local/etc/squid/scrt
; - -h — LDAP сервер.
Для проверки соответствия пользователя той или иной группе в AD, в командной строке необходимо вводить имя пользователя и через пробел – группу. При отсутствии сопоставления, выведется ERR. В случае удачи – OK, как видно выше. Ctrl+C – выход.
Теперь выполним простейшую настройку конфигурационного файла squid, который во FreeBSD расположен по пути /usr/local/etc/squid/squid.conf
. Примем # – комментарий:
# nano -w /usr/local/etc/squid/squid.conf #прописываем аутентификатор auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D squid@domain.ru \ -W /usr/local/etc/squid/scrt -b "DC=domain,DC=ru" \ -f "sAMAccountName=%s" -h 192.168.0.2 #и параметры для его запуска auth_param basic children 10 startup=5 idle=1 auth_param basic realm Welcome! Please, enter your password. auth_param basic credentialsttl 12 hours auth_param basic casesensitive off #описываем локальную сеть (про acl'ки типаlocalhost
иall
squid3 знает сам) acl localnet src 192.168.0.0/24 #разрешенные порты, методы и области подключения acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 443 acl Safe_ports port 1025-65535 http_access deny !Safe_ports acl CONNECT method CONNECT http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access deny to_localhost #прописываем метод сопоставления пользователей группам из AD #параметр %LOGIN тут указывает на то, перед проверкой на вхождение в группу, #пользователя необходимо аутентифицировать external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl \ -R -b "DC=domain,DC=ru" -f "(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))" \ -D squid@domain.ru -W /usr/local/etc/squid/scrt -h 192.168.0.2 #описываем внешние группы из AD acl squid.denyall external ldap_users squid.denyall acl squid.fullaccess external ldap_users squid.fullaccess #и доступы по группам http_access deny all squid.denyall http_access allow all squid.fullaccess #в конце запретим всем остальным пользование этим прокси-сервером http_access deny all #далее идут мои настройки http_port 192.168.0.1:3128 cache_dir ufs /var/squid/cache 20480 16 256 maximum_object_size_in_memory 1024 KB cache_mem 256 MB coredump_dir /var/squid/cache access_log stdio:/var/squid/logs/access.log squid cache_log /var/squid/logs/cache.log cache_store_log none logfile_rotate 14 pid_filename /var/run/squid/squid.pid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 cache_mgr max@domian.ru visible_hostname server.domain.ru icp_port 0 error_default_language ru error_directory /usr/local/etc/squid/errors/ru error_log_languages on hosts_file /etc/hosts forwarded_for off
Не забудьте, что описание всех возможных настроек вы можете найти в файле по пути:
/usr/local/etc/squid/squid.conf.documented
Настроим squid’у необходимые разрешения на каталог /var/squid
, в котором будут расмещаться логи и кеш:
# chown -R squid:squid /var/squid
Теперь необходимо проверить сделанные нами настройки командой:
# squid -f /usr/local/etc/squid/squid.conf -k parse 2014/10/30 13:47:25| Startup: Initializing Authentication Schemes ... 2014/10/30 13:47:25| Startup: Initialized Authentication Scheme 'basic' 2014/10/30 13:47:25| Startup: Initialized Authentication Scheme 'digest' 2014/10/30 13:47:25| Startup: Initialized Authentication Scheme 'negotiate' 2014/10/30 13:47:25| Startup: Initialized Authentication Scheme 'ntlm' 2014/10/30 13:47:25| Startup: Initialized Authentication. 2014/10/30 13:47:25| Processing Configuration File: /usr/local/etc/squid/squid.conf (depth 0) 2014/10/30 13:47:25| Processing: auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b "DC=domain,DC=ru" -f "sAMAccountName=%s" -h 192.168.0.2 2014/10/30 13:47:25| Processing: auth_param basic children 10 startup=5 idle=1 2014/10/30 13:47:25| Processing: auth_param basic realm Squid proxy-caching web server 2014/10/30 13:47:25| Processing: auth_param basic credentialsttl 12 hours 2014/10/30 13:47:25| Processing: auth_param basic casesensitive off 2014/10/30 13:47:25| Processing: acl localnet src 192.168.0.0/24 2014/10/30 13:47:25| Processing: acl SSL_ports port 443 2014/10/30 13:47:25| Processing: acl Safe_ports port 80 # http 2014/10/30 13:47:25| Processing: acl Safe_ports port 443 # https 2014/10/30 13:47:25| Processing: acl Safe_ports port 1025-65535 # unregistered ports 2014/10/30 13:47:25| Processing: http_access deny !Safe_ports 2014/10/30 13:47:25| Processing: acl CONNECT method CONNECT 2014/10/30 13:47:25| Processing: http_access deny CONNECT !SSL_ports 2014/10/30 13:47:25| Processing: http_access allow localhost manager 2014/10/30 13:47:25| Processing: http_access deny manager 2014/10/30 13:47:25| Processing: http_access allow localhost 2014/10/30 13:47:25| Processing: http_access deny to_localhost 2014/10/30 13:47:25| Processing: external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -b "DC=domain,DC=ru" -f "(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))" -D squid@domain.ru -W /usr/local/etc/squid/scrt -h 192.168.0.2 2014/10/30 13:47:25| Processing: acl squid.denyall external ldap_users squid.denyall 2014/10/30 13:47:25| Processing: acl squid.fullaccess external ldap_users squid.fullaccess 2014/10/30 13:47:25| Processing: http_access deny all squid.denyall 2014/10/30 13:47:25| Processing: http_access allow all squid.fullaccess 2014/10/30 13:47:25| Processing: http_access deny all 2014/10/30 13:47:25| Processing: http_port 192.168.0.1:3128 2014/10/30 13:47:25| Processing: cache_dir ufs /var/squid/cache 20480 16 256 2014/10/30 13:47:25| Processing: maximum_object_size_in_memory 1024 KB 2014/10/30 13:47:25| Processing: cache_mem 256 MB 2014/10/30 13:47:25| Processing: coredump_dir /var/squid/cache 2014/10/30 13:47:25| Processing: access_log stdio:/var/squid/logs/access.log squid 2014/10/30 13:47:25| Processing: cache_log /var/squid/logs/cache.log 2014/10/30 13:47:25| Processing: cache_store_log none 2014/10/30 13:47:25| Processing: logfile_rotate 14 2014/10/30 13:47:25| Processing: pid_filename /var/run/squid/squid.pid 2014/10/30 13:47:25| Processing: refresh_pattern ^ftp: 1440 20% 10080 2014/10/30 13:47:25| Processing: refresh_pattern ^gopher: 1440 0% 1440 2014/10/30 13:47:25| Processing: refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 2014/10/30 13:47:25| Processing: refresh_pattern . 0 20% 4320 2014/10/30 13:47:25| Processing: cache_mgr max@domian.ru 2014/10/30 13:47:25| Processing: visible_hostname server.domain.ru 2014/10/30 13:47:25| Processing: icp_port 0 2014/10/30 13:47:25| Processing: error_default_language ru 2014/10/30 13:47:25| Processing: error_directory /usr/local/etc/squid/errors/ru 2014/10/30 13:47:25| Processing: error_log_languages on 2014/10/30 13:47:25| Processing: hosts_file /etc/hosts 2014/10/30 13:47:25| Processing: forwarded_for off
Если в результате отработки этой команды вы также не обнаружете ошибок, то теперь необходимо проинициализировать каталог кеша для squid. Это делается командой:
# squid -z 2014/10/30 13:51:07 kid1| Set Current Directory to /var/squid/cache 2014/10/30 13:51:07 kid1| Creating missing swap directories 2014/10/30 13:51:07 kid1| /var/squid/cache exists 2014/10/30 13:51:07 kid1| Making directories in /var/squid/cache/00 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/01 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/02 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/03 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/04 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/05 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/06 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/07 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/08 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/09 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/0A 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/0B 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0C 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0D 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0E 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0F
Прежде чем наконец-то запустить squid, внимательно просмотрите файл для его запуска по пути /usr/local/etc/rc.d/squid
на соответствие вашим путям для логов и кеша из конфигурационного файла.
Запустим squid и проверим его работу командами:
# /usr/local/etc/rc.d/squid start Starting squid. # netstat -an | grep LIST | grep 3128 tcp4 0 0 192.168.0.1.3128 *.* LISTEN # ps aux | grep squid squid 66694 0,0 0,2 28848 8472 ?? Is 13:54 0:00,00 /usr/local/sbin/squid -f /usr/local/etc/squid/squid.conf squid 66696 0,0 0,4 41136 15108 ?? S 13:54 0:00,26 (squid-1) -f /usr/local/etc/squid/squid.conf (squid) squid 66698 0,0 0,1 17724 3076 ?? I 13:54 0:00,02 (basic_ldap_auth) -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b DC=domain,DC=ru squid 66699 0,0 0,1 17724 3076 ?? I 13:54 0:00,02 (basic_ldap_auth) -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b DC=domain,DC=ru squid 66700 0,0 0,1 17724 3076 ?? I 13:54 0:00,02 (basic_ldap_auth) -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b DC=domain,DC=ru squid 66701 0,0 0,1 17724 3076 ?? I 13:54 0:00,02 (basic_ldap_auth) -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b DC=domain,DC=ru squid 66702 0,0 0,1 17724 3076 ?? I 13:54 0:00,02 (basic_ldap_auth) -R -D squid@domain.ru -W /usr/local/etc/squid/scrt -b DC=domain,DC=ru squid 66703 0,0 0,1 17728 3084 ?? I 13:54 0:00,02 (ext_ldap_group_acl) -R -b DC=domain,DC=ru -f (&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squ squid 66704 0,0 0,1 17728 3084 ?? I 13:54 0:00,02 (ext_ldap_group_acl) -R -b DC=domain,DC=ru -f (&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squ squid 66705 0,0 0,1 17728 3084 ?? I 13:54 0:00,02 (ext_ldap_group_acl) -R -b DC=domain,DC=ru -f (&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squ squid 66706 0,0 0,1 17728 3084 ?? I 13:54 0:00,02 (ext_ldap_group_acl) -R -b DC=domain,DC=ru -f (&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squ squid 66707 0,0 0,1 17728 3084 ?? I 13:54 0:00,02 (ext_ldap_group_acl) -R -b DC=domain,DC=ru -f (&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squ squid 66708 0,0 0,0 11308 1776 ?? I 13:54 0:00,01 (unlinkd) (unlinkd) root 66734 0,0 0,0 9128 1320 0 R+ 13:56 0:00,00 grep squid
Теперь вы можете просмотреть файл лога работы кеша по пути /var/squid/logs/cache.log
:
# less /var/squid/logs/cache.log 2014/10/30 13:51:07 kid1| Set Current Directory to /var/squid/cache 2014/10/30 13:51:07 kid1| Creating missing swap directories 2014/10/30 13:51:07 kid1| /var/squid/cache exists 2014/10/30 13:51:07 kid1| Making directories in /var/squid/cache/00 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/01 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/02 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/03 2014/10/30 13:51:08 kid1| Making directories in /var/squid/cache/04 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/05 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/06 2014/10/30 13:51:09 kid1| Making directories in /var/squid/cache/07 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/08 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/09 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/0A 2014/10/30 13:51:10 kid1| Making directories in /var/squid/cache/0B 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0C 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0D 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0E 2014/10/30 13:51:11 kid1| Making directories in /var/squid/cache/0F 2014/10/30 13:54:45 kid1| Set Current Directory to /var/squid/cache 2014/10/30 13:54:45 kid1| Starting Squid Cache version 3.4.8 for amd64-portbld-freebsd8.4... 2014/10/30 13:54:45 kid1| Process ID 66696 2014/10/30 13:54:45 kid1| Process Roles: worker 2014/10/30 13:54:45 kid1| With 11095 file descriptors available 2014/10/30 13:54:45 kid1| Initializing IP Cache... 2014/10/30 13:54:45 kid1| DNS Socket created at 0.0.0.0, FD 7 2014/10/30 13:54:45 kid1| Adding domain domain.ru from /etc/resolv.conf 2014/10/30 13:54:45 kid1| Adding nameserver 192.168.0.2 from /etc/resolv.conf 2014/10/30 13:54:45 kid1| Adding nameserver 192.168.0.11 from /etc/resolv.conf 2014/10/30 13:54:45 kid1| helperOpenServers: Starting 5/10 'basic_ldap_auth' processes 2014/10/30 13:54:45 kid1| helperOpenServers: Starting 5/5 'ext_ldap_group_acl' processes 2014/10/30 13:54:46 kid1| Logfile: opening log stdio:/var/squid/logs/access.log 2014/10/30 13:54:46 kid1| Unlinkd pipe opened on FD 32 2014/10/30 13:54:46 kid1| Store logging disabled 2014/10/30 13:54:46 kid1| Swap maxSize 20971520 + 262144 KB, estimated 1633358 objects 2014/10/30 13:54:46 kid1| Target number of buckets: 81667 2014/10/30 13:54:46 kid1| Using 131072 Store buckets 2014/10/30 13:54:46 kid1| Max Mem size: 262144 KB 2014/10/30 13:54:46 kid1| Max Swap size: 20971520 KB 2014/10/30 13:54:46 kid1| Rebuilding storage in /var/squid/cache (no log) 2014/10/30 13:54:46 kid1| Using Least Load store dir selection 2014/10/30 13:54:46 kid1| Set Current Directory to /var/squid/cache 2014/10/30 13:54:46 kid1| Finished loading MIME types and icons. 2014/10/30 13:54:46 kid1| HTCP Disabled. 2014/10/30 13:54:46 kid1| Squid plugin modules loaded: 0 2014/10/30 13:54:46 kid1| Accepting HTTP Socket connections at local=192.168.0.1:3128 remote=[::] FD 34 flags=9 2014/10/30 13:54:46 kid1| Done scanning /var/squid/cache dir (0 entries) 2014/10/30 13:54:46 kid1| Finished rebuilding storage from disk. 2014/10/30 13:54:46 kid1| 0 Entries scanned 2014/10/30 13:54:46 kid1| 0 Invalid entries. 2014/10/30 13:54:46 kid1| 0 With invalid flags. 2014/10/30 13:54:46 kid1| 0 Objects loaded. 2014/10/30 13:54:46 kid1| 0 Objects expired. 2014/10/30 13:54:46 kid1| 0 Objects cancelled. 2014/10/30 13:54:46 kid1| 0 Duplicate URLs purged. 2014/10/30 13:54:46 kid1| 0 Swapfile clashes avoided. 2014/10/30 13:54:46 kid1| Took 0.24 seconds ( 0.00 objects/sec). 2014/10/30 13:54:46 kid1| Beginning Validation Procedure 2014/10/30 13:54:46 kid1| Completed Validation Procedure 2014/10/30 13:54:46 kid1| Validated 0 Entries 2014/10/30 13:54:46 kid1| store_swap_size = 0.00 KB 2014/10/30 13:54:47 kid1| storeLateRelease: released 0 objects
Теперь проверим, как наш пользователь squid авторизовывается на нашем свеженастроенном прокси-сервере. Запустим Internet Explorer и в настройках подключения укажем ip нашего сервера squid и порт 3128. При попытке первого подключения мы получим вот такое предупреждение:
Проверить, что происходит в это время на самом squid можно так:
# tail -f /var/squid/logs/access.log 1414668270.391 0 192.168.0.5 TCP_DENIED/407 3851 GET http://ya.ru/ - HIER_NONE/- text/html 1414668286.522 7 192.168.0.5 TCP_DENIED/407 3910 GET http://ya.ru/ squid HIER_NONE/- text/html 1414668297.066 0 192.168.0.5 TCP_DENIED/407 3910 GET http://ya.ru/ squid HIER_NONE/- text/html 1414668321.426 0 192.168.0.5 TCP_DENIED/407 3880 GET http://ya.ru/favicon.ico squid HIER_NONE/- text/html
Так как данный пользователь включен у меня в группу squid.denyall, которой мы запретили выход в интернет строкой http_access deny all squid.denyall
в конфигурационном файле /usr/local/etc/squid/squid.conf
, то доступа к кешу он не получит.
Переместим пользователя squid в доменную группу squid.fullaccess, которой у нас разрешен полный доступ в интернет. Не забудьте перезапустить squid командой:
/usr/local/etc/rc.d/squid reload
В логе access.log теперь появились совсем иные строчки:
# tail -f /var/squid/logs/access.log 1414668415.988 30 192.168.0.5 TCP_MISS/200 9132 GET http://ya.ru/ squid HIER_DIRECT/213.180.193.3 text/html 1414668416.004 10 192.168.0.5 TCP_MISS/200 1843 GET http://yastatic.net/www/2.128/yaru/i/logo.png squid HIER_DIRECT/178.154.131.215 image/png 1414668416.006 12 192.168.0.5 TCP_MISS/200 6917 GET http://yastatic.net/www/2.128/yaru/pages/desktop/_desktop.css squid HIER_DIRECT/178.154.131.215 text/css 1414668416.008 12 192.168.0.5 TCP_MISS/200 28785 GET http://yandex.st/jquery/2.1.0/jquery.min.js squid HIER_DIRECT/178.154.131.217 application/x-javascript 1414668416.024 29 192.168.0.5 TCP_MISS/200 38389 GET http://yastatic.net/www/2.128/yaru/pages/desktop/_desktop.templates.ru.js squid HIER_DIRECT/178.154.131.215 application/x-javascript 1414668416.025 8 192.168.0.5 TCP_MISS/200 7387 GET http://yastatic.net/lego/_/FpB59tewsg6QVssW506guPCzcaU.png squid HIER_DIRECT/178.154.131.215 image/png 1414668416.028 13 192.168.0.5 TCP_MISS/302 308 GET http://kiks.yandex.ru/su/ squid HIER_DIRECT/93.158.134.143 - 1414668416.032 9 192.168.0.5 TCP_MISS/302 637 GET http://www.tns-counter.ru/V13a****yandex_ru/ru/CP1251/tmsec=yandex_ya/0 squid HIER_DIRECT/217.73.200.220 image/gif 1414668416.040 10 192.168.0.5 TCP_MISS/200 1974 GET http://kiks.yandex.ru/system/fc06.html squid HIER_DIRECT/93.158.134.143 text/html 1414668416.044 10 192.168.0.5 TCP_MISS/200 480 GET http://www.tns-counter.ru/V13b****yandex_ru/ru/CP1251/tmsec=yandex_ya/0 squid HIER_DIRECT/217.73.200.220 image/gif 1414668416.083 14 192.168.0.5 TCP_MISS/200 1436 GET http://yastatic.net/morda-logo/i/kbd.png squid HIER_DIRECT/178.154.131.215 image/png 1414668416.091 15 192.168.0.5 TCP_MISS/200 683 GET http://www.yandex.ru/data/mail.js? squid HIER_DIRECT/93.158.134.3 text/javascript 1414668416.126 4 192.168.0.5 TCP_MISS/200 1792 GET http://kiks.yandex.ru/system/fc06.swf squid HIER_DIRECT/93.158.134.143 application/x-shockwave-flash 1414668416.819 683 192.168.0.5 TCP_MISS/200 452 GET http://suggest.yandex.ru/suggest-ya.cgi? squid HIER_DIRECT/213.180.204.63 text/javascript
Пользователь получил доступ в интернет. Вот теперь настройка squid3 для работы с доменными пользователями с аутентификацией по ldap завершена.
______
небольшое дополнение: если вы не желаете хранить пароль для доменного пользователя, от имени которого проверяется наличие пользователя или группы вашего домена, во внешнем файле (в моём примере – файл /usr/local/etc/squid/scrt
), вы можете обозначить этот пароль непосредственно в файле настройки squid при объявлении хелперов с помощью опции -w
. соответствующие строки конфигурационного файла из моего примера будут иметь вид:
... auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D squid@domain.ru \-w password
-b "DC=domain,DC=ru" \ -f "sAMAccountName=%s" -h 192.168.0.2 ... external_acl_type ldap_users ttl=1200 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl \ -R -b "DC=domain,DC=ru" -f "(&(sAMAccountName=%v) (memberOf=cn=%a,OU=Squid,DC=domain,DC=ru))" \ -D squid@domain.ru-w password
-h 192.168.0.2 ...
_______________
По мотивам этой статьи.
Будет полезно! Надо опробовать!
Стащу к себе в блог с ссылочкой на автора и оригинал записи
Спасибо
Удачно зашел на сайтец Ваш, делаю что то подобное как раз встал на авторизации через домен, но у меня настроен еще и самс2, который домен и все учетки видит, как я понимаю, если добавлю строки авторизации
auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D squid@domain.ru \ -W /usr/local/etc/squid/scrt -b “DC=domain,DC=ru” \ -f “sAMAccountName=%s” -h 192.168.0.2
и др..
то самс начнет дружить со сквидом?
дело в том что в самсе2 когда нажимаешь кнопку реконфигурировать, сам процесс сквида он не рестартует, а в логах пишет
Set Current Directory to /var/squid/cache
И сквид приходится в ручную убивать, нет ли у Вас какого нибудь лекарства?