Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Inhaltsverzeichnis
1 Einleitung 4
1.1 Warnung vorweg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Lizenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Installation 8
2.1 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Bootreihenfolge ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Grundeinrichtung 19
3.1 Grundbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Netzwerk einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Update des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4 Fernwartung - SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Einfacher Login mit Keys . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5 Die richtige Zeit vom Zeitserver . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6 Benutzerverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.7 Die Datei /etc/hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Dienste 25
4.1 Fileserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.1 Samba - Dateifreigabe im Windows-Netz . . . . . . . . . . . . . . . . . . 25
Samba - Benutzerverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . 25
Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2
Inhaltsverzeichnis
4.1.2 NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.3 FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.4 WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 LAMP - Linux Apache MySQL PHP . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.1 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
SSL-Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2.2 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.3 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3 DNS- und DHCP-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4 Openfire - Jabber-Instant-Messaging-Server . . . . . . . . . . . . . . . . . . . . . 38
3
1 Einleitung
1 Einleitung
Server sind aus der heutigen IT-Landschaft kaum noch wegzudenken. Fast jede Firma, die für ihr
Tagesgeschäft Computer benutzt, besitzt einen oder gar mehrere Server. Die Vorteile liegen auf der
Hand: Alle Daten sind zentral verfügbar und liegen nicht mehr verstreut im Netzwerk herum. Das
erleichtert auch die Verwaltung und Sicherung der Datenbestände. Diese Vorteile erkennen auch
immer mehr Kleinunternehmer und neuerdings auch die Heimanwender, deren Computerlandschaft
im Eigenheim, teilweise schon der von kleinen Betrieben, oder Büros gleicht. Nun kann oder will
sich aber nicht gleich jeder einen High-End-Stromverbraucher, wie man sie Reihenweise von der
Stange kaufen kann, in den Keller stellen und die Bereitschaft, für Redmonder Serverprodukte und
zugehörige Clientlizenzen, einen Haufen Geld zu investieren, sinkt auch von Tag zu Tag. Alterna-
tiven gibt es mehr als genug, und auf eine davon konzentriert sich dieser Guide: Den Linux-Server.
Als Distribution wird die Ubuntu Server Edition in der aktuellen LTS (Long-Term-Support) Version
8.04 verwendet.
Bevor es losgeht noch eine Warnung: Ein Server ist kein Spielzeug, gerade dann nicht, wenn er
seine Dienste direkt am Internet verrichtet. Ein schlecht konfigurierter oder nicht regelmäßig mit
Updates versorgter Rechner, kann schnell zum Eigentor werden, wenn jemand anderes die Kontrolle
darüber erlangt. Bevor man einen Server von außen zugänglich macht, sollte man sich intensiv mit
dem System beschäftigen, viel Lesen und wissen was zu tun ist, sollte trotz aller Vorsicht mal
etwas passieren. Weiterhin sollte euer Gehirn immer im Hintergrund mitlaufen, denn niemand ist
Fehlerlos, so auch ich.
4
1 Einleitung
1.2 Voraussetzungen
Im Prinzip sind die Voraussetzungen für einen Server auf dem Linux läuft nicht sehr hoch, zu-
mindest im Vergleich zu Redmonder Qualitätsprodukten. Natürlich hängt das Ganze auch mit der
Beschaffenheit des Netzwerkes zusammen, in dem der Server seine Dienste anbieten soll.
Natürlich steht es jedem frei seine Hardware so zusammenzustellen wie es ihm beliebt, deshalb hier
nur ein paar kleine Anhaltspunkte:
Des weiteren benötigen wir Monitor und Tastatur (nur zur Installation) sowie ein CD-Laufwerk
(bei Installation von CD). Mindestens eine Netzwerkkarte sollte ebenfalls verbaut sein, denn sonst
macht so ein Server bekanntlich wenig Sinn.
Es sollte dabei jedem klar sein, das diese Empfehlung für den Heimgebrauch oder für Büros /
Betriebe mit höchstens 5 Mitarbeitern gilt. Und das auch nur wenn nicht „Dauerbetrieb“ auf dem
Server herrscht. Noch einmal sei gesagt, dass die optimale Konfiguration des Serversystems von
den jeweiligen Anforderungen des Netzes abhängt.
1.3 Features
Es wird keine grafische Oberfläche auf dem Server laufen (also kein Gnome/KDE/XFCE), er wird
lediglich per Konsole im Textmodus administrierbar sein. Das spart erstens enorm Ressourcen und
5
1 Einleitung
zweitens geht das meiste auf der Konsole wesentlich schneller als man es über eine GUI könnte,
vorrausgesetzt man weiß wie.
1.4 Konventionen
In diesem Dokument wird relativ häufig auf der Kommandozeile des Linux-Systems gearbeitet. Die
einzugebenden Textzeilen sind durch eine graue Box gekennzeichnet:
sudo apt-get update
Falls ein Befehl zu lang ist für eine Zeile wird dieser in der nächsten Zeile fortgeführt. Gekenn-
zeichnet wird das durch einen Pfeil:
sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem ⇒
-keyout /etc/apache2/ssl/apache.pem
Des öfteren werden dem Leser Internet-Adressen der Form http://url.zeroathome.de/xyz begegnen.
Dies ist leider nötig, da manche URLs einfach zu lang sind um sie in einem PDF auf einer Zeile
auszugeben. Ich versichere hiermit, dass sich hinter diesen Kurz-URLs keinerlei von mir bereitge-
stellter Schadcode befindet. Es handelt sich lediglich um Seiten, die zur weiteren Erklärung der in
den Tutorials verwendeten Begrifflichkeiten oder Tools dienen.
1.5 Disclaimer
Wie oben bereits erwähnt ist ein Server kein Spielzeug. Durch unsachgemäße Handhabung kann
unter Umständen enormer Schaden entstehen. Für etwaige entstehende Schäden, im Zusammen-
hang eines mit Hilfe dieses Tutorials entstandenen Servers, kann ich keine Haftung übernehmen.
Ich bitte dies zu beachten.
1.6 Lizenz
Dieses Werk ist unter einem Creative Commons Namensnennung-Keine kommerzielle Nutzung-
Weitergabe unter gleichen Bedingungen 2.0 Deutschland Lizenzvertrag lizenziert. Um die Lizenz
anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-nc-sa/2.0/de/ oder schicken
6
1 Einleitung
Sie einen Brief an Creative Commons, 171 Second Street, Suite 300, San Francisco, California
94105, USA.
Informationen über weitere Erlaubnisse bitte per Mail (zero@zeroathome.de) oder Jabber (zeroa-
thome@jabber.ccc.de) erfragen.
1.7 Changelog
0.7beta new:
Key-based SSH-Login, NTP, DNS, DHCP, /etc/hosts, Disclaimer, Openfire Jabber-Server
added:
Konventionen: Kurz-URLS
0.6beta NFS, WebDAV hinzugefuegt
0.4beta Initial Internal Release
7
2 Installation
2 Installation
2.1 Vorbereitungen
Zur Installation benutzen wir der Einfachheit halber die Installations-CD, deren Image es unter fol-
gender Adresse herunterzuladen gilt:
http://de.archive.ubuntu.com/ubuntu-releases/8.04/
Das heruntergeladene Server-Image (nicht Desktop!) wird dann mit einem geeigneten Brennpro-
gramm auf eine CD gebannt und dem zukünftigen Server zugeführt. Um den Server von CD starten
zu lassen ist es eventuell nötig die Bootreihenfolge umzustellen (siehe Kasten „Ändern der Boot-
reihenfolge“ Kapitel 2.2 )
Damit der Rechner von der Installations-CD startet, muss kurz nach dem Anschalten des Rechners
ins BIOS (Basic Input Output System) gewechselt werden. Das geschieht bei den meisten Rech-
nern durch drücken der Entf, oder F2-Taste. Welche Taste gedrückt werden muss steht entweder im
ersten Monitorbild das der Rechner zeigt, oder auch im Handbuch des Mainboards. Im BIOS ange-
kommen, müssen die Einstellungen zum Starten des Rechners gesucht werden (Startup, Boot, o.ä).
Dort kann dann die Reihenfolge der Geräte bestimmt werden. Zuoberst sollte das CD-Laufwerk
stehen, danach die Festplatte. Nach der Installation kann diese Einstellung wieder Rückgängig ge-
macht werden, bzw. das sollte sie sogar, dazu mehr im Kapitel Sicherheit.
8
2 Installation
2.3 Installation
Nach dem Anschalten sollte sich der Bootscreen der CD zeigen (siehe Abb. 2.1) und zur Auswahl
einer Sprache auffordern. Hier bitte nach persönlichen Vorlieben auswählen. In diesem Guide wird
mit Deutsch als Auswahl weitergearbeitet. (Abb. 2.1)
Anschließend wird die erste Option des Bootmenüs ausgewählt um die Installation zu starten. (Abb.
2.2)
Falls im Netzwerk bereits ein DHCP-Server läuft (z.B. ein Router oder ähnliches), sollte Abbildung
2.3 nicht erscheinen, dann kann sofort mit Abbildung 2.9 fortgefahren werden. Falls kein DHCP-
9
2 Installation
Server vorhanden ist, muss die IP-Adresse und andere Daten von Hand eingegeben werden (siehe
Abb. 2.4).
Falls ein DHCP-Server im Netz steht, aber die Adressvergabe beim ersten Anlauf nicht funktioniert
hat, kann hier nochmals versucht werden eine Adresse zu bekommen, oder man wählt Netzwerk
manuell einrichten. (Abb. 2.4)
Die IP-Adresse sollte so gewählt werden, dass sie erstens zu eurem bereits vorhandenen Netzwerk
passt und das sie zweitens nicht die selbe ist, wie die eines bereits im Netzwerk vorhandenen Rech-
ners ist. Außerdem sollte die Adresse aus dem Bereich der privaten IP-Adressen stammen. (siehe
http://de.wikipedia.org/wiki/Private_IP-Adresse) (Abb. 2.5)
10
2 Installation
Die Netzmaske ist in der Regel 255.255.255.0. Für mehr Informationen siehe http://de.wikipedia.
org/wiki/Netzmaske . (Abb. 2.6)
Die Adresse des Gateways entspricht in den meisten kleinen Netzwerken der Adresse des Routers.
Diese hat meist die Endzahl 1 oder auch 254. (Abb. 2.7)
Oft entspricht die Adresse des DNS-Servers der des Gateways aus dem vorhergehenden Schritt.
(Abb. 2.8)
Der Name des Servers ist frei wählbar, sollte aber auf jeden Fall eindeutig sein, also nicht mit
einem anderen Namen im Netz kollidieren. Eventuell sollte der Name die Funktion des Rechners
wiederspiegeln, das macht aber meist nur in größeren Netzen mit vielen Servern Sinn. (Abb. 2.9)
11
2 Installation
Der Domain-Name sollte, falls der Server keine feste IP im Internet besitzt, auf keinen Fall eine
Endung wie .de oder .com haben, da sonst die Gefahr besteht, mit bereits existenten Domains im
WWW zu kollidieren. Deshalb werden hier Endungen wie .home oder .lan empfohlen, da diese
nicht als Top-Level-Domains im WWW existieren. (Abb. 2.10)
An diesem Schritt kann es unter Umständen kompliziert werden. Hier möchte ich auf das Tutorial
von Ubuntuusers.de verweisen: http://url.zeroathome.de/partitionierung/ . (Abb. 2.11)
Nachdem die Partitionierung abgeschlossen ist müssen die Änderungen auf die Festplatte geschrie-
ben werden. Dazu muss hier Ja ausgewählt werden. (Abb. 2.12)
12
2 Installation
13
2 Installation
Danach startet die Installation der Dateien auf der Festplatte des Servers. (Abb. 2.13 und 2.14)
Nun muss ein neuer Benutzer eingerichtet werden. Dieser ist dazu befugt Änderungen an der Konfi-
guration des Systems vorzunehmen. Zuerst muss der volle Name des Benutzers eingegeben werden.
(Abb. 2.15)
Im zweiten Schritt wird der Name festgelegt mit dem der Benutzer sich anmelden kann. Dieser ist
bis auf einige Ausnahmen frei wählbar (root oder admin sind zum Beispiel vom System bereits
reserviert. (Abb. 2.16)
Da der Benutzer einige Befugnisse auf dem System hat, sollte ein sicheres Passwort gewählt wer-
den. Real existierende Worte sollten vermieden werden. Ideal wäre eine Kombination von Groß-
14
2 Installation
15
2 Installation
und Kleinbuchstaben, Zahlen und Sonderzeichen mit einer Mindestlänge von acht bis zehn Zei-
chen. (Abb. 2.17)
Falls im Netzwerk ein Proxy verwendet wird um die Internet-Verbindung bereitzustellen muss die-
ser hier eingetragen werden. (Abb. 2.18)
Diesen Schritt werden wir überspringen und die einzelnen Komponenten später von Hand ein-
richten. Das hat zum einen einen größeren Lerneffekt, zum anderen verliert man bei manueller
Installation der Pakete nicht die Übersicht. (Abb. 2.19)
Zu guter Letzt muss noch die Zeitzone in der der Server sich befindet. In der Regel kann hier Ja
ausgewählt werden. Diese Einstellung lässt sich aber auch später noch ändern. (Abb. 2.20)
16
2 Installation
Damit ist die erste Hürde der Installation genommen und der Server kann zum ersten Mal neu
gestartet werden. (Abb. 2.21)
17
2 Installation
18
3 Grundeinrichtung
3 Grundeinrichtung
3.1 Grundbefehle
Wer noch nie Linux auf der Kommandozeile bedient hat, sollte sich zunächst einmal mit den Grund-
befehlen auseinandersetzen. Im ubuntuusers.de - Wiki findet sich eine kleine Übersicht, die man
sich zuerst einmal zu Gemüte führen sollte.
Nach dem Einloggen ins System, mit dem während der Installation festgelegten Benutzernamen
und dem zugehörigen Passwort, wird zuerst überprüft ob das Netzwerk richtig eingerichtet ist. Der
Befehl ifconfig bringt eine Übersicht über die vorhandenen Netzwerkschnittstellen und die ihnen
zugewiesenen Adressen.
19
3 Grundeinrichtung
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:600 (600.0 B) TX bytes:600 (600.0 B)
eth0 bezeichnet hier die erste Netzwerkkarte. Hier besitzt die Schnittstelle die Adresse 192.168.0.254.
Falls diese geändert werden soll, ist folgendes Vorgehen nötig:
auto eth0
iface eth0 inet static
address 192.168.0.254
netmask 255.255.255.0
gateway 192.168.0.1
Das dhcp wird schlicht durch ein static ersetzt und in den Zeilen darunter die Adresse zugeteilt
(address 192.168.0.254, die Netzmaske netmask 255.255.255.0 und das Gateway, also die Adresse
des Routers im Netzwerk gateway 192.168.0.1. Die Angaben sollten natürlich an den jeweiligen
Standort angepasst werden. Nachdem die Einträge gemacht sind, kann die Datei gespeichert und
geschlossen werden.
Um auf das Internet zuzugreifen fehlt noch der Eintrag für einen DNS-Server. Dieser wird in der
20
3 Grundeinrichtung
Nachdem die Verbindung ins Netz steht, bringen wir zunächst mal das System auf den neuesten
Stand. Dazu sind die folgenden beiden Befehle zuständig:
Der erste Befehl sorgt dafür das die aktuelle Paketdatenbank von den Ubuntu-Servern geladen wird.
Der zweite spielt die aktuellsten Versionen der installierten Pakete ins System ein. Der dritte sorgt
dafür das auch zurückgehaltene Pakete ins System gelangen, wie zum Beispiel Kernel-Updates (Die
zurückgehalten werden, da nach deren Installation ein Neustart fällig wird). Die beiden ersten Be-
fehle sollten regelmäßig genutzt werden, um das System immer auf dem aktuellen Stand zu halten
und somit eventuellen Sicherheitslücken einen Riegel vorzuschieben. Den letzten benutzt man wie
gesagt nur, wenn man sieht, dass Updates zurückgehalten wurden.
21
3 Grundeinrichtung
Da ein Server in der Regel nicht über Monitor, Tastatur und Maus verfügt, sollte er zuerst eine Mög-
lichkeit zur Fernwartung bekommen. Die einfachste und gleichzeitig eine der sichersten Methoden
zur Fernwartung ist der SSH-Server. Durch die verschlüsselte SSH-Verbindung bleiben alle Einga-
ben, wie Passwörter und dergleichen von außen unsichtbar. Bei der Installation des Servers wird
außerdem ein einzigartiger Schlüssel erstellt, mit dem sich der Server beim Client authentifiziert.
So kann ausgeschlossen werden, dass jemand vorspielt unser Server zu sein und sich auf diesem
Weg unser Passwort und anschließend unseren Server an zueignen. Mehr zum SSH-Prinzip gibt es
hier: http://de.wikipedia.org/wiki/Ssh.
Die Installation dauert je nach System ein wenig, da die Schlüssel erstellt werden müssen. Anschlie-
ßend kann von einem anderen Rechner im Netzwerk per SSH-Client auf das System zugegriffen
werden. Unter Linux geht das auf der Konsole mit
ssh bentuzer@192.168.0.254 - wobei die Adresse mit der des Servers auszutauschen ist. Unter
Windows sei das Programm Putty zum herstellen einer SSH-Verbindung empfohlen .
Jetzt kann man den Server ohne Tastatur und Monitor in eine Ecke verbannen, denn ab sofort kann
er bequem vom Desktop-Rechner aus bedient werden.
Normalerweise muss man jedes Mal wenn man per SSH auf den Server verbindet sein Passwort
eingeben. Schön und Gut, aber manchmal auch ein wenig nervig, gerade wenn man auf besonders
lange Passwörter steht. Zur Abhilfe gibt es die Möglichkeit des Schlüssel-basierten Einloggens.
Dazu wird auf dem Client-Rechner ein Schlüssel generiert und dem Server mitgeteilt, dass er den
Client mit diesem Schlüssel ohne Passwort-Eingabe passieren lässt.
Schlüssel erstellen:
ssh-keygen -t dsa
22
3 Grundeinrichtung
Ein nicht zu unterschätzender Faktor auf einem Server ist die Zeit. Nicht die Zeit bis die Hardwa-
re veraltet ist, sondern die Systemzeit. Zum Beispiel beim Auswerten von Logfiles ist es hilfreich
wenn man weiß, dass die Uhr des Servers richtig geht. Um das zu gewährleisten lässt man ihn seine
Zeit mit einem der vielen Zeit-Server im Internet abgleichen.
Dazu installiert man zuerst ntp und konfiguriert diesen Dienst entsprechend:
sudo apt-get install ntp
Die Konfiguration findet sich in der Datei /etc/ntp.conf. Dort fügt man, der Ausfallsicherheit wegen,
in der Zeile server noch einen zweiten Time-Server hinzu, so dass die Zeile am Ende so aussieht:
server ntp.ubuntu.com de.pool.ntp.org
Der Server von dem ihr die Zeit letztendlich bezieht ist optional, de.pool.ntp.org ist hier als Beispiel
genannt, weitere Server finden sich unter http://www.pool.ntp.org/.
Nach der Konfigurationsänderung muss der Dienst noch einmal neu gestartet werden und gleicht
dann regelmäßig die Zeit mit den Servern im WWW ab.
sudo /etc/init.d/ntp restart
3.6 Benutzerverwaltung
Damit nicht jeder an die Daten auf dem Server herankommt, sollte man für die Personen, die Zu-
gang haben sollen, Benutzerkonten angelegt.
sudo adduser -s /dev/null benutzer
legt einen Benutzer an und verbietet diesem sich per SSH oder direkt am Rechner einzuloggen. Falls
der Benutzer Zugang zur Kommandozeile haben soll, einfach den Parameter -s /dev/null weglassen.
23
3 Grundeinrichtung
Es können einige Angaben zum Benutzer gemacht werden, auf jeden Fall sollte man aber ein si-
cheres Passwort vergeben, egal ob Shell-Zugang oder nicht. Anschließend wird der Benutzer der
Gruppe users hinzugefügt: sudo addgroup benutzer users
das erleichtert später die Freigabe von Verzeichnissen, die für alle Benutzer zugänglich sein sollen.
In der Datei /etc/hosts können IP-Adressen Rechnernamen zugeordnet werden. Das ist in sofern
praktisch, das man sich nur einen Namen und keine acht- bis zwölf-stellige Nummer merken muss
(die zugegebenermaßen meist gleich beginnt). Dazu bearbeitet man diese Datei mit einem Textedi-
tor und fügt Zeilen im folgenden Format ein:
24
4 Dienste
4 Dienste
4.1 Fileserver
Klingt erstmal wie ein äußerst spannender Thriller, ist aber in Wirklichkeit eine total harmlose Frei-
gabe von Verzeichnissen im Netzwerk. Und das so, dass auch Windows-Rechner darauf zugreifen
können.
Dafür wird der sogenannte Samba-Server installiert: sudo apt-get install samba
Samba - Benutzerverwaltung
Bevor sich ein Benutzer am Samba-Server anmelden kann muss er zuerst mit diesem bekannt ge-
macht werden. Dazu dient das folgende Kommando: sudo smbpasswd -a benutzer Anschließend
wird zur Passwortvergabe aufgefordert. Falls das Passwort des Benutzers im System irgendwann
einmal geändert werden sollte wird später in der Konfiguration des Servers vermerkt, dass die Pass-
wörter zwischen System und Samba ab geglichen werden. Der obige Schritt muss also nur einmal
erfolgen.
Konfiguration
Die Konfiguration von Samba geschieht vollständig in der Datei /etc/samba/smb.conf.Es besteht
bereits eine Beispiel-Datei, die wir aber hier nicht verwenden werden, sondern erst einmal aus dem
Weg schaffen:
25
4 Dienste
[global]
workgroup = ARBEITSGRUPPE
server string = Samba Server auf %h
wins support = yes
os level = 33
local master = yes
;wins server = w.x.y.z
unix password sync = yes
passwd program = /usr/bin/passwd %u
Für einfaches Filesharing ist das schon genug der Einstellung. Die Zeile ’wins support’ sollte falls
man einen Windows-Server im Netzwerk betreibt auf ’no’ gesetzt werden und die Zeilen ’os level
= 33’ und ’local master = yes’ gelöscht oder mit ’;’ auskommentiert werden. Dafür sollte die Zeile
’;wins server = w.x.y.z’ wiefolgt abgeändert werden:
Wozu dient WINS? Ganz einfach dazu die IP-Adressen der im Netzwerk vorhandenen Rechner de-
ren NETBIOS-Namen, also den Hostnamen zuzuweisen und anderen Rechnern ein Verzeichnis zu
bieten, in der diese die Zuordnung (IP<>Hostname) nachschauen können.
Die letzten beiden Zeilen sorgen dafür, dass, wie eben angesprochen, die Benutzerpasswörter des
Systems mit denen des Samba-Servers ab geglichen werden.
Als nächstes richten wir eine einfache Freigabe ein, zu der jeder der eingerichteten Nutzer Zugriff
hat. Dazu legen wir eine neue Sektion an mit dem Namen ’public’. Zuerst erstellen wir allerdings
das Verzeichnis und setzen die Benutzerrechte so, das die Benutzer der Gruppe ’users’, darauf zu-
greifen können:
26
4 Dienste
Zeile 1 legt das Verzeichnis (das Überverzeichnis ’/srv’ ist für solche Serverdienste reserviert, also
nutzen wir das hier auch mal) an, Zeile zwei beschränkt die Lese- und Schreibrechte auf Besitzer
und Gruppe des Verzeichnisses, Zeile 3 ändert die Gruppe des Verzeichnisses auf ’users’ und Zeile
4 sorgt dafür das neu angelegte Verzeichnisse immer der Gruppe ’users’ gehören. (mehr zum The-
ma Rechte unter http://wiki.ubuntuusers.de/Rechte)
[public]
comment = Freigabe fuer jedermann
path = /srv/public
writeable = yes
valid users = @users
force directory mode = 660
force create mode = 660
In der Zeile comment gibt man am besten eine Beschreibung des Verzeichnisses an (kann auch
weggelassen werden), in der Zeile path gibt man den Pfad zum eben angelegten Verzeichnis an.
’writeable’ sorgt dafür das das Schreiben in das Verzeichnis möglich ist. Die letzten drei Zeilen
sind für die Zugriffsrechte zuständig: ’valid users’ zeigt hier an das die Gruppe ’users’, deutlich
gemacht durch das @, Zugriff hat. Einzelne Benutzer werden ohne @ durch Komma getrennt ein-
getragen. Die anderen beiden Zeilen sorgen dafür, das neu angelegte Dateien und Verzeichnisse von
den Benutzern der Gruppe ’users’ Les- und Schreibbar sind.
Damit können wir unseren Server auch schon testen, ’smb.conf’ abspeichern und mit ’testparm -v’
prüfen ob die gemachten Konfigurationen Fehler enthalten. Das Konsolenprogramm gibt die kom-
plette Konfiguration aus und zeigt eventuelle Fehler an. Wenn die Einstellungen fehlerfrei sind,
wird der Server mit ’sudo /etc/init.d/samba restart’, neu gestartet. Danach sollte man testen ob die
Freigabe aus dem Netzwerk erreichbar ist. Dazu einfach mit einem geeigneten Client (Linux, Win-
dows, Mac) versuchen auf die Freigabe zuzugreifen. Dabei sollte der eingerichtete Benutzer und
27
4 Dienste
4.1.2 NFS
Das Gegenstück zu SMB in der UNIX-Welt ist NFS, und wer Linux- oder Mac-Clients im Netz hat
sollte auf jeden Fall NFS-Freigaben anbieten.
Installiert wird der NFS-Server mit dem Kommando:
sudo apt-get install nfs-common nfs-kernel-server portmap
Die Freigaben lassen sich in der Datei /etc/exports einrichten. Generell geschieht das durch Eintra-
gen einer Zeile nach dem Schema
Damit bekommt der Rechner mit dem Namen rechner1 Leserechte (ro) in unserem public-Verzeichnis,
rechner2 bekommt auch Schreibrechte (rw) und der Rechner mit der IP 192.168.101.44 ebenfalls.
Damit der Zugriff mit den Rechnernamen funktioniert müssen diese jeweils einer IP zugeordnet
werden, mehr dazu auf Seite 4.1.2. Um die Freigabe nicht nur auf einige Rechner zu beschränken,
kann diese auch für das gesamte Netz freigegeben werden (in diesem Fall Schreibzugriff):
/srv/public 192.168.101.0/255.255.255.0(rw,async)
Die verfügbaren Optionen, die der Freigabe zugeordnet werden können sind in Tabelle 4.1 aufge-
listet.
Damit das Exportieren auf Basis der Rechnernamen funktioniert, muss jedem Rechnernamen eine
IP-Adresse zugeordnet werden. Dies geschieht allgemein in der Datei /etc/hosts. Eine Zeile sollte
dabei so aussehen:
28
4 Dienste
Option Funktion
ro Nur Lesen
rw Lesen/Schreiben
async Asynchroner Datentransfer
insecure Ports oberhalb von 1024 benutzen. Muss bei MacOSX-
Clients zwingend gesetzt werden, da diese sich sonst nicht
mit der Freigabe verbinden kann.
no_root_squash Wenn ein Verzeichnis auf dem Server dem Benutzer root
gehört, wird dieses als Benutzer nobody eingebunden, man
hat also auf keinen Fall Schreibrechte. Um diese Sperre zu
umgehen muss diese Option gesetzt werden.
nohide Wenn unterhalb eines exportierten Verzeichnisses ei-
ne Partition eingebunden ist (z.B. Partition /dev/sdb1
unter /srv/public/music), dann muss dieses Verzeichnis
/srv/public/music zusätzlich zu /srv/public exportiert wer-
den. Normalerweise muss man dann auf dem Client bei-
de Exporte einbinden. nohide sorgt dafür, dass zwar immer
noch beide Verzeichnisse exportiert werden müssen, aber
nur das oberste Verzeichnis auf dem Client eingebunden
werden muss. Diese Funktion funktioniert nur bei Freiga-
ben für Einzelrechner, nicht für das komplette Netzwerk.
wobei die letzte Angabe nicht unbedingt nötig ist, aber falls sie eingetragen wird dem Domain-
Namen aus der Installation des Servers (siehe Abschnitt 2.3 auf Seite 12) entsprechen sollte.
Nachdem hier neue Zuweisungen gemacht wurden muss die Änderung NFS bekannt gemacht wer-
den:
sudo exportfs -ra
Danach können die Freigaben von entfernten Rechnern angesprochen werden.
4.1.3 FTP
TODO
29
4 Dienste
4.1.4 WebDAV
WebDAV ist ein sehr nützlicher Standard zur Bereitstellung von Daten in Netzwerken, da er die
Standard HTTP-Ports verwendet und so meist auch funktioniert wenn der Client hinter einer Fire-
wall sitzt. Zudem müssen bei bereits aktivem Webserver keine weiteren Ports freigegeben werden
(für FTP oder SSH) um die Dateien auf dem Server zu bearbeiten. Mehr Informationen zu WebDAV
unter http://de.wikipedia.org/wiki/Webdav.
Da WebDAV eine Implementierung des HTTP Protokolls ist, benötigen wir einen Webserver wie
zum Beispiel den Apache (Einrichtung siehe Abschnitt 4.2 auf Seite 31). Ist dieser installiert muss
nur das Modul für WebDAV geladen werden und anschließend Apache neu gestartet werden:
sudo a2enmod dav
sudo a2enmod dav_fs
Um die Einrichtung der Benutzer zu vereinfachen wird hier das Modul auth_pam verwendet. Da-
mit können alle Benutzer, die über adduser (siehe Abschnitt 3.6 auf Seite 23) eingerichtet werden
Zugriff per WebDAV bekommen. sudo apt-get install libapache2-mod-auth-pam
sudo a2enmod auth_pam
Um auf unser public-Verzeichnis zugreifen zu muss zunächst der Benutzer der den Apache-Server
lädt in die Gruppe users aufgenommen werden:
sudo adduser www-data users
Zusätzlich muss der Benutzer Mitglied der Gruppe shadow sein um auf die System-Benutzer-
Datenbank zugreifen zu können:
sudo adduser www-data shadow
30
4 Dienste
AuthPAM_Enabled On
AuthPAM_FallThrough Off
AuthBasicAuthoritative Off
AuthUserFile /dev/null
Require valid-user
</Directory>
Nach einem Neustart des Apachen (sudo /etc/init.d/apache2 restart) sollte die Freigabe unter der
Adresse http://serveradresse/public zu erreichen sein.
Diese Vorgehensweise wird allerdings nicht empfohlen, da dann Passwörter unverschlüsselt über-
tragen und mitgelesen werden können. Deshalb empfiehlt es sich folgenden Abschnitt in die im
Apache-SSL-Tutorial erstellte Datei /etc/apache2/sites-available/ssl einzufügen:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
Alias /public "/srv/public/"
<Directory "/srv/public/">
DAV on
Options +Indexes
AuthType Basic
AuthName "WebDAV Verzeichnis"
AuthPAM_Enabled On
AuthPAM_FallThrough Off
AuthBasicAuthoritative Off
AuthUserFile /dev/null
Require valid-user
SSLRequireSSL
</Directory>
Nach einem Neustart des Apachen (sudo /etc/init.d/apache2 restart) sollte man unter der Adresse
https://serveradresse/public die DAV-Freigabe erreichen können.
Ein Linux Home/Office Server sollte nicht nur Dateien im Netz bereitstellen können, er sollte auch
andere Dienste anbieten, ob nun zur Erleichterung der Arbeit (z.B. Webseiten-Entwicklung) oder
zum Vergnügen sei mal dahin gestellt. Ein potentes System um solche Dienste anzubieten ist ein
ausgewachsener Webserver, wie zum Beispiel der Apache-Webserver. Und genau im diesen geht
es heute. Wir werden den Apachen installieren und für die Verwendung mit PHP und MySQL
31
4 Dienste
vorbereiten
4.2.1 Apache
Damit wird das Apache Grundgerüst eingespielt. Nachdem der Installationsprozess durchgelaufen
ist sollte im Browser über die Adresse http://[serveradresse]/ die Testseite des Apachen begutachtet
werden können.
Das Standardverzeichnis in dem der Apache Dateien zur Anzeige erwartet ist /var/www. Dieses
wird mit den folgenden Schritten ebenfalls unter /srv abgelegt:
Noch einer weiteren Datei sollten zwei Zeilen hinzugefügt werden: sudo nano /etc/apache2/httpd.conf
Hier werden diese beiden Zeilen am Ende an gehangen:
ServerName localhost
ServerTokens Major
Die erste sorgt dafür das beim Starten des Apachen eine Fehlermeldung (siehe http://url.zeroathome.
de/apache-fqdn/) unterdrückt wird, die zweite Zeile führt dazu das der Server nicht seine komplet-
te Versionsnummer nach außen hin zeigt, um es eventuellen Angreifern ein wenig zu erschweren.
32
4 Dienste
SSL-Verschlüsselung
Damit unser HTTP-Server auch verschlüsselt ansprechbar ist, zum Beispiel für die Bereitstellung
von Daten per WebDAV (Einrichtung siehe Abschnitt 4.1.3 auf Seite 29) müssen folgende Schritte
abgearbeitet werden:
sudo apt-get install openssl
sudo mkdir /etc/apache2/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem ⇒
-keyout /etc/apache2/ssl/apache.pem
Der Wert für -days kann dabei beliebig angepasst werden, je nachdem wie lange das Zertifikat
gültig bleiben soll (z.B. -days 1825 für 5 Jahre).
Dann werden ein paar Daten abgefragt:
Wie man diese Fragen beantwortet ist einem selbst überlassen, je nachdem wie ernst man es mit
seinem Server nimmt.
sudo ln -sf /etc/apache2/ssl/apache.pem
/etc/apache2/ssl/‘/usr/bin/openssl x509 -noout -hash <
/etc/apache2/ssl/apache.pem‘.0
sudo chmod 600 /etc/apache2/ssl/apache.pem
Anschließend aktiviert man das SSL-Modul:
sudo a2enmod ssl
Jetzt muss noch die Apache-Konfiguration angepasst werden. Dazu kopieren wir die aktuelle Kon-
figuration ohne SSL:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Was den Vorteil hat, dass jetzt auch die normalen Seiten per SSL erreichbar sind. In der neuen Da-
tei (/etc/apache2/sites-available/ssl) müssen folgende Einstellungen geändert werden. In den ersten
beiden Zeilen der ssl-Datei sollte es heißen:
33
4 Dienste
NameVirtualHost *:443
<VirtualHost *:443>
Nun sollte der Server auch unter der Adresse https://serveradresse ereichbar sein. Da das Zertifikat
nicht signiert ist, wird man mit einer Warnung begrüßt, die man aber auf dem eigenen Server getrost
übersehen kann. Im WWW wäre ich mit solch unbedachten Aktionen eher vorsichtig!
4.2.2 PHP
<?php
phpinfo();
?>
Speichern und im Browser die Adresse http://[serveradresse]/info.php aufrufen worauf die folgen-
de Seite (Abb. 4.1) zu sehen sein sollte (die Versionsnummer von PHP unter Hardy ist zur Zeit
5.2.4):
Falls der Browser anbietet das PHP-File herunterzuladen, wurde wahrscheinlich das PHP-Modul
noch nicht in Apache eingebunden, ein sudo a2enmod php5 mit anschließendem
sudo /etc/init.d/apache2 restart sollte da Abhilfe schaffen.
34
4 Dienste
Damit wäre PHP erfolgreich eingerichtet und wir können zum nächsten Patienten übergehen.
4.2.3 MySQL
Damit ist der LAMP-Server eingerichtet und unser Heim-Server wieder um eine Attraktion rei-
cher.
35
4 Dienste
dhcp-range=192.168.101.100,192.168.101.200,12h
dhcp-host=11:22:33:44:55:66,rechner1,192.168.101.170
36
4 Dienste
Damit wird dem Rechner (der Netzwerkkarte) mit der MAC-Adresse 11:22:33:44:55:66 der Name
rechner1 und die IP 192.168.101.170 zugewiesen. In der Regel ist das für ein Heim- oder kleines
Office-Netzwerk genug, für weitere Feineinstellungen sind in der Datei /etc/dnsmasq.conf einige
Beispiele mit Erklärungen aufgelistet.
Falls im Netzwerk ein Router seinen Dienst tut, um den Clients den Internet-Zugang zu ermög-
lichen, sollte man den Clients dies ebenfalls mitteilen. Dazu müssen die folgenden Zeile geän-
dert/hinzugefügt werden:
dhcp-option=3,192.168.101.1
address=/googleadservices.com/127.0.0.1
address=/microsoft.de/91.189.94.249
37
4 Dienste
Je nach Größe des Netzwerks ist es ganz nett einen eigenen IM-Server zu haben, um sich zum
Beispiel mit dem am anderen Ende der 400qm WG-Wohnung befindlichen Mitbewohner zu un-
terhalten. Auch in unübersichtlichen Büros ist Instant-Messaging ein Mittel nicht dauernd in der
Gegend herumlaufen zu müssen, oder mal schnell eine Datei an einen bestimmten Mitarbeiter sen-
den zu können.
Hier wird Openfire als Server-App verwendet, welches zwar leider nicht in den offiziellen Ubuntu-
Paketquellen, ist aber in der Administration wesentlich einfacher zu bedienen als andere Jabber-
Server und bietet einiges an Plugins zur Erweiterung.
Download
Seit einiger Zeit steht ein .deb Installationsfile für Debian-basierte Systeme (zu denen Ubuntu ja
auch gehört) bereit, das von der Hersteller-Homepage heruntergeladen werden kann. Das Paket
kann zum Beispiel mit wget direkt auf den Server geladen werden, oder zuerst auf den Desktop
und dann per scp oder eine der Freigaben auf den Server befördert werden. Die Adresse für den
Download lautet http://www.igniterealtime.org/downloads/.
Installation Um das Paket installieren zu können, muss zunächst die Java-Runtime von Sun instal-
liert werden. Diese ist in den Paketquellen enthalten und wird mit
sudo apt-get install sun-java6-jre
installiert. Danach kann in das Verzeichnis gewechselt werden, in dem das heruntergeladene Openfire-
Paket liegt und dieses mit dem Befehl
sudo dpkg -i *.deb
dem System hinzugefügt werden.
Wenn die Installation ohne Fehler durchgelaufen ist, ist die Weboberfläche von Openfire unter
http://serverip:9090 verfügbar. Dort wird man von einem Konfigurations-Assistenten begrüßt (sie-
he Abb. 4.3). Hier muss zuerst die Sprache ausgewählt werden, die im Administrations-Interface
verwendet wird.
Im zweiten Schritt (siehe Abb. 4.4) wird der Name des Servers und die Ports für die Web-Oberfläche
für den Administrator festgelegt. Für das lokale Netz kann der vorgeschlagene Name verwendet
werden, falls der Server öffentlich im Internet verfügbar ist muss der entsprechende Domain-Name
angegeben werden unter dem der Server aus dem WWW erreichbar ist. Die Jabber-Adressen lau-
ten dann benutzer@domain-name. Die Ports können prinzipiell so bleiben oder falls gewünscht auf
38
4 Dienste
39
4 Dienste
40
4 Dienste
41