No Windows Server que estou olhando, o IIS executa o serviço de publicação WWW, e ele é protegido por firewall para permitir apenas as portas 80 e 443 para esse serviço. Conexões de navegadores de clientes expiram, e quando olho no log de eventos de segurança no servidor, vejo eventos registrados como este:
The Windows Filtering Platform has blocked a connection.
Application Information:
Process ID: 4
Application Name: System
Network Information:
Direction: Inbound
Source Address: 192.168.10.21 <= This is this server where the event is logged
Source Port: 80 <= This is the IIS WWW publishing service listening port
Destination Address: 192.168.10.3 <= This is the client PC where the browser requests the URL on the IIS
Destination Port: 60112
Protocol: 6
Filter Information:
Filter Run-Time ID: 86327
Layer Name: Receive/Accept
Layer Run-Time ID: 44
Se a conexão for de entrada, como dito acima, a origem deve ser 192.168.10.3, a porta de origem deve ser qualquer porta alta aleatória que o navegador usa, o destino deve ser 192.168.10.21 e a porta de destino deve ser 80, mas é o contrário.
Não entendendo por que os campos de eventos estão de cabeça para baixo, não consigo imaginar uma maneira de permitir essa conexão.
Se essa não for realmente a solicitação original, mas a resposta do IIS à solicitação que foi permitida, então por que ela está sendo bloqueada? Não há regras de bloqueio no firewall, e a única regra que pertence a conexões HTTP(s) é a regra Allow inbound para o serviço WWW do IIS.
Eu configurei vários servidores Apache e suas respectivas regras da maneira que descrevi acima, e nunca tive problemas. Se o IIS precisa de uma abordagem diferente, então por que e como? É um requisito do fornecedor que o site rode no IIS, então não tenho liberdade a esse respeito.
EDITAR:
Se eu modificar a regra para aplicar a quaisquer programas ou serviços, então a conexão funciona. Se eu restringi-la para aplicar somente a serviços, ela ainda funciona. E somente quando eu seleciono especificamente o Worldwide Web Publishing Service como seu alvo, então ele para de permitir a conexão. A partir disso, fica claro que há algum problema entre o Firewall do Windows e o IIS, mas o que é?