Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ! tongue
(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