web-dev-qa-db-ja.com

IPTablesルールが格納されている場所を確認するにはどうすればよいですか?

私はDebianサーバーで作業していて、自分のIPTableルールが格納されている場所を見つけようとしています。

インターネットを見回してみると、通常2か所が保存されていることがわかりました。

http://major.io/2009/11/16/automatically-loading-iptables-on-debianubuntu//etc/network/if-up.d/iptablesを提案しますが、そのファイルはそのディレクトリに存在しません。

http://beginlinux.wordpress.com/2009/05/26/saving-changes-for-iptables//etc/sysconfig/iptablesですが、/etc/sysconfigディレクトリも存在しません。

以前の管理者がセキュリティ上の目的で一般的なファイルを別の場所に保存することは珍しいことではないと私は知っています。ルールがどこに保存されているのかをiptables-saveコマンドが使用されます。このページには、/etc/init.d/iptablesにあるスクリプトを使用してファイルが復元されることも記載されていますが、これも存在しません。

ルールが保存されている場所を見つけるために進む方法に関するヘルプや提案はありますか?ルールに含まれるまれな文字列を見つけるためにgrepを試してみることはできますが、もっと簡単で直接的な方法が必要だと感じています。

更新:

たくさんのご協力ありがとうございます。 grepを使用して/ etcディレクトリを検索しようとしましたが、非常に長い時間がかかり、メモリ不足になるリスクを冒したくなかったので、停止しました。それほど集中的でない方法としてstraceを使用してみると思いました。

Straceを調べて、次の行に行きました(IPアドレスを1.1.1.1に変更しました)。

`open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=2859, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7747000
read(5, "# Internet (IP) protocols\n#\n# Up"..., 4096) = 2859
close(5)                                = 0
munmap(0xb7747000, 4096)                = 0
write(1, "-A net2fw -s 1.1.1.1/32 -p t"..., 66) = 66`

私はこれが何をしているのか100%わかりませんが、これはファイル/etc/protocolsのプロトコル#5を使用する場所であるように見えます。

st 5 ST # ST datagram mode

一部のファイルのファイル統計を読み取り、読み取った内容をメモリロケーション0xb7747000にマッピングします。どこから読み取っているかはわかりませんが、プロトコルを閉じ、メモリからマップを解除して、ルールをファイル記述子1に書き込みます。

これを正しく読むのにどれくらい近いですか? 1で表されるファイルをどのように見つけますか?

5
d.lanza38

iptables-persistent wheezyパッケージはルールを/etc/iptables/rules.v4に保存します。

ここでパッケージのソースを表示できます: https://packages.debian.org/search?keywords=iptables-persistent

3

いくつかの調査が必要ですか?

  • 「strace iptables-save」を実行し、このコマンドが開くファイルの出力を調べます。ライブラリファイルを無視します。読み込むために開くファイルの1つが、探しているルールセットになります。
1