Статья создана благодаря многочасовому труду Кудринских Вячеслава.
Первоначальная настройка 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 необходимо скачать стабильную версию программы с официального сайта разработчика
В этой статье выполним некоторые настройки данной прокси-программы. В сети развернут 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, затем нажать Разрешить другое приложение.
4) Указать программу 3proxy и нажать Добавить, разрешить добавленной программе работать в Домен, Частная и Публичная. Применить новые настройки.
5) Создать текстовый файл config с расширением .cfg в директории, где находится программа 3proxy.exe (файл с именем config.cfg), открыть его через любой текстовый редактор для внесения изменений.
Следует учесть, что Windows скрывает расширения для зарегистрированных типов файлов. Для показа этих расширений необходимо открыть папку, выбрать Вид - Параметры
В открывшемся окне перейти на закладку Вид и убрать галочку с параметра Скрывать расширения для зарегистрированных типов файлов
Если этого не сделать, то вместо файла config.cfg будет создан файл config.cfg.txt. Причем расширение txt не будет видно и файл не является конфигурационным для программы 3proxy.
6) С учетом предстоящих задач конфигурация файла выглядит следующим образом:
Описание содержимого конфигурационного файла
plugin подключает плагины, предоставляющий некоторый функционал, в данном случае WindowsAuthentication, который позволяет использовать в качестве пользователей учетные записи AD Windows, что упрощает администрирование доступа к ресурсам.
Команда monitor используется для указания конфигурационного файла, чтобы при его изменении, автоматически обновлялась конфигурация работающего прокси-сервера.
log и logformat отвечают за вывод логов и формат логов соответственно, для log можно указать путь сохранения логов, без него весь лог будет выводиться в командную строку.
В данном примере:
Лог сохраняется в директорию 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- Порт сервера (исходящего соединения по запросу клиента)
На рисунке приведен пример вывода одной строки журнала:
internal и external отвечают за указание IP-адресов внутренней сети (адрес сервера) и внешней сети (адрес, предоставляемый провайдером). В приведенном примере адрес 10.0.0.254 – это адрес сетевого адаптера сервера, через который он подключен к локальной сети.
Адрес external нужно задать такой же, как у адаптера с интернет-подключением (который NAT и получает ip-адрес автоматически). Посмотреть этот адрес можно, введя в командную строку команду ipconfig /all. В приведенном это будет IPv4-адрес первого адаптера.
Все остальные рабочие станции подключены также к этой локальной сети и имеют адресацию той же сети (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 Мбит/с, если оба, то канал делиться равномерно на двоих (или более, если количество пользователей больше).
Также имеется возможность ограничения пропускной способности для указанных 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 посещение любых других ресурсов.
- строка 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, перейти в Сеть и Интернет, перейти в Прокси-сервер, выключить автоматическое применение параметров и включить настройку прокси вручную; в качестве адреса указать адрес сервера, а порт – указанные порт прокси при настройке прокси-программы, нажать Сохранить.
Проверка работы прокси-сервера
10) Для проверки работоспособности применяемых настроек необходимо с различных пользователей протестировать доступ к ресурсам и проверить скорость интернет-доступа, а также проверить доступ к запрещенным или разрешенным ресурсам. К примеру, пользователю win10-1 запрещен доступ к любым сервисам yandex: введя dzen.ru, будет получена ошибка 403 Access Denied, либо сообщение «Не удаётся открыть эту страницу». Причём доступ к другим ресурсам пользователю разрешён.