FTP Server unter CentOS mit virtuellen Benutzern einrichten

Dieser Artikel beschreibt, wie man unter CentOS einen FTP Server mit virtuellen Benutzern einrichtet. Als FTP Server wird vsftp verwendet. Des Weiteren wird im Artikel davon ausgegangen, dass SELinux verwendet wird.

In unserem Howto legen wir alle FTP User so an, dass die Verzeichnisse mittels Apache zugreifbar sind. Damit wollen wir den Anwendungsfall von personalisierten Homepages abdecken. Von daher wird nicht der Benutzer ftp, sondern der Benutzer apache verwendet.

Schritt 1: Installieren der notwendigen Pakete

Mittels Kommandozeile wird der FTP Server und eine Datenbankerweiterung installiert. Hierzu geben Sie bitte folgendes ein:

yum install vsftpd db4-utils

Schritt 2: Erstellen der Datei mit virtuellen Benutzern

Mittels einer Textdatei werden die Benutzer eingerichtet. Diese Datei beinhaltet untereinander gereiht den Benutzernamen gefolgt vom Passwort.

vi /etc/vsftpd/virtual-users

Um beispielsweise den Benutzer virtualtest mit dem Passwort test$33 anzulegen, schreiben Sie in diese Datei:

virtualtest
test$33

Anschließend speichern Sie diese Datei und konvertieren eine Datenbankdatei:

db_load -T -t hash -f /etc/vsftpd/virtual-users /etc/vsftpd/virtual-users.db

Die Schreibrechte dieser beiden Dateien sollte so angepasst werden, dass nur root diese lesen kann:

chmod 0600 /etc/vsftpd/virtual-users /etc/vsftpd/virtual-users.db

Schritt 3: Homeverzeichnis für die erstellten virtuellen User anlegen

Zunächst erstellen Sie die Verzeichnisse. In unserem Beispiel wird der Benutzer virtualtest ein Verzeichnis in /home/virtual/virtualtest erhalten.

mkdir -p /home/virtual/virtualtest

Anschließend werden die Zugriffsberechtigungen angepasst:

chown -R apache:apache /home/virtual/
find /home/virtual -type d -exec chmod 0700 {} \;

Schritt 4: PAM

Mittels Pluggable Authentication Module (PAM) erfolgt die Authentifizierung der virtuellen FTP Benutzer. Daher muss eine PAM Konfigurationsdatei angelegt werden.

vi /etc/pam.d/vsftpd.virtual

In dieser fügen Sie bitte folgende Zeilen hinzu:

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

5 Schritt: Konfigurieren von vsftpd

Die Konfigurationsdatei von vsftpd muss angepasst werden.

vi /etc/vsftpd/vsftpd.conf

Folgende Zeilen sollten hinzugefügt werden:


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=apache
user_sub_token=$USER
local_root=/home/virtual/$USER
chroot_local_user=YES
hide_ids=YES

6. Schritt: Konfiguration von SE-Linux

Falls Sie empfohlenerweise SE-Linux auf Ihrem System aktiviert haben, muss dieses angepasst werden. Dazu sind folgende Aktivitäten erforderlich:

  • ftp_home_dir muss aktiviert werden, damit es virtuellen Benutzern gestattet ist auf die Heimatverzeichnisse zuzugreifen.
  • Der Gast Benutzer ist ein anonymer Benutzer. Von daher müssen anonyme FTP Benutzer Zugriff zum Schreiben haben.
  • Der Kontext für das Homeverzeichnis und für das Benutzerverzeichnis, dass im Homeverzeichnis liegt, muss angepasst werden
  • Der Webserverdienst erhält die Erlaubnis zum Schreiben.

Und nun die dazu gehörigen Befehle:


setsebool -P ftp_home_dir=1
setsebool -P allow_ftpd_anon_write=1
chcon -t public_content_rw_t /home/virtual
chcon -t public_content_rw_t /home/virtual/virtualtest
setsebool allow_httpd_anon_write=1

7. Schritt: Firewall anpassen

Folgende Schritte müssen durchgeführt werden, um die Firewall für Port 21 durchlässig zu machen:


iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
service iptables save
service iptables restart

8. Schritt: Start von vsftpd und Änderung, dass vsftpd beim Systemstart aktiviert wird

Dazu sind folgende Schritte notwendig:


service vsftpd start
chkconfig vsftpd on

Fertig.

Weitere Informationen finden Sie auch auf unserer Website.

Kommentar schreiben

1 Kommentare.

  1. Great CentOS FTP Tutorial | codeterrorizer.com - pingback on 8. Februar 2013 um 14:19

Kommentar schreiben

Trackbacks und Pingbacks:

Switch to our mobile site