Das perfekte Setup - Ubuntu Feisty Fawn (Ubuntu 7.04)

Version 1.0
Autor: Falko Timme
Stand: 19.04.2007
Diese Anleitung veranschaulicht, wie man einen Ubuntu-Feisty-Fawn basierten Server (Ubuntu 7.04) einrichtet, der alle Dienste anbietet, die von ISPs und Hostern gebraucht werden: Apache-Webserver (SSL-fähig), Postfix-Mailserver mit SMTP-AUTH und TLS, BIND-DNS-Server, Proftpd-FTP-Server, MySQL-Server, Courier POP3/IMAP, Quota, Firewall, etc. Die Anleitung ist zwar für die 32-Bit Version von Ubuntu-Feisty-Fawn geschrieben - sie sollte aber mit sehr kleinen Modifikationen genausogut für die 64-Bit Version funktionieren.

Ich werde folgende Software benutzen:
  • Webserver: Apache 2.2
  • Datenbankserver: MySQL 5.0
  • Mailserver: Postfix
  • DNS-Server: BIND9
  • FTP-Server: proftpd
  • POP3/IMAP: Ich werde das Maildir-Format nutzen und deshalb Courier-POP3/Courier-IMAP installieren.
  • Webalizer für Webseiten-Statistiken
Das Ziel dieser Anleitung ist, dass man ein betriebssicheres, stabiles System erhält. Jeder der möchte kann sich die kostenlose Server-Verwaltungssoftware ISPConfig herunterladen (z.B. ISPConfig läuft hervorragend).

Allerdings möchte ich an dieser Stelle darauf hinweisen, dass dies hier nicht der einzige Weg ist, ein solches System zu installieren. Es gibt viele Möglichkeiten - ich selbst habe mich für diese entschieden. Ich kann aber nicht garantieren, dass diese Lösung bei jedem funktioniert bzw. für jeden die richtige ist!

1 Voraussetzungen

Um dieses System zu installieren braucht man:
  • eine Ubuntu-Feisty-Fawn-Server-CD
  • eine schnelle Internetverbindung

2 Einleitung

In dieser Installationsanleitung benutze ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und die Schnittstelle 192.168.0.1. Die Einstellungen können für jeden unterschiedlich sein, deshalb muss man sie gegebenenfalls anpassen.

3 Das Basissystem

Zuerst legt man die Ubuntu- Installations-CD ein und bootet von ihr. Man wählt Install to the hard disk:


Die Installation beginnt - zunächst muss man die Sprache wählen:


Jetzt wählt man sein Land:



Nun wählt man ein Layout für die Tastatur:





Der Installer prüft Installations-CD und Hardware und konfiguriert das Netzwerk mit DHCP, wenn ein DHCP-Server vorhanden ist:



Jetzt gibt man den Hostnamen ein. In diesem Beispiel heißt mein System server1.example.com, deshalb gebe ich ein server1:


Jetzt muss man seine Festplatte partitionieren. Der Einfachheit halber werde ich nur eine große Partition erstellen (mit dem Mount-Point /) und eine kleine Swap-Partition. Deshalb wähle ich Guided - use entire disk (natürlich bleibt jedem selbst überlassen, wie er partitioniert - wenn man möchte, kann man statt einer großen Partition auch mehrere erstellen oder LVM benutzen):


Nun wählt man die Festplatte, die man partitionieren möchte:


Wenn man fertig ist und gefragt wird Write the changes to disks? klickt man Yes:

Danach sind die neuen Partitionen erstellt und formatiert:


Nun konfiguriert man die Systemuhr - UTC ist normalerweise eine gute Wahl:


Man erstellt einen Benutzer, z.B. den Benutzer Administrator mit dem Benutzername administrator (hier nicht den Namen admin verwenden - der ist ein reservierter Name auf Feisty-Fawn):





Jetzt wird das Basissystem installiert:



Man braucht einen DNS- und LAMP-Server. Trotzdem wähle ich hier und jetzt nichts davon aus, weil ich die vollständige Kontrolle über das habe möchte, was auf mein System installiert wird. Ich werde die benötigten Pakete deshalb später manuell installierenaber:



Der GRUB-Bootlader wird installiert:


Die Installation des Basissystems ist nun beendet. Jetzt die Installations-CD aus dem CD-Laufwerk nehmen und Continue klicken - das System bootet jetzt neu:



Weiter geht's mit dem nächsten Schritt...

4 Aktivierung des Root-Accounts

Nach dem Reboot loggt man sich mit dem vorher eingegebenen Benutzernamen (z.B. administrator) ein. Da man alle Schritte dieser Installationsanleitung als Root-Benutzer ausführt, muss man jetzt das Root-Account aktivieren.

Diesen Befehl ausführen:

sudo passwd root

Jetzt dem Root-Benutzer ein Passwort geben. Der Benutzer wird zum Root-Benutzer durch diese Eingabe:

su


5 Installation des SSH-Servers

Ubuntu installiert OpenSSH nicht automatisch, deshalb muss man dies nun selbst tun. Dazu diesen Befehl eingeben:

apt-get install ssh openssh-server

Nun wird man aufgefordert, die Installation-CD erneut in das CD-Laufwerk einzulegen.

6 Konfiguration des Netzwerks

Da der Ubuntu-Installer das System so konfiguriert hat, dass es die Netzwerkeinstellungen via DHCP bekommt, muss man das jetzt ändern. Der Grund: Ein Server sollte eine statische IP-Adresse haben. Man editiert /etc/network/interfaces und passt es an die eigenen Bedürfnisse an (in diesem Setup-Beispiel werde ich die IP-Adresse 192.168.0.100 benutzen):

vi /etc/network/interfaces

# 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 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 startet man das Netzwerk neu::

/etc/init.d/networking restart

Dann editiert man /etc/hosts - es sollte so 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 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Jetzt ausführen:

echo server1.example.com > /etc/hostname

und das System rebooten:

shutdown -r now

Danach das ausführen:

hostname
hostname -f

Beides sollte anzeigen: server1.example.com.

Von jetzt an kann man einen SSH-Client, z.B. PuTTY, nutzen und die Arbeitsstation mit dem Ubuntu-Feisty-Fawn-Server verbinden: Dies zeigen die nachfolgenden Schritte dieser Installationsanleitung.

7 Editierung von /etc/apt/sources.list und Update der Linux Installation

Man editiert /etc/apt/sources.list. Nun kommentiert man den Eintrag der Installations-CD aus oder löscht ihn aus der Datei. Dabei muss man sichergehen, dass der universe und multiverse Speicher aktiv sind. Es sollte so aussehen:

vi /etc/apt/sources.list

deb http://de.archive.ubuntu.com/ubuntu/ feisty main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ feisty main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://de.archive.ubuntu.com/ubuntu/ feisty-updates main restricted deb-src http://de.archive.ubuntu.com/ubuntu/ feisty-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## universe WILL NOT receive any review or updates from the Ubuntu security ## team. deb http://de.archive.ubuntu.com/ubuntu/ feisty universe deb-src http://de.archive.ubuntu.com/ubuntu/ feisty universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://de.archive.ubuntu.com/ubuntu/ feisty multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ feisty multiverse ## Uncomment the following two lines to add software from the 'backports' ## repository. ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. # deb http://de.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse # deb-src http://de.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu feisty-security main restricted deb-src http://security.ubuntu.com/ubuntu feisty-security main restricted deb http://security.ubuntu.com/ubuntu feisty-security universe deb-src http://security.ubuntu.com/ubuntu feisty-security universe deb http://security.ubuntu.com/ubuntu feisty-security multiverse deb-src http://security.ubuntu.com/ubuntu feisty-security multiverse
Dann das ausführen:

apt-get update

um die Apt-Paketdatenbank zu aktualisieren und

apt-get upgrade

die letzen Updates zu installieren (wenn es welche gibt).

8 Änderung der voreingestellten Kommandozeile

/bin/sh ist ein Symlink (symbolischer Link) zu /bin/dash, doch man braucht /bin/bash, not /bin/dash. Man ändert dies so:

rm -f /bin/sh
ln -s /bin/bash /bin/sh

Tut man da nicht, wird die ISPConfig-Installation fehlschlagen.

9 Installation von Software

Jetzt installiere ich einige Software-Pakete, die später gebraucht werden. Folgenden Befehl ausführen:

apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev linux-kernel-headers lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++

(Dieser Befehl sollte in eine Zeile passen!)

10 Quota

Achtung: Wenn man ein anderes Partitionsschema gewählt hat als ich, muss man dieses Kapitel entsprechend anpassen, damit die Quota für diese Partition stimmt.

Um die Quota zu installieren, führt man zunächst diesen Befehl aus:

apt-get install quota

Man editiert /etc/fstab. Bei mir sah das so aus (Ich habe ,usrquota,grpquota der Partition mit dem Mount-Point / angehängt):

vi /etc/fstab

# /etc/fstab: static file system information.
# # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # /dev/sda1 UUID=4e83bdf2-ea2b-416c-85b0-ed2c56a19433 / ext3 defaults,errors=remount-ro,usrquota,grpquota 0 1 # /dev/sda5 UUID=2ded13c4-6693-47ca-b1c8-18ebd32dbce9 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Um die Quota zu aktivieren, führt man diese Befehle aus:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

11 DNS Server

Diesen Befehl ausführen:

apt-get install bind9

Aus Sicherheitsgründen möchte ich nun BIND chrooted ausführen, deshalb sind folgende Schritte notwendig:

/etc/init.d/bind9 stop

Nun editiert man die Datei /etc/default/bind9, sodass der Dienst als als unpriviligierter Benutzer bind in /var/lib/named chrooted ausgeführt wird. Jetzt modifiziert man die Zeile OPTIONS="-u bind" in OPTIONS="-u bind -t /var/lib/named":

vi /etc/default/bind9

OPTIONS="-u bind  -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf RESOLVCONF=yes
Nun erstellt man die nötigen Verzeichnisse unter /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Dann verschiebt man das Konfigurationsverzeichnis von /etc nach /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Nun erstellt man einen Symlink (symbolischen Link) zum neuen Konfigurationsverzeichnis vom alten Speicherplatz aus (um Probleme zu vermeiden, wenn BIND später aktualisiert wird):

ln -s /var/lib/named/etc/bind /etc/bind

Jetzt führt man Null- und Random Device aus und stellt dann die Verzeichnisberechtigungen wieder her::

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Man muss /etc/default/syslogd modifizieren, damit wichtige Benachrichtigungen von der System-Log-Datei gemeldet werden: Man modifiziert die Zeile. Man modifiziert die Zeile: SYSLOGD="" in: SYSLOGD="-a /var/lib/named/dev/log":

vi /etc/default/syslogd

#
# Top configuration file for syslogd # # # Full documentation of possible arguments are found in the manpage # syslogd(8). # # # For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-a /var/lib/named/dev/log"
Jetzt den Logging-Daemon neustarten:

/etc/init.d/sysklogd restart

Jetzt BIND starten und /var/log/syslog auf Fehler überprüfen:

/etc/init.d/bind9 start

12 MySQL

Um MySQL zu installieren muss man Folgendes ausführen:

apt-get install mysql-server mysql-client libmysqlclient15-dev

Da MySQL alle Verbindungen empfangen soll - nicht nur den Localhost - muss man /etc/mysql/my.cnf editieren und die Zeile bind-address = 127.0.0.1 auskommentieren:

vi /etc/mysql/my.cnf

[...]
#bind-address = 127.0.0.1 [...]
Nun MySQL neu starten:

/etc/init.d/mysql restart

Jetzt überprüft man, ob das Netzwerk aktiv ist, und führt dann diesen Befehl aus:

netstat -tap

Die Ausgabe sollte eine Zeile wie diese anzeigen:

tcp 0 0 *:mysql *:* LISTEN 22565/mysqld

Nun

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

ausfüheren und für den Benutzer-Root ein Passwort festlegen (sonst hätte jeder freien Zutritt zur MySQL-Datenbank!).

13 Postfix mit SMTP-AUTH und TLS

Um Postfix mit SMTP-AUTH und TLS zu installieren, sind folgende Schritte nötig:

apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail

Es erscheinen zwei Fragen, die man so beantwortet:

General type of configuration? <-- Internet Site Mail name? <-- server1.example.com
Jetzt diesen Befehl ausführen:

dpkg-reconfigure postfix

Nun erscheinen weitere Fragen:

General type of configuration? <-- Internet Site Where should mail for root go <-- [blank] Mail name? <-- server1.example.com Other destinations to accept mail for? (blank for none) <-- server1.example.com, localhost.example.com, localhost.localdomain, localhost Force synchronous updates on mail queue? <-- No Local networks? <-- 127.0.0.0/8 Use procmail for local delivery? <-- Yes Mailbox size limit <-- 0 Local address extension character? <-- + Internet protocols to use? <-- all
Als nächstes dieses eingeben:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Danach erstellt man die Zertifizierung für TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted


mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Nun konfiguriert man Postfix für TLS:

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = server1.example.com'

Die Datei /etc/postfix/main.cf sollte jetzt so aussehen:

cat /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h # TLS parameters smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_use_tls = yes smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
Jetzt Postfix neu starten:

/etc/init.d/postfix restart

Die Authentisierung wird mit saslauthd ausgeführt.Da Postfix in /var/spool/postfix chrooted läuft - und das Programm richtig arbeiten soll - müssen einige Angaben geändert werden:

mkdir -p /var/spool/postfix/var/run/saslauthd

Jetzt /etc/default/saslauthd editieren, um saslauthd zu aktivieren. Jetzt START to yes eingeben und die Zeile: OPTIONS="-c" in: OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" ändern:

vi /etc/default/saslauthd

#
# Settings for saslauthd daemon # # Should saslauthd run automatically on startup? (default: no) START=yes # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c) # See the saslauthd man page for information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" # Note: See /usr/share/doc/sasl2-bin/README.Debian OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Jetzt saslauthd starten:

/etc/init.d/saslauthd start

Um zu überprüfen, ob SMTP-AUTH und TLS richtig funktionieren, gibt man folgenden Befehl ein:

telnet localhost 25

Wenn man die Verbindung zum Postfix-Mailserver hergestellt hat, folgenden Befehl eingeben:

ehlo localhost

Wenn man jetzt die Zeilen

250-STARTTLS

und

250-AUTH PLAIN LOGIN

sieht, hat alles geklappt!.

Die Anzeige auf meinem System sah so aus:

root@server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Jetzt

quit

eingeben, um zur Eingabeaufforderung zurückzukehren.

14 Courier-IMAP/Courier-POP3

Für die Installation von Courier-IMAP/Courier-IMAP-SSL (für IMAPs auf dem Port 993) und Courier-POP3/Courier-POP3-SSL (für POP3s auf dem Port 995) sind folgende Eingaben nötig:

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Es erscheinen zwei Fragen:

Create directories for web-based administration ? <-- No SSL certificate required <-- Ok
Wenn man ISPConfig nicht benutzen möchte, konfiguriert man Postfix, um die Emails an ein Email-Verzeichnis des Benutzers umzuleiten*:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

*Achtung: Dies muss man nicht machen, wenn man ISPConfig auf seinem System nutzen möchte - ISPConfig führt die nötige Konfiguration selbst aus, in dem es Procmail-Rezepte nutzt. Man sollte vorher sichergehen, dass Maildir aktiviert ist und zwar unter Management -> Server -> Settings -> EMail im ISPConfig-Web-Interface.

15 Apache/PHP5

Jetzt wird Apache installiert:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Jetzt wird die PHP5 installiert:

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Es erscheinen diese beiden Fragen:

Continue installing libc-client without Maildir support? <-- Yes
Nun editiert man /etc/apache2/mods-available/dir.conf:

vi /etc/apache2/mods-available/dir.conf

und ändert die Zeile DirectoryIndex:
<IfModule mod_dir.c>
#DirectoryIndex index.html index.cgi index.pl index.php index.xhtml DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml </IfModule>
Nun /etc/apache2/ports.conf editiern und Listen 443 hinzufügen:

vi /etc/apache2/ports.conf

Listen 80
Listen 443
Jetzt muss man einige Apache-Module (SSL, rewrite, suexec, und include) aktivieren:

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Jetzt die Apache-Konfiguration neu starten:

/etc/init.d/apache2 force-reload


15.1 Deaktivierung von PHP

(Wenn man ISPConfig nicht auf dem Server installieren möchte, kann man diesen Abschnitt überspringen!)

Mit ISPConfig kann man PHP auf jeder einzelnen Website konfigurieren, d.h. man kann genau festlegen, welche Website mit PHP und welche ohne konfiguriert wird. Dies funktioniert nur, wenn PHP zunächst generell deaktiviert wird. Sonst würden alle Websites mit PHP ausgeführt werden - ungeachtet der zuvor spezifizierten Eingaben in der ISPConfig .

Um PHP ganz zu deaktiviern, editiert man /etc/mime.types und kommentiert die Zeile application/x-httpd-php aus:

vi /etc/mime.types

[...]
#application/x-httpd-php phtml pht php #application/x-httpd-php-source phps #application/x-httpd-php3 php3 #application/x-httpd-php3-preprocessed php3p #application/x-httpd-php4 php4 [...]
Jetzt/etc/apache2/mods-enabled/php5.conf editieren und die folgenden Zeilen auskommentieren:

vi /etc/apache2/mods-enabled/php5.conf

<IfModule mod_php5.c>
# AddType application/x-httpd-php .php .phtml .php3 # AddType application/x-httpd-php-source .phps </IfModule>
Jetzt Apache neustarten:

/etc/init.d/apache2 restart


16 Proftpd

Um Proftpd zu installieren, dies ausführen:

apt-get install proftpd ucf

Es erscheint folgende Frage:

Run proftpd from inetd or standalone? <-- standalone
Jetzt /etc/proftpd/proftpd.conf öffnen und UseIPv6 von on in off ändern, - sonst erhält man eine Warnmeldung wie diese, sobald man Proftpd startet:

- IPv6 getaddrinfo 'server1.example.com' error: Name or service not known

vi /etc/proftpd/proftpd.conf

[...]
UseIPv6 off [...]
Aus Sicherheitsgründen kann man auch die folgende Zeile/etc/proftpd/proftpd.conf hinzufügen (Dank sei Reinaldo Carvalho! Weitere Informationen gibt es unter: http://proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd/proftpd.conf

[...]
DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...]
ISPConfig geht davon aus, dass die Konfiguration in /etc/proftpd.conf statt in /etc/proftpd/proftpd.conf gespeichert ist, deshalb muss man nun einen Symlink (symbolischern Link) erstellen (Wenn man ISPConfig nicht installieren möchte, kann man diesen Abschnitt überspringen):

ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf

Jetzt Proftpd starten:

/etc/init.d/proftpd restart

17 Webalizer

Um webalizer zu installieren, jetzt dies ausfüheren:

apt-get install webalizer


18 Synchronisierung der Systemuhr

Es ist gut, die Systemuhr über das Internet mit einem NTP-Server (Network Time Protocol) abzugleichen. Dafür dies ausführen:

apt-get install ntp ntpdate

Jetzt ist die Systemuhr dauerhaft synchronisiert.

19 Installieren von Perl-Modulen für SpamAssassin (Mit ISPConfig)

Das ausführen:

apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl


20 ISPConfig

Jetzt ist die Konfiguration auf dem Server abgeschlossen - wenn man möchte, kann man ISPConfig nun installieren. Hierfür sollte man die ISPConfig-Installationsanleitung beachten - siehe: http://www.ispconfig.org/manual_installation.htm

20.1 Anmerkung zu SuExec

Möchte man CGI-Scripts unter suExec ausführen, sollte man /var/www als Grundverzeichnis für Websites spezifizieren, die von ISPConfig erstellt werden und als Debian-suExec mit dem Pfad /var/www als Doc_Root kompiliert sind. Erst dies ausführen:

/usr/lib/apache2/suexec -V

Jetzt sollte der Output so aussehen:

root@server1:~# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"

Sofern man ISPConfig nicht im Expertmodus installiert und den voreingestellten Web-Root (der /var/www lautet) verändert, kann man CGI-Scripts unter suExec mit ISPConfig ausführen. Der nächste Screenshot zeigt eine ISPConfig-Installation im Expertenmodus. Wenn man ISPConfig verwenden möchte, darf man den voreingestellten Web-Root nicht ändern:

21 Links

 

Copyright © 2007 Falko Timme

All Rights Reserved.