Поднять собственный прокси-сервер можно с помощью специализированного ПО, такого как Squid, 3proxy или Dante, для контроля сетевого трафика, обхода географических ограничений, кэширования данных или повышения анонимности.
Прокси-сервер выступает посредником между клиентом и целевым сервером, перенаправляя запросы и ответы. Это позволяет управлять доступом, фильтровать контент, кэшировать данные для ускорения загрузки и скрывать IP-адрес клиента. Выбор конкретного решения зависит от требуемого функционала, производительности и простоты настройки.
Общие принципы настройки прокси-сервера
Для установки и настройки прокси-сервера потребуется виртуальный или физический сервер с операционной системой Linux (например, Ubuntu, Debian, CentOS) и доступом с правами суперпользователя (root).
Основные шаги:
1. Выбор ПО: Определить, какой тип прокси (HTTP, SOCKS, прозрачный) и какие функции необходимы.
2. Установка: Инсталлировать выбранное программное обеспечение.
3. Конфигурация: Настроить правила доступа, порты, аутентификацию.
4. Запуск и проверка: Запустить сервис и убедиться в его работоспособности.
5. Настройка фаервола: Открыть необходимые порты (по умолчанию 3128 для Squid, 8080 для HTTP-прокси, 1080 для SOCKS).
Squid Proxy
Squid — это высокопроизводительный кэширующий прокси-сервер для веб-трафика (HTTP, HTTPS, FTP). Он широко используется для ускорения доступа к веб-ресурсам, контроля доступа и организации прозрачных прокси.
Установка Squid на Ubuntu/Debian
sudo apt update
sudo apt install squid -y
Базовая конфигурация Squid
Основной файл конфигурации Squid — /etc/squid/squid.conf. После установки он содержит множество комментариев и примеров.
Открытие порта и разрешение доступа
По умолчанию Squid слушает порт 3128. Для разрешения доступа с любого IP-адреса, необходимо изменить или добавить следующую строку:
# Разрешить доступ с любых IP-адресов
http_access allow all
Для более строгого контроля можно создать ACL (Access Control List) и применить его.
Настройка аутентификации
Squid поддерживает различные методы аутентификации, например, Basic-аутентификацию через htpasswd.
- Установите
apache2-utilsдля создания файла паролей:
bash sudo apt install apache2-utils -y - Создайте файл паролей:
bash sudo htpasswd -c /etc/squid/passwd username # Введите пароль для пользователя username
Для добавления новых пользователей без перезаписи файла используйтеhtpasswdбез опции-c. -
Добавьте следующие строки в
squid.conf:
```conf
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm Squid proxy-server
auth_param basic credentialsttl 2 hoursacl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
```
Это разрешит доступ только аутентифицированным пользователям.
Перезапуск Squid
После любых изменений в squid.conf необходимо перезапустить сервис:
sudo systemctl restart squid
sudo systemctl enable squid
sudo systemctl status squid
Таблица сравнения Squid
| Характеристика | Описание |
|---|---|
| Тип прокси | HTTP, HTTPS (CONNECT), FTP |
| Кэширование | Да, активно используется для ускорения доступа к веб-ресурсам |
| Аутентификация | Basic, Digest, NTLM, Kerberos |
| ACL | Гибкие правила доступа по IP, домену, времени, пользователю |
| Прозрачный прокси | Поддерживается |
| Сложность | Средняя, требует понимания конфигурационных файлов |
| Ресурсы | Может быть требователен к памяти и дисковому пространству при активном кэшировании |
| Применение | Корпоративные сети, интернет-провайдеры, контроль доступа, ускорение загрузки веб-страниц |
3proxy
3proxy — это легковесный, универсальный прокси-сервер, поддерживающий HTTP, SOCKS (v4/v5), FTP и другие протоколы. Он отличается низким потреблением ресурсов и простотой настройки, что делает его подходящим для персонального использования или небольших проектов.
Установка 3proxy на Ubuntu/Debian
- Установите необходимые пакеты для сборки:
bash sudo apt update sudo apt install build-essential git -y - Клонируйте репозиторий и соберите 3proxy:
bash git clone https://github.com/z3APA3A/3proxy.git cd 3proxy make -f Makefile.Linux sudo make -f Makefile.Linux install
Исполняемый файл обычно устанавливается в/usr/local/bin/3proxy.
Базовая конфигурация 3proxy
Конфигурация 3proxy выполняется через файл 3proxy.cfg. Создайте его, например, в /etc/3proxy/3proxy.cfg.
HTTP и SOCKS5 прокси
Пример файла 3proxy.cfg для HTTP и SOCKS5 прокси на разных портах:
# Пользователь и пароль (username:password)
# Замените 'user:pass' на свои данные
auth strong
users user:pass
# Разрешить доступ только аутентифицированным пользователям
allow user
# HTTP прокси на порту 8080
proxy -p8080
# SOCKS5 прокси на порту 1080
socks -p1080
# Логирование
log /var/log/3proxy/3proxy.log
logformat "- +_L%t.%. %N.%O %I %E %U %C:%c %R:%r %O %I:%i %h %D"
rotate 30
Создание каталога для логов
sudo mkdir -p /var/log/3proxy
sudo chown -R nobody:nogroup /var/log/3proxy # Или пользователь, от имени которого будет работать 3proxy
Запуск 3proxy
Для запуска 3proxy можно использовать systemd-сервис. Создайте файл /etc/systemd/system/3proxy.service:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Затем запустите и включите сервис:
sudo systemctl daemon-reload
sudo systemctl start 3proxy
sudo systemctl enable 3proxy
sudo systemctl status 3proxy
Таблица сравнения 3proxy
| Характеристика | Описание |
|---|---|
| Тип прокси | HTTP, HTTPS (CONNECT), SOCKS v4/v5, FTP, POP3, SMTP, TCP/UDP portmapper |
| Кэширование | Нет |
| Аутентификация | Basic (пользователи/пароли в конфиге), IP-адреса |
| ACL | Простые правила allow/deny по пользователю, IP, порту |
| Прозрачный прокси | Нет (или сложно реализуется) |
| Сложность | Низкая, простой конфигурационный файл |
| Ресурсы | Очень низкое потребление CPU и RAM |
| Применение | Персональные прокси, обход блокировок, небольшие сети, SOCKS-прокси |
Dante SOCKS Proxy
Dante — это высокопроизводительный SOCKS-сервер, поддерживающий SOCKS v4, SOCKS v5 и UDP-ассоциации. Он ориентирован на надежность и безопасность, часто используется для создания шлюзов доступа к сети.
Установка Dante на Ubuntu/Debian
sudo apt update
sudo apt install dante-server -y
Базовая конфигурация Dante
Основной файл конфигурации Dante — /etc/danted.conf.
Пример конфигурации для SOCKS5 с аутентификацией
# Внутренние интерфейсы, на которых Dante будет слушать запросы
internal: 0.0.0.0 port=1080
# Внешние интерфейсы, через которые Dante будет отправлять запросы
external: eth0 # Замените eth0 на имя вашего внешнего сетевого интерфейса (например, ens3, enp0s3 и т.д.)
# Метод аутентификации
socksmethod: username none
# Правила для клиентов
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
# Правила для SOCKS-запросов
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username
log: error connect disconnect
}
Создание пользователя для аутентификации
Dante использует системных пользователей для аутентификации.
- Создайте нового пользователя без домашней директории и без возможности входа в систему:
bash sudo adduser --no-create-home --shell /usr/sbin/nologin proxyuser # Введите пароль для proxyuser - Убедитесь, что пользователь
proxyuserне может войти в систему:
bash sudo passwd -l proxyuser
Пароль будет использоваться для аутентификации через прокси.
Перезапуск Dante
После изменений в danted.conf перезапустите сервис:
sudo systemctl restart danted
sudo systemctl enable danted
sudo systemctl status danted
Таблица сравнения Dante
| Характеристика | Описание |
|---|---|
| Тип прокси | SOCKS v4, SOCKS v5, UDP-ассоциации |
| Кэширование | Нет |
| Аутентификация | Пользователи ОС, PAM, ident |
| ACL | Гибкие правила client pass/socks pass по IP, порту, пользователю |
| Прозрачный прокси | Нет |
| Сложность | Средняя, требует настройки системных пользователей и понимания правил |
| Ресурсы | Низкое, стабильное потребление |
| Применение | SOCKS-шлюзы, туннелирование, обход фаерволов, анонимизация трафика |
Сравнение Squid, 3proxy и Dante
| Характеристика | Squid | 3proxy | Dante |
|---|---|---|---|
| Основное назначение | HTTP/HTTPS кэширующий прокси | Универсальный, легкий прокси | SOCKS5 прокси |
| Поддерживаемые протоколы | HTTP, HTTPS, FTP (в основном) | HTTP, SOCKS (v4/v5), FTP, POP3, SMTP | SOCKS (v4/v5), UDP-ассоциации |
| Кэширование | Да | Нет | Нет |
| Аутентификация | Basic, Digest, NTLM, Kerberos | Пользователи/пароли в конфиге, IP | Системные пользователи, PAM |
| ACL | Гибкие, на основе IP, доменов, пользователей | Простые правила allow/deny |
Гибкие client pass/socks pass |
| Прозрачный прокси | Да | Нет | Нет |
| Сложность настройки | Средняя | Низкая | Средняя |
| Потребление ресурсов | Высокое (при кэшировании) | Очень низкое | Низкое |
| Типичные сценарии | Корпоративные сети, ускорение веба, фильтрация | Персональные прокси, SOCKS-серверы, обход блокировок | Безопасные SOCKS-шлюзы, туннелирование |
Общие рекомендации по безопасности и оптимизации
Настройка фаервола
Используйте фаервол (например, ufw или firewalld) для ограничения доступа к портам прокси-сервера. Разрешайте подключение только с доверенных IP-адресов или из определенных сетей.
Пример для UFW (Squid на 3128, 3proxy на 8080/1080, Dante на 1080):
sudo ufw allow 3128/tcp # Для Squid
sudo ufw allow 8080/tcp # Для 3proxy HTTP
sudo ufw allow 1080/tcp # Для 3proxy SOCKS и Dante
sudo ufw enable
Использование HTTPS
Для HTTP-прокси, если трафик не шифруется между клиентом и прокси, он может быть перехвачен. Для HTTPS-трафика прокси работает в режиме CONNECT, просто туннелируя зашифрованный трафик. Для полного контроля над HTTPS трафиком через прокси требуется SSL/TLS инспекция, что является более сложной настройкой и часто требует установки корневого сертификата на клиентах.
Аутентификация
Всегда используйте аутентификацию для прокси-сервера, если он доступен извне локальной сети. Слабые пароли или их отсутствие делают сервер уязвимым для несанкционированного использования.
Мониторинг
Настройте мониторинг логов прокси-сервера (/var/log/squid/access.log, /var/log/3proxy/3proxy.log, /var/log/syslog для Dante) для выявления подозрительной активности или проблем.
Обновление ПО
Регулярно обновляйте программное обеспечение прокси-сервера и операционную систему, чтобы обеспечить защиту от известных уязвимостей.