Лабораторные работы по ПО/Настройка Proxy-сервера Squid
Прокси-сервер (от англ. proxy — «представитель, уполномоченный») — служба в компьютерных сетях, позволяющая клиентам выполнять косвенные запросы к другим серверам. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, web-страницу), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс, либо возвращает ресурс из собственного кэша.
Основные задачи, решаемые с помощью proxy-сервера:
- Кэширование данных, проходящих через основной сервер сети (это единственный способ кэширования информации)
- Блокировка доступа к нежелательным web-сайтам или нежелаемому контенту (это единственный способ блокировки информации по типу данных или по содержимому)
- Поточная проверка данных, передаваемых в сеть, на вирусы (единственный способ)
- Изменение содержания передаваемой клиенту информации (например, блокировка рекламы, подмена на свой логотип)
Существует большое количество реализаций системы проксирования (3proxy, usergate, kerio и др.). Мы будем рассматривать самый распространенный в Internet прокси-сервер Squid.
Содержание
- 1 Установка Squid
- 2 Базовая настройка Squid
- 3 Проверка работоспособности установленного proxy-сервера
- 4 Запретить доступ к определенному сайту
- 5 Запретить доступ к Internet для определенного компьютера вашей локальной сети
- 6 Запретить загрузки файлов определенного типа
- 7 Выполнить блокировку рекламных банеров
- 8 Обеспечить работу приложений через PROXY-сервер SQUID (ICQ)
- 9 Ограничить скорость доступа
- 10 Ограничить время доступа в Internet
- 11 Презентация по SQUID
- 12 Контрольные вопросы
Установка 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.
В нашем случае 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
Контрольные вопросы
- Назначение PROXY-сервера.
- В каком файле конфигурируется PROXY-сервер?
- В каком файле находится информация о работе PROXY-сервера?
- Что означает параметр acl?
- Что означает параметр src?
- Что означает параметр dst?
- Что означает параметр dstdomain?
- Каким образом можно запретить доступ по контентенту?