Создаем свой собственный прокси сервер на Windows.
Здравствуй. Как ты уже понял сейчас будем создавать личный прокси сервер. Что это такое можешь почитать тут , а так же различие их типов тут . Мы же будет создавать socks прокси.
Для этого нам понадобится бесплатный прокси-сервер под названием 3proxy . Для этого переходим на официальный сайт и качаем самую свежую версию.
3proxy умеет работать с HTTP/HTTPS, FTP over HTTP, SOCKS, можно делать разные правила разрешений и запретов, даже скорость ограничивать персонально для выбранного пользователя. Так же он весит меньше мегабайта, но не имеет графического интерфейса.
Скачиваем программу и распаковываем куда хотите.
В каталоге мы увидим три папки и еще всякие файлики. В папке bin хранится сама программа прокси сервера и всякие плагины, в папке cfg хранится пример файла конфигурации и sql скрипт для создания базы данных, однако понадобиться нам только один файл, которого еще нет.
Мы идем в папку bin, там создаем файл 3proxy.cfg. Открываем его на редактирование, вписываем туда всего четыре строчки:
timeouts 1 5 30 60 180 1800 15 60
Первая строка говорит, что авторизация не требуется, вторая заставляет работать по протоколу socks, третья это время ожидания подключения и последняя порт работы socks.
Мы настроили самый примитивный конфиг, обычно в лучшем случае он выглядит как-то так.
internal 192.168.0.1
external 211.80.11.12
nserver 213.153.100.1
nserver 213.153.101.1
nscache 65536
rotate 30
nobandlimin * * * 110
bandlimin 24000 * 192.168.0.2,192.168.0.3
bandlimin 48000 * 192.168.0.4
bandlimout 24000 *
counter «c:\3proxy\3proxy.3cf» D «C:\3proxy\traf\traf»
nocountin * 192.168.0.4 * 110 *
countin «1/name» M 50 * 192.168.0.2 * * *
countin «2/name1» M 80 * 192.168.0.3 * * *
countin «3/name2» M 30 * 192.168.0.4 * * *
auth iponly
allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
proxy
Сохранили конфиг, далее нам нужно запустить сам сервер, в винде 3proxy работает как служба, чтобы ее включить, нужно сделать следующее.
Открываем cmd от имени администратора, переходим в каталог, содержащий файл 3proxy.exe.
cd c:\твой путь\3proxy\bin
и запускаем инсталляцию:
Тут соглашаемся и инсталляция сразу закончится.
P.S Для примера я делаю на VPS от амазона с windows 7, если ты читал про VPN , то быстро поймешь.
Бесплатный прокси-сервер для предприятия с доменной аутентификацией
pfSense+Squid с фильтрацией https + Технология единого входа (SSO) с фильтрацией по группам Active Directory
Краткая предыстория
На предприятии возникла необходимость во внедрении прокси-сервера с возможностью фильтрации доступа к сайтам(в том числе https) по группам из AD, чтобы пользователи не вводили никаких дополнительных паролей, а администрировать можно было с веб интерфейса. Неплохая заявочка, не правда ли?
Правильным вариантом ответа было бы купить такие решения как Kerio Control или UserGate, но как всегда денег нет, а потребность есть.
Тут то к нам и приходит на выручку старый добрый Squid, но опять же — где взять веб интерфейс? SAMS2? Морально устарел. Тут то и приходит на выручку pfSense.
Описание
В данной статье будет описан способ настройки прокси-сервера Squid.
Для авторизации пользователей будет использоваться Kerberos.
Для фильтрации по доменным группам будет использоваться SquidGuard.
Для мониторинга будет использован Lightsquid, sqstat и внутренние системы мониторинга pfSense.
Также будет решена частая проблема, связанная с внедрением технологии единого входа (SSO), а именно приложения, пытающиеся ходить в интернет под учеткой компа\своей системной учеткой.
Подготовка к установке Squid
За основу будет взят pfSense, Инструкция по установке.
Внутри которого мы организуем аутентификацию на сам межсетевой экран с помощью доменных учеток. Инструкция.
Перед началом установки Squid необходимо настроить DNS сервера в pfsense, сделать для него запись A и PTR записи на нашем DNS сервере и настроить NTP так, чтобы время не отличалось от времени на контроллере домена.
А в вашей сети предоставить возможность WAN интерфейсу pfSense ходить в интернет, а пользователям в локальной сети подключаться на LAN интерфейс, в том числе по порту 7445 и 3128 (в моем случае 8080).
Всё готово? С доменом связь по LDAP для авторизации на pfSense установлена и время синхронизировано? Отлично. Пора приступать к основному процессу.
Установка и предварительная настройка
Squid, SquidGuard и LightSquid установим из менеджера пакетов pfSense в разделе «Система/Менеджер пакетов».
После успешной установки переходим в «Сервисы/Squid Proxy server/» и в первую очередь во вкладке Local Cache настраиваем кеширование, я выставил все по 0, т.к. не вижу особого смысла кешировать сайты, с этим и браузеры прекрасно справляются. После настройки нажимаем клавишу «Сохранить» внизу экрана и это даст нам возможность производить основные настройки прокси.
Основные настройки приводим к следующему виду:
Порт по умолчанию 3128, но я предпочитаю использовать 8080.
Выбранные параметры во вкладке Proxy Interface определяют какие интерфейсы будет слушать наш прокси сервер. Так как этот межсетевой экран построен таким образом, что в интернет он смотрит WAN интерфейсом, даже при том что LAN и WAN могут быть в одной локальной подсети, рекомендую для прокси использовать именно LAN.
Лупбек нужен для работы sqstat.
Ниже вы найдете настройки Transparent (прозрачного) прокси, а также SSL Filter, но они нам не нужны, наш прокси будет не прозрачным, а для фильтрации https мы не будем заниматься подменой сертификата(у нас ведь документооборот, банк-клиенты и тд), а просто посмотрим на рукопожатие.
На этом этапе нам необходимо перейти в наш контроллер домена, создать в нем учетную запись для аутентификации(можно использовать и ту что настроили для аутентификации на сам pfSense). Здесь очень важный фактор — если вы намерены использовать шифрование AES128 или AES256 — проставьте соответствующие галочки в настройках учетной записи.
В случае если ваш домен представляет собой весьма сложный лес с большим количеством каталогов или ваш домен .local, то ВОЗМОЖНО, но не точно, вам придется использовать для этой учетной записи простой пароль, баг известный, но со сложный паролем может просто не работать, надо проверять на конкретном частном случае.
После этого всего формируем файл ключей для кербероса, на контроллере домена открываем командную строку с правами администратора и вводим:
Где указываем свой FQDN pfSense, обязательно соблюдая регистр, в параметр mapuser вводим нашу доменную учетную запись и её пароль, а в crypto выбираем способ шифрования, я использовал rc4 для работы и в поле -out выбираем куда отправим наш готовый файл ключей.
После успешного создания файла ключей отправим его на наш pfSense, я использовал для этого Far, но также можно сделать этот как командами, так и putty или через веб интерфейс pfSense в разделе «Диагностика\Командная строка».
Теперь мы можем отредактировать\создать /etc/krb5.conf
где /etc/krb5.keytab это созданный нами файл ключей.
Обязательно проверьте работу кербероса с помощью kinit, если не работает — дальше нет смысла читать.
Настройка аутентификации Squid и списка доступа без аутентификации
Успешно настроив керберос прикрутим его к нашему Squid`у.
Для этого перейдите в Сервисы\Squid Proxy Server и в основных настройках опуститесь в самый низ, там найдем кнопочку «Расширенные настройки».
В поле Custom Options (Before Auth) введем:
uде auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth — выбирает необходимый нам хелпер керберос аутентификации.
Ключ -s с значением GSS_C_NO_NAME — определяет использование любой учетной записи из файла ключа.
Ключ -k с значением /usr/local/etc/squid/squid.keytab — определяет использовать именно этот кейтаб файл. В моем случае это тот же сформированный нами кейтаб файл, который я скопировал в директорию /usr/local/etc/squid/ и переименовал, потому что с той директорией сквид дружить не хотел, видимо прав не хватало.
Ключ -t с значением -t none — отключает цикличные запросы к контроллеру домена, что сильно снижает нагрузку на него если у вас больше 50 пользователей.
На время теста также можно добавить ключ -d — т.е диагностика, больше логов будет выводиться.
auth_param negotiate children 1000 — определяет сколько одновременных процессов авторизации может быть запущено
auth_param negotiate keep_alive on — не дает разорвать связь во время опроса цепочки авторизации
acl auth proxy_auth REQUIRED — создает и требует список контроля доступа, включающий в себя пользователей, прошедших авторизацию
acl nonauth dstdomain «/etc/squid/nonauth.txt» — сообщаем сквиду о списке доступа nonauth в котором содержатся домены назначения, к которым всегда будет разрешен доступ всем. Сам файл создаем, а внутрь него вписываем домены в формате
Whatsapp не зря используется как пример — он очень привередлив к прокси с аутентификацией и не будет работать если его не разрешить до аутентификации.
http_access allow nonauth — разрешаем доступ к данному списку всем
http_access deny !auth — запрещаем доступ неавторизованным пользователям к остальным сайтам
http_access allow auth — разрешаем доступ авторизированным пользователям.
Всё, сам сквид у вас настроен, теперь самое время приступить к фильтрации по группам.
Настройка SquidGuard
Переходим в Сервисы\SquidGuard Proxy Filter.
В LDAP Options вводим данные нашей учетной записи, используемой для керберос аутентификации, но в следующем формате:
Если есть пробелы и\или не латинские символы всю эту запись стоит заключить в одинарные или двойные кавычки:
Далее обязательно ставим эти галочки:
Чтобы отрезать ненужные DOMAIN\pfsense DOMAIN.LOCALк которым вся система очень чувствительна.
Теперь переходим в Group Acl и привязываем наши доменные группы доступа, я использую простые наименования в духе group_0, group_1 и тд до 3, где 3 — доступ только в белый список, а 0 — можно всё.
Привязываются группы следующим образом:
сохраняем нашу группу, переходим в Times, там я создал один промежуток означающий работать всегда, теперь переходим в Target Categories и создаем списки по своему усмотрению, после создания списков возвращаемся в наши группы и внутри группы кнопочками выбираем кто куда может, а кто куда — нет.
LightSquid и sqstat
Если в процессе настройки мы выбрали лупбек в настройках сквида и открыли возможность заходить на 7445 в фаерволле как в нашей сети, так и на самом pfSense, то при переходе в Диагностика\Squid Proxy Reports мы без проблем сможем открыть и sqstat и Lighsquid, для последнего нужно будет там же придумать логин и пароль, а также есть возможность выбрать оформление.
Завершение
pfSense очень мощный инструмент, который может очень много всего — и проксирование трафика, и контроль над доступом пользователей в интернет это лишь крупица всего функционала, тем не менее на предприятии с 500 машинами это решило проблему и позволило сэкономить на покупке прокси.
Надеюсь данная статья поможет кому-нибудь решить достаточно актуальную для средних и крупных предприятий задачу.
Настройка прокси сервера на Windows
Настройте прокси-сервер в Windows, и приложения отправят ваш сетевой трафик через прокси-сервер. Например, вам может потребоваться использовать прокси-сервер, предоставленный вашим работодателем.
Как правило, вы будете использовать прокси-сервер, если ваша школа или работа предоставит вам его. Вы также можете использовать прокси-сервер, чтобы скрыть свой IP-адрес или доступ к закрытым сайтам, которые недоступны в вашей стране, но для этого рекомендуется использовать VPN (В чём отличие прокси-сервера от VPN?). Если вам нужно настроить прокси для школы или работы, получите необходимые учетные данные и изучите их.
Выбранные вами параметры будут использоваться для Microsoft Edge, Google Chrome, Internet Explorer и других приложений, использующих настройки прокси-сервера. Некоторые приложения, в том числе Mozilla Firefox, позволяют настраивать параметры прокси-сервера, которые переопределяют ваши системные настройки. Вот как настроить системный прокси в Windows 10, 8 и 7.
Windows 8 и 10
В Windows 10 вы найдете эти параметры в разделе «Настройки» → «Сеть и Интернет» → «Прокси». В Windows 8 тот же экран доступен в настройках ПК → Сетевой прокси.
Настройки здесь применяются, когда вы подключены к сетевым соединениям Ethernet и Wi-Fi, но не будете использоваться, когда вы подключены к VPN .
По умолчанию Windows пытается автоматически определить ваши настройки прокси с параметром «Автоматически определять настройки». В частности, Windows использует протокол автоматического обнаружения веб-прокси или WPAD. Бизнес и школьные сети могут использовать эту функцию для автоматического предоставления настроек прокси-сервера для всех ПК в своих сетях. Если для сети, к которой вы подключены, требуется прокси-сервер, и он предоставляет этот прокси через WPAD, Windows автоматически настроит и использует прокси-сервер. Если сеть не предоставляет прокси-сервер, он вообще не будет использовать прокси-сервер.
Если вы не хотите, чтобы Windows автоматически определяла настройки прокси-сервера, установите для параметра «Автоматическое определение настроек» значение «Выкл.». Затем Windows будет использовать прокси-сервер, если вы настроите его под настройкой прокси-сервера вручную.
В некоторых случаях вам может потребоваться вручную ввести адрес сценария установки для вашей конфигурации прокси. Для этого включите параметр «Использовать сценарий установки». Подключите сетевой адрес сценария в поле «Адрес сценария» и нажмите «Сохранить». Этот скрипт также можно назвать файлом .PAC.
Поставщик вашей организации или прокси предоставит вам адрес сценария установки, если он вам нужен.
Чтобы ввести настройки ручного прокси-сервера, включите «Использовать прокси-сервер» в разделе «Настройка прокси-сервера вручную». Введите адрес прокси-сервера и порт, который он использует в поле «Адрес» и «Порт».
Поставщик вашей организации или прокси-провайдера предоставит вам сетевой адрес и номер порта, который требуется прокси-серверу.
Когда вы подключаетесь к любому адресу, Windows отправляет трафик через прокси-сервер. Однако вы можете настроить список адресов, для которых Windows не будет использовать прокси-сервер. По умолчанию список включает только *.local . Звездочка — это подстановочный знак и означает «что угодно». Таким образом, если вы попытаетесь подключиться к server.local, database.local или чему-либо еще, что заканчивается на .local, Windows будет обходить прокси и напрямую подключаться.
Вы можете добавить больше записей в этот список. Просто разделите каждый с точкой с запятой (;) и пробелом. Например, предположим, вы хотели обойти прокси при подключении к ip-calculator.ru. Вы должны ввести:
Вы также можете отметить «Не использовать прокси-сервер для локальных (интрасети) адресов». Windows будет обходить прокси-сервер при подключении к ресурсам в локальной сети или в интрасети. Когда вы подключаетесь к адресам в Интернете, Windows будет использовать прокси-сервер.
Нажмите «Сохранить», когда вы закончите, чтобы изменить настройки прокси-сервера.
Windows 7
В Windows 7 вы можете изменить свой прокси-сервер в диалоговом окне «Настройки Интернета». Вы также можете использовать этот диалог в Windows 8 и 10, если хотите. Оба интерфейса меняют один и тот же общесистемный параметр.
Сначала откройте окно «Свойства браузера». Вы найдете его на панели управления → Сеть и Интернет → Свойства браузера. Вы также можете щелкнуть меню «Сервис» в Internet Explorer и выбрать «Свойства браузера», чтобы открыть его.
Перейдите на вкладку «Подключения» в верхней части окна «Свойства браузера». Нажмите кнопку «Настройки сети» в нижней части окна.
Опция «Автоматическое определение параметров» включена по умолчанию. Когда эта опция включена, Windows попытается автоматически обнаружить прокси-сервер с помощью протокола автоматического обнаружения веб-прокси или WPAD. Если прокси не предоставляется вашей сетью, никто не будет использоваться. Отключите эту опцию, чтобы Windows не могла использовать WPAD для автоматической настройки параметров прокси-сервера.
Параметр «Использовать сценарий автоматической конфигурации» позволяет ввести адрес сценария автоматической настройки прокси. Этот адрес будет предоставлен вашей организацией или прокси-провайдером, если вам это нужно.
Флажок «Использовать прокси-сервер для локальных подключений» позволит вам вручную включить и настроить прокси-сервер. Проверьте его и введите сетевой адрес и порт прокси ниже. Организация, предоставляющая ваш прокси-сервер, предоставит вам эти данные.
По умолчанию Windows автоматически отправит весь трафик через прокси-сервер, включая трафик на адреса в локальной сети или в интрасеть. Чтобы всегда обойти прокси-сервер при подключении к этим локальным адресам, установите флажок «Не использовать прокси-сервер для локальных адресов». Приложения будут обходить прокси-сервер и напрямую подключаться к ресурсам в вашей локальной сети, но не к интернет-адресам.
Нажмите кнопку «Дополнительно» в разделе «Прокси-сервер», если вы хотите изменить дополнительные параметры при включении ручного прокси-сервера.
Раздел «Серверы» позволяет вам установить другой прокси-сервер для протоколов HTTP, Secure (HTTPS), FTP и SOCKS. По умолчанию установлен флажок «Использовать тот же прокси-сервер для всех протоколов». Если вы знаете, что вам нужно использовать другой прокси-сервер для разных типов подключений, снимите этот флажок и введите необходимые данные здесь. Это не распространено.
В разделе «Исключения» вы можете указать список адресов, в которых Windows будет обходить прокси-сервер. По умолчанию он включает только *.local . Звездочка здесь известна как «подстановочный знак» и соответствует всему. Это означает, что любой адрес, заканчивающийся на «.local», включая server.local и database.local, будет доступен напрямую.
Если хотите, вы можете ввести дополнительные адреса. Используйте точку с запятой (;) и пробел для разделения каждой записи в списке. Например, если вы также хотели получить доступ к ip-calculator.ru напрямую, не пропуская прокси, вы должны ввести:
Когда вы пытаетесь подключиться к ip-calculator.ru, Windows затем сделает прямое подключение без прохождения через прокси-сервер.
Нажмите «ОК», чтобы сохранить изменения.
Если проблема связана с прокси-сервером — например, если прокси-сервер отключается или вы неправильно вводите данные прокси-сервера, вы увидите сообщение об ошибке сетевого прокси-сервера в используемых вами приложениях. Вам нужно будет вернуться к настройкам прокси-сервера и исправить любые проблемы.