Найти тему
Евгений Дергунов

Настройка доступа клиентов к сети Интернет через прокси-программу 3proxy на сервере Windows

Оглавление

Статья создана благодаря многочасовому труду Кудринских Вячеслава.

Первоначальная настройка Windows-server описана в статье:

Что такое прокси-сервер?

Прокси-сервер — промежуточный сервер (комплекс программ, сервис) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о применении прокси могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы.

Функции прокси-сервера

- обеспечение доступа компьютеров локальной сети к сети Интернет;

- кэширование данных для снижения нагрузки на канал во внешнюю сеть и ускорения получения клиентом запрошенной информации;

- сжатие данных для уменьшения количества итогового необходимого трафика для передачи;

- защита локальной сети от внешнего доступа: можно настроить прокси-сервер так, что локальные компьютеры будут обращаться к внешним ресурсам только через него, а внешние компьютеры не смогут обращаться к локальным вообще (они «видят» только прокси-сервер);

- ограничение доступа из локальной сети к внешней: можно запрещать доступ к определённым веб-сайтам, ограничивать использование интернет каким-то локальным пользователям, устанавливать квоты на трафик или полосу пропускания, фильтровать рекламу и вирусы;

- анонимизация доступа к различным ресурсам заключается в сокрытии или подмене сведениях об источнике запроса и данных пользователя.

Назначение программы 3proxy

В качестве прокси-программы предлагается использовать небольшое кроссплатформенное бесплатное программное обеспечение 3proxy (под Linux/Unix и Windows, включая 64-битные версии) от российского разработчика. 3proxy поддерживает классические возможности современных прокси-серверов, является программой без классического GUI (графический пользовательский интерфейс), настройка которой полностью осуществляется через написание конфигурационного файла, а также поддерживает плагины, которые могут написать любые люди, как для своих нужд, так и для решения общих потребностей использования 3proxy. Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), SMTP прокси (smtpp/smtpp.exe), AIM/ICQ прокси (icqpr/icqpr.exe), MSN messenger / Live messenger proxy (msnpr/msnpr.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining) и т.д.

3proxy является FreeWare (бесплатное программное обеспечение) и может быть использован по лицензии GNU/GPL или под собственной лицензией. Начиная с версии 0.6 используется лицензия типа BSD, позволяющая, так же, использовать LGPL, Apache License и многие другие совместимые типы лицензирования.

Работа с 3proxy

Для использования 3proxy необходимо скачать стабильную версию программы с официального сайта разработчика

https://3proxy.ru/download/

В этой статье выполним некоторые настройки данной прокси-программы. В сети развернут Windows-сервер с Active Directory (AD), службой DNS, службой DHCP и маршрутизацией (для выхода рабочих станций в сеть интернет). Пример будет приведен для Windows-сервер, порядок настройки которого приведен в видео

https://dzen.ru/video/watch/63d9b419bec0c250bec895ce?t=2

При настройке прокси-программы необходимо учитывать реальные условия (внутреннюю и внешнюю IP-адресацию, топологию сети, задачи, которые предстоит решить и так далее). Соответственно все настройки выполняются на сервере с учетной записью администратора.

Настройку программы можно выполнить в следующей последовательности.

1) Перед началом работы с прокси-программой необходимо отключить маршрутизацию NAT. Для этого в Диспетчер серверов открыть Средства, выбрать Маршрутизация и удалённый доступ, выбрать сервер и отключить на нём действующую маршрутизацию. Если этого не сделать, то доступ в интернет будет осуществляться напрямую, через сервер, минуя прокси-программу.

Отключение маршрутизации
Отключение маршрутизации

В Active Directory (AD) в разделе пользователи нужно создать группу с названием 3ProxyAllowedGroup и добавить в нее всех пользователей, которые будут использовать прокси для выхода в сеть Интернет. Все остальные пользователи, вне этой группы не смогут авторизоваться в программе 3proxy и не получать доступ в Интернет.

2) После скачивания стабильной версии прокси-программы 3proxy распаковать архив так, чтобы программа 3proxy.exe оказалась в папке C:\3proxy\bin64 для удобства дальнейшей работы с ней (корневая папка 3proxy может иметь несколько другое наименование с учетом версии программы). Примечание: примеры настроек конфигураций 3proxy находятся в папке cfg, а полезная информация в папке doc.

3) Для разрешения работы прокси-программы с сетевыми соединениями необходимо в брандмауэре сервера разрешить трафик программе. Для этого перейти в брандмауэре в Разрешение взаимодействия с приложением или компонентом в брандмауэре Защитника Windows, затем нажать Разрешить другое приложение.

Брандмауэр защитника Windows
Брандмауэр защитника Windows

4) Указать программу 3proxy и нажать Добавить, разрешить добавленной программе работать в Домен, Частная и Публичная. Применить новые настройки.

Добавление приложения
Добавление приложения
Разрешённые программы и компоненты
Разрешённые программы и компоненты

5) Создать текстовый файл config с расширением .cfg в директории, где находится программа 3proxy.exe (файл с именем config.cfg), открыть его через любой текстовый редактор для внесения изменений.

Следует учесть, что Windows скрывает расширения для зарегистрированных типов файлов. Для показа этих расширений необходимо открыть папку, выбрать Вид - Параметры

Открытие параметров папок
Открытие параметров папок

В открывшемся окне перейти на закладку Вид и убрать галочку с параметра Скрывать расширения для зарегистрированных типов файлов

-7

Если этого не сделать, то вместо файла config.cfg будет создан файл config.cfg.txt. Причем расширение txt не будет видно и файл не является конфигурационным для программы 3proxy.

6) С учетом предстоящих задач конфигурация файла выглядит следующим образом:

Содержимое конфигурационного файла 3proxy
Содержимое конфигурационного файла 3proxy

Описание содержимого конфигурационного файла

plugin подключает плагины, предоставляющий некоторый функционал, в данном случае WindowsAuthentication, который позволяет использовать в качестве пользователей учетные записи AD Windows, что упрощает администрирование доступа к ресурсам.

Команда monitor используется для указания конфигурационного файла, чтобы при его изменении, автоматически обновлялась конфигурация работающего прокси-сервера.

log и logformat отвечают за вывод логов и формат логов соответственно, для log можно указать путь сохранения логов, без него весь лог будет выводиться в командную строку.

В данном примере:

-9

Лог сохраняется в директорию c:\3proxy-0.9.3-x64\bin64 с именем файла в виде даты - две последние цифры года, месяц и день, например, 230302.log – 2023 год, месяц март, день второй;

rotate 15 – означает количество файлов, то есть сколько последних журналов будет сохранено.

Форматирование содержимого лога

На сайте расписано более подробно какие параметры можно использовать и какую информацию они выводят. Рассмотрим те ключи, которые указаны в примере:

  • %C - IP клиента
  • %U - Имя пользователя ('-', если отсутствует)
  • %d - День (01-31)
  • %o - Трехбуквенная аббревиатура месяца
  • %Y - Год (четырехзначный)
  • %H - Час (00-23)
  • %M - Минута (00-59)
  • %S - Секунда (00-59)
  • %z - Временная зона в почтовом формате (от Гринвича, '+' восток, '-' запад ЧЧММ), например, Московское время +0300
  • %T - Текст, специфичный для прокси сервиса (например, запрошенный URL)
  • %E - Код ошибки
  • %I- Принято байт от сервера
  • %O - Отправлено байт на сервер
  • %N- Название прокси сервиса (PROXY, SOCKS, POP3P, и т.д.)
  • %R- IPсервера (исходящего соединения по запросу клиента)
  • %r- Порт сервера (исходящего соединения по запросу клиента)

На рисунке приведен пример вывода одной строки журнала:

-10

internal и external отвечают за указание IP-адресов внутренней сети (адрес сервера) и внешней сети (адрес, предоставляемый провайдером). В приведенном примере адрес 10.0.0.254 – это адрес сетевого адаптера сервера, через который он подключен к локальной сети.

Адрес external нужно задать такой же, как у адаптера с интернет-подключением (который NAT и получает ip-адрес автоматически). Посмотреть этот адрес можно, введя в командную строку команду ipconfig /all. В приведенном это будет IPv4-адрес первого адаптера.

Адрес external
Адрес external

Все остальные рабочие станции подключены также к этой локальной сети и имеют адресацию той же сети (10.0.0.0/24). На рабочих станциях IP-адрес сервера (10.0.0.254, он же адрес internal) указан в качестве шлюза по умолчанию и DNS-сервера (все эти настройки выполнятся с использованием службы DHCP, пример настройки которой приведен в указанном выше видео). Через внешний сетевой адаптер (external) сервер подключается к сети интернет.

authcache и auth используются для вида аутентификации подключаемых пользователей, в данном случае, использовать прокси смогут только те, кто знает имя и пароль необходимых учетных записей AD.

authcache ip 60 – после успешной авторизации все запросы пришедшие с того же IP-адреса считаются запросами того же пользователя, 60 – это время кэширования авторизации, указанное в секундах.

auth cache windows позволяет производить аутентификацию по запоминанию, чтобы каждый раз не повторять ввод данных для входа.

Команды bandlim(out/in) отвечают за ограничение пропускной способности, причем они создают «канал», в который можно включить несколько пользователей. out для исходящего трафика, in – для входящего. В данном примере имеются три гостевых пользователя (guest-win10-1 и так далее). Для каждого из них введено ограничение на скорость доступа в интернет и скорость загрузки с интернет в 1 000 000 бит/с (то есть 1 Мбит/с).

Можно указать пользователей через запятую. В этом случае всем им будет предоставлен общий канал с указанной пропускной способностью. То есть, если один пользователь работает в сети, то ему предоставляется канал в 10 Мбит/с, если оба, то канал делиться равномерно на двоих (или более, если количество пользователей больше).

-12

Также имеется возможность ограничения пропускной способности для указанных IP-адресов. Например, для адреса 10.0.0.100, ограничение входящего канала в 2 Мбит/с.

bandlimin 2000000 * 10.0.0.100

Пример ограничения входящего канала в 5 Мбит/с для группы IP-адресов (в данном случае для четырех 10.0.0.16, 10.0.0.17, 10.0.0.18 и 10.0.0.19)

bandlimin 5000000 * 10.0.0.16/30

Если необходимо, то для определенных сервисов можно задать канал без ограничения скорости, например, для протокола входящей почты РОР3 (номер порта 110), с использованием параметра nobandlimin

nobandlimin * * * 110
bandlimin 5000000 * 10.0.0.16/30

Команды deny и allow используются для разграничения доступа к определенным ресурсам пользователями, причем, приоритет команд идет сверху вниз, поэтому в конце конфигурации написана строка «allow * * *», разрешающая всем использовать любые ресурсы.

В данном примере:

- пользователю win10-1 и компьютеру с адресом 10.0.0.25 запрещено посещение сайтов ya.ru, yandex.ru, youtube.com и dzen.ru. Звездочки (*) перед названием и после названия сайта обозначают любое количество любых символов, иначе возможен будет доступ, например, на https://dzen.ru/news.

- пользователю win10-2 разрешено посещение только сайта mail.ru. Вторая строка deny запрещает пользователю win10-2 посещение любых других ресурсов.

-13

- строка allow * * * разрешает все остальное, кроме тех запретов, что прописаны выше этой строки.

proxy используется для включения всех выше приведенных параметров в качестве прокси-сервера, через ключ p указан порт для прокси, а ключ n отключает NTLM-аутентификацию, чтобы аутентификация по AD работала корректно. Если использовать общепринятый порт для прокси 3128, то его можно в конфигурационном файле не указывать (не применять ключ p).

7) Чтобы запустить прокси-сервер с созданной аутентификацией нужно ввести команду в PowerShell в директории с программой (сначала перейти в директорию содержащую 3proxy.exe, а потом уже вводить команду):

.\3proxy.exe .\config.cfg

8) Для установки на Windows Server прокси-программы в качестве сервиса, запускаемого с включением сервера, необходимо написать в PowerShell команду:

.\3proxy.exe --install .\config.cfg

Подключение клиентов через прокси-сервер

9) На рабочих станциях, подключаемые к серверу, необходимо настроить использование прокси, для этого перейти в Параметры Windows, перейти в Сеть и Интернет, перейти в Прокси-сервер, выключить автоматическое применение параметров и включить настройку прокси вручную; в качестве адреса указать адрес сервера, а порт – указанные порт прокси при настройке прокси-программы, нажать Сохранить.

-14
-15

Проверка работы прокси-сервера

10) Для проверки работоспособности применяемых настроек необходимо с различных пользователей протестировать доступ к ресурсам и проверить скорость интернет-доступа, а также проверить доступ к запрещенным или разрешенным ресурсам. К примеру, пользователю win10-1 запрещен доступ к любым сервисам yandex: введя dzen.ru, будет получена ошибка 403 Access Denied, либо сообщение «Не удаётся открыть эту страницу». Причём доступ к другим ресурсам пользователю разрешён.

-16

-17

-18