![iptables 設定ファイルを編集することと、iptables コマンドを使用してルールを追加することの長所と短所は何ですか。](https://rvso.com/image/50586/iptables%20%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A8%E3%80%81iptables%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AE%E9%95%B7%E6%89%80%E3%81%A8%E7%9F%AD%E6%89%80%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%E3%80%82.png)
私は CentOS 上の製品を使用していますが、この製品では、iptables 構成からルールを自動的に追加したり削除したりすることが時々必要になります。たとえば、更新中は、更新が完了するまで、受信サービス トラフィックを明示的に拒否する必要があります。現在、更新コードで使用されているアプローチは、sed
およびその他のテキスト処理ユーティリティを使用して構成ファイル内の関連行をコメント アウトし、iptables
新しい構成ファイルでサービスを再起動し、更新の最後にプロセスを逆にして、もう一度サービスを再起動することです。
iptables -D table rule-specification
プロセスの開始時にコマンドを使用し、iptables -A table rule-specification
更新の最後にコマンドを使用する方がよい方法であると思われます。
構成ファイルを自動的に操作することに関して私が見つけた最大の問題は、脆弱性です。構成ファイルを書き換えるシステム ツールがあり、パラメータの順序などが変更され、テキスト解析が壊れる可能性があります (service iptables save
例)。
コード内からこのようなシステム構成の変更を行う場合に推奨されるアプローチは何ですか、またその理由は何ですか?
答え1
このような状況にあるほとんどの人は、ある程度抽象化して対処します。
たとえば、ルール セットを含む単一のファイルを用意するのではなく、ルールを含むファイルのセットを作成し、それらを連結してみてはいかがでしょうか。
たとえば、次のような名前のファイルに個別のルールを追加できます。
/etc/iptables-rules/00_flush_drop
/etc/iptables-rules/20_permitotherstuff
/etc/iptables-rules/10_permitssh
/etc/iptables-rules/99_drop
次に、 でルール セットを実行しますrun-parts /etc/iptables-rules
。別のルール セットを追加する必要がある場合は、一時的にファイルを挿入して追加し、必要に応じて削除します。
また、構成で CHAINS を設定して使用することも強く検討する必要があります。チェーンはサブルーチンのようなものです。たとえば、ファイアウォールの最上部にルールを追加して、チェーンにジャンプすることができます。チェーンには RETURN のデフォルト ポリシーがあります。そのため、一時的なルールを追加する必要がある場合は、その CHAIN に挿入するだけです。必要がなくなったら、その特定のチェーンをフラッシュするだけです。