私は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
で表されるファイルをどのように見つけますか?
iptables-persistent
wheezyパッケージはルールを/etc/iptables/rules.v4
に保存します。
ここでパッケージのソースを表示できます: https://packages.debian.org/search?keywords=iptables-persistent
いくつかの調査が必要ですか?