[gelöst] vsftp mit ssl

Probleme mit Samba, NFS, FTP und Co.
Antworten
jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

[gelöst] vsftp mit ssl

Beitrag von jcw » 31.05.2016 09:55:04

Hallo!
Leider habe ich Probleme mit dem vsftp-Dienst und der Verschlüsselung, so dass ich mich nun ans Forum wende. Problem: Ich möchte einen ftp-Dienst betreiben, um Fotos mit Bekannten austauschen zu können. Die Nutzer sollen sich alle mit dem identischen Benutzer und Passwort einloggen können. In diesem Fall wäre das der User 'ftpguest', mit dem sich jeder einloggen kann und auch nur in dem Verzeichnis 'eingesperrt' arbeiten darf. Mit dem Login 'jcw' möchte ich auch Zugriff haben und auch zwischen den Verzeichnissen wechseln können. Dies ist eine Standardaufgabe für einen ftp-Dienst. Solange ich die Verschlüsselung nicht aktiviere, funktioniert das auch. Nun mal ein paar wichtige Angaben:

Code: Alles auswählen

ftp-Server:
Linux jw03 4.4.9+ #884 Fri May 6 17:25:37 BST 2016 armv6l GNU/Linux

Code: Alles auswählen

cat /etc/passwd (Ausschnitt)
jcw:x:1001:100::/home/jw:/bin/bash
ftp:x:109:115:ftp daemon,,,:/srv/ftp:/bin/false
ftpguest:x:1002:100::/home/ftpguest:/bin/false

Code: Alles auswählen

# Run standalone?  vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
listen_ipv6=YES
#
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# If enabled, vsftpd will display directory listings with the time
# in  your  local  time  zone.  The default is to display GMT. The
# times returned by the MDTM FTP command are also affected by this
# option.
use_localtime=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Willkommen am ftp-Server von Joern.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
#chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# Customization
#
# Some of vsftpd's settings don't fit the filesystem layout by
# default.
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd

###Enable Logging von jcw
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log 
log_ftp_protocol=YES
debug_ssl=YES

## maximum number of connections per source IP, which can help secure against DoS and DDoS attacks ##
Das Einloggen vom Client im lokalen Netzwerk mit 'jcw' und 'ftpguest' funktioniert auch wie erwartet (unverschlüsselt):

Code: Alles auswählen

jw@jw09:~$ ftp 192.168.2.3
Connected to 192.168.2.3.
220 Willkommen am ftp-Server von jcw.
Name (192.168.2.3:jcw): 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
jw@jw09:~$ ftp 192.168.2.3
Connected to 192.168.2.3.
220 Willkommen am ftp-Server von jcw.
Name (192.168.2.3:jw): ftpguest
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
Nun habe ich versucht, die vsftpd.conf anzupassen, sodass die Verschlüsselung aktiviert wird. Die unteren Zeilen habe ich hinzugefügt:

Code: Alles auswählen

# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
#
# Run standalone?  vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
listen_ipv6=YES
#
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# If enabled, vsftpd will display directory listings with the time
# in  your  local  time  zone.  The default is to display GMT. The
# times returned by the MDTM FTP command are also affected by this
# option.
use_localtime=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Willkommen am ftp-Server von Joern.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
#chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# Customization
#
# Some of vsftpd's settings don't fit the filesystem layout by
# default.
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
#Turn on SSL von jcw
ssl_enable=YES
# Allow anonymous users to use secured SSL connections
#allow_anon_ssl=NO

# All non-anonymous logins are forced to use a secure SSL connection in order to
# send and receive data on data connections.
force_local_data_ssl=YES

# All non-anonymous logins are forced to use a secure SSL connection in order to send the password.
force_local_logins_ssl=YES

# Permit TLS v1 protocol connections. TLS v1 connections are preferred
ssl_tlsv1=YES

# Permit SSL v2 protocol connections. TLS v1 connections are preferred
ssl_sslv2=NO

# permit SSL v3 protocol connections. TLS v1 connections are preferred
ssl_sslv3=NO

# Disable SSL session reuse (required by WinSCP)
require_ssl_reuse=NO

# Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH


rsa_cert_file=/etc/ssl/private/vsftpd.pem

###Enable Logging von jcw
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log 
log_ftp_protocol=YES
debug_ssl=YES

## maximum number of connections per source IP, which can help secure against DoS and DDoS attacks ##
max_per_ip=5
Dann einen Restart gemacht:

Code: Alles auswählen

root@jw03:~# systemctl restart vsftpd            
root@jw03:~# systemctl status vsftpd 
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled)
   Active: active (running) since Die 2016-05-31 09:40:12 CEST; 7s ago
  Process: 15328 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
 Main PID: 15331 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─15331 /usr/sbin/vsftpd /etc/vsftpd.conf

Mai 31 09:40:12 jw03 systemd[1]: Started vsftpd FTP server.
Doch nun ist es mir nicht mehr möglich, eine Verbindung mit dem Benutzer 'ftpguest' aufzubauen. Dass ich nun nicht mehr das Programm ftp benutzen darf, sondern sftp, ist mir klar. Mit dem Benutzer 'jcw' funktioniert der Login weiterhin, aber nicht mit 'ftpguest'.

Code: Alles auswählen

jw@jw09:~$ ftp 192.168.2.3
Connected to 192.168.2.3.
220 Willkommen am ftp-Server von jcw.
Name (192.168.2.3:jcw): 
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp> bye
jw@jw09:~$ sftp 192.168.2.3
jw@192.168.2.3's password: 
Connected to 192.168.2.3.
sftp> bye
jw@jw09:~$ sftp ftpguest@192.168.2.3
ftpguest@192.168.2.3's password: 
Connection closed
Was mich auch wundert, dass mit Benutzung von sftp keine Willkommensnachricht erscheint und auch im Logfile /var/log/vsftpd.log nicht mehr geschrieben wird. Dabei gibt es ja einen erfolgreichen Login mit dem Benutzer 'jcw'.

Kann mir jemand weiterhelfen, wie ich eine verschlüsselte Verbindung mit dem Benutzer 'ftpguest' aufbauen kann? Oder liegt hier schon mehr im Argen?

Danke für jede Rückmeldung!
Zuletzt geändert von jcw am 31.05.2016 21:50:17, insgesamt 1-mal geändert.

DeletedUserReAsG

Re: vsftp mit ssl

Beitrag von DeletedUserReAsG » 31.05.2016 10:03:54

Wenn du die Güte hättest, den langen Kram nach NoPaste zu stellen, könnte ich den Rest des Beitrages in Ruhe lesen. Ansonsten fällt mir gerade nur auf, dass du mit vsftp in aller Regel ftps zur Verfügung stellst, aber mit sftp drauf zugreifen möchtest – einem Protokoll, das mit FTP eher nichts zu tun hat, sondern mit SSH zusammenhängt.

schwedenmann
Beiträge: 5528
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: vsftp mit ssl

Beitrag von schwedenmann » 31.05.2016 10:13:02

Hallo


das schon gemacht?

https://www.howtoforge.de/anleitung/vsf ... aufsetzen/


mfg
schwedenmann

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: vsftp mit ssl

Beitrag von uname » 31.05.2016 10:44:38

Code: Alles auswählen

jw@jw09:~$ ftp 192.168.2.3
...
jw@jw09:~$ sftp 192.168.2.3
Dir ist schon klar, dass ftp rein gar nichts mit sftp zu tun hat?

Beim ersten Mal kontaktierst du deinen vsftp-FTP-Server und beim zweiten Mal das sftp-Subsystem von SSH. Generell halte ich in den meisten Fällen FTP für sinnlos. Da wäre wohl eine chroot-Umgebung in /etc/ssh/sshd_config die bessere Lösung, sofern der Anwender bereit ist statt Port "21" für FTP dann "22" für SSH/sftp/scp in seinem komischen FTP/SFTP/Sonstwie-Filezilla-Client einzugeben. Vorteil ist du brauchst nur das vorhandene SSH verwenden und einen Benutzer entsprechend anlegen und konfigurieren. Da kann der Anwender dann sogar wenn er will SSH-Keys verwenden. Auch kann er Standardmechanismen wie "rsync über ssh" verwenden falls du sie erlaubst.

Davon abgesehen, dass es auch nette webbasierte Upload/Download-Sonstwie-Interfaces gibt, die man z.B. mit .htacess absichern kann. Könntest dir z.B. mal https://github.com/Studio-42/elFinder anschauen, um nur ein Beispiel zu nennen. Da braucht man dann nur einen Browser. Und wenn es wirklich ein Filesystem sein soll könntest du es ja über Apache2 per WebDAV freigeben.

jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

Re: vsftp mit ssl

Beitrag von jcw » 31.05.2016 16:19:03

Hallo!
Vielen Dank für die schnellen Rückmeldungen! Eherlich gesagt, kannte ich bis vor Kurzem den Unterschied zwischen sftp und ftps nicht. Jetzt habe ich mir auf dem Client das Paket ftp-ssl installiert, und nun funktioniert auch das Einloggen mit 'jcw' und 'ftpguest'. Hier der Beweis:

Code: Alles auswählen

jw@jw09:~/CanonFoto$ ftp-ssl -p 192.168.2.3
Connected to 192.168.2.3.
220 Willkommen am ftp-Server von jcw.
Name (192.168.2.3:jcw): 
234 Proceed with negotiation.
[SSL Cipher AES256-GCM-SHA384]
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
jw@jw09:~/CanonFoto$ ftp-ssl -p 192.168.2.3
Connected to 192.168.2.3.
220 Willkommen am ftp-Server von Joern.
Name (192.168.2.3:jw): ftpguest
234 Proceed with negotiation.
[SSL Cipher AES256-GCM-SHA384]
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
Ich schicke hier aus nochmal das Logfile des o.g. Vorganges.
http://nopaste.debianforum.de/39340

Ist das in Ordnung, daß dort der Eintrag
SSL shutdown state is: SSL_SENT_SHUTDOWN

und

SSL ret: 4294967295, SSL error: error:00000000:lib(0):func(0):reason(0), errno: 0
drinsteht? Sind die Meldungen beunruhigend bezüglich Verschlüsselung oder eher harmlos? Oder anders gefragt, funktioniert die Verschlüsselung oder nicht?

Danke für die Rückmeldungen!

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: vsftp mit ssl

Beitrag von uname » 31.05.2016 16:32:21

Sieht so aus, dass die Verschlüsselung funktioniert. Die Frage ist ob du auch eine unverschlüsselte Kommunikation erlaubst. Bei sftp hättest du sie generell ausgeschlossen. Mal ganz abgesehen davon, dass du dir den ganzen Aufwand gespart hättest. Ich kann dir nur dazu raten auf sftp zu setzen.

http://madapez.com/it/linux/howto-chroo ... shell-ssh/

Antworten