PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vsftpd beschränken: limits.conf hat nicht den Effekt



Newbie314
10.11.07, 10:27
Hallo !

.. nach längerem Lesen und Experimentieren habe ich folgendes geschafft: für gelegentlichen Dateitransfer auf meinen Heim-PC habe ich vsftpd so installiert und konfiguriert dass nur ein bestimmter Nutzer des Systems ftp-en kann und in sein Heimatverzeichnis eingesperrt bleibt.

Da ich diesen Dienst notfalls auch mal übers Wochenende laufen lassen können will will ich nun dafür sorgen dass dieser Nutzer maximal 3x per FTP gleichzeitig einloggen und maximal 10 Gb an Plattenplatz zuschreiben kann. Letzteres klappt aber noch nicht: ich kann problemlos 5-6 mal gleichzeitig "ftp localhost" ausführen ohne abgewiesen zu werden. Das mit den 10 Gb probiere ich lieber so nicht aus ....

(Der gewünschte Zustand wäre dass der 4. "ftp localhost" Befehl abgewiesen wird .... und bei Erreichen des Plattenplatzes der Transfer beendet wird...)

Mein pam-limits file aus dem /etc/security


ftpman - maxlogins 3
ftpman - data 10000000

# End of file


Damit vsftpd das limits File verwendet habe ich in pam.d folgendes vsftpd-file:


#%PAM-1.0

# Uncomment this to achieve what used to be ftpd -A.
# auth required pam_listfile.so item=user sense=allow file=/etc/ftpchroot onerr=fail

auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/ftpmenneken
# Uncomment the following line for anonymous ftp.
#auth sufficient pam_ftp.so
auth required pam_shells.so
auth include common-auth
account include common-account
password include common-password
session required pam_loginuid.so
session required pam_limits.so
session include common-session


Wie gesagt: nur ftpman (einziger Eintrag in der Datei ftpmenneken) kann ftp auf den Rechner durchführen, alle anderen werden wie erwartet abgelehnt... wie schränke ich jetzt die Resourcen für ftpman ein ?

Vielen Dank im Vorraus, und nein, keine Angst, ich werde mir keinen Rootserver mieten :D

temir
10.11.07, 14:09
Laut `man 8 pam_limits`:


EXAMPLES
For the services you need resources limits (login for example) put a the following line in /etc/pam.d/login
as the last line for that service (usually after the pam_unix session line):

#%PAM-1.0
#
# Resource limits imposed on login sessions via pam_limits
#
session required pam_limits.so

sollte Zeile mit pam_limits.so die letzte sein, - schon getestet?

Für Plattenplatz wäre Quota zu empfehlen (FS muss es aber unterstützen).

Roger Wilco
10.11.07, 14:44
Wurde dein vsftpd überhaupt mit Unterstützung für PAM gebaut? (ggf. mit "ldd `which vsftpd`" prüfen)

Newbie314
10.11.07, 16:25
Danke !

Dass pam_limits so einfach in den man pages steht war mir neu... das werd ich mir merken.

@Wilco : Ja, vsftpd wurde mit pam Compiliert, anders wäre ich nie auf PAM aufmerksam geworden ;) der "ldd" Befehl war mir neu, ist aber super-interessant. Er liefert die libpam.so.0 .

Habe den Eintrag in die letzte Zeile verlegt. Wenn ich das System richtig verstehe muss ich nichts neu starten nachdem ich eine pam Datei verändert habe ?

Leider funktioniert die Beschränkung trotzdem nicht....

Newbie314
10.11.07, 16:43
Habe noch etwas probiert:

die vsftpd Datei wird übrigens beachtet, was ich darin editiert habe hat das Authenthifizierungsverhalten verändert.

Was ich in der /etc/limits.conf ändere scheint dagegen keinerlei Effekt zu haben: falls ftp nicht als "login" zählt habe ich mal die Anzahl der Prozesse für den user auf 3 beschränkt ... auch kein Effekt.

Ich habe auch in der vsftpd Datei mit conf=/etc/security/limits.conf explizit die Datei angegeben .... nützt nichts ...

Mit ps -aef hatte ich 6 Prozesse für den Nutzer .. kein Problem .... konnte munter weiter per ftp einloggen....

Ich habe mir auch all die "include" Dateien angesehen: drinnen stehen nur "require" und "requisite" Befehle, das heißt das require pam_limits sollte eigentlich abgearbeitet werden .... jetzt bin ich an der Stelle ratlos ... irgend etwas habe ich noch nicht verstanden .....

Edit: auch mit "debug" option im pam_limits zeigt var/log/messages nur die erfolgreichen logins. Wo fände ich evtl. Fehlermeldungen ? Wie finde ich heraus ob das Modul überhaupt ausgeführt wird ?

temir
12.11.07, 17:37
Fangen wir noch mal von vorne an (man vsftpd.conf):


check_shell
Note! This option only has an effect for non-PAM builds of vsftpd. If disabled, vsftpd will not check
/etc/shells for a valid user shell for local logins.

Default: YES


session_support
This controls whether vsftpd attempts to maintain sessions for logins. If vsftpd is maintaining sessions,
it will try and update utmp and wtmp. It will also open a pam_session if using PAM to authenticate, and
only close this upon logout. You may wish to disable this if you do not need session logging, and you wish
to give vsftpd more opportunity to run with less processes and / or less privilege. NOTE - utmp and wtmp
support is only provided with PAM enabled builds.

Default: NO

pam_service_name
This string is the name of the PAM service vsftpd will use.

Default: ftp

- das alles schon entsprechend angepasst/daran gedreht?

Newbie314
12.11.07, 20:39
pam_service_name war im Default File bereits richtig gesetzt, aber die session_support Variable hat komplett gefehlt, war also auf "No"

Daher habe ich jetzt die Zeile
session_support=YES
eingefügt, und seither geht es.

Vielen Dank !

Als ich mich mit der vsftpd.conf beschäftigt hatte war mir der Pam -Service noch nicht klar...

Für mich war dieses Experiment _sehr_ lehrreich .. vielen Dank für Eure Hilfe ! :)

temir
12.11.07, 21:40
Aha, jetzt weiß ich auch, wie man vsftpd einschränkt 8-)

Zieht das Limit fürs "data"?

Newbie314
13.11.07, 08:24
nein, zumindest nicht so wie ich es erwartet hatte:

Habe das Limit auf 100 K begrenzt und per ftp localhost eine 200 K Datei aufgespielt. Ging problemlos.

Wenn ich die "Maxlogins" auf 3 setze kann man maximal 2x einloggen. Hat mich etwas überrascht, erinnert mich an das Bonmot "wieviele Durchläufe hat eine Schleife ?" .. ist aber in der Praxis kein Problem, ich will ja nur verhindern dass ein Script-Kid mir 10-millionen Prozesse startet.

Für das Limit habe ich bereits quota nachinstalliert und werde bei nächster Gelegenheit die fstab anpassen .. dann probiere ich das nochmal .. allerdings indem ich per "edquota" direkt ein hard-limit für den ftp-user anlege.

Werde über Winter mal bei den Mods anfragen ob ich aus dem Thread hier ein kleines Tutorial zusammenschreiben soll... für mich war hier jedenfalls ne Menge an Lerneffekt drin ....

temir
13.11.07, 21:32
Jep, ein Tutorial (oder Eintrag in "Tipps und Tricks") wäre wirklich nicht schlecht,
zumal das Thema limits so umfangreich ist.

Newbie314
13.11.07, 21:59
.. auf "zu erledigen" Liste notiert ... im Winter bekommt einer der Moderatoren in den HowTo Bereichen eine PN ....