FTP-Server proftpd

Die Abküzung FTP bedeutet File-Transfer-Protocol. FTP dient dazu, Dateien zwischen verschiedenen Rechnern auszutauschen. Als FTP-Server dient hier das Programm Pro-Ftpd 1.2.6. Dieser Server ist sehr einfach zu konfigurieren und als sicher bekannt. Wir entpacken das Archiv, und übersetzen das Programm. Zusätzlich stellen wir ein, dass die Konfigurationsdateien nach /etc/proftpd wandern sollen.

tar xfj proftpd-1.2.6.tar.bz2
cd proftpd-1.2.6
./configure --sysconfdir=/etc/proftpd
make
make install

Nun legen wir fest, welche Benutzer von welchen Rechnern auf welche Daten Zugriff haben. Die Datei /etc/ftp/ftpusers enthält die Benutzer, die sich niemals einloggen dürfen. Die Vorgabe ist hier ausreichend. Generell sollte allen mächtigen Benutzer, wie root, bin, nobody usw. der Zugriff verweigert werden. In der Datei /etc/ftp/ftpaccess sind die Details definiert, wie der FTP Server sich verhält. Dort kann man die Nachricht festlegen, die der Server sendet, wenn man sich anmeldet, oder auch, wenn man die Verbindung beendet. In der Regel sollten dort keine Anpassungen nötig sein.

Anonymer Zugang

Um anonymes FTP zuzulassen, wird in der /etc/passwd geprüft, ob ein Nutzer mit dem Namen ftp existiert. Notfalls wird der Benutzer mit

groupadd -g <gid> ftp
useradd -u <uid> -g <gid> -d /var/ftp -s /bin/false -c ftp ftp

angelegt. Außerdem wird sichergestellt, dass sich der Nutzer lokal nie anmelden kann. Als gid und uid sollte man Werte verwenden, die nicht nicht benutzt werden, d.h. es sollte kein Eintrag mit der gid in /etc/group vorhanden sein und analog kein Eintrag mit einer uid in der /etc/passwd.

Konfiguration des Servers

Der Ftp-Server wird über die gut kommentierte Datei /etc/proftpd/profptd.conf konfiguriert.

# This is a basic ProFTPD configuration file

ServerName "ftp.laas.priv"
ServerType standalone
#DefaultServer  on

# only listen on internal interface
Port 21
SocketBindTight yes

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask  022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 5

# allow resume
AllowOverwrite yes
AllowStoreRestart yes

# connect and welcome messages
DisplayConnect /etc/proftpd/login.msg
DisplayLogin /etc/proftpd/welcome.msg

# no dns and ident queries
UseReverseDNS off
IdentLookups off

# Set the user and group that the server normally runs at.
User nobody
Group nogroup

#
AuthPAM On
AuthPAMConfig ftp
AuthPAMAuthoritative Off

# only listen on internal interface
<VirtualHost 192.168.0.1>
 ServerName "ftp.laas.priv"
 Port 21
</VirtualHost>

# Normally, we want files to be overwriteable.
<Directory /*>
  AllowOverwrite on
</Directory>

# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
  User ftp
  Group ftp
  # We want clients to be able to login with "anonymous" or "guest" as well as "ftp"
  UserAlias anonymous ftp guest

  # Limit the maximum number of anonymous logins
  MaxClients 4

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin welcome.msg
  DisplayFirstChdir .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>