The Perfect Server - OpenSUSE 11.1 [ISPConfig 3]

Version 1.0

Autor: Till Brehm <t [dot] brehm [at] ispconfig [dot] com>, Falko Timme



Das ist eine ausführliche Anleitung darüber wie man einen OpenSUSE 11.1 64bit (x86_64) Server einrichtet, der alle von ISPs und Hostern benötigte Dienste bietet: Apache Webserver (SSL-fähig) mit PHP, CGI und SSI Unterstützung, Postfix Mailserver mit SMTP-AUTH, TLS und virtuellen Mailbenutzern, MyDNS DNS Server, Pureftpd FTP Server, MySQL Server, Courier POP3/IMAP, Quota, Firewall, usw.

Ich werde folgende Software benutzen:
  • Webserver: Apache 2.2 mit PHP 5.2
  • Datenbankserver: MySQL
  • Mailserver: Postfix mit virtuellen Benutzern
  • DNS Server: MyDNS
  • FTP Server: pureftpd
  • POP3/IMAP: Courier-POP3/Courier-IMAP.
  • Webalizer für Webseitenstatistiken
Am Ende sollte man ein System erhalten der zuverlässig arbeitet und mit dem ISPConfig 3 Control Panel einfach zu verwalten ist. Die folgende Anleitung ist für die 62bit Version von opneSUSE.

Zunächst muss ich erwähnen dass es nicht die einzige Möglichkeit ist, dieses System aufzusetzen. Es gibt unterschiedliche Weg, ich habe diesen hier gewählt. Ich kann leider keine Gewährleistung dafür übernehmen, dass es bei Dir genauso funktioniert!

Achtung: Diese Anleitung ist für ISPConfig 3.0.1. oder neuer. Es eignet sich nicht für ISPConfig 2.x!


1 Anforderungen

Um das System zu installieren wirst Du folgendes benötigen:

2 Vorbemerkung

In dieser Anleitung benutze ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.105 und dem Gateway 192.168.0.1. Diese Einstellungen können bei Dir anders sein, bitte ersetze sie wo es notwendig ist.

3 Das Basissystem

Boote von Deiner OpenSUSE 11.1 DVD und wähle aus Installation:


Wähle die Sprache und das Tastaturlayout aus und akzeptiere die Lizenzbedingungen:


Der Installer analysiert Deine Hardware und erstellt das Software Repository Cache:


Wähle New Installation:


Wähle die Region und die Zeitzone aus:


Wir wählen Other > Minimal Server Selection (Text Mode) hier aus, da wir einen Server ohne X-Window Desktop installieren wollen. Das X-Window System ist nicht notwendig um den Server zu betreiben und würde ohnehin nur das System verlangsamen. Wir werden die Administrationsaufgaben alle über die Shell oder über eine SSH-Verbindung erledigen, z. B. über PuTTY von einem Remote Desktop aus.


Klicke auf Edit partition setup... um die vorgeschlagenen Partitionen zu ändern. Da wir einen Server aufsetzen, benötigen wir eine große  /srv Partition, anstatt der /home Partition:


Wähle  /dev/sda3 aus und klicke auf Edit...:


Ändere den  Mount Point zu /srv und klicke auf Finish:



Klicke auf Accept:


Das Ergebnis sollte folgendermaßen aussehen. Klicke auf Next:


Nun erstelle ich einen Benutzer mit dem Namen administrator. Du kannst jeglichen Benutzernamen den Du möchtest auswählen. Bitte versichere Dich dass der automatische Log-in  Automatic Login für diesen Benutzer nicht in der Checkbox markiert wurde. Das Passwort, das nun angegeben wird, wird als Root-Passwort benutzt:


Der Installer zeigt nur einen Überblick der ausgewählten Installationsoptionen. Klicke auf Install um den Installationsprozess zu starten:


Bestätige dass Du die Installation starten möchtest:


Der Installer formatiert die Festplatte, installiert die Software-Pakete und bereitet das System für den ersten Boot vor:



Nachdem die Basisinstallation beendet wurde, wird das System automatisch neu starten:


Die automatische Konfiguration startet sofort nachdem das Sytem neu gebootet hat:


Nun logge Dich mit dem Benutzernamen root und mit dem während der Installation ausgewählten Passwort ein.

4 Netzwerkeinstellungen konfigurieren

Wir benutzen Yast, das OpenSuSE System Management Tool um die Einstellungen der Netzwerkkarte zu rekonfigurieren. Nach dem Neustart wird das System so konfiguriert, dass es eine IP Adresse mit DHCP bekommt. Für einen Server nehmen wir jedoch einen statische IP Adresse.

Führe aus

yast2


Wähle aus  Network Devices > Network Settings:


Wähle Deine Netzwerkkarte aus und dann Edit:


Wähle Statically assigned IP Address und gib die IP Adresse an, die Subnetzmaske und den Hostnamen und speichere die Änderungen, indem Du  Next auswählst:


Nun wähle  Hostname/DNS und gib den Hostnamen an (z.B.  server1.example.com) und die Nameserver (z.B. 145.253.2.75 und 213.191.92.86):


Nun wähle Routing und gib den Standard-Gateway an und und drücke OK:


Um die Firewall zu konfigurieren, wähle Security and Users > Firewall in Yast aus:


Ich möchte am Ende der Anleitung ISPConfig installieren, der eine eigene Firewall hat. Deshalb deaktiviere ich die standardmäßige OpenSUSE Firewall. Natürlich kannst Du die Firewall belassen und sie nach Deinen eigenen Bedürfnissen anpassen, aber dann solltest Du keine andere Firewall benutzen, da sie meistens mit der OpenSUSE Firewall nicht parallel laufen.

Wähle Disable Firewall Automatic Starting und Stop Firewall Now, dann gib ein Next:


Drück Finish und verlasse Yast:


5 Updates installieren

Nun installieren wir die neuesten Updates von den openSUSE Repositories. Führe aus

zypper update


Und dann starte den Server neu, da man meist auch einige Kernel-Updates installiert hat:

reboot


6 Quota

Um Quota einzurichten, führe aus:

yast2 -i quota


Editiere /etc/fstab damit es folgendermaßen aussieht (Ich habe ,usrquota,grpquota / und /srv zu den Mount-Punkten hinzugefügt):

vi /etc/fstab

/dev/sda1            swap                 swap       defaults              0 0
/dev/sda2 / ext3 acl,user_xattr,usrquota,grpquota 1 1 /dev/sda3 /srv ext3 acl,user_xattr,usrquota,grpquota 1 2 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug debugfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0
Dann führe aus:

touch /aquota.user /aquota.group

chmod 600 /aquota.*

touch /srv/aquota.user /srv/aquota.group

chmod 600 /srv/aquota.*

mount -o remount /

mount -o remount /srv

quotacheck -avugm

quotaon -avug


Es ist kein Problem wenn diese Fehlermeldungen auftauchen, das ist normal wenn man das erste Mal einen Quota Check ausführt:

quotacheck: WARNING - Quotafile //aquota.user was probably truncated. Cannot save quota settings...

quotacheck: WARNING - Quotafile //aquota.group was probably truncated. Cannot save quota settings...

quotacheck: Scanning /dev/sda2 [/] done

quotacheck: Checked 5286 directories and 45399 files

quotacheck: WARNING - Quotafile /srv/aquota.user was probably truncated. Cannot save quota settings...

quotacheck: WARNING - Quotafile /srv/aquota.group was probably truncated. Cannot save quota settings...

quotacheck: Scanning /dev/sda3 [/srv] done

quotacheck: Checked 7 directories and 4 files


7 Installation einiger Pakete und Compiler, die später benötigt werden

Führe aus

yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ subversion make vim telnet cron iptables iputils man man-pages nano pico


8 Postfix, Courier, Saslauthd, MySQL installieren

Führe aus:

yast2 -i postfix postfix-mysql mysql mysql-client courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel pwgen


Starte MySQL, Postfix, SASL und Courier und aktiviere die Dienste damit sie beim Start ausgeführt werden:

chkconfig --add mysql

chkconfig --add postfix

chkconfig --add saslauthd

chkconfig --add fam

chkconfig --add courier-authdaemon

chkconfig --add courier-pop

chkconfig --add courier-imap

chkconfig --add courier-pop-ssl

chkconfig --add courier-imap-ssl

/etc/init.d/mysql start

/etc/init.d/postfix start

/etc/init.d/saslauthd start

/etc/init.d/courier-pop start

/etc/init.d/courier-imap start

/etc/init.d/courier-pop-ssl start

/etc/init.d/courier-imap-ssl start


Nun installiere ich einige rpm-Pakete welche nicht von den openSUSE Repositories verfügbar sind:

cd /tmp

rpm -i http://download.opensuse.org/repositories/server:/mail/openSUSE_11.1/x86_64/getmail-4.13.0-1.1.x86_64.rpm

rpm --force -i http://download.opensuse.org/repositories/home:/atzewilms/openSUSE_11.1_Update/x86_64/maildrop-2.1.0-3.5.x86_64.rpm


Warnunegne wie "warning: getmail-4.7.6-1.4.i586.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" können  ignoriert werden.

Als Nächstes installiere ich das pam_mysql Modul von der Quelle. pam_mysql ist nicht in der openSUSE Hauptrepository verfügbar und das Paket vom Build Service funktionierte bei mir nicht.

yast2 -i pam-devel pam-32bit pam-devel-32bit pam-modules-32bit

cd /tmp

wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz

tar xvfz pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure

make

make install

rm -rf /tmp/pam_mysql-0.7RC1

rm /tmp/pam_mysql-0.7RC1.tar.gz


Um die MySQL Installation zu sichern, führe aus:

mysql_secure_installation


Nun folgen einige Fragen:

server1:~ # mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none):

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] <-- Y
New password: <-- gib Dein gewünschtes MySQL Root Passwort an
Re-enter new password: <-- Bestätige das Passwort
Password updated successfully!

Reloading privilege tables..


... Success! By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] <-- Y
... Success!
Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <-- Y
... Success!
By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] <-- Y
- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!


Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] <-- Y
... Success!
Cleaning up...

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!
server1:~ #

Nun sollte Dein MySQL Setup gesichert sein.

9 Amavisd-new, Spamassassin und Clamav

Installiere Amavisd-new, Spamassassin und Clamav Antivirus. Führe aus

yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql


Um es einzuschalten, führe aus:

chkconfig --add amavis

chkconfig --add clamd

/etc/init.d/amavis start

/etc/init.d/clamd start


10 Installation des apache 2 Webserver und PHP5

Installiere nun apache2 und suphp. Führe aus:

yast2 -i apache2 apache2-mod_fcgid


Installiere PHP5:

yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5

rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_11.1/x86_64/suphp-0.7.1-3.12.x86_64.rpm


Dann führe folgende Befehle aus, um die Apache Module zu aktivieren:

a2enmod suexec

a2enmod rewrite

a2enmod ssl

a2enmod actions

a2enmod suphp

a2enmod fcgid

chown root:www /usr/sbin/suexec2

chmod 4755 /usr/sbin/suexec2


...und starte Apache.

chkconfig --add apache2

/etc/init.d/apache2 start


Installation von phpMyAdmin:

rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.1/noarch/phpMyAdmin-3.2.3-1.1.noarch.rpm


Warnungen wie "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" können ignoriert werden.

11 pure-ftpd

Installiere den pure-ftpd FTP Dämon. Führe aus:

yast2 -i pure-ftpd quota

chkconfig --add pure-ftpd

/etc/init.d/pure-ftpd start


12 MyDNS

Installiere den MyDNS DNS Server. Führe aus:

cd /tmp

wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/x86_64/mydns-ng-1.2.8-5.1.x86_64.rpm

wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/x86_64/mydns-ng-mysql-1.2.8-5.1.x86_64.rpm

rpm -i mydns*.rpm

rm -f mydns*.rpm

chkconfig --add mydns


13 Installation von vlogger und Webalizer

cd /tmp

wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz

tar xvfz vlogger-1.3.tar.gz

mv vlogger-1.3/vlogger /usr/sbin/

rm -rf vlogger*

yast2 -i webalizer perl-DateManip


14 Installation von fail2ban

rpm -i http://download.opensuse.org/repositories/home:/kolbma/openSUSE_11.1/x86_64/fail2ban-0.8.4-2.1.x86_64.rpm


Warnungen wie "warning: /var/tmp/rpm-xfer.SCm0TM: Header V3 DSA signature: NOKEY, key ID 5b00c76e"können ignoriert werden.

15 Installation von jailkit

cd /tmp

wget http://olivier.sessink.nl/jailkit/jailkit-2.10.tar.gz

tar xvfz jailkit-2.10.tar.gz

cd jailkit-2.10

./configure

make

make install

cd ..

rm -rf jailkit-2.10*


16 Die Systemuhr synchronisieren

Wenn die Systemuhrzeit mit einem NTP Server synchronisiert werden soll, führe folgendes aus:

yast2 -i xntp


Dann füge die System-Startup Links für  ntp hinzu uns starte  ntp:

chkconfig --add ntp

/etc/init.d/ntp start


17 ISPConfig 3

Lade die aktuellste ISPConfig Version runter und installiere sie. Der ISPConfig Installer konfiguriert alle Dineste wir Postfix, sasl, Courier usw. Ein manuelles Set-up wie es bei ISPConfig 2 der Fall war, ist nun nicht mehr notwendig.

cd /tmp

wget http://downloads.sourceforge.net/ispconfig/ISPConfig-3.0.1.6.tar.gz?use_mirror=

tar xvfz ISPConfig-3.0.1.6.tar.gz

cd ispconfig3_install/install/


Nun starten wir den Installationsprozess indem wir folgendes ausführen:

php -q install.php

--------------------------------------------------------------------------------


_____ ___________   _____              __ _

|_   _/  ___| ___  /  __             / _(_)

| |  `--.| |_/ / | /  / ___  _ __ | |_ _  __ _

| |  `--.   __/  | |    / _ | '_ |  _| |/ _` |

_| |_/__/ / |     | __/ (_) | | | | | | | (_| |

___/____/_|      ____/___/|_| |_|_| |_|__, |

__/ |

|___/

--------------------------------------------------------------------------------

>> Initial configuration

Operating System: openSUSE 11.1 or compatible

Following will be a few questions for primary configuration so be careful.

Default values are in [brackets] and can be accepted with <ENTER>.

Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: en

Installation mode (standard,expert) [standard]: standard

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: server1.example.com

MySQL server hostname [localhost]: localhost

MySQL root username [root]: root

MySQL root password []: howtoforge

MySQL database to create [dbispconfig]: dbispconfig

MySQL charset [utf8]: 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]:DE

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Howtoforge

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]:8080

Configuring DBServer

Installing Crontab

no crontab for root

no crontab for getmail

Restarting services ...

Restarting service MySQL

Shutting down service MySQL ..done

Starting service MySQL ..done

Shutting down mail service (Postfix)..done

Starting mail service (Postfix)..done

Shutting down service saslauthd..done

Starting service saslauthd..done

Waiting for the process [10980] to terminate

Waiting for the process [10980] to terminate

Daemon [10980] terminated by SIGTERM

Shutting down virus-scanner (amavisd-new):..done

Starting virus-scanner (amavisd-new):..done

Shutting down Clam AntiVirus daemon ..done

LibClamAV Warning: **************************************************

LibClamAV Warning: ***  The virus database is older than 7 days!  ***

LibClamAV Warning: ***   Please update it as soon as possible.    ***

LibClamAV Warning: **************************************************

Starting Clam AntiVirus daemon ..done

Shutting down Courier Authentication Daemon ..done

Starting Courier Authentication Daemon ..done

Shutting down Courier-IMAP ..done

Starting Courier-IMAP ..done

Shutting down Courier-IMAP (SSL)..done

Starting Courier-IMAP (SSL)..done

Shutting down Courier-POP3 ..done

Starting Courier-POP3 ..done

Shutting down Courier-POP3 (SSL)..done

Starting Courier-POP3 (SSL)..done

Syntax OK

Shutting down httpd2 (waiting for all children to terminate) ..done

Starting httpd2 (prefork) Shutting down pure-ftpd..done

Starting pure-ftpd..done

Installation completed.

Erstelle einen Symlink for phpMyAdmin:

ln -s /srv/www/htdocs/phpMyAdmin /usr/local/ispconfig/interface/web/phpmyadmin


Leere das  /tmp Verzeichnis:

rm -f /tmp/ispconfig3_install

rm -f ISPConfig-3.0.1.6.tar.gz


Um Dich in das ISPConfig Control Panel einzuloggen, öffne diese URL in Deinem Browser (ersetze bitte die IP mit Deinen eigenen Einstellungen):

http://192.168.0.105:8080/


Das Standard-Log-in ist:

Benutzer: admin
Passwort: admin

18 Optional

Installiere einen webbasierten E-Mail Client :

rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.1/noarch/squirrelmail-1.4.19-4.1.noarch.rpm

ln -s /srv/www/htdocs/squirrelmail /usr/local/ispconfig/interface/web/webmail


19  AppArmor deaktivieren

AppArmor ist eine Sicherheitserweiterung von SUSE, ähnlich der Fedora SELInux, das eine erweiterte Sicherheitsoption anbietet. Meiner Meinung nach ist dieses für einen sicheren Server nicht notwendig, und meistens verursacht es mehr Probleme als das es Vorteile bietet.( Zumindest ergibt sich das häufig dass nach wochenlanger Fehlersuche AppArmor den Fehler verursacht hat!). Daher deaktiviere ich AppArmor, was ohenhin notwendig ist wenn man ISPConfig (auch später) installiert.

Wir können es folgendermaßen deaktivieren:

/etc/init.d/boot.apparmor stop

chkconfig -d boot.apparmor


20 Links