Назад | Перейти на главную страницу

Linux iptables - отклонить tcp SYN с помощью RST

Я делаю реализацию на Linux-машине, чтобы отклонять входящие запросы telnet от порта telnet 8023 на стороне WAN. Функциональность достигается с помощью следующих правил iptables. Первое правило в цепочке предварительной маршрутизации NAT для входящих tcp-кадров DNAT с порта 8023 на 23 и второе правило для отклонения этих tcp-кадров на порту 23 с помощью 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

Новый сеанс на WAN-машине завершается после добавления этих правил.

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

Однако, увидев захват всей транзакции с WAN-машины с помощью Wirehark, можно было наблюдать следующую последовательность.

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

Также был прикреплен захват wirehark.

Можем ли мы отправить RST для первого запроса SYN по правилу в iptables, как показано ниже?

TCP sequence:
SYN -->
    <-- RST

Может ли кто-нибудь помочь в этом отношении ... Заранее спасибо.

Интересный.

Я только что протестировал это, и в моей системе он работает так, как вы ожидаете. Я тестировал его с портом 25 на моем локальном сервере, который не используется часто:

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

У меня не устанавливается соединение, а затем выполняется сброс, как у вас.

Я использую 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