w3cache reloaded

maj 4th, 2007

Jakiś czas temu pisałem już o proxy www. Tekst wywołał zainteresowanie i niedosyt, głównie z braku plików konfiguracyjnych. Poniżej więc wszystko co było wymagane :)

Jednak najpierw troszkę informacji które pomogą zrozumieć podejście do problemu.

Proxy jest jednym z kilku, przygotowanym do obsługi bardzo dużej ilości połączeń. Dostęp przyznawany jest na podstawie autoryzacji w domenie Windows i przynalezności do grupy domenowej “inet”. Wymuszone jest skanowanie antywirusowe oraz blokowana treść w przypadku wykrycia wirusa. Każde żądanie jest logowane.

Nie będzie poniżej dużo komentarzy :)

Najpierw serwer powinien zostać dodany do domeny w której pracują użytkownicy. Oczywiście samba wymagana.
Wycinek z smb.conf

[global]
workgroup = eqax
realm = centrala.eqax.pl
password server =
192.168.150.10, 192.168.150.11
server string = %h server
wins server =
192.168.150.10, 192.168.150.11
dns proxy = no
template homedir = /home/%D/%U
template shell = /bin/bash
log file = /var/log/samba/log
max log size = 1000
syslog only = no
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = ads
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = no
domain logons = no
socket options = TCP_NODELAY
domain master = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum groups = yes
winbind enum users = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = yes
winbind cache time = 120
winbind trusted domains only = no

Tym sposobem otrzymaliśmy BDC na sambie. Pora na testy

proxy3:/etc/squid\> wbinfo -p
Ping to winbindd succeeded on fd 3
proxy3:/etc/squid\> wbinfo -t
checking the trust secret via RPC calls succeeded
proxy3:/etc/squid\> /usr/lib/squid/wbinfo_group.pl
eqax\\ruddcent inet
OK

Jesli wystepuja problemy z autoryzacja nalezy zmodyfikowac prawa socketu w winbindd_privileged na 0750, gdzie grupa to uzytkownik na prawach ktorego uruchomiony jest squid a owner to root.

Czyli w domenie wszystko działa, user ruddcent z domeny eqax jest w grupie “inet” i będzie miał dostęp do w3cache. Należy upewnić się, że użytkownik na prawach ktorego będzie pracował squid należy do grupy samba.

Poniżej plik squid.conf

http_port 8080
icp_port 3130
cache_peer w3cache.atman.pl parent 3128 3130
cache_peer proxy2.eqax.pl sibling 8080 3130
cache_peer proxy3.eqax.pl sibling 8080 3130
cache_peer proxy4.eqax.pl sibling 8080 3130
dead_peer_timeout 5 seconds
cache_mem 2048MB
cache_store_log /var/log/squid/store.log
cache_log /var/log/squid/cache.log
cache_access_log /var/log/squid/access.log
coredump_dir /var/cache/cache/squid
error_directory /var/log/squid
cache_dir ufs /var/cache/squid 20480 16 128
cache_swap_low 85
cache_swap_high 95
useragent_log /var/log/squid/agent.log
maximum_object_size 2048 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 256 KB
ipcache_size 1024
ipcache_low 85
ipcache_high 95
quick_abort_min 30 KB
quick_abort_max 30 KB
quick_abort_pct 85
redirect_program /usr/local/bin/squidclamav
redirect_children 5
dns_nameservers 127.0.0.1 192.168.150.10 192.168.150.11
dns_testnames google.pl microsoft.com atman.pl ikp.pl
dns_timeout 2 minutes
positive_dns_ttl 15 minutes
negative_dns_ttl 1 minutes
append_domain .eqax.pl
range_offset_limit 15 MB
logfile_rotate 5
emulate_httpd_log on
log_ip_on_direct off
log_mime_hdrs off
log_fqdn on
log_icp_queries off
buffered_logs on
reload_into_ims on
error_directory /usr/share/squid/errors/Polish
refresh_pattern -i (.*jpg$|.*gif$) 0 50% 28800
refresh_pattern -i (.*html$|.*htm|.*shtml) 0 20% 1440
refresh_pattern (http://.*/$) 0 20% 1440
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320
request_header_max_size 20 KB
request_body_max_size 0 KB
client_lifetime 1 day
half_closed_clients on
pipeline_prefetch on
forwarded_for off
maximum_single_addr_tries 2
ie_refresh off
connect_timeout 45 seconds
peer_connect_timeout 20 seconds
read_timeout 3 minutes
request_timeout 2 minutes
pconn_timeout 90 seconds
dead_peer_timeout 15 seconds
icp_query_timeout 5 seconds
maximum_icp_query_timeout 5 seconds
mcast_icp_query_timeout 7 seconds
#debug_options ALL,1 33,2
authenticate_ip_ttl 1 minute
authenticate_ttl 1 minute
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm w3cache server
auth_param basic credentialsttl 2 hours
external_acl_type NT_global_group protocol=2.5 children=5 ttl=10 %LOGIN /usr/lib/squid/wbinfo_group.pl
acl day time 06:00-21:59
acl work-time time MTWHF 07:59-16:59
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 10.0.0.0/255.0.0.0
acl proxy src 192.168.150.0/24
#acl public src 123.123.123.123/255.255.255.255
acl snmppublic snmp_community operator
acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
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 DomainUsers external NT_global_group inet
acl Authenticated proxy_auth REQUIRED
acl CONNECT method CONNECT
acl magic_ip dstdomain .showmyip.com .no-ip.org
acl magic_lan url_regex -i 10. 172.16.
acl magic_files url_regex -i ftp .exe .vqf .tar.gz .gz .tgz .zip .rar .avi .mpeg .mpg .qt .ram .rm .iso .raw .wav .rpm .iso .bz2 .mp3 .mp4 .mov .raw
acl magic_domain dstdomain .eqax.pl
acl QUERY urlpath_regex cgi-bin cgi no_cache deny QUERY
acl non-anonymous-ftp url_regex -i ^ftp://[^/@]*@
acl FTP proto FTP
always_direct allow FTP
always_direct allow magic_ip
always_direct allow magic_domain
always_direct deny all
http_access allow manager localhost
http_access deny manager
http_access allow localhost
http_access allow proxy
http_access allow DomainUsers
http_access deny all
http_reply_access allow all
snmp_access allow snmppublic proxy
snmp_access deny all
snmp_port 3401
redirector_access deny localhost
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow magic_lan
delay_access 1 allow magic_domain
delay_access 1 deny all
delay_class 2 2
delay_parameters 2 -1/-1 102400/1048576
delay_access 2 allow work-time
delay_access 2 allow magic_files
delay_access 2 deny !work-time
cache_effective_user proxy
cache_effective_group proxy
visible_hostname w3cache.eqax.pl
cache_mgr w3cache@eqax.pl
cachemgr_passwd xxx all
server_persistent_connections off
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
ftp_passive on
ftp_user nobody@

Zakomentowane opcje debug bardzo pomagają w przypadku problemów z autoryzacją.

Skanowanie antywirusowe realizowane jest przez SquidClamav i ClamAV oraz SquidGuard

Konfiguracja SquidClamav squidclamav.conf

proxy http://127.0.0.1:8080/
logfile /var/log/squid/squidclamav.log
redirect http://127.0.0.1/information.php
squidguard /usr/bin/squidGuard -c /etc/squidGuard/squidGuard.conf
debug 0
force 0
stat 0
clamd_local /var/run/clamav/clamd.ctl
timeout 30
regexi ^.*\.exe$
regexi ^.*\.com$
regexi ^.*\.zip$
regexi ^.*\.bz2$
regexi ^.*\.rar$
regexi ^.*\.tgz$
regexi ^.*\.gz$
regexi ^.*\.ace$
abort ^.*\/cgi-bin\/.*$
abort ^.*\..pdf$
abort ^.*\..html$
abort ^.*\..htm$
abort ^.*\..css$
abort ^.*\..xml$
abort ^.*\..xsl$
abort ^.*\..js$
abort ^.*\..ico$
aborti ^.*\..gif$
aborti ^.*\..png$
aborti ^.*\..jpg$
aborti ^.*\..tif$
aborti ^.*\..swf$
content ^.*application\/.*$

Konfiguracja SquidGuard z domyslną polityka

default {
pass any
}

To w zasadzie wszystko, dla wygody administratora uruchomić na maszynie serwer SNMP aby monitorować load oraz zajętość plików logów. Jak widać squid sam w sobie raportuje poprzez SNMP należy tylko mieć bazy MIB /usr/share/squid/mib.txt.

Wszystko :)

One Response to “w3cache reloaded”

  1. 1 daniel
    styczeń 30th, 2008 at 9:25 am

    na obciążonych proxy dobrze jest dodać do pliku
    /etc/sysctl.conf

    fs.file-max = 327680

    wtedy OS nie będzie ‘krztusił się’ przy limitach na ilość dostępnych plików

Leave a Reply