Das Perfekte Setup - Mandriva 2006 Free Edition

Version 1.0 Author: Falko Timme Last edited: 11/29/2005
Diese Anleitung veranschaulicht Schritt für Schritt wie man einen Mandriva 2006 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.0.x
  • Mail Server: Postfix (einfacher zu konfigurieren als sendmail; hat eine kürzere Geschichte an Sicherheitslöchern als sendmail)
  • 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. Wenn Du magst, kannst Du das kostenlose Webhosting Control Panel ISPConfig installieren.
Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt 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!
Voraussetzungen
Um ein solches System zu installieren, wirst Du Folgendes benötigen:

1 Das Basissystem

Starte von Deiner Mandriva 2006 CD (CD 1). Drücke Enter um die Installation zu starten:

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:

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







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

Wähle None und klicke auf Next:

Nun müssen wir die Paketgruppen auswählen, die wir installieren wollen. Wähle Internet station, Network Computer (client), Configuration, Console Tools, Development, Web/FTP, Mail, Database, Firewall/Router und Network Computer server und klicke auf Next:


Die Paketinstallation startet:

Weise root ein Passwort zu:

Richte einen weiteren Benutzer ein (z.B. admin):

Nun liefert 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 (falls Du keine US-Tastatur hast...):


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

Wähle Hardware clock set to GMT und Automatic time synchronization (using NTP):

Wähle einen NTP Server aus:


Letzendlich ändern wir die Network - lan Einstellungen. Wähle LAN connection es sei denn, Du verwendest etwas anderes:

Wähle das Netzwerk Interface aus, das Du konfigurieren möchtest (normalerweise eth0):

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

Gib nun die IP Adresse und eine Netzmaske ein:


Gib den Hostnamen (z.B. server1.example.com), bis zu drei DNS Server (z.B. 145.253.2.75 und 193.174.32.18) und das Gateway ein:

Du kannst das Feld Zeroconf Host name frei lassen:

Erlaube Benutzern nicht, die Verbindung zu starten. Es ist ein Server, und Server sind immer online (zumindest sollten sie das sein...):


Nun haben wir die notwendige Konfiguration vorgenommen. Also können wir den Summary Screen verlassen indem wir auf Next klicken:


Wir möchten  X nicht konfigurieren, da wir auf einem Server keinen Desktop laufen lassen wollen:

Nun kannst Du die neusten Updates runter laden:

Die Installation ist nun abgeschlossen, Du kannst die CD oder DVD nun entfernen und das System neu starten:

Weiter mit der Systemkonfiguration...

2 Installation und Konfiguration des restlichen Systems

Merke: Dieser Anleitung folgst Du am einfachstenn, wenn Du einen SSH Client (wie PuTTY für Windows) verwendest und die Befehle einfach kopierst und einfügst (außer wenn Du eigene Angaben machen musst, wie IP Adressen, Hostnamen, Passwörter,...).
Konfiguration zusätzlicher IP Adressen
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:
DEVICE=eth0
BOOTPROTO=static IPADDR=192.168.0.100 NETMASK=255.255.255.0 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 ONBOOT=yes METRIC=10 MII_NOT_SUPPORTED=no USERCTL=no IPV6INIT=no IPV6TO4INIT=no PEERDNS=yes NETMASK=255.255.255.0 IPADDR=192.168.0.100
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:
DEVICE=eth0:0
BOOTPROTO=static IPADDR=192.168.0.101 NETMASK=255.255.255.0 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 ONBOOT=yes METRIC=10 MII_NOT_SUPPORTED=no USERCTL=no
Danach müssen wir das Netzwerk neu starten:
/etc/init.d/network restart
Den Hostnamen einrichten

Das ist nicht notwendig, wenn Du während der Installation den richtigen Hostnamen eingerichtet hast. Wenn nicht, führe Folgendes aus:
echo server1.example.com > /etc/hostname /bin/hostname -F /etc/hostname
Konfiguriere urpmi
Um herauszufinden, wie urpmi konfiguriert wird, so dass es Online-Paketdatenbanken verwendet, kannst Du den Wizard auf http://easyurpmi.zarb.org/ verwenden. Bei mir hat der Wizard diese Befehle angegeben, die ich in der Kommandozeile ausführe:
urpmi.addmedia plf-free http://distrib-coffee.ipsl.jussieu.fr/pub/linux/plf/mandriva/free/2006.0/i586 with hdlist.cz
urpmi.addmedia --update updates ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/updates/2006.0/main_updates/ with media_info/hdlist.cz
urpmi.addmedia main ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/2006.0/i586/media/main with media_info/hdlist.cz
urpmi.addmedia contrib ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/2006.0/i586/media/contrib with media_info/hdlist.cz

Nun erstellen wir ein Skript /etc/cron.daily/software_update das automatisch von cron jeden Tag ausgeführt wird und die nach den neusten Software Updates sucht und diese auf Deinem Mandriva 2006 System installiert. Das Skript sieht wie folgt aus:
#!/bin/bash
urpmi.update updates urpmi ––auto ––update ––auto-select
Mach das Skript ausführbar:
chmod 755 /etc/cron.daily/software_update
Installiere einige Software-Pakete
urpmi fetchmail wget bzip2 unzip zip nmap openssl lynx fileutils ncftp flex libxorg-x11-devel Quota
urpmi quota
Bearbeite /etc/fstab so dass es wie folgt aussieht (ich habe ,usrquota,grpquota der Partition mit dem mount point / hinzugefügt):
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/hda6 / ext3 defaults,usrquota,grpquota 1 1 /dev/hda1 /boot ext3 defaults 1 2 /dev/hdb /mnt/cdrom auto umask=0,user,iocharset=iso8859-1,codepage=850,noauto,ro,exec,users 0 0 none /proc proc defaults 0 0 /dev/hda5 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
DNS-Server
urpmi bind
In dem Manadrake BIND Paket fehlen einige Dateien (z.B. /etc/named.conf), daher wird BIND nicht starten wenn Du Folgendes ausführst
/etc/init.d/named start
Darüber brauchst Du Dir keine Sorgen machen, da alle benötigten Dateien von ISPConfig erstellt werden, sobald Du Deinen ersten  DNS Eintrag mit ISPConfig erstellst.
MySQL (4.1)
urpmi MySQL MySQL-client libmysql14-devel
/etc/init.d/mysqld start
Überprüfe nun, ob der Netzwerkbetrieb aktiviert ist. Führe dies aus
netstat -tap
Es sollte eine Zeile wie diese angezeigt werden:
tcp        0      0 *:mysql                 *:*                     LISTEN      6621/mysqld
Wenn nicht, bearbeite /etc/sysconfig/mysqld und entferne --skip-networking aus der Variable MYSQLD_OPTIONS:
# (oe) Remove --skip-networking to enable network access from
# non local clients. Access from localhost will still work. MYSQLD_OPTIONS="" # (oe) set TMPDIR and TMP environment variables TMPDIR="${datadir}/.tmp" TMP="${TMPDIR}"
und starte Deinen MySQL Server neu:
/etc/init.d/mysqld restart
Führe Folgendes aus
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

um ein Passwort für den Benutzer root anzulegen (sonst kann jeder auf Deine MySQL Datenbank zugreifen!).
Postfix mit SMTP-AUTH und TLS
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

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/postfix/sasl/smtpd.conf. So sollte es aussehen:
# 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/sasldb2
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

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, dann ist alles in Ordnung.

Tippe
quit
um zur Kommandozeile des Systems zurückzukehren.
Apache2 With PHP5
urpmi apache2-mod_php libphp5_common5 php-bz2 php-calendar php-ctype php-curl php-date_time 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 (1 Zeile!)
Wenn Du dies siehst:
Missing signature ((no key found) OK)
Do you want to continue installation ? (y/N)

ist es sicher zu antworten: y.
Jetzt müssen wir PHP global deaktivieren, da wir ISPConfig später installieren möchten. In ISPConfig kannst Du PHP pro Webseite aktivieren/deaktivieren. Wenn Du PHP nicht jetzt global deaktivierst, wird PHP immer aktiviert sein, egal was Du in ISPconfig definierst! Wenn Du ISPConfig nicht installieren möchtest, dann bist Du mit der Apache/PHP5 Installation und Konfiguration jetzt fertig!
Bearbeite  /etc/httpd/modules.d/70_mod_php.conf und kommentiere die AddType Zeilen aus:
<IfDefine HAVE_PHP5>
<IfModule !mod_php5.c> LoadModule php5_module extramodules/mod_php5.so </IfModule> </IfDefine> <IfModule mod_php5.c> PHPINIDir /etc </IfModule> <IfModule mod_mime.c> # AddType application/x-httpd-php .php # AddType application/x-httpd-php .php3 # AddType application/x-httpd-php .php4 # AddType application/x-httpd-php .php5 # 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 index.php3 index.php4 index.php5 </IfModule> </IfModule>
Bearbeite /etc/httpd/conf/mime.types und kommentiere folgende Zeilen aus:
#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:
LoadModule php5_module    extramodules/mod_php5.so
(Obwohls sich diese Zeile bereits in /etc/httpd/modules.d/70_mod_php.conf befindet, ist dies 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!)
(Merke: Wenn Du ISPConfig 2.1.1 oder frühere Versionen installieren wirst, möchtest Du vielleicht auch
<Directory /var/www/sharedip>
Options +Includes -Indexes AllowOverride None AllowOverride Indexes AuthConfig Limit FileInfo Order allow,deny Allow from all <Files ~ "^.ht"> Deny from all </Files> </Directory>
am Ende von /etc/httpd/conf/httpd.conf einfügen, obwohl dies nicth notwendig ist.)
Starte Apache neu:
/etc/init.d/httpd restart
Proftpd
urpmi proftpd
/etc/init.d/proftpd start

Aus Sicherheitsgründen kannst Du folgende Zeilen /etc/proftpd.conf hinzufügen (Dank an Reinaldo Carvalho; nähere Informationen findest Du hier: http://proftpd.linux.co.uk/localsite/Userguide/linked/userguide.html):
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>
und starte Proftpd neu:
/etc/init.d/proftpd restart
Webalizer
Um Webalizer zu installieren, führe einfach Folgendes aus
urpmi webalizer
Installiere einige Perl Module, die von SpamAssassin (in ISPConfig) benötigt werden
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 Das Ende
Die Konfiguration des Servers ist nun abgeschlossen. Wenn Du magst, kannst Du nun ISPConfig installieren.
Eine Notiz über SuExec
Wenn Du CGI Skripte unter suExec ausführen möchtest, solltest Du /var/www als das Home Verzeichnis für Webseiten festlegen, die von ISPConfig erstellt werden, da Mandrivas suExec mit  /var/www as Doc_Root erstellt wird. Führe /usr/sbin/suexec -V aus und die Ausgabe sollte wie folgt aussehen:

Um /var/www als das Home Verzeichnis für Webseiten während der Installation von ISPConfig auszuwählen, führe Folgendes aus: Wenn Du nach dem Installationsmodus gefragt wirst, wähle den expert mode.

Während der Installation wirst Du gefragt, ob das Standardverzeichnis /home/www das Verzeichnis sein soll, in dem ISPConfig Webseiten erstellen wird. Antworte mit  n und gib /var/www als das Home Verzeichnis für Webseiten ein.

Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte