Настройка прокси-сервера Squid на Ubuntu 9.04 с DansGuardian, ClamAV и WPAD (автоматическое определение прокси)

В этом руководстве описывается как установить прокси-сервер Squid на Ubuntu 9.04 с DansGuardian (для фильтрации трафика) и ClamAV (для проверки трафика на вирусы); кроме того, мы настроим автоматическое определение прокси-сервера (WPAD) с помощью DHCP (в нашем случае это dhcp3 или DHCP сервер Windows Server 2003) или DNS с тем, чтобы
единственной настройкой, которую необходимо сделать со стороны клиента, было бы включение галочки "Автоматически определять настройки прокси-сервера для этой сети" в Firefox или в Internet Explorer. К концу данного руководства, у ваших пользователей будет полнофункциональный и безопасный прокси-сервер для работы по HTTP.

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

Примечание: этот документ не является руководством по настройке прозрачного прокси! Трафик, отличный от трафика браузера не будет проходить через прокси-сервер! В руководстве указаны те шаги, которые делал я, но я не гарантирую что они подойдут и вам без каких-либо изменений.

Предварительная настройка

Это руководство предполагает, что вы уже установили Ubuntu Server 9.04 и обновили установленные пакеты до последних версий. Предварительная настройка Squid, DansGuardian, ClamAV, dhcp3 и Apache или Lighttpd не является необходимой - в этом руководстве указана все необходимая конфигурация. Вся установка и настройка должна делаться от имени пользователя с Sudo привилегиями.

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

Для установки ClamAV запустите в терминале следующую команду:

sudo apt-get install clamav-daemon clamav-freshclam

Эта команда установит демона ClamAV, необходимого для сканирования на вирусы при помощи DansGuardian, а также FreshClam для обеспечения актуальности антивирусной базы данных. Вы можете получить следующее предупреждение:


LibClamAV Warning: ***********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.     ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/support/faq ***
LibClamAV Warning: ***********************************************************

Это сообщение говорит о том, что антивирусный движок устарел - он жалуется на версию, поставляемую в комплекте с Ubuntu 9.04. Для лучшей безопасности, вам следует поддерживать ClamAV обновленным до последней версии, но это не возможно сделать при помощи apt и выходит за пределы данного руководства. Полагаю, что это предупреждение можно просто проигнорировать.

Конфигурационные файлы ClamAV находятся в папке /etc/clamav, но конфигурация, поставляемая с ClamAV вполне подходит для наших нужд. FreshClam будет обновлять вирусные сигнатуры один раз в час, но если вы хотите это изменить, то следует отредактировать следующий раздел в файле /etc/clamav/freshclam.conf:

# Check for new database 24 times a day
Checks 24

И указать там то количество проверок, которое вам необходимо:

# Check for new database 24 times a day
Checks 48

Подобное изменение приведет к увеличению числа проверок вдвое. Нажмите Ctrl+X для выхода и нажмите Y, когда nano попросит "Сохранить измененный буфер (Save the Modified Buffer)". Если вы изменили конфигурацию FreshClam, запустите следующую команду чтобы убедиться в том, что изменения вступили в силу:

sudo /etc/init.d/clamav-freshclam restart

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

Для установки Squid запустите в терминале следующую команду:

sudo apt-get install squid

Конфигурация для Squid находится в файле /etc/squid/squid.conf. Для того, чтобы редактировать этот файл, наберите:

sudo nano /etc/squid/squid.conf

Нам не нужно сильно изменять настройки Squid, так как между ним и пользователями будет находится DansGuardian и направлять трафик на нужный порт Squid'а. Сейчас необходимо установить этот порт, добавив следующую строку в конец файла:

http_port 3128

Нажмите Ctrl+X для выхода и нажмите Y, когда nano попросит "Сохранить измененный буфер (Save the Modified Buffer)". Затем, наберите следующую команду, чтобы Squid перегрузил конфигурационный файл:

sudo /etc/init.d/squid reload

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

Для установки DansGuardian запустите в терминале следующую команду:

sudo apt-get install dansguardian

Конфигурационные файлы DansGuardian находятся в папке /etc/dansguardian. Для редактирования основного конфигурационного файла, наберите:

sudo nano /etc/dansguardian/dansguardian.conf

Весь dansguardian.conf хорошо откомментирован и весьма информативен. Ниже приведена простейшая настройка, но для того, чтобы в полной мере воспользоваться возможностями контентной фильтрации DansGuardian, необходимо его внимательно прочитать. По-умолчанию, DansGuardian весьма строг (что, вероятно, вам и нужно); ослабление этих ограничений потребует некоторого терпения и редактирования конфигурационных фалов. Я затрону кое-какие моменты ниже. Обратите внимание на следующие строки в конфигурационном файле:

language = 'russian'<br>filterip = x.x.x.x
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
#contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'

Строка "language" определяет язык страницы с ошибкой, которую покажет DansGuardian при блокировке веб-содержимого. Возможные значения этого параметра можно найти в папке /etc/dansguardian. Как только вы выбрали язык страницы с ошибкой для своих пользователей, измените строку "language" в файле /etc/dansguardian/dansguardian.conf, а затем настройте шаблон отображаемой страницы:

sudo nano /etc/dansguardian/languages/russian/template.html

Следуйте инструкциям, приведенным в файле template.html для того, чтобы указать название вашей компании и поменять текст сообщения под свои нужды.

В строках "filterip" и "filterport" указывается IP-адрес и порт прокси-сервера, соответственно. Установите значение параметра filterip равным IP-адресу вашего сервера в локальной сети, а filterport равным тому номеру порта, который вам нужен для вашего прокси; хорошее значение по-умолчанию - 8080.

Важно: если вы хотите иметь доступ к этому прокси через SSH, расположенный на этом же сервере, добавьте еще одну строку "filterip" и укажите в ней адрес 127.0.0.1 для того, чтобы убедиться в том, что DansGuardian будет также использовать localhost для ожидания запросов на подключение.

Параметр "proxyip" указывает адрес прокси-сервера Squid, а параметр "proxyport" указывает порт, на котором он работает. Если вы следуете данной инструкции, оставьте значение этого параметра неизменным - 127.0.0.1, или, другими словами, адрес локальной машины. Аналогично, если для Squid вы использовали порт по-умолчанию, как предложено выше, оставьте значение параметра proxyport равным 3128.

Файл /etc/dansguardian/dansguardian.conf уже содержит строку "contentscanner" в конце. Раскомментируйте ее, чтобы сообщить DansGuardian о необходимости использовать ClamAV для проверки запрошенных через HTTP файлов.

Для завершения настройки, закомментируйте или удалите следующую строку:

UNCONFIGURED - Please remove this line after configuration

Это необходимо для того, чтобы сообщить DansGuardian о том, что мы изменили конфигурацию по-умолчанию. Сохраните файл, нажав Ctrl+X и "Y", а затем выполните команду:

sudo /etc/init.d/dansguardian restart

Эта команда необходима для того, чтобы DansGuardian перезагрузил свою конфигурацию и подключился к запущенному прокси-серверу Squid.

Мы подошли к точке, где вам необходимо сделать действия, указанные ниже, для того, чтобы обезопасить Squid и запретить пользователям работать в обход DansGuardian.

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

sudo ufw default DENY
sudo ufw ALLOW 8080
sudo ufw enable

Благодаря этим правилам, вы будете уверены в том, что входящие соединения на порт, отличный от 8080 (порта, на котором работает DansGuardian), будут заблокированы (и пронырливые пользователи не смогут получить доступ к открытому прокси-серверу Squid на порту 3128). Также вы можете просто заблокировать порт 3128 следующим образом:

sudo ufw DENY 3128

Но мне больше нравится первый способ, так как он делает систему безопаснее в целом.

Папка /etc/dansguardian/lists содержит все файлы, имеющие отношение к фильтрации содержимого страниц. Внимательно прочтите каждый из этих файлов для того, чтобы получить представление о том, как при помощи DansGuardian организовать ограничение трафика по скорости, а также о том, каким образом смягчить или усилить политики доступа, предлагаемые DansGuardian по-умолчанию. Так как в связке с DansGuardian мы используем ClamAV, следует посмотреть содержимое папки /etc/dansguardian/lists/contentscanners, в которой находятся списки исключений того, что не следует проверять при помощи этого антивируса. По-умолчанию, в этих файлах уже указано несколько исключений, так что следует с ними ознакомится, для того, чтобы понять, подходят они вам или нет!

Настройка автоматического определения прокси-сервера (Web Proxy Auto Detection, WPAD)

На этом этапе, если все прошло удачно, вы сможете перейти в настройки прокси вашего браузера и ввести адрес и порт сервера, который мы только что настроили, и получить защищенное DansGuardian'ом и ClamAV соединение. Мы хотим, чтобы эти настройки совершались у пользователей автоматически, так что мы продолжим с настройкой авто-определения прокси. Заметьте, что этот способ все-таки нуждается в базовой настройке браузера (нужно отметить галочку "Автоматически определять настройки"). Для более прозрачной настройки прокси-сервера необходимо углубиться в "прозрачное" проксирование при помощи Squid, но это выходит за пределы данного руководства.

В сущности, WPAD предоставляет скрипт всем браузерам вашей сети через HTTP-сервер. Так как я хочу, чтобы данный компьютер был сервером "все-в-одном", я продолжу с настройкой веб-сервера (не нужно делать сложных настроек, так как пользователи не будут взаимодействовать с этим веб-сервером напрямую). Если у вас уже есть веб-сервер в локальной сети и клиенты могут подключаться к нему не выходя в Интернет, вы также можете приспособить приведенную ниже конфигурацию для того, чтобы разместить скрипт WPAD на этом сервере.

Веб-сервер, вариант 1 - Apache2

Вначале установим Apache:

sudo apt-get install apache2

Нам необходимо добавить одну строчку в /etc/apache2/httpd.conf, поэтому запустим:

sudo nano /etc/apache2/httpd.conf

Добавьте к файлу следующую строчку (она сопоставит корректный тип mime для скрипта автоматической настройки с расширением .dat):

AddType application/x-ns-proxy-autoconfig .dat

Завершите работу и сохраните файл нажав Ctrl+X и "Y", затем перегрузите Apache (или запустите его, если он не был запущен ранее) при помощи команды:

sudo /etc/init.d/apache2 reload

или

sudo /etc/init.d/apache2 start

Далее, в веб-браузере, перейдите по адресу вашего сервера, по-умолчанию Apache должен отобразить страницу с текстом "It Works!", что говорит о том, что сервер работает!

Веб-сервер, вариант 2 - lighttpd

Идеальным веб-сервером для подобной задачи (если вам не нужно что-то еще), является lighttpd. Я не тестировал lighttpd долго, но следующий раздел поможет вам установить и настроить его для выдачи WPAD скрипта клиентам. Для начала, установим lighttpd:

sudo apt-get install lighttpd

Необходимо сопоставить правильный mime-тип со скриптом конфигурации. Для того, чтобы это сделать отредактируем /etc/lighttpd/lighttpd.conf:

sudo nano /etc/lighttpd/lighttpd.conf

Добавьте следующий раздел в конец файла (в файле, установленном по-умолчанию, не должно быть раздела с типами mime):

mimetype.assign = ( ".dat" => "application/x-ns-proxy-autoconfig" )

Нажмите Ctrl+X и "Y", чтобы сохранить изменения, а затем выполните команду:

sudo /etc/init.d/lighttpd restart

Данная команда необходима для того, чтобы перезагрузить lighttpd. Теперь наберите адрес вашего сервера в веб-браузере и вы должны увидеть страницу, установленную по-умолчанию с сервером lighttpd, что говорит о том, что сервер работает!

Создание скрипта автоматической настройки "wpad.dat"

По-умолчанию, корневым каталогом веб-сервера (как для первого, так и для второго случая) является /var/www. Проделайте следующие операции для того, чтобы создать скрипт автоматической настройки:

sudo touch /var/www/wpad.dat<br>sudo nano /var/www/wpad.dat

Вставьте в этот файл следующий текст:

function FindProxyForURL(url, host)
{
if (isInNet(host, "x.x.x.0", "255.255.255.0"))
return "DIRECT";
else
return "PROXY x.x.x.x:8080";
}

В зависимости от целей, существует множество способов создать подобный скрипт. Скрипт, приведенный выше, необходимо отредактировать так, чтобы он соответствовал вашей конфигурации. Поменяйте IP-адрес после (isInNet(host,... на адрес вашей локальной сети; например, если IP-адреса в вашей сети принадлежат диапазону 192.168.1.x класса C, укажите 192.168.1.0. Также измените маску подсети так, чтобы она соответствовала настройкам вашей сети. Также измените IP-адрес после слова PROXY на IP-адрес вашего прокси-сервера. Не забудьте также изменить номер порта, если вы использовали значение, отличное от 8080.

Скрипт будет передаваться браузеру при его запуске. Если запрошенный адрес является локальным (сервер находится в вашей сети), то запрос к этому адресу пойдет минуя прокси-сервер, в то время как все прочие запросы будут им обработаны. Такое решение обладает одним преимуществом - вы можете использовать этот веб-сервер для прочих целей (и избежать обработки запросов к нему DansGuardian'ом).

На этом этапе, для того, чтобы протестировать работоспособность вашего веб-сервера, у вас должно получиться открыть адрес http://x.x.x.x/wpad.dat в вашем веб-браузере, который предложит вам сохранить скрипт автоматической настройки (здесь x.x.x.x - это адрес вашего веб/прокси-сервера). Если не получится, то убедитесь в том, что wpad.dat находится в корневой папке веб-сервера (/var/www) и в том, что веб-сервер запущен:

sudo /etc/init.d/apache2 start

или

sudo /etc/init.d/lighttpd start

DHCP, вариант 1 - dhcp3-server

В данном разделе мы рассмотрим процесс настройки сервера dhcp3 с тем, чтобы он передавал клиентам информацию о WPAD с арендованным адресом. Если вы уже используете dhcp3 сервер в своей сети, просто следуйте приведенным ниже шагам и адаптируйте их под свою текущую конфигурацию.

Если вы хотите использовать ваш прокси-сервер в качестве сервера dhcp, пожалуйста, воспользуйтесь инструкцией по адресу https://help.ubuntu.com/community/dhcp3-server для того, чтобы сделать базовые настройки и запустить выдачу адресов клиентам. Нам необходимо внести только одно изменение в конфигурацию сервера. Откройте /etc/dhcp3/dhcpd.conf для редактирования при помощи nano:

sudo nano /etc/dhcp3/dhcpd.conf

И добавьте следующую строчку:

option custom-proxy-server "http://x.x.x.x/wpad.dat"

К другим опциям в файле, заменив x.x.x.x IP-адресом веб-сервера, на котором вы разместили WPAD скрипт во время настройки веб-сервера. В качестве примера можно привести базовую для Ubuntu конфигурацию:

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";
option custom-proxy-server "http://x.x.x.x/wpad.dat";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}

Нажмите Ctrl+X и "Y" для сохранения настроек и выхода из nano, после чего перезапустите dhcp3:

sudo /etc/init.d/dhcp3 restart

Обновите адреса ваших клиентов, отметьте галочку "Автоматически определять настройки прокси" в браузерах и попробуйте посетить www.whatismyip.com, где вы должны увидеть приблизительно следующее:

Your IP Address Is: x.x.x.x

Possible Proxy Detected: 1.0 your.fqdn.here:3128 (squid/2.7.STABLE3)

...что говорит о том, что вы подключены через прокси-сервер!

DHCP, вариант 2 - Microsoft DHCP Server

Другим популярным решением для организации автоматического получения адресов является Microsoft DHCP Server (корпоративная сеть, в которой я настраивал эту конфигурацию, использует Windows Server 2003, так что приведенное ниже - мой опыт).

Откройте оснастку с настройками DHCP в Windows Server. Щелкните правой кнопкой по серверу и выберите "Set Predefined Options...", затем "Add" и в появившемся окне выберите следующие значения (информация взята из статьи по адресу http://support.microsoft.com/default.aspx?scid=kb;EN-US;252898):

Name: Proxy Autoconfiguration
Data Type: String
Array (не отмечено)
Code: 252
Description: Proxy Autoconfiguration Option

Нажмите "ОК", после чего, в поле "String:" введите HTTP-адрес веб-сервера, на котором размещен скрипт автоматической настройки, за которым следует пробел, например "http://x.x.x.x/wpad.dat " (но без кавычек). Затем, щелкните правой кнопкой либо на "Scope Options" (если хотите применить настройки к определенному пулу), либо "Server Options" (если хотите указать этот прокси как глобальный) и выберите "Configure Options". Прокрутите ниже, чтобы убедиться в том, что опция 252 отмечена (эта та опция, которую вы только что настроили!), нажмите на "ОК" и закройте конфигурацию DHCP.

Обновите адреса ваших клиентов, настройте браузеры на автоматическое определение прокси-сервера и попробуйте посетить www.whatismyip.com, где вы должны увидеть приблизительно следующее:

Your IP Address Is: x.x.x.x

Possible Proxy Detected: 1.0 your.fqdn.here:3128 (squid/2.7.STABLE3)

...что говорит о том, что вы подключены через прокси-сервер!

Необязательная настройка DNS сервера

Настроенный WPAD должен работать и без этого шага, но если у вас не получилось настроить DHCP, создайте на вашем DNS сервере запись "wpad", указывающую на прокси таким образом, чтобы при попытке открыть адрес http://wpad.your.fqdn.here/ вы были направлены на веб-сервер (который, возможно, совпадает с адресом прокси-сервера). Веб-браузеры, такие как Internet Explorer или Firefox ищут файл wpad.dat по этому адресу, если не получили правильные настройки по DHCP. Разные DNS сервера требуют различной последовательности действий для добавления записи.

Удаленный доступ к прокси-серверу через SSH

Для того, чтобы иметь возможность подключиться к прокси-серверу удаленно, в вашей сети должен быть настроен SSH сервер (что очевидно). Существует множество способов достигнуть этого. Отличный способ можно найти в документации сообщества Ubuntu по адресу https://help.ubuntu.com/community/SSH/OpenSSH/Configuring. Настройка SSH сервера находится за пределами данного руководства, но я советую разделить прокси-сервер и SSH-сервер в том случае, если вы не хотите, чтобы пользователи имели возможность обойти прокси. Размещение двух серверов на одной машине означает, что пользователи смогут воспользоваться незакрытым портом Squid'а, вместо защищенного порта DansGuardian. Разделение серверов означает, что прокси-сервер по-прежнему будет разрешать доступ только к одному порту - 8080. Однако, если этот сервер предназначен для домашнего использования, вы можете настраивать его по вашему желанию. Необходимо помнить о том, что если SSH-сервер и DansGuardian расположены на одной машине, вы должны добавить дополнительную строку "filterip" со значением равным 127.0.0.1 в файл /etc/dansguardian/dansguardian.conf с тем, чтобы DG ожидал подключений, идущих через SSH, по локальному адресу.

Для того, чтобы использовать прокси-сервер удаленно, с вашего компьютера создайте SSH-туннель до прокси-сервера:

ssh -p 22 [email protected] -L 8080:proxy-server-ip:proxy-port -N

Где... "-p 22" указывает на порт по-умолчанию вашего SSH-сервера (измените этот параметр, если порт другой), "username" - ваше имя пользователя на удаленном SSH-сервере, "ssh-server-ip" - IP-адрес удаленного SSH-сервера, "proxy-server-ip" - локальный IP-адрес вашего прокси-сервера (т.е. его внутренний адрес, 192.168.1.чтототам - если SSH-сервер и прокси-сервер установлены на одной машине, используйте 127.0.0.1), "proxy-port" - это... порт прокси-сервера (8080, если вы следуете инструкции).

Теперь вы можете открыть ваш веб-браузер, перейти к окну настройки прокси-сервера, и указать в поле для ввода IP-адреса сервера "localhost" ИЛИ "127.0.0.1", а в поле ввода порта - 8080. Теперь ваш веб-трафик будет пропущен через SSH-туннель к вашему серверу, а затем передан прокси-серверу для защиты серфинга!

Заключение

Остался один последний тест - необходимо убедится в том, что антивирус работает правильно. Перейдите по адресу http://www.eicar.org/anti_virus_test_file.htm и прокрутите содержимое страницы вниз, чтобы попробовать скачать файл EICAR для тестирования антивируса, который сам по себе не является вирусом, но ClamAV должен определить его как вредоносный. Если DansGuardian работает и вы не редактировали конфигурацию по-умолчанию, то вы не сможете скачать некоторые файлы из-за их расширения, о чем DansGuardian сообщит, показав страницу "Доступ запрещен". Для того, чтобы изменить это поведение, отредактируйте запрещающие списки "bannedextensionlist" и "bannedmimetypelist", расположенные в папке /etc/dansguardian/lists. После этого вы все еще не сможете скачать тестовый файл и DansGuardian сообщит о том, что доступ запрещен, так как файл содержит вирус.

После того, как вы выполнили все действия данной инструкции, у вас должен быть настроенный кэширующий прокси-сервер Squid, защищенный возможностями контентной фильтрации DansGuardian'а и антивирусной фильтрацией файлов, скачиваемых из Интернет, которую осуществляет ClamAV. Самое главное, что WPAD позволяет свести конфигурацию браузера на стороне клиента к установке галочки "Автоматически определять прокси-сервер для данной сети" в настройках веб-браузера. И все это достигнуто простой установкой файлов при помощи apt!

Автор оригинала: Mark Coombes

Ссылка на оригинал: http://www.howtoforge.com/squid-proxy-server-on-ubuntu-9.04-server-with-dansguardian-clamav-and-wpad-proxy-auto-detection

Источник: http://www.statoscope.ru/articles/ubuntu_squid_dansguardian_wpad