Der perfekte Server – OpenSUSE 10.3 (32-bit)

12 Proftpd

Ich möchte Proftpd an Stelle von vsftpd verwenden, welcher SUSE’s Standard FTP Server ist, da die Server Management Software, die ich auf diesem Server (ISPConfig) installieren werde, Proftpd auf OpenSUSE 10.3 benötigt (auf anderen Distributionen ist das anders). Da es keine OpenSUSE Pakete für Proftpd gibt, muss ich es manuell erstellen:

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

Erstelle jetzt die Datei /etc/init.d/proftpd:

vi /etc/init.d/proftpd

#! /bin/sh
# Copyright (c) 2000-2001 SuSE GmbH Nuernberg, Germany.
# All rights reserved.
#
# Original author: Marius Tomaschewski <mt@suse.de>
#
# Slightly modified in 2003 for use with SuSE Linux 8.1,
# by http://www.learnlinux.co.uk/
#
# Slightly modified in 2005 for use with SuSE Linux 9.2,
# by Falko Timme
#
# /etc/init.d/proftpd
#
### BEGIN INIT INFO
# Provides:                proftpd
# Required-Start:        $network $remote_fs $syslog $named
# Required-Stop:
# Default-Start:        3 5
# Default-Stop:        0 1 2 6
# Description:                Starts ProFTPD server
### END INIT INFO        

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}        

# Force execution if not called by a runlevel directory.
test $link = $base && START_PROFTPD=yes  # Modified by learnlinux.co.uk
test "$START_PROFTPD" = yes || exit 0    # Modified by learnlinux.co.uk        

# Return values acc. to LSB for all commands but
# status (see below):
#
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running        

proftpd_cfg="/etc/proftpd.conf"
proftpd_bin="/usr/local/sbin/proftpd"
proftpd_pid="/usr/local/var/proftpd.pid"        

[ -r $proftpd_cfg ] || exit 6
[ -x $proftpd_bin ] || exit 5        

# Source status functions
. /etc/rc.status        

# First reset status of this service
rc_reset        

case "$1" in
    start)
  echo -n "Starting ProFTPD Server: "
  test -f /etc/shutmsg && rm -f /etc/shutmsg
  /sbin/startproc $proftpd_bin
  rc_status -v
  ;;        

    stop)
  echo -n "Shutting down ProFTPD Server: "
  test -x /usr/local/sbin/ftpshut && /usr/local/sbin/ftpshut now && sleep 1
  /sbin/killproc -TERM $proftpd_bin
  test -f /etc/shutmsg && rm -f /etc/shutmsg
  rc_status -v
  ;;        

    restart)
  ## If first returns OK call the second, if first or
  ## second command fails, set echo return value.
  $0 stop
  $0 start
  rc_status
  ;;        

    try-restart)
  ## Stop the service and if this succeeds (i.e. the
  ## service was running before), start it again.
  ## Note: not (yet) part of LSB (as of 0.7.5)
  $0 status >/dev/null &&  $0 restart
  rc_status
  ;;        

    reload|force-reload)
  ## Exclusive possibility: Some services must be stopped
  ## and started to force a new load of the configuration.
  echo -n "Reload ProFTPD Server: "
  /sbin/killproc -HUP $proftpd_bin
  rc_status -v
  ;;        

    status)
  # Status has a slightly different for the status command:
  # 0 - service running
  # 1 - service dead, but /var/run/  pid  file exists
  # 2 - service dead, but /var/lock/ lock file exists
  # 3 - service not running
  echo -n "Checking for ProFTPD Server: "
  checkproc $proftpd_bin
  rc_status -v
  ;;        

    probe)
  ## Optional: Probe for the necessity of a reload,
  ## give out the argument which is required for a reload.
  [ $proftpd_cfg -nt $proftpd_pid ] && echo reload
  ;;        

    *)
  echo "Usage: $0 {start|stop|status|restart|reload|try-restart|probe}"
  exit 1
  ;;
esac        

# Set an exit status.
rc_exit

Lass Folgendes laufen

chmod 755 /etc/init.d/proftpd
chkconfig –add proftpd

Starte Proftpd:

/etc/init.d/proftpd start

Aus Gründen der Sicherheit kannst Du die folgenden Zeilen /etc/proftpd.conf hinzufügen.

vi /etc/proftpd.conf

[...]
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."
[...]

Gehe sicher, dass Du folgende Zeilen auskommentierst um ftp Nutzern zu erlauben, einen CHMOD auszuführen:

[...]
# Bar use of SITE CHMOD by default
#<Limit SITE_CHMOD>
#  DenyAll
#</Limit>
[...]

und starte Proftpd neu:

/etc/init.d/proftpd restart

13 Webalizer

Um den webalizer zu installieren, lass einfach Folgendes laufen

yast2 -i webalizer

14 Anpassen der Uhr

Wenn Du möchtest, dass die System Uhr an einen NTP Server angeglichen wird, tu einfach Folgendes:

yast2 -i xntp

Füge dann die System Startup Links für ntp hinzu und starte ntp:

chkconfig –add ntp
/etc/init.d/ntp start

15 Installation einiger Perl Module, die von SpamAssassin (kommt zusammen mit ISPConfig) benötigt werden

Lass Folgendes laufen

yast2 -i perl-HTML-Parser perl-Net-DNS perl-Digest-SHA1

16 Deaktivierung von AppArmor

AppArmor ist eine Sicherheitserweiterung von SUSE (ähnlich wie Fedora’s SELinux), die erweiterte Sicherheit gewährleisten sollte. Meiner Ansicht nach braucht man dies nicht um ein sicheres System zu konfigurieren. Es verursacht für gewöhnlich mehr Probleme als es Vorteile bringt (nachdem Du eine Woche mit der Fehlersuche beschäftigt warst, weil eine Sache nicht so funktioniert hat wie sie sollte und Du dann heraus findest, dass alles in Ordnung war und nur AppArmor die Probleme verursacht hat, wirst Du anders darüber denken). Daher deaktiviere ich es (das ist ein Muss wenn Du später ISPConfig installieren möchtest).

So können wir es deaktivieren:

/etc/init.d/boot.apparmor stop
chkconfig -d boot.apparmor

17 Das Ende

Die Konfiguration des Servers ist nun beendet. Wenn Du magst, kannst Du nun ISPConfig darauf installieren indem dieser Anleitung folgst: http://www.ispconfig.org/manual_installation.htm

17.1 Eine Notiz zu SuExec

Wenn Du CGI Skripte unter suExec laufen lassen möchtest, solltest Du /srv/www als den Web Root für Websites festlegen, die von ISPConfig erstellt wurden, da SUSE’s suExec mit /srv/www as Doc_Root erstellt wird. Lass Folgendes laufen

/usr/sbin/suexec2 -V

und die Ausgabe sollte so aussehen:

server1:~ # /usr/sbin/suexec2 -V
-D AP_DOC_ROOT=“/srv/www“
-D AP_GID_MIN=96
-D AP_HTTPD_USER=“wwwrun“
-D AP_LOG_EXEC=“/var/log/apache2/suexec.log“
-D AP_SAFE_PATH=“/usr/local/bin:/usr/bin:/bin“
-D AP_UID_MIN=96
-D AP_USERDIR_SUFFIX=“public_html“
server1:~ #

Wenn Du also suExec mit ISPConfig verwenden möchtest, ändere den Standard Web Root nicht, welcher/srv/www ist, wenn Du den Expertenmodus während der ISPConfig Installation verwendest (im Standardmodus kann man den Web Root sowieso nicht verändern, also kann man suExec in jedem Fall benutzen).

18 Links

Das könnte dich auch interessieren …