タイムスタンプを含むiptablesルールの一致

タイムスタンプを含むiptablesルールの一致

タイムスタンプ値を使用して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、誰が変更したかを確認する必要がある場合は、バージョン管理データに戻って誰がいつ何を変更したのかを確認できます。

関連情報