Estou tentando configurar o iptables para configurações de segurança.
Basicamente, configurei uma lista de permissões e tentei testá-la.
Defino as seguintes configurações para permitir ssh, http e https em meu servidor, permitindo valores de entrada de 22.80.443. E portos temporários também foram permitidos.
sudo iptables -t filter -F
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3000: -j ACCEPT
A seguir está uma lista de configurações.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:3000:65535
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Eu permiti como acima, mas consegui me conectar normalmente ao ssh e ao apache na porta 80 do meu servidor.
No entanto, o comando “curl https://google.com” não respondeu corretamente no meu servidor.
O estranho é depois de adicionar a seguinte regra:
sudo iptables -P INPUT ACCEPT
Quando faço "curl https://google.com", a comunicação é concluída normalmente.
Qual é a razão para isso e qual é a solução?
A última regra de entrada do iptables está formatada incorretamente
E adicione alguns registros para ter mais informações sobre solução de problemas.
Você também pode usar analisadores de log como logwatch e iptables-log-parser para obter mais insights dos logs.
O problema é que você não tem uma regra para permitir a passagem de pacotes de resposta da Internet.
Ou seja, a solicitação DNS é enviada para um host da Internet na porta UDP 53, e sua resposta vem da Internet da porta UDP para uma porta aleatória que o cliente usou para fazer a solicitação.
Da mesma forma, os pacotes TCP da Internet são descartados, porque não existe uma regra que permita pacotes da porta 443 do servidor da Internet para a porta aleatória do cliente.
Você precisa adicionar o seguinte:
Isso permite o rastreamento de conexão do Netfilter, que garante que os pacotes IP de uma conexão TCP/associação UDP sejam permitidos corretamente.