Zur Vorbereitung auf meine Abschlussprüfung habe ich mit einigen Schulkollegen abgesprochen, einen gemeinsamen FTP-Server aufzusetzen, sodass wir zentral Dokumente und Prüfungen pflegen können.
Nachfolgend ein knappes HowTo, wie man einen ProFTPd-Server auf Debian 4 im Daemon-Mode installiert und zum Zugriff von lokalen Benutzern auf deren Home-Verzeichnisse konfiguriert.
1 2 |
apt-get update apt-get install proftpd |
1 2 3 |
# Gruppe für FTP-Zugang anlegen addgroup ftpuser usermod -G ftpuser username |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#/etc/proftpd/proftpd.conf # This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "ServerName" ServerType standalone DeferWelcome off ShowSymlinks on MultilineRFC2228 on DefaultServer on AllowOverwrite on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayFirstChdir .message DenyFilter *.*/ # Uncomment this if you are using NIS or LDAP to retrieve passwords: #PersistentPasswd off # Port 21 is the standard FTP port. Port 21 # 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 30 # Set the user and group that the server normally runs at. User nobody Group nogroup # Normally, we want files to be overwriteable. <Directory /*> # Umask 022 is a good standard umask to prevent new files and dirs # (second parm) from being group and world writable. Umask 022 022 AllowOverwrite on </Directory> # Hier meine Ergänzungen # chroot für alle User der Gruppe ftpuser DefaultRoot ~ ftpuser # Login nur von Mitgliedern der Gruppe ftpuser erlauben <Limit LOGIN> DenyGroup !ftpuser </Limit> # Root-Login verbieten und gültige Shell verlangen (in /etc/shells) <Global> RootLogin off RequireValidShell on </Global> # Speed erhoehen UseReverseDNS off IdentLookups off # Logging Formate LogFormat default "%h %l %u %t "%r" %s %b" LogFormat auth "%v [%P] %h %t "%r" %s" LogFormat write "%h %l %u %t "%r" %s %b" # Logging aktivieren # alle logins ExtendedLog /var/log/ftp_auth.log AUTH auth # file/dir Zugriff ExtendedLog /var/log/ftp_access.log WRITE,READ write # für paranoide (vorsicht, erzeugt grosse Logfiles) #ExtendedLog /var/log/ftp_paranoid.log ALL default UseIPv6 off |
Um Benutzern den Zugriff per Shell zu verbieten, sollte man eine Pseudoshell erstellen:
1 2 |
cp /bin/false /bin/ftp echo "/bin/ftp" >> /etc/shells |
Beim Erstellen eines neuen Benutzers kann nun die Shell per Parameter übergeben werden (usermod -s /bin/ftp username) oder bei bestehenden Benutzern geändert werden (useradd … -s /bin/ftp … username)