«Прозорий» Squid з розмежуванням доступу



Як готувати кальмара, думаю що не я один стикався з завданням налаштування Squid'а для розмежування доступу співробітників підприємства, але при цьому він повинен бути «прозорим». Іншими словами конфігурація показана далі задовольняє трьом умовам:

  • Є список заборонених інтернет-ресурсів, доступ до яких закритий у всіх користувачів (Приклад: соціальні мережі);

  • Є список дозволених інтернет-ресурсів, доступ до яких відкритий у всіх користувачів (Приклад: портал державних послуг);

  • Є список ip-адрес користувачів, які повинні мати доступ до всіх інтернет-ресурсів, крім тих, що входять в список заборонених.

Хотілося б уточнити по останньому пункту, так як шлюз «прозорий», то використовувати доменну авторизацію користувачів ми не можемо, з даної причини вибрано розмежування саме по ip-адресами.

В якості базової конфігурації використовувалися матеріали зі статті «Прозорий» Squid з фільтрацією HTTPS ресурсів без підміни сертифікатів (x86). Так як установка і налаштування компонентів у даній статті описані досить детально, я пропущу дану інформацію.

Програмне забезпечення використане мною для тестування конфігурації:

  • Gentoo Linux версії Base System release 2.2;
  • Squid 3.5.22;
  • OpenSSL 1.0.2 j
Отже, файл /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».

Спасибі за прочитання статті.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.