Squid ­ An example of a simple proxy­server configuration

  • 13rd day of Confusion, in the yold 3177
  • 0 Comments

squid-shadeSquid is a powerful proxy­server having a flexible configuration. While there are plenty of graphical user interfaces available for his proxy­server adjustment, this article addresses its simplest configuration by using the command line of Debian/Ubuntu operating systems, with the statistics displayed. As a result, you will have the proxy­server running and being capable of managing and granting access to a multitude of users while monitoring the proxy’s activity.

English version of this page under construction. You can read automatic translation.


Squid – это мощный прокси-сервер с гибкой конфигурацией. Существует множество графических оболочек для его настройки, но в этой статье будет приведен пример простейшей конфигурации этого прокси-сервера в командной строке операционных систем Debian/Ubuntu с отображением статистики. В результате вы получите рабочий proxy-сервер с возможностью добавлять и регулировать доступ множества пользователей и заниматься мониторингом активности прокси.

Сначала установим squid и apache2-utils для поддержки аутентификации:

sudo apt-get install squid apache2-utils

Сразу создадим файл с паролями пользователей будущего прокси:

sudo htpasswd -c /etc/squid/passwd username

Где ‘username’ – имя пользователя, после этого новые пользователи добавляются простой командой:

sudo htpasswd /etc/squid/passwd username1
sudo htpasswd /etc/squid/passwd username2

Аналогичным образом вы сможете добавить необходимое количество пользователей.

Скопируем стандартную конфигурацию перед изменением настроек:

sudo cp /etc/squid/squid.conf /etc/squid/squid_original.conf

После этого удалите и создайте новый файл конфигурации:

sudo rm /etc/squid/squid.conf
sudo nano /etc/squid/squid.conf

Далее, скопируйте в этот файл наш пример настроек прокси-сервера:

# В этой строке вы можете изменить приветствие сервера:
auth_param basic realm Default proxy server
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 3 hours
auth_param basic casesensitive off

acl all src 0.0.0.0/0
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
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/24

acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_reply_access allow all

# Порты прокси-сервера:
http_port 3128
http_port 8080

# Здесь указывается путь к лог-файлу, важен для мониторинга:
access_log /var/log/squid/access.log squid

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|?) 0 0% 0
refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

acl apache rep_header Server ^Apache

# Здесь описывается каким из созданных пользователей необходима аутентификация:
acl username proxy_auth REQUIED
acl username1 proxy_auth REQUIED
acl username2 proxy_auth REQUIED
http_access allow username
http_access allow username1
http_access allow username2

# Здесь присваиваются списки контроля доступа (ACL) для доступных пользователей:
acl complete_urls proxy_auth username
acl limited_urls proxy_auth username1
acl expanded_urls proxy_auth username2

# Для политики good будут доступны google и наш сайт:
acl good dstdomain .google.com .google.ru .oss-it.ru
# Для политики goodmail сделаем доступным gmail:
acl goodmail dstdom_regex gmail googlemail
# Для политики expanded_sites для расширенного доступа к сайтам добавим Яндекс:
acl expanded_sites dstdomain .yandex.ru .ya.ru
# Также добавим следующую локальную подсеть доступной через прокси:
acl localnetwork dst 192.168.0.0/24

# Для пользователя username с правилами complete_urls не будет никаких ограничений доступа:
http_access allow complete_urls

# Для пользователя username1 с правилами limited_urls будут доступны только локальная сеть и сервисы google:
http_access allow limited_urls good
http_access allow limited_urls goodmail
http_access allow limited_urls localnetwork
http_access deny limited_urls all

# Для пользователя username2 с правилами expanded_urls дополнительно будет доступен Яндекс:
http_access allow expanded_urls good
http_access allow expanded_urls goodmail
http_access allow expanded_urls expanded_sites
http_access allow expanded_urls localnetwork
http_access deny expanded_urls all

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all

hosts_file /etc/hosts

Вы можете менять содержание прокомментированных строк так, чтобы добиться тех параметров прокси-сервера, которые вам необходимы.
Для более подробной настройки и знакомства с конфигурацией squid пользуйтесь официальным руководством по настройке.

После того, как все необходимые изменения в конфигурацию внесены, необходимо перезапустить прокси-сервер:

sudo squid -k reconfigure

Прокси-сервер после этого должен работать. Теперь займемся мониторингом, установим для этого следующие пакеты:

sudo apt-get install apache2 libgd-gd2-perl perl

Перейдите в папку вашего веб-сервера (по-умолчанию /var/www):

cd /var/www/

Скачайте исходный код с lightsquid с sourceforge, например с помощью wget:

sudo wget http://sourceforge.net/projects/lightsquid/files/lightsquid/1.8/lightsquid-1.8.tgz

Разархивируйте файлы:

sudo tar -xzf lightsquid-1.8.tgz

Перейдите в распакованную папку и установите права исполнения на скрипты lightsquid:

cd lightsquid-1.8
sudo chmod +x *.cgi
sudo chmod +x *.pl

Измените права на доступ к папке lightsquid:

cd /var/www/
sudo chown -R www-data:www-data lightsquid-1.8

Отредактируйте ваш веб-сервер на работу с программой мониторинга прокси, для этого в файл конфигурации apache (/etc/apache2/apache2.conf) добавьте следующие строки:

[Directory "/var/www/lightsquid-1.8"]
AddHandler cgi-script .cgi
AllowOverride All
[/Directory]

(где квадратные скобки [] замените на угловые <>)

Перезагрузите веб-сервер:

sudo /etc/init.d/apache2 restart

Далее отредактируйте соответствующим образом lightsquid.cfg (находится в /var/www/lightsquid-1.8):

# Проверьте правильность всех следующих путей:
$cfgpath ="/var/www/lightsquid-1.8";
$tplpath ="/var/www/lightsquid-1.8/tpl";
$langpath ="/var/www/lightsquid-1.8/lang";
$reportpath ="/var/www/lightsquid-1.8/report";
$ip2namepath ="/var/www/lightsquid-1.8/ip2name";
$logpath ="/var/log/squid";
$lockpath =$reportpath;
$maxlocktime = 30*60;
$debug = 0;
$debug2 = 0;
$graphreport = 0;
# В этой строке вы можете изменить язык интерфейса:
$lang ="ru";

Проверьте правильность путей, язык интерфейса, остальную конфигурацию lightsquid изменять не требуется.
После этого программа мониторинга готова к работе. Перейдите в папку lightsquid и запустите скрипт проверки готовности:

cd /var/www/lightsquid-1.8
sudo ./check-setup.pl

Если всё будет в порядке, запускайте генератор отчёта:

sudo ./lightparser.pl

После этого можно прописать скрипт в автозагрузку:

sudo crontab -e

Куда надо добавить:

*/60 * * * * /var/www/lightsquid-1.8/lightparser.pl

(где число означает количество минут между генерациями отчёта)

Доступ к программе мониторинга вы можете получить через адрес:

http://localhost/lightsquid-1.8

Leave a Comment

Your email address will not be published. Required fields are marked *