Linux - Squid на локальной машине для управления исходящим трафиком

Linux - Squid на локальной машине для управления исходящим трафиком

Я пытаюсь настроить squid на своем компьютере, чтобы контролировать исходящий трафик только с этого компьютера. Если я правильно понимаю, squid работает как пользователь "squid" на большинстве дистрибутивов Linux (у меня Fedora, если это имеет значение?).

Я настроил iptables на отбрасывание всех исходящих пакетов, кроме пакетов с uid 0 и uid 23 (root и squid).

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -m owner --uid-owner 0 -j ACCEPT
-A OUTPUT -m owner --uid-owner 23 -j ACCEPT
-A OUTPUT -j DROP
COMMIT

Затем я хочу вручную ввести информацию о прокси-сервере squid в браузер для каждой локальной учетной записи пользователя (поэтому я не думаю, что мне нужна прозрачная настройка). Если возможно, я бы хотел, чтобы для подключения к squid требовался пользователь/пароль, чтобы запретить пользователям доступ в Интернет, кроме как через прокси-сервер squid?

Мой текущий squid.conf выглядит следующим образом, но он вообще не работает и, очевидно, не включает требования пользователя/пароля:

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 CONNECT method CONNECT
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
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 .   

Достижимо ли то, что я пытаюсь сделать, и правильным ли путем я это делаю?

Будет ли работать то, что я сделал с iptables?

Я понимаю, что это не то, что я смогу правильно настроить за 10 минут, поэтому любая помощь/указания на руководства или даже альтернативные решения, как этого добиться, приветствуются.

решение1

Скорее всего, вам придется открыть доступ как минимум к DNS для других программ.

У Squid есть модуль аутентификации, но в вашем случае он вам не нужен. Поскольку только Squid может получить доступ к сети, все пользователи будут вынуждены его использовать.

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

Существует wpad.datмеханизм настройки прокси-серверов, но я не использовал его так, как вы предполагаете.

Я думаю, вы обнаружите, что многие службы используют порты, не указанные в списке, и работа в Интернете будет не очень удобной.

Поскольку вы, судя по всему, не блокируете ни один сайт, может быть проще ограничить порты с помощью iptables.

Связанный контент