proftpd user einrichten?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

proftpd user einrichten?

Beitrag von LeoManiac » 20.01.2006 20:47:44

Servus,

ich möchte für proftpd einen User einrichten der nur Rechte für FTP hat.
Ich kenn mich zwar mittlerweile etwas unter Linux aus aber ich bisher noch nie einen User angelegt und hab keine Ahnung wie ich da vorgehen muss damit der User auch die richtigen Rechte bekommt und man damit keinen Mist bauen kann.

Wäre nett wenn da jemand eine Step by Step Anleitung hat auch vor allen wie ich dann proftp beibringe diesen User zu benutzen.

Benutzeravatar
bodo99
Beiträge: 60
Registriert: 12.05.2003 11:53:13
Wohnort: Bamberg

Beitrag von bodo99 » 20.01.2006 21:35:44

Einfach einen User anlegen, der als Shell /bin/false oder /bin/nologin benutzt und in ProFTPd die Variable 'RequireValidShell off' setzen. Sollte so eigentlich funktionieren. Macht zwar keinen wirklichen Sinn, aber naja. Warum benutzt Du nicht die AnonymousFTP Funktionalität?

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 20.01.2006 22:40:40

Weil ich davon Null Ahnung habe und AnonymousFTP klingt mir zu unsicher.

Benutzeravatar
bodo99
Beiträge: 60
Registriert: 12.05.2003 11:53:13
Wohnort: Bamberg

Beitrag von bodo99 » 23.01.2006 22:27:21

Naja, FTP im allgemeinen ist per se unsicher. Einen neuen User kann man mit

Code: Alles auswählen

useradd -g nogroup -m -p ftppass -s /bin/false ftpuser
Das erstellt einen User mit Namen 'ftpuser' und dem Passwort 'ftppass'. Willst Du dir ein zufälliges Passwort generieren, führe einfach

Code: Alles auswählen

head -c 6 /dev/urandom | md5sum | cut -c 4-12
aus und setz die entsprechende Antwort als Passwort ein. Für die konfiguration des ProFTPd solltest Du mal deine Konfigurationsdatei posten.

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 23.01.2006 23:59:37

Also ich bin jetzt nach diesen Howto vorgegangen:
http://www.debianhowto.de/de:howtos:sarge:proftpd_tls

und meine Conf sieht im Moment so aus:

Code: Alles auswählen

#
# /etc/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
# 

ServerName			"Debian"
ServerType			standalone
DeferWelcome			off

MultilineRFC2228		on
DefaultServer			on
ShowSymlinks			on

TimeoutNoTransfer		600
TimeoutStalled			600
TimeoutIdle			1200

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                	"-l"

DenyFilter			\*.*/

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
#PersistentPasswd		off

# Uncomment this if you would use TLS module:
#TLSEngine 			on

# Uncomment this if you would use quota module:
#Quotas				on

# Uncomment this if you would use ratio module:
#Ratios				on

# 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

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask				022  022
# Normally, we want files to be overwriteable.
AllowOverwrite			on

# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default. 
#DelayEngine 			off

# 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
DefaultChdir /var/www
DefaultRoot /var/www
</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

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 24.01.2006 00:24:55

Code: Alles auswählen

# chroot für alle User der Gruppe ftpuser
DefaultRoot 			~ ftpuser
ändern in

Code: Alles auswählen

DefaultRoot 			~
und in

Code: Alles auswählen

# Root-Login verbieten und gültige Shell verlangen (in /etc/shells)
<Global>
RootLogin 			off
RequireValidShell 	on
DefaultChdir /var/www
DefaultRoot /var/www
</Global>
die "Default..."-Zeilen entfernen. Die sind sonst doppelt (s.o.). Sonst irgendein Problem damit?

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Benutzeravatar
bodo99
Beiträge: 60
Registriert: 12.05.2003 11:53:13
Wohnort: Bamberg

Beitrag von bodo99 » 24.01.2006 22:28:56

Stimmt soweit, bis auf daß wenn der User nur FTP können soll und sich nicht einloggen darf, muß die Zeile mit 'RequireValidShell' auf 'off' gestzt werden. Also so zB:

Code: Alles auswählen

<Global>
RootLogin          off
RequireValidShell    off
DefaultChdir /var/ftp
DefaultRoot /var/ftp
</Global>
Ich würde auch wie ich hier angegeben habe, ein getrenntes FTP-Verzeichnis (/var/ftp) statt dem Webverzeichnis benutzen. Dieses Verzeichnis muß natürlich existieren und für den User unter dem der FTPd läuft, beschreibbar sein.

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 24.01.2006 23:09:00

bodo99 hat geschrieben:Stimmt soweit, bis auf daß wenn der User nur FTP können soll und sich nicht einloggen darf, muß die Zeile mit 'RequireValidShell' auf 'off' gestzt werden.
In dem HowTo, das er benutzt, wird der imo bessere Weg beschritten: RequireValidShell bleibt an und es wird /bin/false nach /bin/ftp kopiert. Jeder User, der nur FTP-Zugang haben soll, kriegt dann "ftp" als Shell (z.B. in /etc/passwd von Hand zu setzen).
bodo99 hat geschrieben:Ich würde auch wie ich hier angegeben habe, ein getrenntes FTP-Verzeichnis (/var/ftp) statt dem Webverzeichnis benutzen.
Äh, mit

Code: Alles auswählen

DefaultRoot      ~
setzt man das Home-Verzeichnis des Users. So hat jeder sein eigenes. Was hat das mit dem "Webverzeichnis" zu tun? Aber soll mir recht sein; nur muss dann das obere DefaultRoot raus. Zwei in einer conf sind nicht gut...

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 26.01.2006 20:49:34

So eine Frage ich noch:

Ist der user wirklich auf das DefaultRoot-Dir und dessen Subdirs beschränkt?

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 26.01.2006 21:15:05

Ja.

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Antworten