У меня есть программа, которая использует libpcap для захвата входящих пакетов TCP SYN, эти пакеты SYN предназначены для определенного порта.

Но у меня нет прослушивающего сокета tcp для этого порта, поэтому на практике ядро ОС (это ядро или стек tcp? Я не уверен, может кто-нибудь сказать мне) выдаст RST на исходный IP-адрес TCP SYN.

теперь я хочу предотвратить RST, я не хочу, чтобы RST отправлялся на исходный IP. Я думаю, что iptables может сделать это? Итак, как установить правила с iptables для предотвращения этих RST (которые запускаются входящим TCP SYN для определенного порта)?

если есть другие лучшие решения, это лучше! Спасибо!

1 ответ1

1

Довольно простая настройка блокировки входящего трафика:

# Set default policy to 'drop everything'
iptables -P INPUT DROP
# Allow lo traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow icmp
iptables -A INPUT -p icmp -j ACCEPT
# Allow packets sent in response to an outgoing connection
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow outgoing connections
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Это должно отбросить все попытки установить соединение с вашим хостом.

Если вы хотите быть более конкретным, попробуйте добавить один из них:

# Block request from being handled further by the TCP stack
iptables -A INPUT -p tcp --dport <port> -j DROP
# Send an ICMP 'administratively prohibited' response
iptables -A INPUT -p tcp --dport <port> -j REJECT
# Don't send any RESETs upon a request to this port
iptables -A OUTPUT -p tcp -o <outgoing interface> --sport <port> --tcp-flags RST RST -j DROP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .