Установка и настройка прокси сервера Squid и Stunnel

Установка и настройка прокси сервера Squid и Stunnel

Добрый день всем, кто оказался на данном сайте. Сегодня мы рассмотрим как установить и настроить наш собственный прокси сервер. Но, это будет не просто прокси сервер, а он будет шифроваться с помощью Stunnel. А так же вход будет только по сертификатам которые мы сгенерируем. Меня на эту идею подталкнула другая статья. Прочитав ее, я решил что можно в ней кое что изменить, а именно, добавить шифрование с помощью Stunnel. Что это даст? Наш трафик будет выглядеть как обычный TLS. Что не вызовет подозрений при просмотре нашего подключения. А также изменить некоторые настройки для анонимности. Что собственно мы сегодня и сделаем. И так, переходим в терминал и устанавливаем необходимые пакеты.

Установка и настройка Stunnel

apt install stunnel4

Теперь давайте создадим конфигурационный файл. Для этого вводим команду:

nano /etc/stunnel/stunnel.conf

В этот файл нам нужно вписать название сервиса, который будет взаимодействовать с Stunnel, в нашем случае это «[squid]». После чего указываем порт, порт вы моете указать любой, на ваше усмотрение. Я же буду использовать 5555 «accept = 8888». По умолчание Squid использует порт «3128», при желание вы можете его изменить в конфиге самого «Squid». Я же оставлю как есть. Сам же Squid по умолчание запускается на локальном хосте, по этому вписываем локальный хост и порт в наш конфиг «connect = 127.0.0.1:3128». Далее указываем путь к нашим сертификатам, которые мы сгенерируем чуть позже «cert = /etc/stunnel/stunnel.pem». Строчка в начале нашего конфига «client = no» не является обязательной. Но, пусть она будет. В итоге наш конфигурационный файл должен выглядеть следующим образом:

client = no
[squid]
accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem

Сохраняем наш файл и идем дальше. Теперь нам нужно сгенерировать сертификаты. Для этого проделываем следующую процедуру, вводим по очереди каждую команду в терминале:

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

Особое внимание стоит обратить на пункт «Common Name». В нем мы должны указать ip адрес нашего сервера.

После успешного создания сертификатов и перемещение их в нужную нам директорию, пришло время добавить в автозапуск Stunnel. Для этого вводим команду:

nano /etc/default/stunnel4

И ищем настройку «ENABLED», нам нужно изменить ее значение с «0» на «1». После чего сохранием отредактированный файл:

Теперь перезапустим Stunnel командой:

/etc/init.d/stunnel4 restart

Установка и настройка Squid

Теперь пришло время установить Squid на наш сервер. После успешной установки мы его настроим. Для установки введите команду:

apt install squid3

После установки нужно отредактировать конфигурационный файл Squid. Для этого откроем его в редакторе nano:

nano /etc/squid/squid.conf

Настроек тут много, но мы углубляться в них не будем. Отредактируем лишь те, которые нужны для наших задач. Параметр «acl localnet src» отвечает за ip адрес клиента. Установим его как 127.0.0.1. Что бы точно не кто не смог подключится не имея сертификатов от Stunnel.

Теперь укажем настройку которая будет пускать весь трафик через Squid, важно так же указать ее выше строчки «http_access deny all»

Ну и теперь в конце этого конфига добавляем следующие строчки, что бы сделать его анонимным:

forwarded_for off

request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

После внесения нужных нам правок, надо запустить и добавить в атозапуск Squid. Для этого выполним следующие команды:

systemctl start squid
systemctl enable squid

Установка и настройка Stunnel как клиент

Теперь пришло время установить Stunnel на наш компьютер и настроить его для работы с нашим сервером. Делается это просто, для начала установим Stunnel и сразу перейдем к настройке конфига:

apt install stunnel4
nano /etc/stunnel/stunnel.conf

Давайте быстренько пробежимся по конфигурации. Первая строчка указывает Stunnel что это клиент, в отличии от серверной части, тут она обязательна «client = yes». Далее идет название сервиса, в нашем случае это «[squid]» и адрес который будет прослушивать Stunnel «accept = 127.0.0.1:8080». Далее указываем ip адрес нашего сервера и порт, который мы указывали настраивая конфиг на сервере. В моем случае я указывал порт 5555 «connect = 185.219.80.135:5555». И последняя строчка указывает где лежат сертификаты, которые мы чуть позже скачаем «cert = /etc/stunnel/stunnel.pem»

Сохраняем наш конфиг и переходим к скачиванию сертификатов. Для этого выполните следующую команду:

scp -r root@185.219.80.135:/etc/stunnel/stunnel.pem /etc/stunnel/

Поясню что тут написано, «root» это имя под которым мы заходим по ssh на наш сервер. Далее ip адрес нашего сервера и пути, откуда нужно взять сертификат и куда скопировать. При выполнении это команды вам нужно будет ввести пароль. После чего убедимся, что все выполнилось и сертификаты скопировали при помощи команды и перезапустим Stunnel:

ls -l /etc/stunnel/
/etc/init.d/stunnel4 restart

Теперь переходим к настройке браузера, я буду показывать на примере браузера Firefox. Указываем наш localhost и порт «127.0.0.1:8080»

И проверяем подключение к нашему серверу

Как видите, все работает нормально. При этом, наш трафик шифруется при помощи Stunnel. Не используйте данную инструкцию в корыстных целях. Материал предназначен лишь для ознакомления.