Руководство администратора Linux по безопасности

       

SQUID


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
.


Содержание раздела