Der Perfekte Server - Debian Lenny (Debian 5.0) [ISPConfig 3]

Version 1.0
Autor: Falko Timme
Übersetzt von:  rini90 --
Zuletzt geändert am 01.03.2009

Dieses  Tutorial zeigt, wie man einen Debian Lenny (Debian 5.0) Server aufsetzt und für ISPConfig 3 vorbereitet und wie man ISPConfig 3 installiert. ISPConfig 3 ist ein Webhosting Bedienungspanel das dir erlaubt, folgende services über einen Webbrowser zu steuern:Apache Webserver, Postfix Mailserver, MySQL, MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV, und viele mehr.

Dieses Setup funktioniert nicht für ISPConfig 2! Es ist ausschließlich für ISPConfig 3 !

Ich gebe keine Garantie, das es bei dir läuft!

1 Anforderungen

Um dieses System zu installieren, wirst Du folgendes benötigen:

2 Vorbemerkung

In dieser Anleitung benutze ich den Host-Namen server1.example.com mit der IP Adresse 192.168.0.100 und der Gateway 192.168.0.1. Diese Angaben können bei Dir anders sein, bitte achte darauf dass sie gegebenenfalls angepasst werden.

3 Das Basissystem

Lege die Debian Lenny Netzwerk Instalaltions-CD ein und boote von der CD. Wähle Install (das startet den textbasierten Installer - wenn Due eine graphische Oberfläche bevorzugst, wähle Graphical install):


Wähle deine Sprache aus:


Wähle deinen Standort aus:





Wähle ein Tastatur-Layout:


Der Installer überprüft die Installations-CD, Deine hardware, und konfiguriert anschliessend das Netzwerk per DHCP, wenn es einen DHCP- Server im Netzwerk gibt::



Gib den Hostnamen ein. In diesem Beispiel heisst mein System server1.example.com, also gebe ich server1 ein:


Gib den Domain Namen an. In diesem Beispiel ist es example.com:


Nun musst Du Deine Festplatte partitionieren. Der Einfachheit halber werde ich eine grosse Partition erstellen (mit dem Mount-Punkt /) und eine kleine Tauschpartition, daher wähle ich Guided - use entire disk aus. Selbstverständlich kannst Du die Partition beliebig erstellen und auch LVM benutzen.


Wähle die Festplatte aus die partitioniert werden soll:



Dann wähle das partitionsschema aus. Wie bereits gesagt, wähle ich die einfache Variante All files in one partition (recommended for new users) - Du kannst auch etwas anderes auswählen:


Hiernach wähle Finish partitioning and write changes to disk:


Wähle Yes aus wenn Du gefragt wirst Write changes to disks?:


Hiernach wurden Deine Partitionen erstellt und formatiert:


Nun ist das Basissystem installiert:


Bitte gib nun dem Root-Benutzer ein Passwort:


Bestätige das Passwort - und vertippe Dich nicht…:


Erstelle ein normales Benutzerkonto wie z.B. für den Nutzer Administrator mit dem Namen administrator. Benutze aber nicht den Namen admin, da dieser bereits vom Debian Lenny System reserviert ist:






Als Nächstes musst Du apt konfigurieren. Da wir die Debian Lenny Netzwerk Installations-CD nutzen, die nur eine kleine Anzahl von paketen bereit hält, müssen wir einen Netzwerk-Mirror benutzen. Wähle das Mirror aus das Du benutzen möchtest, üblicherweise das wo Dein Debian Lenny System herkommt:


Dann wähle ein Mirror aus (z.B. ftp2.de.debian.org):


Wenn Du keinen HTTP Proxy benutzt, lass das folgende Feld leer und klick auf Continue:


Apt aktualisiert nun die Paket-Datenbank:


Du kannst die Umfrage zur Paket-Nutzung übergehen, indem Du auf No klickst:


Wir brauchen zwar einen Webserver, DNS-Sserver, Mailserver, und eine MySQL Datenbank, nichstdestotrotz wähle ich nichts davon aus da ich volle Kontrolle über das System haben möchte. Wir werden die Pakete natürlich später manuell installieren. Daher wähle Standard system und klick Continue:


Die benötigten Pakete wurden heruntergeladen und auf Dein System installiert:



Wenn Du gefragt wirst Install the GRUB boot loader to the master boot record, wähle bitte Yes aus:


Die Basissysteminstallation ist nun beendet. Nimm die Debian Lenny Netzwerk Installations-CD raus und klick auf Continue um das System neu zu starten:


Weiter zu den nächsten Schritten …

4 SSH-Server installieren

Debian Lenny installiert nicht standardmässig OpenSSH, daher müssen wir es selbst machen. Gib ein:

apt-get install ssh openssh-server


Ab sofort kannst Du einen SSH-Client wie PuTTY benutzen und Dich für die restlichen Anleitungsschritte von Deinem Rechner aus auf Deinem Debian Lenny Server einloggen.

5 vim-nox installieren (optional)

Ich werde vi als Texteditor in dieser Anleitung benutzen. Das standardmässige vi Programm hat einige Macken auf Debian und Ubuntu und um diese zu beheben installieren wir vim-nox:

apt-get install vim-nox


(Das brauchst Du natürlich nicht wenn Du einen anderen Texteditor wie joe oder nao benutzt.)

6 Netzwerk konfigurieren

Da der Debian Lenny Installer das System so konfiguriert hat dass es die netzwerkeinstellungen per DHCP bekommt, müssen wir das ändern, da ein Server eine statische IP-Adresse benötigt. Editiere /etc/network/interfaces und passe es nach Deinen Bedürfnissen an (in diesem Beispiel nutze ich die IP-Adresse 192.168.0.100). Bitte beachte dass ich allow-hotplug eth0 mit auto eth0 ersetze; ansonsten kann man das Netztwerk nicht neu starten und müsste das gesamte System neu starten):

vi /etc/network/interface

 

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1

Dann starte das Netzwerk neu:

/etc/init.d/networking restart


Bitte editiere /etc/hosts. Es sollte folgendermassen aussehen:

vi /etc/hosts

 

127.0.0.1       localhost.localdomain   localhost
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

Gib ein

echo server1.example.com > /etc/hostname
/etc/init.d/hostname.sh start

Danach gib ein

hostname
hostname -f

Beide sollten server1.example.com anzeigen.

7 Debian Installation aktualisieren

Gib ein

apt-get update


um die apt Paket-Datenbank zu aktualisieren und

apt-get upgrade


um die neuesten Updates zu installieren, falls es welche gibt.

8 Synchronisiere die SystemUhr

Es ist eine Gute Idee, die Systemuhr mit NTP(network time protocol)server über das internet zu syncronisieren.

Mach einfach

apt-get install ntp ntpdate


und deine Systemzeit wird immer mit ntp syncronisiert.

9 Installieren von Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils

Wir können  Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, und binutils mit einem einzigen Befehl Installieren:

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils


Folgende Fragen werden uns gestellt:

New password for the MySQL "root" user: Repeat password for the MySQL "root" user: Create directories for web-based administration? General type of mail configuration: System mail name: SSL certificate required
MySQL soll auf alle Oberflächen laufen, nicht nur auf localhost, daher editieren wir /etc/mysql/my.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus:

vi /etc/mysql/my.cnf

 

[...]
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]

Dann starten wir MySQL neu:

/etc/init.d/mysql restart


Nun kontrolliere, das das Netzwerk aktiv ist. Starte

netstat -tap | grep mysql


Die Ausgabe sollte wie hier ausschauen:

server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      6612/mysqld
server1:~#

Wärend der installation, werden die SSL Zertifikate von IMAP-SSL und POP3-SSL amit dem hostname localhost erstellt. Um diese auf den richtigen Hostnamen anzupassen (server1.example.com in diesem tutorial), lösche die Zertifikate...

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

... und modifiziere die folgenden 2 Dateien; ersetze CN=localhost mit CN=server1.example.com (wenn nötig, kannst du auch andere Werte anpassen):

vi /etc/courier/imapd.cnf

 

[...]
CN=server1.example.com [...]

vi /etc/courier/pop3d.cnf

 

[...]
CN=server1.example.com [...]

dann stelle die Zertifikate wieder her...

mkimapdcert
mkpop3dcert

... starte Courier-IMAP-SSL und Courier-POP3-SSL neu:

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

10 Installation von Amavisd-new, SpamAssassin, And Clamav

Um amavisd-new, SpamAssassin, und ClamAV zu installieren starten wir:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

 

11 Installation von Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, und mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, und mcrypt können wie folgt installiert werden:

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp


Du wirst folgende Frage sehen:

Web server to reconfigure automatically:
Starte folgenden Befehl um die Apache module suexec, rewrite, ssl, actions, und include zu aktivieren:

a2enmod suexec rewrite ssl actions include


Anschließend starte Apache neu:

/etc/init.d/apache2 restart

 

12 Installieren von PureFTPd und Quota

PureFTPd und quota können mit folgendem Befehl installiert werden:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool


Editiere die Datei /etc/default/pure-ftpd-common...

vi /etc/default/pure-ftpd-common


... Und wechsel den Startmodus von inetd zu standalone und setze VIRTUALCHROOT=true:

<a href="http://www.quantcast.com/p-25K88fxDSEn9Y" target="_blank"><img src="http://pixel.quantserve.com/pixel/p-25K88fxDSEn9Y.gif" style="display: none;" border="0" height="1" width="1" alt="Quantcast"/></a>

[...]
STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]

Editiere die Datei /etc/inetd.conf um inetd davor zu schützen ftp zu starten: vi /etc/inetd.conf Kommentiere die Zeile, welche mit ftp stream tcp beginnt raus:

[...]
#:STANDARD: These are standard services. #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper [...]

Anschließend starte inetd neu:

/etc/init.d/openbsd-inetd restart


dann starte PureFTPd:

/etc/init.d/pure-ftpd-mysql start

 

13 Installiere MyDNS

bevor wir MyDNS installieren, müssen wir ein paar vorausgesetzte dateien installieren:

apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev


MyDNS findest du nicht in den Debian Lenny Paketdateien, deswegen müssen wir es wie folgt selber bauen:

cd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
tar xvfz mydns-1.2.8.25.tar.gz
cd mydns-1.2.8
./configure
make
make install

als nächstes erstellen wir das start/stop script für MyDNS:

vi /etc/init.d/mydns

 

#! /bin/sh
# # mydns Start the MyDNS server # # Author: Philipp Kern <phil@philkern.de>. # Based upon skeleton 1.9.4 by Miquel van Smoorenburg # <miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>. # set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/sbin/mydns NAME=mydns DESC="DNS server" SCRIPTNAME=/etc/init.d/$NAME # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 case "$1" in start) echo -n "Starting $DESC: $NAME" start-stop-daemon --start --quiet --exec $DAEMON -- -b echo "." ;; stop) echo -n "Stopping $DESC: $NAME" start-stop-daemon --stop --oknodo --quiet --exec $DAEMON echo "." ;; reload|force-reload) echo -n "Reloading $DESC configuration..." start-stop-daemon --stop --signal HUP --quiet --exec $DAEMON echo "done." ;; restart) echo -n "Restarting $DESC: $NAME" start-stop-daemon --stop --quiet --oknodo --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --exec $DAEMON -- -b echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0

Als nächstes machen wir das script ausführbar und und erstellen für es die system startup links :

chmod +x /etc/init.d/mydns
update-rc.d mydns defaults

14 Installation von Vlogger und Webalizer

Vlogger und webalizer können wie folgt installiert werden:

apt-get install vlogger webalizer

 

15 Install Jailkit

Jailkit muss nur installiert werden wenn du  chroot SSH benutzer. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden- es kann nicht anschließend installiert werden!):

apt-get install build-essential autoconf automake1.9 libtool flex bison

 

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
tar xvfz jailkit-2.5.tar.gz
cd jailkit-2.5
./configure
make
make install
cd ..
rm -rf jailkit-2.5*

16 Installieren von fail2ban

das ist  optional aber vorgeschlagen, weil die ISPConfig kontrolle versucht den log anzuzeigen:

apt-get install fail2ban


17 Installieren von SquirrelMail

Um SquirrelMail webmail client zu installieren, starte

apt-get install squirrelmail


dann erstelle den folgenden symlink für squirrelmail und einen für phpmyadmin...

ln -s /usr/share/squirrelmail/ /var/www/webmail
ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin

...und Konfiguriere SquirrelMail:

squirrelmail-configure


Wir müssen  SquirrelMail sagen, das wir Courier-IMAP/-POP3 benutzen:

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Gib ein>>
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
bincimap    = Binc IMAP server
courier     = Courier IMAP server
cyrus       = Cyrus IMAP server
dovecot     = Dovecot Secure IMAP server
exchange    = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx      = Mac OS X Mailserver
mercury32   = Mercury/32
uw          = University of Washington's IMAP server

quit        = Do not change anything
gib ein >>
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
bincimap    = Binc IMAP server
courier     = Courier IMAP server
cyrus       = Cyrus IMAP server
dovecot     = Dovecot Secure IMAP server
exchange    = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx      = Mac OS X Mailserver
mercury32   = Mercury/32
uw          = University of Washington's IMAP server

quit        = Do not change anything
gib ein>> courier

imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true

Press any key to continue...
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Eingabe >>
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Eingabe>>
Anschließend kannst du SquirrelMail unter http://server1.example.com/webmail oder http://192.168.0.100/webmail erreichen:

18 Installation von ISPConfig 3

ISPConfig 3 kann entweder von der letzten erschienen Released verion installiert werden (.tar.gz) oder direkt vom SVN.

Um es von der letzten erschienen Released zu erstellen, gehe wie folgt vor:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
cd ispconfig3_install/install/

(ersetze ISPConfig-3.0.0.9-rc2.tar.gz durch die neuste version.)

Um es von SVN zu installieren, mache folgendes:

apt-get install subversion

 

cd /tmp
svn export svn://svn.ispconfig.org/ispconfig3/trunk/
cd trunk/install

Ohne rücksicht auf die gewählte installationsmethode, muss der folgende schritt gemacht werden:

php -q install.php


dann starten wir den ISPConfig 3 installer:

server1:/tmp/ispconfig3_install/install# php -q install.php
--------------------------------------------------------------------------------
_____ ___________   _____              __ _
|_   _/  ___| ___  /  __             / _(_)
| |  `--.| |_/ / | /  / ___  _ __ | |_ _  __ _
| |  `--.   __/  | |    / _ | '_ |  _| |/ _` |
_| |_/__/ / |     | __/ (_) | | | | | | | (_| |
___/____/_|      ____/___/|_| |_|_| |_|__, |
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration

Operating System: Debian Lenny/Sid or compatible

Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with .
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]:
Installation mode (standard,expert) [standard]:
Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]:
MySQL server hostname [localhost]:
MySQL root username [root]:
MySQL root password []:
MySQL database to create [dbispconfig]:
MySQL charset [utf8]:
Generating a 2048 bit RSA private key
..................................................................................................................+++
.........................................................................................................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []: Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring MyDNS
Configuring Apache
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]:

Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Stopping Courier authentication services: authdaemond.
Starting Courier authentication services: authdaemond.
Stopping Courier IMAP server: imapd.
Starting Courier IMAP server: imapd.
Stopping Courier IMAP-SSL server: imapd-ssl.
Starting Courier IMAP-SSL server: imapd-ssl.
Stopping Courier POP3 server: pop3d.
Starting Courier POP3 server: pop3d.
Stopping Courier POP3-SSL server: pop3d-ssl.
Starting Courier POP3-SSL server: pop3d-ssl.
Restarting web server: apache2 ... waiting .
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -E -A -u 1000 -O clf:/var/log/pure-ftpd/transfer.log -b -B
Installation completed.
server1:/tmp/ispconfig3_install/install#

der installer Konfiguriert alle untergeordneten Services,sodass es keiner manuellen konfiguration bedarf.

Anschließend kannst du  ISPConfig 3 unter http://server1.example.com:8080/ oder http://192.168.0.100:8080/ erreichen. logge dich mit dem benutzernamen admin und dem password admin (Du solltest den Standart nach dem ersten log-in ändern) ein:



Das System kann nun benutzt werden.

19 Links