Pages : 1
#1 Le 14/08/2012, à 10:40
- mecanotox
[How To] Proftpd + PAM Auth
Salut à tous. Depuis quelque temps je recherche a me faire un FTP avec une partie privée réservé à des utilisateurs (dossier utilisateur dans /home) et une autre accessible aux utilisateurs anonyme afin de distribuer certains fichier conf et paquets debian issue des mes compilation perso.
Le système repose sur l'authentification PAM. En terme de sécurité, à part root, les utilisateurs locaux on un shell null (/usr/sbin/nologin). Je pense qu'on peut améliorer la sécurité (Configurer le module SSL par exemple, utiliser les ACL, etc...) et ajouter quelques touches supplémentaire, mais je vous mets le fichier de configuration actuel sur ma VM de test. J'ai pas mis de commentaires dans le fichiers de conf, mais la plus part restent compréhensibles et pour le reste, la doc proftpd est bien fournie à ce sujet là. Concernant les utilisateurs anonymes, je les mappe sur le compte "nobody", mais j'avoue que de ce point de vu je ne sais pas si c'est optimisé en terme de sécurité.
Donc au finale, n'hésitez pas à commenter.
Description de la configuration :
- IPv6 désactivé (Mais possibilité de l'activer en mettant IPv6 à "on")
- Authentification PAM
- Utilisateurs redirigés ("RootDir") dans /home/$USER avec droit en lecture et écriture au sein de leur dossier personnel
- Utilisateur anonymes mappé sur l'utilisateur locale "nobody" dans le dossier /home/pub_ftp_root
/etc/proftpd/modules.conf
ModulePath /usr/lib/proftpd
# Liste des Modules
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
#LoadModule mod_sql.c
#LoadModule mod_ldap.c
#LoadModule mod_sql_mysql.c
#LoadModule mod_sql_postgres.c
#LoadModule mod_sql_sqlite.c
#LoadModule mod_sql_odbc.c
#LoadModule mod_sql_passwd.c
#LoadModule mod_radius.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
#LoadModule mod_quotatab_ldap.c
#LoadModule mod_quotatab_sql.c
#LoadModule mod_quotatab_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
#LoadModule mod_wrap2_sql.c
LoadModule mod_dynmasq.c
LoadModule mod_vroot.c
LoadModule mod_exec.c
LoadModule mod_shaper.c
LoadModule mod_ratio.c
LoadModule mod_site_misc.c
LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c
#LoadModule mod_sftp_sql.c
LoadModule mod_facl.c
LoadModule mod_unique_id.c
LoadModule mod_ifsession.c
/etc/proftpd/proftpd.conf
Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups off
ServerName "Serveur FTP"
ServerType standalone
ServerIdent on "Serveur FTP - Connexion OK"
DeferWelcome on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin .welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
Port 21
PassivePorts 49152 65534
AllowForeignAddress on
MaxInstances 30
UseFtpUsers on
User nobody
Group nogroup
AuthPAM on
RequireValidShell on
RootLogin off
TLSEngine on
TLSRequired off
TLSLog /var/log/proftpd/ssl.log
TLSProtocol SSLv3 TLSv1
TLSOptions NoSessionReuseRequired
TLSRSACertificateFile /root/pki/certificats/serveur/serveur.crt
TLSRSACertificateKeyFile /root/pki/certificats/serveur/serveur.key
TLSCACertificateFile /root/pki/CA/ca.crt
TLSVerifyClient off
TLSRenegotiate required on
Umask 077 077
DefaultRoot /home
ShowSymlinks on
DirFakeUser on
AllowStoreRestart on
AllowRetrieveRestart on
TransferLog /var/log/proftpd/transfer.log
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
<Directory /home>
AllowOverwrite off
HideNoAccess on
HideUser root
</Directory>
<Directory /home/www>
AllowOverwrite on
HideNoAccess on
Umask 022 022
</Directory>
<Anonymous /home/public/ftp>
MaxClients 10
MaxClientsPerHost 3
AllowForeignAddress off
User nobody
Group nogroup
UserAlias anonymous nobody
AuthAliasOnly on
AllowOverwrite off
ShowSymlinks off
<Limit LOGIN>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
AllowGroup users
DenyAll
</Limit>
<Limit STOR>
AllowGroup users
DenyAll
</Limit>
<Limit ALL>
</Limit>
</Anonymous>
Edit : Mise à jour de la configuration.
NB : Insérez bien les utilisateur interdit d'accès au ftp (Comme les comptes système et le compte root par exemple) dans /etc/ftpuser et verifiez bien que "UseFtpUsers" est à "on" sinon la sécurité ne sera pas prise en compte lors de l'authentification.
NB N°2 => J'ai activé le FTP SSL
NB N°3 => Dans cette configuration, j'ai ajouté une règle ACL (Qui est géré également par Proftpd) qui permet aux membres du groupe "users" d'écrire dans le répertoire /home/www (emplacement où sont stockés les sites web par exemple) et lors de l'envoi de fichier sur ce repertoire, les fichiers on par défaut la valeur umask 022 ce qui évite de devoir faire à chaque fois un "chown -R www-data:www-data" sur /home/www.
Dernière modification par mecanotox (Le 24/08/2012, à 16:37)
Hors ligne
#2 Le 14/08/2012, à 11:33
- Kooothor
Re : [How To] Proftpd + PAM Auth
Plop,
À mon humble avis, tu ne peux pas mettre «sécurité» et «FTP» dans le même message !
(déjà que «sécurité» et «informatique» c'est moyennement compatible...)
Mon conseil : tu gardes un FTP anonyme.
Pour un accès avec un compte, utilise SSH/SFTP. En plus c'est très facile à mettre en place.
@+
~ktr
Hors ligne
#3 Le 14/08/2012, à 12:16
- mecanotox
Re : [How To] Proftpd + PAM Auth
J'ai bien précisé que la configuration n'était certainement pas optimisée.
Après concernant le chapitre sécurité, je suis d'accord avec toi qu'à moitiée :
- Dans le cas là effectivement j'ai pas ajouter la couche SSL qui peut apporter une vrai sécurité si tu authentifie les utilisateur avec un certificats SSL [En + de la CA et de celui du serveur] et le couple login/mot de passe
- Tu peux parfaire cette sécurité en définissant bien les droits sur les répertoire et utiliser en plus les ACL
- Dans le cas là, le processus serveur est lancé avec Nobody (Nogroup) donc les droits sont extremement limités sur les fichiers de configuration.
- Par défaut, proftpd bloque la connexion root en FTP.
Hors ligne
#4 Le 24/08/2012, à 16:37
- mecanotox
Re : [How To] Proftpd + PAM Auth
UP => Le fichier de configuration a été mis à jour.
Hors ligne
Pages : 1