Construa a ideia primeiro, depois use a próxima atividade para verificá-la.
Filtrando por serviço, não apenas por host
Adicionar protocolo e porta a uma regra, e as três respostas que uma porta bloqueada pode te dar.
O que você será capaz de fazer
- Escrever uma regra que permite um serviço, não um host
- Explicar por que um permit específico de porta é a forma de menor privilégio
- Distinguir uma porta aberta, recusada e filtrada pela resposta
- Dizer por que descartar é melhor do que rejeitar para uma regra pensada para ser discreta
Antes disso: Você precisa da ordem de primeira correspondência e do deny implícito de "Filtrando tráfego com uma ACL", e de portas de "TCP, UDP e portas".
Por que isso importa: Uma regra que permite que um host alcance outro permite todo serviço nele - o banco de dados, a interface de gerência, o que for instalado no ano que vem. Nomear o serviço é a diferença entre uma lista de acesso que expressa uma intenção e uma que apenas a aproxima.
Uma lista de acesso que nomeia apenas endereços responde à pergunta “que essas duas máquinas conversem”. Essa raramente é a pergunta que alguém realmente fez. A solicitação real é quase sempre sobre um serviço — a equipe da web precisa da porta do aplicativo, o auditor precisa ler um sistema, a rede de convidados precisa da Internet e nada interno.
Adicionar o serviço a uma regra
Uma regra pode corresponder ao protocolo de transporte e à porta de destino, bem como aos endereços. Mesma ordem na primeira partida, mesma negação implícita no final - mais um campo para jogar.
# Permits everything between these two hosts
permit src 10.30.10.25 dst 10.30.30.10
# Permits one service, and nothing else, between the same two
permit src 10.30.10.25 dst 10.30.30.10 tcp dport 443
A porta de destino é aquela que identifica o serviço, porque é a porta em que o servidor escuta. A porta de origem é escolhida aleatoriamente pelo cliente para cada conexão e não é útil combiná-la - combiná-la é um erro precoce comum e produz uma regra que funciona uma vez e depois para.
Tráfego de retorno
Uma solicitação enviada precisa de uma resposta retornada, e a resposta chega na porta de origem aleatória que o cliente escolheu. Uma lista sem estado precisa permitir a entrada de uma ampla variedade de portas para permitir qualquer resposta, o que desfaz grande parte da precisão que acabamos de obter.
A correspondência no estado da conexão resolve isso corretamente. O firewall rastreia quais conexões ele permitiu de saída e admite as respostas pertencentes a elas, sem uma regra que permitiria que qualquer pessoa iniciasse uma nova conexão de entrada.
# Replies to connections we already allowed out
permit ct state established,related
# One service, inbound, from one source
permit src 10.30.10.25 dst 10.30.30.10 tcp dport 443
As três respostas
Quando uma conexão com uma porta não é bem-sucedida, a forma como ela falha indica algo específico. Vale a pena conhecer isso tanto para o diagnóstico quanto para decidir como uma regra de negação deve ser escrita.
| Resultado | O que aconteceu | O que isso significa |
|---|---|---|
| Aberto | A conexão foi concluída | Algo está ouvindo e nada o filtrou |
| Recusado | Uma reinicialização voltou imediatamente | O pacote chegou ao host e recebeu uma resposta - ou nada está escutando ou uma regra o rejeitou |
| Filtrado | Nenhuma resposta, até o tempo limite | Algo o descartou silenciosamente. |
O sinal distintivo é o tempo. Uma recusa retorna instantaneamente porque algo respondeu. Uma queda leva o tempo limite total porque nada aconteceu. Ambos parecem “não se conectaram” se você não estiver observando a diferença.
Caindo contra a rejeição
| Ação | Resposta enviada | Efeito em um scanner | Efeito em um cliente legítimo |
|---|---|---|---|
| Deixar cair | Nenhum | Lento - cada porta custa um tempo limite total | Falha lenta, erro menos claro |
| Rejeitar | Uma reinicialização imediata ou mensagem ICMP | Rápido - a verificação é concluída rapidamente | Falha rápida, erro mais claro |
Cair é o padrão correto em um limite que enfrenta qualquer coisa não confiável: custa tempo ao atacante e não revela nada sobre o que está lá. Rejeitar é mais gentil dentro de uma rede que você controla, onde uma falha rápida e clara poupa alguém de uma tarde de diagnóstico e não há nenhum scanner para frustrar.
Uma auditoria que descobriu mais do que a regra dizia
A regra que permite que a camada da web alcance a camada do aplicativo foi escrita por endereço, porque na época o servidor do aplicativo executava um serviço. Agora, ele também executa o banco de dados, em sua porta padrão. Nada na lista de acesso mudou e nada parece errado nela — os servidores web simplesmente obtiveram acesso direto ao banco de dados no dia em que o serviço começou, e a regra que o concedeu foi escrita anos antes por um motivo diferente.
Verificando por comportamento
Uma regra que lê corretamente ainda pode não funcionar, e um aluno que obteve o mesmo resultado de forma diferente não deve ser marcado como errado. Verificar um filtro significa testar o que realmente importa na máquina.
# Should connect
nc -w 3 10.30.30.10 443
# Should time out with no response at all
nc -w 3 10.30.30.10 3306
Terminologia
- Porta de destino
- A porta em que o servidor escuta e aquela que identifica um serviço em uma regra.
- Filtragem com estado
- Rastrear conexões permitidas para que as respostas sejam admitidas sem uma regra que permita novas conexões de entrada.
- Filtrado
- Uma porta cujo tráfego é descartado silenciosamente, sem dar resposta.
- Recusado
- Uma porta que respondeu com uma reinicialização - ou nada escutando ou uma regra de rejeição.
Principais pontos
- Combine a porta de destino para permitir um serviço; a porta de origem é aleatória e inútil de combinar.
- Uma permissão somente de endereço concede todos os serviços desse host, incluindo os futuros.
- O estado de conexão correspondente admite respostas sem permitir novas conexões de entrada.
- Abrir, recusar e filtrar são três resultados distintos, diferenciados pelo fato de alguma coisa ter respondido.
- Por meio do TCP, uma recusa não pode ser diferenciada de um serviço interrompido.
- Caia em um limite não confiável; rejeite dentro de uma rede em que erros claros ajudam mais do que custam.
Pronto para continuar?
Crie uma conta gratuita para salvar seu progresso e fazer a verificação de conhecimento.
