Der perfekte Server - OpenSUSE 10.3 (32-bit) - Seite 9

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

3 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: Till

Hinweis:

Wenn Ihr den folgenden Fehler beim aktivieren des "fam" Dienstes erhaltet:

hxxxxxx:/etc/postfix/ssl # chkconfig --add fam
insserv: Service portmap has to be enabled for service fam
insserv: exiting now!
/sbin/insserv failed, exit code 1
fam 0 off 1 off 2 off 3 off 4 off 5 off 6 off
xinetd based services:
fam: off

Dann führt den folgenden Befehl aus:

chkconfig --add portmap

aund versucht dann erneut, den fam Dienst zu aktivieren:

chkconfig --add fam


Von: Batho

Nach der Installation von proftpd (als rpm Paket von http://download.opensuse.org/repositories/server:/ftp/openSUSE_10.3/i586/) tritt das Phänomen auf, dass nach der ersten ftp-session proftpd beendet wird.
Das liegt daran, dass proftpd mit der Option --enable-devel=coredump übersetzt wurde. Laut Entwickler ist dies aber nur für die Entwicklung notwendig.
Es ist daher notwendig, sich das src Paket von http://download.opensuse.org/repositories/server:/ftp/openSUSE_10.3/src/ zu holen
- Anschliessend wird das Paket mit yast -i proftpd-1.3.1-6.1.src.rpm installiert
- Im Verzeichnis /usr/src/packages/SPECS befindet sich dann die Datei proftpd.spec
- Dort die Option suchen und die Zeile entfernen
- Anschliessend kann das Paket mit rpmbuild -ba proftpd.spec neu übersetzt werden.
- Die rpm-Pakete befinden sich dann in /usr/src/packages/RPMS/i586 und können mit yast -i ... installiert werden (mit yast installierte Pakete vorher deinstallieren).


Von: Prismatech

hab immer das prob bei euch wenn bei den codes mit kopieren einfügen arbeite die von putty nicht sauber übernommen werden welchen translation muss ich da einsellen das das sauber geht mit den sonderzeichen