Blue Flower

vsftpd mit virtuellen Benutzern einrichten
------------------------------------------

1. Pakete installieren:
$ yum install vsftpd db4-utils

2. Benutzerdatenbank anlegen:
$ vi /etc/vsftpd/vsftpd-virtual-user [Die Textdatei sollte wie folgt aufgebaut sein.]

vftpuser1
password1
vftpuser2
password2

$ db_load -T -t hash -f /etc/vsftpd/vsftpd-virtual-user /etc/vsftpd/vsftpd-virtual-user.db
$ chmod 0600 /etc/vsftpd/vsftpd-virtual-user /etc/vsftpd/vsftpd-virtual-user.db

3. Heimatverzeichnisse für die virtuellen FTP-Benutzer erstellen:
$ mkdir -p /home/vftp/vftpuser1 /home/vftp/vftpuser2
$ chown -R ftp:ftp /home/vftp/
$ find /home/vftp -type d -exec chmod 0700 {} \;

4. PAM konfigurieren:
$ vi /etc/pam.d/vsftpd.virtual [die Datei soll wie unten aussehen]

#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
account    required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
session    required     pam_loginuid.so

5. vsftpd konfigurieren:
$ vi /etc/vsftpd/vsftpd.conf [Die Konfigurationsdatei sollte die folgenden Direktiven enthalten.]

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
listen=YES
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES
virtual_use_local_privs=YES
guest_enable=YES
guest_username=ftp
user_sub_token=$USER
local_root=/home/vftp/$USER
chroot_local_user=YES
hide_ids=YES

6. Firewall konfigurieren:
/etc/sysconfig/iptables mit folgender Zeile erweitern:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

/etc/sysconfig/iptables-config sollte anschließend mit folgender Zeile erweitert bzw. ergänzt werden:
IPTABLES_MODULES="ip_conntrack_ftp"
$ service iptables restart

7. vsftpd starten:
$ service vsftpd start
$ chkconfig vsftpd on

1. Edit sshd_config
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

Am Ende der Datei sshd_config folgende Zeile hinzufügen:
Match Group sftponly
        ChrootDirectory /chroots/user
        AllowTcpForwarding no
        ForceCommand internal-sftp
        X11Forwarding no

Achtung Hier wurde das Verzeichnis /chroots/user gewählt
Eine Erweiterung mit "Match Group XXX" ist möglich:
Match Group XXX
        ChrootDirectory /chroots/XXX
        AllowTcpForwarding no
        ForceCommand internal-sftp
        X11Forwarding no

2. SSHD Service neu starten:
# service restart sshd

3. Eine neue Gruppe anlegen:
# groupadd sftponly

4. User CHROOT Umgebung erstellen und die Berechtigung anpassen:
# mkdir -p /chroot/user
# chmod -R 755 /chroot/user

5. Benutzer anlegen:
# useradd -d /user01 -M -g sftponly -s /bin/false user01
# passwd user01
(-M kein Home-Verzeichnis für user01)
(-d beim Anlegen des neuen Benutzers wird HOME_VERZ als das Anmeldeverzeichnis des Benutzers verwendet.
Das Verzeichnis HOME_VERZ muss nicht vorhanden sein, sondern wird manuell angelegt)

6. Heimatverzeichnis für Benutzer anlegen und die Berechtigung anpassen:
# mkdir /chroots/user/user01
# chown user01:sftponly /chroots/user/user01

Achtung: Alle Benutzer der Gruppe "sftponly" können sich in /chroot/user Verzeichnis bewegen.
Hier muss man mit der Berechtigung vorsichtig umgehen.