Безопасность · 4 min read · Jan 26, 2026
Безопасный и приватный просмотр с помощью Squid
Версия 1.0
Автор: Joe Topjian
Просмотр сайта, который поддерживает SSL, - это определенный способ убедиться, что никто не может подглядывать за тем, что вы делаете, - что является хорошей вещью, когда вы делаете что-то личное, например, проверяете электронную почту в интернете или покупаете что-то на amazon. Но если вы просто делаете такие вещи, как чтение ежедневных новостей или проверка времени сеансов фильмов, насколько важна конфиденциальность? Ультра-параноики дадут решительное “да” на этот вопрос, в то время как большинство людей просто пожмут плечами. Я нахожусь между этими двумя сторонами. Дома, когда я читаю новости, мне все равно, зашифрован ли трафик или нет. Однако, когда я нахожусь в общественном Wi-Fi, это немного беспокоит меня.
Большинство общественных мест, которые позволяют доступ в интернет, абсолютно не имеют никакой безопасности. Нужен хороший способ открыть глаза? В следующий раз, когда вы будете в общественной точке доступа, возьмите копию инструментов dsniff.
Эта статья покажет вам способ защитить себя от чего-то подобного - в некотором роде. Эта статья покажет вам только, как защитить свой веб-трафик. Если вы все равно решите поговорить с вашим CEO через AIM о каком-то ультра-секретном продукте, который выйдет на следующей неделе, ожидая вашего следующего рейса, это вас не спасет. Squid может, конечно, проксировать запросы для других приложений, кроме HTTP, но я буду рассматривать только HTTP. Возможно, я рассмотрю другие приложения в другой статье.
Хорошо, давайте начнем. Вот что нам нужно:
- Сервер, работающий на Squid в какой-то другой сети.
- Ноутбук с поддержкой ssh и перенаправления портов.
Что мы собираемся сделать, так это настроить сервер Squid где-то вне сети, в которой мы находимся в данный момент. Squid будет принимать соединения только от самого сервера - никаких внешних соединений. Так как же мы его используем? Мы создадим SSH-туннель к нему. Как только туннель будет создан, мы просто настроим наш веб-браузер на использование прокси-сервера с адресом нашего SSH-туннеля. Теперь любой веб-трафик, выходящий из нашего ноутбука на наш сервер Squid, будет зашифрован.
Но что насчет трафика от сервера Squid к самой веб-странице? Эта информация, к сожалению, не будет зашифрована. Но, по крайней мере, мы вышли из незащищенной локальной сети безопасно.
Я буду использовать Debian Sarge для сервера Squid, но вы можете использовать любую дистрибуцию, которую хотите. После установки Squid конфигурация будет точно такой же. Чтобы установить Squid на Debian, просто выполните:
apt-get install squid
По умолчанию конфигурация для Debian (и, возможно, других дистрибуций тоже - лучше проверить!) позволяет соединения только с локального хоста. Это ничему не вредит, поэтому мы можем оставить это как есть. Однако нам все равно нужен способ подключиться извне. Для этого мы добавим acl, который запросит у нас пароль, и если мы аутентифицированы, он позволит нам войти. Мы добавим его прямо перед частью “deny all”, так что это будет выглядеть примерно так:
acl localhost src 127.0.0.1/255.255.255.255
http_access allow localhost
http_access allow password
http_access deny all
По умолчанию Squid слушает на порту 3128. Лично мне больше нравится 8080, поэтому мы изменим его на:
http_port 8080
Далее нам нужно настроить аутентификацию для Squid. Существует множество различных методов аутентификации, которые идут с пакетом Debian, и их можно просмотреть с помощью:
ls /usr/lib/squid/*auth
Мы будем использовать модуль pam_auth. Это позволит любому, у кого есть учетная запись оболочки, также использовать сервер Squid. Найдите раздел auth_param в конфигурации и добавьте эти строки:
auth_param basic program /usr/lib/squid/pam_auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Далее найдите эту строку и раскомментируйте ее:
acl password proxy_auth REQUIRED
Теперь создайте модуль pam с именем /etc/pam.d/squid, который содержит:
auth required /lib/security/pam_unix.so
account required /lib/security/pam_unix.so
Вам нужно будет дать этому файлу доступ SUID, поэтому выполните chmod 4755. Да, я знаю, что это не лучший способ сделать это, но это наименее сложный. Вы можете самостоятельно изучить другие методы.
Squid должен быть полностью настроен и готов к работе. Далее убедитесь, что у вас есть доступ к серверу через SSH. Не имеет значения, используете ли вы пароль, фразу-пароль или пустую фразу-пароль. Чтобы настроить туннель, выполните:
ssh -L 8080:squidhost:8080 username@squidhost
Вас попросят о аутентификации, и если вы успешны, будет выглядеть так, как будто вы вошли в удаленный компьютер. Если вы откроете другое окно и наберете
telnet localhost 8080
Вы увидите, что теперь вы общаетесь с squid на удаленном сервере.
Наконец, скажите вашему браузеру использовать SSH-туннель в качестве прокси. Я не буду рассматривать каждый отдельный браузер здесь, но в основном это будет где-то в настройках. Для имени хоста просто введите localhost, а для порта введите 8080.
Теперь, когда вы будете просматривать веб-страницу, вас попросят о аутентификации. Введите свои учетные данные оболочки, и вы будете готовы к работе. Браузер может выдать предупреждение о аутентификации через открытый текст - игнорируйте его. Он будет проходить через наш SSH-туннель, поэтому он будет зашифрован.
Поздравляю! Теперь вы можете серфить в интернете, не беспокоясь о том, что кто-то подглядывает за вами. Если у кого-то есть комментарии, исправления или способы улучшить этот метод, пожалуйста, дайте мне знать! Оригинальное местоположение этого документа:
Get new posts in your inbox
No spam. Unsubscribe anytime.