summaryrefslogtreecommitdiff
path: root/sentinel-fwlogs/files/sentinel-firewall.sh
blob: e066b165adb799f98d643a9f8f43781fbc977b9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
set -e
. "${0%/*}/common.sh"
. /lib/functions.sh
. /lib/functions/sentinel.sh
. /usr/libexec/sentinel/fwlogs-defaults.sh

allowed_to_run "fwlogs" 2>/dev/null || return 0


config_load "sentinel"
config_get nflog_group fwlogs nflog_group "$DEFAULT_NFLOG_GROUP"
config_get nflog_threshold fwlogs nflog_threshold "$DEFAULT_NFLOG_THRESHOLD"


fwlogs_logging() {
	local config_section="$1"
	local zone enabled
	config_get zone "$config_section" "name"
	config_get_bool enabled "$config_section" "sentinel_fwlogs" "0"
	[ "$enabled" = "1" ] || return 0

	report_operation "Logging of zone '$zone'"
	for fate in DROP REJECT; do
		local chain="zone_${zone}_src_${fate}"
		iptables_chain_exists "$chain" || continue
		report_info "$fate"
		iptables -I "$chain" 1 \
			-m comment --comment "!sentinel: fwlogs" \
			-j NFLOG \
			--nflog-group "$nflog_group" \
			--nflog-threshold "$nflog_threshold"
	done
}

config_load "firewall"
config_foreach fwlogs_logging "zone"