Памятка по настройке прозрачного прокси-сервера Squid 3
Памятка по настройке прозрачного прокси-сервера Squid 3
Squid 3.2.7
В организации имеется локальная сеть с выходом в интернет через шлюз под управлением ОС FreeBSD 9. Необходимо ограничить доступ сотрудников к некоторым сайтам, а также вести статистику посещений web-ресурсов. Squid в режиме прозрачного прокси-сервера позволяет сделать незаметное для пользователя перенаправление запросов, таким образом, не придется настраивать каждый компьютер в локальной сети. На шлюзе в качестве фильтра пакетов используется IPFW, с помощью которого можно перенаправить трафик прокси-серверу.
Итак, устанавливаем squid, предварительно обновив порты.
# cd /usr/ports/www/squid32 # make install clean
Активируем опцию TP_IPFW - Enable transparent proxying with IPFW.
Добавляем в /etc/rc.conf:
echo 'squid_enable="YES"' >> /etc/rc.conf
Редактируем конфигурационный файл /usr/local/etc/squid/squid.conf.
http_port 192.168.0.1:3128 transparent visible_hostname my.domain.ru hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY acl apache rep_header Server ^Apache cache_dir ufs /var/squid/cache 1024 16 64 access_log /var/log/squid/access.log squid pid_filename /var/log/squid/squid.pid coredump_dir /var/squid/cache 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 header_access Via deny all client_persistent_connections off server_persistent_connections off acl SSL_ports port 443 acl SSL_ports port 22 # ssh acl SSL_ports port 10022 # secret ssh 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 22 # ssh acl Safe_ports port 10022 # secret ssh acl Safe_ports port 1110 # ooo51 acl CONNECT method CONNECT acl AdminsIP src "/usr/local/etc/squid/AccessLists/allow_IP" acl UrlIP url_regex -i ^http://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/.* acl our_networks src 192.168.0.0/24 acl urls_denied dstdom_regex -i "/usr/local/etc/squid/AccessLists/denied_urls" http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access allow AdminsIP urls_denied http_access deny UrlIP http_access deny our_networks urls_denied http_access allow our_networks http_access deny all http_reply_access allow all icp_access allow all tcp_outgoing_address 1.1.1.1 cachemgr_passwd password all error_directory /usr/local/etc/squid/errors/ru
В файле /usr/local/etc/squid/AccessLists/denied_urls содержится список запрещенных сайтов:
odnoklassniki\.ru vkontakte\.ru
В файл /usr/local/etc/squid/AccessLists/allow_IP заносим IP-адреса, которым разрешен доступ к запрещенным сайтам в файле denied_urls:
192.168.0.11 192.168.0.12
Переноса строки в конце файла не должно быть.
Создаем swap директорию для squid.
# squid -z
Добавим в cron ротацию логов:
59 23 * * * /usr/local/sbin/squid -k rotate
Запускаем squid:
# /usr/local/etc/rc.d/squid start
LightSquid 1.8
Для сбора статистики работы пользователей устанавливаем LightSquid - анализатор логов Squid.
# cd /usr/ports/www/lightsquid # make install clean
Редактируем файл /usr/local/etc/lightsquid/lightsquid.cfg.
Проверяем параметр $logpath = "/var/log/squid"; .
Проверяем конфигурационный файл на наличие ошибок:
# /usr/local/www/lightsquid/check-setup.pl
Запускаем анализатор логов:
# /usr/local/www/lightsquid/lightparser.pl
Добавляем в cron:
*/20 * * * * /usr/local/www/lightsquid/lightparser.pl 2>&1 > /dev/null
Редактируем конфигурационный файл Apache:
<VirtualHost *:80> ServerName my.domain.ru Alias /lightsquid /usr/local/www/lightsquid DocumentRoot /usr/local/www/lightsquid AddHandler cgi-script .cgi .pl </VirtualHost> <Directory /usr/local/www/lightsquid> Options Indexes FollowSymLinks ExecCGI DirectoryIndex index.cgi index.php index.htm index.html AllowOverride All Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 192.168.0 AuthType Basic AuthName "LightSquid, Restricted Access" AuthBasicProvider file AuthUserFile /usr/local/www/lightsquid/.htpasswd Require valid-user </Directory>
Создаем пользователя для доступа к статистике:
# htpasswd -n username
Копируем результат команды htpasswd в файл /usr/local/www/lightsquid/.htpasswd
Перезапускаем Apache:
# /usr/local/etc/rc.d/apache22 restart
Статистика LightSquid доступна по адресу http://localhost/lightsquid:
Sarg
Sarg, также как и LightSquid, позволяет анализировать и предоставлять отчеты на основе логов Squid.
Устанавливаем Sarg 2.3.4:
# cd /usr/ports/www/sarg # make install clean
Редактируем конфигурационный файл /usr/local/etc/sarg/sarg.conf :
access_log /var/log/squid/access.log graphs yes graph_days_bytes_bar_color orange temporary_dir /var/tmp #Директория для хранения отчетов output_dir /storage/www/squid_sarg/public resolve_ip yes user_ip yestopuser_sort_field BYTES reverse date_format e lastlog 31 overwrite_report yes index yes topsites_num 100 report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
Добавляем в cron:
*/10 * * * * /usr/local/bin/sarg 2>&1 > /dev/null
Редактируем конфигурационный файл Apache:
<VirtualHost *:80> ServerName my.domain.ru Alias /sarg /storage/www/squid_sarg/public DocumentRoot /storage/www/squid_sarg/public AddHandler application/x-httpd-php5 php cgi-script .cgi .pl </VirtualHost> <Directory /storage/www/squid_sarg/public> Options Indexes DirectoryIndex index.cgi index.php index.htm index.html AllowOverride Limit Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 192.168.0 AuthType Basic AuthName "SARG, Restricted Access" AuthBasicProvider file AuthUserFile /storage/www/squid_sarg/public/.htpasswd Require valid-user </Directory>
Создаем пользователя для доступа к статистике:
# htpasswd -n username
Копируем результат команды htpasswd в файл /storage/www/squid_sarg/public/.htpasswd
Перезапускаем Apache:
# /usr/local/etc/rc.d/apache22 restart
Статистика Sarg доступна по адресу http://localhost/sarg:
Нажимая кнопку «Сохранить», я подтверждаю свою дееспособность, согласие на получение информации от NetK, согласие на обработку персональных данных в соответствии с Политикой конфиденциальности и Пользовательским соглашением.