Bug 47423 - Невозможно получить доступ к cache manager из под squidclient
Summary: Невозможно получить доступ к cache manager из под squidclient
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: squid (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Egor Ignatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-31 16:35 MSK by Vladislav Glinkin
Modified: 2023-10-11 15:58 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2023-08-31 16:35:04 MSK
Платформы:
Workstation KDE 10.1
Server 10.1
Education KDE 10.1
Workstation 10.1
Education 10.1

Версия пакета:
squid-6.1-alt1.x86_64

Шаги воспроизведения:
1) Используем стандартный конфигурационный файл
# cp /etc/squid/squid.conf /etc/squid/squid.conf.default
2) Получим информацию через менеджер (с локального хоста)
# squidclient mgr:info

Фактический результат:
HTTP/1.1 403 Forbidden
Server: squid/6.1
Mime-Version: 1.0
Date: Thu, 31 Aug 2023 13:30:49 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3873
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
.....

Ожидаемый результат:
HTTP/1.1 200 OK
Server: squid/4.15
Mime-Version: 1.0
Date: Thu, 31 Aug 2023 13:30:20 GMT
Content-Type: text/plain;charset=utf-8
Expires: Thu, 31 Aug 2023 13:30:20 GMT
Last-Modified: Thu, 31 Aug 2023 13:30:20 GMT
.....

Как видно из примера, на версии пакета squid-4.15-alt1.x86_64 в p10 ошибка не воспроизводится.

Стандартный конфигурационный файл позволяет получать доступ к менеджеру только с локального хоста.
Comment 1 Vladislav Glinkin 2023-08-31 16:37:20 MSK
> Шаги воспроизведения:
> 1) Используем стандартный конфигурационный файл
> # cp /etc/squid/squid.conf /etc/squid/squid.conf.default

* # cp /etc/squid/squid.conf.default /etc/squid/squid.conf
Comment 2 Egor Ignatov 2023-08-31 17:31:18 MSK
Баг в апстриме уже есть
https://github.com/squid-cache/squid/pull/1406
Comment 3 Repository Robot 2023-09-25 12:41:26 MSK
squid-6.3-alt1 -> sisyphus:

 Mon Sep 18 2023 Egor Ignatov <egori@altlinux> 6.3-alt1
 - 6.3
 - Fix squidclient couldn't access mgr:info (closes: #47423)
Comment 4 Alexander Makeenkov 2023-10-10 17:31:28 MSK
(Ответ для Vladislav Glinkin на комментарий #0)
> Стандартный конфигурационный файл позволяет получать доступ к менеджеру
> только с локального хоста.

squid-6.3-alt1.x86_64

Исправлено только для локального подключения.

Если сервер настроить так:

# export MY_IP="$(hostname -i)"

# apt-get install squid squid-helpers

# cat > /etc/squid/squid.conf <<EOF
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r
auth_param negotiate children 10
auth_param negotiate keep_alive on
acl AUTHENTICATED proxy_auth REQUIRED
acl Safe_ports port 631    # CUPS
acl Safe_ports port 280    # HTTP-MGMT
acl Safe_ports port 210    # WAIS
acl Safe_ports port 591    # Filemaker
acl SSL_ports port 443    # HTTPS (C)
acl Safe_ports port 488    # GSS-HTTP
acl Safe_ports port 21    # FTP
acl Safe_ports port 70    # GOPHER
acl Safe_ports port 777    # Multilingual HTTP
acl Safe_ports port 80    # HTTP
acl Safe_ports port 873    # RSYNC
acl Safe_ports port 1025-65535   # Other ports
acl SSL_ports port 563    # SNEWS (C)
acl Safe_ports port 901    # SWAT
http_access deny !Safe_ports !SSL_ports
acl CONNECT method CONNECT
http_access deny CONNECT !SSL_ports
acl our_networks src 127.0.0.0/8    # LOCALHOST
acl our_networks src $MY_IP/21    # Enter your ip-address
http_access deny !our_networks
http_access allow all
http_access deny all
http_port 3128
EOF

# systemctl start squid

И на клиенте выполнить:

# squidclient --host SQUID_IP --port 3128 mgr:info

То получим ошибку:

HTTP/1.1 403 Forbidden
Server: squid/6.3
Mime-Version: 1.0
Date: Tue, 10 Oct 2023 13:59:51 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3925
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
Cache-Status: server-10-1-x86-64-minimal-20231010.localdomain;detail=mismatch
Via: 1.1 server-10-1-x86-64-minimal-20231010.localdomain (squid/6.3), 1.1 server-10-1-x86-64-minimal-20231010.localdomain (squid/6.3)
Cache-Status: server-10-1-x86-64-minimal-20231010.localdomain;detail=no-cache
Connection: close

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta type="copyright" content="Copyright (C) 1996-2023 The Squid Software Foundation and contributors">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ERROR: The requested URL could not be retrieved</title>

В логах на сервере:

TCP_MISS/403 4341 GET http://server-10-1-x86-64-minimal-20231010.localdomain:3128/squid-internal-mgr/info - HIER_NONE/- text/html
TCP_MISS/403 4480 GET http://11.77.11.77:3128/squid-internal-mgr/info - HIER_DIRECT/11.77.11.77 text/html

По данным шагам ошибка не воспроизводится в p9 с версией squid-4.13-alt1 (в p10 уже 6.3 и тоже воспроизводится)
Comment 5 Egor Ignatov 2023-10-11 12:28:32 MSK
(In reply to Alexander Makeenkov from comment #4)
> (Ответ для Vladislav Glinkin на комментарий #0)
> > Стандартный конфигурационный файл позволяет получать доступ к менеджеру
> > только с локального хоста.
> 
> squid-6.3-alt1.x86_64
> 
> Исправлено только для локального подключения.

Не совсем так. На данный момент запрещен доступ по конкретному ip-адресу, если сервер слушает по всем интерфейсам. При этом все работает, если обращаться по hostname. Апстрим еще не определился сохранять старое поведение или нет: https://github.com/squid-cache/squid/pull/1406#discussion_r1310360185
Comment 6 Alexander Makeenkov 2023-10-11 15:58:02 MSK
(Ответ для Egor Ignatov на комментарий #5)
> При этом все работает, если обращаться по hostname.

Подтверждаю, работает так:

# squidclient --host squid-server --port 3128 mgr:info

Только на сервере имя хоста тоже должно быть обязательно squid-server, иначе не работает.

Спасибо.