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