www.ProFTPD.de
13. März 2007, 18:43:59 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
  Übersicht Hilfe Suche Login Registrieren  
  Zeige Beiträge
Seiten: [1]
1  ProFTPD / ProFTPD - Deutsch / Re: FYI: Secunia meldet Sicherheitslücke in ProFTPd am: 21. November 2006, 11:20:49
Die Meldung ist wirklich sehr dürftig - man hofft, dass wenigstens der Entwickler mit brauchbaren Infos versorgt wurde. Secunia ist allerdings recht bekannt, ich denke nicht, dass die es nötig haben, Traffic durch sowas zu generieren. Dann doch eher durch das 74538. Loch im IE Lächelnd oder das 112. im Firefox  Unentschlossen
2  ProFTPD / ProFTPD - Deutsch / FYI: Secunia meldet Sicherheitslücke in ProFTPd am: 10. November 2006, 16:34:54
TITLE:
ProFTPD Unspecified Vulnerability

SECUNIA ADVISORY ID:
SA22803

VERIFY ADVISORY:
http://secunia.com/advisories/22803/

CRITICAL:
Moderately critical

IMPACT:
System access

WHERE:
From remote

SOFTWARE:
ProFTPD 1.3.x
http://secunia.com/product/5430/

DESCRIPTION:
Evgeny Legerov has reported a vulnerability in ProFTPD, which
potentially can be exploited by malicious people to compromise a
vulnerable system.

The vulnerability is caused due to an unspecified error.

Successful exploitation may allow execution of arbitrary code.

The vulnerability is reported in version 1.3.0. Other versions may
also be affected.

SOLUTION:
Restrict access to the service.

PROVIDED AND/OR DISCOVERED BY:
Evgeny Legerov, GLEG Ltd.
3  ProFTPD / ProFTPD - Deutsch / Unnötige SQL-Verbindung am: 02. Oktober 2006, 14:29:17
Hallo,

wir überprüfen periodisch, ob der FTP-Server (proftpd 1.3/mod_mysql) auf unseren Servern korrekt läuft. Dazu lassen wir ein Skript eine Verbindung aufbauen, versuchen dort aber keinen Login, sondern senden QUIT

Dies sollte rein von der Logik keine SQL-Verbindung über mod_sql erfordern. Trotzdem werden Verbindungen zum FTP-Server aufgebaut, bei sehr vielen Checks über einen kleinen Zeitraum zu viele. Kann man dieses Verhalten irgendwie steuern bzw. abschalten? Hier der betreffende Teil aus der proftpd conf:

Code:
<IfModule "mod_sql.c">
  AuthOrder                     mod_auth_unix.c mod_sql.c
  SQLConnectInfo                ******

  SQLLogFile                    /var/log/proftpd_sql.log
  SQLAuthTypes                  Crypt Plaintext
  SQLAuthenticate               users
  SQLUserInfo                   ftp_users username password uid gid homedir shell
  SQLMinUserUID 500
  SQLMinUserGID 500

  #allow only enabled users and users for this specific server
  SQLUserWhereClause            "login_enabled = 'Y' AND Server_Name = SUBSTRING_INDEX(USER(),'@',-1)"

  SQLLog PASS login
  SQLNamedQuery login UPDATE "last_login=now(), login_count=login_count+1 where username='%u'" ftp_users

  SQLLog RETR download
  SQLNamedQuery download UPDATE "down_count=down_count+1, down_bytes=down_bytes+%b where username='%u'" ftp_users

  SQLLog STOR upload
  SQLNamedQuery upload update "up_count=up_count+1, up_bytes=up_bytes+%b where username='%u'" ftp_users
</IfModule>

4  ProFTPD / ProFTPD - Deutsch / mod_vroot Bug am: 26. September 2006, 13:13:56
proftpd 1.3.0 mit mod_vroot 0.7.1

Die Benutzer liegen in ihrem Home-Verzeichnis /usr/home/[login] und sind per DefaultRoot ~ dort eingesperrt. Zudem läuft mod_vroot um den Zugriff auf einen symbolischen Link zu gestatten.

Der Benutzer will ein Verzeichnis /usr/home/[login] anlegen. Der gesamte Pfad für dieses Verzeichnis würde also lauten: /usr/home/[login]/usr/home/[login]

Das Verzeichnis kann nicht angelegt werden (login "ftptest" für diesen Test):
Code:
Antwort:   150 Opening ASCII mode data connection for file list
Antwort:   226 Transfer complete.
Status:   Auflistung des Verzeichnisinhalts erfolgreich
Befehl:   CWD /usr/home/
Antwort:   250 CWD command successful
Befehl:   MKD ftptest
Antwort:   550 ftptest: No such file or directory
Befehl:   REST 0
Antwort:   350 Restarting at 0. Send STORE or RETRIEVE to initiate transfer
Fehler:   Verbindung getrennt


Auch wenn ich das Verzeichnis per SSH anlege, wird es im FTP-Client nicht dargestellt und auch der direkte Wechsel ins Verzeichnis gibt einen Fehler 550

Kann das jemand bestätigen und/oder mal bei sich testen? Es tritt wie gesagt nur auf, wenn mod_vroot angeschaltet ist...

Übrigens, auch /usr/home/[login]/usr/home/[login]irgendetwas schlägt fehl  Schockiert
5  ProFTPD / ProFTPD - Deutsch / Re: mod_mysql Verständnisfrage am: 21. September 2006, 16:08:41
Wenn man die bisherige "Lösung" Zwinkernd sieht, ist mod_vroot schon mal ein großer Sprung in die richtige Richtung. Eine Lösung per bind oder gar eine Änderung der Filesystemstruktur kommen im Moment leider nicht in Frage.
6  ProFTPD / ProFTPD - Deutsch / Re: mod_mysql Verständnisfrage am: 21. September 2006, 15:36:39
Ich hab das mal probiert - in meinem FTP-Programm (Filezilla) sieht der Symlink jetzt komplett aus wie ein normales Verzeichnis! Wirklich erstaunlich - vom Handling her (also auch der angezeigte Pfad im FTP-Programm) sieht es aus, als wenn es keinen Symlink gäbe sondern nur ein ganz normales Verzeichnis...

Ich werd das mal weiter testen ob es nicht doch irgendeinen Fallstrick gibt...klingt ja fast zu gut um wahr zu sein Smiley
7  ProFTPD / ProFTPD - Deutsch / Re: mod_mysql Verständnisfrage am: 21. September 2006, 14:09:16
Danke - mod_vroot werde ich mir auf jeden Fall ansehen - war mit der bisherigen Lösung auch immer sehr unzufrieden.

Ansonsten läuft die Konfiguration jetzt wie vorgesehen, auch meine "Spezialwünsche" laufen hervorragend. Vielen Dank für die tolle Hilfe!
8  ProFTPD / ProFTPD - Deutsch / Re: mod_mysql Verständnisfrage am: 21. September 2006, 12:50:07
Die DefaultRoot Geschichte hab ich mir nicht ausgedacht - es gibt wohl (leider) Gründe, warum das so gemacht wurde. Soweit ich mich erinnere, hat es was damit zu tun, dass die User Zugriff auf 2 Verzeichnisse haben sollen (ohne 2. Login). Gibt es da ne andere Möglichkeit?

Ansonsten habe ich das Problem beheben können (deine Beispiel-Konfig hat mich auf den richtigen Weg gebracht Smiley )

SQLMinUserUID 500
SQLMinUserGID 500

Diese Werte stehen standardmäßig auf 999/999 - und meine 750 aus dem Beispiel fallen da nicht rein...
9  ProFTPD / ProFTPD - Deutsch / Re: mod_mysql Verständnisfrage am: 21. September 2006, 12:07:25
Ok - danke erstmal für deine Antwort...das macht je erstmal Hoffnung - dachte schon, das würde gar nicht funktionieren Smiley

Also - ich hab jetzt PAM deaktiviert udn AuthOrder gesetzt, gleiches Ergebnis. Login geht - hier mal die relevanten Konfigurationsdaten:

Code:
###############################################################################
#
# GENERAL CONFIGURATION
#
###############################################################################

AuthPAM                         off
User                            nobody
Group                           nobody
DefaultRoot                     /
Umask                           022
CommandBufferSize               255
DeferWelcome                    on
IdentLookups                    off
ListOptions                     "-a"
MaxClients                      40
MaxClientsPerHost               22
PassivePorts                    49152 65534
PathAllowFilter                 "^[a-zA-Z0-9öäüÖÄÜ \/_\.\+\-\:\,]+$"
PathDenyFilter                  "(\.ftp[a-z]+$)|(passwd.cdb)"
TimeoutIdle                     3600
TimeoutStalled                  3600
WtmpLog                         on
TimesGMT                        off
RequireValidShell               off

<Directory /*>
    HideUser                    root
    AllowOverwrite              on
</Directory>
AuthOrder mod_auth_unix.c mod_sql.c

###############################################################################
#
# MYSQL
#
###############################################################################
<IfModule "mod_sql.c">

  SQLConnectInfo                [db]@[server] [login] [pass]
  SQLLogFile                    /var/log/proftpd_sql.log
  SQLAuthTypes                  Crypt Plaintext
  SQLAuthenticate               users
  SQLUserInfo                   ftp_users username password uid gid homedir shell

  #allow only enabled users and users for this specific server
  SQLUserWhereClause            "login_enabled = 'Y' AND Server_Name = SUBSTRING_INDEX(USER(),'@',-1)"

  SQLLog PASS login
  SQLNamedQuery login UPDATE "last_login=now(), login_count=login_count+1 where username='%u'" ftp_users

  SQLLog RETR download
  SQLNamedQuery download UPDATE "down_count=down_count+1, down_bytes=down_bytes+%b where username='%u'" ftp_users

  SQLLog STOR upload
  SQLNamedQuery upload update "up_count=up_count+1, up_bytes=up_bytes+%b where username='%u'" ftp_users
</IfModule>

Jetzt das Anwendungsbeispiel:

Der Systemuser heißt foo und hat die UID/GID 750
Der "Unteruser": foo_0
Code:
id username uid gid password homedir        shell      login_enabled login_count last_login          up_count up_bytes down_count down_bytes Server_Name
1  foo_0    750 750 test1234 /usr/home/foo/ /bin/false Y             14          2006-09-20 15:51:16 0        0        0          0          server.name


Einloggen klappt wie gesagt. Aber beim Verzeichniswechsel:

Code:
Befehl: CWD temp
Antwort: 550 temp: Permission denied
Fehler: Dateiliste konnte nicht empfangen werden

Siehst du einen Fehler in der Konfiguration?
10  ProFTPD / ProFTPD - Deutsch / mod_mysql Verständnisfrage am: 20. September 2006, 17:02:22
Hallo,

folgendes ist mein Endziel: Jeder Systemuser soll die Möglichkeit haben, "Unteruser" anzulegen, die jeweils nur auf bestimmte Unterverzeichnisse Zugriff haben sollen. Also im Prinzip eine Funktion, die viele Oberflächen (syscp etc.) realisieren. Diese Unteruser sollen mit der gleichen UID/GID wie der entsprechende Systemuser unterwegs sein, so dass Dateien beliebig änderbar sind.

Folgendermaßen habe ich es probiert: Systemuser loggen sich ganz normal über PAM ein, für die Unteruser wird mod_mysql benutzt. Diesen Usern gebe ich die gleiche UID/GID wie dem Systemuser (die hole ich aus /etc/passwd). <-- Bei dem Schritt bin ich mir nicht sicher, ob ein Verständnisproblem vorliegt, DENN: Der Unteruser kann sich zwar einloggen, hat dann aber nur World-Rechte und nicht Owner-Rechte

Ist das überhaupt so realisierbar? Oder muss ich vorhandene Systemuser erst umständlich in die DB einlesen? (wie ich es bei syscp gesehen habe)
11  ProFTPD / ProFTPD - Deutsch / Re: SQLUserWhereClause erweitern am: 10. August 2006, 14:55:27
Ja, das sieht ganz gut aus. Nur statt der IP den Servernamen in die DB schreiben, dann sollte das passen. Das bringt mich schon mal enorm weiter - Danke Smiley

Werde dann berichten, falls noch Probleme auftauchen...
12  ProFTPD / ProFTPD - Deutsch / Re: SQLUserWhereClause erweitern am: 10. August 2006, 13:31:37
Ok - danke erstmal für die Korrektur und die Antwort. Vielleicht hat ja jemand noch eine andere Idee (irgendwelche anderen mod's?), da unsere Konfiguration zu 99% zentral verwaltet wird (also alle server quasi-identisch sind) wäre eine separate Konfiguration leider keine Lösung.
13  ProFTPD / ProFTPD - Deutsch / Re: SQLUserWhereClause erweitern am: 10. August 2006, 12:22:00
Das %L hatte ich aus http://www.proftpd.de/HowTo_Logging.31.0.html

Ich befürchte auch %v würde mir, selbst wenn es ersetzt würde, nicht weiterhelfen, da dort ja der Server-String (also z.B. "Blubb-Server Version 7") vermerkt ist - und der ist ja auch bei allen Servern gleich...  Traurig
14  ProFTPD / ProFTPD - Deutsch / SQLUserWhereClause erweitern am: 10. August 2006, 11:10:16
Hallo,

folgende Struktur ist vorgegeben: zentrale DB mit bis zu mehreren tausend FTP-Usern. Dazu eine gewisse Anzahl von Servern, auf denen ProFTPd (+mod_sql) läuft. Die User in der DB sollen natürlich NICHT auf alle Server zugreifen, sondern nur auf einen spezifischen.

In der ftp_user Tabelle ist dazu ein Feld mit der IP des erlaubten Servers.

Ich habe jetzt folgendes versucht:
Code:
SQLUserWhereClause "login_enabled = 'Y' AND Server_IP = '%L'"

Leider löst es %L (normalerweise die IP des aktuellen FTP-Server(?)) nicht auf, das SQL-Log:
Zitat
query "SELECT username, password, uid, gid, homedir, shell FROM ftp_users WHERE (username='test_123') and ((login_enabled = 'Y' AND Server_IP = '%L')) LIMIT 1"

Wie kann ich die SQLUserWhereClause so erweitern, dass die IP-Adresse des momentanen Server an die DB übertragen wird? (Das hardcodieren der IP-adresse ist keine Option, da alle FTP-Server eine identische Konfiguration besitzen müssen) Oder gibt es andere Wege, das gewünschte Verhalten zu erreichen.

Vielen Dank für eure Ideen - falls jemand eine hat Zwinkernd

Seiten: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.074 Sekunden mit 16 Zugriffen.