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

Настройка 3proxy на FreeBSD-сервере

Оглавление

3proxy - бесплатный кроссплатформенный прокси-сервер. Используется для защиты сети, ведения журнала логов, сокрытия IP-адреса, фильтрации трафика и тому подобное. Программа используется без графического интерфейса. Настройка осуществляется путем внесения изменений в конфигурационный файл.

В статье будет представлен первоначальный этап установки и настройки прокси-сервера на основе программы 3proxy в сервере с установленной операционной системы FreeBSD.

I. Отключение службы NAT

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

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

Если служба трансляции сетевых адресов (NAT) была до этого настроена, то сначала необходимо ее отключить, выполнив действия в следующей последовательности:

  • выключить службу NAT, введя команду

service natd stop

  • проверить статус службы NAТ (служба должна быть не активна, рисунок 1)

service natd status

Рисунок 1
Рисунок 1
  • после остановки службы зайти в конфигурационный файл rc.conf

nano /etc/rc.conf

  • заменить параметр natd_enable c "YES" на "NO" и закомментировать два параметра (поставить знак # перед строкой). На рисунке 2 эти три строки выделены красной чертой.
Рисунок 2
Рисунок 2

Теперь необходимо перезагрузить операционную систему и проверить состояние службы трансляции адресов. Служба должна быть полностью отключена (рисунок 2).

Рисунок 3
Рисунок 3

II. Настройка службы 3proxy

Теперь можно приступить к установке службы 3proxy. Для этого нужно ее установить (рисунок 4)

pkg install 3proxy

Рисунок 4
Рисунок 4

Затем желательно сделать копию оригинального файла (рисунок 5)

sudo cp /usr/local/etc/3proxy.cfg /usr/local/etc/3proxy.cfg.back

Далее ввести команду на очистку содержимого конфигурационного файла (рисунок 5)

sudo echo > /usr/local/etc/3proxy.cfg

Рисунок 5
Рисунок 5

Теперь открыть конфигурационный файл при помощи текстового редактора

nano /usr/local/etc/3proxy.cfg

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

Рисунок 6
Рисунок 6

Некоторые пояснения к конфигурации:

а) параметр flush сбрасывает существующие списки доступа. Необходим, чтоб можно было задать различные списки доступа для различных служб;

б) параметр daemon - это режим запуска службы 3proxy;

в) параметр nscache выделяет необходимый объём кэша прокси;

г) в параметре nserver прописываются адреса DNS-серверов. В данном случае эта два DNS Google (8.8.8.8, 8.8.4.4). Можно указать DNS-сервера провайдеров, также можно указать более двух серверов;

д) Параметр log /var/log/3proxy/3proxy.log - это путь к логу, в котором будет прописываться список запросов пользователей;

е) в параметре logformat прописывается формат лога, который необходим для службы SARG, которая будет настраиваться в последствии (запись в одну строку)

"- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown";

ж) в параметре rotate прописывается числовое значение. Значение показывает: сколько дней будет храниться созданный лог-файл;

з) в параметре external указывается IP-адрес внешнего интерфейса, через который будет осуществляться выход в Интернет;

и) в параметре internal - IP-адрес внутреннего интерфейса. В данном случае это IP-адрес сервера, через который осуществляется подключение к внутренней сети;

к) в параметре auth записывается необходимый тип авторизации (типы авторизации: none, iponly, nbname, strong). В приведенном примере тип авторизации будет по IP-адресу клиентов, находящихся в локальной сети (192.168.1.0/24). Также можно использовать несколько типов авторизации (в этом случае их необходимо записать через пробел);

л) в параметре allow (и также deny) есть три уровня (необязательно все уровни прописывать, так как по умолчанию будет стоять идентификатор «*». Пример: allow * * *):

- первый уровень отвечает за идентификатор пользователя (или имя пользователя). Если использовать символ «*», то правило применяется ко всем пользователям;

- второй уровень отвечает за идентификатор IP-адреса (для кого или в каком диапазоне использовать данное правило). Если использовать символ «*», то правило применяется ко всем IP-адресам. В приведенном примере указан номер сети и префикс сети;

- третий уровень отвечает за идентификатор типа подключения (TCP, UDP и другие соединения). Если использовать символ «*», то правило применяется к любому типу соединения.

м) в параметре maxconn указывается максимальное количество пользователей, которые могут одновременно выходить в глобальную сеть, через прокси-сервер. В данном случае указано, что одновременно могут подключаться 21 пользователь. Можно использовать любое необходимое значение;

н) параметр proxy -p3128 указывает, что для прокси будет использоваться порт 3128;

о) параметр monitor сам обновляет изменение файла 3proxy.cfg. То есть нет необходимости после каждого изменения перезагружать службу (или же систему).

Теперь необходимо добавить службу в автозагрузку. Для этого нужно открыть конфигурационный файл rc.conf

nano /etc/rc.conf

В конфигурационном файле необходимо добавить строку (рисунок 7)

threeproxy_enable="YES"

Рисунок 7
Рисунок 7

Для запуска службы вводится команда (рисунок 8)

service 3proxy start

Для проверки работоспособности службы (рисунок 8)

service 3proxy status

Рисунок 8
Рисунок 8

Для вывода информации о сетевых соединениях службы 3proxy вводится команда (рисунок 9)

sockstat -4 | grep 3p

Рисунок 9
Рисунок 9

На рисунке видно, что на сервере с IP-адресом 192.168.1.254 включен порт 3128. А также осуществляется соединение рабочей станции с IP-адресом 192.168.1.200 через прокси с сервером 204.79.197.239 (microsoft.com) по порту 443 (протокол HTTPS).

III. Проверка работоспособности прокси на рабочей станции с ОС Windows

Настройка прокси осуществляется либо через параметры, либо через панель управления.

Зайти в «Настройки» - «Сеть и Интернет» - «Прокси-сервер». Указать параметры прокси-сервера (рисунок 10). Включить параметр «Использовать прокси-сервер». В ячейке «Адрес» - IP-адрес сервера (в данном примере 192.168.1.254), а в ячейке «Порт» - порт, который был включён в 3proxy (в примере 3128). Кроме того, желательно поставить галочку в опции «Не использовать прокси-сервер для локальных (внутрисетевых) адресов», чтобы была возможность обращаться к веб-службам в локальной сети. После записи настроек необходимо нажать кнопку «Сохранить».

Рисунок 10
Рисунок 10

Настройка через панель управления показана на рисунке 11.

Рисунок 11
Рисунок 11

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

Рисунок 12
Рисунок 12

IV. Проверка работоспособности прокси на рабочей станции с ОС xUbuntu

Операционная система xUbuntu (как и большинство других ОС с рабочим столом xfce) не имеет системной настройки для прокси. Поэтому необходимо прописать параметры прокси конфигурационный файл environment (здесь и далее для ОС на основе Linux из ветви Debian). Для этого его нужно открыть с правами суперпользователя

sudo nano /etc/environment

и записать строки следующего вида:

proxy_enabled="yes"

http_proxy=http://username:password@АдресПрокси:Порт/

https_proxy=https://username:password@АдресПрокси:Порт/

ftp_proxy=http://username:password@АдресПрокси:Порт/

no_proxy="localhost,127.0.0.1"

Применительно для настраиваемого сервера подключение через прокси осуществляется без ввода логина и пароля (username:password@ - не пишется) и записи будут выглядеть следующим образом (рисунок 13):

Рисунок 13
Рисунок 13

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

Рисунок 14
Рисунок 14

Иногда возникает необходимость для создания дополнительного файла в директории /etc/apt/apt.conf.d/. Например, будет создан файл с именем 95proxies.

sudo nano /etc/apt/apt.conf.d/95proxies

Далее в нем необходимо записать параметры прокси (в примере также без ввода логина и пароля):

Acquire::http::proxy "http://АдресПрокси:Порт/";

Acquire::ftp::proxy "ftp:// АдресПрокси:Порт/";

Acquire::https::proxy "https:// АдресПрокси:Порт/";

Для настраиваемого сервера содержимое файла представлено на рисунке 15:

Рисунок 15
Рисунок 15

Кроме того, если будет необходимо, то можно отдельно настроить параметры интернет-браузера Firefox (это можно сделать и при отсутствии прав суперпользователя). Для этого нужно зайти в настройки браузера, выбрать настройку сети и указать параметры прокси-сервера (рисунок 16).

Рисунок 16
Рисунок 16

При правильной настройке прокси на самом сервере и на рабочей станции интернет-браузер получит выход в сеть интернет (рисунок 17).

Рисунок 17
Рисунок 17