Прямой и обратный прокси. Вперед прокси
Прямой и обратный прокси. Вперед прокси
Прямой прокси похож на трамплин, и прокси получает доступ к внешним ресурсам.
Например:
Я пользователь, я не могу получить доступ к определенному веб-сайту, но я могу получить доступ к прокси-серверу, и к этому прокси-серверу он может получить доступ к веб-сайту, к которому у меня нет доступа, поэтому я сначала подключаюсь к прокси-серверу и говорю ему, что мне нужен недоступный веб-сайт Содержание извлекается прокси-сервером, а затем возвращается ко мне. С точки зрения веб-сайта, когда прокси-сервер извлекает контент, существует только одна запись, которая иногда неизвестна запросу пользователя, и информация о нем также скрыта, в зависимости от того, сообщил ли прокси-сервер веб-сайту.
Клиент должен установить прямой прокси-сервер, конечно же, необходимо знать IP-адрес прямого прокси-сервера и порт прокси-программы.
Например, использовали такое программное обеспечение, как CCproxy, http://www.ccproxy.com/ Адрес прокси должен быть настроен в браузере.
Nginx прямой прокси. Обратный прокси
Об агенте
Когда дело доходит до агентства, мы должны сначала прояснить концепцию: так называемое агентство - это представитель и канал;
На этом этапе разрабатываются две роли: одна - делегированная роль, а другая - целевая роль. Процесс, с помощью которого делегированная роль обращается к целевой роли через этого агента для выполнения некоторых задач, называется процессом работы агента, как специализированное хранилище в жизни: гости переходят в adidas. В магазине купили пару обуви. Этот магазин - агент, роль агента - производитель adidas, а целевая роль - пользователь.
Прямой прокси
Прежде чем говорить об обратном прокси-сервере, давайте посмотрим на прямой прокси-сервер. Прямой прокси-сервер также является наиболее часто используемой моделью прокси-сервера. Мы поговорим о модели обработки прямого прокси-сервера с двух сторон, от программного обеспечения и жизни. Чтобы объяснить, что такое прямой прокси
В сегодняшней сетевой среде, если нам необходимо посетить некоторые иностранные веб-сайты по техническим причинам, в настоящее время вы обнаружите, что нет доступа к определенному веб-сайту, расположенному за границей через браузер. В настоящее время каждый может использовать одну операцию FQ. Для доступа FQ-способ заключается в основном в поиске прокси-сервера, который может обращаться к иностранным веб-сайтам. Мы отправляем запрос на прокси-сервер, прокси-сервер переходит на иностранный веб-сайт, а затем передает полученные данные нам!
Вышеприведенный режим прокси называется прямым прокси. Самая большая особенность прямого прокси заключается в том, что клиент очень четко знает адрес сервера, к которому осуществляется доступ. Сервер знает только, с какого прокси-сервера поступил запрос, и не знает, с какого конкретного клиента он пришел. Режимы блокируют или скрывают реальную информацию клиента.
Reverse proxy habr. Постановка задачи
В ходе проведения пентестов и RedTeam кампаний не всегда удается воспользоваться штатными средствами Заказчиков, такими как VPN, RDP, Citrix и т.д. в качестве закрепления для захода во внутреннюю сеть. Где-то штатный VPN работает по MFA и в качестве второго фактора используется железный токен, где-то он жестоко мониторится и наш вход по VPN сразу же становится виден, как говорится — со всеми вытекающими, а где-то таких средств попросту нет.В подобных случаях постоянно приходится делать так называемые «обратные туннели» — соединения из внутренней сети к внешнему ресурсу или контролируемому нами серверу. Внутри такого туннеля мы уже можем работать с внутренними ресурсами Заказчиков.Существуют несколько разновидностей таких обратных туннелей. Самый известный из них, конечно же, Meterpreter. Так же большим спросом в народных хакерских массах пользуются SSH-туннели с обратным пробросом портов. Средств осуществления обратного туннелирования достаточно много и многие из них хорошо изучены и описаны.Конечно же, со своей стороны разработчики защитных решений не стоят в стороне и активно детектируют подобные действия.К примеру, MSF-сессии успешно детектируются современными IPS от Cisco или Positive Tech, а обратный SSH- туннель можно задетектить практически любым мало-мальским нормальным файерволлом.Следовательно, для того чтобы остаться незамеченным в хорошей RedTeam кампании — нам необходимо строить обратный туннель нестандартными средствами и максимально близко подстраиваться под реальный режим работы сети.Давайте попробуем найти или изобрести нечто подобное.Прежде чем что-то изобретать надо понять, какого результата мы хотим достичь, какие функции должна выполнять наша разработка. Какие же будут требования к туннелю, чтобы мы могли работать в режиме максимальной скрытности?Понятно, что для каждого случая такие требования могут сильно отличаться, но по опыту работы можно выделить основные:
- работа на ОС Windows-7-10. Так как в большинстве корпоративных сетях используется именно винда;
- клиент соединяется с сервером по SSL для исключения тупого прослушивания средствами ips;
- при соединении клиент должен поддерживать работу через прокси-сервер с авторизацией, т.к. во многих компаниях выход в интернет происходит через прокси. На самом деле, клиентская машина может об этом даже ничего и не знать, а прокси используется в транспарентном режиме. Но такой функционал мы должны заложить;
- клиентская часть должна быть лаконична и портабельна;
Понятно, что для работы внутри сети Заказчика на клиентской машине можно установить OpenVPN и поднять полноценный туннель до своего сервера (благо что клиенты openvpn умеют работать через прокси). Но, во-первых, это не всегда получится, так как мы можем не быть там локальными админами, а во-вторых, это наделает так много шуму, что порядочный SIEM или HIPS тут же на нас «настучит куда надо». В идеале наш клиент должен быть так называемой inline командой, как например реализованы многие bash-шеллы, и запускаться через командную строку, например, при выполнении команд из word-макроса. - наш туннель должен быть многопоточным и поддерживать множество соединений одновременно;
- соединение клиент-сервер должно иметь какую-либо авторизацию, чтобы туннель устанавливался только для нашего клиента, а не для всех, кто придет к нам на сервер по указанному адресу и порту. В идеале, для «сторонних пользователей» должна открываться лендинг-страница с котиками или профессионально тематикой, связанной с исходным доменом.
Например, если Заказчиком выступает медицинская организация, то для администратора информационной безопасности, решившего проверить ресурс, на который обращался сотрудник клиники, должна открыться страница с фармацевтическими товарами, википедия с описанием диагноза или блог доктора Комаровского и т.д.
Обратный прокси-сервер iis. Inbound Traffic (Internet/O365 – > On-Premises)
When we refer to Inbound Exchange Traffic, from the Internet to on-premises, it usually means traffic for the usual Exchange clients such as Outlook Anywhere, EAS, OWA and EWS (users whose mailboxes are still on-premises). However in Hybrid scenarios we have additional requests for the Security Token Service (STS), or ADFS Proxy Servers by another name. Hence when configuring IIS ARR for inbound traffic we have to make sure that we add the necessary configuration required for the STS.
Follow the earlier articles (,and) which explain how to create the Web Farms and their corresponding URL Rewrite rules for the Exchange Services (Outlook Anywhere, OWA, EAS, AutoDiscover etc). For this example I have chosen the simplest implementation described in the previous blog posts (Option1) for the Exchange traffic.
Create a new Web Farm for your STS endpoints ( in my example and add each of your ADFS Proxy servers. This assumes that you have not setup any network load balancing between the ADFS Proxy servers, which is fine because we’ll be making use of IIS ARR’s load balancing capabilities to achieve load balancing and high availability of the ADFS Proxy servers.
Configure the properties of the Web Farm (sts.roopdemo.co.uk)
- –> Disable Disk Cache
- Health Test : There is no Health Check URL for ADFS and thus we need to create one so that IIS ARR can test for service availability of the ADFS service and make appropriate decisions in the event of a failure.
- Log on to one of the ADFS Proxy servers and create a HealthCheck.txt file on the ADFS Proxy server (in my example I do this at the root of the web site).
- On the ADFS Proxy server, open IIS Manager –> Default Web Site –> Explore
- Create a text file named HealthCheck.txt with the word Healthy in it.
- Repeat the above steps on all the ADFS Proxy servers.
- To verify that the HealthCheck.txt file renders properly, open the file in a Web browser.
- Once this is working, in IIS Manager expand the server node and select the sts.roopdemo.co.uk server farm.
- In the Server Farm pane, double-click Health Test .
- On the Health Test page, enter the following details:
Make sure you enter the Healthy in the Response match box (response match is an optional test that searches the body of a response and looks for an expected string. Since the HealthCheck.txt file contains the word “Healthy,” the response match test will look for the word “Healthy”).
- Log on to one of the ADFS Proxy servers and create a HealthCheck.txt file on the ADFS Proxy server (in my example I do this at the root of the web site).
- Load Balance –> Choose “Least current request”. Here we are making use of IIS ARR’s L7 load balancing capabilities, to effectively load balance the ADFS traffic between the ADFS Proxy servers.
- Proxy –> Change the below two values. The actual value for these settings may need to be tweaked for your deployment, but these usually work well for a start.
- Time-Out: 300 seconds
- Response Buffer threshold: 0
- Routing Rules - Uncheck “Enable SSL Offloading”.
- Server Affinity - No changes required.
Reverse proxy docker. What to Do
Now you should have a config folder on your host. Changing to that directory, you should see a bunch of different files and a folder calledconf.d
. It’s insideconf.d
that all your configuration files will be placed. Right now there’s a singledefault.conf
file, you can go ahead and delete that.
Still insideconf.d
, create two folders:sites-available
andsites-enabled
. Navigate intosites-available
and create your first configuration file. Here we’re going to setup an entry for Plex , but feel free to use another service that you have set up if you like. It doesn’t really matter what the file is called, however I prefer to name it likeplex.conf
.
Now open the file, and enter the following:
upstream plex {
server plex:32400;
}
server {
listen 80;
server_name plex.example.com;
location / {
proxy_pass http://plex;
}
}
Go into thesites-enabled
directory, and enter the following command:
ln -s ../sites-available/plex.conf .
This will create a symbolic link to the file in the other folder. Now there’s only one thing left, and that is to change thenginx.conf
file in the config folder. If you open the file, you should see the following as the last line:
include /etc/nginx/conf.d/*.conf;
Change that to:
include /etc/nginx/conf.d/sites-enabled/*.conf;
In order to get the reverse proxy to actually work, we need to reload the nginx service inside the container. From the host, rundocker exec
. This will run a syntax checker against your configuration files. This should output that the syntax is ok. Now rundocker exec
. This will send a signal to the nginx process that it should reload, and congratulations! You now have a running reverse proxy, and should be able to access your server at plex.example.com (assuming that you have forwarded port 80 to your host in your router).
Even though your reverse proxy is working, you are running on HTTP, which provides no encryption whatsoever. The next part will be how to secure your proxy, and get a perfect score on SSL Labs .