4 votes

Linux iptables - rejeter tcp SYN avec RST

Je suis en train de réaliser une implémentation sur une machine linux pour rejeter les requêtes telnet entrantes provenant du port telnet 8023 du côté du réseau étendu. La fonctionnalité est réalisée en utilisant les règles iptables suivantes. La première règle dans la chaîne de préacheminement NAT pour DNAT les trames tcp entrantes du port 8023 vers 23, et la deuxième règle pour rejeter ces trames tcp sur le port 23 avec 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 nouvelle session sur la machine wan est interrompue après l'ajout de ces règles.

[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.

Cependant, en voyant la capture wireshark de l'ensemble de la transaction à partir de la machine wan, la séquence suivante a été observée.

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

La capture wireshark est également jointe. Wireshark capture of telnet frames

Pouvons-nous envoyer RST pour la première demande SYN par une règle dans iptables comme ci-dessous ?

TCP sequence:
SYN -->
    <-- RST

Quelqu'un pourrait-il m'aider à cet égard ? Merci d'avance.

4voto

RPDP Points 1408

Intéressant.

Je viens de le tester et, sur mon système, il fonctionne comme prévu. Je l'ai testé avec le port 25 sur mon serveur local qui n'est pas très utilisé :

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

Je n'obtiens pas la connexion établie, puis la réinitialisation comme vous le faites.

J'utilise 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X