4 votos

Linux iptables - rechazar tcp SYN con RST

Estoy haciendo una implementación en una máquina linux para rechazar peticiones telnet entrantes desde el puerto telnet 8023 del lado wan. La funcionalidad se logra mediante el uso de las siguientes reglas iptables. La primera regla en la cadena de pre-enrutamiento NAT para DNAT tramas tcp entrantes desde el puerto 8023 a 23, y la segunda regla para rechazar estas tramas tcp en el puerto 23 con tcp-reset

iptables -t nat -A PREROUTING -i wan+ -p tcp --dport 8023 -j DNAT --to-destination :23
iptables -A INPUT -i wan+ -p tcp --dport 23 -j REJECT --reject-with tcp-reset

La nueva sesión en la máquina wan se termina después de añadir estas reglas.

[root@ROOT ~]# telnet 192.168.3.252 8023
Trying 192.168.3.252...
Connected to 192.168.3.252.
Escape character is '^]'.
Connection closed by foreign host.

Sin embargo, al ver la captura de wireshark de toda la transacción desde la máquina wan, se ha observado la siguiente secuencia.

TCP sequence:
SYN -->
    <-- SYN/ACK
ACK -->
    <-- RST

También se ha adjuntado la captura de wireshark. Wireshark capture of telnet frames

¿Podemos enviar RST para la primera petición SYN mediante una regla en iptables como la siguiente?

TCP sequence:
SYN -->
    <-- RST

¿Podría alguien ayudar en este sentido? Gracias de antemano.

4voto

RPDP Puntos 1408

Interesante.

Acabo de probarlo y en mi sistema funciona como esperas. Lo probé con el puerto 25 en mi servidor local que no está en alto uso:

iptables-save
# Generated by iptables-save v1.4.12 on Fri Aug 22 14:34:49 2014
\*nat
:PREROUTING ACCEPT \[12:1729\]
:INPUT ACCEPT \[12:1729\]
:OUTPUT ACCEPT \[110:7484\]
:POSTROUTING ACCEPT \[110:7484\]
-A PREROUTING -p tcp -m tcp --dport 225 -j DNAT --to-destination :25
COMMIT
# Completed on Fri Aug 22 14:34:49 2014
# Generated by iptables-save v1.4.12 on Fri Aug 22 14:34:49 2014
\*filter
:INPUT ACCEPT \[888:1187686\]
:FORWARD ACCEPT \[0:0\]
:OUTPUT ACCEPT \[883:134630\]
-A INPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with tcp-reset
COMMIT
# Completed on Fri Aug 22 14:34:49 2014

telnet XXX.XXX.XXX.XXX 225
Trying XXX.XXX.XXX.XXX...
telnet: Unable to connect to remote host: Connection refused

A mi no se me establece la conexión y luego el reinicio como a ti.

Estoy usando Linux 3.2.0-67 & iptables v1.4.12

tcpdump -vvvv tcp port 225
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:48:29.178049 IP (tos 0x10, ttl 64, id 50487, offset 0, flags \[DF\], proto TCP (6), length 60)
    xx.39444 > xxxxx.225: Flags \[S\], cksum 0x2c0d (correct), seq 47731887, win 14600, options \[mss 1460,sackOK,TS val 665686424 ecr 0,nop,wscale 5\], length 0
14:48:29.178089 IP (tos 0x0, ttl 64, id 0, offset 0, flags \[DF\], proto TCP (6), length 40)
    xxxxx.225 > xx.39444: Flags \[R.\], cksum 0x3745 (incorrect -> 0x8628), seq 0, ack 47731888, win 0, length 0

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X