web-dev-qa-db-ja.com

iptablesを使用して、特定のポートに関連するRSTを防止します

Libpcapを使用して着信TCP SYNパケットをキャプチャするプログラムがあります。これらのSYNパケットは、特定のポート宛てです。

しかし、私はそのポート用のtcpリスニングソケットを持っていないので、実際には、OSカーネル(カーネルまたはtcpスタックですか?わかりません、誰か教えてもらえますか)は=のソースIPにRSTを発行しますTCP SYN。

ここで、RSTを防止したいのですが、RSTをソースIPに送信したくありません。多分iptablesはこれを行うことができると思いますか?では、これらのRST(特定のポートの着信TCP SYN)によってトリガーされる)を防ぐためにiptablesでルールを設定する方法は?

他のより良い解決策があれば、それはより良いです!ありがとう!

2
misteryes

かなり基本的なインバウンドブロッキングの設定は次のとおりです。

# 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
2
fuero