In OpenWRT ist das Firewall Logging deaktiviert. Mit einigen kleinen Änderungen des Firewallscripts kann man das Firewall Logging aktivieren.
In dem Script /lib/firewall/uci_firewall.sh wird in die Funktion create_zone() wie folgt abgeändert:
create_zone() {
local exists
local log_enabled # option 'log' in /etc/config/firewall
[ "$1" == "loopback" ] && return
config_get exists $ZONE_LIST $1
[ -n "$exists" ] && return
config_set $ZONE_LIST $1 1
# Auslesen der option log
config_get log_enabled "$1" "log" 0
$IPTABLES -N zone_$1
$IPTABLES -N zone_$1_MSSFIX
$IPTABLES -N zone_$1_ACCEPT
$IPTABLES -N zone_$1_DROP
$IPTABLES -N zone_$1_REJECT
$IPTABLES -N zone_$1_forward
[ "$4" ] && $IPTABLES -A output -j zone_$1_$4
$IPTABLES -N zone_$1_nat -t nat
$IPTABLES -N zone_$1_prerouting -t nat
$IPTABLES -t raw -N zone_$1_notrack
[ "$6" == "1" ] && $IPTABLES -t nat -A POSTROUTING -j zone_$1_nat
[ "$7" == "1" ] && $IPTABLES -I FORWARD 1 -j zone_$1_MSSFIX
# Testen ob das Logging aktiviert ist und ggf. die Regel anlegen
[ $log_enabled ] && $IPTABLES -I zone_$1_DROP 1 -j LOG \
--log-prefix="FW-INPUT-$1-DROP: " --log-tcp-options --log-ip-options
}
Damit die DROP- Regeln des Interfaces nicht vor der neuen Logregel eingefügt werden, wird die Zeile 94 in
$IPTABLES -A zone_${zone}_DROP -o "$ifname" -j DROP
geändert und in Zeile 97 die "1" durch die "2" ersetzt. Wenn eingehendes Synflooding geloggt werden soll fügt man in der Funktion load_synflood() vor der Drop- Regel noch
$IPTABLES -A syn_flood -p tcp --syn -m limit --limit $rate/second \ --limit-burst $burst -j LOG --log-prefix="FW-INPUT-SYNFLOOD-DROP: " \ --log-tcp-options --log-ip-options
ein. In /etc/config/firewall kann das Firewall Logging für die einzelnen Zonen mit "option log 1" aktiviert werden. Die Firewall mit /etc/init.d/firewall restart neu starten und die verworfenen Pakete werden geloggt.