FreeBSD mini-Howto
letztes Update: 26.05.2009
FreeBSD 7.2
Dies wächst hoffentlich halbwegs mit der konfiguration meines Homeservers, die letzte Version gibt es noch unter freebsd.lostpackets.de zu finden. Dieses Howto ist eigentlich mehr als Erinnerungsstütze für mich selber gedacht, es ist weder vollständig noch richtig!
FreeBSD installieren
- ganze Platte für FreeBSD
- BootManager Standard, da wir auf der ersten Platte installieren
- default Partionierung OK
- NO zur Ports-Collection (müssen eh mit portsnap einen komplette snapshot laden)
- enable ssh
- einen neuen User hinzufügen
Grundeinstellungen
Da wir die Copyright Bedingungen gelesen und verstanden haben und nicht bei jedem Einloggen zu sehen kriegen wollen:
defaultrouter in /etc/rc.conf festlegen:
und um nicht rebooten zu müßen:
# touch /etc/COPYRIGHT
Ports & Packages
Portstree installieren mit
# portsnap extract
in /etc/crontab folgende Zeile eintragen
und anschließend vor jedem Port bauen ein
währenddessen schonmal ein paar packages, die das weiter einrichten vereinfachen installieren: zsh, vim, screen
Ich brauch kein X11, daher
in
ergänzen.
Harddisk verschlüsseln
Wir benutzen geli, welches erst ab FreeBSD 6 teil von FreeBSD ist.
in /boot/loader.conf setzen wir ein:
und bei VIA C7 Prozessoren
Wer mag, darf stattdessen auch seinen Kernel neu kompilieren und zwar mit den Optionen
options GEOM_ELI
und bei Bedarf:
(wer noch isdn Support für Asterisk und AltQ braucht, bitte jetzt bereits daran denken)
Erzeugen nun mittels
einen Masterkey
geli-Partition initialisieren und das Passwort festlegen:
Enter new passphrase:
Reenter new passphrase:
Nun mit
die Platte attachen und mit
ein neues Dateisystem auf der Klartext-Partition /dev/ad2.eli erstellen.
Mittels
die Platte erstmal mit Zufallsdaten vollmüllen wie das FreeBSD Handbuch vorschlägt, mag zwar eine nette Idee sein, aber wenn man grosse Platten ( in meinem Fall 400GB ) benutzt praktisch unmöglich, falls man nicht über ein wirklich SCHNELLES System verfügt. Selbst mit /dev/urandom statt /dev/random schafft mein C3 Prozessor mit Hardware Random Number Generator (RNG) in einer Stunde nur etwa 2.9 GB, das wären fast 6 Tage für die ganze Platte.
ntpd
Damit die lokale Zeit immer akurat ist wollen wir den Network Time Protocoll Daemon starten.
Um den ntpd beim booten zu starten kommt nun in /etc/rc.conf die Zeile ntpd_enable=”YES” . Nun konfigurieren wir den ntpd durch editieren von /etc/ntp.conf:
server europe.pool.ntp.org
server pool.ntp.org
driftfile /var/db/ntp.drift
Drei Addressen als Fallback, das driftfile speichert die Abweichungen und die letzte Zeile sorgt dafür, dass unser Server keine Anfragen von aussen annimmt.
Anschliessend die Uhrzeit einmal auf den aktuellen Stand bringen:
-q beendet ntpd nach einmal ausführen, mit -g werden auch beliebig grosse Abweichungen korrigiert.
freebsd-update
/etc/freebsd-update.conf editieren:
MailTo ändern, AllowAdd yes, Components src world kernel, da wir alles updaten lassen wollen. Schnell noch einen Eintrag ins crontab für das tägliche laufen lassen:
und bei Bedarf mittels
das System auf den neusten Stand bringen. Falls wichtige Systemkomponenten ersetzt wurden, diese (oder ganzes System) neustarten.
Mails an root forwarden
In /root/ die Datein .forward anlegen und beliebige Mailadresse angeben.
Portaudit
beim install wird direkt ein script in /usr/local/etc/periodic/security geschrieben, “known vulnerabilties” werden einem also täglich per eMail geschickt.
smartmontools
Da es sich unter anderem um einen NAS-Server handelt, Platten beobachten mit smartmontools (auch sonst nie eine schlechte Idee):
# make install clean
dann die Zeile
in /etc/rc.conf einfügen und
ausführen. Anschließend
auskommentieren
für jede Festplatte einfügen.
denyhosts
den ssh-bruteforcern den Weg verlegen
# echo 'denyhosts_enable="YES"' >> /etc/rc.conf
# touch /etc/hosts.deniedssh
# echo 'syslogd_flags="-c"' >> /etc/rc.conf
/etc/hosts.allow editieren und folgende auskommentieren
und diese Zeilen hinzufügen:
sshd : ALL : allow