• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Не блокировать порт

  • Автор темы Red Wind
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Red Wind

Доброго времени суток!
Пишу приложение которое должно работать с портом через TcpListner. Всё ок, но мне бы хотелось сделать так, что бы если моё приложение не блокировало порт, то есть к этому порту поверх меня должно подключаться другое приложение.
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
и как эти два приложения будут делить пакеты? конечно беркли сокетов есть опция позволяющая связывать несколько сокетов на один порт, но в твоем случае она вряд ли применима

SO_REUSEADDR
By default, a socket cannot be bound (see bind) to a local address that is already in use. On occasion, however, it can be necessary to reuse an address in this way. Because every connection is uniquely identified by the combination of local and remote addresses, there is no problem with having two sockets bound to the same local address as long as the remote addresses are different. To inform the Windows Sockets provider that a bind on a socket should not be disallowed because the desired address is already in use by another socket, the application should set the SO_REUSEADDR socket option for the socket before issuing the bind. Note that the option is interpreted only at the time of the bind: it is therefore unnecessary (but harmless) to set the option on a socket that is not to be bound to an existing address, and setting or resetting the option after the bind has no effect on this or any other socket. SO_REUSEADDR is not applicable for ATM sockets, and although requests to reuse and address do not result in an error, they have no affect on when an ATM socket is in use.
 
R

Red Wind

Я понимаю, но как тогда работает тот же фаервол? Хотя мне вообще не нужно перехватывать трафик с порта, мне просто требуется повесить на порт ssl сертификат. То есть сделать так, что бы весь входящий трафик расшифровывался этим сертификатом и расшифровонные данные передавались какому либо клиенту.
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
ну у файрволов совсемдругой подход
для твоего случая можно использовать так назваемый ремапинг портов(просто) или LSP (сложно)
 
R

Red Wind

А можешь дать какие-нибудь ссылки где про это написано. А то меня только на форумы сисадминов из гугла выкидывает.
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
по LSP конечно могу дать ссылочку , но в данном случае это будет стрельба из пушки по воробьям.

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

Red Wind

Про LSP я прочитал в MSDN, а вот инфу про ремаппинг портов так и не нашёл. Собственно ссылки на неё я и просил.
<!--QuoteBegin-Kmet+1:05:2007, 23:12 -->
<span class="vbquote">(Kmet @ 1:05:2007, 23:12 )</span><!--QuoteEBegin-->если клиентское приложение позволяет настраивать хост по которому происходит коннект
[snapback]64170" rel="nofollow" target="_blank[/snapback]​
[/quote]
Что значит хост?
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
я не совсем правильно выразился. позволяет настраивать IP и порт к которому происходит коннект
 
R

Red Wind

То есть под ремаппингом портов понимается перенаправление трафика на другой порт?
 
P

Pasha

Для: Red Wind
так что конкретно тебе надо сделать? Повесить 2 независимых приложения на один порт? Или добавить шифрование к уже существующему соединению?
 
R

Red Wind

Добавить шифрование, но приложение которое висит на этом порту я изменять не могу.
 
P

Pasha

В клиентской части приложения можно явно задать ip сервера? Если да, то делаешь следующий финт ушами:
1. Клиентская часть висил на машине ip_A, серверная на машине ip_B:portX
2. Пишешь свое приложение из 2-х частей. Первая часть (прокси-клиент) вешается на ip_A:portX.
3. Клиентское приложению говоришь коннектится к ip_A:portX вместо ip_B:portX.
4. Прокси-клиент шифрует все, что получает от клиентского приложения и отправляет это все на ip_B:portY.
5. На ip_B:portY висит прокси-сервер, который расшифровывает все, и отдает это серверу ip_B:portX.
6. Данные от сервера идут через эту мегацепочку в обратной последовательности.

Если явно задать ip сервера нельзя, то начинаешь бить в бубен с записями в hosts и порт мэппингом.

Если использовать SSL не самоцель, а просто требуется секьюрность соединения в какой-то несекьюрной общей сети, то настрой RAS на сервере, и сделай VPN на 2 машины. Тогда вообще ничего писать не придется.
 
R

Red Wind

К сожалению, к клиентской части я вообще не имею никакого отношения. Все ухищрения нужно делать на сервере.
 
P

Pasha

Т.е. клиент в любом случает будет передавать данные в открытом виде, а сервер просто для развлечения будет их сам для себя шифровать? :) Нафига тогда вообще шифрование?
 
R

Red Wind

Клиент в любом случае будет шифровать данные и передавать их на сервер в таком виде.
 
P

Pasha

Для: Red Wind
А сервер на другой порт можно перевесить?
 
R

Red Wind

Лан, спасибо. Буду перенаправлять расшифрованый трафик на другой порт.
 
G

Guest

Вообще-то Паша прав: сначала надо понять что делается и зачем. В зависимости от требований к безопасному каналу и вообще к безопасности этих данных, перенаправление внутри машины тоже может представлять проблемы. Например, случайная мисконфигурация может отправить расшифрованные пакеты гулять по сети. И кстати, а как вообще получилось, что клиент данные шифрует, а сервер - нет, при этом они очевидно используют один и тот же протокол поверх криптографии...?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!