Доброго дня! Есть Centos 7.4 + Squid 3.5.20:
...
# Родительский Proxy (Для обхода запретов РКН)
cache_peer хх.хх.хх.хх parent 8228 0 proxy-only default
# Общие ACL
acl SSL_ports port 443
acl SSL_ports port 9443 # sberbank
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl Safe_ports port 9443 # sberbank
acl CONNECT method CONNECT
acl localnet src 192.168.0.0/16
acl servers src 192.168.1.64
acl servers src 192.168.0.21
acl allowmacs arp "/etc/squid/allowmacs" # Авторизация по MAC
acl blacklist url_regex -i "/etc/squid/blacklist" # Черный список сайтов
acl direct-to-whitenet url_regex -i "/etc/squid/direct-to-whitenet" # Список сайтов, идущих через родительский Proxy
# ACL Доступа к файлам (запросы, идущие от пользователей)
acl exec_files urlpath_regex -i \.exe$ \.bat$ \.dat$ \.vbs$ \.apk$ \.app$ \.bin$ \.cmd$ \.com$ \.jar$ \.msi$ \.pif$ \.sh$ \.shs$ \.vb$ \.ws$
acl sys_files urlpath_regex -i \.cab$ \.cfg$ \.cpl$ \.cur$ \.dll$ \.dmp$ \.dpl$ \.drv$ \.hlp$ \.inf$ \.ini$ \.lnk$ \.reg$ \.scr$ \.sys$ \.vxd$
acl arc_files urlpath_regex -i \.7z$ \.apk$ \.arj$ \.bz2$ \.cab$ \.cbr$ \.deb$ \.gz$ \.gzip$ \.lha$ \.lhx$ \.lz$ \.lza$ \.lzma$ \.pea$ \.pkg$ \.rar$ \.rpm$ \.s7z$ \.sda$ \.sea$ \.tar$ \.taz$ \.tb2$ \.tbz$ \.tgz$ \.tlz$ \.txz$ \.zip$
acl audio_files urlpath_regex -i \.aif$ \.flac$ \.iff$ \.m3u$ \.m4a$ \.mid$ \.mp3$ \.mpa$ \.ra$ \.wav$ \.wma$
acl video_files urlpath_regex -i \.3g2$ \.3gp$ \.asf$ \.asx$ \.avi$ \.flv$ \.m4v$ \.mkv$ \.mov$ \.mp4$ \.mpg$ \.rm$ \.srt$ \.swf$ \.vob$ \.wmv$
# ACL по типам содержимого страниц (ответы из интернета)
acl video_mime rep_mime_type -i video/mp4 video/m2ts
acl video_mime rep_mime_type -i ^video/mp4$ ^video/m2ts$
acl video_mime rep_mime_type -i application/octet-stream
acl video_mime rep_mime_type -i ^application/octet-stream$
acl video_mime rep_mime_type image/gif
acl video_mime rep_mime_type ^image/gif$
#Используем специальный helper для прозрачной аутентификации через kerberoos
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -r -i -s GSS_C_NO_NAME
auth_param negotiate children 300
auth_param negotiate keep_alive on
#Используем kerberos через систему pam для базовой авторизации с запросом пароля
auth_param basic program /usr/lib64/squid/basic_pam_auth -n /etc/pam.d/squid -t 300 -o -r
auth_param basic children 50
auth_param basic credentialsttl 2 hours
auth_param basic realm Please enter Your login and password
auth_param basic casesensitive off
#Необходимо для поиска групп в AD
external_acl_type ldap_check ipv4 ttl=100 children-startup=5 children-max=300 %LOGIN /usr/lib64/squid/ext_ldap_group_acl -R -S -K -b 'DC=my,DC=domain,DC=org' -f "(&(sAMAccountName=%u)(memberof=cn=%g,OU=group,OU=group2,DC=my,DC=domain,DC=org))" -D "CN=squid,CN=Users,DC=my,DC=domain,DC=org" -w "topsecretpass" -h 192.168.0.7
#Описание групп доступа из AD
acl full-access external ldap_check _squid-full-access
acl user-full-access external ldap_check _squid-user-full-access
acl user-medium-access external ldap_check _squid-user-medium-access
acl user-minimum-access external ldap_check _squid-user-minimum-access
#Описываем пользователей которые невходят в другие группы
#acl auth proxy_auth sasha@MYDOMAIN.LOCAL
# Всегда использовать прямой выход в интернет для данного ACL (выход, минуя родительский proxy)
always_direct allow user-medium-access
always_direct allow user-minimum-access
# Никогда не использовать прямой выход в интернет для данного ACL (выход только через родительский proxy)
never_direct allow direct-to-whitenet
#Назначаем разрешения кому можно ходить в интернет
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow servers
http_access allow allowmacs
http_reply_access allow allowmacs
http_access allow full-access
http_access deny exec_files
http_access deny sys_files
http_access allow user-full-access
http_reply_access allow user-full-access
http_access deny blacklist
http_access deny audio_files
http_access deny video_files
http_reply_access deny video_mime
http_access allow user-medium-access
http_access deny arc_files
http_access allow user-minimum-access
#Запрещаем доступ всем остальным
http_access deny all
http_port 0.0.0.0:3128
coredump_dir /var/spool/squid
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
detect_broken_pconn on
...
Два вопроса:
1. При данном конфиге в логе авторизаций очень много сообщений (пользователей ~500). Я так понимаю, что squid авторизует буквально каждый запрос от клиента. Есть ли какой-то кэш авторизаций, что бы пользователя авторизовало единожды, к примеру, на час. Конечно для пользователя все равно не заметна эта процедура, но лог напрягает. Ну или это нормальное поведение?
2. Есть несколько сайтов, к примеру сайт мониторинга транспорта (gps-трекер) по http и тот же сбер для бизнеса по https. На них либо не удается авторизоваться вовсе, либо из них быстро выкидывает с сообщением об истечении времени сессии. Если эти сайты вписать в список direct-to-whitenet, т.е. пустить в мир через родительский прокси (там нет ни авторизаций, ни каких-либо ограничений), то сайты работают корректно. Что же такого «отрезает» мой squid?
По вопросу №2. Отладка в браузере показывает, что сайт отдает 403 на странице авторизации (http://web.monitoringtransporta.ru/). Значит ли это, что сайт получает от меня авторизационные данные kerberos, а не то, что я ввожу на странице входа?