次のルールがあるとしましょう。
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -m recent --set --name counting1 --rsource
iptables -A INPUT -m recent --update --seconds 60 --hitcount 2 --name counting1 --rsource -j LOG --log-prefix "SSH ataque "
iptables -A INPUT -m recent --update --seconds 60 --hitcount 2 --name counting1 --rsource -j RETURN
-A INPUT -j ACCEPT
マニュアルを読みましたが、どのような場合に--rcheckまたは--updateオプションが推奨されるのか正確にはわかりません...更新はヒットカウントが0にリセットされて再起動することを意味します(上記の例のように) )60秒?
これらのルールは、この質問を公開するための単なる例であることに注意してください
前もって感謝します
前もって感謝します
Iptablesのmanページから:
[!] --rcheck
Check if the source address of the packet is currently in the
list.
[!] --update
Like --rcheck, except it will update the "last seen" timestamp
if it matches.
したがって、update
を使用してもヒットカウントはリセットされず、最後に表示されたタイムスタンプが(再)設定されます。 --seconds
について次のように述べられています。
--seconds seconds
This option must be used in conjunction with one of --rcheck or
--update. When used, this will narrow the match to only happen
when the address is in the list and was seen within the last
given number of seconds.
つまり、--rcheck
を使用すると、一度にルールで指定された時間間隔(たとえば、--seconds
)のみに一致するようにルールが作成され、--update
を使用すると、ルールの時間間隔が延長されます。間隔中に一致するパケットが検出された場合に一致します。
したがって、45秒ごとに一致するパケットがある場合、質問に示されているサンプルルールは、パケットをログに記録し、チェーンから戻り続けます。 OTOH --rcheck
が使用された場合、2つおきのパケットは一致しません(2つの一致するパケットの60秒間隔が期限切れになったため)。