Artikelformat
27. Januar 2007

Tutorial Installation Debian ETCH Server

Im Folgenden finden Sie eine Übersicht über das gesamte Debian Server Tutorial (Etch = Php5 und MySQL 5). Falls Sie einen Debian Sarge Server nutzen wollen möchte Sie auf das Debian Sarge Howto (= Php4 und MySQL 4) hinweisen. Viel Erfolg bei der Installation und Anpassung Ihres Debian Vservers oder Debian Dedicated Servers

Inhaltsangabe:

Vorbemerkungen

Ein paar Worte zum Anwendungsbereich dieses Debian Linux Tutorials
und zur Vorgeschichte von Debian Etch.

Video-Anleitung Installation Debian Linux ETCH

Video der Installation eines Debian Etch Grundsystems.

Vorbereitungen Installation Debian Linux

Installation verschiedener Debian Pakete, die zu einem späteren Zeitpunkt benötigt werden.

Installation Apache 2 unter Debian 4.0 alias Debian Etch

Copy & Paste Debian Tutorial zur Installation eines Debian Etch Webserver.

Erstellung Virtual Hosts mit SSL-Support unter Debian Linux

Domains auf Debian Webserver verfügbar machen mittels Erstellung virtual Hosts.

Installation Postfix unter Debian Etch als Internet Server mit eigener Domain

Installation Debian Postfix für grundlegende Funktionen zwecks Emails für System und installierte CMS-Systeme.

Vsftpd unter Debian Etch oder alternativ Proftpd
Installation vsftp mit TLS Verschlüsselung oder einfache Nutzung von Proftpd.

Sicherheit Debian Server
Absicherung unseres Debian Webserver.

Rootserver Anwendungsmöglichkeiten
Hinweise zu Anwendungen und weiteren Debian Tutorials wie Installation Typo3 u.ä.

Anhang

WICHTIG: Dieses Debian Server Tutorial ist noch in Bearbeitung! (Status: testing)
Da dieses Howto sehr umfangreich ist/ wird, stelle ich auch alle Zwischenschritte dar. Bei Fragen oder Anmerkungen einfach die Blogfunktion am Ende des Howtos benutzen.

Themen für Debian Etch Tutorial noch offen:

Etch LVM-Volume und Verschlüsselung Partitionen
Etch SELinux / Security-Enhanced Linux: Erweiterung des Linux-Kernels um Zugriffskontrollen auf Ressourcen
Etch Secure-Apt zwecks Überprüfung Integrität signierter Pakete
Etch apt-key zwecks Apt-Schlüsselring
Etch Xen und Linux-VServer: Debian Etch eigene Kernel-Varianten
Etch VMware Player und Vmware Server

Vorbemerkungen Debian Server Tutorial

Dieses Debian Tutorial hat das Ziel auf möglichst einfache Weise einen Debian Server zu erstellen bzw. ein LAMP auf einem vorhandenen dedicated server / dedizierter Server oder vServer zu ermöglichen. Der Debian Server soll dynamische Webseiten bereitstellen können, verschlüsselt per FTP Daten transferieren können, E-Mails selbst und für auf dem LAMP installierte Content-Mangent-Systeme zu versenden. Weitere Möglichkeiten des Debian Server befinden sich im Anhang.

Persönliche Vorbemerkung Debian AMD64:
Ich werde des öfteren gefragt, ob Debian AMD64 nun besser sei auf einem Server, der eine AMD64-Laufzeitunterstützung bietet. Ein paar Fakten zu Debian + AMD64:
Positives der Debian AMD64-Portierung:
AMD64 ist seit Debian 4.0 eine offiziell unterstützte Debian-Architektur.
Die AMD64-Portierung besteht aus Kerneln für alle AMD 64bit-CPUs mit AMD64-Erweiterung und für alle Intel CPUs mit EM64T-Erweiterung und einer gemeinsamen 64bit-Benutzerumgebung.
Die Debian AMD64-Portierung erlaubt dem Benutzer von allen Vorteilen zu profitieren, wie virtueller Adressraum pro Prozess, physikalische Speicherunterstützung etc.
Problem mit Debian AMD64-Portierung:
Viele liebgewohnene Programme, wie partimage, wine, flash.. funktionieren unter Debian AMD64 nicht oder müssen portiert werden. Aus diesem Grund kann ich nur empfehlen sich bevor man ein Debian AMD64-System (als Desktop oder Server) produktiv aufsetzen will, genaustens über das Vorhandensein der nötigen Debian Pakete zu erkundigen.

Vorgeschichte zu Debian 4.0 ETCH

Debian ETCH ist der Codename für das kommende aktuelle Release von Debian Linux, das den Namen Debian GNU Linux 4.0 trägt. Debian ETCH war das TESTING Release der Debian Distribution seit dem STABLE Release Debian Linux 3.1 Sarge vom 6. Juni 2005. Debian Etch hat momentan (Februar 200) den Status: frozen , d.h. es werden keine neuen Programmversionen hinzugefügt, sondern nur noch Bugs gefixt.
Debian GNU/Linux 4.0 (auch bekannt als Etch) wurde am 8. April 2007 veröffentlicht.

Versionen der Pakete für unseren Debian Etch Server

System Debian Linux
Linux Kernel 2.6.18 ( mit XEN -Unterstützung und Vserver -Unterstützung )
(i386 and amd64 smp runtime support, i386 bigmem image for up to 64 GB memory)
GCC 4.1 als Compiler
Glibc 2.3.6
initramfs-tools early userspace (works with SATA, USB, RAID, LVM NFS, ..)
LSB Kompabilität ( Version 3.1 )
( Gnome 2.14.3.3 Thunderbrid 1.5 Firefox 1.5.0.7 X.org statt Xfree86 )

Server Debian Linux
Apache 2.2
MySQL 5.0.32
PHP5.2.0
Postfix 2.3.6

Voraussetzungen Debian Linux

Vorbemerkungen zum Debain Howto
Diese Howto / Tutorial / diese Anleitung (nennen Sie es wie Sie wollen) geht davon aus, dass ein minimales Debian Linux System installiert wurde oder wie bei einem dedizierter Server ( engl. dedicated server ) oder einem Vserver vorinstalliert ist. Bitte beachten Sie, dass Sie ein Image ohne Plesk oder Confixx von Debian Linux benötigen bzw. ggf. installieren müssen. Des Weiteren beachten Sie bitte, dass vServer gewisse Einschränkungen haben gegenüber einem dedicated server / dedizierter Server, wie bsp. dass meist der Kernel des vServer nicht gepatched werden kann und dass einige Funktionen beim vServer nicht zur Verfügung stehen, wie dav_fs (ggf. Nachfrage bei Anbieter).

Debian Download / Debian CD

Debian CD – Minimalsystem Debian Etch mit Netzwerkinstallations-CD
Der entsprechende Debian-Installer Netz-Installations-CD-Image (100–150 MB) kann hier als netinstall (Debain 4: Status stable) geladen werden.
Debian CD – Grundsystem Debian Etch mit CD1 und Netzwerkinstallation
Der entsprechende Debian-Installer debian-testing-i386-CD-1.iso (646 MB) kann hier als CD1 (Debain 4 Status: stable) geladen werden.
Debian CD – Aktuelles Debian Etch System der Weekly-builds
Die weekly-builds sind hier zu finden. In dieser sources.list steht schon etch und nicht testing. Anpassungen der Sources.list zwecks Wechselvarianten (Stable->Testing; Testing–>Testing oder bei Sarge bleiben) befinden sich im Anhang des Tutorials.
Debian DVD – Debian Etch komplett
Übersicht alle Debian Images

Video- Tutorial Installation Debian Linux ETCH

Im folgenden Video- Tutorial habe ich ein Debian Etch Grundsystem (!) ohne X-Server, ohne LAMP, ohne Postfix o.ä. in einen VMWare Server installiert. Ich habe die Installations CD 1 debian-testing-i386-CD-1.iso (also noch Debian Etch Status: testing) benutzt und zu Beginn den Befell installgui eingetippt. Installgui lässt den unter Debian 4 / Debian Etch neu dazu gekommenen grafischen Installer starten.
Weitere Bootparameter unter Debian 4 sind bspl. expert oder expertgui (z.B. Konfigurationsmöglichkeit Root-Konto zu deaktivieren und als Benutzer mit sudo Rootrechte zu erlangen).
oder installgui tasks=”kde-desktop,standard” (statt Gnome den KDE-Desktop installieren)…
Bitte entschuldigen Sie die schlechte Qualität des Videos. Ich habe diesmal ein Divx bei youtube hoch geladen, aber die Qualität wird nach der Umwandlung des Videos auf dem Youtube-Server bei mir immer grauenhaft. :-(  Wer mir schreibt wie das geht darf sich was wünschen :-)

Vorbereitungen Installation Debian Etch

Exkurs: Vorbemerkungen zu Debian Etch und APT vs APTITUDE:
Der bisherige Standard-Paketmnager unter Debian Linux war APT. Mit der Veröffentlichung von Debian Etch wird Aptitude das empfohlene Werkzeug zur Paketverwaltung! In diesem Debian Etch Tutorial nutze ich APT, da Meinung mein nach APT schneller ist und ich die Vorteile von APTITUDE, das einfach auf APT aufsetzt, gar nicht nutze oder benötige. Wer lieber Aptitude nutzen will kann im Folgendem ‘apt-get’ in der Regel durch ‘aptitude’ ersetzen.
Vielleicht für manche interessant: Aptitude lässt sich sowohl als Komandozeilenbefehl ausführen wie auch als Benutzeroberfläche.
Kleine Liste an Unterschieden zwischen APT vs APTITUDE:

  • ‘aptitude purge’ statt ‘apt-get remove –purge’
  • ‘aptitude install Deb1+ Deb2- Deb3_ Deb4=’ (1 install; 2 remove; 3 purge; 4 hold

WICHIG: Entscheiden Sie sich für APT oder APTITUDE (!), den APTITUDE kennt erweiterte Statusinformationen für die installierten Pakete, das bedeutet Pakete können den Status “manuell installiert” (mi) oder “automatisch installiert”  (ai) besitzen.
Manuell bedeutet, dass das ausgewählte Paket als ‘mi’ ausgezeichnet wird, und solche, die lediglich installiert werden, um Abhängigkeiten zu erfüllen als ‘ai’.
Vorteil: ‘ai’s werden automatisch deinstalliert, wenn ‘mi’ sie nicht mehr benötigt.
Problem: APT-GET kennt keine erweiterte Statusinformationen. APTITUDE stuft alle durch apt-get installierten Pakete als ‘ai’ ein, so dass es diese alle als zu deinstallieren vormerkt!
Lösung: Bei einem späteren Umstieg auf APTITUDE ist dies zu vermeiden dadurch, dass man nachträglich die von apt-get installierten Pakete als ‘mi’ kennzeichnet. Also aptitude (als Benutzeroberfläche) aufrufen und die Pakete mit ‘m’ auf ‘mi’ setzen.

Erlangung Rootrechte
Debian Etch :~# su
Quellen/ Paketlisten von APT aktualisieren
Debian Etch :~# apt-get update
System auf aktuellen Stand bringen
Debian Etch :~# apt-get upgrade
Installation verschiedener kleiner Programme für Debian Linux
Debian Etch :~# apt-get -y install mc zip unzip bzip2 screen vim rsync traceroute ftp lynx
Aktuelle Zeit unter Debian Linux ( u.a. wichtig bzgl. Einträgen in Logs )
Debian Etch :~# apt-get -y install ntp ntpdate
SSh installieren
Debian Etch :~# apt-get install ssh
SSHd Zugang absichern:
Debian Etch :~# mcedit /etc/ssh/sshd_config
Kurzanleitung Midnight-Commander: Speichern mit ‘F2′ und mit ‘F10′ schließen
Anmerkung: Für ambitionierte Debianer empfehle ich VIM. Der Einfachheit halber nutze ich im Tutorial MC
Einwahl von Root unterbinden in sshd_config
PermitRootLogin von YES auf NO
Anmerkung: Einloggen über Benutzer (, ggf. Benutzer anlegen mit: ~# adduser EsKannNurEinenGeben ) und über SU Root werden.
Einwahl auf einen / verschiedene Nutzer / Gruppen festlegen ( Root kann sich somit nicht anmelden)
AllowUsers EsKannNurEinenGeben Dude Testbernd # Benutzer
AllowGroups MeineGruppe # Gruppe
Portwechsel
Port 2332
Unterbinden der Nutzung von leeren Passwörtern
PermitEmptyPasswords no
Weitere Möglichkeit: Debian SSH Einwahl ausschließlich über Keyfile

Installation Apache Webserver mit Apache 2.2 mit PHP5 und MySQL unter Debian 4.0 alias Debian Etch

Installation Debian Apache Webserver
Debian 4.0 : # apt-get -y install apache2
Installation Debian Apache 2.2 Php5 Unterstützung
Debian 4.0 : # apt-get -y install libapache2-mod-php5 php5-cli php5-common php5-cgi
Installation PhpMyAdmin
Debian 4.0 : # apt-get install phpmyadmin
Aufruf über: http://MeineIPoderMein-Debian-Server.DE/phpmyadmin
Zusätzliche Zugriffsbeschränkung für Phpmyadmin durch .htaccess / Passwortschutz
Erstellung .htaccess Datei
Debian 4.0 : # mcedit /var/www/phpmyadmin/.htaccess
Inhalt
AuthType Basic
AuthName “phpmyadmin”
AuthUserFile /var/www/phpmyadmin/.htpasswd
require user USERNAME
Erstellung .htpassword Datei
~# mcedit /var/www/phpmyadmin/.htpasswd
USERNAME:iqhCaA/JBcng.
Passwortverschlüsselung hier unter KENNWORT
Anpassung Apache.conf
~# mcedit /etc/apache2/apache2.conf
Inhalt an Ende der Apache2.conf anfügen
<Directory /var/www/phpmyadmin>
AllowOverride AuthConfig
Options ExecCGI FollowSymLinks
</Directory>
Installation Debian Mysql Server 5
Debian 4.0 : # apt-get install mysql-common mysql-server mysql-server-5.0
Passwort von Root für Debian MySQL ändern / setzen
Debian 4.0 : # mysqladmin -u root -p password ‘IhrNeuesMysqlRootPasswort’
( Enter password: mit RETURN beantworten, da zu Begin noch kein Passwort gesetzt ist)
Erstellung Debain Etch MySQL Datenbank
Debian 4.0 : # mysqladmin -p create ErsteDatenBank
Erstellung eines weiteres MySQL Benutzer und Anpassung der Rechte für Datenbank
mysql -u root -p
Enter Password: *****
mysql> create user ‘NeuerNutzer’@localhost identified by ‘Passwort';
mysql> GRANT ALL PRIVILEGES ON ErsteDatenBank . * TO NeuerNutzer@’localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
Debian Apache 2.2 Webserver Neustart
Debian 4.0 : # /etc/init.d/apache2 restart
Test der Php 5 Unterstützung
Debian 4.0 : # mcedit /var/www/test.php
Inhalt:
# test.php
<?php phpinfo(); ?>
Test im Browser über: http://MeineIPoderMein-Debian-Server.DE/test.php

Troubleshooting bzgl. Apache 2.2

Fehlermeldung Debian Apache Webserver :
Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for Server Name
Lösung: Rechnernamen festlegen
Debian 4.0 : # echo DOMAIN > /etc/hostname
Debian 4.0 : # /bin/hostname -F /etc/hostname
Debian Apache Webserver Probleme bei Installation verschiedener Pakete:
Debian Etch Paketlisten auf aktuellen Stand
Debian 4.0 : # apt-get update
Apt-cache SHOW zeigt weitere Informationen und vorallem die abhängigen Pakete
Debian 4.0 : # apt-cache show PAKETNAME

Erstellung Apache Virtual Host ( vHost ) mit SSL-Support für Apache Webserver unter Debian Etch Linux

Anpassung ‘Default’ Debian Apache virtual Host durch Auskommentierung RedirectMatch
~# mcedit /etc/apache2/sites-available/default
Raute vor RedirectMatch (= Auskommentieren; Kommentieren = Raute weg nehemen) setzen, dann wird nicht vom localhost bzw. Ihrer IP auf http://localhost/default-apache/ weitergeleitet, sondern Sie bleiben bei http://localhost/
Inhalt (nur betreffende Zeile)
# ‘RedirectMatch ^/$ /apache2-default/ im vhost unter /etc/apache2/sites-available/’

Debian Apache 2.2 namensbasierten virtual Host anlegen ohne SSL unter Debian Etch

Erklärung: Sie haben eine Domain bei einem Anbieter und dessen DNS-Server zeigt auf die IP Ihres Servers, dann können wir schnell für Erreichbarkeit Ihrer Domain sorgen.
Anlegen des Webverzeichnisses
Debian Tutorial : ~# mkdir /var/www/PfadZurWebseite
Debian Apache Virtual Host erstellen
Debian Tutorial : ~# mcedit /etc/apache2/sites-available/MeineDomainDE
Anmerkung: Der Name (z.B. MeineDomainDE) ist hier bedeutungslos.
Inhalt:
<VirtualHost * >
# Anmerkung: Default Domain muss vorhanden sein
ServerAdmin EMAIL
ServerName www.Domain.DE
ServerAlias Domain.DE w.Domain.DE ww.Domain.DE
# Anmerkung: Sicherstellung der Erreichbarkeit bei Schreibfehlern; *Domain –> Problem mit Subdomains
DocumentRoot /var/www/PfadZurWebseite
# Pfad zu lokalen Verzeichnis unserer Debian Etch Webseite :-)
<Directory /var/www/PfadZurWebseite>
Order Deny,Allow
Allow from all
Options -Indexes
# option = keine Auflistungvon Verzeichnissen im Browser
</Directory>
</VirtualHost>
Aktivieren bzw. versymlinken des Debian Apache virtual Host
Debian Tutorial : ~# a2ensite MeineDomainDE
Debian Tutorial : ~# /etc/init.d/apache2 reload

Namensbasierten Apache Virtual Host SSL anlegen (sowohl http als auch https) für Apache 2.2 Webserver unter Debian Etch

Anlegen des Webverzeichnisses
Debian Tutorial : ~# mkdir /var/www/PfadZurWebseiteMitSSL
Anmerkung: Es kann auch ein bestehendes Verzeichnis genutzt werden, wie /var/www/PfadZurWebseite, dann ist ein Anlegen natürlich unnötig und die Webseite reagiert sowohl auf http:// wie auch https://
Installieren von OpenSSL
Debian Tutorial : ~# apt-get install openssl ssl-cert
Erstellung Verzeichnis für OpenSSL Zertifikat
Debian Tutorial : ~# mkdir /etc/apache2/ssl/
Debian Apache 2.2 OpenSSL Zertificate generieren
Nun muss das SSL-Zertifikat generiert werde, Apache SSL Unterstützung aktiviert werden und SSL konfiguriert werden.
Wir erstellen ein selbst zertifiziertes Zertifikat. Dies wird Ihr Browser bei der ersten Benutzung bemängelt. Jedoch ist ein selbst erstelltes Zeritfikat besser als keins :-)
Um selbst der Warnmeldung des Browser vorzubeugen können Sie das Zertifikat importieren.
Generieren des SSL-Zertifikats
Anmerkung: Zur Generierung des SSl-Zertifikat nutzen wir OpenSSL. Dieses Paket wird alle notwendigen Fragen zur Erstellung eines Zertifikats automatisch stellen.
Debian Tutorial : ~# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/apache.pem (alles eine Zeile)
Anmerkungen:
‘-days’ gibt die Gültigkeitsdauer an; Sie können auch weit mehr nehmen.
Unter Sarge konnte “apache2-ssl-certificate” genutzt werden. Unter ETCH ist dies nicht mehr möglich.
Meldung bzw. Dialog des Debian Apache SSL
Generating a 1024 bit RSA private key
writing new private key to ‘/etc/apache2/ssl/apache.pem’

Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-StateN]:
Locality Name (eg, city): BERLIN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section):
Common Name (eg, YOUR name):
Email Address:
Anmerkung: Es sind eigentlich keine Angaben notwendig, also immer mit RETURN bestätigen.
Setzen der richtigen Zugriffsrechte für Debian Apache Webserver -Zertifikat:
Debian Tutorial : ~# chmod 600 /etc/apache2/ssl/apache.pem
Debian Apache Virtual Host mit SSL erstellen
Debian Tutorial : ~# mcedit /etc/apache2/sites-available/MeineDomainMitSSL
Inhalt:
<VirtualHost *:443>
# SSL (START)
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
# SSL (ENDE)
ServerAdmin EMAIL
#kann auch einfach eine IP sein
ServerName www.Domain.DE
ServerAlias Domain.DE w.Domain.DE ww.Domain.DE
DocumentRoot /var/www/PfadZurWebseiteMitSSL
<Directory //var/www/PfadZurWebseiteMitSSL>
Order Deny,Allow
Allow from all
# Zeige keine Verzeichnisse an
Options -Indexes
</Directory>
</VirtualHost>
Aktivieren bzw. versymlinken des virtuellen Host
Debian Tutorial : ~# a2ensite MeineDomainMitSSL
Die Ports setzen auf die der Debian Apache 2 Webserver lauschen soll:
Debian Tutorial : ~# mcedit /etc/apache2/ports.conf
Listen 80
Listen 443
SSL-Support für Debian Apache 2 Webserver aktivieren:
Debian Tutorial : ~# a2enmod ssl
Meldung:
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
Restart des Debian Apache Webserver
Debian Tutorial : ~# /etc/init.d/apache2 reload
oder
Debian Tutorial : ~# apache2ctl restart # Kurzform
Mittteilung
Kostenlose Zertifikate gibt es hier

Mögliche Anpassungen des Apache Server unter Debian Etch

PHP Version von Debian Apache Webserver vor User-Requests verstecken
Wir stellen die php.ini so ein, dass PHP einem möglichen Hacker nicht einfach verrät, dass PHP5 installiert ist und welche Version installiert ist. Suchen Sie dazu in der php.ini die Variable expose_php und schalten sie aus. In der Grundeinstellung ist expose_php aktiviert.
In your php.ini (abhängig von Ihrer Distribution finden wir die Php.ini unter verschienden Plätzen,wie /etc/php.ini, /etc/php5/apache2/php.ini, etc.)
ändern wir expose_php
Debian Server : ~# mcedit /etc/php5/apache2/php.ini
VON
expose_php = On
ZU
expose_php = Off
Nach dieser Änderung wird PHP5 nicht mehr länger die Signature im Webheader des Server zeigen.
Debian Apache directory listing deaktivieren oder anders ausgedrückt keine Auflistung der Verzeichnisse und des Inhalts erlauben (wurde in vHosts schon ansatzweise gemacht)
Grundsätzlich ist Apache so eingestellt, dass er Verzeichnisse und deren Inhalte darstellt. Wenn man einen beliebigen Ordner X auf meinem Apache Server übers Internet anwählt, zeigt er die Directory an (sofern keine index.html oder index.php darin ist).
Wir wollen, aber nicht dass alle Verzeichnisse und schon gar nicht alle Dateien gelistet werden.
Tragen Sie am Ende der apache.conf dies ein:
Debian Server : ~# mcedit /etc/apache2/apache.conf
# Keine Darstellung durch Debian Apache des Verzeichnisinhalts erlaubt
<Directory “/var/www”>
Options -Indexes
Order allow,deny
Allow from all
</Directory>
# Für dieses Verzeichnis ist die Darstellung des Verzeichnisinhalts durch Debian Apache erlaubt
<Directory “/var/www/domain/download”>
Options +Indexes
Order allow,deny
Allow from all
</Directory>

Apache Webserver Standard-Domain definieren über mod-rewrite / rewrite auf unserem Debian Server

Mod-rewrite / Rewrite unter Apache2 aktivieren:
~# ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
oder Kurzform für Aktivierung Mod:
~# a2enmod rewrite
Neustart Apache Webserver:
~# /etc/init.d/apache2 restart
Resultat: Wenn nun der DNS-Server die Domain-Anfrage www.meine-domain.de an die IP Ihres Server weiterleitet sucht der Apache unter /var/www/MeineDomain.
Erstellen einer Apache .htaccess -Datei:
~# mcedit /var/www/MeineDomain/.htaccess
Inhalt der Apache .htaccess -Datei
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.meine-domain.de$
RewriteRule ^(.*)$ http://www.meine-domain.de/$1 [L,R=301]
Resultat für unseren Debian Server: Wenn nun die Anfrage an den Debian Apache kommt meine-domain.de, dann schaltet er automatisch auf www.meine-domain.de. Wenn andere Domains in das Verzeichniss verweisen, wie meinedomain.de, dann wird auch daraus www.meine-domian.de.
Wichtig: Alle Anfragen in dem Verzeichnis werden inklusive (!) Anhang weitergeleitet. Z.B. die Anfrage MeineDomain.de/kontkat.html (also ohne Minus (-) wird, wenn ein Apache Virtual Host existiert der in das Verzeichnis leitet) wird umgeleitet auf www.meine-domain.de/kontakt.html

Installation Debian Mailserver Postfix ( MTA ) als Internet Server mit eigener Domain

Exim ist der Standard MTA (Mail-Transfer-Agent) unter Debian Linux. Ich preferiere Postfix auf einem Debian Server, weil ich mehr Erfahrungen habe (, auch wenn dies in dieser Config nicht gerade durchscheint :-) Grundlage dieses Howto ist ein Webserver mit eigener Domain (, ob mit DNS / Bind installiert oder einem DNS der auf IP verweißt)!
Diese simple Postfix Konfiguration hat das Ziel Emails des Systems oder von auf dem System installierten CMS-Systemen o.ä. zu versenden.
– Start Konfigurations-Dialog Postfix Debian Linux–
Allgemeine Art der Postfix Config?
Internet-Server
An wenn soll Debian Postfix an Root adressierte E-Mails weitergeleitet werden?
# Anmerkung: Der Eintrag einer Emailadresse bedeutet, dass die Nachrichten des Systems, die an Root gehen, an diese Adresse weiterleitet werden, z.B. an email[at]tim-bormann.de
Benutzer
Wie lautet der E-Mail Name Ihres Systems?
MeineDomain.De
Für welche weiteren Rechner möchten Sie E-Mails akzeptieren?
# Anmerkung: Sei haben mehere Domains tim-bormann.de debian-traeume.de, dann tragen Sie diese hier ein sonst werde diese nicht akzeptiert bzw. versendet.
MeineDomain.De, localhost.localdomain, localhost
Synchrone Aktualisierung der E-Mail-Warteschlange erzwingen?
JA
Lokale Netzwerke?
# Anmerkung: Wichtig zwecks Sicherheit, da nur Nachrichten von localhost angenommen werden!!!
127.0.0.0/8
Möchten Sie procmail zur lokalen E-Mail-Zustellung nutzen?
JA
Maximale Postfach-Größe?
0
Zeichen der lokalen Adress-Erweiterung?
+
Welche Internet-Protokolle sollen verwendete werden?
alle
– ENDE Konfigurations-Dialog Postfix –

 

Einstellungen wurden in Postfix Hauptkonfigurationsdatei gespeichert
/etc/postfix/main.cf
Wiederholung Konfiguration Postfix
Debian Mailserver :~# dpkg-reconfigure postfix
Troubleshooting Postfix
Ansicht der Logdatei von Postfix
Debian Mailserver :~# tail -n 50 /var/log/mail.log
Alternative Konfigurations-Variante Debian Mailserver Postfix mit öffentlichen SMTP Server:
Emails über einen öffentelichen SMTP Server, wie GMX oder WEB.DE zu versenden.
Debian Mailserver :~# apt-get install postfix
– Konfigurations-Dialog Postfix unter Debian Linux –
Allgemeine Art der Konfiguration?
Satelliten-System (nicht Internet-Server)
Wie lautet der E-Mailname Ihres Systems?
Domain (z.B. MaxiMustermann.DE)
Ihr SMTP Relay-Server
smtp.MeinFreehoster.de (smtp.web.de mx.freenet.de smtpmail.t-online.de mail.gmx.net)
– ENDE Konfigurations-Dialog Postfix –

Wiederholung Konfiguration Postfix
Debian Mailserver :~# dpkg-reconfigure postfix
Authentifizierung bei SMTP-Server des MeinFreehosters
Anpassung main.cf
Debian Mailserver :~# mcedit /etc/postfix/main.cf
Inhalt main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
Erstellung sasl_password
~# mcedit /etc/postfix/sasl_password
Inhalt sasl_password
smtp.mailanbieter.de username:MeinPasswort
Datenbank erzeugen
Debian Mailserver :~# postmap /etc/postfix/sasl_password
Neustart Postfix
Debian Mailserver :~# /etc/init.d/postfix restart
Externe extrem umfangreiche Alternativkonfiguration noch unter Sarge

Vsftpd oder alternativ Proftpd unter Debian Etch

Vsftpd ist ein Debian FTP Server, mittels ihm lassen sich Dateien bequem über das Internet abrufen und speichern. Die Konfiguration lässt nur FTPS zu. Nicht zuverwechseln mit SFTP oder Secure FTP. VSFTP unter Debian Etch transferiert somit Daten über TLS verschlüsselt durch das Netz.
Anmerkungen: Ein Debian FTP Server stellt grundsätzlich ein Sicherheitsproblem dar. Die folgende Config von vsftp versucht dem Problem zu entsprechen.
Wer ein anonymous Login oder umusk für einen solchen Fall sucht, dem kann ich nicht helfen, da ich persönlich aufgrund einer solchen Config (, ob vsftp oder Proftpd ) und den resultierenden Sicherheitsbedenken nicht ruhig schlafen könnte.
Wer Vsftp nicht mag, dem habe ich alternativ die Installation von Proftpd unter Debian Etch beschrieben.
Meine Empfehlung: Proftpd ist gut, aber testen Sie Vsftp!
Installation vsftpd
Debian Dedicated Server ~# apt-get install vsftpd
Grundsätzliche Konfiguration
Der FTP-Server ist so eingestellt, dass er einen anonymen Zugriff gestattet.
Unsere Konfiguration von vsftp wird folgendender Maßen aussehen:
* Vsftp lauscht auf Port 2121 und nutzt passive Ports,
* anonymes Einlogen verboten ist,
* jeder am System bekannter Benutzer darf sich einlogen,
* einschließlich jener, die sich nicht lokal oder per SSH einlogen können, weil ihre Shell in /etc/passwd auf /bin/false zeigt.
* Jeder Benutzer ist in seinem Home gefangen (chrooted), Ausnahmen sind alle Benutzer, die in der Datei /etc/vsftpd.chroot_list stehen.
* Alle Benutzer, die in der Datei /etc/ftpuser stehen, dürfen sich nicht anmelden. Dies dient dazu um z.B. Systemkonten die Anmeldung zu verweigern.
* Es ist zwingend notwendig sich mittels FTPS bzw SSL/TLS verschlüsselt einzulogen. Normale FTP-Verbindungen sind nicht zugelassen.
Konfiguration
Zunächst Sicherung der Original Konfiguration:
Debian Dedicated Server ~# cp /etc/vsftpd.conf /etc/vsftpd.conf_original
Anpassung der vsftp Konfiguration
Debian Dedicated Server ~# mcedit /etc/vsftpd.conf
Inhalt
—-
# Anonymer Zugriff auf den Debian FTP Server von YES auf No
anonymous_enable=no

# Raute weg / Kommentieren von local_enable entfernen und
# Zugriff Systembenutzern gewähren

local_enable=YES

# Raute weg / Kommentieren von chroot_local_user=YES und
# damit alle FTP Server Benutzer in Home einsperren

chroot_local_user=YES

# Raute weg / Kommentieren von chroot_list_enable
# als whitelist für FTP Server, die nicht eingesperrt sein sollen
chroot_list_enable=YES

#Folgendes ans Ende der Konfiguration setzen
# ssl/ tls Verschluesslung des FTP Server aktivieren

ssl_enable=YES

# Verbindung von FTP Server auf Passiven Modus erlauben und
# Portrange definieren. Wichtig für Firewallregeln

pasv_enable=YES
pasv_min_port=49152
pasv_max_port=50000

# port-command für FTP Server erlauben
port_enable=yes

# FTP Server lauscht i.d.R. auf Port 22, aber die Verlegung auf Port 2222 ist sicherer
listen_port=2222

Zertifikat erstellen
SSL-Verschlüsselung benötigt zwingend ein Zertifikat, mit dem sich der Server gegenüber den Nutzern ausweißt. Beglaubigte Zertifikate sind sehr teuer, daher weichen wir auf ein selbstsigniertes Zertifikat aus.
Debian FTP Server ~# openssl req -new -x509 -nodes -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem
FTP Server Whitelist der nicht eingesperrten Benutzer erstellen
Debian FTP Server ~# mcedit /etc/vsftpd.chroot_list
Neustart des FTP Servers
Debian FTP Server ~# /etc/init.d/vsftpd stop
Debian FTP Server ~# /etc/init.d/vsftpd start
Troubleshooting FTP Server
Start einer neune Konifguration:
Debian FTP Server ~# apt-get remove vsftpd –purge

Alternative Installation Proftpd Debian Etch

Installation FTP Server
Debian Dedicated Server ~# apt-get install proftpd
Erstellung Gruppen für FTP Server
Mitglieder dieser Ftp Server Gruppe haben uneingeschränkte Rechte (kein Chroot und Read & Write )
Debian Dedicated Server ~# addgroup ftpprouser
Mitglieder dieser Ftp Server Gruppe haben eingeschränkte Rechte ( Chroot )
Debian Dedicated Server ~# addgroup ftpuser
Möglichkeit Anmeldung an System unterbinden und NUR FTP-SERVER Anmeldung für bestimmte Benutzer erlauben
Vorbereitung
Shell ohne Anmeldung über SSH o.ä. kopieren
Debian Dedicated Server ~# cp /bin/false /bin/ftp
Debian Dedicated Server ~# echo “/bin/ftp” >> /etc/shells
Anlegen der FTP Server Benutzer
Debian Dedicated Server ~# useradd FTP-USERNAME
Anmerkung: Legt nur den Usernamen an sonst keine Verzeichnisse o.ä.
Debian Dedicated Server ~# usermod -G ftpuser FTP-USERNAME
Anmerkung: chroot ungleich ftpprouser; siehe später proftpd.conf
Debian Dedicated Server ~# usermod -d /HOME/VERZEICHNIS FTP-USERNAME
Debian Dedicated Server ~# usermod -s /bin/ftp FTP-USERNAME
Anmerkung: keine Anmeldung an System
Ftp-User per Hand Gruppen zuordnen
(kann bei einfacher Konfiguration übersprungen werden )
Debian Dedicated Server ~# mcedit /etc/group
—Beispiel:

ftpprouser:x:1004:user1,user3,user4
ftpuser:x:1005:user2

Anpassen der FTP Server bzw. der Proftpd-Config

Debian Dedicated Server ~# mcedit /etc/proftpd.conf
Inhalt
—-
# chroot für alle User der Gruppe ftpuser
# Sehr wichtig zwecks Sicherheit, aber bringt mit sich, dass auf nichts außerhalb des
#Homeverzeichnisses zugegriffen werden kann; einzelne Verzeichisse können nur über
# “mount –bind /FTP-USER1/ /FTP-USER2/” temporär oder mit eintrag in fstab ständig
#eingebunden werden, jedoch nicht über Symlinks einfach “herein verfachtet” werden; im
# Anschluss ein Beispiel
DefaultRoot ~ ftpuser
# Login auf FTP Server nur von Mitgliedern der Gruppe “ftpuser” erlauben
<Limit LOGIN>
DenyGroup !ftpuser !ftpprouser
</Limit>
# Root-Login auf FTP Server verbieten und gültige Shell verlangen (in /etc/shells)
<Global>
RootLogin off
RequireValidShell on
</Global>
#Speed des FTP Servers erhöhen
UseReverseDNS off
IdentLookups off
—-
Neustart des FTP Server bzw. Proftpd
Debian FTP Server ~# /etc/init.d/proftpd restart
/Ende eigentliche Konfiguration Proftpd

Sonderfälle Konfiguration Propftpd unter Debian Etch

Chrootet FTP-Benutzern oder Gruppen Verzeichnisse außerhalb des Homeverzeichnisses geben:
Bsp. für ein Verzeichnis von User2, d.h. ein Verzeichnis von User1 auch User2 verfügbar machen
1. Schritt Verzeichnis erstellen in dem die Daten landen sollen
Debian Dedicated Server ~# mkdir /home/USER2/OrdnerTestVonUser1/
2. Schritt Verzeichnis mounten; mount –bind /Ursprungsverzeichnis /Zielverzeichnis
Debian Dedicated Server ~# mount –bind /home/USER1/OrdnerTest/ /home/USER2/OrdnerTestVonUser1/
Anmerkung: über ‘mount’ kann man sich alle Mountpunte anzeigen lassen und über ‘umount’ löschen. Nach Neustart sind alle Mountpunkte, die mit “mount –bind” erstellt wurden, weg, falls sie immer vorhanden sein sollen müssen Sie einfach in die /etc/fstab eintragen werden.

DEBIAN SERVER SICHERHEIT

Automatisierte Debian Linux Updates
Cron-Apt ist eine gute Lösung um automatisch Sicherheitsupdates einzuspielen und / oder eine Benachtrichtigung darüber zu erhalten. Anleitung Cron-APT Debian Updates

Automatisches Backup Debian Linux
Rsnapshot ist meiner Meinung das Mittel der Wahl ( oder Rsync :-). Rsnapshot bietet platzsparende Hardlinks und eine übersichtliche Installation / Konfiguration. Der größte Vorteil erschließt sich erst bei der Notwendigkeit eines Restore. Anleitung Backup Debian Linux Rsnapshot

Automatische Sicherung MySQL Datenbank unter Debian Linux
Die Sicherung von SQL Datenbanken ist etwas heikel. Es gilt die entsprechenden Spracheinstellungen (utf-8 oder latin1 etc.) zu beachten und dass eine Sicherung und ein gleichzeitiger Schreibzugriff ein Backup schnell unbrauchbar machen können. Empfehlung MySQlDumper

Automatische Sicherung der Paketlisten und der ETC unter Debian Linux
Debian Linux bietet mit Apt die Möglichkeit ein System in windeseile wieder in einen alten Zustand zurück z uversetzen. Installation Minimalsystem und Einspielen der Pakete sowie der Einstellungen (/etc). Howto Erstellung Paketlisten

Rootserver Anwendungsmöglichkeiten

Installation Content-Mangement-System / CMS Typo3 4.0Typo3 4.0 ist ein top CMS
Installation Typo3 4.0 Debian Etch
Torrents bereitstellen via Torrentflux oder Torrents über Konsole seeden
Rootserver bieten heute neben einem LAMP (= Linux Apache MySQL PHP (auch Perl oder Python )) viele Möglichkeiten. Aufrrund der Anbindung und der 24stündigen Verfügbarkeit können Rootserver wunderbar als legale Torrentserver benutzt werden.

Anleitung Bittorrent per Shell | Anleitung Installation Torrentflux

DEBIAN SERVER ANHANG

Verschiedene Varianten der sources.list je nach momentanem / zukünftigem System
Mit der Datei /etc/apt/sources.list kann man einstellen, wie sich das System beim Wechsel von Etch / Testing nach Stable verhält.

Bisher Sarge nun Etch / auf etch als neues stable umsteigen –> System wird von sarge auf Etch aktualisiert.
deb http://ftp.de.debian.org/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
~# apt-get dist-upgrade
Bisher Testing und auch dabei bleiben: (Etch zu Lenny wechseln (Sid bleibt der Name für unstable))
deb http://ftp.de.debian.org/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
Bei Sarge bleiben:
deb http://ftp.de.debian.org/debian/ sarge main contrib non-free
deb http://security.debian.org/ sarge/updates main contrib non-free
Bei etch bleiben
deb http://ftp.de.debian.org/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free