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
- OpenSUSE: http://www.opensuse.org
- ISPConfig: http://www.ispconfig.org