iptables ルール勧告スクリプト

iptables ルール勧告スクリプト

ないサーバーがあります。iptables防御:ACCEPT all..

このサーバーにはカスタムアプリケーションがあります。

厳密なiptablesルールでこのサーバーを強化する必要がある場合(したがってすべてを拒否し、アプリケーションに必要なもののみを許可する)、どのアプリケーションがどのアプリケーションを使用しているかを手動で調べてから、dst/src port/protocoliptablesルールを作成する必要があります。

質問:実行中のマシンからこの情報を収集するのに役立つスクリプトはありますか? (ログから?) - 自動的にiptablesルールを生成しますか?

それはまるでそこにあるのとaudit2allow同じですSELinuxiptables

機械には停電があってはいけません!

たとえば、「MAGIC」スクリプトは1週間/月間コンピュータで実行され、情報を収集してから1週間/月後に使用できるiptablesルールファイルを生成できます。

多くの人がこのような状況に直面する可能性があります(iptablesサーバーを強化する方法)。これを行うためのスクリプト/ソリューションがあれば良いでしょう。\

答え1

手動で

sudo ss -tuanp

または

sudo netstat -tuanp

説明する:

-t - show tcp sockets
-u - show udp sockets
-a - show all sockets
-n - show numeric, don't resolve 
-p - show process name

答え2

tcpdump平均トラフィックをキャプチャするには、1週間ほどマシンで実行してください。その後、後でWiresharkを使用してトラフィックをブラウズして、どのポートが使用されているかを確認できます。

これを行うコマンドは次のとおりです。tcpdump -i <interface> -s 65535 -w <some-file>

その後、それを再マップして、netstat -tuanpどのPID /アプリケーションがどのポートを使用しているかを確認できます。

理論的には、これはスクリプトで書くことができます。

答え3

次の非常に基本的なテンプレートから始めることができます。https://gist.github.com/jirutka/3742890、sshとpingのみを許可し、他の項目は手動で追加します。

パブリックインターフェイス(0.0.0.0)/ tcpでリッスンするアプリケーションのiptablesルールを生成するクイックスクリプトハック

netstat -lnpt | egrep '0.0.0.0:[0-9]+' | awk '{print $4,$7}' | \
sed -E -e 's/0.0.0.0://g' -e 's|[0-9]+/||' | \
awk '{printf ("iptables -A INPUT -p tcp --dport %5d --syn -m conntrack --ctstate NEW -m comment %s \n", $1,$2) }'

iptables -I INPUT <number>以下を使用して、特定の場所にルールを挿入することもできます。iptables -nvL --line-numbers INPUT

答え4

iptable ルールを使用して新しい接続を記録すると、udp も記録されます。

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New inbound connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New outbound connection: "

--log-level /var/log/messages以外のファイルにログを保存するさまざまな方法を指定できます(syslogデーモンを構成する必要があります)。

一部のサーバーは正午、週末、月末(四半期、年)などの定期的なアクティビティを実行しているため、基本的なアプリケーションログを読んでサーバーの重要なネットワークアクティビティを見逃すことはないと思います。

サーバーは重要なので、ルールを構築するのに役立つ素晴らしいスプレッドシートにサーバーのネットワークトラフィックマトリックス(IPソース、IPターゲット、プロトコル、ポート、アプリケーション)を作成してください。

関連情報