пятница, 12 октября 2012 г.

Прозрачный squid со стоп листами

Все команды выполнялись от прав пользователя root.
1. Устанавливаю Squid — 'apt-get install squid3'. После установки останавливаю его, ибо нужно сконфигурировать его под мои нужды - '/etc/init.d/squid3 stop'.
2. Собственно редактирую конфиг прокси-сервера — 'nano /etc/squid3/squid.conf', до следующего вида: 

# ACCESS CONTROLS
# -----------------------------------------------------------------------------
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

acl homenet src 192.168.1.0/24
acl goodip src "/etc/allow.txt"
acl delaypool20 src "/etc/squid3/delay20.txt"
#acl perring src "/etc/squid3/perring.txt"
acl exception url_regex -i  "/etc/squid3/exception.txt"
acl bad_url url_regex -i "/etc/squid3/advare.txt"
acl bad_url_reg urlpath_regex -i "/etc/squid3/adv_reg.txt"

acl ip2 src 192.168.1.2/32
acl site2 url_regex -i "/etc/squid3/2.txt"

acl directurl url_regex "/etc/squid3/nocache.txt"
acl timeless time 7:00-23:59
#acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.avi$ \.mov$

acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 5190    # icq
acl Safe_ports port 1025-65535    # unregistered ports
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow exception
http_access deny bad_url
http_access deny bad_url_reg
http_access allow goodip

http_access allow localhost

http_access allow site2 ip2

http_access deny all
icp_access deny all
htcp_access deny all

# NETWORK OPTIONS
# -----------------------------------------------------------------------------
http_port 3128 transparent

# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
# -----------------------------------------------------------------------------
hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
no_cache deny directurl

# MEMORY CACHE OPTIONS
# -----------------------------------------------------------------------------
 cache_mem 64 MB
 maximum_object_size_in_memory 512 KB

# DISK CACHE OPTIONS
# -----------------------------------------------------------------------------
 cache_dir ufs /var/spool/squid3 15000 16 256
 maximum_object_size 8192 KB
# cache_swap_low 90 указывает до какого уровня очистить кэш (в процентах
# от максимального)при достижении "потолка" - cache_swap_high
 cache_swap_low 90
 cache_swap_high 95

# LOGFILE OPTIONS
# -----------------------------------------------------------------------------
 access_log /var/log/squid3/access.log squid
 cache_log /var/log/squid3/cache.log
 cache_store_log none
 pid_filename /var/run/squid3.pid
 debug_options ALL,1

# OPTIONS FOR TUNING THE CACHE
# -----------------------------------------------------------------------------
 refresh_pattern ^ftp:        1440    20%    10080
 refresh_pattern ^gopher:    1440    0%    1440
 refresh_pattern (cgi-bin|\?)    0    0%    0
 refresh_pattern .        0    20%    4320

 quick_abort_min 16 KB
 quick_abort_max 16 KB
 quick_abort_pct 95

 negative_ttl 5 minutes

 positive_dns_ttl 6 hours

 negative_dns_ttl 1 minutes

# HTTP OPTIONS
# -----------------------------------------------------------------------------
        request_header_access From deny all
#        request_header_access Referer deny all
        request_header_access Server deny all
        request_header_access User-Agent deny all
        request_header_access WWW-Authenticate deny all
        request_header_access Link deny all

header_replace User-Agent Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.7 Version/11.00

# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------
 cache_effective_user proxy
 visible_hostname server.ex

# DELAY POOL PARAMETERS
# -----------------------------------------------------------------------------
delay_pools 4

# 1 класс - наказание за нарушение устава - 20% скорости
delay_class 1 1
delay_access 1 allow delaypool20
delay_parameters 1 5000/5000
delay_access 1 deny all

# 2 класс - для избранных сайтов вся сеть качает без ограничений
delay_class 2 1
#delay_access 2 allow perring
delay_access 2 allow directurl
delay_parameters 2 -1/-1
delay_access 2 deny all

# 3 класс - в период с 23.59 по 7.00 вся сеть качает практически без ограничений
# экспериментальный фильтр 70% на кач - 512КБ/сек

delay_class 3 2
delay_access 3 allow !timeless
delay_parameters 3 -1/-1 512000/512000
delay_access 3 deny all

# 4 класс - до 1МБ загружают весь канал без ограничений, свыше 1МБ только 50% от канала

delay_class 4 2
delay_access 4 allow goodip
delay_parameters 4 -1/-1 250000/512000
delay_access 4 deny all

# ICP OPTIONS
# -----------------------------------------------------------------------------
icp_port 3130

# ERROR PAGE OPTIONS
# -----------------------------------------------------------------------------
 error_directory /usr/share/squid3/errors/Russian-koi8-r

 deny_info ERR_BLOCKED_BANNERS bad_url
 deny_info ERR_BLOCKED_BANNER_REG bad_url_reg
 deny_info ERR_BLOCKED_SPYWARE spyware

# OPTIONS INFLUENCING REQUEST FORWARDING
# -----------------------------------------------------------------------------
 always_direct allow directurl

# DNS OPTIONS
# -----------------------------------------------------------------------------
 hosts_file /etc/hosts

# MISCELLANEOUS
# -----------------------------------------------------------------------------
 forwarded_for off
 coredump_dir /var/spool/squid3
 

 3. Создаю необходимые файлы задействованные в конфиге.
 - 'nano /etc/allow.txt' - список IP адресов которым разрешен доступ в Internet, список вида:
192.168.1.2
192.168.1.3
192.168.1.4

- 'nano /etc/squid3/delay20.txt' - список IP адресов людей злоупотребляющих Internet'ом (т.е. любителей качать большие объемы информации и тд.), список вида:
192.168.1.3
192.168.1.4

'nano /etc/squid3/perring.txt' - список IP адресов попадающих в пиринговую зону провайдера, список вида:
86.57.253.1
91.149.189.0/25  


-'nano /etc/squid3/advare.txt'  - стоп лист неблагоприятных сайтов (рекламных, вирусных и тд.), список имеет вид:
94.198.240.94/content/
ad.sprinthost.ru 

- 'nano /etc/squid3/adv_reg.txt' - еще один стоп лист, но несколько другого вида:
bannerid
lg.php
.ad.infoseek.com 
.bikinicollection.com/clickmexxx.html 

- 'nano /etc/squid3/exception.txt' - список надежных сайтов, рассматриваемых по какой-либо причине стоп листами как плохие, имеет вид:
adwords.google.com
adwords.google.ru 

- 'nano /etc/squid3/2.txt' - список сайтов находящихся в стоп листе, но по какой-либо причине нужных конкретному пользователю, имеет вид:
sextracker.de
shoppingads.com

- 'nano /etc/squid3/nocache.txt' - список адресов которые не нужно кэшировать (например игровые), имее вид:
ereality.ru
l2.ru 

4. Запускаю Squid — '/etc/init.d/squid3 start''/etc/init.d/squid3 start'

5. Создаю правило в iptables для перенаправления локального трафика с 80 порта на порт Squid'а — 3128:
/sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.0.0/24 -p tcp -d 0.0.0.0/0 --dport 80 -j REDIRECT --to-port 3128