
ないサーバーがあります。iptables防御:ACCEPT all..
このサーバーにはカスタムアプリケーションがあります。
厳密なiptablesルールでこのサーバーを強化する必要がある場合(したがってすべてを拒否し、アプリケーションに必要なもののみを許可する)、どのアプリケーションがどのアプリケーションを使用しているかを手動で調べてから、dst/src
port/protocol
iptablesルールを作成する必要があります。
質問:実行中のマシンからこの情報を収集するのに役立つスクリプトはありますか? (ログから?) - 自動的にiptablesルールを生成しますか?
それはまるでそこにあるのとaudit2allow
同じですSELinux
。iptables
機械には停電があってはいけません!
たとえば、「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ターゲット、プロトコル、ポート、アプリケーション)を作成してください。