We can discuss the details later!

This and that.

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: defaultrouter="192.168.1.100" und um nicht rebooten zu müßen: # route add default 192.168.1.100

touch /etc/COPYRIGHT

Ports & Packages

Portstree installieren mit

`# portsnap fetch

portsnap extract`

in /etc/crontab folgende Zeile eintragen 0 3 * * * root portsnap -I cron update && pkg_version -vIL= und anschließend vor jedem Port bauen ein # portsnap update

währenddessen schonmal ein paar packages, die das weiter einrichten vereinfachen installieren: zsh, vim, screen

Ich brauch kein X11, daher WITHOUT_X11=true in /etc/make.conf ergänzen.

Harddisk verschlüsseln

Wir benutzen geli, welches erst ab FreeBSD 6 teil von FreeBSD ist.

in /boot/loader.conf setzen wir ein:

geom_eli_load=”YES” und bei VIA C7 Prozessoren padlock_load="YES"

Wer mag, darf stattdessen auch seinen Kernel neu kompilieren und zwar mit den Optionen

device crypto options GEOM_ELI

und bei Bedarf: device padlock

(wer noch isdn Support für Asterisk und AltQ braucht, bitte jetzt bereits daran denken) Erzeugen nun mittels

# dd if=/dev/random of=/root/ad2.key bs=64 count=1

einen Masterkey

geli-Partition initialisieren und das Passwort festlegen:

# geli init -s 4096 -K /root/ad2.key /dev/ad2 Enter new passphrase: Reenter new passphrase:

Nun mit

# geli attach -k /root/ad2.key /dev/ad2

die Platte attachen und mit

# newfs /dev/ad2.eli

ein neues Dateisystem auf der Klartext-Partition /dev/ad2.eli erstellen.

Mittels # dd if=/dev/random of=/dev/ad2.eli bs=1m 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 de.pool.ntp.org 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: # ntpd -qg -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:

0 3 * * * root /usr/sbin/freebsd-update cron

und bei Bedarf mittels # freebsd-update install 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

# cd /usr/ports/ports-mgmt/portaudit && make install clean 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): `# cd /usr/ports/sysutils/smartmontools

make install clean`

dann die Zeile smartd_enable="YES" in /etc/rc.conf einfügen und # mv /usr/local/etc/smartd.conf.sample /usr/local/etc/smartd.conf ausführen. Anschließend DEVICESCAN auskommentieren /dev/ad0 -a -o on -S on -s (S/../.././02|L/../../6/03) -m mail@domain.tld für jede Festplatte einfügen.

denyhosts

den ssh-bruteforcern den Weg verlegen

`# cd /usr/ports/security/denyhosts && make install clean

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 `

ALL : ALL : allow

und diese Zeilen hinzufügen: sshd : /etc/hosts.deniedssh : deny sshd : ALL : allow `