.:[+ www.bjoern-kahl.de +]:.
Sie befinden sich hier: / Startseite / Computer / Firewall-Realisierung

Das Firewall-Log auf der vorhergehenden Seite Firewall ist aus meiner Faszination für Datenbanken und Netze entstanden. Bereits kurz nachdem ich mit meiner eigenen Domain auf eigener Hardware "online" gegangen war zeigte sich auf der Netzleitung eine rege - wenn auch unerwünschte - Aktivität. Da nun seitenlange Logfiles im Textformat nicht sonderlich lesbar sind, entstand sehr schnell die Idee statt in eine Textdatei zu loggen, die anfallenden Daten in eine SQL-Datenbank einzuspeisen und von dort aus komfortabel auszuwerten. Ein Ergebnis dieser Überlegung ist das Firewall-Log auf meiner Site.

Technisch basiert das Firewall-Log auf dem IP-Tables-Paket, einer PostgreSQL Datenbank und einer Hand voll eigener Skripte. Die meisten dieser Skripte sind bald 10 Jahre alt und nicht mehr wirklich auf dem Stand der Technik. Andererseits gilt auch hier: "Never touch a runnig system!"

Die ins System kommenden IP-Pakete durchlaufen mehrere IP-Table-Ketten. Pakete die verworfen werden sollen, werden über die LOG-Aktion der IP-Tables ausgegeben. Die so protokollierten Pakete (oder besser gesagt einige Daten über sie, wie die Quell- und Zieladresse, der Zielport und anderes) werden vom SysLog-Dämon in eine Datei und eine Named-Pipe geschrieben.

Ein Skript in der Sprache TCL (mit PostgreSQL-Unterstützung) liest aus jener Named-Pipe die Daten wieder aus, eine Zeile je abgelehntem IP-Paket. Das Skript zerlegt die Zeile in einzelne Felder und speichert die relevaten Informationen in einer Tabelle der PosgreSQL-Datenbank ab. Die Datenbank selber besteht aus mehrere Tabellen und Indices, um einen einfachen Suchzugriff und die Berechnung diverser Statistiken zu ermöglichen.

Die Seite Firewall selbst ist ein einfaches PHP-Skript welches an Hand fester "select" Ausdrücke die auf der Firewall-Seite dargestellten Zusammenfassungen generiert. Das Skript selbst ist sehr einfach gehalten, verwendet allerdings - um eine kurze Antwortzeit zu ermöglichen - temporäre Tabellen. Diese beschleunigen die Abfragen deutlich, zum einen da für die einzelnen Zusammenfassungen nur noch auf kleineren Datensätzen gearbeitet werden muss, und zum anderen die Suchkriterien für die einzelnen Statistiken einfacher werden.