Squid(delay pools)+AD auth+calamaris+sqstat
Сразу укажу источники, потому как слямзено почти все.
http://www.lissyara.su/articles/freebsd/programms/squid+ad+group_access/
http://sys-adm.org.ua/www/squid-ad.php
OS: FreeBSD 8.2
Samba 3.5.11
Squid 3.1.15
Rejik 3.2.6
Calamaris 2.59
SqStat установлен на другой машине, здесь прописан только доступ к кэш-менеджеру. Про SqStat я уже писал ранее.
Samba:
cd /usr/ports/net/samba35/
/usr/ports/net/samba35/>make config
Выбираем:
[X] LDAP With LDAP support
[X] ADS With Active Directory support
[X] WINBIND With WinBIND support
[X] SYSLOG With Syslog support
[X] UTMP With UTMP accounting support
[X] POPT With system-wide POPT library
/usr/ports/net/samba35/>make install clean
cd /usr/local/etc
/usr/local/etc/>mcedit smb.conf
#======================= Global Settings ============================
[global]
# netbios имя нашего домена
workgroup = MYDOMAIN
# Комментарий сервера
server string = Corporate Proxy Server
# Режим безопасности
security = ADS
# Указываем сети, которым разрешен досту к прокси
hosts allow = 10.201.1.
# Указываем расположение логов
log file = /var/log/samba/log.%m
# Указываем размер логов (в килобайтах)
max log size = 1024
# Указываем имя контроллера домена (Внимание! Необходимо указать контроллер
# домена,выполняющий роль PDC, если он у вас один то не заморачивайтесь. У
# меня в сети много сайтов.)
password server = dc4.mydomain.local
# Указываем полное имя нашего домена
realm = mydomain.local
# Указываем тип хранилища
passdb backend = tdbsam
# Сетевые настройки
socket options = TCP_NODELAY
# Указываем самбе, что она не является PDC
local master = no
os level = 0
domain master = no
preferred master = no
domain logons = no
# Настройки кодировки
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
# Настройки winbind
winbind use default domain = no
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
Редактируем nsswitch.conf:
cd /etc
mcedit nsswitch.conf
group: files winbind
passwd: files winbind
Проверяем DNS:
nslookup dc4.mydomain.local
Ставим правильное время:
ntpdate NTP-server
Добавляем машину в домен:
net ads join -U user%pass
Using short domain name — MYDOMAIN
Joined ‘FREEBSD’ to realm ‘mydomain.local’
mcedit rc.conf
winbindd_enable=”YES”
winbindd_flags=”-d 1″ # Здесь указываем уровень информативности дебага
Тестим:
wbinfo -p
wbinfo -t
wbinfo -u
wbinfo -g
wbinfo -D MYDOMAIN
net ads info
Проверяем аутентификацию
wbinfo –authenticate=MYDOMAIN\\ADAdmin%password
Получим инфу по пользователю:
id MYDOMAIN\\ADAdmin
Указываем пользователя от имени которого будет проходить аутентификация:
net setauthuser=MYDOMAIN\\proxy%password
Проверяем:
net getauthuser
MYDOMAIN\proxy%password
Squid:
cd /usr/ports/www/squid31
/usr/ports/www/squid31/>make config
Выбираем следующее:
[X] SQUID_LDAP_AUTH Install LDAP authentication helpers
[X] SQUID_DELAY_POOLS Enable delay pools
[X] SQUID_SNMP Enable SNMP support
[X] SQUID_HTCP Enable HTCP support
[X] SQUID_CACHE_DIGESTS Enable cache digests
[X] SQUID_WCCP Enable Web Cache Coordination Prot. v1
[X] SQUID_IDENT Enable ident (RFC 931) lookups
[X] SQUID_ARP_ACL Enable ACLs based on ethernet address
Устанавливаем:
/usr/ports/www/squid31/>make install clean
mcedit /usr/local/etc/squid/squid.conf
# Указываем Squid как проводить аутентификацию:
auth_param ntlm program /usr/local/bin/ntlm_auth –helper-protocol
=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on
authenticate_cache_garbage_interval 15 minute
authenticate_ttl 5 minute
auth_param basic program /usr/local/bin/ntlm_auth –helper-protocol
=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid Proxy-Server
auth_param basic credentialsttl 20 minute
auth_param basic casesensitive off
# Теперь указываем Squid где брать информацию о группах пользователей
external_acl_type nt_group %LOGIN /usr/local/libexec/squid/wbinfo_group.pl
# Рекомендованная минимальная конфигурация:
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
# Описываем основные порты
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 20 21 # ftp
acl Safe_ports port 443 563 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
#acl Safe_ports port 631 # cups
#acl Safe_ports port 110 # POP3
#acl Safe_ports port 25 # SMTP
acl purge method PURGE
acl CONNECT method CONNECT
# Указываем пулы адресов нашей сети/сетей
acl lan src 10.201.1.0/24
acl acl1 src 10.201.1.1/32
acl acl2 src 10.201.1.2/32
acl acl3 src 10.201.1.3/32
#########################################################
# Указываем группы доступа
acl inet-admins external nt_group inet-admins # Доступ для админов
# TAG: http_access
http_access allow manager localhost
http_access allow manager webserver
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Напоследок стандартные правила
http_access deny all
http_reply_access allow all
icp_access allow all
# Указываем порт, на котором будет слушать Squid
http_port 3128
# MEMORY CACHE OPTIONS
# ——————————————————————–
# TAG: cache_mem (bytes)
cache_mem 256 MB
# TAG: maximum_object_size_in_memory (bytes)
maximum_object_size_in_memory 80 KB
# DISK CACHE OPTIONS
# ——————————————————————–
# TAG: cache_dir
cache_dir ufs /usr/local/squid/cache 1024 16 256
# TAG: minimum_object_size (bytes)
#Default:
minimum_object_size 10 KB
# TAG: maximum_object_size (bytes)
#Default:
maximum_object_size 32 MB
# TAG: cache_swap_low (percent, 0-100)
# TAG: cache_swap_high (percent, 0-100)
#
cache_swap_low 90
cache_swap_high 95
# LOGFILE OPTIONS
# ——————————————————————-
# TAG: access_log
access_log /usr/local/squid/logs/access.log squid
# TAG: pid_filename
pid_filename /usr/local/squid/logs/squid.pid
# TAG: ftp_user
ftp_user unix@mydomain.ru
# TAG: ftp_passive
ftp_passive on
# OPTIONS FOR TUNING THE CACHE
# ——————————————————————–
# TAG: cache
acl QUERY urlpath_regex cgi-bin \?
# TAG: refresh_pattern
#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
# TAG: quick_abort_min (KB)
# TAG: quick_abort_max (KB)
# TAG: quick_abort_pct (percent)
quick_abort_pct 80
# ADMINISTRATIVE PARAMETERS
# ——————————————————————-
#Кол-во пулов
delay_pools 3
# TAG: cache_mgr
cache_mgr admins@mydomain.ru
# TAG: cache_effective_user
cache_effective_user squid
# TAG: delay_access
delay_access 1 allow acl1
delay_access 2 allow acl2
delay_access 2 allow acl3
# TAG: delay_parameters
delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_parameters 1 -1/-1 64000/64000
delay_parameters 2 -1/-1 -1/-1
delay_parameters 3 -1/-1 100000/100000
# TAG: delay_initial_bucket_level (percent, 0-100)
delay_initial_bucket_level 50
# TAG: error_directory
error_directory /usr/local/etc/squid/errors/ru
# TAG: hosts_file
hosts_file /etc/hosts
# TAG: fqdncache_size (number of entries)
fqdncache_size 16386
# TAG: memory_pools_limit (bytes)
memory_pools_limit 64 MB
# TAG: forwarded_for on|off
forwarded_for off
# TAG: cachemgr_passwd
cachemgr_passwd “your password” all
# TAG: coredump_dir
coredump_dir /usr/local/squid/cache
no_cache deny QUERY manager localhost
visible_hostname proxy.mydomain.local
dns_nameservers 10.201.0.1 10.201.1.1
#Путь к редиректору:
redirect_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf
redirect_children 10
В приведенном выше листинге вырезаны ACLы и органичения для сайтов и добавлена поддержка редиректора Rejik.
Rejik:
cd /usr/ports/www/rejik
/usr/ports/www/rejik/>make install clean
Далее настраиваем Rejik под себя. В блэк-листы добавляем сайты, причем можно вставить как текстовую строку, так и регулярное выражение.
Calamaris:
cd /usr/ports/www/calamaris
/usr/ports/www/calamaris/>make install clean
У меня каламарис запускается по крону:
SHELL=/bin/sh
MAILTO=””
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
#
30 23 * * * /usr/local/etc/squid/aaa
1 1 1 * * /usr/local/etc/squid/reload
Содержимое aaa:
/bin/cat /usr/local/squid/logs/access.log | /usr/local/bin/calamaris -D 10 -d 20 -P 60 -r 50 -s -t 20 -f squid -F html -U M > /usr/local/squid/logs/stathttp/stat
Содержимое reload:
#!/bin/sh
/usr/bin/killall -9 squid
sleep 10
/usr/local/etc/rc.d/squid.sh start
/bin/cat /dev/null > /usr/local/squid/logs/redirector.log
/bin/cat /dev/null > /usr/local/squid/logs/redirector.err
/bin/cat /dev/null > /usr/local/squid/logs/store.log