(S)FTP Jeder kann alles sehen/runterladen

Hallöchen,

ich hatte in den letzten Tagen mal wieder Zeit an meinem Übungs-Schrott-Server (so lautet sein Hostname :D) rumzuspielen.
Nun ist mir zufällig aufgefallen, dass jeder User praktisch alles über FTP sehen und runterladen kann. Löschen und ändern können sie zwar nur eigene Dateien, aber dennnoch möchte ich das gerne lösen. Sollte ich jemals so einen Server in den livebetrieb bringen wollen, ist es ja nicht Sinn der Sache Benutzer anzulegen und ihnen ein Homeverzeichnis zu geben, wenn sie eh alles tun können - dan nkann ich auch gleich root für alles nutzen.

Nunja, ich komme mal auf den Punkt:

Ich nutze FreeBSD 9.2-p3 mit dem vorinstalliertem FTP-Server (also ftpd)
ich hab mich ein wenig erkundigt. Und überall steht, man kann die Benutzer in ihr Homeverzeichnis einsperren in dem man die /etc/ftpchroot ändert bzw. erstmal anlegt und dort die Nutzer oder Gruppen einträgt.

Das hab ich gemacht, ich hab z.B die Gruppe "ftpusers" angelegt und in die /etc/ftpchroot eingetragen "@ftpusers"
Funktionieren tut das allerdings Null.
Erst dachte ich es könnte an der Shell Einstellungen liegen und hab die einfach mal auf "nologin" gesetzt das resultat ist, der User kannsich einfach nirgends mehr anmelden. (was tu ich eigentlich wenn ich jemanden nur auf den FTP Zugang geben will?)
Ich such seit gestern Abend Anleitungen hab mir alles angeguckt und überall steht das selbe "ganz einfach, einfach die ftpchroot anlegen und die Benutzer/Gruppen eintragen".
Und eine andere Lösung die ich fand war "ssh2 installieren..." hier gings schon nich mehr weiter weil ssh2 aus den Ports entfernt wurde :D

Ich finde einfach keine Lösung ich hab ausprobiert und rumgefummelt bis ich fast angefangen habe zu weinen. Ich hoffe mir kann jemand weiterhelfen :D

Lieben Gruß.
 

Hat mich leider nich weitergebracht. Wenn ich mich nun mit einem solchem Benutzer versuche über FTP anzumelden erhalte ich die Meldung Access denied. Bei SFTP erhalte ich die Meldung:

Fehler: Server unexpectedly closed network connection
Fehler: Herstellen der Verbindung zum Server fehlgeschlagen

Die Anleitung aber habe ich fast 1:1 umgesetzt. Nur den Teil
PermitTTY no in der sshd_config musste ich entfernen, weil das in diesem Block nicht erlaubt ist.
 
Das hab ich gemacht, ich hab z.B die Gruppe "ftpusers" angelegt und in die /etc/ftpchroot eingetragen "@ftpusers"
Funktionieren tut das allerdings Null.

Was genau hast du in die ftpchroot eingetragen?
Bei mir sieht es in etwa so aus und das funktioniert wunderbar:
Code:
ftpuser1 /pfad/zum/ordner
ftpuser2 /noch/ein/pfad

Gruss
 
<Global>
DefaultRoot ~
</Global>

Ist in der sshd_config nicht erlaubt, dann startet der SSH gar nicht erst wieder.

Was genau hast du in die ftpchroot eingetragen?

Ich habs versucht mit:

@ftpusers
ftpusers ist eine gruppe.

Ich habs versucht mit nur einem usernamen, ich habs versucht mit usernamen und daneben den Pfad zu seinem Homeverzeichnis iund mit allen variationen dieser 3 Sachen hab ich es versucht. Nichts funktioniert bei mir.

Edit: Wegen des Vorschlags ftpd neu zu installieren: Ich finde ftpd gar nicht in den Ports...?
 
@ftpusers
ftpusers ist eine gruppe.

Der User mit dem du dies versuchst ist aber in dieser Gruppe "ftpusers" eingetragen oder?

In "etc/ftpusers" sind alle User aufgelistet, die KEINEN Zugriff haben. Ist dort der User eingetragen? Wenn ja löschen.

Weiter in "etc/ftpchroot" hier für den Anfang nur den Systemuser eintragen, mit welchem du dich verbinden möchtest. Dann den Daemon neu/starten und testen: "ftp://<USER>@<IP>".

Funktioniert ohne Probleme hier. Wenn nicht, zeig mal die Dateien /etc/group und /etc/passwd.
 
Der User mit dem du dies versuchst ist aber in dieser Gruppe "ftpusers" eingetragen oder?

Korrekt.

In "etc/ftpusers" sind alle User aufgelistet, die KEINEN Zugriff haben. Ist dort der User eingetragen?

Nein.

Ansonsten gemacht wie Du sagtest, ohne Erfolg:

Code:
# $FreeBSD: release/9.2.0/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
#
root:*:0:0:Charlie &:/root:/bin/tcsh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin
auditdistd:*:78:77:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin


christian:*:1002:1001:User &:/home/christian:/usr/sbin/nologin
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/usr/sbin/nologin
webhoster:*:1003:1003:User &:/usr/local/www/domains:/bin/sh
cups:*:193:193:Cups Owner:/nonexistent:/usr/sbin/nologin

# $FreeBSD: release/9.2.0/etc/group 218046 2011-01-28 22:28:12Z pjd $
#
wheel:*:0:
daemon:*:1:
kmem:*:2:
sys:*:3:
tty:*:4:
operator:*:5:root
mail:*:6:
bin:*:7:
news:*:8:
man:*:9:
games:*:13:
ftp:*:14:
staff:*:20:
sshd:*:22:
smmsp:*:25:
mailnull:*:26:
guest:*:31:
bind:*:53:
proxy:*:62:
authpf:*:63:
_pflogd:*:64:
_dhcp:*:65:
uucp:*:66:
dialer:*:68:
network:*:69:
audit:*:77:
www:*:80:
hast:*:845:
nogroup:*:65533:
nobody:*:65534:
christian:*:1001:
ftpusers:*:1002:christian
mysql:*:88:
webhoster:*:1003:
cups:*:193:
 
Schau doch mal in die Logfiles /var/log/messages und /var/log/auth.log.
Mein Verdacht: /usr/sbin/nologin ist keine gültige Shell. Der ftpd liest /etc/shells und verweigert User, die eine Shell haben, die dort nicht drin steht.

Also entweder dem User eine Shell geben (die in /etc/shells aufgelistet ist) oder /usr/sbin/nologin zu /etc/shells hinzufügen.


Rob
 
Also entweder dem User eine Shell geben (die in /etc/shells aufgelistet ist) oder /usr/sbin/nologin zu /etc/shells hinzufügen.

Wenn ich /usr/sbin/nologin in die /etc/shells eintrage, dann hab ich beim anlegen eines neuen Users zweimal "nologin" bei der Shell zur Auswahl. Ist das korrekt so?

Wie dem auch sei: Funktionoieren tuts auch nicht, ob mit oder ohne den Eintrag.

Ich hab mal in die Logs geschaut und das sind die letzten Einträge:

Apr 3 14:40:16 localhost nologin: Attempted login by christian on UNKNOWN
Apr 3 14:42:16 localhost sshd[40448]: fatal: bad ownership or modes for chroot directory component "/home"
Apr 3 14:42:22 localhost sshd[40452]: fatal: bad ownership or modes for chroot directory component "/home"

Apr 3 14:42:22 localhost sshd[40452]: fatal: bad ownership or modes for chroot directory component "/home"
 
"/usr/sbin/nologin" das ist natürlich quatsch. Ändere das wie @KobRheTilla schon gesagt hat. Zweitens kontrolliere die Berechtigungen von dem Ordner. Drittens musst du unterscheiden zwischen FTP, FTPs und sftp! Das sind 3 verschiedene Dinge. "ftpd" macht FTP plaintext.
 
Ich würde sagen, wir fangen mal ganz von vorne an. Da blickt ja keine Sau mehr durch.

Fangen wir mal an mit dem anlegen eines neuen Users. Scheißen wir mal auf eine extra Gruppe die in ihr Homeverzeichnis eingesperrt werden soll, wir regeln für jeden User einzeln.

Username: test100
Full name:
Uid (Leave empty for default):
Login group [test100]:
Login group is test100. Invite test100 into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/test100]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : test100
Password : *****
Full Name :
Uid : 1010
Class :
Groups : test100
Home : /home/test100
Home Mode :
Shell : /usr/sbin/nologin
Locked : no

So korrekt, ja?

Nun tue ich was? /etc/ftpchroot ändern oder sshd_config? Oder beides? Und was soll ich da ändern?

Ich hab die letzten Tage gefühlte 8.000 verschiedene Lösungswege gesehen und ausprobiert und keiner hat funktioniert. Langsam komme ich etwas durcheinander, deswegen beginnen wir einfach bei 0.
 
Ok, wir haben einen User angelegt. :-D

Username: test100
Full name:
Uid (Leave empty for default):
Login group [test100]:
Login group is test100. Invite test100 into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: csh
Home directory [/home/test100]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : test100
Password : *****
Full Name :
Uid : 1010
Class :
Groups : test100
Home : /home/test100
Home Mode :
Shell : /bin/csh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (test100) to the user database.

Wie geht mein Weg weiter?
 
Den User in "etc/ftpchroot" eintragen und wenn er in der Datei "etc/ftpusers" vorhanden ist, austragen. Dann den den Daemon starten mit "service ftpd start" oder mit "onestart", wenn du nichts in der "etc/rc.conf" eingetragen hast. Firewall prüfen und dann testen.

"ftp://<USER>@<IP>"
 
Funktioniert nicht. Wenn ich mich über ftp versuche zu verbinden passiert folgendes:

Status: Verbindung hergestellt, warte auf Willkommensnachricht...
Antwort: 220-
Antwort: 220 FTP server (Version 6.00LS) ready.
Befehl: USER test100
Antwort: 331 Password required for test100.
Befehl: PASS ***********
Antwort: 230 User test100 logged in, access restrictions apply.
Status: Der Server unterstützt keine Nicht-ASCII-Zeichen.
Status: Verbunden
Status: Empfange Verzeichnisinhalt...
Befehl: PWD
Antwort: 257 "/" is current directory.
Befehl: TYPE I
Antwort: 200 Type set to I.
Befehl: PASV
Antwort: 227 Entering Passive Mode (5,199,142,115,226,170)
Befehl: LIST
Fehler: Zeitüberschreitung der Verbindung
Fehler: Verzeichnisinhalt konnte nicht empfangen werden

Über sftp kann ich mich ohne Probleme verbinden, aber das alte Lied: Nimm Dir was Du willst, alles kostenlos für jedermann! Kann also immer noch in jedes Verzeichnis und runterladen was ich will.

In die ftpchroot hab ich einmal nur den user test100 eingetragen und es dann nochmal ausprobiert mit
test100 /home/test

Beides ohne sonderliche Fortschritte.
 
Du musst in die Logfiles sehen, was sagt /var/log/messages?
Hast du eine Firewall aktiv?
Versuch es mal ohne passive mode.

Rob
 
Apr 3 16:17:36 localhost sshd[41136]: fatal: Read from socket failed: Connection reset by peer [preauth]

Firewall ist aktiv ja, aber FTP ist freigegeben.
 
Ich glaube es ist geschafft... Wenn ich bei Filezille einstelle "Transfermodus aktiv" dann komme ich nun auch über das ftp-Protokoll rein und dort funktioniert es dann auch, dass der Benutzer test100 in /home/test100 eingesperrt ist. ABER er kann sich trotzdem noch über sftp einloggen und dort immer noch tun und lassen was er will?
 
Oh mein Gott! Wir habens geschafft! :D

in /etc/shells noch eintragen /usr/sbin/nologin
dem User nologin zugang geben und er kann nur noch auf ftp zugreifen und auch dort nur in seinem eigenem Verzeichnis.

Hezrlichen Dank euch allen für die Mühe und die Geduld. :-D
 
Was passiert mit allen anderen usern, die nologin als shell haben?
Hat der Eintrag auf die irgendwelche Auswirkungen?
 
Die können sich nur nicht über ssh/sftp einloggen. Über FTP können sie es aber. Und da gilt wieder daqs selbe: Tu wa sDu willst, lad runter was Dich interessiert, es sind keine Grenzen gesetzt.

Ist jetzt aber nicht sooo das Problem, wenn man die Einträge in der ftpchroot macht dann funktioniert es ja wie es soll.
 
Ähmmmm .. vielleicht verstehe ich etwas falsch, aber auch Du willst sicher nicht, daß sich irgendein doofer Daemon per ftp auf deinem Rumspielserver einloggen kann oder?
 
Da hast Du zwar Recht, aber: Wozu gibt es die /etc/ftpusers? Dort den User eintragen der überhaupt gar keinen Zugriff haben soll und gut ist? So dachte ich mir das jetzt...

So würde er doch zum reinem Systemnutzer werden also er kann nur noch vom System aus dem innerem heraus genutzt werden. Von außen anmelden ist dann nich mehr drin. Wie bei root eben, den hab ich ja auch für jegliche Anmeldung gesperrt.
 
Zurück
Oben