In case you want to ban IP addresses based on Suricata fast.log, here is the filter you need:

[INCLUDES]
before = common.conf

[DEFAULT]
_daemon = suricata

[Definition]
datepattern = ^%%m/%%d/%%Y-%%H:%%M:%%S
failregex = <HOST>:[0-9]* ->
ignoreregex =

In the jail configuration, I suggest you change the default blocktype from REJECT to DROP.

Edit 2023-03-24: you may want to use the action iptables-ipset-proto6-allports which leverages ipset. It will make your iptables rules much more readable and according to some sources, faster. Just edit your jail.conf and replace the default banaction_allports entry with iptables-ipset-proto6-allports , or explicitly mention iptables-ipset-proto6-allports in the jail configuration of suricata, like so:

[suricata]
enabled = true
filter = suricata
logpath = /var/log/suricata/fast.log
findtime = 3h
action = iptables-ipset-proto6-allports

If you want to match input and forwarding traffic, you can have multiple actions. However, you need to name them differently like so:

[suricata]
enabled = true
filter = suricata
logpath = /var/log/suricata/fast.log
findtime = 3h
action = %(banaction_allports)s[actname="suricata_i", chain="INPUT"]
         %(banaction_allports)s[actname="suricata_f", chain="FORWARD"]

Edit 2023-03-24: initial text, I prefer using ipset to the following.

You should also create a custom action to apply to all protocols and ports:

[INCLUDES]
before = iptables-common.conf

[Definition]
actionstart = <iptables> -N f2b-<name>
              <iptables> -A f2b-<name> -j <returntype>
              <iptables> -I <chain> -j f2b-<name>

actionstop = <iptables> -D <chain> -j f2b-<name>
             <actionflush>
             <iptables> -X f2b-<name>

actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'

actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>

actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>

[Init]

You should now be all set to block all the IP addresses that Suricata finds.

Enjoy.