3proxy — мощный и миниатюрный

Два года назад я уже писал про маленький и на удивление функциональный прокси сервер 3proxy. Много воды утекло с тех пор и пришло время написать новый обзор. Тем более, за это время вышла новая версия программы, добавились некоторые функции. Одно в 3proxy не особо радовало — не было вменяемой программы по просмотру и анализу логов. Пришло время исправить это 🙂

3proxyСегодня мы немного прокачаем наш прокси сервер

План такой:

  1. Берем ОС Windows 7 x86.. Можно взять и x64 — дело хозяйское.
  2. Устанавливаем DNS-прокси Acrylic DNS
  3. Устанавливаем web-сервер Mongoose
  4. Устанавливаем антивирус
  5. Устанавливаем 3proxy
  6. Настраиваем логирование в БД
  7. Смотрим отчеты

Теперь поехали по пунктам…

1. Установка винды

Думаю, с этим вы должны справиться без моих подсказок. В итоге у вас должна получиться свежеустановленная винда с присвоенным IP-адресом в локальной сети и с доступом в интернет.

2. Acrylic DNS

Эта штука ни что иное как кэширующий DNS-прокси. Он поможет нам «отфильтровать» самые плохие сайты, мы сможем легко задавать красивые имена любым ресурсам в локальной сети и мы прилично уменьшим DNS-трафик идущий за пределы нашей локалки.

Пару слов о фильтрации. Обычно в сетевых настройках компьютеров и в роутерах в качестве DNS-сервера выставлен ip-адрес DNS-сервера провайдера, который работает по принципу «как есть»: если компьютер запрашивает имя сайта с вредоносным контентом, то честный DNS-сервер укажет IP-адрес сайта. В результате на компьютере откроется вредоносный сайт со всеми вытекающими. Наше спасение заключается в том, что в последнее время в интернете стали появляться «правильные» DNS-сервера, которые не ответят вашему компьютеру ничего, если тот пытается узнать адрес «плохого» сайта. Вместо сайта в браузере будет показан «красивый» отбойник.

Такие правильные DNS-сервера предоставляет, например, Яндекс за бесплатно.

yadnsЕсть сервисы покруче, типа SkyDNS.ru Там можно выбирать категории сайтов, которые вы хотите блокировать, но подписка стоит некоторых хоть и небольших, но денег.

Короче говоря, на нашем сервере мы поднимаем Acrylic DNS и в его настройках указываем «правильные» DNS-сервера из интернета. А на компьютерах локальной сети в качестве DNS-сервера мы указываем IP-адрес нашего сервера. Сделать это можно или руками или через настройки DHCP — как вам удобнее.

Скачиваем Acrylic DNS, дополнительно к нему скачиваем Acrylic DNS Monitor — утилиту мониторинга.

Установка не должна вызвать каких-либо трудностей. После установки нужно поправить файл конфигурации Acrylic DNS и файл с предопределенными записями.

В файле конфигурации AcrylicConfiguration.ini находим строку PrimaryServerAddress= и после знака равенства вписываем «правильный» DNS-сервер. Можно воспользоваться бесплатными DNS-серверами Яндекса или если вы хотите гибко настраивать блокировки, то за символические деньги можно оформит подписку на SkyDNS.ru

Так же в конфигурационном файле не лишним будет задать логирование:

HitLogFileName=HitLog.%DATE%.txt

StatsLogFileName=StatsLog.%DATE%.txt

acrylicdns0

Так же нужно разрешить обращаться к Acrylic DNS с компьютеров локальной сети:

acrylicdns4В моем случае Acrylic DNS будет отвечать всем у кого IP-адрес 10.x.x.x ну и самому себе 127.0.0.1

В файле AcrylicHosts.txt при необходимости можно прописать нужные вам имена:

Я прописал несколько имен, которые я использую в DHCP для раздачи скриптов автонастройки браузеров (как-нибудь напишу на эту тему обзор), а вы можете вписать сюда что-то своё.

acrylicdns1После этого необходимо перезапустить службу Acrylic DNS:

acrylicdns2За работой программы можно следить с помощью Acrylic DNS Monitor. Здесь отображается вся история запросов к серверу от компьютеров локальной сети.

acrylicdns3

В настройках сети нашего сервера меняем адрес DNS-сервера на 127.0.0.1

acrylicdns5

С помощью DHCP или руками на компьютерах сети нужно указать IP-адрес нашего прокси сервера в поле DNS-сервера.

3. Mongoose

Если вам нужен простой web-сервер для показа внутри локалки простых html страниц или, например, для раздачи скриптов автонастройки браузеров, то mongoose весьма неплох. Если у вас таких потребностей нет, то этот шаг можно пропустить.

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

Я сделал папку C:webserver и в ней еще одну папку www

mongoose0Установка не требуется. Нам нужно зайти в настройки web-сервера через иконку головы желтого мангуста в трее:

mongoose1

Откроется страница браузера, где нужно поменять несколько параметров: путь корневого каталога web-сервера, порт и нажать кнопку сохранить настройки

mongoose2Теперь заставим работать его как служба Windows. Для этого скачиваем nssm. В архиве будут бинарники для Win x86 и Win x64. Берете нужный EXE-ник и кладете рядом с mongoose. Открываем командную строку от имени администратора и пишем там C:webservernssm.exe install mongoose

mongoose3

В открывшемся окне указываем путь по Mongoose и жмем Install Service

mongoose4

4. Антивирус

Ставим любой удовлетворяющий вас антивирус. Я взял бесплатный Avast Free Antivirus. Забегая вперед скажу, что он неплохо перехватывает весь вредоносный HTTP трафик на прокси:

av

5 и 6. 3proxy и логи в БД

Дошли до самого интересного. Скачиваем подходящую сборку под нашу винду, распаковываем архив куда-нибудь на C:3proxy.

Скачиваем ODBC-драйвер для SQLite.

Устанавливаем ODBC-драйвер

Скачиваем мой архив с двумя файлами: пустая БД для 3proxy и утилита просмотра отчетов.

Файл 3proxy.sqlite запихиваем в C:3proxylog Утилиту можно положить куда угодно, где вам будет удобно ее запускать.

Настраиваем ODBC: добавляем системный DSN как на скриншоте

odbc

Настраиваем конфигурационный файл в C:3proxycfg3proxy.cfg У меня он выглядит довольно просто. Доступ через прокси у меня разрешен всем, аутентификации нет.

3proxy_cfg

Строки из конфига, отвечающие за логирование событий в БД:

log &3proxylogformat "LINSERT INTO 'main'.'3proxy' ('3time','3port','3errcode','3username','3userip','3userport','3serverip','3serverport','3sentbytes','3recievedbytes','3parents','3url') VALUES ('%Y-%m-%d %H:%M:%S.%.',%p,%E,'%U','%C',%c,'%R',%r,%O,%I,%h,'%T')"

Теперь устанавливаем 3proxy в качестве службы Windows. Открываем командную строку от имени администратора и пишем там

C:3proxybin3proxy.exe --install C:3proxycfg3proxy.cfg

Служба установится и запустится. Теперь можно настраивать браузеры компов локальной сети на прокси сервер и выходить в интернет.

7. Смотрим отчеты

Только сегодня написал первую версию программы по просмотру отчетов из БД — 3proxystat.

Пока можно строить отчеты на глубину «Все время», «1 час» и «за сегодня»

По типам отчетов:

«Как есть в логах» — RAW

3proxystat2и отчет по самым активным клиентам -Traffic by Clients

3proxystat1

Если перед построение RAW отчета указать IP-адрес клиента в соответствующем текстовом поле, то RAW-статистика будет выбрана только по этому клиенту.

Под таблицей формируется сводная статистика по выборке.

Все отчеты можно экспортить в CSV совместимый с Excel (табуляция в качестве разделительного символа).

Под проект 3proxystat сделана отдельная страница /3proxystat Все обновления утилиты и инструкции будут там

На этом всё, спасибо за внимание!

admin

Нужно войти чтобы оставить комментарий.