Tor-Server unter OpenBSD

Da ich schon seit längerer Zeit meine Irssi-Instanz von meinem ALix-Homeserver auf einem V-Server verlegt habe, kann man die ungenutzte Bandbreite zu Hause für andere gemeinnützige Dienste nutzen. Deswegen habe ich mal auf den Rechner einen Tor-Server aufgesetzt um den Privacy-bewussten Computernutzer zu unterstützen.

Anbei erst einmal die Installationsanleitung unter OpenBSD.:

1. mit pkg_add installieren:

   # pkg_add tor

2. Tor beim Booten starten:

Dazu muss die /etc/rc.local editiert werden

if [ -x /usr/local/bin/tor ];
then
echo -n ' tor';
/usr/local/bin/tor -f /etc/tor/torrc
fi

3. Konfigurieren

Damit Tor beim booten in den Hintergrund forked, muss folgendes in der /etc/etc/tor/torrc aktiviert werden:

   RunAsDaemon 1

Als nächstes muss ein Verzeichnis für Tor’s Daten in der torrc festgelegt werden:

   DataDirectory /var/spool/tor

Weiterhin muss ein Verzeichnis für Tor’s Logfiles in der torrc festgelegt werden:

   Log notice syslog /var/log/tor

Dann müssen diese Verzeichnise noch erstellt und den Benutzern tor und root müssen die Rechte dafür gegeben werden:

# mkdir /var/spool/tor
# chmod 40700 /var/spool/tor
# chown _tor:_tor /var/spool/tor
# mkdir /var/log/tor
# chmod 40700 /var/log/tor
# chown _tor:_tor /var/log/tor

Die ganze Server-Geschichte lasse ich erst einmal weiterhin als Entry-Node laufen, bis ich mir eventuell mal ein paar Gedanken dazu gemacht habe, wie ich den Dienst für bestimmte Services weiterhin öffnen kann, ohne in Konflikt mit Ermittlungsbehörden zu kommen.
Entsprechend sieht der Abschnitt zur Exit-Policy in der /etc/tor/torrc wie folgt aus.:

   ExitPolicy reject *:* # no exits allowed

Advertisements

Anleitung zum Erstellen eines bootbaren USB-Stick als Installationsmedium unter OpenBSD

Nachdem ich nun sehr lange meine Alix mit NetBSD in der Version 4.0 betrieb und sie aber im letzten Jahr für die meiste Zeit doch nicht im Betrieb wahr, dachte ich mir, man könnte doch mal bei der Reaktivierung eine neue OS-Version installieren. Allerdings ist es mir absolut nicht gelungen, unter NetBSD einen neuen entsprechend bootfähigen USB-Stick als Installationsmedium zu erstellen.

Nach ein wenig Suchen im Web bin ich allerdings auf ein HowTo gestossen, wie man dies unter OpenBSD mit etwas knapp-eleganten Befehlen löst. Also habe ich dieses selber mit Erfolg versucht und stattdessen mal ein aktuelles OpenBSD auf mein Maschinchen geworfen.

Dieses HowTo habe hier mal übernommen und ein wenig erweitert:

 

1 Securelevel herabsetzen

Zuerst als root anmelden und in der Datei /etc/rc.securelevel den securelevel auf -1 setzen.

securelevel=-1

Danach erst einmal das System neu booten.

 

2 Ermitteln der Geometrie des Sticks

Bei dem einstecken des USB-Stick in einen Slot werden folgende Parameter angezeigt:

sd0 at scsibus1 targ 1 lun 0: <USB, Flash Disk, 3000> SCSI0 0/direct removable

sd0: 247MB, 247 cyl, 64 head, 32 sec, 512 bytes/sec, 506880 sec total

Sie teilen einem die Geometrie des verwendeten Sticks mit.

 

3 Schreiben des Master Boot Record (MBR)

# fdisk -i -c 247 -h 64 -s 32 sd0

 

4 Partitionieren des Mediums

# disklabel -f /tmp/fstab -E sd0

Um die vorhandenen Partionen sich anzuzeigen zu lassen:

>p

Nun die vorhandenen Partionen löschen:

>d a

Neue Partionen erzeugen:

>a a

offset: <enter>

size: <enter>

FS type: <enter>

mount point: /<enter>

Sichern und Beenden:

>q

 

5 Formatieren des Mediums

# newfs sd0a

 

6 Mounten des Devices

# mount /dev/sd0a /mnt

 

7 Kopieren des Kernels

# cp /bsd /mnt/

 

8 Schreiben des Partition Boot Record (PBR)

# cp /usr/mdec/boot /mnt/

# /usr/mdec/installboot /mnt/boot /usr/mdec/biosboot sd0

 

9 Mounten und kopieren der Daten der Orginal-Installations-CD

# mkdir /image

# mount -t cd9660 /dev/cd0a /image

# cp -R /image/4.8 /mnt

# cp -R /image/etc /mnt

 

10 Unmounten der Devices

# umount /mnt

# umount /image

 

11 Securelevel wieder heraufsetzen

In der der Datei /etc/rc.securelevel den Wert von securelevel=-1 wieder auf einen seiner Wahl setzen. Standardmässig ist 1 eingestellt. Am Ende das System neu starten.

Angepasster NetBSD-Kernel für das ALIX.1C

Anbei gebe ich mal eine erste Version für eine individuell angepasste Kernelkonfiguration von NetBSD 4.0 für das ALIX.1C Board an. Auch wenn NetBSD als solches als ein Betriebssystem angesehen wird, welches auf möglichst vielen Hardwareplattformen (z.B.: Embedded-Systeme, alte UNIX-Workstations) zum Einsatz kommen soll, macht diese Vorgehensweise auf einer Single-Board-Lösung wie dem ALIX besonders viel Sinn. Zum einem handelt es sich dabei um Hardware, die aufgrund ihrer Konzeption nur sehr geringe Leistung erbringen kann und diese auch nicht ausbaufähig ist, zum anderen basiert diese gleichzeitig auch auf der gewöhnlichen und handelsüblichen i386-Architektur, die aus historischer Sicht und aufgrund ihrer sehr umfangreichen technischen Weiterentwicklung unter den frei verfügbaren Unix-Entwicklungen sehr viel Unterstützung in Form von Treibern vieler zusätzlich erhältlichen Hardware-Komponenten gefunden hat. Konkret heißt das für mich, dass ich durch das Weglassen vieler (alten) verfügbaren Bustechnologien (z.B. MCA, EISA oder Bluetooth) und der dafür verfügbaren Hardwarekomponenten den Kernel um ein wesentlichen Anteil verkleinern konnte. Zusätzlich habe ich noch bewusst auf die Unterstützung einiger Schnittstellen, die das ALIX-Board anbietet, verzichtet. Dies währe zum einem der verbaute Sound-Chip, da er für einen Serverbetrieb nicht benötigt wird. Zum anderen kann man auch auf die Funktionalität einer Parallelen Schnittstelle verzichten, wenn man wie ich das Board in das kleinste verfügbare Gehäuse verbaut, wo es keine Möglichkeit gibt, sie von dem internen Pfostenstecker heraus zu leiten. Auf diese Weise konnte ich also nun wie gesagt die Größe des generischen Standartkernel um mehr als die Hälfte senken. Aber sicherlich ist an der Konfiguration noch einiges an Optimierung möglich.

Alix.1c-Kernelkonfiguration

Das ALIX

Neues Spielzeug hat am Dienstag den Weg in meine Stube gefunden. Es handelt sich um ein Alix.1C Board nebst Zubehör des schweizerischen Unternehmen PC Engines. Neben den anderen des selben Herstellers angebotenen Boards, welche auch für eine Vielzahl von Lösungen geeignet ist, besitzt dieses durch einige zusätzliche Features die Möglichkeit als Thin Client genutzt zu werden. Heraus zu heben sind zwei Eigenschaften, die diese Dinger haben: Erstens – obwohl die CPU nur mit maximal 500 MHz getaktet ist, ist sie so designed, dass sie weder mit einem Kühlkörper bestückt ist, geschweige denn ein Lüfter die ganze Zeit herum surrt um die Abwärme ab zu führen. Und zweitens verbraucht das Alix durch das Single-Board-Design ohne angeschlossener Erweiterungskarte oder einem Datenträger nur 5 Watt Strom. Das macht das gute Stück, egal ob mit Festplatte in einem größerem Gehäuse oder auch nicht, zu einem kleinen Homeserver den man einfach in eine Ecke verfrachten und tun lassen kann ohne das er einem in irgendeiner Form weh tut. Es produziert weder Wärme noch Lärme durch irgendwelche Lüfter und verbraucht sehr sehr wenig Strom.
Ich habe mir das Board mal mit folgendem Zubehör zukommen lassen: einem schwarzen verzinktem Stahlgehäuse, 2 GB CompactFlash-Karte, 12V Netzteil und einem 3 Meter Nullmodemkabel.

ALIX1C-Frontansicht

Im folgendem erst auch noch ein paar technische Daten:

Technische Daten:

– Prozessor: AMD Geode LX800 (500 MHz, 64 + 64 KByte L1 Cache, 128 KByte L2 Cache)
– 256 MByte SD-RAM Speicher (fest installiert)
– 512 KByte Flash-Speicher (Award-BIOS)
– 1 x Batterie für Real Time Clock
– 1 x Summer für einfache akustische Rückmeldungen
– Spannungsversorgung: 12V Gleichstrom über 5,5mm Hohlstecker
– Leistungsaufnahme: ca. 4-5W (ohne Erweiterungskarten und ohne Festplatte)
– Abmessungen: 170 x 170 mm, Mini-ITX

Externe Anschlüsse:

– 1 x 10/100 MBit/s (VIA VT6105M) Netzwerkinterface
– 1 x serielle Schnittstelle (1 x DB9 Stecker)
– 1 x kombinierter PS/2 Tastatur- und Mausanschluss
– 2 x USB 2.0 Ports (2 x USB-A Buchsen)
– 1 x 15-poliger VGA Anschluss
– 1 x AC97 Audio Codec (Line In, Line out, Kopfhörer, Mikrofon)

Interne Anschlüsse:

– 1 x CompactFlash-Anschluss (Master/Slave konfigurierbar, ohne Hot Swap)
– 1 x 44-poliger IDE-Anschluss für 2″ Notebookfestplatten
– 1 x serielle Schnittstelle (1 x 10-poliger Pfostenstecker)
– 1 x Parallelport (26-poliger Pfostenstecker)
– 2 x USB 2.0 Ports (2 x 10-poliger Pfostenstecker)
– 1 x GPIO Anschluss (26-poliger Pfostenstecker)
– 1 x LPC Anschluss (20-poliger Pfostenstecker)
– 1 x I2C Anschluss (4-poliger Pfostenstecker)
– 1 x Front Panel Anschluss (Power Switch, Reset Switch, Hard Disk LED, Power LED)
– 1 x miniPCI (z.B. für Wireless LAN und VPN miniPCI Karten)
– 1 x PCI Steckplatz (3,3 Volt)

ALIX1C-Rückansicht

ALIX1C-Innenansicht

Wie bereits angedeutet, habe ich mich als festen Datenträger gegen eine Notebookfestplatte und stattdessen für eine nur 2 GB große CompactFlash-Karte entschieden. Da ich das System erst einmal nur für ein paar IRC-Instanzen nutzen will und eventuell noch einem Anonymisierungsdienst anbieten möchte, reicht dies als Festplattenplatz erst einmal völlig aus. Ein entscheidender Vorteil dieses Board’s für mich ist, das es als einziges Modell in dem Portfolio sowohl einen VGA-Anschluss als auch einen PS/2 Anschluss für eine Tastatur bietet. Da ich nämlich bereits bisher noch keine Erfahrung mit einer seriellen Konsole über das Nullmodem habe, bietet es mir so erst einmal einen sicheren Anfang in das Aufsetzen eines Servers ohne grafische Benutzeroberfläche. Als Betriebssystem habe ich mich für ein NetBSD 4.0 entschieden, welches ich aufgrund dem Fehlen einer Diskettenschnittstelle oder eines CD-ROM Laufwerkes mittels eines extra mit NetBSD formatierten und bootbaren USB-Stick auf die CompactFlash-Karte installiert habe. Während der Installation des Betriebssystem habe ich bewusst auf folgende Sets verzichtet: Als erstes die Spiele aus reinem Desinteresse. Zweitens dem Compiler, da ein angepasster Kernel aus Zeitgründen auf einem schnelleren 2,8 GHz PC erstellt wird und alle weiteren Programme lediglich direkt als Binärprogramm installiert werden. Und drittens dem kompletten X11 Sets, da dies System nicht als grafische Workstation dienen soll. Folgende weitere Programme wurden also darauf folgend zusätzlich installiert (welche zum Teil noch weitere Pakete in Abhängigkeit mit sich ziehen und auch installieren):

nload-0.7.0 = Netzwerkmonitoring für Traffic und Bandbreitenverbrauch
irssi-0.8.12nb1 = Sicherer und modularer IRC-Client auf Kommandozeilenbasis
screen-4.0.3nb2 = Multi-screen Windowmanager
wget-1.11.4 = Downloaden von Ressourcen über ein Netzwerk über HTTP oder FTP
w3m-0.5.2nb2 = Textbasierter Webbrowser
tor-0.2.0.31 = Netzwerk zur Anonymisierung der Verbindungsdaten über TCP

Mal sehen, was ich mir demnächst noch so für Dinge mit dem ALIX erschließe. Der miniPCI Slot lacht mich schon ein wenig nach einer WLAN-Karte an. Abwarten und mal schauen was die Zukunft bringt.