web-dev-qa-db-ja.com

1つのポートのみを許可し、他のポートをブロックするiptablesルール

私たちは2つのアプリ(linux上で)を実行しており、どちらもポート42605を介して通信します。これがそれらの間の通信に使用されている唯一のポートであるかどうかをすぐに確認したいと思いました。以下のルールを試しましたが、うまくいかないようです。だから、私が間違っているのなら、これを明確にしたかっただけです。

以下は私が実行したコマンドのシーケンスです

iptables -I INPUT -j REJECT
iptables -I INPUT -p tcp --dport 42605 -j ACCEPT
iptables -I INPUT -p icmp -j ACCEPT
iptables -I OUTPUT -p tcp --dport 42605 -j ACCEPT

したがって、これを挿入しているので、逆の順序で追加されます。

42605との間で送受信する通信を許可したいのですが、上記のルールは適切に見えますか、それとも間違っていますか?

別の質問、これはテストする正しい方法でしょうか、または「netstat」コマンドを使用して、他のIPとの接続が確立されているポートを確認する必要がありますか?

4
Being Gokul

INPUTポリシーをドロップしてすべてをブロックし、特定のポートのみを許可することができます

# allow established sessions to receive traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow your application port
iptables -I INPUT -p tcp --dport 42605 -j ACCEPT
# allow SSH 
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
# Allow Ping
iptables -A INPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow localhost 
iptables -A INPUT -i lo -j ACCEPT
# block everything else 
iptables -A INPUT -j DROP

別の質問、これはテストする正しい方法でしょうか、または「netstat」コマンドを使用して、他のIPとの接続が確立されているポートを確認する必要がありますか?

はい、チェックできますnetstat -antop | grep app_portおよびstraceを使用することもできます。

strace -f -e trace=network -s 10000 PROCESS ARGUMENTS

既知のPIDで既存のプロセスを監視するには:

strace -p $( pgrep application_name) -f -e trace=network -s 10000
5
Rahul Patil

Pingを許可する方法は次のとおりです。

iptables -A  INPUT -p icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
0
peterkopf77