Firewall do Windows - abrindo portas especificando .exe

3

Normalmente, você abre portas especificando o número da porta e o protocolo - TCP ou UDP. No entanto, o Windows permite adicionar exceções especificando o arquivo executável. Como funciona? O que acontece sob o capô quando seleciono, por exemplo, 'mygame.exe'?

Estou pensando em como isso é implementado no sistema operacional. O Windows teria que acompanhar os programas que declararam que eles escutam em uma porta específica X. Então, quando um pacote chega, ele verifica sua porta de destino, e depois ele verifica se algum dos programas na lista de exceções escuta essa porta e se mygame.exe está lá, ele encaminha o pacote para mygame.exe. Se não houver nenhum programa correspondente na lista de exceções, ele verificará a lista de portas abertas. Se a porta de destino não estiver nessa lista, o pacote será ignorado.

É assim que funciona?

    
por user4205580 02.11.2015 / 10:45

2 respostas

0

Sim, é assim que funciona. A Microsoft sugere que, na verdade, faça dessa maneira :

When you add a program to the list of allowed programs in a firewall, or when you open a firewall port, you allow a particular program to send information to or from your computer through the firewall. Allowing a program to communicate through a firewall (sometimes called unblocking) is like punching a hole in the firewall.

Each time you open a port or allow a program to communicate through a firewall, your computer becomes a bit less secure. The more allowed programs or open ports your firewall has, the more opportunities there are for hackers or malicious software to use one of those openings to spread a worm, access your files, or use your computer to spread malicious software to others.

It's generally safer to add a program to the list of allowed programs than to open a port. If you open a port, it stays open until you close it, whether or not a program is using it. If you add a program to the list of allowed programs, the "hole" is open only when needed for a particular communication.

    
por 02.11.2015 / 11:13
0

I'm thinking how is it implemented in the OS. Windows would have to keep track of the programs which declared they listen on a specific port X. Then, as a packet arrives, it checks it destination port, next it checks if any of the programs on the exceptions list listens on that port and if mygame.exe is there, it forwards the packet to mygame.exe. If there's no matching program on the exception list, then it checks the list of open ports. If the destination port is not on that list, the packet is ignoerd.

Is this how it works?

Não, não é assim que funciona. Na verdade, é mais simples que isso:

  • O firewall não lida com o encaminhamento de pacotes para programas - o Winsock faz
  • Existe apenas um conjunto de regras
  • Não há "pedido" no qual as regras são verificadas

A maneira como o firewall do Windows funciona é descrita em detalhes nesta Artigo da technet da Microsoft.

When an incoming packet reaches your computer, Windows Firewall inspects the packet and determines whether it meets criteria specified in the Windows Firewall exceptions list (the combination of the NAT Mapping Table and the Windows Firewall rules store). If the packet matches an entry in the list, Windows Firewall passes the packet to the TCP/IP protocol for further processing. If the packet does not match an entry in the list, Windows Firewall silently discards the packet and creates an entry in the Windows Firewall log file (if the log file is enabled on the Log Settings dialog box in Windows Firewall). The entries in the exceptions list can consist of program names, system service names, TCP ports, and UDP ports. There is no way to create an entry in the exceptions list based on the IP Protocol field in the IP header.

Basicamente, no modo padrão, o firewall só se importa com a negação de pacotes. Se não corresponder a uma regra, o firewall a abandona. Caso contrário, o firewall simplesmente não faz nada, permitindo que o Winsock o encaminhe para o programa relevante.

    
por 02.11.2015 / 12:42