ubuntuusers.de

12.04LTS Server - vsftpd 2.3.5 - 500 OOPS: vsftpd: refusing to run with writable root inside chroot

Status: Gelöst | Ubuntu-Version: Server 12.04 (Precise Pangolin)
Antworten |

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

Als root

ls -l vsftpd2.3.5-ext
insgesamt 228
-rw-r--r-- 1 root root    293 Jul  2 15:03 builddefs.h.orig
drwxr-xr-x 9  500  501   4096 Jul  2 15:33 vsFTPd-2.3.5-ext.1
-rw-r--r-- 1 root root 222249 Jul  2 14:26 vsFTPd-2.3.5-ext1.tgz

EDIT: Ich glaub ich versteh deinen Wink 😀 Und das ganze nochmal... → learning by doing 👿

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

Als root

FALSCH!

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

Ja ich weiss...

Habe folgendes gemacht

sudo mkdir vsftpd
sudo chown elrippo:elrippo /home/elrippo/vsftpd

Danach wget ohne root, tar ohne root, make ohne root alles top.

ls -la /home/elrippo/vsftpd
insgesamt 236
drwxr-xr-x 3 elrippo elrippo   4096 Jul  2 17:21 .
dr-x------ 3 elrippo elrippo   4096 Jul  2 16:34 ..
drwxr-xr-x 9 elrippo elrippo   4096 Jul  2 16:50 vsFTPd-2.3.5-ext.1
-rw-rw-r-- 1 elrippo elrippo 222249 Jul  2 16:35 vsFTPd-2.3.5-ext1.tgz
-rwxrwxr-x 1 elrippo elrippo   1582 Jul  2 17:21 vsftpd.conf
file ./vsftpd
./vsftpd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xe8b850786c3fc936c5148d2a92b0359857cfc7dd, stripped

Das hier ging auch nur, weil ich in der builddefs.h, lt. anleitung, tcp_wrappers und ssl auf define gestellt habe. Im default steht da nämlich undefine drin. und den conf path auf "/etc/" und den conf_prefix auf "vsftpd." gestzt auch lt. anleitung.

 ldd ./vsftpd
	linux-gate.so.1 =>  (0xb77b0000)
	libcap.so.2 => /lib/i386-linux-gnu/libcap.so.2 (0xb77a2000)
	libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb7794000)
	libwrap.so.0 => /lib/i386-linux-gnu/libwrap.so.0 (0xb7789000)
	libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb7733000)
	libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb7588000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb73e3000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb73de000)
	libnsl.so.1 => /lib/i386-linux-gnu/libnsl.so.1 (0xb73c3000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb73ad000)
	/lib/ld-linux.so.2 (0xb77b1000)
 ./vsftpd -?
vsFTPd version 2.3.5+ (ext.1)
Type 'vsftpd -v' to see the program version
Usage: vsftpd <config> [options]
  <config> - full path to configuration file
Options:
  -o<parameter>=<value>
  parameter and value you can look in vsftpd configuration file manual

Die conf mit

cp vsftpd.conf /etc

brav kopiert und geändert.

...läuft trotzdem nicht...

Wenn ich sage

vsftpd start

kommt

500 OOPS: cannot read config file: start

Wenn ich sage

sudo vsftpd start

kommt dasselbe.

Wenn ich sage

sudo /etc/init.d/vsftpd start

kommt

sudo: /etc/init.d/vsftpd: Befehl nicht gefunden

Mit

rcvsftpd start

isses auch nicht besser

langsam aber sicher verzweifel ich 😕

Jetzt hab ich vsftpd kurz installiert, funtzt. wieder deinstalliert. dann mach ich jetzt das ganze nochmal →

http://www.thegeekstuff.com/2010/11/vsftpd-setup/

https://aur.archlinux.org/packages.php?ID=9887

EDIT: In der vsftpd.conf.5 steht

.TH VSFTPD.CONF 5
.SH NAME
vsftpd.conf \- config file for vsftpd with extended builds
.SH DESCRIPTION
vsftpd.conf may be used to control various aspects of vsftpd's behaviour. By
default, vsftpd looks for this file at the location
.BR /etc/vsftpd/vsftpd.conf .
However, you may override this by specifying a command line argument to
vsftpd. The command line argument is the pathname of the configuration file
for vsftpd. This behaviour is useful because you may wish to use an advanced
inetd such as
.BR xinetd
to launch vsftpd with different configuration files on a per virtual host
basis.

Und wieder alles neu... Warum zur Hölle steht dann in der DEFAULT builddefs.h

#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

#define VSF_CONFIG_PATH "/etc/vsftpd/"
#define VSF_CONFIG_PREFIX ""
//#define VSF_CONFIG_PATH "/etc/"
//#define VSF_CONFIG_PREFIX "vsftpd."

#endif /* VSF_BUILDDEFS_H */

Wenn das drin stehen sollte

#define VSF_CONFIG_PATH "/etc/"
#define VSF_CONFIG_PREFIX "vsftpd."

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

Die conf mit

cp vsftpd.conf /etc

brav kopiert und geändert.

...läuft trotzdem nicht...

Wenn ich sage

vsftpd start

kommt

500 OOPS: cannot read config file: start

Wenn ich sage

sudo vsftpd start

kommt dasselbe.

Wenn ich sage

sudo /etc/init.d/vsftpd start

kommt

sudo: /etc/init.d/vsftpd: Befehl nicht gefunden

Mit

rcvsftpd start

isses auch nicht besser

langsam aber sicher verzweifel ich 😕

Jetzt hab ich vsftpd kurz installiert, funtzt. wieder deinstalliert. dann mach ich jetzt das ganze nochmal →

Wenn Du lediglich mit "make" ein binary für vsftpd kompilierst und auf deinem PC eine vsftpd.conf erstellt, hast Du noch keine "Infrastruktur" mit start-stop-Scripten & Co., wie wenn Du "sudo apt-get install vsftpd" machst. Deshalb kann "sudo start vsftpd" nicht funktionieren. Du musst "./vsftpd -?" beachten:

./vsftpd -?
vsFTPd version 2.3.5+ (ext.1)
Type 'vsftpd -v' to see the program version
Usage: vsftpd <config> [options]
  <config> - full path to configuration file
Options:
  -o<parameter>=<value>
  parameter and value you can look in vsftpd configuration file manual

ODER Du installierst vsftpd aus Ubuntu mit "sudo apt-get install vsftpd" und ersetzt das vsftpd-binary aus Ubuntu mit deinem vsftpd-binary oder mit einem symlink auf dein vsftpd-binary. Dann kannst Du "sudo restart vsftpd" benutzen.

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

Das hier ging auch nur, weil ich in der builddefs.h, lt. anleitung, tcp_wrappers und ssl auf define gestellt habe. Im default steht da nämlich undefine drin.

Poste mal die Ausgabe von:

./vsf_findlibs.sh

aus deinem "vsFTPd-2.3.5-ext.1"-Verzeichnis.

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

EDIT:Hier die Ausgabe

./vsf_findlibs.sh
-lwrap
-lssl -lcrypto

... spät aber doch ...

du meinst das hier

.\" Copyright (c) 2001 Daniel Jacobowitz <dan@debian.org>
.Dd March 8, 2001
.Dt VSFTPD 8
.Sh NAME
.Nm vsftpd
.Nd Very Secure FTP Daemon
.Sh SYNOPSIS
.Nm vsftpd
.Op Ar configuration file and / or options
.Sh DESCRIPTION
.Nm vsftpd
is the Very Secure File Transfer Protocol Daemon. The server can be launched
via a
.Dq super-server
such as
.Xr inetd 8
or
.Xr xinetd 8 .
Alternatively, vsftpd can be launched in standalone mode, in which case vsftpd
itself will listen on the network. This latter mode is easier to use, and
recommended. It is activated by setting
.Pa listen=YES
in
.Pa /etc/vsftpd/vsftpd.conf .
Direct execution of the
.Nm vsftpd
binary will then launch the FTP service ready for immediate client connections.
.Sh OPTIONS
An optional
configuration file or files
may be given on the command line. These files must be owned as root if running
as root. Any command line option not starting with a "-" character is treated
as a config file that will be loaded. Note that config files are loaded in the
strict order that they are encountered on the command line.
If no config files are specified, the default configuration file of
.Pa /etc/vsftpd.conf
will be loaded, after all other command line options are processed.
.Pp
Supported options are:
.Bl -tag -width Ds
.It Fl v
Print the version information and exit, even if other options are encountered.
.It Fl ooption=value
Set a single option, value pair as per the format in the config file. Multiple
-o options are supported, and they are applied in strict order relative to
their appearance on the command line, including intermingling with loading of
config files.
.El
.Sh EXAMPLES
vsftpd -olisten=NO /etc/vsftpd/vsftpd.conf -oftpd_banner=blah
.Pp
That example overrides vsftpd's built-in default for the "listen" option to be
NO, but then loads /etc/vsftpd.conf which may override that setting. Finally,
the "ftpd_banner" setting is set to "blah", which overrides any default vsftpd
setting and any identical setting that was in the config file.
.Sh FILES
.Pa /etc/vsftpd/vsftpd.conf
.Sh SEE ALSO
.Xr vsftpd.conf 5
.end

Okidoki 😎

Und wie ersetz ich die binaries ❓

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

... spät aber doch ...

du meinst das hier

Nein, das ist die manpage-Datei.

Und wie ersetz ich die binaries ❓

Als root mit mv, cp, ln -s, rm, ... . ACHTUNG: Nur dann ersetzen/ändern, wenn Du genau weißt was Du warum machst.

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

micky jetzt mal ganz im ernst 😀

Ich gehör hier zu den blinden der ahnungslosen. Also wie zur H.... soll ICH das hinbekommen ❓

Wie start ich das dingens mit diesen optionen

./vsftpd -?
vsFTPd version 2.3.5+ (ext.1)
Type 'vsftpd -v' to see the program version
Usage: vsftpd <config> [options]
  <config> - full path to configuration file
Options:
  -o<parameter>=<value>
  parameter and value you can look in vsftpd configuration file manual

DIE KISTE LÄUFT MIT

sudo vsftpd /etc/vsftpd/vsftpd.conf

!!!!!

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

DIE KISTE LÄUFT MIT

sudo vsftpd /etc/vsftpd/vsftpd.conf

!!!!!

OK. Poste mal die Ausgaben von:

sudo lsof -nPi | grep vsftpd

und von:

./vsf_findlibs.sh

aus deinem "vsFTPd-2.3.5-ext.1"-Verzeichnis.

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

kommt gleich. ich benötige die inet leitung grad im moment für was anderes, dauert nicht lange 😬

sudo lsof -nPi | grep vsftpd
[sudo] password for user: 
vsftpd    2832            root    0u  IPv4  15574      0t0  TCP *:990 (LISTEN)
./vsf_findlibs.sh
-lwrap
-lssl -lcrypto

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

Und wieder alles neu... Warum zur Hölle steht dann in der DEFAULT builddefs.h

...

./vsf_findlibs.sh
-lwrap
-lssl -lcrypto

Ich habe bei mir, die builddefs.h nicht editieren müssen. Es sind auch so alle libraries (dank LD_LIBRARY_PATH) gefunden worden. Der Eintrag:

LIBS	=       -lcap -ldl -lcrypt    -lwrap -lnsl    -lssl -lcrypto

war ausreichend.

Poste mal die Ausgabe von:

echo $LD_LIBRARY_PATH

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

HIER NUN DIE ANLEITUNG!!!

Diese Anleitung gilt für 12.04LTS wo das vsftpd-update auf 2.3.5 geändert wurde und die ext conf NICHT in die binaries übertagen werden soll!!! Nach dieser anleitung kommt vsftpd-2.3.5-ext.1 zur verwendung!!! Ich übernehme keine gewähr auf funktion und vollständigkeit!!!

1.) vsftpd.conf sichern z.B.

sudo cp /etc/vsftpd.conf /etc/vsftpd.meine.conf

2.) vsftpd deinstallieren

sudo aptitude remove vsftpd
sudo aptitude purge vsftpd

3.) mit

cd

ins home-verzeichnis wechseln

4.) erstellen des vsftpd verzeichnisses zum installieren

sudo mkdir vsftpd

5.) rechte auf den user mit

sudo chown USER:USER /home/USER/vsftpd

ändern

6.) in das verzeichnis wechseln

cd vsftpd

7.) sourcecode herunterladen

wget http://vsftpd.devnet.ru/files/2.3.5/ext.1/vsFTPd-2.3.5-ext1.tgz

8.) entpacken

tar xzvf vsFTPd-2.3.5-ext1.tgz

9.) ins entpackte verzeichnis wechseln

cd vsFTPd-2.3.5-ext.1

10.) SSL_patch herunterladen

wget http://vsftpd.devnet.ru/files/2.3.5/ext.1/patch/1.%20ssl_userlist.patch

11.) patch beifügen

patch -p0 < "1. ssl_userlist.patch"

12.) builddefs ändern. DEFAULT IST UNVOLLSTÄNDIG!!!

mit

nano builddefs.h

öffnen

DAS HIER VOLLSTÄNDIG AUSWECHSELN!!!

#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

#define VSF_CONFIG_PATH "/etc/vsftpd/"
#define VSF_CONFIG_PREFIX "vsftpd."
//#define VSF_CONFIG_PATH "/etc/"
//#define VSF_CONFIG_PREFIX "vsftpd."

#endif /* VSF_BUILDDEFS_H */

speichern und schliessen!

13.) build mit

make

14.) conf datei sollte im aktuellen verzeichnis erstellt werden

ls -l vsftpd

sollte so aussehen

~/vsftpd/vsFTPd-2.3.5-ext.1$ ls -l vsftpd
-rwxrwxr-x 1 elrippo elrippo 200248 Jul  2 18:25 vsftpd

15.) es gibt noch eine weitere option, bei mir hats funktioniert

make install

16.) nach make install sollte die vsftpd datei nach /usr/local/sbin/vsftpd kopiert worden sein

ls -l /usr/local/sbin/vsftpd

sollte so aussehen

~/vsftpd/vsFTPd-2.3.5-ext.1$ ls -l /usr/local/sbin/vsftpd
-rwxr-xr-x 1 root root 200248 Jul  2 18:30 /usr/local/sbin/vsftpd

17.) man pages kopieren

cp vsftpd.8 /usr/share/man/man8/
cp vsftpd.conf.5 /usr/share/man/man5/

18.) mit

file ./vsftpd

die Ausgabe überprüfen. sollte so aussehen

~/vsftpd/vsFTPd-2.3.5-ext.1$ file ./vsftpd
./vsftpd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xc44c5c1b60f084d1aa954d00af74b5f0887ebb0d, stripped

19.) mit

ldd ./vsftpd

die libaries überprüfen. sollte so aussehen

~/vsftpd/vsFTPd-2.3.5-ext.1$ ldd ./vsftpd
	linux-gate.so.1 =>  (0xb77aa000)
	libcap.so.2 => /lib/i386-linux-gnu/libcap.so.2 (0xb779c000)
	libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb778e000)
	libwrap.so.0 => /lib/i386-linux-gnu/libwrap.so.0 (0xb7783000)
	libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb772d000)
	libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb7582000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb73dd000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb73d8000)
	libnsl.so.1 => /lib/i386-linux-gnu/libnsl.so.1 (0xb73bd000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb73a7000)
	/lib/ld-linux.so.2 (0xb77ab000)

20.) mit

./vsftpd -?

die Version überprüfen. sollte so aussehen

~/vsftpd/vsFTPd-2.3.5-ext.1$ ./vsftpd -?
vsFTPd version 2.3.5+ (ext.1)
Type 'vsftpd -v' to see the program version
Usage: vsftpd <config> [options]
  <config> - full path to configuration file
Options:
  -o<parameter>=<value>
  parameter and value you can look in vsftpd configuration file manual

21.) vsftpd.conf datei modifizieren

sudo nano /etc/vsftpd.meine.conf

folgende zeile einfügen

allow_writable_root=YES

speichern und schliessen.

22.) datei an den ort kopieren, wo vsftpd diese sucht.

sudo cp /etc/vsftpd.meine.conf /etc/vsftpd/vsftpd.conf

23.) starten des vsftp deamons

sudo vsftpd /etc/vsftpd/vsftpd.conf

24.) überprüfen ob er läuft

sudo lsof -nPi | grep vsftpd

sollte folgende ausgabe erfolgen

[sudo] password for user: 
vsftpd    2832            root    0u  IPv4  15574      0t0  TCP *:990 (LISTEN)

nun ist der vsftpd server wieder einsatzbereit 😬

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

~/vsftpd/vsFTPd-2.3.5-ext.1$ echo $LD_LIBRARY_PATH

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

duesentriebchen schrieb:

~/vsftpd/vsFTPd-2.3.5-ext.1$ echo $LD_LIBRARY_PATH

OK. Andererseits, wenn man als sudo "hantiert" 😉 wird LD_LIBRARY_PATH aus Sicherheitsgründen nicht ausgewertet. Es ist ja auch kein Problem die builddefs.h zu editieren.

duesentriebchen

(Themenstarter)
Avatar von duesentriebchen

Anmeldungsdatum:
10. Februar 2012

Beiträge: 713

Wohnort: Im Inntal

Hallo mickeydoutza 😀

Kannst du mir bitte ein wenig unter die Arme greifen...

Ich würde gerne vsftpd 2.3.5ext1 in die binaries übertragen. Ich hab auf meinem Testrechner vsftpd installiert und mir die Dateien von vsftpd durchgelesen. Ich bin mit meinen Script-kenntnissen leider am Ende, da ich die Bedeutung diverser Zeilen in der

/etc/init.d/vsftpd

nicht annähernd verstehe...

Kannst du mir hier helfen 😬