В этой части мы установим и настроим на нашем VPS на Ubuntu прокси-сервер Squid, который, в современных условиях, часто необходим для просмотра заблокированных ресурсов. Итак, давайте приступим.
Установка и настройка Squid
Устанавливаем squid следующей командой:
sudo apt-get install squid -y
Во-первых, для удобства мы сделаем резервную копию файла squid.conf
просто переименовав его в squid.conf.dist
. А во-вторых, создадим файл конфигурации, убрав все комментарии и пустые строки. Для удобства все наши дальнейшие действия будем выполнять с правами root.
sudo -i mv /etc/squid/squid.conf /etc/squid/squid.conf.dist cat /etc/squid/squid.conf.dist | grep -v ^$ | grep -v ^# > /etc/squid/squid.conf
После установки наш прокси-сервер принимает входящие соединения с любых адресов на порту 3128 без какой-либо аутентификации и авторизации.
Наша задача настроить сервер таким образом, чтобы им могли пользоваться только те, кому мы дадим к нему доступ. Для этого в начало файла /etc/squid/squid.conf
вставьте следующие строки:
auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/users auth_param digest children 5 startup=1 idle=1 auth_param digest realm myproxy acl auth_users proxy_auth REQUIRED
В этот же файл добавьте правило доступа:
http_access allow auth_users
сразу выше строки http_access deny all
.
В конечном итоге у вас должно получиться примерно следующее содержимое squid.conf
:
auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/users auth_param digest children 5 startup=1 idle=1 auth_param digest realm proxy acl auth_users proxy_auth REQUIRED 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 allow auth_users 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 (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320
Настройка пользователей
После этого нужно создать файл, содержащий имена пользователей и хэши их паролей. Для этого можно воспользоваться утилитой htdigest
из пакета apache2-utils
или следующим скриптом:
#/usr/bin/env bash user=$1 realm=$2 password=$3 if [ -z "$1" -o -z "$2" ]; then echo "Usage $0 user realm [password]" exit 1 fi if [ -z "$3" ]; then echo -n Password: read -s password echo fi digest=$(echo -n "$user:$realm:$password"|md5sum|cut -f1 -d' ') echo "$user:$realm:$digest"
Сохраните его в папку /etc/squid
под именем genpasswd
. Не забудьте изменить права:
chmod +x /etc/squid/genpasswd
А сейчас, с помощью нашего скрипта, создадим файл с единственным, пока, пользователем:
/etc/squid/genpasswd myuser myproxy > /etc/squid/users
Скрипт запросит у вас пароль и запишет строку с аутентификационными данными пользователя myuser
в файл /etc/squid/users
. Если нужно, вы можете добавить еще одного:
/etc/squid/genpasswd otheruser myproxy >> /etc/squid/users
В Ubuntu 18.04 демон squid запускает программу аутентификации digest_file_auth
от имени пользователя proxy, который создается в процессе установки. Поэтому нам надо изменить атрибуты нашего файла с пользователями:
chmod 640 /etc/squid/users chgrp proxy /etc/squid/users
После всех наших действий перезапустим сервис следующей командой:
systemctl restart squid.service
Но перед этим желательно проверить правильность файла настроек при помощи:
squid -k check
Настройка браузера
Сейчас сервис готов к проверке прав пользователей на доступ. Осталось лишь настроить браузер на использование нашего прокси-сервера. Я расскажу об этом на примере Firefox, но практически также можно настроить Chrome.
Для автоматического изменения настроек прокси-сервера в зависимости от ресурса, который вы посещаете, есть замечательное расширение Proxy SwitchyOmega. После установки этого расширения вы можете добавить профиль своего сервера:
затем ввести адрес, порт
и данные пользователя
После этого вы можете настраивать правила автоматического переключения профилей или просто выбрать ваш прокси-сервер для всех соединений.
На этом настройка Squid на нашем VPS на Ubuntu завершена. Жду ваших вопросов и замечаний в комментариях.