Как готовить кальмара, думаю что не я один сталкивался с задачей настройки Squid’а для разграничения доступа сотрудникам предприятия, но при этом он должен быть «прозрачным». Другими словами конфигурация показанная далее удовлетворяет трём условиям:
- Имеется список запрещенных интернет-ресурсов, доступ к которым закрыт у всех пользователей (Пример: социальные сети);
- Имеется список разрешенных интернет-ресурсов, доступ к которым открыт у всех пользователей (Пример: портал государственных услуг);
- Имеется список ip-адресов пользователей которые должны иметь доступ ко всем интернет-ресурсам кроме входящих в список запрещенных.
Хотелось бы уточнить по последнему пункту, так как шлюз «прозрачный», то использовать доменную авторизацию пользователей мы не можем, по данной причине выбрано разграничение именно по ip-адресам.
В качестве базовой конфигурации использовались материалы из статьи «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86). Так как установка и настройка компонентов в данной статье описаны достаточно подробно, я пропущу данную информацию.
Программное обеспечение использованное мной для тестирование конфигурации:
- Gentoo Linux версии Base System release 2.2;
- Squid 3.5.22;
- OpenSSL 1.0.2j
Итак, файл /etc/squid/squid.conf:
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl CONNECT method CONNECT #Добавление в acl трёх списков: запрещенные, разрешенные и группа расширенного доступа acl denied_urls url_regex "/etc/squid/denied_urls" acl allowed_urls url_regex "/etc/squid/allowed_urls" acl extended_access_group src "/etc/squid/extended_access_group" http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager #Ключевая строчка из-за которой долго ломали голову, так как без нее запрос сертификатов к сайтам # на https не осуществляется. #Разрешаем осуществлять коннект к ресурсу, если https http_access allow localnet CONNECT #Запрещаем всем доступ на запрещенные сайты http_access deny denied_urls #Этим правилом разрешаем всем кто не в группе расширенного доступа ходить только на #разрешенные сайты http_access deny !extended_access_group !allowed_urls http_access allow localnet http_access allow localhost http_access deny all #Обязательно один из портов должен быть в таком виде и являться заглушкой http_port 3130 http_port 3128 intercept https_port 3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER #Правила доступа для ssl acl allowed_urls_ssl ssl::server_name_regex "/etc/squid/allowed_urls" acl denied_urls_ssl ssl::server_name_regex "/etc/squid/denied_urls" acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump terminate denied_ssl ssl_bump splice extended_access_group ssl_bump terminate !allowed_urls_ssl ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB #cache_dir ufs /var/cache/squid 100 16 256 coredump_dir /var/cache/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Перед запуском Squid’а не забываем создать три файла в /etc/squid/. denied_urls и allowed_urls вида:
geektimes.ru habrahabr.ru toster.ru windowsupdate.microsoft.com
И extended_access_group вида:
192.168.1.5 #Иванов И.И. 192.168.1.87 #Петров П.П. 192.168.1.108 #Сидоров С.С.
При обращении по http на запрещенный сайт выдаст стандартную заглушку Squid’а, а по https — «ERR_SSL_PROTOCOL_ERROR».
Спасибо за прочтение статьи.
ссылка на оригинал статьи https://habrahabr.ru/post/314718/
Добавить комментарий