Конфигурация прокси-сервера Squid на Ubuntu 22.04 в DMZ для отключенной среды

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

У меня есть инфраструктура с DMZ, где находится прокси-сервер Squid. У меня есть внутренние машины, которые выходят через этот прокси. Конфигурация выглядит следующим образом.

# Пример правила, разрешающего доступ из ваших локальных сетей.
# Адаптируйте, чтобы перечислить ваши (внутренние) IP-адреса, откуда разрешено
# просматривать интернет
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 локальные (подключенные напрямую) машины
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 локальные (подключенные напрямую) машины

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

# Запретить запросы к определённым небезопасным портам
http_access deny !Safe_ports

# Запретить CONNECT к другим, кроме безопасных SSL портов
http_access deny CONNECT !SSL_ports

# Разрешить доступ к cachemgr только с localhost
http_access allow localhost manager
http_access deny manager

# ВСТАВЬТЕ СВОИ СОБСТВЕННЫЕ ПРАВИЛА ЗДЕСЬ, ЧТОБЫ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
include /etc/squid/conf.d/*.conf

# Например, для разрешения доступа из ваших локальных сетей вы можете раскомментировать
# следующее правило (и/или добавить правила, которые соответствуют вашему определению "локального"):
# http_access allow localnet
http_access allow localhost

# ПРАВИЛО ИЛИ ACL ДЛЯ ЗАГРУЗОК
#http_access allow all
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates

# И, наконец, запретить весь другой доступ к этому прокси
http_access deny all

# ВСТАВЬТЕ СВОИ СОБСТВЕННЫЕ ПРАВИЛА ЗДЕСЬ, ЧТОБЫ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
include /etc/squid/conf.d/*.conf

# Например, для разрешения доступа из ваших локальных сетей вы можете раскомментировать
# следующее правило (и/или добавить правила, которые соответствуют вашему определению "локального"):
# http_access allow localnet
http_access allow localhost

# ПРАВИЛО ИЛИ ACL ДЛЯ ЗАГРУЗОК
#http_access allow all
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates

# И, наконец, запретить весь другой доступ к этому прокси
http_access deny all

# Squid обычно слушает на порту 3128
http_port 3128

# Добавьте любые ваши собственные записи refresh_pattern выше этих.
#
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
# пример шаблона для deb пакетов
#refresh_pattern (\.deb|\.udeb)$   129600 100% 129600
refresh_pattern .       0   20% 4320

При попытке обновить машину я получаю следующие ошибки

не удалось получить http://archive.ubuntu.com/ubuntu/dist/jammy-security/inrelease 403 Запрещено IP...

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

Настройка Squid Proxy на Ubuntu 22.04 в DMZ для отключенной среды

Введение

Настройка Squid Proxy в защищённой DMZ (демилитаризованной зоне) предназначена для обеспечения безопасного доступа внутренних машин к интернет-ресурсам. В данной инструкции мы сосредоточимся на корректной конфигурации Squid Proxy в окружении, изолированном от внешних сетей, выявляя возможные проблемы и предлагая решения.

Основные моменты конфигурации

Из приведенной конфигурации видно, что основной упор сделан на настройки доступа для внутренних сетей. Однако ошибка 403 Forbidden при попытке обновления системы указывает на недостаточное разрешение для доступа к обновлениям. Рассмотрим ключевые аспекты конфигурации и нужные изменения.

  1. ACL и права доступа:

    • Вы определяете список локальных сетей через acl localnet, что правильно, но нужно учитывать, что если внутренняя сеть не входит в указанные диапазоны, доступ будет заблокирован.
    • Если ваши внутренние IP-адреса находятся вне указанных диапазонов, добавьте новые правила, например:
      acl localnet src 192.168.1.0/24  # Добавьте ваш внутренний диапазон
  2. HTTP-доступ:

    • Текущие правила включают доступ только для localhost и загрузки обновлений:
      http_access allow all_updates

      Убедитесь, что http_access allow localnet либо подобные правила для вашей локальной сети активированы. Добавьте следующее:

      http_access allow localnet
    • Убедитесь, что порядок строк имеет значение, подчиняйтесь принципу, что более специфичные правила должны находиться выше.
  3. Обновление параметров:

    • Рассмотрим, что ваше окружение отключено, вам необходимо поддерживать актуальные пакетные обновления. Для этого:
      • Заранее загрузите пакеты обновлений в локальное хранилище.
      • Настройте регулярные обновления для Squid, чтобы кэшировать актуальные данные.
  4. Список обновлений:

    • Файл /etc/squid/all_updates должен содержать все необходимые адреса, которые вы хотите разрешить. Убедитесь, что он правильно настроен и содержит такие адреса, как:
      http://archive.ubuntu.com/ubuntu/

      Возможно, вам также придётся добавить адреса для других репозиториев Ubuntu.

  5. Проверка разрешений:

    • Убедитесь, что ваш Squid действительно отвечает на стандартных портах (по умолчанию 3128). Проверьте файрволл на вашем сервере DMZ и убедитесь, что доступ к Squid открыт из локальной сети.

Проверка конфигурации

После внесения изменений перезапустите Squid для применения конфигурации:

sudo systemctl restart squid

Затем проверьте логи Squid на наличие ошибок:

tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log

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

Заключение

Конфигурация Squid Proxy в DMZ для отключенной среды требует тщательной настройки ACL и правил доступа. Предварительная диагностика, включая проверку диапазонов IP и правильности указанных репозиториев, является критически важной. Применение данных рекомендаций позволит вам избежать ошибок типа 403 Forbidden и обеспечить стабильный доступ к обновлениям для ваших внутренних систем.

Следуя вышеописанным шагам, вы сможете максимально эффективно настроить Squid Proxy в вашей изолированной среде, что обеспечит важный уровень безопасности и управляемости.

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

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