понедельник, 17 ноября 2008 г.

Установка и настройка squid

./configure --enable-delay-pools Конфигурация с поддержкой пулов
./configure --enable-arp-acl Конфигурация с поддержкой MAC адресов.
/usr/local/squid/sbin/squid -z При 1-м запуску создаем кеш для squid
/usr/local/squid/sbin/squid start Запускаем squid
ps -waux | grep squid Проверяем запущенный сквид
/usr/local/squid/sbin/squid -k reconfigure Перезагрузка конфигурации squid
Для прозрачного прокси:
ядро компилировать с опциями :
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD_EXTENDED
options IPDIVERT

# отправляем всех на прозрачный squid
$cmd 050 fwd 127.0.0.1,3129 tcp from 192.168.7.0/24 to any 21,80,443,5190 out via re1
deny_info - выдает собственный текст

Задача:

Прокси сервер создан на базе squid+sarg
Общий ежемесячный выкупаемый трафик на интернет 3 Гб
10 сотрудников имеет доступ до интернета
Все сотрудники разбиты на 5 групп:
1. Полный доступ до интернета без ограничений и квот.
Леонид Александрович(192.168.7.88)
Ирина Николаевна(192.168.7.25)
2. Полный доступ до интернета с отключением развлекательных сайтов, без квот.
Менеджер(192.168.7.23)
Юрист 1 (192.168.7.90)
Юрист 2 (192.168.7.92)
Алексей Юрьевич(192.168.7.22)
3. Квотируемы полный доступ до интернета с отключением развлекательных сайтов.
Сист. администратор (192.168.7.24) квота-400 МБ
Секретарь(192.168.7.10) квота-400 МБ
4. Квотируемый доступ сотрудников с ограниченным кол-вом допустимых сайтов
Анна Евгеньевна(192.168.7.16) квота-400 МБ
Марина Николаевна(192.168.7.15) квота-400 МБ
5. Группа сотрудников, которым отключен интернет из-за перерасходования квоты.
Просмотр статистики происходит по адресу: http://192.168.7.1


Решение:
Мой /usr/local/squid/etc/squid.conf (внесены данные)

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

#Allow admin full inet (I grups)
acl admin_users src "/usr/local/squid/etc/adminusers"

#Allow Users Inet in Office with restrict sait, but no quota (II grups)
acl inet_users src "/usr/local/squid/etc/internetusers"

#Allow Users Inet with restrict sait, with quota 500Mb(III groups)
acl quota_users src "/usr/local/squid/etc/quotausers"

#deny url
acl deny_url url_regex "/usr/local/squid/etc/denyurl"

#deny domain name
acl deny_domain dstdomain "/usr/local/squid/etc/denydomain"

#Restrict Inet for Users with quota 400Mb (IV grups)
acl inet_restrict src "/usr/local/squid/etc/restrictusers"
acl sait_restrict dstdomain src "/usr/local/squid/etc/restrictsait"

# Deny Inet for user which in quots(V grups)
acl deny_inet src "/usr/local/squid/etc/denyusers"

#Files for deny: video and sound
acl media urlpath_regex -i \.mp3$\.acf$\.wma$\.avi$\.mpeg$\.mpeg4$

# Files download
acl files urlpath_regex -i \.exe$\.rar$\.zip$

# pools
delay_pools 2
delay_class 1 1
delay_parameters 1 1000/1000
#acl files urlpath_regex -i \.exe$\.rar$\.zip$

#http_access allow files
http_access allow inet_users files
delay_access 1 allow files
delay_access 2 deny all
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
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
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # 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 25 # SMTP
acl Safe_ports port 110 # Pop3
acl Safe_ports port 143 # IMAP
acl CONNECT method CONNECT

#Default:
# http_access deny all

# blocking banners
#acl nobanners src 0/0
#acl banners url_regex "/usr/local/squid/etc/banners.acl"
#http_access deny nobanners banners

##########################################
### I grups
#Allow Inet for admin grups
http_access allow admin_users

### II grups
# deny url for office all users
http_access deny inet_users deny_url

# deny domain
http_access deny inet_users deny_domain

# deny media files for inet_users
http_access deny inet_users media

# allow inet office users
http_access allow inet_users

### V grups
#Deny inet users
http_access deny deny_inet

### III grups
http_access deny quota_users deny_domain
http_access allow quota_users

### IV
http_access allow inet_restrict sait_restrict
http_access deny inet_restrict

http_access deny all
#############################################

Примечание: запрет домена легко обходится с помощью порталов free proxy, например, http://hidemyass.com/
____________
SARG
sarg --help Помощь по sarg'у
sarg -d 16/11/2008-18/11/2008 Создает отчет с 16.11 по 18.11

/usr/local/etc/sarg/sarg.conf:

language English

access_log /var/log/squid/access.log

graphs yes
graph_days_bytes_bar_color orange

output_dir /var/log/squid-reports #Куда выгружать отчеты html

per_user_limit /usr/local/squid/etc/denyusers 400 #quota 400 MB
__________________________________
Скрипт для crona:
#!/bin/sh
/bin/rm /usr/local/squid/etc/denyusers #Удаляем файл
denyusers, т.к. sarg только добавлет ip
/bin/rm -R /var/log/squid-reports/* #Удаляем отчеты sarg
CUR_DATE=`/bin/date +%d/%m/%Y`
#echo $CUR_DATE
/usr/local/bin/sarg -d 01/12/2008-$CUR_DATE #Создаем отчет sarg до сегодняшнего дня
/usr/local/squid/sbin/squid -k reconfigure #Перезапускаем squid, что бы применить настройки
__________________________________

Cron
00 9,11,13,15,17 * * * /sarg.sh # каждые 9,11,..,17 часов выполнять sarg.sh
__________________________________
Apache
Apache HTTP сервера устанавливается в /usr/local/etc/apache/httpd.conf
ServerAdmin you@your.address - Адрес, на который должны будут отправляться сообщения о проблемах с сервером.
DocumentRoot "/usr/local/www/data" - Каталог, внутри которого будут храниться документы. Здесь лучше указать на файлы SARGA.
#
/usr/local/sbin/apachectl start(stop/restart) Запуска APACHE
#
/usr/local/sbin/apachectl graceful Для перезапуска Apache без прерывания имеющихся соединений
Для запуска Apache при старте системы в /etc/rc.conf:
apache_enable="YES"
Проверка работы сервера:
telnet webserver 80
И ввести: HEAD
/ НТТР/1.0

Комментариев нет: