GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

Der perfekte Server – Fedora 15 x86_64 [ISPConfig 2]

Der perfekte Server – Fedora 15 x86_64 [ISPConfig 2]

Dies ist eine detaillierte Beschreibung zur Einrichtung eines Fedora 15 Server, der alle von ISPs und Hostern benötigten Dienste anbietet:Apache-Webserver (SSL-fähig) mit PHP5/Ruby/Python, Postfix-Mailserver mit SMTP-AUTH und TLS, BIND-DNS-Server, Proftpd-FTP-Server, MySQL-Server, Dovecot POP3/ IMAP, Quota, Firewall usw. Dieses Tutorial ist für die 64-Bit-Version von Fedora 15 geschrieben, sollte aber mit sehr geringen Änderungen auch für die 32-Bit-Version gelten. Am Ende sollten Sie ein System haben, das zuverlässig funktioniert, und wenn Sie möchten, können Sie das kostenlose Webhosting-Control-Panel ISPConfig installieren (d.h. ISPConfig läuft darauf sofort).

Ich werde die folgende Software verwenden:

  • Webserver:Apache 2.2.17
  • PHP 5.3.6
  • Rubin
  • Python
  • Datenbankserver:MySQL 5.5.12
  • Mailserver:Postfix
  • DNS-Server:BIND9 (Chroot)
  • FTP-Server:proftpd
  • POP3/IMAP-Server:Dovecot
  • Webalizer für Website-Statistiken

Bitte beachten Sie, dass dieses Setup nicht für ISPConfig 3 funktioniert ! Es gilt nur für ISPConfig 2!

Ich möchte zunächst sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Voraussetzungen

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

  • Laden Sie das ISO-Image der Fedora 15-DVD von einem Mirror in Ihrer Nähe herunter (die Liste der Mirrors finden Sie hier:http://mirrors.fedoraproject.org/publiclist/Fedora/15/), z. http://ftp.tu-chemnitz.de/pub/linux/fedora/linux/releases/15/Fedora/x86_64/iso/Fedora-15-x86_64-DVD.iso
  • eine Internetverbindung...

2 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen können für Sie abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

Bitte stellen Sie sicher, dass das System, das Sie aktualisieren möchten, über mehr als 600 MB RAM verfügt - andernfalls kann das System beim Booten mit der folgenden Meldung hängen bleiben:

Trying to unpack rootfs image as initramfs...

3 Installieren Sie das Basissystem

Booten Sie von Ihrer Fedora 15 DVD. Wählen Sie Neues System installieren oder vorhandenes System aktualisieren:

Das Testen des Installationsmediums kann lange dauern, daher überspringen wir diesen Test hier:

Wählen Sie als nächstes Ihre Sprache:

Wählen Sie Ihr Tastaturlayout aus:

Ich gehe davon aus, dass Sie eine lokal angeschlossene Festplatte verwenden, daher sollten Sie hier Basic Storage Devices auswählen:

Da wir eine neue Fedora-Installation wünschen, klicken Sie als nächstes auf die Schaltfläche Ja, alle Daten verwerfen:

Geben Sie den Hostnamen des Servers ein:

Wählen Sie Ihre Zeitzone:

Geben Sie root ein Passwort:

Als nächstes nehmen wir die Partitionierung vor. Wählen Sie Vorhandene(s) Linux-System(e) ersetzen aus. Dadurch erhalten Sie eine kleine /boot-Partition und eine große /-Partition, was für unsere Zwecke in Ordnung ist:

Wählen Sie Änderungen auf Datenträger schreiben:

Die Festplatte wird formatiert:

Nun wählen wir die Software aus, die wir installieren möchten. Deaktivieren Sie Graphical Desktop und aktivieren Sie stattdessen Webserver. Dann aktivieren Sie Jetzt anpassen. Wählen Sie anschließend die zusätzlichen Repositories Fedora 15 - x86_64 und Fedora 15 - x86_64 - Updates aus (wenn Sie sich auf einem i686-System befinden, lauten die Namen wahrscheinlich Fedora 15 - i686 und Fedora 15 - i686 - Updates):

Da die letzten beiden Repositorys eine Internetverbindung benötigen, erscheint ein neues Fenster, in dem Sie Ihre Netzwerkkarte konfigurieren müssen. Wählen Sie Ihre Netzwerkkarte aus und klicken Sie auf OK:

Gehen Sie zur Registerkarte Verkabelt, wählen Sie die Netzwerkschnittstelle aus (bitte beachten Sie, dass Fedora 15 BIOS-Namen für Geräte verwendet, deshalb heißt Ihre Netzwerkkarte p3p1 statt eth0 - wir werden das später ändern; weitere Informationen dazu finden Sie unter http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming) und klicken Sie auf Bearbeiten...:

Aktivieren Sie das Kontrollkästchen Automatisch verbinden und gehen Sie zur Registerkarte IPv4-Einstellungen und wählen Sie im Dropdown-Menü Methode die Option Manuell aus. Geben Sie einen, zwei oder drei Nameserver (durch Komma getrennt) in das Feld DNS-Server ein (z. B. 8.8.8.8, 8.8.4.4) und klicken Sie dann auf die Schaltfläche Hinzufügen neben dem Bereich Adressen:

Geben Sie Ihrer Netzwerkkarte nun eine statische IP-Adresse und Netzmaske (in diesem Tutorial verwende ich zu Demonstrationszwecken die IP-Adresse 192.168.0.100 und die Netzmaske 255.255.255.0; wenn Sie sich nicht sicher sind, welche Werte richtig sind, http://www. subnetmask.info könnte Ihnen helfen). Geben Sie auch Ihr Gateway ein (z. B. 192.168.0.1) und klicken Sie auf die Schaltfläche Speichern...:

Klicken Sie anschließend im Fenster Netzwerkverbindungen auf Schließen:

Der perfekte Server - Fedora 15 x86_64 [ISPConfig 2] - Seite 2

4 Ändern Sie den Namen Ihrer Netzwerkkarte in ethx

Jetzt müssen wir Fedora so konfigurieren, dass es keine BIOS-Gerätenamen mehr für unsere Netzwerkschnittstelle verwendet. Statt p3p1 brauchen wir unser gutes, altes eth0 zurück (weil sonst die Firewall von ISPConfig verrückt spielt und alles blockiert, weil sie eth0 statt p3p1 erwartet). Öffnen Sie /etc/grub.conf...

vi /etc/grub.conf

... und fügen Sie biosdevname=0 zur Kernel-Zeile hinzu:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_server1-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=0
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.38.6-27.fc15.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.38.6-27.fc15.x86_64 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_LVM_LV=vg_server1/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=de rhgb quiet biosdevname=0
        initrd /initramfs-2.6.38.6-27.fc15.x86_64.img

Starten Sie dann das System neu:

reboot

Nach dem Neustart sollte Ihre Netzwerkkarte eth0 heißen. Lauf...

ifconfig

... zu überprüfen:

[[email protected] ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:15:60:FA
          inet addr:192.168.0.100  Bcast:192.168.0.255  Maske:255.255. 255.0
          inet6 addr: fe80::20c:29ff:fe15:60fa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          Empfangspakete:48 Fehler:0 verloren 0 Overruns:0 Frame:0
          TX Pakete:58 Fehler:0 Droped:0 Overruns:0 Carrier:0
          Collisions:0 txqueuelen:1000
          RX Bytes:5226 (5,1 KiB)  TX bytes:9682 (9,4 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Maske:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metrik:1
          RX-Pakete:2 Fehler:0 verloren gegangen:0 Überläufe:0 Frame:0
          TX-Pakete:2 Fehler:0 verloren:0 Überläufe:0 Carrier:0
          Kollisionen:0 txqueuelen:0
          RX-Bytes:100 (100,0 b)  TX-Bytes:100 (100,0 b)
[[email protected] ~]#

5 /etc/hosts anpassen

Als nächstes bearbeiten wir /etc/hosts. Lassen Sie es so aussehen:

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100   server1.example.com     server1

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Es ist wichtig, dass Sie eine Zeile für server1.example.com hinzufügen und server1.example.com und server1 aus der Zeile 127.0.0.1 entfernen.

6 Firewall konfigurieren

(Sie können dieses Kapitel überspringen, wenn Sie die Firewall bereits am Ende der grundlegenden Systeminstallation deaktiviert haben.)

Ich möchte ISPConfig am Ende dieses Tutorials installieren, das mit einer eigenen Firewall geliefert wird. Deshalb deaktiviere ich jetzt die standardmäßige Fedora-Firewall. Natürlich steht es Ihnen frei, sie eingeschaltet zu lassen und nach Ihren Bedürfnissen zu konfigurieren (aber dann sollten Sie später keine andere Firewall verwenden, da diese höchstwahrscheinlich die Fedora-Firewall stört).

Ausführen

system-config-firewall

und die Firewall deaktivieren.

Um zu überprüfen, ob die Firewall wirklich deaktiviert wurde, können Sie

ausführen
iptables -L 

nachher. Die Ausgabe sollte so aussehen:

[[email protected] ~]# iptables -L
Chain INPUT (Policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (Policy ACCEPT)
target prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[[email protected] ~]#

7 SELinux deaktivieren

SELinux ist eine Sicherheitserweiterung von Fedora, die erweiterte Sicherheit bieten soll. Meiner Meinung nach brauchen Sie es nicht, um ein sicheres System zu konfigurieren, und es verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehler behoben haben, weil ein Dienst nicht wie erwartet funktioniert hat, und dann Sie feststellen, dass alles in Ordnung war, nur SELinux verursachte das Problem). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie später ISPConfig installieren möchten).

Bearbeiten Sie /etc/selinux/config und setzen Sie SELINUX=disabled:

vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Danach müssen wir das System neu starten:

reboot

8 Einige Software installieren

Zuerst importieren wir die GPG-Schlüssel für Softwarepakete:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Als nächstes aktualisieren wir unsere bestehenden Pakete auf dem System:

yum update

Jetzt installieren wir einige Softwarepakete, die später benötigt werden:

yum install fetchmail wget bzip2 unzip zip nmap openssl lynx fileutils ncftp gcc gcc-c++

9 Journaled-Quote

(Falls Sie ein anderes Partitionierungsschema gewählt haben als ich, müssen Sie dieses Kapitel anpassen, damit Quota für die Partitionen gilt, wo Sie es brauchen.)

Um Quota zu installieren, führen wir diesen Befehl aus:

yum install quota

Bearbeiten Sie /etc/fstab und fügen Sie ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 zur Partition / (/dev/mapper/vg_server1-lv_root):

hinzu
vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 25 15:57:24 2011
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_server1-lv_root /                       ext4    defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0        1 1
UUID=366ba6a7-7e68-4ec9-9743-4b02dd105180 /boot                   ext4    defaults        1 2
/dev/mapper/vg_server1-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

Dann ausführen

mount -o remount /

quotecheck -avugm
quotaon -avug

zum Aktivieren des Kontingents.

10 Installieren Sie einen Chrooted-DNS-Server (BIND9)

Um ein chrooted BIND9 zu installieren, gehen wir wie folgt vor:

yum install bind-chroot

Als nächstes ändern wir ein paar Berechtigungen:

chmod 755 /var/named/
chmod 775 /var/named/chroot/
chmod 775 /var/named/chroot/var/
chmod 775 /var/named/chroot/var/ named/
chmod 775 /var/named/chroot/var/run/
chmod 777 /var/named/chroot/var/run/named/
cd /var/named/chroot/ var/named/
ln -s ../../ chroot

Dann öffnen wir /etc/sysconfig/named und stellen sicher, dass es die folgende Zeile enthält, um BIND mitzuteilen, dass es chrooted in /var/named/chroot läuft:

vi /etc/sysconfig/named
[...]
ROOTDIR=/var/named/chroot

Als nächstes öffnen Sie /etc/rsyslog.conf...

vi /etc/rsyslog.conf

... und fügen Sie die Zeile $AddUnixListenSocket /var/named/chroot/dev/log hinzu:

[...]
$AddUnixListenSocket /var/named/chroot/dev/log

Starten Sie rsyslog neu:

/etc/init.d/rsyslog restart

Dann erstellen wir die Systemstartlinks für BIND:

chkconfig --levels 235 named on

Wir starten BIND jetzt nicht, weil es wegen einer fehlenden /var/named/chroot/etc/named.conf scheitern wird. Diese wird später von ISPConfig erstellt (wenn Sie also den DNS-Manager von ISPConfig verwenden).

Der perfekte Server - Fedora 15 x86_64 [ISPConfig 2] - Seite 4

11 MySQL 5

Um MySQL zu installieren, gehen wir wie folgt vor:

yum install mysql mysql-devel mysql-server

Dann erstellen wir die Systemstart-Links für MySQL (damit MySQL automatisch startet, wenn das System hochfährt) und starten den MySQL-Server:

chkconfig --levels 235 mysqld beim
/etc/init.d/mysqld start

Überprüfen Sie nun, ob das Netzwerk aktiviert ist. Führen Sie

aus
netstat -tap | grep mysql

Es sollte etwa so aussehen:

[[email protected] ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql                    *:*                         HÖREN      1151/mysqld
[[email protected] ~]#

Wenn dies nicht der Fall ist, bearbeiten Sie /etc/my.cnf und kommentieren Sie die Option skip-networking aus:

vi /etc/my.cnf
[...]
#skip-networking
[...]

und starten Sie Ihren MySQL-Server neu:

/etc/init.d/mysqld restart 

Führen Sie

aus
 mysql_secure_installation 

um ein Passwort für den Benutzer root festzulegen (ansonsten kann jeder auf Ihre MySQL-Datenbank zugreifen!).

[[email protected] ~]# mysql_secure_installation




HINWEIS:DAS AUSFÜHREN ALLER TEILE DIESES SKRIPTS WIRD FÜR ALLE MySQL-
      SERVER IN DER PRODUKTION EMPFOHLEN BENUTZEN! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG DURCH!


Um sich bei MySQL anzumelden, um es zu sichern, benötigen wir das aktuelle
Passwort für den Root-Benutzer. Wenn Sie gerade MySQL installiert und
das Root-Passwort noch nicht festgelegt haben, ist das Passwort leer,
also sollten Sie hier einfach die Eingabetaste drücken.

Enter Aktuelles Passwort für Root (Eingabe für keine): <-- ENTER
OK, erfolgreich verwendetes Passwort, weiter ...

Das Festlegen des Root-Passworts stellt sicher, dass sich niemand bei MySQL anmelden kann
Root-Benutzer ohne die entsprechende Berechtigung.

Root-Passwort festlegen? [Y/n] <-- ENTER
Neues Passwort: <-- yourrootsqlpassword
Neues Passwort erneut eingeben: <-- yourrootsqlpassword
Passwort erfolgreich aktualisiert!
Berechtigungstabellen werden neu geladen. .
 ... Erfolg!


Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer, der ermöglicht, dass sich jeder
bei MySQL anmelden kann, ohne einen Benutzeraccount haben zu müssen für
sie erstellt. Dies ist nur zum Testen sollte und damit die Installation
etwas flüssiger läuft. Sie sollten sie entfernen, bevor Sie in eine
Produktionsumgebung wechseln.

Anonyme Nutzer entfernen? [Y/n] <-- ENTER
 ... Erfolgreich!

Normalerweise sollte root nur erlaubt werden, sich von 'localhost' aus zu verbinden. Dies
stellt sicher, dass niemand das Root-Passwort aus dem Netzwerk erraten kann.

Root-Anmeldung aus der Ferne nicht zulassen? [Y/n] <-- EINGABE
 ... Erfolg!

Standardmäßig wird MySQL mit einer Datenbank namens "test" geliefert, auf die jeder
zugreifen kann. Dies ist auch nur zum Testen vorgesehen und sollte entfernt werden
bevor in eine Produktionsumgebung umgezogen wird.

Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- ENTER
 - Testdatenbank wird gelöscht...
 ... Erfolg!
 - Berechtigungen für Testdatenbank entfernen...
 ... Erfolg !

Durch das Neuladen der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen
sofort wirksam werden.

Berechtigungstabellen jetzt neu laden? [Y/n] <-- EINGABE
 ... Erfolgreich!

Aufräumen ...



Alle fertig! Wenn Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MySQL
Installation jetzt sicher sein.

Vielen Dank, dass Sie MySQL verwenden!


[example @unixlinux.online ~]#

12 Postfix mit SMTP-AUTH und TLS

Jetzt installieren wir Postfix und Dovecot (Dovecot wird unser POP3/IMAP-Server):

yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecot

Jetzt konfigurieren wir SMTP-AUTH und TLS:

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_sasl_authenticated_header =yes'
postconf -e 'smtpd_recipient_restrictions =permission_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces =all'
postconf -e 'mynetworks =127.0.0.0/8 [::1]/128'

Wir müssen /usr/lib64/sasl2/smtpd.conf bearbeiten, damit Postfix PLAIN- und LOGIN-Logins zulässt (auf 32-Bit-Systemen befindet sich diese Datei in /usr/lib/sasl2/smtpd.conf). Es sollte so aussehen:

vi /usr/lib64/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login

Anschließend erstellen wir die Zertifikate 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

Als nächstes konfigurieren wir 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'

Dann setzen wir den Hostnamen in unserer Postfix-Installation (stellen Sie sicher, dass Sie server1.example.com durch Ihren eigenen Hostnamen ersetzen):

postconf -e 'myhostname = server1.example.com'

Nach diesen Konfigurationsschritten sollten Sie nun eine /etc/postfix/main.cf haben, die so aussieht (ich habe alle Kommentare daraus entfernt):

cat /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.8.3/samples
readme_directory = /usr/share/doc/postfix-2.8.3/README_FILES
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
mynetworks = 127.0.0.0/8 [::1]/128
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
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
myhostname = server1.example.com

Starten Sie nun Postfix und saslauthd:

chkconfig sendmail aus
chkconfig --levels 235 postfix ein
chkconfig --levels 235 saslauthd ein
chkconfig --levels 235 dovecot ein
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start

Bevor wir Dovecot starten, müssen wir die Klartext-Authentifizierung aktivieren. Öffnen Sie /etc/dovecot/conf.d/10-auth.conf...

vi /etc/dovecot/conf.d/10-auth.conf

... und fügen Sie die Zeile disable_plaintext_auth =no:

hinzu
[...]
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
#disable_plaintext_auth = yes
disable_plaintext_auth = no
[...]

Starten Sie dann Dovecot:

  /etc/init.d/dovecot start

Um zu sehen, ob SMTP-AUTH und TLS jetzt richtig funktionieren, führen Sie den folgenden Befehl aus:

telnet localhost 25 

Nachdem Sie die Verbindung zu Ihrem Postfix-Mailserver hergestellt haben, geben Sie

ein
ehlo localhost 

Wenn Sie die Linien

sehen
250-STARTTLS 

und

250-AUTH LOGIN PLAIN

alles ist gut.

[[email protected] ssl]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape-Zeichen ist '^]'.
220 server1. example.com ESMTP Postfix
<-- ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
<-- quit
221 2.0.0 Bye
Verbindung von fremdem Host geschlossen.
[[email protected] ssl]#

Geben Sie

ein
quit 

um zur Shell des Systems zurückzukehren.

12.1 Maildir

Dovecot verwendet das Maildir-Format (nicht mbox). Wenn Sie also ISPConfig auf dem Server installieren, stellen Sie bitte sicher, dass Sie Maildir unter Verwaltung -> Server -> Einstellungen -> E-Mail aktivieren. ISPConfig nimmt dann die notwendige Konfiguration vor.

Wenn Sie ISPConfig nicht installieren möchten, müssen Sie Postfix so konfigurieren, dass E-Mails an das Maildir eines Benutzers gesendet werden (Sie können dies auch tun, wenn Sie ISPConfig verwenden - es schadet nicht;-)):

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

Der perfekte Server - Fedora 15 x86_64 [ISPConfig 2] - Seite 5

13 Apache2 mit PHP, Ruby, Python, WebDAV

Jetzt installieren wir Apache mit PHP5 (das ist PHP 5.3.6):

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Bearbeiten Sie dann /etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

und ändern Sie DirectoryIndex in

[...]
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl
[...]

Konfigurieren Sie nun Ihr System so, dass Apache beim Booten gestartet wird:

chkconfig --levels 235 httpd on

Apache starten:

/etc/init.d/httpd start

13.1 PHP global deaktivieren

(Wenn Sie ISPConfig nicht auf diesem Server installieren möchten, überspringen Sie bitte diesen Abschnitt!)

In ISPConfig konfigurieren Sie PHP pro Website, d. h. Sie können angeben, welche Website PHP-Skripte ausführen kann und welche nicht. Dies kann nur funktionieren, wenn PHP global deaktiviert ist, da sonst alle Websites PHP-Skripte ausführen könnten, egal was Sie in ISPConfig angeben.

Um PHP global zu deaktivieren, bearbeiten wir /etc/httpd/conf.d/php.conf und kommentieren die Zeilen AddHandler und AddType aus:

vi /etc/httpd/conf.d/php.conf
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
#AddHandler php5-script .php
#AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps

Danach starten wir Apache neu:

/etc/init.d/httpd restart

13.2 Rubin

Ab Version 2.2.20 hat ISPConfig eingebaute Unterstützung für Ruby. Anstatt CGI/FastCGI zu verwenden, hängt ISPConfig davon ab, dass mod_ruby im Apache des Servers verfügbar ist.

Für Fedora 15 ist kein mod_ruby-Paket verfügbar, also müssen wir es selbst kompilieren. Zuerst installieren wir einige Voraussetzungen:

yum install httpd-devel ruby ruby-devel

Als nächstes laden wir mod_ruby herunter und installieren es wie folgt:

cd /tmp
wget http://modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3 .0/
./configure.rb --with-apr-includes=/usr/include/apr-1
make
make install

Schließlich müssen wir das Modul mod_ruby zur Apache-Konfiguration hinzufügen, also erstellen wir die Datei /etc/httpd/conf.d/ruby.conf...

vi /etc/httpd/conf.d/ruby.conf
LoadModule ruby_module modules/mod_ruby.so
RubyAddPath /1.8

... und Apache neu starten:

/etc/init.d/httpd restart

(Wenn Sie die Direktive RubyAddPath /1.8 weglassen, sehen Sie Fehler wie die folgenden im Fehlerprotokoll von Apache, wenn Sie Ruby-Dateien aufrufen:

[Do, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:ruby:0:in `require':keine solche Datei zum Laden -- apache/ruby-run (LoadError)
[Do, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:Apache/ruby-run konnte nicht angefordert werden
[Donnerstag, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:Fehler in Ruby

)

Weitere Details zu mod_ruby finden Sie in diesem Artikel.

13.3 Installieren von mod_python

Um mod_python zu installieren, führen wir einfach ...

aus
yum install mod_python

... und danach Apache neu starten:

/etc/init.d/httpd restart

13.4 WebDAV

WebDAV sollte bereits aktiviert sein, aber um dies zu überprüfen, öffnen Sie /etc/httpd/conf/httpd.conf und stellen Sie sicher, dass die folgenden drei Module aktiv sind:

vi /etc/httpd/conf/httpd.conf
[...]
LoadModule auth_digest_module modules/mod_auth_digest.so
[...]
LoadModule dav_module modules/mod_dav.so
[...]
LoadModule dav_fs_module modules/mod_dav_fs.so
[...]

Wenn Sie /etc/httpd/conf/httpd.conf ändern müssen, vergessen Sie nicht, Apache danach neu zu starten:

/etc/init.d/httpd restart 

14 ProFTPd

ISPConfig hat eine bessere Unterstützung für proftpd als vsftpd, also entfernen wir vsftpd und installieren proftpd:

yum remove vsftpd
yum install proftpd

Jetzt können wir die Systemstartlinks für Proftpd erstellen und starten:

chkconfig --levels 235 proftpd on
/etc/init.d/proftpd start

15 Webalizer

Um Webalizer zu installieren, führen Sie einfach

aus
yum install webalizer

16 Synchronisieren Sie die Systemuhr

Wenn Sie die Systemuhr mit einem NTP-Server synchronisieren möchten, gehen Sie wie folgt vor:

yum install ntp

chkconfig --levels 235 ntpd on
ntpdate 0.pool.ntp.org
/etc/init.d/ntpd start

17 Einige Perl-Module installieren

ISPConfig wird mit SpamAssassin geliefert, das einige Perl-Module benötigt, um zu funktionieren. Wir installieren die erforderlichen Perl-Module mit einem einzigen Befehl:

yum install perl-HTML-Parser perl-DBI perl-Net-DNS perl-Digest-SHA1 perl-ExtUtils-AutoInstall perl-NetAddr-IP perl-Archive-Tar

18 ISPConfig

Die Konfiguration des Servers ist nun abgeschlossen. You can now install ISPConfig on it, following these instructions:http://www.ispconfig.org/manual_installation.htm

Before you install ISPConfig, there's one important thing you must do. Open /usr/include/stdio.h and replace getline with parseline in line 673:

vim /usr/include/stdio.h
[...]
/* Like `getdelim', but reads up to a newline.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern _IO_ssize_t parseline (char **__restrict __lineptr,
                            size_t *__restrict __n,
                            FILE *__restrict __stream) __wur;
#endif
[...]

If you don't do this, the installation will fail because of the following error:

htpasswd.c:101:error:conflicting types for âgetlineâ
/usr/include/stdio.h:653:note:previous declaration of âgetlineâ was here
make[2]:*** [htpasswd.o] Error 1
make[2]:Leaving directory `/home/install_ispconfig/compile_aps/apache_1.3.41/src/support'
make[1]:*** [build-support] Error 1
make[1]:Leaving directory `/home/install_ispconfig/compile_aps/apache_1.3.41'
make:*** [build] Error 2
ERROR:Could not make Apache

You can undo the change to /usr/include/stdio.h after the successful ISPConfig installation (but don't forget to change it back whenever you want to update ISPConfig!).

18.1 A Note On SuExec

If you want to run CGI scripts under suExec, you should specify /var/www as the web root for websites created by ISPConfig as Fedora's suExec is compiled with /var/www as Doc_Root. Führen Sie

aus
/usr/sbin/suexec -V

and the output should look like this:

[[email protected] ~]# /usr/sbin/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_EXEC="/var/log/httpd/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX="public_html"
[[email protected] ~]#

So if you want to use suExec with ISPconfig, don't change the default web root (which is /var/www) if you use expert mode during the ISPConfig installation (in standard mode you can't change the web root anyway so you'll be able to use suExec in any case).

  • Fedora:http://fedoraproject.org/
  • Network Device Naming:http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming
  • ISPConfig:http://www.ispconfig.org/

Panels
  1. Der perfekte Server – Fedora 15 x86_64 [ISPConfig 3]

  2. Der perfekte Server - Ubuntu Natty Narwhal (Ubuntu 11.04) [ISPConfig 2]

  3. Der perfekte Server - Ubuntu 11.04 [ISPConfig 3]

  4. Der perfekte Server – CentOS 5.6 x86_64 [ISPConfig 2]

  5. Der perfekte Server – CentOS 6.1 x86_64 mit Apache2 [ISPConfig 3]

Der perfekte Server – CentOS 6.3 x86_64 (Apache2, Dovecot, ISPConfig 3)

Der perfekte Server – CentOS 6.2 x86_64 mit nginx [ISPConfig 3]

Der perfekte Server – CentOS 6.2 x86_64 mit Apache2 [ISPConfig 3]

Der perfekte Server – CentOS 6.1 x86_64 mit nginx [ISPConfig 3]

Der perfekte Server – OpenSUSE 12.2 x86_64 (nginx, Dovecot, ISPConfig 3)

Der perfekte Server – OpenSUSE 12.2 x86_64 (Apache2, Dovecot, ISPConfig 3)