タイムスタンプ値を使用してiptableルールをインストールします。
$ iptables -A INPUT -i eth0 -s 10.0.0.3 -m comment --comment "Timestamp=`date +%Y/%m/%d-%H:%M:%S`" -j DROP
その結果、次の iptable ルールが生成されます。
$ iptables -A INPUT -i eth0 -s 10.0.0.3 -m comment --comment "Timestamp=2018/02/26-22:34:15" -j DROP
既存のルールをテストする方法が見つかりません。
$ iptables -C INPUT -i eth0 -s 10.0.0.3 -j DROP
cutコマンドとegrepを使ってみましたが、何も機能しないようです。
$ iptables -S INPUT | cut -d' ' --complement -s -f7-10
タイムスタンプ値を含む既存のiptablesルールをどのようにテストするのですか?
答え1
この-C
機能は以下でのみ利用可能です。精密ルールを合わせてみてください。
つまり、私が追加したルールがiptables -A INPUT -i eth0 -p tcp --dport 22 -m comment "DropSSH" -j DROP
あればiptables -C INPUT -i eth0 -p tcp --dport 22 -m comment "DropSSH" -j DROP
一致し、-C
エラーは発生しません。しかしいいえ正確に一致するiptables -C INPUT -i eth0 -p tcp --dport 22 -j DROP
ため削除できません。
探している仕様が存在するかどうかを実際に知ることができる唯一の方法そしてルールの一致の一部が分割フィルタリングであるgrep
ことを検討してください。
だから:
iptables -S INPUT | grep -i '-p tcp' | grep -i '--dport 22' | grep -i '-j DROP'
TCP ポート 22 を介して許可するすべてのルールと一致できます。しかし、見てわかるように、これは単純ではなく、問題を引き起こす可能性があります。 cut
データを調整することもあまり役に立ちません。難しい部分は、検索しているコンテンツを実行する部分に分割する必要があるということですgrep
。
タイムスタンプを追加する別のオプションコメントiptables
ルールを更新して保存するたびに、ルールセットのバージョンが指定されたコピーを別々のリビジョンに更新して、時間の経過とともに変更を確認できるようにルールのバージョンを指定します。そしていいえコメントには正しく使用できるタイムスタンプがあり-C
、誰が変更したかを確認する必要がある場合は、バージョン管理データに戻って誰がいつ何を変更したのかを確認できます。