Anwendungen
Abbildung 1 zeigt im linken Terminalfenster eine erfolgreiche Anmeldung am Raspberry selbst. Im rechten Fenster sehen Sie eine SSH-Verbindung zur Jail, in der der Name-Server arbeitet. Die Hostnamen und IP-Adressen entstammen dem privaten Netzwerk des Autors.
Wie auf großen Servern bieten Jails auch auf kleinen Systemen wie dem RasPi eine Reihe von Anwendungsmöglichkeiten, beispielsweise als Webserver für die eigene Homepage, eigener Name-Server, Squid als transparenter Webproxy und vieles mehr. Das folgende Beispiel zeigt das Einrichten eines Name-Servers fürs eigene Netzwerk.
Da es noch kein vollständiges Repository für die ARM-Architektur des Raspberry Pi gibt, installieren Sie zunächst auf dem Host das Tool bind99 aus den Ports (Listing 12, Zeile 1). Hier wählen Sie die Optionen für SSL- und GSSAPI-Support ab, da Sie diese für ein kleines Heimnetz nicht benötigen (Zeile 2). Anschließend rufen Sie das Install-Skript auf (Zeile 3) und kopieren die Konfigurationsdateien aus /usr/local/etc/namedb nach /home/jails/dns/usr/local/etc und das Startskript aus /usr/local/etc/rc.d nach /home/jails/dns/usr/local/etc/rc.d.
Listing 12
# cd /usr/ports/dns/bind99 # make config # make install clean # mkdir -p /home/jails/dns/usr/local/etc/namedb # cp -R /usr/local/etc/namedb /home/jails/dns/usr/local/etc/namedb # cp -R /usr/local/etc/rc.d/named /home/jails/dns/usr/local/etc/rc.d/named
Damit das Programm in der Jail reibungslos funktioniert, nehmen Sie noch die in Listing 13 aufgeführten Änderungen in der Konfigurationsdatei des DNS-Daemons bind vor. Auch die Konfigurationsdatei /etc/rc.conf der Jail ergänzen Sie um die Einträge aus Listing 14. Die weitere Konfiguration des DNS-Dienstes hängt vom Netzwerk ab, um das sich die Namensauflösung kümmert.
Listing 13
query-source address 192.168.1.9;
listen-on port 53 { 192.168.1.9; };
allow-query {
192.168.1.0/24;
};
Listing 14
named_enable="YES" named_chrootdir=""
Auf dem Host fällt die Angelegenheit etwas komplizierter aus. Damit Anfragen an den Name-Server und dessen Antworten ihre jeweiligen Ziele erreichen, ergänzen Sie die Paketfilterregeln. Für den von OpenBSD abstammenden Paketfilter Pf sieht eine mögliche Regel in der /etc/pf.conf etwa so aus:
rdr on $if_int inet proto tcp from $if_int:network to any port dns -> 192.168.1.9 port dns
Für den FreeBSD-Paketfilter Ipfw fällt die Konfiguration etwas umfangreicher aus. Einerseits gilt es, den NAT-Daemon via /etc/natd.conf zu konfigurieren (Listing 15), andererseits die Regeln aus Listing 16 im Paketfilter zu ergänzen.
Listing 15
redirect_port tcp 192.168.1.9:53 53 redirect_port udp 192.168.1.9:53 53
Listing 16
#!/bin/sh
fwcmd="/sbin/ipfw -f"
[...]
${fwcmd} add divert natd all ↩
from any to any via ${if_ext}
${fwcmd} add allow udp from ↩
any to any 53 out via ${if_ext} ↩
iptos reliability keep-state
${fwcmd} add allow tcp from ↩
any to any 53 out via ${if_ext} ↩
setup iptos reliability keep-state
[...]
Aber Achtung: Die oben genannten Regeln zeigen zwar das Prinzip, öffnen aber auch den DNS-Port 53 für alle Anfragen. In der Praxis sollten die Ports nur den in der DNS-Konfiguration angegebenen externen DNS-Servern offenstehen. Abschließend starten Sie die DNS-Jail auf dem Host (Listing 17, erste Zeile). Einen Funktionstest nehmen Sie mit dem Kommando aus der zweiten Zeile von Listing 17 vor, das Ergebnis sollte dem im gezeigten Ausgabeprotokoll ähneln.
Listing 17
# service jail start dns # nslookup www.bsdforen.de Server: 192.168.1.9 Address: 192.168.1.9#53 Non-authoritative answer: Name: www.bsdforen.de Address: 82.193.243.81
Fazit
FreeBSD stellt mit seinen Jails selbst auf der beschränkten Hardware des Raspberry Pi eine ideale Lösung für sicherheitskritische Anwendungen dar. Jails bieten auch hier ein Maximum an Sicherheit bei minimalem Ressourcenverbrauch und geringem Administrationsaufwand. Allerdings gestaltet sich das Einrichten ohne ein weiteres FreeBSD-System mit mehr Rechenleistung recht langwierig.






