Серверы proxy уровня приложений
Как обычно, есть несколько пакетов proxy для Linux. Некоторые работают на уровне приложений (SQUID), другие на уровне сессии (SOCKS).
Серверы proxy уровня приложений
SQUID мощный и быстрый объектный сервер кэша. Он обрабатывает сеансы FTP и WWW, что во многом подобно FTP и WWW серверам, но прокси только пишет и читает файлы в кэш-каталоге, что делает его безопасным. Squid работет как не-root пользователь (обычно 'nobody'), так что он довольно надежен. Основная его трудность заключается в правильной настройке. Например, если Squid подключен к Вашей внутренней сети (как обычно имеет место) и internet, это могло бы фактически использоваться, чтобы достигнуть внутренних компьютеров (даже если они используют не-направленные IP-адреса). Следовательно, соответствующая конфигурация Squid очень важна.
Самое лучшее, это настроить Squid на обслуживание только внутренних систем, чтобы снаружи никто не мог его использовать. К тому же, не помешает firewall. Squid может также использовать как ускоритель HTTP (известен также как обратный proxy), возможно Вы имеете NT WWW Server во внутренней сети, которую Вы хотите совместно использовать с миром. В этом случае настройка труднее, но все можно сделать вполне надежно. Squid имеет очень хороший ACL (списки контроля доступа) встроенные в файл squid.conf, что позволяет Вам блокировать доступ по именам, IP, сетям, времени дня, дню недели (возможно, Вы позволяете неограниченное просматривание в уикэнды для людей, которые относятся к Вашей организации). Не забудьте однако, что более сложный ACL, замедляет Squid.
Большинство сетевых администраторов будет хотеть конфигурировать Squid так, чтобы внутренняя сеть могла обращаться к www-сайтам в Internet. В этом примере 10.0.0.0/255.255.255.0 внутренняя сеть, 5.6.7.8 внешний адрес IP-адрес Squid-сервера и 1.2.3.4 www-сервер, который надо увидеть.
Squid должен быть конфигурирован так, чтобы обрабатывать запросы ТОЛЬКО из внутренней сети. В противном случае, любой сможет обратиться на 5.6.7.8 (порт 3128), запросить http://10.0.0.2 (или любую внутреннюю машину) и смотреть www-содержимое внутренней сети. Впишите нечто подобное приведенному ниже примеру в свой squid.conf file:
tcp_incoming_address 10.0.0.1
tcp_outgoing_address 5.6.7.8
udp_incoming_address 10.0.0.1
udp_outgoing_address 5.6.7.8
Это предотвратит от использования Squid, чтобы исследовать внутреннюю сеть.
Но иногда используют Squid для того, чтобы внутренние www-серверы были досьупны из Internet. Например, есть IIS 4.0 www-сервер, который надо выпустить в Internet, но не хочется подключать его напрямую. Используя Squid Вы может предоставлять доступ к нему очень хорошим способом. В этом примере 1.2.3.4 произвольная машина в Internet, 5.6.7.8 внешний IP-адрес Squid-сервера, 10.0.0.1 внутренний IP-адрес и 10.0.0.2 www-сервер во внутренней сети, управляемый IIS 4.0.
Чтобы использовать Squid как ускоритель просто установите http_port в 80 в файле squid.conf:
http_port 3128
Затем установите IP-адреса по-другому:
tcp_incoming_address 5.6.7.8
tcp_outgoing_address 10.0.0.2
udp_incoming_address 5.6.7.8
udp_outgoing_address 10.0.0.2
В заключение Вы должны определить машину, для которой Вы используете ускорение:
httpd_accel_host 10.0.0.2
httpd_accel_port 80
Есть подробное Squid FAQ http://squid.nlanr.net/Squid/FAQ/FAQ.html.
ACL работает с помощью задания и прменения правил, например:
acl internalnet 10.0.0.0/255.0.0.0
http_access allow internalnet
http_access deny all
Здесь определяется "internalnet" для чего-то с адресом 10.0.0.0/255.255.255.0, позволяя этому доступ к http кэширование порта, и запрещая его всем остальным. Не забудьте, что правила читаются в заданном порядке, точно так же как ipfwadm, позволяя Вам делать их очень сложными (и наделать ошибок, если Вы неосторожны). Всегда размещайте общие правила перед специальными. Лучше запретить лишнее. О лишнем запрете Вы узнаете быстрее (обычно от разьяреных пользователей), чем о лишнем разрешении (обычно когда файлы из внутренней сети появятся в Internet). Файл настройки Squid (squid.conf) хорошо прокомментирован и имеет подробную man-страницу.
Другой полезный пример блокирует ads (баннеры и прочие веселые гадости, комх в последнее время развелось немерено), для этого добавьте в squid.conf:
acl ads dstdomain ads.blah.com
http_access deny ads
Объявление acl задает шаблон домена назначения, исходного домена, регулярного выражения и так далее, директива http_access фактически определяет, что делать с этим (deny, allow или что-то еще). Правильная установка этого дает чрезвычайно мощный инструмент, чтобы ограничить доступ к WWW. К сожалению, это имеет одну Ахиллесову пяту: не поддерживает идентификацию пользователя и управление на ее основе (многие UNIX proxy такое умеют). Не забудьте, что подобно любому набору правил они читаются сверху вниз. Squid FAQ есть на http://squid.nlanr.net/Squid/FAQ/FAQ.html.
Одна важная деталь защиты: протоколы Squid. По умолчанию Squid может протоколировать или нет каждый запрос, который обрабатывает (зависит от файла конфигурации), от http://www.nsa.gov/ до http://www.example.org/cgi-bin/access&member=john&password=bob. Вы определенно захотите отключать файлы регистрации доступа, если Вы не хотите иметь позицию наблюдателя за тем, что люди рассматривают в Internet (по закону это сомнительно, возможны БОЛЬШИЕ проблемы!). Директива cache_access_log и нацеливание записей в /dev/null, положат этому конец. Еще одна директива cache_store_log, является полезной для ведения статистики по эффективности Вашего кэша, она не регистрирует кто сделал запрос, просто пишет каково состояние объектов в кэше, так что Вы видите, что изображения на pornographic-сайте обслуживаются неоднократно... Чтобы отключить это, установите в none. cache_log должен вероятно быть оставлен включенным, протокол содержит базисную информацию отладки типа того, когда станция была запущена и когда остановлена, отключить это можно установкой на "/dev/null". Еще один не очень ясно документированный файл протокола задан cache_swap_log. Он хранит запись того, что происходит с кэшем, и также покажет Вам, какие URL посещают (но не кто туда ходит!), установка его на /dev/null не работает (фактически Squid вимательно за этим следит), установка none просто меняет имя файла с log на none. Единственный способ остановить это состоит в том, чтобы связать файл с /dev/null и связать log-last-clean с /dev/null . Итак,
в squid.conf пишем:
cache_access_log /dev/null
cache_store_log none
cache_log /dev/null
и свяжите:
/var/spool/squid/log с /dev/null
/var/spool/squid/log-last-clean с /dev/null
или в каком там каталоге у Вас лежит www-кэш (каталоги с 00 по 0F).
Еще одна важная деталь: ICP (Internet Cache Protocol), компонент Squid. Он нужен при создании наборов или цепочек proxy-серверов. Если сервер один, надо выключить ICP. Для этого просто установите порт ICP в squid.conf не в 3130 (значение по умолчанию): а в 0. Также прикройте firewall порт 3128 (по умолчанию Squid работает с клиентами через него) от доступа из Internet:
ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 3128
ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 3128
ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 3128
или в ipchains:
ipchains -A input -p all -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 3128
ipchains -A input -p all -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 3128
ipchains -A input -p all -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 3128
squidGuard
squidGuard позволяет Вам править списки управления доступом, списки фильтров и переназначать запросы легко и эффективно. Это идеально для управления доступом к WWW и для более специфических задач типа блокирования pornographic содержания. Данное средство просматривает только URL (содержимое не анализируется!), так что для активного содержания это не подходит. squidGuard доступен на http://info.ost.eltele.no/freeware/squidGuard.
Модуль LDAP auth для SQUID
Позволяет проводить авторизацию юзверей через сервер LDAP, но пароли и прочие данные передаются открытым текстом, так что используйте какую-нибудь форму VPN для их защиты. Скачать можно с http://sites.inka.de/ms/python/proxy_auth_ldap.
Cut the crap (CTC) ориентирован на блокировку баннеров и экономию трафика при работе в сети за счет отсечения явно лишних данных. Скачать можно с http://www.softlab.ece.ntua.gr/~ckotso/CTC.
WWWOFFLE хороший proxy для UNIX-систем, обрабатывает HTTP и FTP. Скачать его можно с http://www.gedanken.demon.co.uk/wwwoffle.
SOCKS сервер proxy уровня сессии, обычно используется на firewall из-за хороших возможностей контроля доступа. Приложения должны поддерживать протокол SOCKS, многие популярные web-браузеры, ftp-клиенты и тому подобное имеет такую поддержку. Скачать можно с http://www.socks.nec.com.
Dante свободная начинка популярного сервера SOCKS. Доступен на http://www.inet.no/dante.
DeleGate многопротокольный proxy с поддержкой HTTP, NNTP, FTP, SSL proxying и другого. Имеет серьезные возможности защиты, доступен на http://wall.etl.go.jp/delegate.
Набор proxy, написаных для разных применений vja2@cornell.edu. Поддержижвают UDP, TCP, HTTP, Hand-off (для игры в Ultima Online) и tunneling. Доступны на http://www.home.ctc.shadowlan.net/~vinny/projects/proxy.
Written by Kurt Seifried |