squid : Заблокировать адреса подсети или IP-адреса назначения

Вопрос или проблема

Я прочитал много учебников и официальной документации, но предложенный метод не работает для меня.

Я настроил прокси-сервер squid (Squid Cache: Версия 4.10, ubuntu 18.04.4 LTS) в своей организации, и он хорошо работает для моего случая использования. Я столкнулся с двумя проблемами, но сосредоточусь на одной за раз.

Пользователи могут выходить в Интернет через прокси, но из журналов я вижу, что внутренние IP-адреса локальной сети доступны через веб-прокси. Я хочу ограничить пользователей в использовании Интернета, а не внутренних IP-адресов локальной сети. В веб-прокси я установил правило, но ни одно из них не работает.

acl restricted_destination_subnetworks dst 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
acl restricted_destination_IP dst 10.50.21.135

http_access deny restricted_destination_IP http_access deny restricted_destination_subnetworks

Тестирование – С сервера, 10.50.40.18, я запускаю команду ниже, я получаю 200 OK, и я вижу в журнале веб-прокси 200/TCP_MISS.

curl -s -o /dev/null -I -w “%{http_code} \n” -k http://10.50.21.135:8585 200

В идеале, мой запрос curl должен быть заблокирован, но в этом сценарии этого не происходит.

Может кто-то исправить меня, если я сделал что-то неправильно?

Полная конфигурация

acl allowed_subnetworks src "/etc/squid/allowed_subnetworks_list.txt"

acl restricted_destination_subnetworks dst 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16  
acl restricted_destination_IP dst 10.50.21.135

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice all
acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "это" сеть (LAN)
acl localnet src 10.0.0.0/8     # RFC 1918 локальная частная сеть (LAN)
acl localnet src 100.64.0.0/10      # RFC 6598 общая адресная область (CGN)
acl localnet src 169.254.0.0/16     # RFC 3927 link-local (напрямую подключенные) устройства
acl localnet src 172.16.0.0/12      # RFC 1918 локальная частная сеть (LAN)
acl localnet src 192.168.0.0/16     # RFC 1918 локальная частная сеть (LAN)
acl localnet src fc00::/7           # RFC 4193 локальная частная сеть
acl localnet src fe80::/10          # RFC 4291 link-local (напрямую подключенные) устройства
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  # не зарегистрированные порты
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     # многоязычный http
acl CONNECT method CONNECT
    http_access allow allowed_subnetworks
    http_access deny restricted_destination_IP
    http_access deny restricted_destination_subnetworks 
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
 http_access allow localhost
  http_access deny all
http_port 3128 ssl-bump
cache_dir ufs /var/spool/squid 3000 16 256
coredump_dir /var/spool/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

Спасибо

Порядок ваших строк http_access неправильный. SecurityPitfalls

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager

#
# ВСТАВЬТЕ СВОЕ СОБСТВЕННОЕ ПРАВИЛО ЗДЕСЬ, ЧТОБЫ ДОПУСТИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
http_access allow allowed_subnetworks
http_access deny restricted_destination_IP
http_access deny restricted_destination_subnetworks 

#
# ВСТАВЬТЕ СВОЕ СОБСТВЕННОЕ ПРАВИЛО ПЕРЕД ЭТИМИ, ЧТОБЫ ДОПУСТИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
http_access allow localhost
http_access deny all

Чтобы заблокировать назначение, вам нужно изменить src на dst

acl localnet3 dst 192.168.5.1

а затем

http_access allow localnet0 !localnet3

Ответ или решение

Чтобы заблокировать доступ к определённым подсетям или IP-адресам в Squid, необходимо правильно настроить ACL (Access Control Lists) и порядок правил http_access. Ваш текущий подход имеет несколько аспектов, которые необходимо исправить.

1. Порядок правил http_access

Порядок определяет как Squid обрабатывает запросы. Squid читает правила сверху вниз, и когда запрос попадает под одно из правил, он больше не будет проверяться на последующие правила. В вашем случае порядок правил должен быть следующим:

http_access allow allowed_subnetworks
http_access deny restricted_destination_IP
http_access deny restricted_destination_subnetworks 
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all

2. Правильное использование ACL

Убедитесь, что вы правильно используете ACL для блокировки доступа к внутренним IP-адресам. В вашем случае, вы уже создали ACL для restricted_destination_subnetworks и restricted_destination_IP. Это правильно, но порядок их применения имеет приоритет:

Пример настроек ACL:

acl allowed_subnetworks src "/etc/squid/allowed_subnetworks_list.txt"

acl restricted_destination_subnetworks dst 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16  
acl restricted_destination_IP dst 10.50.21.135

3. Проверка работы правил

Чтобы убедиться, что ваши настройки работают, используйте следующие команды для тестирования:

curl -s -o /dev/null -I -w "%{http_code}\n" -k http://10.50.21.135:8585

Если настройка ACL выполнена правильно, этот запрос должен возвращать ошибку 403 Forbidden. Если вы по-прежнему получаете 200 OK, это указывает на неправильный порядок правил.

4. Общие рекомендации

  • Логи: Посмотрите логи Squid, чтобы понять, какие правила применяются к запросам. Это поможет в диагностике.
  • Переписывание ACL: Если вы хотите более гибко управлять доступом, возможно, вам нужно создать дополнительные ACL для других сегментов сети, чтобы четко контролировать доступ.
  • Избегайте пробелов и ошибок в синтаксисе: Убедитесь, что в ваших файлах конфигурации нет пробелов или синтаксических ошибок.

Заключение

Правильная настройка и порядок ACL являются ключевыми для управления доступом в Squid Proxy. Проверка логов поможет вам диагностировать возможные проблемы, а последовательность правил http_access обеспечивает правильное применение механизма контроля доступа. Убедитесь, что вы используете актуальные версии документации и следите за обновлениями для решения возможных проблем.

Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...