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

7 SELinux deaktivieren

SELinux ist eine Sicherheitserweiterung von Fedora, die eine erweiterte Sicherheit bereitstellen sollte. Meiner Meinung nach brauchst Du ein sicheres System nicht konfigurieren. Es verursacht meistens mehr Probleme als Vorteile. Daher deaktiviere ich es (dies ist ein MUSS wenn Du ISPConfig später installieren möchtest).

Bearbeite /etc/selinux/config und setze 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
# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0

Danach müssen wir das System neu starten:

shutdown -r now

8 Installiere die Software

Zuerst importieren wir die GPG Keys für die Software-Pakete:

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

Dann aktualisieren wir unsere bereits existierenden Pakete:

yum update

Nun installieren wir ein paar Software-Pakete, die wir später brauchen werden:

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

9 Quota

(Wenn Du ein anderes Partitionsschema verwendet hast als ich es habe, musst Du dieses Kapitel abstimmen, sodass Quota auf die Partitionen an entsprechender Stelle abgestimmt wird)

Um Quota zu installieren, starten wir folgenden Befehl:

yum install quota

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

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 Folgendes aus

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

um Quota zu aktivieren.

10 Installiere einen Chrooted DNS Server (BIND9)

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

yum install bind-chroot

Als Nächstes ändern wir ein paar wenige Zulassungen und starten BIND:

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
chkconfig –levels 235 named on
/etc/init.d/named start

BIND läuft unter einem Chroot Gefängnis unter /var/named/chroot/var/named/. Ich werde ISPConfig dazu verwenden um BIND (zones, etc.) zu konfigurieren.

11 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 automatisch startet, immer wenn das System hochfährt) und starten den MySQL Server:

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

Nun überprüfe ob der Netzwerkbetrieb aktiviert ist. Lass Folgendes laufen

netstat -tap | grep mysql

Es sollte soetwas in der Art anzeigen:

[[email protected] named]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2059/mysqld
[[email protected] named]#

Wenn nicht, 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 Root Benutzer einzurichten (sonst kann jeder auf Deine MySQL Datenbank zugreifen!).

12 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

Nun 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 die Datei /usr/lib/sasl2/smtpd.conf so bearbeiten, dass Postfix PLAIN und LOGIN Anmeldungen zulässt. So sollte es 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‘
postconf -e ’smtpd_sasl_authenticated_header = yes‘

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 eine /etc/postfix/main.cf Datei haben, die so aussieht (ich habe alle Kommentierungen 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.4.5/samples
readme_directory = /usr/share/doc/postfix-2.4.5/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
smtpd_sasl_authenticated_header = yes
myhostname = server1.example.com

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 festzustellen, ob SMTP-AUTH und TLS richtig funktionieren, lassen wir folgenden Befehl laufen:

telnet localhost 25

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

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und diese Zeile siehst,

250-AUTH LOGIN PLAIN

dann ist alles Bestens.

[[email protected] ssl]# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.
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 LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[[email protected] ssl]#

Gib Folgendes ein

quit

um zur Kommandozeile des Systems zurück zu kehren.

12.1 Maildir

Dovecot verwended ein Maildir Format (nicht mbox), wenn Du also ISPConfig auf Deinen Server installierst, bitte pass auf, dass Maildir unter Management -> Server -> Settings -> Email aktivierst. ISPConfig übernimmt dann die notwendige Konfiguration.

Wenn Du ISPConfig nicht installieren möchtest, musst Du Postfix konfigurieren, damit es E-Mails an eine Maildir eines Benutzers schickt (das kannst Du auch machen, wenn Du ISPConfig verwendest – es tut nich weh ;-)):

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

Das könnte dich auch interessieren …