NHIPT Iptables CGI 0.8.3a - EXPERIMENTAL

nhipt Seite im Freetz Webinterface

MOTIVATION

iptables ist ein Kommandozeilen User Interface zur Konfiguration / Verwaltung der im jeweiligen Linux Kernel eingebauten sehr mächtigen netfilter

VORAUSSETZUNGEN:


  • ip_tables * ip_conntrack * ipt_log * xt_state
  • x_tables * ip_conntrack_ftp * ipt_REJECT * xt_conntrack
  • iptable_filter * ip_conntrack_tftp * ipt_iprange * xt_multiport * xt_tcpudp

!!! Bitte nicht vergessen, auch die zugehörigen shared libraries in die Firmware zu integrieren !!!

Ideal ist ein Build mit Replaced Kernel und eingeschalteter Autoload modules Funktion des Kernels:

user@Linux: make kernel-menuconfig
(L)oadable modules support
(A)utomatic kernel module loading

Vor dem ersten Start iptables -S eingeben, um iptables zu laden (bei Built mit replaced kernel und automatic kernel module loading) Alternativ (ohne autoload Option) mit **modprobe ** die oben genannten iptables Module einzeln laden.

ES STEHEN 3 PAKETE ZUR AUSWAHL:

nhipt.cgi.(version).tar.gz

Das ist das reine GUI, es läuft direkt vom Stick ohne Integration in freetz.

Installation:

chmod +x /var/media/ftp/uStor01/ipt/cgi-bin/nhipt.cgi
httpd -P /var/run/nhipt.pid -p 83 -h /var/media/ftp/uStor01/ipt

Aufgerufen wird das Interface mit http://fritz.box:83/cgi-bin/nhipt.cgi

ipt.(version).tar.gz

Das ist das Advanced-Comfort Paket mit dynamischer Freetz Integration.

Installation:

chmod +x /var/media/ftp/uStor01/ipt/register.sh
. /var/media/ftp/uStor01/ipt/register.sh

Im Freetz ist nun ein neues Paket zu sehen. Dort kann man den Rest konfigurieren und das Interface starten.

Über make menuconfig

Das GUI wird in den ROM der FritzBox über den Firmware build integriert, (z.Zt. nur im aktuellen trunk oder als patch)

Installation:

Bei Verwendung des Patches nhipt.patch(ver).tar.gz

in den freetz ordner wechseln, patch hineinkopieren und anwenden: patch -p0 < nhipt.patch in den Ordner make/nhipt/files/root/… wechseln und die execute Rechte auf alle Dateien setzen (Siehe DATEIEN IM FREETZ PAKET weiter unten)

make menuconfig aufrufen, im Bereich P ackage Selection —→ W eb Interface —→ die Option NHIPT Iptables CGI anwählen. Nun werden alle iptables Module als Untermenu sichtbar und können zusammengestellt werden. Danach die übliche Vorgehensweise zum Firmware Bauen….

ARBEITSWEISE:

Tipps & Literatur:

Es werden alle aktiven Regeln aufgelistet und können wie üblich sofort bearbeitet werden. Reboot-Fest werden die Regeln durch die Speicherfunktion [Persist rules] . Das erzeugte Start-Script kann entweder im Flash der Box oder extern abgelegt werden [BOOT FROM FLASH / USB] + [SET BOOT DIRECTORY] . Beim Start wird es von der debug.cfg automatisch zum Leben erweckt. Die Regeln können sowohl per Masken-Auswahl (die passenden Module werden für die meisten Regeln an Hand der Parameter automatisch ermittelt), als auch im Expert Mode (Kommandozeile mit iptables syntax) eingegeben werden, sie wirken stets sofort.

Alle Tabellen, sowie die wichtigsten Erweiterungen von conntrack und nat kann man im User Interface anwählen, sie werden automatisch geladen oder beim Abwählen - wenn möglich - entladen, das Interface unterstützt sowohl IPv4 als auch IPv6 Regelwerke (bei eingeschaltetem ipv6 auf der Box).

Wenn man eine Admin Adresse oder Subnetz im Feld [CHANGE ADMIN IP] einträgt, kann man die Konfiguration nur noch von dieser IP aus ausführen, die Sperre bleibt auch über eine Reboot hinaus wirksam.

Zusätzlich besitzt das CGI eine eigene Log-Funktion für die DECT Boxen. Das cgi übernimmt auf Wunsch hierfür alle nötigen Einstellungen, das Log-Verzeichnis ist frei wählbar.

Die Fehlermeldungen, Systemmeldungen etc. von iptables und dem UI werden in die Status - Zeilen unterhalb des Regelwerkes ausgegeben, Status 0 ist immer OK.

Bootprozess

Szenario 1: Standalone CGI - bootet immer von debug.cfg , Regeln im flash / stick

Szenario 2: dynamisches freetz - bootet entweder von der debug.cfg oder verspätet über freetz rc.custom beim Integrieren der cgi in freetz (install script für freetz Integration trägt sich in die rc.custom automatisch ein für reboot Fähigkeit)

Szenario 3: Integration in die Runlevel von Freetz , optional weiterhin über debug.cfg .

Konfigurationsdatei

Die Konfigurationsdatei ist zur Laufzeit unter /var/tmp/nhipt.par zu finden, reboot-fest wird sie in BOOTDIR zusammen mit der nhipt.cfg abgelegt

BACK=/var/media/ftp/uStor01/save
CHANGED=0
DELAY=0
LOGTARGET=internal
DSLDOFF=0
ADMINIP=
LOGD=/var/media/ftp/uStor01/log
AIRBAG=0
MYIP=
BOOTSTRAP=freetz
PORT=83
BOOT=flash
BOOTDIR=/tmp/flash
ROOT=/usr/ipt

Dateien im freetz Paket

/etc/default.nhipt/nhipt.cfg       rwxrwxrwx    # config für freetz maske
/etc/init.d/rc.nhipt               r-xr-xr-x    # call-back für freetz maske, boot loader
/usr/ipt/index.html                r--r--r--    # frameset für UI
/usr/ipt/cgi-bin/nhipt.cgi         r-xr-xr-x    # das CGI für iptables
/lib/cgi-bin/nhipt.cgi             r-xr-xr-x    # das CGI für freetz Einstellungen

GUT GEMEINTE RATSCHLÄGE:

Noch eins zum Thema Aussperren, für alle, die noch nie eine Firewall installiert haben.

Firewalls schützen Systeme vor unbefugtem Zugriff auf der Basis von Regeln, diese werden stur und kosequent ausgeführt. Das kann dazu führen, dass jemand, der sich vorher nicht ausreichend Gedanken über seine Regeln gemacht hat, sich vom System selbst aussperrt. Das passiert Laien oft, und auch Profis sind nicht immer davor sicher.

Damit die Konsequenzen nicht zu drastisch sind, hier ein paar Empfehlungen / Regeln für den Anfänger:

DOWNLOAD

Die aktuelle Version, sowie Anmerkungen, Tipps & Tricks und weiterführende Links finden sich hier: IPPF Forum

BEKANNTE PROBLEME

Bei der 7390 wird nur eine leere Seite angezeigt, Regeln lassen sich nicht anzeigen / hinzufügen.

Der angefügte Patch beseitigt dieses Problem und ähnliche bei anderen Boxen. Außerdem erweitert der Patch die Möglichkeiten des UI, auch Log Informationen zur Firewall und zum System aus dem Syslog der Box auszugeben, wenn in einer Datei gelogt wird (ausgewertet werden die letzten 50 Einträge aus bis zu 4 Logfiles filename , filename .0, filename .1, filename .2, der Pfad und Dateiname werden automatisch anhand der Parameter des laufenden syslogd Prozesses ermittelt).

SCREENSHOTS

nhipt Webinterface