local section="$1"
+ local set_only
+ local hook_priority
local update_frequency
local log_level
local api_url
local log_max_backups
local log_max_age
local ipv4
- local input_chain_name
- local input6_chain_name
+ local chain_name
+ local chain6_name
+ local retry_initial_connect
+ config_get set_only $section set_only '1'
+ config_get hook_priority $section priority "4"
config_get update_frequency $section update_frequency '10s'
config_get log_level $section log_level 'info'
config_get api_url $section api_url "http://127.0.0.1:8080"
config_get log_max_backups $section log_max_backups '3'
config_get log_max_age $section log_max_age '30'
config_get_bool ipv4 $section ipv4 '1'
- config_get input_chain_name $section input_chain_name "input"
- config_get input6_chain_name $section input6_chain_name "input"
+ config_get chain_name $section chain_name "crowdsec-chain"
+ config_get chain6_name $section chain6_name "crowdsec6-chain"
+ config_get_bool retry_initial_connect $section retry_initial_connect '1'
# Create tmp dir & permissions if needed
if [ ! -d "${VARCONFIGDIR}" ]; then
log_max_age: $log_max_age
api_url: $api_url
api_key: $api_key
+ retry_initial_connect: bool($retry_initial_connect)
insecure_skip_verify: true
disable_ipv6: boolnot($ipv6)
deny_action: $deny_action
nftables:
ipv4:
enabled: bool($ipv4)
- set-only: true
+ set-only: bool($set_only)
table: $TABLE
- chain: $input_chain_name
+ chain: $chain_name
+ priority: $hook_priority
ipv6:
enabled: bool($ipv6)
- set-only: true
+ set-only: bool($set_only)
table: $TABLE6
- chain: $input6_chain_name
+ chain: $chain6_name
+ priority: $hook_priority
+ nftables_hooks:
+ - input
+ - forward
# packet filter
pf:
- # an empty disables the anchor
+ # an empty string disables the anchor
anchor_name: ""
prometheus:
enabled: false
local section="$1"
- local priority
+ local hook_priority
local deny_action
local deny_log
local log_prefix
local ipv6
local filter_input
local filter_forward
- local input_chain_name
- local forward_chain_name
- local input6_chain_name
- local forward6_chain_name
+ local chain_name
+ local chain6_name
local interface
local log_term=""
- config_get priority $section priority "4"
+ config_get hook_priority $section priority "4"
config_get deny_action $section deny_action "drop"
config_get_bool deny_log $section deny_log '0'
config_get log_prefix $section log_prefix "crowdsec: "
config_get_bool ipv6 $section ipv6 '1'
config_get_bool filter_input $section filter_input '1'
config_get_bool filter_forward $section filter_forward '1'
- config_get input_chain_name $section input_chain_name "input"
- config_get forward_chain_name $section forward_chain_name "forward"
- config_get input6_chain_name $section input6_chain_name "input"
- config_get forward6_chain_name $section forward6_chain_name "forward"
+ config_get chain_name $section chain_name "crowdsec-chain"
+ config_get chain6_name $section chain6_name "crowdsec6-chain"
config_get interface $section interface 'eth1'
if [ "$deny_log" -eq "1" ] ; then
nft add set ip crowdsec crowdsec-blacklists '{ type ipv4_addr; flags timeout; }'
if [ "$filter_input" -eq "1" ] ; then
- nft add chain ip "$TABLE" $input_chain_name "{ type filter hook input priority $priority; policy accept; }"
- nft add rule ip "$TABLE" $input_chain_name iifname { $interface } ct state new ip saddr @crowdsec-blacklists ${log_term} counter $deny_action
+ nft add chain ip "$TABLE" $chain_name-input "{ type filter hook input priority $hook_priority; policy accept; }"
+ nft add rule ip "$TABLE" $chain_name-input iifname { $interface } ct state new ip saddr @crowdsec-blacklists ${log_term} counter $deny_action
fi
if [ "$filter_forward" -eq "1" ] ; then
- nft add chain ip "$TABLE" $forward_chain_name "{ type filter hook forward priority $priority; policy accept; }"
- nft add rule ip "$TABLE" $forward_chain_name iifname { $interface } ct state new ip saddr @crowdsec-blacklists ${log_term} counter $deny_action
+ nft add chain ip "$TABLE" $chain_name-forward "{ type filter hook forward priority $hook_priority; policy accept; }"
+ nft add rule ip "$TABLE" $chain_name-forward iifname { $interface } ct state new ip daddr != 224.0.0.0/4 ip saddr @crowdsec-blacklists ${log_term} counter $deny_action
fi
fi
nft add set ip6 crowdsec6 crowdsec6-blacklists '{ type ipv6_addr; flags timeout; }'
if [ "$filter_input" -eq "1" ] ; then
- nft add chain ip6 "$TABLE6" $input6_chain_name "{ type filter hook input priority $priority; policy accept; }"
- nft add rule ip6 "$TABLE6" $input6_chain_name iifname { $interface } ct state new ip6 saddr @crowdsec6-blacklists ${log_term} counter $deny_action
+ nft add chain ip6 "$TABLE6" $chain6_name-input "{ type filter hook input priority $hook_priority; policy accept; }"
+ nft add rule ip6 "$TABLE6" $chain6_name-input iifname { $interface } ct state new ip6 saddr @crowdsec6-blacklists ${log_term} counter $deny_action
fi
if [ "$filter_forward" -eq "1" ] ; then
- nft add chain ip6 "$TABLE6" $forward6_chain_name "{ type filter hook forward priority $priority; policy accept; }"
- nft add rule ip6 "$TABLE6" $forward6_chain_name iifname { $interface } ct state new ip6 saddr @crowdsec6-blacklists ${log_term} counter $deny_action
+ nft add chain ip6 "$TABLE6" $chain6_name-forward "{ type filter hook forward priority $hook_priority; policy accept; }"
+ nft add rule ip6 "$TABLE6" $chain6_name-forward iifname { $interface } ct state new ip6 saddr @crowdsec6-blacklists ${log_term} counter $deny_action
fi
fi
}
local enabled
config_get_bool enabled $section enabled 0
+ config_get_bool set_only $section set_only 1
if [ "$enabled" -eq "1" ] ; then
init_yaml "$section"
- init_nftables "$section"
+ if [ "$set_only" -eq "1" ] ; then
+ init_nftables "$section"
+ fi
procd_open_instance
procd_set_param command "$PROG" -c "$VARCONFIG"
nft delete table ip crowdsec 2>/dev/null
nft delete table ip6 crowdsec6 2>/dev/null
}
-
-