regras do iptables não funcionam

regras do iptables não funcionam

Não sei por que minhas regras de iptable estão bloqueando o acesso, https://example.com:9700apesar acceptda regra ter sido adicionada

Eu começo limpando tudo

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

Em seguida, descartando tudo, adicionando exceção para ssh e minha porta 9700

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9700 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

O serviço funciona após a liberação e para de funcionar após o segundo conjunto de regras.

Observe que a regra para SSH funciona perfeitamente. Posso me reconectar ao meu servidor via SSH depois que a regra for adicionada

Problema de DNS O DNS verificado não está funcionando de acordo com uma das respostas. No entanto, isso não explica porque ainda não consigo acessá-lo via endereço IP:https://xx.xxx.xx.x:9700

Responder1

Você pode resolver o nome de example.com? Se você bloquear o acesso a qualquer serviço de nomes, sua máquina não conseguirá acessar example.com - você teria que adicionar o host example.com e seu endereço IP em /etc/hosts ou adicionar uma exceção iptables para seu DNS .

Conforme postadoaqui, uma exceção para pesquisas de DNS seria:

iptables -A INPUT -p udp --source-port 53 -j ACCEPT

EDITAR:

Como você superou os problemas de DNS, analisei mais profundamente sua regra e, para minha compreensão do iptables, ela não pode funcionar. Você está permitindo tráfego de INPUT (para sua máquina) na porta de destino 9700 (em sua máquina!) e tráfego de SAÍDA (de sua máquina para fora) de sua porta local 9700.

O que você quer é exatamente o oposto (ou estou errado?): você quer que sua máquina chegue a um servidor externo na porta 9700 e quer que este servidor possa te responder.

Portanto, suas duas últimas regras deveriam ser:

iptables -A OUTPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

Isso permite o tráfego que começa em qualquer porta (porque você não pode controlar qual porta um protocolo usará para o tráfego de saída) no seu computador para qualquer outra máquina na porta 9700 e permite o tráfego de qualquer outra máquina no mundo para o seu computador SE os pacotes fazem parte de uma conexão que já foi estabelecida.

Responder2

Tentar:

iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 9700 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 9700 -m state --state ESTABLISHED -j ACCEPT

Suponho que o servidor DNS que resolve o endereço IP example.com não seja a mesma máquina.

Além disso, não acho que seja realmente um problema definir a política da cadeia OUTPUT como ACCEPT. Experimente.

Este conjunto de regras funciona para mim. Deve funcionar para você também.

Atenciosamente!

informação relacionada