Linux FTP-Server über Windows 2003 Server ActiveDirectory authentifizieren

Dies ist ein kleines Howto um ein Windows ActiveDirectory als Authentifizeirungs-backend für vsftpd zu nutzen. Die Authentifizierung findet mittels Kerberos 5 statt.

Installieren der benötigten Pakete
aptitude install vsftpd krb5-clients krb5-user libpam-krb5

Bearbeiten der vsftpd Konfig

# /etc/vsftpd.conf
 
# Network
listen=YES
listen_ipv6=NO
listen_port=21
connect_from_port_20=YES
 
# Dir
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
chown_uploads=NO
chown_username=whoever
 
# Anonymous
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
 
# User
userlist_enable=YES
userlist_deny=NO
 
# Log
syslog_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
 
# Banner
ftpd_banner=Welcome
 
# Chroot
chroot_local_user=YES
chroot_list_enable=NO
 
# System
check_shell=NO
nopriv_user=ftp
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd

Bearbeiten der Kerberos Konfigdatei

[libdefaults]
        default_realm = ADDOMAIN.LOCAL
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
        v4_instance_resolve = false
        v4_name_convert = {
                host = {
                        rcmd = host
                        ftp = ftp
                }
                plain = {
                        something = something-else
                }
        }
 
[realms]
ADDOMAIN.LOCAL = {
        kdc = server.addomain.local
        admin_server = server.addomain.local
        default_domain = ADDOMAIN.LOCAL
}
 
[domain_realm]
        .addomain.local = ADDOMAIN.LOCAL
        addomain.local = ADDOMAIN.LOCAL
 
[login]
        krb4_convert = true
        krb4_get_tickets = true
 
[appdefaults]
        pam = {
            minimum_uid = 100
            ADDOMAIN.LOCAL = {
                ignore_k5login = true
            }
        }

Bearbeiten der PAM Module Konfigdatei /etc/pam.d/vsftpd

auth            sufficient      pam_krb5.so ignore_root
session         optional        pam_krb5.so ignore_root
account         required        pam_krb5.so ignore_root
password        optional        pam_krb5.so ignore_root
@include common-account
@include common-session
@include common-auth

Benutzer, der sich über den FTP-Server einloggen soll auf dem Linux-Server anlegen

groupadd freach
useradd -c "freach" -d /srv/ftp/freach -g freach -m -s /bin/false freach

Zur Freigabe des Benutzers auf dem FTP-Server müsst ihr seinen Benutzername in der Datei /etc/vsftpd.user_list eintragen.

Neustarten des FTP-Servers
/etc/init.d/vsftpd restart

Nun könnt ihr eure Daten auf dem Linux-Server ablegen euch aber mit dem Passwort aus der Windows Domäne authentifizieren. Leider müsst ihr beim erstellen eines neuen Windows Accounts auch einen Linux Account anlegen. Bedenkt das bei FTP das Passwort im Klartext übertragen wird und eine Authentifizierung über das Netzwerk nicht empfohlen ist. Eine SSL gesicherte Verbindung würde dieses Problem jedoch beheben.

Dokumentation vsftpd
Dokumentation libpam-krb5
Dokumentation Kerberos

Versteh ich nun grad nicht ganz. Da wird einerseits im Vmware artikel über theoretische Sicherheitsprobleme und auch Praktische (priscous mode) philosophiert.
Und dann hier ne Anleitung für sowas, mit ner lapidaren Bemerkung das ne SSL gesicherte Verbindung die Sicherheitsrelevanten Probleme löst.

Nun das liegt daran, dass beide Probleme in einem völlig unterschiedlichen Kontext zueinander stehen. Im VMWare Artikel geht es um die ganze Bandbreite an Sicherheitsproblematiken und in diesem Artikel wird konkret das Problem angesprochen, dass FTP ein Klartextprotokoll ist und bei Mitschneiden der Authentifizierungsdaten sich nicht nur am FTP-Server sondern auch an allen anderen Diensten, die das AD als Backend nutzen authentifiziert werden kann. Sicherlich kann ich jetzt das gesamte Spektrum der Sicherheitsproblematiken von FTP-Servern oder ActiveDirectory ausrollen, aber das war nicht Ziel dieses Artikels. Danke für deinen Beitrag.

Post new comment

  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockcode>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options