私たちは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との接続が確立されているポートを確認する必要がありますか?
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
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