Bloqueando Portas

Delphi

15/12/2004

Olá pessoal, alguém sabe como é possível bloquear uma determinada porta via Delphi?


Dan.sm

Dan.sm

Curtidas 0

Respostas

Ipc$

Ipc$

15/12/2004

Olá !
Crie um TServerSocket e deixe-o ativo naquela porta.
No evento onAccept vc coloca: Socket.Close;


GOSTEI 0
Dan.sm

Dan.sm

15/12/2004

Valeu.
E tem como eu fazer como os firewalls, ou seja, abrir a porta só para um determinado programa utilizar?


GOSTEI 0
Ipc$

Ipc$

15/12/2004

E tem como eu fazer como os firewalls, ou seja, abrir a porta só para um determinado programa utilizar?


Bom, vc pode exigir uma determinada sequência de caracteres como primeiro envio; como uma senha por exemplo e se não bater, vc dá um Close no Socket do intruso.


GOSTEI 0
Nildo

Nildo

15/12/2004

Olha, se a porta ja estiver aberta e você for fazer o que o IPC$ falou, vai dar erro. Esses sóftwares utilizam API Hooking para este fim. Baixe a biblioteca MadCodeHook disponível no pacote MadCollection (free para uso não comercial) em www.madshi.net

Com ela você vai interceptar as chamadas para qualquer API (no caso as APIs da WinSock como ACCEPT, essas coisas). Então você tem que verificar se a porta que está tentando ser aberta é a N, você simplesmernte cancela a operação. Caso contrário você reprocessa a operação. Vide exemplos da MadCodeHook para saber como trabalhar com interncepções de APIs


GOSTEI 0
Ipc$

Ipc$

15/12/2004

Olha, se a porta ja estiver aberta e você for fazer o que o IPC$ falou, vai dar erro.

É isso mesmo, o TServerSocket é para se trabalhar no esquema servidor-clientes. Ele abre a porta e os programas-cliente se conectam a ele através dessa porta. Se um outro programa tentar reabrí-la, dará erro.


GOSTEI 0
Nildo

Nildo

15/12/2004

Sim, mas creio que ele queira bloquear uma determinada Porta para apenas um determinado aplicativo como num Firewall. Utilizando este método não vai ser possível


GOSTEI 0
Massuda

Massuda

15/12/2004

[...] como é possível bloquear uma determinada porta via Delphi? [...] E tem como eu fazer como os firewalls, ou seja, abrir a porta só para um determinado programa utilizar?
Desculpe me intrometer, mas, apenas para matar minha curiosidade, você está tentando implementar seu próprio firewall?


GOSTEI 0
Dan.sm

Dan.sm

15/12/2004

Sim, estou tentando fazer um firewall caseiro. Pq?


GOSTEI 0
Massuda

Massuda

15/12/2004

Sim, estou tentando fazer um firewall caseiro. Pq?


A princípio não é possível fazer um firewall em Delphi.

Os firewalls atuam em um nível mais baixo do que o TServerSocket/TClientSocket, Indy ou ICS funcionam. Além do que o Nildo mencionou sobre API hooking (geralmente um hook global), um bom firewall geralmente tem algum device driver que monitora os protocolos na interface de rede e um device driver não pode ser escrito em Delphi.

Por exemplo, a solução de bloqueio de porta usando o TServerSocket indicará a um possível invasor que existe um servidor ativo que está recusando conexão (em outras palavras, o invasor encontrou um IP com uma máquina ligada). Embora você não esteja permitindo a conexão, isso não impede um ataque contra sua máquina. Um invasor pode inundar sua máquina com pedidos de conexão a ponto de derrubar sua máquina (basicamente é isso que se faz em um ataque DOS/DDOS) ou, pior ainda, explorar alguma outra porta e conseguir invadir sua máquina.

Quando você tenta conectar numa porta bloqueada por um bom firewall, o que você observa é a ausência de qualquer tipo de resposta (incluindo resposta dos protocolos de baixo nível), de modo que não dá para o invasor saber se sua máquina optou por bloquear a conexão ou se ele está tentando conectar com uma máquina desligada/inexistente.

Bom... agora uma dica... se você não tem dificuldades com C/C++, vale a pena dar uma olhada em alguns artigos sobre [url=http://www.codeproject.com/internet/#Proxy+¬2F+Firewall]firewall do site The Code Project[/url].


GOSTEI 0
Ipc$

Ipc$

15/12/2004

Sim, mas creio que ele queira bloquear uma determinada Porta para apenas um determinado aplicativo como num Firewall.

Bom, nesse caso minha ajuda será nula pq na parte de Firewalls entendo praticamente nada, só sei que são como um porteiro que controla tudo o que entra e sai do computador. Utilizo um chamado Sygate Personal Firewall que é gratuito e confesso que mal sei configurá-lo corretamente.
Acredito que os colegas Nildo e Massuda possam auxiliá-lo melhor nessa parte.


GOSTEI 0
Dan.sm

Dan.sm

15/12/2004

Bom, gostaria de agradecer a ajuda de todo mundo. Vou dar uma olhada nos links e se eu conseguir fazer alguma coisa eu posto aqui. Falow.


GOSTEI 0
POSTAR