OpenWRT Firewall Log aktivieren

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.

« WLAN Netzwerk sicher konfigurieren OpenWRT: USB Stick als Rootfs mit extroot »