make firewall compartible with 'iptables-nf'.

This commit is contained in:
2026-01-11 00:31:22 +01:00
parent 63889b0dc9
commit a37b2c185b
4 changed files with 168 additions and 67 deletions

View File

@@ -841,6 +841,24 @@ $ip6t -A OUTPUT -o lo -j ACCEPT
echo_done
# ---
# - Already established connections
# ---
echononl "\tAccept already established connections.."
$ip6t -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6t -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6t -A INPUT -m conntrack --ctstate INVALID -j DROP
if $kernel_forward_between_interfaces ; then
$ip6t -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEP
fi
echo_done
# ---
# - Protection against syn-flooding
# ---
@@ -907,9 +925,17 @@ if $limit_connections_per_source_IP ; then
fi
if $log_rejected || $log_all ; then
$ip6t -A INPUT -p tcp -m connlimit --connlimit-above $per_IP_connection_limit -j $LOG_TARGET $tag_log_prefix "$log_prefix CONN limit per IP: "
$ip6t -A INPUT -p tcp --syn \
-m connlimit --connlimit-above $per_IP_connection_limit --connlimit-mask 128 --connlimit-saddr \
-j $LOG_TARGET $tag_log_prefix "$log_prefix CONN limit per IP:"
fi
$ip6t -A INPUT -p tcp -m connlimit --connlimit-above $per_IP_connection_limit -j REJECT --reject-with tcp-reset
$ip6t -A INPUT -p tcp --syn \
-m connlimit --connlimit-above $per_IP_connection_limit --connlimit-mask 128 --connlimit-saddr \
-j REJECT --reject-with tcp-reset
echo_done
else
echo_skipped
@@ -921,27 +947,54 @@ fi
# ---
echononl "\tLimit RST packets"
if $limit_rst_packets ; then
$ip6t -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
if $log_rejected || $log_all ; then
$ip6t -A INPUT -p tcp --tcp-flags RST RST -j $LOG_TARGET $tag_log_prefix "$log_prefix Limit RST packets: "
fi
$ip6t -A INPUT -p tcp --tcp-flags RST RST -j DROP
echo_done
else
echo_skipped
fi
# ---
# Ersatzlos gestrichen
# ---
echo_skipped
#if $limit_rst_packets ; then
# $ip6t -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
# if $log_rejected || $log_all ; then
# $ip6t -A INPUT -p tcp --tcp-flags RST RST -j $LOG_TARGET $tag_log_prefix "$log_prefix Limit RST packets: "
# fi
# $ip6t -A INPUT -p tcp --tcp-flags RST RST -j DROP
# echo_done
#else
# echo_skipped
#fi
# ---
# - Limit new TCP connections per second per source IP
# ---
echononl "\tLimit new TCP connections per second per source IP"
if $limit_new_tcp_connections_per_seconds_per_source_IP ; then
$ip6t -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT
echononl "\tLimit new (syn) TCP connections per second per source IP (multiport)"
if $limit_new_tcp_connections_per_seconds_per_source_IP \
&& [[ ${#limit_new_tcp_connections_per_seconds_ports} -gt 0 ]]; then
#$ip6t -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT
# Rate-Limit für neue SYNs auf 443 pro IP
$ip6t -A INPUT -p tcp --syn \
-m multiport --dports $limit_new_tcp_connections_per_seconds_ports \
-m hashlimit --hashlimit-name syn_multi_v4 \
--hashlimit 30/second --hashlimit-burst 60 \
--hashlimit-mode srcip --hashlimit-srcmask 32 \
-j ACCEPT
if $log_rejected || $log_all ; then
$ip6t -A INPUT -p tcp -m conntrack --ctstate NEW -j $LOG_TARGET $tag_log_prefix "$log_prefix Limit new TCP conn's: "
#$ip6t -A INPUT -p tcp -m conntrack --ctstate NEW -j $LOG_TARGET $tag_log_prefix "$log_prefix Limit new TCP conn's: "
# rate-limited logging für Überschreiter
$ip6t -A INPUT -p tcp --syn \
-m multiport --dports $limit_new_tcp_connections_per_seconds_ports \
-m hashlimit --hashlimit-name syn_multi_v4_log \
--hashlimit 2/second --hashlimit-burst 10 \
--hashlimit-mode srcip --hashlimit-srcmask 32 \
-j $LOG_TARGET $tag_log_prefix "$log_prefix SYN over limit (multiport):"
fi
$ip6t -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP
echo_done
@@ -1133,21 +1186,6 @@ fi
echo
# ---
# - Already established connections
# ---
echononl "\tAccept already established connections.."
$ip6t -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip6t -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
if $kernel_forward_between_interfaces ; then
$ip6t -A FORWARD -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
fi
echo_done
# ---
# - LOG CGI script Traffic out
# ---