Backup-Strategie für den Home-Server

Der vorausgegangenen Artikel behandelte die Basis-Einrichtung des FreeBSD-Home-Servers. Bevor wir mit irgendwelchen weiteren Installationen beginnen, etablieren wir das Server-Backup-System.

Client-Backups via Time Machine

In meinem Heim-Netzwerk befindet sich der FreeBSD-Home-Server und mehrere Mac-OS-X-Client-Computer, sowie 2 iPhones. Das Backup der iPhones landet in dem iTunes auf dem Mac des jeweiligen Benutzers. Das Backup der Macs inklusive des jeweiligen iPhone-Backups läuft übers die in Mac OS X seit Version 10.5 integrierte Time Machine, wobei die TM-Backups stündlich über das Netzwerk auf einem separatem Volume des FreeBSD-Home-Servers landen. Für die umfassende Datensicherung fehlt also nur eine Backup-Strategie und das dazugehörige System für den Server.

Server-Backup-System

Während bei einem Client-Backup die Sicherung der Daten des Benutzers, womöglich in mehreren Versionen, im Vordergrund steht, geht es beim Server neben der eigentlichen Datensicherung auch um eine schnelle Wiederherstellung der Funktionalität im Ernstfall. Beides erreicht man am besten in dem man in regelmäßigen Abständen eine exakte 1:1 Kopie der Server-Volumes auf eine externe Festplatte überspielt, also einen sogenannten Festplatten-Klon erstellt. Fällt der Server aus, dann kann man den Klon in einen anderen Rechner einbauen, und damit in kürzest möglicher Zeit einen neuen Server mit identischer Funktionalität auf dem Stand des letzten Sicherungszeitpunkts aufsetzen.

Im Grunde muß die Kapazität der Klon-Festplatte gerade ausreichen, um die Datenmenge der Arbeitsplatte aufnehmen zu können. Die allgemeine Erfahrung zeigt, daß Festplatten immer irgendwann voll werden, und damit man keine bösen Überraschungen beim Klonen erlebt, weil die Klonplatte zu klein ist, wählt man am besten von vornherein für den Klon eine Platte mit derselben Kapazität wie die der Arbeitsplatte.

Aus grundsätzlichen Erwägungen heraus ist es sinnvoll die Klonplatte separat vom Server aufzubewahren. Denn neben inhärenter Systemfehler gibt es ja auch Katastrophen infolge derer das System und seine Datenträger unwiderruflich zerstört bzw. unserem Gebrauch entzogen werden können, z.B. Brand- und Wasserschäden, einstürzende Neubauten, Diebstahl, Beschlagnahme etc. Damit nun die Klonplatte nicht demselben Feuer, Hochwasser, Sturz bzw. derselben Wegnahme zum Opfer fallen kann, ist sie mit Bedacht an einem feuer- und wasserfesten sowie geheimen Ort auszulagern.

Es empfiehlt sich sogar mindestens 2 Klonplatten in dem Backup-System zu verwenden. Je nach Datenmenge kann das Klonen nämlich einige Stunden dauern, und wenn einer der genannten Katastrophen während des Klon-Vorganges einträte, dann wäre alles weg. Mindestens 1 Klon sollte also immer an einem sicheren Ort lagern.

Jedenfalls bieten sich externe USB-Festplatten zur Datensicherung an. Diese lassen sich einfach an- und abklemmen und nehmen nicht viel Stell- bzw. Lagerplatz ein.

Vorbereitung der Klonplatte(n)

Die Klonplatten müssen für FreeBSD partitioniert und formatiert werden. Die folgenden Schritte braucht man im Prinzip je Klonplatte nur ein einziges Mal durchführen. Es ist jedenfalls wichtig, daß die Gerätekennung der jeweiligen Festplatte eindeutig identifiziert wird, damit wir nicht versehentlich das falsche Laufwerk formatieren. Wir melden uns als root-User an unserem Server an:

ssh -p7 root@192.168.1.35
Password for root@server:

Wir wollen nun die Einträge im System-Logbuch verfolgen, und dazu setzen wir das folgende Kommando ab:

tail -f /var/log/messages

Wir schalten die externe USB-Platte ein und schließen sie an eine freie USB-Schnittstelle des Servers an. Sobald der Server die Festplatte erkannt hat, tauchen entsprechende Einträge im System-Logbuch auf, z.B.:

Mar 17 17:17:41 server kernel: ugen4.2:  at usbus4
Mar 17 17:17:41 server kernel: umass0:  on usbus4
Mar 17 17:17:41 server kernel: umass0:  SCSI over Bulk-Only; quirks = 0x4000
Mar 17 17:17:41 server kernel: umass0:2:0:-1: Attached to scbus2
Mar 17 17:17:41 server kernel: da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Mar 17 17:17:41 server kernel: da0:  Fixed Direct Access SCSI-2 device 
Mar 17 17:17:41 server kernel: da0: Serial Number D57CA3405260
Mar 17 17:17:41 server kernel: da0: 40.000MB/s transfers
Mar 17 17:17:41 server kernel: da0: 953869MB (1953525168 512 byte sectors: 255H 63S/T 121601C)
Mar 17 17:17:41 server kernel: da0: quirks=0x2<NO_6_BYTE>

Im vorliegenden Fall können wir erkennen, daß der soeben angeschlossenen USB-Festplatte vom Betriebssystem die Gerätekennung da0 zugewiesen wurde. Ferner wurde die Platte als Device unter /dev/da0 in die Geräteliste aufgenommen. Wichtig: man darf nicht davon ausgehen, daß die Platte immer dieselbe Kennung bekommt. Wenn ein anderes USB-Massenspeichermedium zuvor angeschlossen wurde, dann kann es sein, daß dieses als da0 geführt wird und unsere Klonplatte z.B. als da1. Man muß sich also immer über die Gerätekennung eines betreffende Laufwerks vergewissern, bevor man gravierende Änderungen vornimmt.

Zum Formatieren der Platte benutzen wir das FreeBSD-Tool gpart(8). Ggf. muß zunächst die alte Formatierung von daX zerstört werden, wobei in der Folge daX durch die tatsächliche Gerätekennung zu ersetzen ist:

gpart destroy -F daX

Mit der folgenden Kommando-Sequenz wird die Festplatte für FreeBSD partitioniert und boot-fähig gemacht:

gpart create -s gpt daX
gpart add -s 128 -a 4k -t freebsd-boot daX
gpart add -s 4G -a 4k -t freebsd-swap -l SWAP daX
gpart add -a 4k -t freebsd-ufs -l BACK daX
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 daX
gpart set -a bootme -i 3 daX

Mit dem Befehl [gpart show daX] kann man die auf diese Weise erstellte Partitionstabelle überprüfen:

=>        34  1953525101  daX  GPT  (932G)
          34           6       - free -  (3.0k)
          40         128    1  freebsd-boot  (64K)
         168     8388608    2  freebsd-swap  (4.0G)
     8388776  1945136352    3  freebsd-ufs  [bootme]  (928G)
  1953525128           7       - free -  (3.5k)

Nun muß noch das Dateisystem auf der Hauptpartition daXp3 erzeugt werden:

newfs -j /dev/daXp3

Die obigen Schritte müssen für jede einzelne der Klonplatten wiederholt werden.

 

Der eigentliche Klon-Vorgang

Fortsetzung folgt…

Basis-Einrichtung des FreeBSD-Home-Servers

Im vorhergehenden Artikel wurde die Installation des Betriebssystems FreeBSD auf dem Home-Server bis zu dem Stand besprochen, daß der Home-Server eigenständig ohne Interaktion hochfährt, und man sich als root-User per SSH anmelden kann.

Wir melden uns also an:

ssh root@192.168.1.35
Password for root@server:
Last login: Wed Mar 12 22:02:44 2014 from 192.168.1.5
FreeBSD 10.0-RELEASE (GENERIC) #0 r260789: Thu Jan 16 22:34:59 UTC 2014

Welcome to FreeBSD!

Before seeking technical support...:

o  Security advisories and updated errata...

o  The Handbook and FAQ documents...

If you still ...

Edit /etc/motd to change this login announcement.
root@server:~ #

Nachdem wir die Willkommens-Hinweise endlich zur Kenntnis genommen haben, können wir diese löschen. Dazu entfernen wir die Datei /etc/motd:

rm /etc/motd

Unser Home-Server wird später direkt mit dem Internet verbunden sein, und deshalb ist es sinnvoll den Standardport 22 für den SSH-Dienst auf einen anderen ansonsten von unserem Server nicht verwendeten Port umzuändern. Beispielsweise werden wir hier Port 11 verwenden. Wichtig: Jeder sucht sich bitte für seine Installation seinen eigenen Port aus. Ferner erlauben wir nur dem root-User SSH-Zugriff – s. hierzu auch SSHd – Permit root login! So what?

echo "Port 11" >> /etc/ssh/sshd_config
echo "AllowUsers root" >> /etc/ssh/sshd_config

Der Home-Server wird später auch als Zeit-Server für das lokale Netzwerk dienen, und wir müssen deshalb das lokale Netz in der Konfigurationsdatei /etc/ntp.conf freigeben:

echo "restrict 192.168.1.0 mask 255.255.255.0" >> /etc/ntp.conf

Zur Installation von Dritt-Software verwenden wir wo immer möglich das FreeBSD-PKG-System. Damit lassen sich vorkonfigurierte und vorgefertigte Binärpakete vom FreeBSD-Package-Server herunterladen und installieren. Das PKG-System wird wie folgt initialisiert:

pkg install pkg
echo 'WITH_PKGNG=yes' >> /etc/make.conf
pkg2ng

In einigen Fällen benötigen wir speziell konfigurierte Dritt-Software. Dazu benutzen wir das FreeBSD-Ports-Management-System. Unser lokales Ports-Verzeichnis wird lokale Patches enthalten, und damit diese nicht bei jeder Aktualisierung überschrieben werden, müssen wir das Ports-Verzeichnis vom FreeBSD-Subversion-Server installieren und darüber regelmäßig aktualisieren. Im ersten Schritt wird subversion selbst als Binärpaket installiert. Ggf. müssen wir ein altes Ports-Verzeichnis löschen, und schließlich holen wir uns mit dem Subversion-Befehl svn checkout ein aktuelles unter Versionskontrolle stehendes Ports-Verzeichnis vom europäischen FreeBSD-Subversion-Server ab:

pkg install subversion
rm -r /usr/ports
svn checkout https://svn0.eu.FreeBSD.org/ports/head /usr/ports

Wir installieren nun das Ports-Management-Tool portmaster, den Text-Editor nano und das Festplatten-Tool ataidle als Binärpakete:

pkg install portmaster
pkg install nano
pkg install ataidle

Wir erzeugen die Konfigurationsdatei für den Boot-Loader /boot/loader.conf:

nano /boot/loader.conf

Wir kopieren den folgenden Inhalt in den durch nano geöffneten Eingabebereich:

autoboot_delay="-1"
beastie_disable="YES"
kern.cam.ada.legacy_aliases="0"
vm.kmem_size="512M"
vm.kmem_size_max="512M"
aio_load="YES"

Mit der Tastenkombination <ctrl-o> wird der neue Inhalt gespeichert, und mit <ctrl-x> wird der Editor beendet.

Wir nehmen zusätzliche Einstellungen in dem Startup-Script /etc/rc.conf vor:

nano /etc/rc.conf
keymap="german.iso.acc.kbd"
dumpdev="NO"
devd_enable="NO"
virecover_enable="NO"
syslogd_flags="-s -s"

### HD Einstellungen
background_fsck="NO"
fsck_y_enable="YES"
ataidle_enable="YES"
ataidle_devices="ada0"
ataidle_ada0="-P 254"
ataidle_ada0="-A 127"

### Netzwerk Einstellungen
hostname="server"
ifconfig_re0="inet 192.168.1.35/24 -tso"
defaultrouter="192.168.1.1"

### Daemons
ntpd_sync_on_start="YES"
ntpd_enable="YES"
sshd_enable="YES"

Die blau markierten Einstellungen müssen ggf. angepaßt werden.

Wir starten den Home-Server neu [shutdown -r now], und melden uns als root-User erneut via SSH an – ab sofort aber immer über den speziellen Port, hier 11:

ssh -p11 root@192.168.1.35
Password for root@server:
Last login: Sat Mar 15 16:21:04 2014 from 192.168.1.5
FreeBSD 10.0-RELEASE (GENERIC) #0 r260789: Thu Jan 16 22:34:59 UTC 2014
root@server:~ #

Der Home-Server ist nun vorbereitet für die weitere Software-Installation (s. Folgeartikel)

Xcode 5 mit Subversion 1.7 und SASL Encryption

Xcode 5 kommt von Haus aus mit Subversion 1.7. Allerdings, ist bei der Xcode-Subversion-Installation das ra_svn-Modul ohne SASL-Unterstützung erzeugt worden, und somit lassen sich mit dem svn-Protokoll keine verschlüsselten Verbindungen zu einem SVN-Server aufbauen. Wenn man auf Verschlüsselung nicht verzichten will, dann muß man entweder den Subversion-Server für das aufwendigere https-Protokoll einrichten, oder man kompiliert Subversion 1.7 mit SASL-Unterstützung auf dem Mac OS X Client neu und tauscht die Xcode-Subversion-Fassung ohne SASL gegen die eigene Subversion-Fassung mit SASL aus. Im letzteren Fall könnte man dann von Xcode aus mit dem svn-Protokoll auf einen mit SASL-Encryption eingerichteten Server zugreifen.

Subversion ist derzeit bereits bei Version 1.8.8 angelangt. Xcode 5 arbeitet aber nur mit Subversion 1.7, und ist mit v1.8 inkompatibel. Man kann daher nicht einfach Subversion 1.8 über Mac Ports installieren, sondern man muß die Abhängigkeiten und Subversion selbst manuell herunterladen, kompilieren und unter /usr/local installieren.

Benötigt wird (nach heutigem Versionsstand):

  1. Apache Portable Runtime apr-1.5.0 and apr-util-1.5.3
  2. High-Performance asynchronous HTTP Client Library serf-1.3.4
  3. Apache Subversion subversion-1.7.16

Ferner muß via Mac Ports das Software Construction Tool SCons installiert werden, das benötigt wird, um serf zu kompilieren und zu installieren. Es folgen die notwendigen Terminal-Kommandos.

sudo port install scons

Wechseln des Arbeitsverzeichnisse, z.B. nach ~/Desktop, und Setzen von vernünftigen Compiler-Flags:

cd ~/Desktop
export CFLAGS="-O3 -g0"

Herunterladen und Installation der Apache Portable Runtime:

curl -O ftp.halifax.rwth-aachen.de/apache/apr/apr-1.5.0.tar.gz
tar -oxzf apr-1.5.0.tar.gz
cd apr-1.5.0
./configure
sudo make install clean
cd ..; sudo rm -r apr-1.5.0

curl -O ftp://ftp.halifax.rwth-aachen.de/apache/apr/apr-util-1.5.3.tar.gz
tar -oxzf apr-util-1.5.3.tar.gz
cd apr-util-1.5.3
./configure --with-apr=/usr/local/apr
sudo make install clean
cd ..; sudo rm -r apr-util-1.5.3

Herunterladen und Installation der High-Performance asynchronous HTTP Client Library:

curl -LO https://serf.googlecode.com/svn/src_releases/serf-1.3.4.tar.bz2
tar -oxjf serf-1.3.4.tar.bz2
cd serf-1.3.4
scons APR=/usr/local/apr APU=/usr/local/apr OPENSSL=/usr
sudo scons install
scons -c
cd ..; rm -r serf-1.3.4

Herunterladen und Installation von Apache Subversion:

curl -O ftp://ftp.halifax.rwth-aachen.de/apache/subversion/subversion-1.7.16.tar.bz2
tar -oxjf subversion-1.7.16.tar.bz2
cd subversion-1.7.16
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-serf=/usr/local --without-berkeley-db
sudo make install clean
cd ..; sudo rm -r subversion-1.7.16

Antesten:

/usr/local/bin/svn --version
svn, version 1.7.16 (r1569520)
   compiled Mar 13 2014, 17:04:51

Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme

Nun muß man das Xcode-Subversion gegen das neue Subversion austauschen. Das kann man manuell machen, aber es ist weniger fehleranfällig, das über ein geeignetes Shell-Script zu bewerkstelligen. Mit einem zweiten Shell-Script kann man Xcode dann auch wieder in den Originalzustand zurückversetzen:

upgrade-xc-svn.sh

#!/bin/sh

cd /Applications/Xcode.app/Contents/Developer/usr/lib
if [ ! -d "subversion.orig" ]; then
   mkdir -p subversion.orig
   mv libsvn* subversion.orig/
   ln -s /usr/local/lib/libsvn* ./
fi

cd /Applications/Xcode.app/Contents/Developer/usr/bin
if [ ! -d "subversion.orig" ]; then
   mkdir -p subversion.orig
   mv svn* subversion.orig/
   ln -s /usr/local/bin/svn* ./
fi

downgrade-xc-svn.sh

#!/bin/sh

cd /Applications/Xcode.app/Contents/Developer/usr/lib
if [ -d "subversion.orig" ]; then
   rm libsvn*
   mv subversion.orig/* ./
   rm -r subversion.orig
fi

cd /Applications/Xcode.app/Contents/Developer/usr/bin
if [ -d "subversion.orig" ]; then
   rm svn*
   mv subversion.orig/* ./
   rm -r subversion.orig
fi

Zwecks Aktivieren des SASL-Subversions in Xcode setzt man dann im Terminal das folgende Kommando ab:

sudo upgrade-xc-svn.sh

Um Xcode in den Originalzustand zurückzuversetzen, benutzt man das folgende Kommando:

sudo downgrade-xc-svn.sh

 

FreeBSD Forums Beautifier – Safari Extension

At the end of the last year, the FreeBSD Forums switched for certain reasons from vBulletin to phpBB. The new appearance of the forums is very ugly, and it rendered my 475 posts almost unreadable.

  • How are people supposed to read dark grey text on grey background.
  • Why so many different font families and sizes?
  • What is the name of the esthetics of a dirty creme coloured citation background – is it “Cold Vormit”?
  • Why all this hover blinking, which turns the screen into a stroboscope? Perhaps SpongeBob and his friends like this, the only thing missing is the yelling.

I hate it, and I was that angry, that I purposely nuked my login credentials for my account, and I simply stopped reading and posting on said forums.

Recently I stumbled across the MacWorld Article “How to create a Safari extension”. And with that, I managed to create an initial set of CSS overwrites of a FreeBSD Forums Beautifier Safari extension in less than 30 min. I added some more improvements, and now I am really satisfied with the appearance of the FreeBSD froums modified by this extension. This employs a high contrast, low blinking, no distraction theme (s. screenshot below). In addition it uses only 2 font families, namely Adobes Open Source fonts Source Sans Pro and Source Code Pro. On SourceForge these fonts are available for download and they can be almost freely used under the SIL Open Font License. These fonts are available in the Web Font format WOFF, which can be readily embeded into said Safari Extension.

 

Beauty-Forum

 

The Safari Extension

The Extension is available for download from here: FreeBSD-Forums-Beautifier.safariextz. It includes the Open Source Web Fonts Source Sans Pro and Source Code Pro from Adobe, and for this reason the download is quite big – 9.1 MB.

This extension is signed with my Apple Developer ID, and it includes an update manifest, so Safari would update the extension automatically once new versions are available.

Download the extension, then install it into Safari by double-clicking onto its icon and by confirming the installation-request – you should see an immediate effect on the appearance of the FreeBSD Forums pages.

The CSS file, which does the hard work contains the following definitions. It should be possible to use this for creating similar extensions for other web browsers without major problems.

/*
   The author Dr. Rolf Jansen claims no Copyright on these CSS definitions.
   You may freely use it for any purpose on your own risk.
*/

/* Source Sans Pro - Normal */
@font-face {
   font-family: SourceSansPro;
   font-style: normal;
   font-weight: 300;
   src: local('Source Sans Pro Light'),local('SourceSansPro-Light'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-Light.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceSansPro;
   font-style: normal;
   font-weight: 400;
   src: local('Source Sans Pro'),local('SourceSansPro-Regular'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-Regular.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceSansPro;
   font-style: normal;
   font-weight: 600;
   src: local('Source Sans Pro Semibold'),local('SourceSansPro-Semibold'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-Semibold.ttf.woff") format("woff");
}

/* Source Sans Pro Bold is too bold,use Semibold instead */
@font-face {
   font-family: SourceSansPro;
   font-style: normal;
   font-weight: 700;
   src: local('Source Sans Pro Semibold'),local('SourceSansPro-Semibold'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-Semibold.ttf.woff") format("woff");
}


/* Source Sans Pro - Italic */
@font-face {
   font-family: SourceSansPro;
   font-style: italic;
   font-weight: 300;
   src: local('Source Sans Pro Light Italic'),local('SourceSansPro-LightIt'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-LightIt.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceSansPro;
   font-style: italic;
   font-weight: 400;
   src: local('Source Sans Pro Italic'),local('SourceSansPro-It'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-It.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceSansPro;
   font-style: italic;
   font-weight: 600;
   src: local('Source Sans Pro Semibold Italic'),local('SourceSansPro-SemiboldIt'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-SemiboldIt.ttf.woff") format("woff");
}

/* Source Sans Pro Bold Italic is too bold,use Semibold Italic instead */
@font-face {
   font-family: SourceSansPro;
   font-style: italic;
   font-weight: 700;
   src: local('Source Sans Pro Semibold Italic'),local('SourceSansPro-SemiboldIt'),
        url("SourceSansPro/WOFF/TTF/SourceSansPro-SemiboldIt.ttf.woff") format("woff");
}


/* Source Code Pro */
@font-face {
   font-family: SourceCodePro;
   font-style: normal;
   font-weight: 300;
   src: local('Source Code Pro Light'),local('SourceCodePro-Light'),
        url("SourceCodePro/WOFF/TTF/SourceCodePro-Light.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceCodePro;
   font-style: normal;
   font-weight: 400;
   src: local('Source Code Pro'),local('SourceCodePro-Regular'),
        url("SourceCodePro/WOFF/TTF/SourceCodePro-Regular.ttf.woff") format("woff");
}

@font-face {
   font-family: SourceCodePro;
   font-style: normal;
   font-weight: 600;
   src: local('Source Code Pro Semibold'),local('SourceCodePro-Semibold'),
        url("SourceCodePro/WOFF/TTF/SourceCodePro-Semibold.ttf.woff") format("woff");
}

/* Source Code Pro Bold is too bold,use Semibold instead */
@font-face {
   font-family: SourceCodePro;
   font-style: normal;
   font-weight: 700;
   src: local('Source Code Pro Semibold'),local('SourceCodePro-Semibold'),
        url("SourceCodePro/WOFF/TTF/SourceCodePro-Semibold.ttf.woff") format("woff");
}

body {
   font-family: SourceSansPro,sans-serif !important;
   font-weight: 300 !important;
   font-size: 11px !important;
}

h1,h2,h3,h4,a.forumtitle,a.topictitle,li.header dt,li.header dd,.postbody h3,
.content,.content p,dl.faq,p.author,.notice,.attachbox dt,dl.file,dl.file dt,dl.thumbnail dd,
fieldset.polls,fieldset.polls dd div,fieldset,input,select,textarea,#message-box textarea,
a.button1,input.button1,input.button3,a.button2,input.button2 {
   font-family: SourceSansPro,sans-serif !important;
}

.postbody .content {
   margin-bottom: -6px !important;
   min-height: 100px !important;
   padding: 18px !important;
   color: #000 !important;
   background-color: #fff !important;
}

.bg1,.bg2 {
   background-color: #fff !important;
}

.bg3 {
   background-color: #f3f3f3 !important;
}

.post.bg1,.post.bg2 {
   background-color: #f3f3f3 !important;
}

li.row,li.row:hover {
   background-color: #fff !important;
}

li.row:hover dd {
   border-left-color: transparent !important;
}

.rtl li.row:hover dd {
   border-right-color: transparent !important;
   border-left-color: transparent !important;
}

code,dl.codebox code {
   font-family: SourceCodePro,monospace !important;
   font-weight: 300 !important;
   font-size: 11px !important;
   color: #000 !important;
   background-color: #f7f7ff !important;
   max-height: 640px !important;
   overflow: auto !important;
   white-space: nowrap !important;
   word-wrap: normal !important;
   -webkit-hyphens: none !important;
   -moz-hyphens: none !important;
   hyphens: none !important;
}

tt,kbd,em {
   font-family: SourceCodePro,monospace !important;
   font-weight: 400 !important;
   font-size: 13px !important;
}

kbd {
   background-color: #f3f3f3 !important;
   padding: 3px 3px 0px 3px !important;
}

blockquote {
   color: #000 !important;
   background-color: #FFFFF1 !important;
}

 

Perhaps, I may start participating on the FreeBSD Forums again.

SSHd – Permit root login! So what?

The NIX and NUX experts keep-on telling us, that root login must be disabled:

  • on Clients, because this prevents users from accidentally doing harm to their systems – OK, granted!
  • on Servers, because this prevents attackers from gaining full access when they obtained SSH login credentials, e.g. by brute forcing the account – Hmm, really?

So Why?

No doubt, there are too many idiots in the world, having nothing better to do than crawling in the net for open SSH ports, and trying to brute force the root login. Put a SSH server on the internet, and you’ll find your security log rapidly growing by all that failed ssh login attempts. The fearful among us are simply scared and the others find this interesting, to say the least.

Gaining root access to your machine could be quite easy for an attacker, given your root password is 12345 or betty. Yes, in this case it would be better to not to permit root login on your ssh port – perhaps it’s better not to open ssh at all with such kind of passwords.

Reasonably secure passwords are not vulnerable to brute force attacks. Even better, it is very easy to stop all this brute forcing by having your sshd listening on another port number. Use a low prime number for your ssh port – in this respect there is nothing magical to prime numbers, other than up to 19 no services that are nowadays important are running on prime number ports. Only by this measure, failed attacks will drop to zero in your security log.

Anyway, the experts suggest us to deny root ssh login in favour of ssh login by a regular user, let’s say rolf. User rolf would then use sudo or su in order to gain supersuser access rights. So even if the password of user rolf is compromised, and the attacker could login as a regular user, he still is in need for the root password, in order to do the real bad things.

Sounds good, doesn’t it. Well, I have to admit that I like the idea of an attacker achieving access with my user credentials not very much more than of him having root access – for me this is only marginally less bad than the actual worst case, perhaps -9.5 on the scale from 0 to -10. So, I am supposed to add the hurdle for preventing 5 % of additional possible damnification?

Let’s assume the passwords for root and rolf are each 12 characters long and are randomly formed out of the digits 0-9 and the 52 lower+upper case letters of the ISO basic Latin Alphabet. In the real random case, an attacker would need to brute force:

Number of Variations with Repetition: 2 · nk = 2 · 6212 = 6.45·1021

I would need to remember a 12 char password for rolf and another 12 char one for root, so from the point of view of memorisation this is a total of 24 characters. Now, if I consider my memory a limited resource, then I waste 12 characters for only 5 % of an effect – sounds not so good, does it? But wait, what happens, if I focus all my memorisation capacity on the fist stage SSH login, i.e. a 24 characters root password:

Number of Variations with Repetition: n2·k = 622·12 = 6224 = 1.04·1043

By focusing on a one stage SSH login, I would gain more than 21 orders of magnitude better security against brute force attacks.

So What?

FreeBSD auf dem Home-Server installieren

Im Vorgängerartikel “FreeBSD auf dem Home-Server ohne Tastatur und Monitor über das Netzwerk einrichten” wurde beschrieben, wie man einen USB-Stick vorbereitet, mit dem man einen Server ohne Tastatur und Bildschirm starten kann, um dann über das Netzwerk mit SSH das Betriebssystem FreeBSD installieren zu können.

Wenn man Tastatur und Bildschirm für seinen Home-Server zur Verfügung hat, dann kann man die Installationsmedien auch konventionell, im Prinzip so wie im FreeBSD-Handbuch beschrieben, vorbereiten. Für den Fall der Installation von CD, lädt man sich das ISO-Image FreeBSD-10.0-RELEASE-amd64-disc1.iso vom FreeBSD-FTP-Server und brennt es z.B. mit dem Festplattenhilfsprogramm des Macs oder sonstwie  auf CD.

Wenn man FreeBSD vom USB-Stick installieren möchte, dann benötigt man das USB-Stick-Image FreeBSD-10.0-RELEASE-amd64-memstick.img vom genannten FreeBSD-FTP-Server und spielt es auf den Stick auf, exakt so wie es im Kapitel “1.2 USB-Stick-Image aufspielen” des Vorgängerartikels beschrieben wurde.

In jedem der Fälle, ob interaktiv mit Bildschirm oder über das Netzwerk mit SSH, ob von CD oder USB-Stick, startet man seinen Home-Server mit dem vorbereiteten Installationsmedium. Im Falle von SSH loggt man sich als root ein und startet die Installation mit dem Kommando:

# bsdinstall

Im anderen Falle (Bildschirm + Tastatur) startet man die Installation über das  Auswahlmenü des Startbildschirms durch betätigen der Taste <ENTER>. In jedem Fall bekommt man nun ein Menü zur Auswahl der Tastaturbelegung angezeigt:

SSH-FreeBSD-Installer Schritt 1

Man benutzt die Pfeiltasten, um die eigene Tastaturbelegung auszuwählen und bestätigt die Auswahl mit <ENTER>. Für einen Server ohne Tastatur belassen wir es einfach bei der Standardbelegung default keymap. Für eine normale deutsche Tastatur wählt man die Belegung German ISO-8859-1 (accent keys) aus. Mit der Pfeiltaste wählt man den ersten Menüpunkt “Continue with …” aus und bestätigt ein letzte Mal mit <ENTER>.

Im nächsten Schritt muß der Hostname des Servers bestimmt werden. Dieser taucht später z.B. bei jeder Eingabeaufforderung im Terminal auf, und man sollte den Namen schon deshalb kurz und in Kleinbuchstaben halten, warum nicht einfach server?

Set Hostname

Nach Bestätigung mit <ENTER> kommen wir zur Auswahl der zu installierenden Softwarepakete.

Distribution Select

Hier wählen wir die Pakete lib32 und src aus, dazu fährt man mit den Pfeiltasten die Auswahl zu dem jeweiligen Paket und setzt bzw. entfernt die Auswahlmarkierung “*” mit der Leertaste. Wir bestätigen die Auswahl mit <ENTER>, und werden als nächstes zur Methode der Partitionierung der System-Festplatte unseres Home-Server befragt.

Partitioning

Hier bestätigen wir Guided mit <ENTER> und wählen im nächsten Schritt die interne Festplatte des Servers als die einzurichtende Platte aus:

Disk Selection

Bei mir ist das ada0 – <ENTER>.

Entire Disk

Wir wollen die gesamte interne Festplatte unseres Servers formatieren und bestätigen Entire Disk mit <ENTER>. Und JA, wir sind uns sicher, daß wir wirklich die interne Festplatte unseres Servers formatieren wollen, nochmal <ENTER>.

Partition Review and Finish

Wir überprüfen die automatische Partitionierung und finalisieren mit <ENTER> und bestätigen die Ausführung – Commit – mit einem weiteren <ENTER>. Die Festplatte wird nun formatiert, und es folgt die Installation des Kernels, des Basissystems und der ausgewählten zusätzlichen Pakete.

Packet Installation

Nachdem alles installiert ist, müssen wir das Passwort für den Benutzer root setzen. Hier bitte kein einfaches Passwort wählen, denn wir werden auf unserem Home-Server ssh-root-Zugriff erlauben – auch wenn NIX- und NUX-Experten von solchen Vorhaben vehement abraten werden – es ist sicherer so. Alles steht und fällt damit nur mit der Güte des root-Passworts.

Root Password

In den nächsten Schritten wird das Netzwerk eingerichtet. Wir richten hier nur den lokalen Netzwerkadapter ein, die Einrichtung  der Schnittstelle zum Internet erfolgt sehr viel später. Wir wählen also die Ethernet-Schnittstelle aus, die mit dem LAN verbunden ist <OK – ENTER>. Wir wollen IPv4 einrichten <Yes – ENTER>. Der Server benötigt eine feste interne IP-Adresse, deshalb kein DHCP <No – ENTER>. Wir suchen uns eine hübsche freie interne IP-Adresse für unseren Server aus. Für die Einrichtungsphase geben wir ferner die Adresse unseres bisherigen Routers in’s Internet ein, denn für die weiteren Installationen muß sich unser Server mit dem Internet verbinden können.

Network Configuration

Mit <ENTER> kommen wir zur nächsten Frage, nämlich nach IPv6. Wir benötigen keinen Adressraum für Sextillionen IP-Adressen in unserem Heim-Netzwerk, und wir finden es auch nicht so prickelnd das IPv6 ein eigenes Routing-System mit sich bringt, also unter Umständen auf einmal alle unsere Gadgets (Kühlschrank, Staubsauger, Fernseher, Kaffee- und Waschmaschine) direkt mit sich und der Welt hinter unserem Rücken schlecht über uns reden. Nein, wir bleiben ausschließlich bei IPv4 im heimischen Netz, und IPv6-Mobbing kommt schon mal gar nicht in Frage – IPv6? <No – ENTER>.

Name Server Settings

Im nächsten Schritt müssen wir einen gültigen Name-Server für das derzeitig funktionierende Netzwerk angeben, alle anderen Felder können leer bleiben – <ENTER>.

Nun müssen wir die Zeitbasis für unseren Server festlegen. Wir wählen UTC als Basis für die CMOS-Uhr <Yes – ENTER>, und wählen dann noch die Zeitzone unseres Servers aus – z.B. Europe <ENTER>, Germany <ENTER>.

Zeitzone Europe

Zeitzone Germany

In der System-Konfiguration wird festgelegt, welche Dienste das System beim aktivieren soll. Wir wählen sshd, ntpd und dumpdev <ENTER>.

System Configuration

Schließlich wird noch gefragt, ob wir lokale User anlegen wollen, im Moment wollen wir das nicht, also <No – ENTER>. Die Basis-Installation ist damit erledigt. Wir bekommen noch einmal Gelegenheit, unsere Einstellungen zu überprüfen und ggf. auch noch mal zu ändern. Vorsicht, auf gar keinen Fall das Handbuch installieren – das dauert Ewigkeiten!

Final Configuration

Wenn alles stimmt, dann wählen wir <Exit – ENTER>. Es ist auch nichts manuell zu installieren, also <No -ENTER>.

Bevor wir unseren Server vom frisch installierten System hochfahren können müssen wir noch das SSH-Login für den User root erlauben, und deaktivieren DNS beim SSH-Login. Dazu geben wir auf der Kommando-Zeile noch folgendes ein:

# echo "PermitRootLogin yes" >> /mnt/etc/ssh/sshd_config
# echo "UseDNS no" >> /mnt/etc/ssh/sshd_config

Der Server wird jetzt heruntergefahren:

# shutdown -p now

Nun wird der USB-Stick abgezogen und der Server wird wieder eingeschaltet. Wir sollten uns nun mit dem Terminal (Mac) oder mit PuTTY (Windows) via SSH als User root an unserem Server anmelden können.

$ ssh root@192.168.1.35
The authenticity of host '192.168.1.35 (192.168.1.35)' can't be established.
RSA key fingerprint is a0:71:0c:9e:89:15:8f:91:1a:61:22:8c:b3:8c:12:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.35' (RSA) to the list of known hosts.
Password for root@server:
FreeBSD 10.0-RELEASE (GENERIC) #0 r260789: Thu Jan 16 22:34:59 UTC 2014

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc package has been installed
   (or fetched via pkg install lang-freebsd-doc, where lang is the
   2-letter language code, e.g. en), they are also available formatted
   in /usr/local/share/doc/freebsd.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
manual page.  If you are not familiar with manual pages, type `man man'.

Edit /etc/motd to change this login announcement.

root@server:~ #

Das Basis-System ist installiert und alles weitere wird in den Folge-Artikeln der Artikel Serie Home-Server beschrieben.

FreeBSD auf dem Home-Server ohne Tastatur und Monitor über das Netzwerk einrichten

Der Home-Server benötigt im laufenden Betrieb weder Tastatur noch Monitor, und die minimale Hardware-Ausstattung wurde bereits im Artikel Hardware für den eigenen Home-Server beschrieben. Die besondere Herausforderung besteht nun darin, den Server auch ohne Monitor und Tastatur einzurichten, d.h. die Festplatte zu formatieren, das Betriebssystem FreeBSD aufzuspielen und die benötigten Software-Pakete zu installieren. Schließlich wollen wir uns ja nicht ausschließlich zwecks Einrichtung des Systems einen Monitor und eine Tastatur kaufen müssen. Man könnte sich natürlich auch Beides bei Bekannten leihen, aber ehrlich, das wäre doch jetzt zu einfach, und Einfach kann doch Jeder.

Wer Tastatur und Bildschirm zur Verfügung hat, der sollte hier noch das Kapitel 1 – Installationmedien durchgehen und kann dann direkt zum Folgeartikel “FreeBSD auf dem Home-Server installieren” übergehen.

1 Installationsmedien

Im Prinzip kann man FreeBSD von CD, DVD oder USB-Stick installieren. Entsprechende Disk-Images können von der FreeBSD-Seite heruntergeladen werden. Man muß allerdings den frisch gebackenen Computer dazu bringen vom ausgesuchten Installationsmedium zu starten. Bei der überwiegenden Mehrzahl der heutigen Computer steht das CD/DVD-Laufwerk von Haus aus an erster Stelle in der Boot-Reihenfolge, d.h der Computer startet automatisch von CD bzw. DVD, wenn ein entsprechendes Medium eingelegt ist. USB-Laufwerke stehen üblicherweise in der Boot-Reihenfolge weit unten, d.h. von Haus aus startet der Computer von einer internen Boot-Festplatte sofern vorhanden zuerst. Ohne Bildschirm und Tastatur kann man auch nicht einfach das BIOS des Computers ändern. Wenn man also von einem USB-Stick booten möchte, so darf keine bootbare Festplatte vorhanden sein – am besten baut man also entweder eine komplett neue Festplatte ein, oder man formatiert die Festplatte anderweitig neu, und sieht speziell zu, daß dabei die alten Boot-Sektoren gelöscht werden.

Eine weitere Schwierigkeit besteht darin, daß die FreeBSD-Disk-Images für eine interaktive Installation des Betriebssystems produziert wurden. Ohne Tastatur und Bildschirm kann man also damit erst einmal gar nichts anfangen. Man muß die Images für eine nicht-interaktive Installation über das Netzwerk via SSH nachbearbeiten. Hier beschreibe ich die Erzeugung eines geeigneten USB-Sticks unter Verwendung eines Computers mit Mac OS X.

Requisiten

  • Ein Intel-Mac mit Mac OS X 10.6.8 oder höher
  • Ein freier USB-Stick mit mindestens 1 GB Kapazität
  • FreeBSD-Images
  • VirtualBox um darin das FreeBSD-Live-CD-Image zu starten und damit den USB-Stick anzupassen

1.1 Download der FreeBSD-Images

Folgende Images müssen vom FreeBSD-FTP-Server auf den Desktop heruntergeladen werden:

  1. das Live-CD-Image FreeBSD-10.0-RELEASE-amd64-bootonly.iso
  2. das USB-Stick-Image FreeBSD-10.0-RELEASE-amd64-memstick.img

 

1.2 USB-Stick-Image aufspielen

Das USB-Stick-Image spielen wir wie folgt auf unseren USB-Stick auf. Diesen stecken wir in einen USB-Eingang des Mac-Computers. Es ist nun sehr wichtig, daß der Volume-Name des Sticks eindeutig identifiziert wird, ansonsten besteht nämlich die Gefahr, daß im nächsten Schritt die Daten eines falschen Massenspeichers ungewollt überschrieben und dessen Inhalt dadurch verloren geht – VORSICHT!!!

Der Mac sollte das USB-Stick-Symbol im Verzeichnis “Computer” (Finder > Menü > Gehe zu) anzeigen.

Mein Computer

Wir merken uns den Namen, in diesem Fall USB-Stick. Im Terminal geben wir nun das folgende Kommando ein:

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Platte                  249.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 GB     disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS USB-Stick               3.7 GB     disk1s2

In der Disk-Liste finden wir unseren USB-Stick wieder und erkennen, daß es sich um den Massenspeicher mit der Device-Indentifikation /dev/disk1 handelt. Im Terminal setzen wir nun ein zweites Kommando ab:

$ diskutil unmountDisk /dev/disk1
Unmount of all volumes on disk1 was successful

Das Symbol unseres USB-Sticks sollte aus dem Computer-Verzeichnis verschwinden, und somit haben wir den Stick eindeutig indentifiziert und können nunmehr gefahrlos das Kommando zum Aufspielen des FreeBSD-Memstick-Images im Terminal absetzen. Aber Vorsicht, wenn der Stick nicht zweifelsfrei indentifiziert ist, dann darf auf gar keinen Fall hier fortgefahren werden, weil ansonsten Datenverlust droht.

Das X in /dev/diskX ist natürlich durch die tatsächliche, zweifelsfrei identifizierte disk-Ziffer zu ersetzen – auf keinen Fall einfach so “1″ oder irgendeine andere beliebige Ziffer hernehmen.

$ sudo dd if=~/Desktop/FreeBSD-10.0-RELEASE-amd64-memstick.img of=/dev/diskX bs=1m

Das Aufspielen des Images dauert einige Minuten, und währenddessen blinkt die LED des Sticks ununterbrochen.

665+1 records in
665+1 records out
697384960 bytes transferred in 728.043935 secs (957889 bytes/sec)

 

2 Download, Installation und Starten von VirtualBox

Man wählt auf der VirualBox-Download-Seite das passende Paket für sein Betriebssystem aus – in unserem Fall ist das “VirtualBox 4.3.6 for OS X hosts (x86/amd64)” und lädt es durch klicken auf den entsprechenden Link herunter. Man öffnet das Disk-Image und:

  1. installiert VirtualBox indem man auf das Paket-Icon doppeltklickt,
  2. startet VirtualBox aus dem /Programme-Verzeichnis heraus.

VirtualBox-Installation

Nachdem VirtualBox gestartet ist, legen wir eine neue virtuelle Maschine für FreeBSD 10 an. Dazu klick man mit der Maus auf das blaue Zahnradsymbol “Neu”.

FreeBSD 10 anlegen

Die virtuelle Maschine bekommt den Namen “FreeBSD 10″, und es wird die Version FreeBSD (64 bit) ausgewählt. Durch Klicken auf “Weiter” kommt man zu den diversen Einstellungen. Hier werden einfach die Voreinstellungen übernommen, mit der Ausnahme, daß VirtualBox kein Festplattenabbild für FreeBSD erzeugen soll.

FreeBSD Massenspeicher festlegen

Unter der Rubrik Massenspeicher wird das Live-CD-Image FreeBSD-10.0-RELEASE-amd64-bootonly.iso als einziges Laufwerk eingerichtet.

FreeBSD-bootonly.iso

Nun wird der vorbereitete USB-Stick (der mit dem aufgespielten Memstick-Image) an eine USB-Schnittstelle angeschlossen, und wir lassen ihn vom Finder ignorieren. Zurück im VirtualBox Manager muß nun ein Geräte-Filter unter der Rubrik USB für unsere virtuelle Maschine FreeBSD 10 eingerichtet werden:

USB-Filter einrichten

Schließlich kann die virtuelle Maschine durch betätigen des grünen Pfeils “Starten” gestartet werden. Nach ca. 1 min sieht man den blauen Bildschirm + Dialogbox des FreeBSD-Installers. Wir wollen hier nichts installieren und beenden ihn daher durch Betätigen der Taste <esc> auf der Tastatur. Es taucht ein Login-Prompt auf, und wir melden uns als root (ohne Passwort) an.

Wir entfernen den USB-Stick von der USB-Schnittstelle und stecken ihn sofort wieder ein, dadurch sollte er von FreeBSD als Laufwerk-Device da0 erkannt werden:

USB-Device erkannt

 

3 USB-Stick für SSH einrichten

Um einen Computer über das Netzwerk zu verwalten, muß auf ihm die Netzwerkadresse und der SSH-Daemon eingerichtet sein. Ferner müssen alle interaktiven Programme deaktiviert werden, denn ohne Tastatur kann man nicht auf die Taste <esc> drücken. Innerhalb der nunmehr gestarteten virtuellen FreeBSD-Maschine können wir die notwendigen Anpassungen an dem USB-Stick mit diversen Unix-Kommandos vornehmen.

Vorsicht mit den Befehlen:

Der Computer macht nicht das was man will, sondern das was man befiehlt.

USB-Stick mounten und dessen Verzeichnis-Liste anzeigen lassen:

# mount /dev/da0a /mnt
# ls -l /mnt

USB-Stick Verzeichnisliste

Um die Interaktivität zu deaktivieren muß die Datei /mnt/etc/rc.local gelöscht werden:

# cd /mnt/etc
# rm rc.local

Die Dateisystem-Tabelle auf dem USB-Stick ist auf nur-lesen – readonly (ro) – eingestellt, allerdings muß der SSH-Daemon auch auf den USB-Stick schreiben können – readwrite (rw). Dazu wird in der Datei /mnt/etc/fstab das Attribut ro durch rw ersetzt:

# sed -e 's/ro/rw/' -i "" fstab

Zur Einrichtung der Netzwerkadresse reicht das folgende Kommando aus – hierbei muß 192.168.1.11\24 durch eine sinnvolle Adresse für das Zielnetzwerk ersetzt werden:

# echo ifconfig_DEFAULT=\"192.168.1.11/24\" >> rc.conf

SSH-Daemon aktivieren:

# echo sshd_enable=\"YES\" >> rc.conf

SSH-Daemon einrichten:

# cd ssh
# echo "UseDNS no" >> sshd_config
# echo "UsePAM no" >> sshd_config
# echo "PasswordAuthentication yes" >> sshd_config
# echo "PermitEmptyPasswords yes" >> sshd_config
# echo "PermitRootLogin yes" >> sshd_config

USB-Stick unmounten:

# cd
# umount /mnt

USB-Stick ist fertig

Der USB-Stick ist jetzt fertig eingerichtet und die virtuelle Maschine kann geschlossen werden:

# shutdown -p now

Der USB-Stick wird dann in einen USB-Port des einzurichtenden Servers eingesteckt, und der Server wird gestartet. Im Terminal des Mac-Computers verbinden wir uns nun via SSH mit dem Server – unser Mac und der Server sollten natürlich im selben Ethernet angeschlossen sein.

$ ssh root@192.168.1.11
The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.
RSA key fingerprint is a2:c3:28:51:f1:44:a0:6e:94:32:b7:e6:81:9a:9a:fa.
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added '192.168.1.11' (RSA) to the list of known hosts.
FreeBSD 10.0-RELEASE (GENERIC) #0 r260789: Thu Jan 16 22:34:59 UTC 2014

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories ...

o  The Handbook and FAQ documents ...

If you still have a question or problem ...

Edit /etc/motd to change this login announcement.

root@:~ #

4 Drin!

Der Home-Server wurde vom leicht modifizierten FreeBSD-10-USB-Stick gestartet. Wir konnten uns vom Mac-Terminal aus via SSH als root-User einloggen, und können nun mit der eigentlichen Betriebssystem-Installation beginnen. Immer noch als root am Server eingeloggt, starten wir die Installation mit dem folgenden Kommando:

# bsdinstall

SSH-FreeBSD-Installer Schritt 1

Ab hier sind die Installationsschritte über das Netzwerk und SSH exakt identisch zu einer direkten Installation mit Tastatur und Bildschirm. Auf einem echten Bildschirm sähen wir nämlich jetzt:

IA-FreeBSD-Installer Schritt 1

Alles weitere wird im Folgeartikel “FreeBSD auf dem Home-Server installieren” beschrieben.