Raspberrypi.vsftpd: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Raspberry Pi == * Grund-Konfiguration des RASBERRY: RaspberryPi-Router * Ich betreibe den Raspberry PI als FTP Server * Mit dem eigenen LAN - Interface is…“)
 
 
(21 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Raspberry Pi ==
Zurück zur Hauptseite [[raspberrypi]]


* Grund-Konfiguration des RASBERRY: [[RaspberryPi-Router]]
* Grund-Konfiguration
* Ich betreibe den Raspberry PI als FTP Server
* Ich betreibe den Raspberry PI als FTP Server
* Mit dem eigenen LAN - Interface ist Raspi am Internet angeschlosse
* Mit dem eigenen LAN - Interface ist Raspi am Internet angeschlosse
Zeile 9: Zeile 9:
* Im Folgenden sind die Konfigurations-Dateien dokumentiert  
* Im Folgenden sind die Konfigurations-Dateien dokumentiert  


=== nur noch "root" den ssh Zugang erlauben ===
== Vorbereitung ==


* Leider ist das PAM-Modul <-> vsftpd irgendwie falsch konfiguriert - oder ich verstehe zumindest die Konfiguration nicht. Tatsache ist, dass wenn ich dem Anglegeten User /bin/false als shell präsentiere, um einen Login zu verhindern, ja genau dann geht der FTP-Login auch nicht mehr. Deshalb verbiete ich ALLEN Usern den Login (macht für mich eh keinen Sinn!). Nur ich selbst muss mich natürlich für Konfiguration des Systems einloggen können.
* <code>joe /etc/ssh/sshd_config</code>
ListenAddress 0.0.0.0
PermitRootLogin yes
AllowUsers root


apt-get install vsftpd
groupadd www


=== vsftpd.conf ===
=== vsftpd.conf ===
Zeile 54: Zeile 49:
  write_enable=YES
  write_enable=YES
  anonymous_enable=NO
  anonymous_enable=NO
#
# für den Raspi/Debian
#
  secure_chroot_dir=/var/run/vsftpd/empty
  secure_chroot_dir=/var/run/vsftpd/empty
#
# für OpenSuSE
#
secure_chroot_dir=/usr/share/empty
  pam_service_name=vsftpd
  pam_service_name=vsftpd
  local_enable=YES
  local_enable=YES
Zeile 66: Zeile 70:
  rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
  rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
  ssl_enable=NO
  ssl_enable=NO
== Benutzer anlegen ==
  useradd --home /srv/ftp/<b><i>user</i></b> --groups ftp --gid www --shell /bin/bash <b><i>user</i></b>
  echo "<b><i>user</i></b>:<b><i>password</i></b>" | chpasswd
== 2. LAN INterface mit einem USB 2.0 <-> LAN Adapter ==
* "Amazon B0174PBLNS" einfach einstecken wird erkannt:
[ 5112.587570] usb 1-1.4: new high-speed USB device number 4 using dwc_otg
[ 5112.730588] usb 1-1.4: New USB device found, idVendor=0b95, idProduct=772b
[ 5112.730606] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5112.730617] usb 1-1.4: Product: AX88772C
[ 5112.730627] usb 1-1.4: Manufacturer: ASIX Elec. Corp.
[ 5112.730636] usb 1-1.4: SerialNumber: 00008E
[ 5114.284487] asix 1-1.4:1.0 eth1: register 'asix' at usb-3f980000.usb-1.4, ASIX AX88772B USB 2.0 Ethernet, 00:0e:c6:c8:2f:5e
[ 5114.285904] usbcore: registered new interface driver asix
[ 5114.519130] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 5115.931438] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 5115.935282] asix 1-1.4:1.0 eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
== /etc/network/interfaces ==
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet static
  address 192.168.115.40
  netmask 255.255.255.0


=== domadd.pas ===
=== domadd.pas ===
  PathPrefix := cHtdocs;
  if (pos('ftp-',pUser)=1) or (pUser='incoming') then
    PathPrefix := cFtdocs;
  // Benutzer hat ev. einen numerischen Namen?
  if (pUser[1] in ['0'..'9']) then
  begin
    uUser := 'u' + pUser;
  end else
  begin
    uUser := pUser;
  end;
  // Add User
  Exec('useradd'+
    ' --home '+PathPrefix+pUser+
    ' --groups ftp'+
    ' --gid www'+
    ' --shell /bin/bash'+
    ' '+uUser );
  // Set Password
  Exec('echo "'+uUser+':'+pPassword+'" | chpasswd');


=== Diagnose ===
=== Diagnose ===
Zeile 73: Zeile 138:
* Alle Benutzer der Gruppe "ftp" auflisten:
* Alle Benutzer der Gruppe "ftp" auflisten:
** <code>cat /etc/group | grep ftp:</code>
** <code>cat /etc/group | grep ftp:</code>
== Benutzerliste ==
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
== via SSH ==
== Fritz!Box ==
* die Fritz!Box hat eine Limitierung, die es nicht ermöglicht einen Portbereich auf einmal freizugeben der grösser ist als 254 Ports
* es muss also eine Internetfreigabe in 4 Blöcken erfolgen
ftp-data-1 TCP 21000 - 21254
ftp-data-2 TCP 21255 - 21509
ftp-data-3 TCP 21510 - 21764
ftp-data-4 TCP 21765 - 21999
FTP-Server TCP 21

Aktuelle Version vom 23. Mai 2023, 12:52 Uhr

Zurück zur Hauptseite raspberrypi

  • Grund-Konfiguration
  • Ich betreibe den Raspberry PI als FTP Server
  • Mit dem eigenen LAN - Interface ist Raspi am Internet angeschlosse
  • Mit einem USB-LAN Adapter hängt er am internen Netz
    • wegen Routing-Problemen verwende ich hier eine feste IP-Adresse
  • Im Folgenden sind die Konfigurations-Dateien dokumentiert

Vorbereitung

apt-get install vsftpd
groupadd www

vsftpd.conf

# Core Settings
#
listen=YES
ftpd_banner="Welcome to pi2x01 at orgamon.de FTP-service."
use_localtime=YES
listen_ipv6=NO
local_umask=0000
dirmessage_enable=YES
ls_recurse_enable=YES

# Logging
#
xferlog_enable=YES
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_file=/var/log/vsftpd-xfer.log
xferlog_std_format=YES
syslog_enable=NO
dual_log_enable=YES

# PASV
#
#pasv_addr_resolve=YES
pasv_address=IP.DEINES.SERVER.S
pasv_min_port=21000
pasv_max_port=21999
pasv_promiscuous=YES

# Authentification
#
write_enable=YES
anonymous_enable=NO
#
# für den Raspi/Debian
#
secure_chroot_dir=/var/run/vsftpd/empty

#
# für OpenSuSE
# 
secure_chroot_dir=/usr/share/empty

pam_service_name=vsftpd
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
#nopriv_user=ftpsecure

# SSL
#
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

Benutzer anlegen

 useradd --home /srv/ftp/user --groups ftp --gid www --shell /bin/bash user
 echo "user:password" | chpasswd

2. LAN INterface mit einem USB 2.0 <-> LAN Adapter

  • "Amazon B0174PBLNS" einfach einstecken wird erkannt:
[ 5112.587570] usb 1-1.4: new high-speed USB device number 4 using dwc_otg
[ 5112.730588] usb 1-1.4: New USB device found, idVendor=0b95, idProduct=772b
[ 5112.730606] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5112.730617] usb 1-1.4: Product: AX88772C
[ 5112.730627] usb 1-1.4: Manufacturer: ASIX Elec. Corp.
[ 5112.730636] usb 1-1.4: SerialNumber: 00008E
[ 5114.284487] asix 1-1.4:1.0 eth1: register 'asix' at usb-3f980000.usb-1.4, ASIX AX88772B USB 2.0 Ethernet, 00:0e:c6:c8:2f:5e
[ 5114.285904] usbcore: registered new interface driver asix
[ 5114.519130] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 5115.931438] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 5115.935282] asix 1-1.4:1.0 eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1

/etc/network/interfaces

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet static
 address 192.168.115.40
 netmask 255.255.255.0


domadd.pas

  PathPrefix := cHtdocs;
  if (pos('ftp-',pUser)=1) or (pUser='incoming') then
    PathPrefix := cFtdocs;

  // Benutzer hat ev. einen numerischen Namen?
  if (pUser[1] in ['0'..'9']) then
  begin
   uUser := 'u' + pUser;
  end else
  begin
   uUser := pUser;
  end;

  // Add User
  Exec('useradd'+
   ' --home '+PathPrefix+pUser+
   ' --groups ftp'+
   ' --gid www'+
   ' --shell /bin/bash'+
   ' '+uUser );

  // Set Password
  Exec('echo "'+uUser+':'+pPassword+'" | chpasswd');

Diagnose

  • Alle Benutzer der Gruppe "ftp" auflisten:
    • cat /etc/group | grep ftp:

Benutzerliste

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO


via SSH

Fritz!Box

  • die Fritz!Box hat eine Limitierung, die es nicht ermöglicht einen Portbereich auf einmal freizugeben der grösser ist als 254 Ports
  • es muss also eine Internetfreigabe in 4 Blöcken erfolgen
ftp-data-1 TCP 21000 - 21254
ftp-data-2 TCP 21255 - 21509
ftp-data-3 TCP 21510 - 21764
ftp-data-4 TCP 21765 - 21999
FTP-Server TCP 21