Лабораторные работы по ПО/Настройка Proxy-сервера Squid

Материал из wiki.nntc.nnov.ru
Версия от 07:02, 17 апреля 2010; Gumanoed (обсуждение | вклад) (Запретить доступ к Internet для определенного компьютера вашей локальной сети)
Перейти к навигации Перейти к поиску

Прокси-сервер (от англ. proxy — «представитель, уполномоченный») — служба в компьютерных сетях, позволяющая клиентам выполнять косвенные запросы к другим серверам. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, web-страницу), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс, либо возвращает ресурс из собственного кэша.

Основные задачи, решаемые с помощью proxy-сервера:

  • Кэширование данных, проходящих через основной сервер сети (это единственный способ кэширования информации)
  • Блокировка доступа к нежелательным web-сайтам или нежелаемому контенту (это единственный способ блокировки информации по типу данных или по содержимому)
  • Поточная проверка данных, передаваемых в сеть, на вирусы (единственный способ)
  • Изменение содержания передаваемой клиенту информации (например, блокировка рекламы, подмена на свой логотип)

Существует большое количество реализаций системы проксирования (3proxy, usergate, kerio и др.). Мы будем рассматривать самый распространенный в Internet прокси-сервер Squid.

Установка Squid

Как и другие программы в пакетных дистрибутивах Linux, squid устанавливается с помощью пакетного менеджера из репозитория.

Вам нужно проверить подключен ли репозиторий и дать команду обновить список доступных пакетов:

sudo aptitude update

Далее, даем команду для установки прокси-сервера squid

sudo aptitude install squid

Базовая настройка Squid

Для правильной работы proxy-сервера Squid вам понадобится сделать базовые настройки в файле /etc/squid/squid.conf

sudo nano /etc/squid/squid.conf


Вам нужно найти и проверить следующие параметры:

Порт, по которому будет доступен ваш proxy-сервер

http_port 3128


Адрес DNS сервера (сервера преобразования имен). В некоторых случая полезно указать этот параметр прямо в конфигурационном фале.

dns_nameservers 192.168.10.1


Имя вашего proxy-сервера, которое будет отображаться в сообщениях об ошибках

visible_hostname http-proxy


Сделав эти настройки перезапустите ваш proxy-сервер:

sudo /etc/init.d/squid restart


Проверка работоспособности установленного proxy-сервера

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

FireFox proxy configuration.jpg

В нашем случае web-браузером будет FireFox.

  • Откройте меню Правка -> Настройки
  • Перейдите в раздел Дополнительно
  • Закладка Сеть
  • Нажмите кнопку Настроить
  • В появившемся окне укажите "Использовать Proxy-сервер"
  • Введите ip адрес вашего proxy-сервера и укажите порт, который вы указывали в параметре http_port при настройке squid


Теперь попробуйте ввести любой интернет адрес и посмотрите на результат.

Если вы получаете ответ от Proxy-сервера типа:

  • Access Denied - настроки вашего прокси запрещают доступ с вашего рабочего компьютера к ресурсам интернет
  • Can not retrieve address - проверьте параметр dns_nameservers
  • Cannot access site - существует проблема на сегменте подключения вашего proxy-сервера к интернет


При появлении предупреждения о запрете доступа ("access denied") сного вернуться к настройке вашего proxy-сервера squid

sudo nano /etc/squid/squid.conf

Доступ к Internet-ресурсам в proxy-сервере squid организуется через ACL листы. Описание правил доступа похоже не программирование:

1. Вы описываете переменную и присваиваете ей значение

acl NET155 src 192.168.155.0/255.255.255.0

2. Далее, вы описываете правила доступа к ресурсам Internet для этой переменной

http_access allow NET155

Все правила добавляются перед (до) параметра запрещения доступа

http_access deny all

Все правила доступа проверябтся последовательно и если вы уберете строку http_access deny all либо добавите правила разрешения после нее - ваш proxy-сервер будет работать не так, как вы запланировали.

Запретить доступ к определенному сайту

Одной из основных задач, которая решается только с помощью proxy-сервера - блокировка доступа к определенному web-сайту.

Попытка блокировки доступа к сайту средствами iptables приведет к необходимости выяснения всех ip-адресов соответствующих доменному имени блокируемого сайта (firewall работают на сетевом уровне стека протокола TCP/IP и не имеют доступа к адресам сайтов внутри IP пакетов).

Нашей задачей будет заблокировать доступ к сайту linux.org.ru.

Как было упомянуто ранее, все правила Squid начинаются с acl записи описания переменной. Опишем переменную для адреса блокируемого сайта.

acl  BlockSite  dstdomain  .linux.org.ru 

Здесь:

  • BlockSite - имя "переменно", которое мы будет использовать в дальнейшем в правилах запрещения либо разрешения доступа. Имя переменной выбирается по вашему выбору. Учитывайте, лишь что регистр букв важен (большие и малые буквы различаются).
  • dstdomain - тип "переменной", в данном случае - имя домена. Существуют так же типы: dst - ip-адрес; url_regex - список адресов сайтов с регулярными выражениями и т.д.
  • .linux.org.ru - адрес того сайта, к которому блокируем доступ. Точка в начале означает что доступ будет блокироваться и к www.linux.org.ru и к www1.linux.org.ru и к ftp.linux.org.ru и т.д.

Описав "переменную" с адресом сайта мы можем добавить правило для блокировки.

http_access   deny   all   BlockSite

Здесь:

  • deny - тип действия, в данном случае запрет доступа. allow - разрешение доступа.
  • all - кому запрещать доступ. Если вы поищите в конфигурационном файле /etc/squid/squid.conf по строке "acl all" то найдете строку "acl all src 192.168.0.0/16". Переменная all символизирует весь диапазон IP-адресов
  • BlockSite - куда запретить доступ компьютерам из списка "all". В нашем случае, на сайт .linux.org.ru

В конфигурационный файл /etc/squid/squid.conf, после окончания существующих acl записей, нужно добавить следующие строки:

sudo nano /etc/squid/squid.conf
...
acl  BlockSite  dstdomain  .linux.org.ru .lug.nnov.ru
http_access   deny   all   BlockSite

После этого сохраните файл и перезапустите Squid

/etc/init.d/squid restart

Теперь в настроенном web-браузере на вашем компьютере введите адрес linux.org.ru и посмотрите на результат.

Если все настроено верно то при просмотре файла /var/log/squid/access.log вы увидите что то вроде:

tail /var/log/squid/access.log
...
271423496.478      0 192.168.1.60 TCP_HIT/200 10584 GET http://css.yandex.net/css/search/f9/_search.css - NONE/- text/css
1271423496.501     20 192.168.1.60 TCP_HIT/200 28915 GET http://css.yandex.net/css/search/f9/_search.js - NONE/- application/x-javascript
1271423496.543      0 192.168.1.60 TCP_HIT/200 1849 GET http://lego.static.yandex.net/2.1/common/block/b-head-logo/b-head-logo.png - NONE/- image/png
1271423496.673      0 192.168.1.60 TCP_HIT/200 834 GET http://suggest.yandex.ru/jquery.crossframeajax.html - NONE/- text/html
1271423496.696    107 192.168.1.60 TCP_MISS/200 567 GET http://www.tns-counter.ru/V13a****yandex_ru/ru/CP1251/tmsec=yandex_serp/0 - DIRECT/217.73.200.169  image/gif
1271423496.720    108 192.168.1.60 TCP_MISS/302 352 GET http://kiks.yandex.ru/su/ - DIRECT/77.88.21.143 -
1271423496.734    118 192.168.1.60 TCP_MISS/200 532 GET http://mc.yandex.ru/watch/731962 - DIRECT/77.88.21.90 image/gif
1271423496.743      8 192.168.1.60 TCP_HIT/200 2026 GET http://kiks.yandex.ru/system/fc06.html - NONE/- text/html
1271423496.767     23 192.168.1.60 TCP_HIT/200 1834 GET http://kiks.yandex.ru/system/fc06.swf - NONE/- application/x-shockwave-flash

По логу видно:

  • с какого IP был запрос на доступ к сайту
  • какой ответ был получен при операции (TCP_HIT/200 - код 200 - все нормально)
  • объем трафика при доступе к сайту
  • к какому сайту было обращение

Если вы видите строку

1271423496.734    118 192.168.1.60 TCP_MISS/200 532 GET http://linux.org.ru - DIRECT/217.76.32.61 text/html

Это значит что все отлично работает.

Запретить доступ к Internet для определенного компьютера вашей локальной сети

Сразу после установки Squid настроен по принципу "запрещено все, что не разрешено". В правилах доступа присутствует только:

acl all src 0.0.0.0/0.0.0.0 
...
http_access deny all

Что означает запрет доступа к интернет через Squid для всех IP.

При настройке Squid вам следует придерживаться принципа "запрещено все что не разрешено" и добавлять разрешение на доступ в Internet лишь для определенных компьютеров либо диапазонов IP-адресов.

В начале лабораторной работы мы разрешили доступ к интернет для компьютеров из подсети 192.168.155.0/24. Давайте запретим доступ к сайту linux.org.ru с компьютера 192.168.155.5 (используйте ip вашего компьютера).

Запретить загрузки файлов определенного типа

Выполнить блокировку рекламных банеров

Обеспечить работу приложений через PROXY-сервер SQUID (ICQ)

Ограничить скорость доступа

Ограничить время доступа в Internet

Презентация по SQUID

media:Squid-presentation.odp

Контрольные вопросы

  1. Назначение PROXY-сервера.
  2. В каком файле конфигурируется PROXY-сервер?
  3. В каком файле находится информация о работе PROXY-сервера?
  4. Что означает параметр acl?
  5. Что означает параметр src?
  6. Что означает параметр dst?
  7. Что означает параметр dstdomain?
  8. Каким образом можно запретить доступ по контентенту?