
Я пытаюсь настроить 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
.