Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 14-08-2012 00:38:13

mecanotox
Membre
Distrib. : Ubuntu 12.10 Quantal
Noyau : 3.5.0-21-generic
(G)UI : XFCE 4.10 + Thunar 1.6
Inscription : 04-06-2008

[How To] Debian Squeeze - 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 (24-08-2012 17:38:31)

Hors ligne

#2 24-08-2012 17:39:54

mecanotox
Membre
Distrib. : Ubuntu 12.10 Quantal
Noyau : 3.5.0-21-generic
(G)UI : XFCE 4.10 + Thunar 1.6
Inscription : 04-06-2008

Re : [How To] Debian Squeeze - Proftpd + PAM Auth

Fichier configuration mis à jour avec de nouvelles règles de sécurité. Comme vous pouvez également le remarquer, cette configuration s'applique facilement sur un serveur perso hébergeant moins d'une dizaine de sites et moins de 10 utilisateurs différents.

Hors ligne

#3 25-08-2012 21:26:00

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [How To] Debian Squeeze - Proftpd + PAM Auth

Salut,
Comme tu nous invites à faire des commentaires, voici le mien:
Pourquoi utiliser un serveur ftp/ftps pour 10 utilisateurs ou moins plutôt que passer via sftp ?

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#4 26-08-2012 11:06:04

mecanotox
Membre
Distrib. : Ubuntu 12.10 Quantal
Noyau : 3.5.0-21-generic
(G)UI : XFCE 4.10 + Thunar 1.6
Inscription : 04-06-2008

Re : [How To] Debian Squeeze - Proftpd + PAM Auth

Chacun ses préférence. Si tu préfère utiliser sftp que ftp/ ftp SSL c'est à chacun de voir.
Je ne suis pas allé aussi loin dans mon cas mais il est possible d'authentifier avec proftpd les utilisateur par user-pass + certificats SSL personnel. LA documentation est bien fourni sur le sujet.

De manière générale, pour la couvhe SSL de protftpd :
- Soit tu laisse le choix (SSL non obligatoire)
- Sois tu oblige l'utilisation de SSL
- Sur la partie SSL, tu peux chiffrer sois l'authentification ,sois le transfert, sois les 2 combinés.

Deuxième points côté sécurité : Ici j'ai laisser libre pour le moment car le FTP est pour l'instant utiliser qu'au sein du LAN donc il y a l'authentification et le transfère par SSL et le protocole basique FTP sans sécurité.

Ensuite sftp te demande une gestion supplémentaires de clé pour chaque utilisateur. De plus si tu veux faire cela correctement il faut :
- Authentification par clé public/privée. Tu mets ensuite normalement un mot de passe sur la clé privée (Sinon ça ne sert à rien, il suffit de copier la clé pour avoir accès)
- Chrooter chaque utilisateur puisque qui dis accès sftp, dis SSH donc accès console. => Si tu chroot tu oublie forcément les liens symboliques vers le dossier contenant les sites web (Ou alors tu configure Apache et let's go pour une prise de tête sur les droits dossier/fichier)
- Les ACL et les umask en SFTP de manière simple => J'ai pas d'idée

Donc au finale SFTP est comparable à FTP SSL avec Authentification par user/pass + Clé SSL personnel (Et c'est possible avec proftpd).

Différence niveau firewall cependant :
- FTP il faut gérer plusieurs ports (20, 21 et les ports déclarés pour le FTP passif)
- SFTP il faut gérer un seul port, là j'avoue c'est plus simple (encore que...)

SFTP comme FTP ne dispense pas de l'utilisation d'outils tel que Fail2ban (Protection contre le brute-force) et pour l'utilisateur d'utiliser des mots de passe fort (Chiffre, lettres caractères spéciaux, etc...)

En dernier, je fais plus confiance lorsque je sais que mes fichier passe dans un tunnel SSL chiffré en AES256 et authentifié par clé RSA 4096bits

Hors ligne

Pied de page des forums