Das Perfekte Setup - Mandriva 2007 Free Edition

Version 1.1
Author: Falko Timme


Diese Anleitung veranschaulicht Schritt für Schritt, wie man einen Mandriva 2007 Free Edition basierten Server einrichtet, der alle Dienste bietet, die von ISPs und Hostern benötigt werden (Web Server (SSL-fähig), Mail Server (mit SMTP-AUTH und TLS!), DNS Server, FTP Server, MySQL Server, POP3/IMAP, Quota, Firewall, etc.).

Folgende Software werde ich verwenden:
  • Web Server: Apache 2
  • Mail Server: Postfix
  • DNS Server: BIND9
  • FTP Server: proftpd
  • POP3/IMAP server
  • Webalizer für Webseiten Statistiken
Am Ende erhältst Du ein System, das zuverlässig arbeitet und für die Installation des kostenlosen Webhosting Control Panels ISPConfig bereit ist.

Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es git viele Möglichkeiten, dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

In diesem Beispiel werde ich folgende Einstellungen für mein System verwenden:
  • IP Adresse: 192.168.0.100, gateway: 192.168.0.1
  • Hostname: server1.example.com
Deine Einstellungen werden von meinen abweichen, also musst Du wahrscheinlich die Instruktionen dieser Anleitung anpassen müssen.

2 Voraussetzungen

Um ein solches System zu installieren, wirst Du Folgendes benötigen:

3 Das Basissystem

Starte mit Deiner Mandriva 2007 CD (CD 1). Wähle Installation und drücke Enter:


Wähle als Nächstes Deine Sprache:


Akzeptiere den Lizenzvertrag und klicke auf Next:


Wähle Standard als das Security level und lass das Feld Security Administrator frei:


Jetzt müssen wir unsere Festplatte partitionieren. Du kannst entweder den Mandriva Installer die Partitionierung überlassen oder Du kannst sie selbst vornehmen. Ich möchte eine kleine /boot Partition (ungefähr 150 MB) mit dem Dateisystem ext3, eine swap Partition und eine große / Partition (wieder mit ext3) erstellen:









Klicke auf Next wenn Du alle vier CDs der Mandriva Download Edition hast:


Nun wählen wir die Paketgruppen aus, die wir installieren wollen. Wähle Internet station, Network Computer (client), Configuration, Console Tools, Development, Web/FTP, Mail, Database, Firewall/Router and Network Computer server, entferne die Markierung der andern Paketgruppen und klicke auf Next:



Die Paketinstallation startet:


Gib danach ein root Passwort ein:


Richte einen anderen Benutzer (z.B. admin) ein und klicke auf Accept user:


Um nicht noch einen Benutzer anzulegen, klicke auf dem nächsten Screen auf Next:


Entferne die Markierung von Autologin, da wir einen Server installieren, keinen Desktop (wir möchten keine grafische Benutzeroberfläche installieren):


Nun präsentiert uns der Installer eine Zusammenfassung der Installation und bietet uns die Möglichkeit, Einstellungen zu ändern, indem wir auf das entsprechende Configure Feld klicken. Zunächst einmal passen wir unser Tastaturlayout an (wenn Du keine US-Tastatur hast...):



Klicke auf More um Dir eine Liste aller verfügbaren Tastaturlayouts anzeigen zu lassen, wähle dann das entsprechende Layout und klicke auf Next:



Als Nächstes konfigurieren wir die Zeitzone, in der wir uns befinden:


Wähle auf dem nächsten Screen hardware clock set to UTC, Automatic time synchronization (using NTP) und für NTP Server wähle All servers:


Schließlich ändern wir unsere Netzwerkeinstellungen. Klicke auf das Configure Feld neben Network - ethernet:


Wähle Ethernet es sei denn Du verwendest etwas anderes:


Wähle das Netzwerk Interface aus, welches Du konfigurieren möchtest:


Wir möchten unserem Netzwerk Interface eine statische IP Adresse zuweisen (vergiss nicht, wir installieren einen Server...), also möchten wir IP Adressen nicht via BOOTP oder DHCP beziehen. Daher wählen wir Manual configuration:


Gib nun die IP address, Netmask und Gateway ein. Gib außerdem den Hostnamen (z.B. server1.example.com) und bis zu zwei DNS Server (z.B. 145.253.2.75 und 193.174.32.18) ein:


Erlaube Benutzern nicht, die Verbindung zu starten. Es ist ein Server und Server sind immer online (zumindest sollten sie das sein...). Aber wähle Start the connection at boot:


Starte jetzt die Netzwerk-Verbindung:




Wir haben nun die notwendige Konfiguration vorgenommen, also können wir den Summary Screen verlassen indem wir auf Next klicken:


Nun kannst Du die neusten Updates runter laden. Bitte beachte: dies ist optional. In einer meiner Testinstallationen hatte ich Probleme mit der Update Funktion (vielleicht ein Problem mit einem nicht antwortenden Update Server?), was bewirkte, dass der Installer Ewigkeiten hing. Mir blieb nur noch ein Reset. Wenn Du sicher gehen willst, wähle hier No.


Wenn Du ein online Update vornimmst, wähle einen Spiegel in Deiner Nähe aus:


Die Grundinstallation ist nun abgeschlossen. Du kannst die CD entfernen und das System neu starten:


Weiter mit der Systemkonfiguration...

4 /etc/hosts anpassen

Als Nächstes bearbeiten wir /etc/hosts. So soll es aussehen:

vi /etc/hosts


127.0.0.1               localhost.localdomain localhost
192.168.0.100 server1.example.com server1

5 Konfiguration weiterer IP Adressen

(Dieser Schritt ist vollkommen optional und ist nur notwendig, wenn Du Deinem Netzwerk Interface eth0! weitere IP Adressen hinzufügen möchtest)

Gehen wir davon aus, dass unser Netzwerk Interface eth0 ist. Dann gibt es eine Datei /etc/sysconfig/network-scripts/ifcfg-eth0 die wie folgt aussieht:

vi /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0
BOOTPROTO=static IPADDR=192.168.0.100 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 ONBOOT=yes METRIC=10 MII_NOT_SUPPORTED=no USERCTL=no MS_DNS1=145.253.2.75 MS_DNS2=193.174.32.18 RESOLV_MODS=yes IPV6INIT=no IPV6TO4INIT=no
Nun möchten wir das virtuelle Interface eth0:0 mit der IP Adresse 192.168.0.101 erstellen. Wir müssen lediglich die Datei /etc/sysconfig/network-scripts/ifcfg-eth0:0 erstellen, die wie folgt aussieht:

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0


DEVICE=eth0:0
BOOTPROTO=static IPADDR=192.168.0.101 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 ONBOOT=yes METRIC=10 MII_NOT_SUPPORTED=no USERCTL=no MS_DNS1=145.253.2.75 MS_DNS2=193.174.32.18 RESOLV_MODS=yes IPV6INIT=no IPV6TO4INIT=no
Danach müssen wir das Netzwerk neu starten:

/etc/init.d/network restart

Du möchtest vielleicht außerdem /etc/hosts anpassen, nachdem Du neue IP Adressen hinzugefügt hast, obwohl das nicht notwendig ist.

6 Den Hostnamen einrichten

(Dieser Schritt ist ebenfalls optional.)

Dies ist nicht notwendig, wenn Du während der Installation den richtigen Hostnamen eingerichtet hast. Den derzeitigen Hostnamen kannst Du mit folgenden Befehlen überprüfen

hostname
hostname -f

Wenn die Ausgabe einen falschen Hostnamen anzeigt, kannst Du den richtigen wie folgt einrichten:

echo server1.example.com > /etc/hostname
/bin/hostname -F /etc/hostname

7 urpmi konfigurieren

Du kannst den Wizard auf http://easyurpmi.zarb.org/ verwenden, um herauszufinden, wie man urpmi konfiguriert, damit urpmi online Paketdatenbanken verwendet. Bei mir hat der Wizard folgende Befehle zurückgegeben, die ich in der Kommandozeile ausführe:

urpmi.addmedia main ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/devel/2007.0/i586/media/main/release with media_info/hdlist.cz
urpmi.addmedia contrib ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/devel/2007.0/i586/media/contrib/release with media_info/hdlist.cz

Jetzt erstellen wir ein Skript /etc/cron.daily/software_update, das von Cron automatisch jeden Tag ausgeführt wird und nach den neusten Software Updates sucht und sie auf Deinem Mandriva 2007 System installiert. Das Skript sieht wie folgt aus:

vi /etc/cron.daily/software_update


#!/bin/bash
urpmi.update updates urpmi --auto --update --auto-select
Mach das Skript ausführbar:

chmod 755 /etc/cron.daily/software_update


8 Installation einiger Software-Pakete

Nun installieren wir einige Pakete, die wir später benötigen:

urpmi fetchmail wget bzip2 unzip zip nmap openssl lynx fileutils ncftp flex libxorg-x11-devel gcc gcc-c++


9 Quota

Um das Quota-Paket zu installieren, führe Folgendes aus

urpmi quota

Bearbeite /etc/fstab so dass es wie folgt aussieht (ich habe ,usrquota,grpquota der Partition mit dem mount point / hinzugefügt):

vi /etc/fstab


/dev/sda6 / ext3 defaults,usrquota,grpquota 1 1
/dev/sda1 /boot ext3 defaults 1 2 /dev/hdc /mnt/cdrom auto umask=0,users,iocharset=utf8,noauto,ro,exec 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0,iocharset=utf8,sync 0 0 none /proc proc defaults 0 0 /dev/sda5 swap swap defaults 0 0
Führe dann dies aus:

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

10 DNS Server

Um den BIND DNS Server zu installieren, führe Folgendes aus:

urpmi bind

Mandriva 2007s BIND wird standardmäßig chrooted ausgeführt, daher müssen wir einige Symlinks erstellen, damit ISPConfig (wenn Du es installieren möchtest) es bewältigen kann:

cd /var/lib/named/var
mkdir -p lib/named/var
cd lib/named/var
ln -s ../../../named/ named
ln -s ../../../run/ run

Starte dann BIND:

/etc/init.d/named start


11 MySQL (5.0)

Um MySQL 5.0 zu installieren, führen wir einfach dies aus:

urpmi MySQL MySQL-client libmysql15-devel

Der Netzwerkbetrieb ist in Mandriva 2007s MySQL Paket standardmäßig nicht aktiviert, wird von ISPConfig aber verlangt. Wir können das ändern, indem wir die Zeile skip-networking in /etc/my.cnf auskommentieren:

vi /etc/my.cnf


[...]
# Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking [...]
Danach starten wir MySQL:

/etc/init.d/mysqld start

Überprüfe nun, ob der Netzwerkbetrieb aktiviert ist. Führe Folgendes aus

netstat -tap

Eine Zeile ähnlich wie diese sollte angezeigt werden:
[...]
tcp 0 0 *:mysql *:* LISTEN 4609/mysqld [...]
Führe als Nächstes dies aus

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

um für den Benutzer root ein Passwort anzulegen (sonst kann jeder auf Deine MySQL Datenbank zugreifen!).

12 Postfix mit SMTP-AUTH und TLS

Installiere die benötigten Pakete (Postfix, cyrus-sasl, imap, etc.) wie folgt:

urpmi cyrus-sasl libsasl2 libsasl2-devel libsasl2-plug-plain libsasl2-plug-anonymous libsasl2-plug-crammd5 libsasl2-plug-digestmd5 libsasl2-plug-gssapi libsasl2-plug-login postfix imap

Führe dann dies aus

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'
postconf -e 'mydomain = example.com'
postconf -e 'myhostname = server1.$mydomain'
postconf -e 'mydestination = /etc/postfix/local-host-names, localhost.example.com'
touch /etc/postfix/local-host-names

Bearbeite /etc/sasl2/smtpd.conf. So sollte es aussehen:

vi /etc/sasl2/smtpd.conf


# SASL library configuration file for postfix
# all parameters are documented into: # /usr/share/doc/cyrus-sasl-2.*/options.html # The mech_list parameters list the sasl mechanisms to use, # default being all mechs found. mech_list: plain login # To authenticate using the separate saslauthd daemon, (e.g. for # system or ldap users). Also see /etc/sysconfig/saslauthd. pwcheck_method: saslauthd saslauthd_path: /var/lib/sasl2/mux # To authenticate against users stored in sasldb. #pwcheck_method: auxprop #auxprop_plugin: sasldb #sasldb_path: /var/lib/sasl2/sasl.db
Erstelle das SSL Zertifikat, das für TLS benötigt wird:

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

und konfiguriere 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'

Starte nun Postfix, saslauthd, imap und pop3:

chkconfig imap on
chkconfig imaps on
chkconfig ipop3 on
chkconfig pop3s on
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
/etc/init.d/xinetd restart

Um herauszufinden, ob SMTP-AUTH und TLS richtig funktionieren, führe nun folgenden Befehl aus:

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server aufgebaut hast, tippe

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und

250-AUTH

siehst, ist alles in Ordnung.


Tippe

quit

um zu der Kommandozeile des Systems zurückzukehren.

13 Apache2 mit PHP5

Um Apache2 und PHP5 zu installieren, führe folgenden Befehl aus (in einer Zeile):

urpmi apache2-mod_php libphp5_common5 php-bz2 php-calendar php-ctype php-curl php-devel php-dio php-dom php-eaccelerator php-enchant php-esmtp php-event php-exif php-fam php-ffmpeg php-fileinfo php-filepro php-ftp php-gd php-gettext php-gmp php-iconv php-id3 php-idn php-imap php-imlib2 php-mailparse php-mbstring php-mcache php-mcrypt php-mhash php-ming php-mysql php-mysqli php-ncurses php-newt php-odbc php-oggvorbis php-pam_auth php-pcntl php-pcre php-pear-Net_IDNA php-posix php-pspell php-readline php-recode php-session php-shmop php-simplexml php-snmp php-soap php-sockets php-sqlite php-ssh2 php-sysvmsg php-sysvsem php-sysvshm php-tclink php-tcpwrap php-tidy php-xml php-xmlrpc php-zip php5-ini curl libcurl3-devel perl-libwww-perl ImageMagick

Starte Apache:

/etc/init.d/httpd restart

13.1 PHP global deaktivieren

(Wenn Du nicht vorhast ISPConfig auf diesem Server zu installieren, überspringe bitte diesen Abschnitt!)

In ISPConfig wirst Du PHP pro Web Site konfigurieren, d.h. Du kannst festlegen, welche Web Site PHP Skripte ausführen kann und welche nicht. Das funktioniert nur, wenn PHP global deaktiviert ist, da sonst alle Web Sites in der Lage wären, PHP Skripte auszuführen, egal was Du in ISPConfig festlegst.

Bearbeite /etc/httpd/modules.d/70_mod_php.conf und kommentiere die AddType Zeilen aus:

vi /etc/httpd/modules.d/70_mod_php.conf


<IfDefine HAVE_PHP5>
<IfModule !mod_php5.c> LoadModule php5_module extramodules/mod_php5.so </IfModule> </IfDefine> <IfModule mod_mime.c> # AddType application/x-httpd-php .php # AddType application/x-httpd-php .phtml # AddType application/x-httpd-php-source .phps </IfModule> <IfModule mod_php5.c> <IfModule mod_dir.c> DirectoryIndex index.php index.phtml </IfModule> </IfModule>
Bearbeite /etc/httpd/conf/mime.types und kommentiere die folgenden Zeilen aus:

vi /etc/httpd/conf/mime.types


[...]
#application/x-perl perl pl #application/x-php php php3 php4 [...]
Bearbeite /etc/httpd/conf/httpd.conf und füge folgende Zeile dem LoadModule Bereich hinzu:

vi /etc/httpd/conf/httpd.conf


[...]
LoadModule php5_module extramodules/mod_php5.so [...]
(Obwohl sich dieses Zeile bereits in /etc/httpd/modules.d/70_mod_php.conf befindet, ist das sehr wichtig, da sonst der Befehl

httpd -t

Fehler anstelle von Syntax OK anzeigt, wenn die virtuellen Hosts, die von ISPConfig erstellt werden, Zeilen wie php_admin_flag safe_mode On oder ähnliche enthalten!)

Starte Apache neu:

/etc/init.d/httpd restart


14 Proftpd

Installiere Proftpd wie folgt:

urpmi proftpd

Wenn Du Folgendes siehst:

One of the following packages is needed:
1- proftpd-mod_wrap_file-1.3.0-4mdv2007.0.i586 : A file-specific driver for the mod_wrap module for ProFTPD (to install)
2- proftpd-mod_wrap_sql-1.3.0-4mdv2007.0.i586 : A SQL database driver for the mod_wrap module for ProFTPD (to install)

gib ein 1.

Aus Sicherheitsgründen kannst Du folgende Zeilen /etc/proftpd.conf hinzufügen (Dank an Reinaldo Carvalho; nähere Informationen findest Du hier: http://www.proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd.conf


[...]
DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...]
Pass auf, dass Du folgende Zeilen in /etc/proftpd.conf auskommentierst, um ftp Benutzern CHMOD zu erlauben:
[...]
## Bar use of SITE CHMOD by default #<Limit SITE_CHMOD> # DenyAll #</Limit>
Starte dann Proftpd neu:

/etc/init.d/proftpd restart


15 Webalizer

Mandriva 2007 hat kein Webalizer Paket mehr, daher installieren wir das statische Webalizer Binärpaket von der Webalizer Webseite wie folgt:

cd /tmp
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-static.gz
gunzip webalizer-2.01-10-static.gz
mv webalizer-2.01-10-static /usr/bin/webalizer
chmod 755 /usr/bin/webalizer

16 Installation einiger Perl Module, die SpamAssassin (in ISPConfig) benötigt

Um alle benötigten Perl Module zu installieren, können wir die entsprechenden Mandriva Pakete verwenden und sie mit Hilfe von urpmi installieren:

urpmi perl-HTML-Parser perl-Digest-SHA1 perl-DB_File perl-Net-DNS


17 Das Ende

Die Konfiguration des Servers ist nun abgeschlossen. Wenn Du magst, kannst Du jetzt ISPConfig installieren.

18 Eine Notiz über SuExec

Wenn Du CGI Skripte unter suExec ausführen möchtest, solltest Du /var/www als den Web Root für Web Sites festlegen, die von ISPConfig erstellt werden, da CentOS' suExec mit /var/www als Doc_Root erstellt wird. Führe Folgendes aus

/usr/sbin/suexec -V

und die Ausgabe sollte wie folgt aussehen:


Sofern Du ISPConfig nicht im Expertenmodus installierst und den Standard-Web-Root änderst (/var/www), kannst Du CGI Skripte unter suExec mit ISPConfig ausführen.

19 Links