Die dynamische Freischaltung von Ports nach erfolgter Anmeldung eines Benutzers kennen CheckPoint- und Cisco-Administratoren schon länger unter den Begriffen "Client Authentication" und "Cut-through Proxy". In den allermeisten Fällen findet sich diese Funktionalität aber eher in Schulungen oder entsprechenden Prüfungen als in der Realität wieder, vorwiegend da die Umsetzung nur wenig benutzerfreundlich ist, oder aufgrund von Einschränkungen erst gar nicht genutzt werden kann.
Vermutlich ist dies auch der Grund, warum IPTables eine solche Eigenschaft von Haus aus erst gar nicht mitbringt. Natürlich ließe sich eine solche Funktionalität mit einigen selbst geschriebenen Skripts nachbilden. Ob die selbst gestrickte Lösung dann aber auch von den Benutzern angenommen wird steht auf einem anderen Blatt, da für den Administrator primär zumeist die Funktionalität und Sicherheit zählt. Die Benutzbarkeit durch den Endnutzer bleibt hier in viele Fällen auf der Strecke.
Abhilfe hierbei schafft das unter GPL stehende Portsmith [1], das die nötige Infrastruktur bereitstellt, um authentifizierten Benutzern die Freischaltung von Ports per Webbrowser zu ermöglichen. Mir Portsmith können sie Ports auf der Firewall nicht nur selbst öffnen, sondern vor auch Weiterleitungen von Verbindungen an interne Server einrichten. Während Ersteres praktisch für den Administrator sein kann, den SSH-Zugang von außen nur im Bedarfsfall für sich zu öffnen, zielt die zweite Variante vor allem auf Endnutzer ab, die sich beispielsweise so über das Internet mit einem internen Terminalserver verbinden können.
Um potentiellen Sicherheitsrisiken vorzubeugen, bleibt der Administrator hierbei natürlich trotz allem Herr über die jeweiligen Freischaltungen. Jedem Benutzer werden die für ihn benötigten Kommunikationsbeziehungen explizit zugeordnet, so dass dieser ausschließlich Zugriff auf die für ihn freigegebenen Ressourcen erhält. Somit wird sichergestellt, dass in Nutzer nicht plötzlich das Firewall-Regelwerk in Eigenregie unterminieren kann.
Potentieller Einsatzweck einer Portsmith-basierten Firewall wäre beispielsweise ein "VPN-Ersatz": Durch die erfolgte Anmeldung ist sichergestellt, dass ein bestimmter Dienst ausschließlich durch den authentisierten Nutzer in Anspruch genommen werden kann. Dem Mitlesen von Verbindungen würde weiterhin durch den Einsatz verschlüsselter Verbindungen (SSH, SSL, …) ein Riegel vorgeschoben. Auf den Einsatz eines dedizierten VPN-Servers könnte somit verzichtet werden.
Als weiteres Schmankerl bringt Portsmith eine integrierte, per Webbrowser bedienbare Backuplösung mit. Per Knopfdruck werden hierbei das Regelwerk, wichtige Dateien und die Datenbank auf einen CD-Rohling gebrannt. Ein entsprechender Brenner in der Maschine ist hierfür natürlich obligatorisch.
Als Basis für Portsmith ist Ubuntu 8.0.4 Server LTS [2] vorgesehen. Natürlich steht dem Einsatz einer anderen Distribution wenig im Wege, der zuständige Administrator sollte allerdings in der Lage sein, Pfade und das Handling der Komponenten an die Bedürfnisse von Portsmith anzupassen. Das Ganze basiert auf dem Apache-Webserver [3] mit aktiviertem PHP5-Modul [4] und dessen Modul für die PostgreSQL-Datenbank [5]. Andere Datenbanksysteme bleiben außen vor, sie sind schlichtweg nicht unterstützt.
Der Webserver dient im weiteren Verlauf als Frontend sowohl für den Administrator als auch für die Benutzer, deren Konten in der Postgres-Datenbank vorgehalten werden. Auch das dynamische Regelwerk wird in der Datenbank gespeichert und bei Bedarf von dort abgerufen. Im Hintergrund ablaufende Scripte erzeugen aus den Extrakten der Datenbank regelmäßig die entsprechenden IPTables-Kommandos, und fügen diese dem Regelwerk hinzu.