Las reglas de iptables no funcionan.

Las reglas de iptables no funcionan.

No sé por qué mis reglas de iptable bloquean el acceso https://example.com:9700a pesar de acceptque se agregó la regla

empiezo por limpiar todo

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

Luego, abandono todo y agrego una excepción para ssh y mi puerto 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

El servicio funciona después de la autorización y deja de funcionar después del segundo conjunto de reglas.

Tenga en cuenta que la regla para SSH funciona perfectamente bien. Puedo volver a conectarme a mi servidor a través de SSH después de que se haya agregado la regla

Problema de DNS El DNS verificado no funciona según una de las respuestas. Sin embargo, eso no explica por qué todavía no puedo acceder a través de la dirección IP:https://xx.xxx.xx.x:9700

Respuesta1

¿Puedes resolver el nombre de ejemplo.com? Si bloquea el acceso a cualquier servicio de nombres, su máquina no podrá acceder a example.com; deberá agregar el host example.com y su dirección IP en /etc/hosts o agregar una excepción de iptables para su DNS. .

Como se publicóaquí, una excepción para las búsquedas de DNS sería:

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

EDITAR:

Dado que superó los problemas de DNS, analicé más profundamente su regla y, según mi comprensión de iptables, no puede funcionar. Está permitiendo el tráfico de ENTRADA (a su máquina) en el puerto de destino 9700 (¡en su máquina!) y el tráfico de SALIDA (desde su máquina hacia el exterior) desde su puerto local 9700.

Lo que quiere es exactamente lo contrario (¿o me equivoco?): quiere que su máquina llegue a un servidor externo en el puerto 9700 y quiere que este servidor pueda responderle.

Entonces tus dos últimas reglas deberían ser:

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

Esto permite el tráfico que comienza desde cualquier puerto (porque no puede controlar qué puerto usará un protocolo para el tráfico saliente) en su computadora a cualquier otra máquina en el puerto 9700, y permite el tráfico desde cualquier otra máquina en el mundo a su computadora SI los paquetes son parte de una conexión que ya estaba establecida.

Respuesta2

Intentar:

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

Supongo que el servidor DNS que resuelve la dirección IP de ejemplo.com no es la misma máquina.

Además, no creo que sea realmente un problema establecer la política de la cadena de SALIDA como ACEPTAR. Pruébalo.

Este conjunto de reglas funciona para mí. Debería funcionar para ti también.

¡Atentamente!

información relacionada