Установка и настройка 3proxy на CentOS 7

Обновлено и опубликовано Опубликовано:

Тематические термины: 3proxy, CentOS, Linux, прокси-сервер, SOCKS.

Подготовка сервера

Настраиваем правило для брандмауэра:

firewall-cmd --permanent --add-port=3128/tcp

firewall-cmd --permanent --add-port=1080/tcp

firewall-cmd --reload

3128 — порт по умолчанию, по которому работает 3proxy в режиме прокси; 1080 — порт по умолчанию для SOCKS.

Установка

Сначала устанавливаем расширенный репозиторий epel:

yum install epel-release

После устанавливаем сам 3proxy:

yum install 3proxy

Для автоматического запуска разрешаем сервис:

systemctl enable 3proxy

И запускаем его:

systemctl start 3proxy

Базовая настройка

Открываем конфигурационный файл 3proxy:

vi /etc/3proxy.cfg

1. Прописываем серверы NS:

nserver 77.88.8.8
nserver 8.8.8.8

* в данном примере, мы используем публичные DNS Яндекса (77.88.8.8) и Google (8.8.8.8). Можно также использовать свои собственные или от провайдера.

2. Задаем IP-адрес внешнего интерфейса:

external 192.168.0.23

* где 192.168.0.23 — адрес интерфейса, через который осуществляется выход в Интернет. Это может быть, как внутренний адрес локальной сети, так и внешний при непосредственном подключении сервера к сети Интернет.

3. Указываем адрес внутреннего интерфейса:

internal 192.168.1.25

* в случае использования одного интерфейса, внутренний и внешний IP-адреса будут совпадать.

Применяем настройки:

systemctl restart 3proxy

Открываем браузер и прописываем в качестве прокси наш сервер. Пробуем открыть любой сайт, будет запрошен логин и пароль — вводим логин 3APA3A и пароль 3apa3a.

Настройка аутентификации

По умолчанию, 3proxy настроен на использование логина 3APA3A и пароля 3apa3a. Для редактирования настроек открываем конфигурационный файл:

vi /etc/3proxy.cfg

Находим опцию users и добавляем пользователей:

#users 3APA3A:CL:3apa3a "test:CR:$1$qwer$CHFTUFGqkjue9HyhcMHEe1"
users dmosk1:CL:password
users "dmosk2:CR:$1$UsbY5l$ufEATFfFVL3xZieuMtmqC0"

* в данном примере мы закомментировали пользователей по умолчанию и добавили 2-х новых: dmosk1 с открытым паролем password и dmosk2 с паролем dmosk2 в виде md5 и солью UsbY5l (Для получения хэша пароля можно воспользоваться командой openssl passwd -1 -salt UsbY5l, где в качестве соли можно использовать любую комбинацию).
* обратите внимание, при использовании знака $, строчка пишется в кавычках.

* возможные типы паролей:

  • CL — текстовый пароль
  • CR — зашифрованный пароль (md5)
  • NT — пароль в формате NT.

Чтобы отключить запрос логина, необходимо задать значение для опции auth в none. Однако, опций auth в конфигурационном файле несколько. Нужно найти ту, что отвечает за авторизацию службы proxy:

auth none
# We want to protect internal interface
deny * * 127.0.0.1,192.168.1.1
# and llow HTTP and HTTPS traffic.
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n

* в данном примере, мы поменяли auth на none, чтобы отключить запрос пароля.

* возможные варианты для auth:

  • none — без авторизации.
  • iponly — авторизация по IP-адресу клиента.
  • nbname — по Netbios имени.
  • strong — по логину и паролю.

Также можно использовать двойную авторизацию, например:

auth nbname strong

После внесения изменений, перезапускаем службу:

systemctl restart 3proxy

SOCKS

Для прозрачного прохождения пакетов через прокси можно настроить SOCKS5. В конфигурационном файле добавляем:

vi /etc/3proxy.cfg

socks -p8083

* запускаем socks на порту 8083.

Или:

socks -p8083 -i192.168.1.23 -e111.111.111.111

* запускаем socks на порту 8083; внутренний интерфейс — 192.168.1.23, внешний — 111.111.111.111.

Пример настройки:

auth none
# We want to protect internal interface
deny * * 127.0.0.1,192.168.1.1
# and llow HTTP and HTTPS traffic.
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
socks

* в данном примере мы настроили 3proxy, который не будет требовать аутентификации, и будет работать в режиме прокси на порту 3128 (порт прокси по умолчанию) и по SOCKS на порту 1080 (порт socks по умолчанию).

Дополнительные настройки

Настройки, которые могут не понадобиться. Но они позволят настроить дополнительные возможности прокси-сервера.

Настройка портов и прокси-интерфейсов

При необходимости, можно настроить 3proxy на использование разных интерфейсов на разных портах:

vi /etc/3proxy.cfg

proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

*  3proxy будет слушать на порту 3128 с внутреннего интерфейса 192.168.0.23 и направлять пакеты в сеть Интернет через внешний интерфейс 222.222.222.222, а также, на порту 8080 для внутреннего и внешнего интерфейсов 192.168.1.23 и 111.111.111.111 соответственно.
* не забываем также настраивать брандмауэр (вначале инструкции мы открывали только 3128 порт).

systemctl restart 3proxy

Ограничение пропускной способности

При необходимости, можно ограничить скорость.

vi /etc/3proxy.cfg

bandlimin 1000000 user1,user3
bandlimin 5000000 user2,user4

*  в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

systemctl restart 3proxy

Ограничения доступа

Можно ограничить доступ и разрешить только для определенных портов, сетей и пользователей.

vi /etc/3proxy.cfg

Синтаксис:

allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>

* где:

  • userlist — список пользователей через запятую.
  • sourcelist — сети клиентов через запятую.
  • targetlist — сети назначения через запятую.
  • targetportlist — порты назначения через запятую.
  • commandlist — команды, к которым применяется правило.
  • weekdays — в какие дни недели работает правило. 0 - 6 — Пн - Вс, 7 — тоже Вс.
  • timeperiodslist — время, когда работает правило. Указываются диапазоны.

Примеры:

allow * * * 80 HTTP
allow * * * 443,8443 HTTPS
allow * * * 21 FTP

*  в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

Также, ограничить доступ можно по количеству одновременных соединений для каждой службы:

maxconn 700
proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

* таким образом, мы установим 700 максимальных соединений для прокси на порту 3128 и 700 — для proxy на порту 8080.

systemctl restart 3proxy

# CentOS # Безопасность # Интернет # Серверы # Сети
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет