Два года назад я уже писал про маленький и на удивление функциональный прокси сервер 3proxy. Много воды утекло с тех пор и пришло время написать новый обзор. Тем более, за это время вышла новая версия программы, добавились некоторые функции. Одно в 3proxy не особо радовало — не было вменяемой программы по просмотру и анализу логов. Пришло время исправить это 🙂
Сегодня мы немного прокачаем наш прокси сервер
План такой:
- Берем ОС Windows 7 x86.. Можно взять и x64 — дело хозяйское.
- Устанавливаем DNS-прокси Acrylic DNS
- Устанавливаем web-сервер Mongoose
- Устанавливаем антивирус
- Устанавливаем 3proxy
- Настраиваем логирование в БД
- Смотрим отчеты
Теперь поехали по пунктам…
1. Установка винды
Думаю, с этим вы должны справиться без моих подсказок. В итоге у вас должна получиться свежеустановленная винда с присвоенным IP-адресом в локальной сети и с доступом в интернет.
2. Acrylic DNS
Эта штука ни что иное как кэширующий DNS-прокси. Он поможет нам «отфильтровать» самые плохие сайты, мы сможем легко задавать красивые имена любым ресурсам в локальной сети и мы прилично уменьшим DNS-трафик идущий за пределы нашей локалки.
Пару слов о фильтрации. Обычно в сетевых настройках компьютеров и в роутерах в качестве DNS-сервера выставлен ip-адрес DNS-сервера провайдера, который работает по принципу «как есть»: если компьютер запрашивает имя сайта с вредоносным контентом, то честный DNS-сервер укажет IP-адрес сайта. В результате на компьютере откроется вредоносный сайт со всеми вытекающими. Наше спасение заключается в том, что в последнее время в интернете стали появляться «правильные» DNS-сервера, которые не ответят вашему компьютеру ничего, если тот пытается узнать адрес «плохого» сайта. Вместо сайта в браузере будет показан «красивый» отбойник.
Такие правильные DNS-сервера предоставляет, например, Яндекс за бесплатно.
Есть сервисы покруче, типа 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
Так же нужно разрешить обращаться к Acrylic DNS с компьютеров локальной сети:
В моем случае Acrylic DNS будет отвечать всем у кого IP-адрес 10.x.x.x ну и самому себе 127.0.0.1
В файле AcrylicHosts.txt при необходимости можно прописать нужные вам имена:
Я прописал несколько имен, которые я использую в DHCP для раздачи скриптов автонастройки браузеров (как-нибудь напишу на эту тему обзор), а вы можете вписать сюда что-то своё.
После этого необходимо перезапустить службу Acrylic DNS:
За работой программы можно следить с помощью Acrylic DNS Monitor. Здесь отображается вся история запросов к серверу от компьютеров локальной сети.
В настройках сети нашего сервера меняем адрес DNS-сервера на 127.0.0.1
С помощью DHCP или руками на компьютерах сети нужно указать IP-адрес нашего прокси сервера в поле DNS-сервера.
3. Mongoose
Если вам нужен простой web-сервер для показа внутри локалки простых html страниц или, например, для раздачи скриптов автонастройки браузеров, то mongoose весьма неплох. Если у вас таких потребностей нет, то этот шаг можно пропустить.
У Mongoose есть несколько редакций как платных так и бесплатных. Мы, конечно же будем юзать бесплатную редакцию, которая имеет некоторые ограничения. Например, бесплатная версия не может работать в качестве службы windows. Скачиваем бесплатную версию, закидываем в какую-нибудь папку на диске С и запускаем там.
Я сделал папку C:webserver и в ней еще одну папку www
Установка не требуется. Нам нужно зайти в настройки web-сервера через иконку головы желтого мангуста в трее:
Откроется страница браузера, где нужно поменять несколько параметров: путь корневого каталога web-сервера, порт и нажать кнопку сохранить настройки
Теперь заставим работать его как служба Windows. Для этого скачиваем nssm. В архиве будут бинарники для Win x86 и Win x64. Берете нужный EXE-ник и кладете рядом с mongoose. Открываем командную строку от имени администратора и пишем там C:webservernssm.exe install mongoose
В открывшемся окне указываем путь по Mongoose и жмем Install Service
4. Антивирус
Ставим любой удовлетворяющий вас антивирус. Я взял бесплатный Avast Free Antivirus. Забегая вперед скажу, что он неплохо перехватывает весь вредоносный HTTP трафик на прокси:
5 и 6. 3proxy и логи в БД
Дошли до самого интересного. Скачиваем подходящую сборку под нашу винду, распаковываем архив куда-нибудь на C:3proxy.
Скачиваем ODBC-драйвер для SQLite.
Устанавливаем ODBC-драйвер
Скачиваем мой архив с двумя файлами: пустая БД для 3proxy и утилита просмотра отчетов.
Файл 3proxy.sqlite запихиваем в C:3proxylog Утилиту можно положить куда угодно, где вам будет удобно ее запускать.
Настраиваем ODBC: добавляем системный DSN как на скриншоте
Настраиваем конфигурационный файл в C:3proxycfg3proxy.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
и отчет по самым активным клиентам -Traffic by Clients
Если перед построение RAW отчета указать IP-адрес клиента в соответствующем текстовом поле, то RAW-статистика будет выбрана только по этому клиенту.
Под таблицей формируется сводная статистика по выборке.
Все отчеты можно экспортить в CSV совместимый с Excel (табуляция в качестве разделительного символа).
Под проект 3proxystat сделана отдельная страница /3proxystat Все обновления утилиты и инструкции будут там
На этом всё, спасибо за внимание!