CentOS 5.1 Server Setup: LAMP, Email, DNS, FTP, ISPConfig (auch bekannt als Der Perfekte Server)

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man einen CentOS 5.1- basierten Server einrichtet, der alle Dienste bietet, die von ISPs und Web Hosters benötigt werden: Apache Web Server (SSL-fähig), Postfix Mail Server mit SMTP-AUTH und TLS, BIND DNS Server, Proftpd FTP Server, MySQL Server, Dovecot POP3/IMAP, Quota, Firewall, etc. Diese Anleitung wurde für die 32-bit Version von CentOS 5.1 geschrieben, sollte mit kleinen Änderungen aber auch auf die 64-bit Version zutreffen.

Folgende Software werde ich verwenden:
  • Web Server: Apache 2.2 with PHP 5.1.6
  • Database Server: MySQL 5.0
  • Mail Server: Postfix
  • DNS Server: BIND9 (chrooted)
  • FTP Server: Proftpd
  • POP3/IMAP server: Dovecot
  • Webalizer for web site statistics
Im Endeffekt solltest Du ein System haben, das verlässlich funktioniert. Wenn Du magst, kannst Du auch das kostenlose Webhosting Control Panel ISPConfig installieren (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 Anforderungen

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

2 Vorbemerkung

In dieser Anleitung verwende ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen werden bei Dir wahrscheinlich etwas abweichen, ersetze sie an geeigneter Stelle.

3 Installation des Basissystems

Starte von Deiner ersten CentOS 5.1 CD (CD 1) oder der CentOS 5.1 DVD. Drücke bei der Startaufforderung <ENTER> :


Es kann eine ganze Weile dauern, das Installationsmedium zu testen, also überspringen wir diesen Test hier:


Der Willkommens-Bildschirm des CentOS Installers erscheint. Klicke auf Next:


Wähle als Nächstes die Sprache:


Wähle Dein Tastaturlayout:


Ich installiere CentOS 5.1 auf einem unbeschriebenen System, also antworte ich Yes auf die Frage Would you like to initialize this drive, erasing ALL DATA?


Nun müssen wir ein Partitionsschema für unsere Installation auswählen. Der Einfachheit halber wähle ich Remove linux partitions on selected drives and create default layout. Dies ergibt eine kleine /boot und eine große / Partition sowie eine Swap Partition. Natürlich ist es ganz Dir überlassen, wie Du Deine Festplatte partitionieren möchtest. Drücke dann Next:


Beantworte folgende Frage (Are you sure you want to do this?) mit Yes:



Bei den Netzwerkeinstellungen. Die Standardeinstellung ist hier das Netzwerk-Interface mit DHCP zu konfigurieren, wir installieren aber einen Server, statische IP Adressen sind also keine schlechte Idee... Klicke auf Edit rechts oben.


Im Fenster, das sich dann öffnet, entferne die Markierung von Use dynamic IP configuration (DHCP) und Enable IPv6 support und gib Deiner Netzwerkkarte eine statische IP Adresse (in dieser Anleitung verwende ich die IP Adresse 192.168.0.100 aus Demonstrationszwecken) und eine passende Netzmaske (z.B. 255.255.255.0; wenn Du Dir über die richtigen Werte nicht sicher bist, hilft Dir vielleicht http://www.subnetmask.info):


Richte den Hostnamen manuell ein, z.B. server1.example.com und gib ein Gateway (z.B. 192.168.0.1) und bis zu zwei DNS Server (z.B. 145.253.2.75 und 193.174.32.18) ein:


Wähle Deine Zeitzone:


Gib root ein Passwort:


Nun wählen wir die Software aus, die wir installieren möchten. Wähle nichts außer Server (entferne die Markierungen bei allen anderen). Entferne auch die Markierung von Packages from CentOS Extras. Markiere dann Customize now und klicke auf Next:


Nun müssen wir die Paketgruppen auswählen, die wir installieren wollen. Wähle Editors, Text-based Internet, Development Libraries, Development Tools, DNS Name Server, FTP Server, Mail Server, MySQL Database, Server Configuration Tools, Web Server, Administration Tools, Base, und System Tools (entferne die Markierung von allen anderen Paketgruppen) und klicke auf Next:


Der Installer überprüft die Abhängigkeiten der ausgewählten Pakete:


Klicke auf Next um die Installation zu starten:



Die Festplatte wird formatiert:


Die Installation beginnt. Dies wird ein paar Minuten dauern:


Endlich ist die Installation abgeschlossen. Du kannst Deine CD oder DVD entfernen und den Computer neu starten:


Nach dem Neustart siehst Du folgenden Bildschirm. Wähle Firewall configuration und drücke Run Tool:


Ich möchte am Ende dieser Anleitung ISPConfig installieren. ISPConfig hat seine eigene Firewall. Daher deaktiviere ich nun die Standard CentOS Firewall. Natürlich kannst Du sie auch aktiviert lassen und je nach Bedarf konfigurieren (jedoch solltest Du dann später keine andere Firewall verwenden, da sie höchstwahrscheinlich die CentOS Firewall beeinflussen wird).

SELinux ist eine Sicherheitserweiterung von CentOS, die mehr Sicherheit bieten sollte. Meiner Meinung nach brauchst Du ein bereits sicheres System nicht zu konfigurieren. Es verursacht für gewöhnlicht mehr Probleme als dass es Vorteile verschafft. Daher deaktiviere ich es auch (dies ist ein Muss wenn Du später ISPConfig installieren möchtest). Drücke danach OK:


Verlasse dann den Setup Agent indem Du Exit wählst:


Melde Dich dann als Rootanwender an und starte das System neu, damit die Änderungen übernommen werden können:

shutdown -r now

Nun zur Konfiguration...

4 Anpassen von /etc/hosts

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

vi /etc/hosts


# Do not remove the following line, or various programs
# that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6

5 Konfiguriere Zusätzliche IP Adressen

(Dieses Kapitel ist optional. Es zeigt nur, wie Du zusätzliche IP Adressen Deiner Netzwerkoberfläche eth0 hinzufügen kannst, wenn Du mehr als eine IP Adresse benötigst. Wenn Dir eine IP Adresse ausreicht, kannst Du dieses Kapitel überspringen.)

Lass uns davon ausgehen, dass unsere Netzwerkoberfläche eth0 ist. Dann gibt es eine Datei /etc/sysconfig/network-scripts/ifcfg-eth0 , die die Einstellungen für eth0 enthält. Wir können dies als ein Muster für unsere neue virtuelle Netzwerkoberfläche eth0:0 verwenden:

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

Nun wollen wir die IP Adresse 192.168.0.101 auf der virtuellen Oberfläche eth0:0 verwenden. Daher öffnen wir die Datei /etc/sysconfig/network-scripts/ifcfg-eth0:0 und bearbeiten sie wie folgt (wir können die Zeile HWADDR auslassen, da es die gleiche physikalische Netzwerkkarte ist):

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


# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0:0 BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.101 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes
Danach müssen wir das Netzwerk neu starten:

/etc/init.d/network restart

Du möchtest vielleicht auch /etc/hosts anpassen, nachdem Du neue IP Adressen hinzugefügt hast, obwohl dies nicht notwendig ist.

Lass nun Folgendes laufen

ifconfig

Du solltest Deine neue IP Adresse nun in der Ausgabe sehen:

[root@server1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:55:33:B3
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe55:33b3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:355 errors:0 dropped:0 overruns:0 frame:0
TX packets:300 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31326 (30.5 KiB) TX bytes:47669 (46.5 KiB)
Interrupt:177 Base address:0x1400

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:55:33:B3
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

[root@server1 ~]#

6 Die Firewall Und SELinux deaktivieren

(Wenn Du die Firewall und SELinux bereits am Ende der Installation des Basissystems deaktiviert hast (im Setup Agent), kannst Du dieses Kapitel überspringen.)

Ich möchte am Ende dieser Anleitung ISPConfig installieren. ISPConfig hat seine eigene Firewall. Daher deaktiviere ich nun die Standard CentOS Firewall. Natürlich kannst Du sie auch aktiviert lassen und je nach Bedarf konfigurieren (jedoch solltest Du dann später keine andere Firewall verwenden, da sie höchstwahrscheinlich die CentOS Firewall beeinflussen wird).

SELinux ist eine Sicherheitserweiterung von CentOS, die mehr Sicherheit bieten sollte. Meiner Meinung nach brauchst Du ein bereits sicheres System nicht zu konfigurieren. Es verursacht für gewöhnlicht mehr Probleme als dass es Vorteile verschafft. Daher deaktiviere ich es auch (dies ist ein Muss wenn Du später ISPConfig installieren möchtest).

Lass Folgendes laufen

system-config-securitylevel

Stelle Security Level und SELinux auf Disabled und drücke OK:


Danach müssen wir das System neu starten:

shutdown -r now


7 Installation einiger Softwarepakete

Zuerst importieren wir die GPG Keys für die Softwarepakete:

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

Dann aktualisieren wir unsere vorhandenenPakete auf dem System:

yum update

Nun installieren wir einige Softwarepakete, die wir später noch benötigen werden:

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


8 Quota

(Falls Du ein anderes Partitionsschema als ich ausgewählt hast, musst Du dieses Kapitel anpassen, sodass Quota zu den Partitionen passt.)

Um Quota zu installieren, führen wir Folgendes aus:

yum install quota

Bearbeite /etc/fstab und füge ,usrquota,grpquota der / Partition hinzu (/dev/VolGroup00/LogVol00):

vi /etc/fstab


/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
LABEL=/boot /boot ext3 defaults 1 2 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 /dev/VolGroup00/LogVol01 swap swap defaults 0 0
Führe dann Folgendes aus

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

um Quota zu aktivieren.

9 Installiere Einen Chrooted DNS Server (BIND9)

Um einen chrooted BIND9 zu installieren, führen wir Folgendes aus:

yum install bind-chroot

Führe dann dies aus:

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
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local /var/named/chroot/var/named/named.local
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root
touch /var/named/chroot/etc/named.conf
chkconfig --levels 235 named on
/etc/init.d/named start

BIND wird in einem chroot Gefängnis unter /var/named/chroot/var/named/ laufen. Ich werde ISPConfig verwenden um BIND (zones, etc.) zu konfigurieren.

10 MySQL (5.0)

Um MySQL zu installieren, führen wir Folgendes aus:

yum install mysql mysql-devel mysql-server

Dann erstellen wir die System Startup Links für MySQL (sodass MySQL bei jedem Neustart automatisch startet) und starten den MySQL Server:

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

Überprüfe nun, dass der Netzwerkbetrieb aktiviert ist. Lass Folgendes laufen

netstat -tap | grep mysql

Es sollte eine Zeile wie diese anzeigen:

[root@server1 named]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2470/mysqld
[root@server1 named]#

Wenn nicht, dann bearbeite /etc/my.cnf und kommentiere die Option skip-networking aus:

vi /etc/my.cnf


#skip-networking
und starte Deinen MySQL Server neu:

/etc/init.d/mysqld restart

Lass Folgendes laufen

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

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

11 Postfix Mit SMTP-AUTH Und TLS

Nun installieren wir Postfix und Dovecot (Dovecot wird unser POP3/IMAP Server sein):

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

Als Nächstes 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_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8'

Wir müssen /usr/lib/sasl2/smtpd.conf bearbeiten, sodass Postfix PLAIN und LOGIN Logins erlaubt. Auf einem 64Bit Centos 5.1 musst Du stattdessen die Datei /usr/lib64/sasl2/smtpd.conf bearbeiten. Sie sollte wie folgt aussehen:

vi /usr/lib/sasl2/smtpd.conf


pwcheck_method: saslauthd
mech_list: plain login
Danach 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 richten wir den Hostnamen in unserer Postfix Installation ein (vergewissere Dich, dass Du server1.example.com mit Deinem eigenen Hostnamen ersetzt):

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

Nach diesen Konfigurationsschritten solltest Du nun eine /etc/postfix/main.cf Datei haben, die wie folgt aussieht (ich habe alle Kommentare entfernt):

cat /etc/postfix/main.cf


queue_directory = /var/spool/postfix
command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix inet_interfaces = 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 xxgdb $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.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES 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 mynetworks = 127.0.0.0/8 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
Der CentOS' Dovecot daemon liefert standardmäßig nur IMAP und IMAPs Dienste. Da wir auch POP3 und POP3s möchten, müssen wir Dovecot dementsprechend konfigurieren. Wir bearbeiten /etc/dovecot.conf und aktivieren die Zeile protocols = imap imaps pop3 pop3s:

vi /etc/dovecot.conf


[...]
# Base directory where to store runtime data. #base_dir = /var/run/dovecot/ # Protocols we want to be serving: imap imaps pop3 pop3s # If you only want to use dovecot-auth, you can set this to "none". protocols = imap imaps pop3 pop3s # IP or host address where to listen in for connections. It's not currently # possible to specify multiple addresses. "*" listens in all IPv4 interfaces. # "[::]" listens in all IPv6 interfaces, but may also listen in all IPv4 # interfaces depending on the operating system. [...]
Starte nun Postfix, saslauthd und Dovecot:

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
chkconfig --levels 235 saslauthd on
chkconfig --levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start

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

telnet localhost 25

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

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und die Zeile

250-AUTH PLAIN LOGIN

siehst, ist alles in bester Ordnung.

[root@server1 ssl]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
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 PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 ssl]#

Gib ein

quit

um zur Kommandozeile des Systems zurückzukehren.

11.1 Maildir

Dovecot verwendet das Maildir Format (nicht mbox). Wenn Du also ISPConfig auf dem Server installierst, vergewissere Dich bitte, dass Du Maildir unter Management -> Server -> Settings -> Email aktivierst. ISPConfig wird dann die notwendige Konfiguration ausführen.

Wenn Du ISPConfig nicht installieren möchtest, musst Du Postfix so konfigurieren, dass es E-Mails zu einer Maildir des Benutzers schickt (Du kannst dies auch ausführen, wenn Du ISPConfig verwendest - es schadet nicht ;-)):

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

12 Apache2 Mit PHP

Jetzt installieren wir Apache mit PHP (PHP 5.1.6):

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Bearbeite dann /etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

und ändere DirectoryIndex zu
[...]
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl [...]
Konfiguriere Dein System nun um Apache beim Hochfahren zu starten:

chkconfig --levels 235 httpd on

Starte Apache:

/etc/init.d/httpd start


12.1 PHP Global Deaktivieren

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

In ISPConfig wirst Du PHP pro Website konfigurieren, das heißt Du kannst festlegen, welche Website PHP Skripte laufen lassen kann und welche nicht. Dies kann nur funktionieren, wenn PHP global deaktiviert ist, da sonst alle Websites in der Lage wären, PHP Skripte laufen zu lassen, egal was Du in ISPConfig festlegst.

Um PHP global zu deaktivieren, bearbeiten wir /etc/httpd/conf.d/php.conf und kommentieren die AddHandler und AddType Zeile 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. # LoadModule php5_module modules/libphp5.so # # 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 ProFTPd

ISPConfig liefert eine bessere Unterstützung für proftpd als vsftpd, also lass uns vsftpd entfernen:

yum remove vsftpd

Da CentOS kein proftpd Paket hat, müssen wir Proftpd manuell erstellen:

cd /tmp/
wget --passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.gz
tar xvfz proftpd-1.3.1.tar.gz
cd proftpd-1.3.1/
./configure --sysconfdir=/etc
make
make install
cd ..
rm -fr proftpd-1.3.1*

Das proftpd Binärpaket wird in /usr/local/sbin installiert, aber wir benötigen es in /usr/sbin, also erstellen wir einen Symlink:

ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd

Erstelle nun das init Skript /etc/init.d/proftpd:

vi /etc/init.d/proftpd


#!/bin/sh
# $Id: proftpd.init,v 1.1 2004/02/26 17:54:30 thias Exp $ # # proftpd This shell script takes care of starting and stopping # proftpd. # # chkconfig: - 80 30 # description: ProFTPD is an enhanced FTP server with a focus towards # simplicity, security, and ease of configuration. # It features a very Apache-like configuration syntax, # and a highly customizable server infrastructure, # including support for multiple 'virtual' FTP servers, # anonymous FTP, and permission-based directory visibility. # processname: proftpd # config: /etc/proftp.conf # pidfile: /var/run/proftpd.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/sbin/proftpd ] || exit 0 RETVAL=0 prog="proftpd" start() { echo -n $"Starting $prog: " daemon proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd } stop() { echo -n $"Shutting down $prog: " killproc proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status proftpd RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/proftpd ]; then stop start fi ;; reload) echo -n $"Re-reading $prog configuration: " killproc proftpd -HUP RETVAL=$? echo ;; *) echo "Usage: $prog {start|stop|restart|reload|condrestart|status}" exit 1 esac exit $RETVAL
Danach machen wir das init Skript ausführbar:

chmod 755 /etc/init.d/proftpd

Als Nächstes öffnen wir /etc/proftpd.conf und ändern Group zu nobody:

vi /etc/proftpd.conf


[...]
Group nobody [...]
Aus Sicherheitsgründen kannst Du auch folgende Zeilen /etc/proftpd.conf hinzufügen (dank Reinaldo Carvalho; mehr Informationen findest Du hier: http://proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd.conf


[...]
DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...]
Nun können wir die System Starup Links für Proftpd erstellen:

chkconfig --levels 235 proftpd on

Und letztendlich starten wir Proftpd:

/etc/init.d/proftpd start


14 Webalizer

Um Webalizer zu installieren, lass einfach Folgendes laufen

yum install webalizer


15 Synchronisation Der System-Uhr

Wenn Du möchtest, dass die System-Uhr mit einem NTP Server synchronisiert werden soll, führe Folgendes aus:

yum install ntp


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

16 Installiere einige Perl Module

In ISPConfig ist SpamAssassin dabei, welches ein paar Perl Module benötigt, um richtig zu funktionieren. Mit nur einem Befehl installieren wir die benötigten Perl Module:

yum install perl-HTML-Parser perl-DBI perl-Net-DNS perl-Digest-SHA1


17 Das Ende

Die Konfiguration des Servers ist nun abgeschlossen. Wenn Du möchtest, kannst Du nun ISPConfig installieren.

17.1 Eine Notiz für SuExec

Wenn Du CGI Skripte unter suExec laufen lassen möchtest, solltest Du /var/www als Home Verzeichnis für Websites festlegen, die von ISPConfig erstellt wurden, da CentOS' suExec mit /var/www as Doc_Root erstellt wird. Lass Folgendes laufen

/usr/sbin/suexec -V

und die Ausgabe sollte so aussehen:

[root@server1 ~]# /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"
[root@server1 ~]#

Wenn Du also suExec mit ISPconfig verwenden möchtest, ändere nicht den Standard-Web-Root (was /var/www ist) wenn Du den Expertenmodus während der ISPConfig Installation verwendest (im Standardmodus kannst Du den Web-Root sowieso nicht ändern, also kannst Du suExec in jedem Fall verwenden).

18 Links