plus minus gleich

Installation eines Debian-LENNY-Servers

In diesem Tutorial gehen wir die Installation eines Debian Servers (Debian 5) mit Apache 2, MySQL 5, Virtual Hosts mit SSL-Support, Postfix und Vsftpd durch.
Voraussetzung ist ein installierter minimaler Debian Server wie er bei den meisten dedizierten oder virtuellen Servern bereits installiert ist.

Inhalt

1. Installation der Pakete
2. Installation und Konfiguration von SSH
3. Installation von Apache 2 mit PHP5 und MySQL 5 unter Debian
4. Erstellung Apache Virtual Host (namens-basiert)
5. Installation eines Mailservers mit Postfix (MTA)
6. Installation von Vsftpd als FTP-Server
7. Einige Sicherheitstipps für den Debian-Server

1. Installation der Pakete


Erlangung der Rootrechte:

Debian:~# su

Paketlisten aktualisieren und System auf den aktuellen Stand bringen:

Debian:~# apt-get update
Debian:~# apt-get upgrade

Installation weiterer kleinerer Hilfsprogramme:

Debian:~# apt-get install vim mc zip unzip bzip2 ftp lynx screen rsync tracerroute

Installation Zeitserver:

Debian:~# apt-get install ntp ntpdate

2. Installation und Konfiguration von SSH


SSH installieren:

Debian:~# apt-get install ssh

SSH-Zugang absichern:

Debian:~# vim /etc/ssh/sshd_config

Es kann auch der Editor mc benutzt werden. Ich bevorzuge jedoch vim.

sshd_config abändern:

PermitRootLogin von YES auf NO

ACHTUNG: Wenn ihr über root mit dem Server verbunden seid bitte vorher einen zweiten User mit ''Debian:~# adduser tester'' anlegen und über diesen dann mit su wieder Rootrechte erlangen.

SSH-Einwahl auf einen bzw. mehrere User/Gruppen festlegen:

# Benutzer
AllowUsers tester
# Gruppen
AllowGroups testgruppe

Portwechsel:

Port 20345

Verbieten der Nutzung von leeren Passwörtern:

PermitEmptyPasswords no

3. Installation von Apache 2 mit PHP5 und MySQL 5 unter Debian


Installation Apache Webserver:

Debian:~# apt-get install apache2

Installation der PHP5-Unterstützung für Apache:

Debian:~# apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi

Installation MySQL Server 5:

Debian:~# apt-get install mysql-common mysql-server mysql-server-5.0 php5-mysql

Passwort für MySQL-Root setzen:

Debian:~# mysqladmin -u root -p password ‘HierKommtDasPasswortRein’

Apache neu starten:

Debian:~# /etc/init.d/apache2 restart

Test der PHP5-Unterstützung:

Debian:~# vim /var/www/info.php

Inhalt:

<?php
phpinfo();
?>

Wenn man nun auf http://meine-domain.de/info.php geht erfährt man alles was man wissen will und noch
viel mehr.

Da die Verwaltung einer MySQL-Datenbank für den Einsteiger sehr schwierig werden kann installieren wir jetzt noch PHPMyAdmin mit dem sich Datenbanken über den Browser verwalten lassen.

Installation PHPMyAdmin:

Debian:~# apt-get install phpmyadmin

Für zusätzliche Sicherheit versehen wir PHPMyAdmin noch mit einer weiteren Zugriffsbeschränkung.

Erstellung der .htaccess:

Debian:~# vim /var/www/phpmyadmin/.htaccess

Inhalt:

AuthType Basic
AuthName “phpmyadmin”
AuthUserFile /var/www/phpmyadmin/.htpasswd
require user Tester

Erstellung der htpassword:

Debian:~# vim /var/www/phpmyadmin/.htpasswd

Inhalt:

tester:deinPasswort.

Mehr zur Passwortverschlüsselung erfahrt ihr hier: SelfHTML

Anpassung der apache2.conf:

Debian:~# vim /etc/apache2/apache2.conf

Am Ende der apache2.conf einfügen:

<Directory /var/www/phpmyadmin>
AllowOverride AuthConfig
Options ExecCGI FollowSymLinks
</Directory>

Apache neu starten:

Debian:~# /etc/init.d/apache2 restart

4. Erstellung Apache Virtual Host (namensbasiert)


Die Erstellung von Virtual Hosts macht dann Sinn wenn ihr z.B. mehrere Webseitebn auf einem Server habt. Zeigt also der DNS-Server eures Domainanbieters auf eure IP weis Apache wo die Website zu finden ist!

Bsp: Ihr habt zwei Seiten Hompage1 und Hompage2. Beide haben unterschiedliche Domains und liegen in zwei veschiedenen Ordnern auf eurem Server.

Also: Hompage1 (www.hompage1.de) unter /var/www/hompage1 und Hompage2 (www.hompage2.de) unter /var/www/hompage2. Mit den virtual Hosts können wir nun Apache sagen welche Seite er anzeigen soll wenn er eine Anfrage mit www.hompage1.de bekommt.

Falls nicht schon automatisch geschehen tragen wir noch folgende Zeile in die /etc/apache2/apache2.conf ein:

ServerName localhost

4.1 ohne SSL-Zertifikat

Anlegen des Verzeichnisses:

Debian:~# mkdir /var/www/hompage1

Erstellung des Virtual Hosts:

Debian:~# vim /etc/apache2/sites-available/myhosts.conf

Anmerkung: Hier werden nun alle Hosts eingetragen.

Inhalt:

NameVirtualHost IP.des.Servers:80

#
# Vhost für hompage1.de
#
<VirtualHost IP.des.Servers:80>

DocumentRoot     /var/www/hompage1
ServerName     hompage1.de
ServerAlias     www.hompage1.de hompage1.de *.hompage1.de

<Directory /var/www/hompage1>
Order Deny,Allow
Allow from all
Options -Indexes
</Directory>

</VirtualHost>

#
# Vhost für hompage2.de
#
<VirtualHost IP.des.Servers:80>

DocumentRoot     /var/www/hompage2
ServerName     hompage2.de
ServerAlias     www.hompage2.de hompage2.de *.hompage2.de

<Directory /var/www/hompage2>
Order Deny,Allow
Allow from all
Options -Indexes
</Directory>

</VirtualHost>

Aktivieren des Virtual Hosts:

Debian:~# a2ensite myhosts.conf
Debian:~# /etc/init.d/apache2 reload

Beim ersten Kommando ist es wichtig den Namen anzugeben den ihr auch bei der Erstellung de Virtual Hosts verwendet habt!

4.2 mit SSL-Zertifikat


Installation von OpenSSL:

Debian:~# apt-get install openssl ssl-cert

Erstellung des Verzeichnisses für das SSL-Zertifikat:

Debian:~# mkdir /etc/apache2/ssl/

OpenSSL Zertifikat generieren:

Das selbst erstellte Zertifikat wird von eurem Browser beim ersten Aufruf der Seite bemängelt werden jedoch ist ein bemängeltes Zertifikat genauso sicher wie ein beglaubigtes für das man schnell mal ein paar hundert Euro hinlegen kann!

Erstellung:

Debian:~# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/apache.pem

Anmerkung: Alles in einer Zeile! Das Kommando '-days' gibt die Gültigkeitsdauer des Zertifikats an und kann beliebig verändert werden!

Nach dem ihr mit Enter bestätigt habt kommt folgender Dialog:

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:

Die Felder können entweder ausgefüllt oder einfach mit Enter übersprungen werden.

Rechte für das Zertifikat setzen:

Debian:~# chmod 600 /etc/apache2/ssl/apache.pem

Anlegen des Verzeichnisses der Website:

Debian:~# mkdir /var/www/homepage3mitSSL

Erstellung des Virtual Hosts:

Debian:~# vim /etc/apache2/sites-available/hompage3mitSSL

Inhalt:

<VirtualHost IP.des.Servers:443>

# SSL (START)
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
# SSL (ENDE)
ServerAdmin EMAIL

ServerName hompage3.de
ServerAlias www.hompage3.de hompage3.de *.hompage3.de
DocumentRoot /var/www/hompage3mitSSL

<Directory /var/www/hompage3mitSSL>
Order Deny,Allow
Allow from all
# Zeige keine Verzeichnisse an
Options -Indexes
</Directory>

</VirtualHost>

Aktivieren des Virtual Hosts:

Debian:~# a2ensite hompage2mitSSL

Debian:~# /etc/init.d/apache2 reload

Ports aktivieren auf denen Apache lauschen soll:

Debian:~# vim /etc/apache2/ports.conf
Listen 80
Listen 443

Die SSL-Unterstützung für Apache aktivieren:

Debian:~# a2enmod ssl

Apache neu starten:

Debian:~# /etc/init.d/apache2 restart

5. Installation eines Mailservers mit Postfix (MTA)


Der Standard-MTA unter Debian ist Exim. Ich bevorzuge jedoch Postfix da ich ihn für leistungsfähiger halte und ihn schon immer benutze.
Mit der Konfiguration die wir hier vornehmen ist es möglich E-Mails vom System aus zu versenden bzw. installierten CMS wie z.B. Joomla die Möglichkeit zu geben E-Mails zu versenden.

Installation von Postfix:

Debian:~# apt-get install postfix

Konfigurations-Dialog von Postfix:

Art der Postfix Config:

Internet-Server

An wen sollen an Root adressierte Mails weitergeleitet werden:

Benutzer

Wenn man hier eine E-Mailadresse einträgt leitet Postfix an Root adressierte E-Mails an diese weiter. z.B. Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann.

Wie lautet der E-Mail Name Ihres Systems?

domain.de

Für welche weiteren Rechner möchten Sie E-Mails akzeptieren?

domain1.de, domain2.de, localhost.localdomain, localhost

Wenn ihr mehrere Domains habt wie z.B. domain1.de, domain2.de etc. dann tragt sie hier ein da diese sonst nicht akzeptiert bzw. gesendet werden.

Synchrone Aktualisierung der E-Mail-Warteschlange erzwingen?

JA

Lokale Netzwerke?

127.0.0.0/8

Wichtig für die Sicherheit, da nur Nachrichten von localhost angenommen werden!

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 verwendet werden?

ALLE

Solltet ihr versehentlich etwas falsch eingetragen haben so könnt ihr die Konfiguration auch noch einmal neu starten.

Wiederholung der Konfiguration:

Debian:~# dpkg-reconfigure postfix

Authentifizierung beim SMTP-Server eures Hosters:

Debian:~# vim /etc/postfix/main.cf

Inhalt:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_auth

Erstellung von sasl_auth:

Debian:~# vim /etc/postfix/sasl_auth

Inhalt:

Debian:~# smtp.mailanbieter.de username:passwort

Datenbank erzeugen:

Debian:~# postmap /etc/postfix/sasl_auth

Postfix neu starten:

Debian:~# /etc/init.d/postfix restart

6. Installation von Vsftpd als FTP-Server


In diesem Teil des Tutorials gehen wir die Installation und Konfiguration von Vsftpd durch mit dem sich bequem Daten auf dem Server speichern bzw. abrufen lassen. Die hier beschriebene Konfiguration lässt nur FTPS zu. Da ein ein FTP-Server immer ein Sicherheitsrisiko darstellt wird hier der Login über Annonymous bzw. umask abgeschaltet.

Installation Vsftpd:

Debian:~# apt-get install vsftpd

Sicherung der originalen Konfigurationsdatei:

Debian:~# cp /etc/vsftpd.conf /etc/vsftpd.conf_original

Konfiguration:

Debian:~# vim /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 den Zugriff von Systembenutzern erlauben
local_enable=YES
# Raute weg / Kommentieren von chroot_local_user=YES und
# damit alle FTP Server Benutzer in chroot-Gefängnis 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 Firewall regeln
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=3562

Zertifikat erstellen:

Debian:~# openssl req -new -x509 -nodes -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem

Whitelist der nicht eingesperrten User erstellen:

Debian:~# vim /etc/vsftpd.chroot_list

Neustarten von Vsftpd:

Debian:~# /etc/init.d/vsftpd restart

7. Einige Sicherheitstipps für den Debian-Server


PHP-Version verschleiern:

Damit mögliche Angreifer die verwendete PHP-Version nicht ermitteln können müssen wir die php.ini anpassen.

php.ini bearbeiten:

Debian:~# vim /etc/php5/apache2/php.ini

Inhalt:

expose_php = OFF

Standardmäßig ist expose_php auf ON gestellt.

Die Auflistung der Verzeichnisse und des Inhalts im Browser verbieten:

Standardmäßig zeigt Apache die Ordnerstruktur und deren Inhalt an wenn keine index.html oder index.php in diesem Ordner vorhanden ist.

Da wir dies nicht wollen müssen wir die apache.conf anpassen.

apache.conf anpassen:

Debian:~# vim /etc/apache2.conf

Am Ende sind folgende Zeilen einzufügen:

# Keine Darstellung des Verzeichnisinhalts
<Directory “/var/www”>
Options -Indexes
Order allow,deny
Allow from all
</Directory>

# Darstellung des Verzeichnisinhalts für diesen Ordner erlauben
<Directory “/var/www/domain/download”>
Options +Indexes
Order allow,deny
Allow from all
</Directory>

Apache neu starten:

Debian:~# /etc/init.d/apache2 restart

~ The End ~

Ich hoffe dieses Tutorial hat euch weiter geholfen!
Sollten Fehler im Tutorial sein bitte ich euch mir diese über das Kontaktformular mitzuteilen.
Wenn ihr dieses Tutorial runterladen wollt, dann könnt ihr dies unter folgendem Link tun: Tutorial Download

 
Kommentare (0)
Kommentar schreiben
Ihre Kontaktdetails:
Kommentare:
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock::X:side:
:):P:unsure::woohoo::huh::whistle:;):s:!::?::idea::arrow:
Security
Bitte geben Sie den Anti-Spam-Code aus diesem Bild ein.
 

POS verfolgen

Atom
Atom 0.3
News
News | Fullposts

POS auf Facebook folgen.POS auf Twitter folgen.