2 votes

Fournir un accès HTTPS à un serveur SFTP multi-utilisateurs

J'ai un serveur SFTP fonctionnant sur Ubuntu Server 12.04 LTS. Tous les utilisateurs du groupe 'sftponly' sont ancrés dans leur répertoire personnel lors de la connexion. Comme OpenSSH exige que le ChrootDirectory soit détenu par root, chaque utilisateur a un sous-dossier nommé 'upload' dans lequel il a le droit d'écrire. Tout cela fonctionne bien, et les utilisateurs sont limités à leur propre zone, qu'ils en soient conscients ou non.

Je voudrais maintenant fournir un accès via HTTP/HTTPS pour que les utilisateurs puissent télécharger des fichiers en utilisant simplement un navigateur Web. Je me suis penché sur le mod_userdir d'Apache, mais il semble être davantage axé sur l'accès anonyme. Je voudrais que le système demande à l'utilisateur de s'authentifier avant de pouvoir télécharger à partir de son dossier. Il devrait également l'autoriser à télécharger uniquement à partir de son dossier.

Par exemple, un utilisateur visiterait https://download.example.com/testuser/file.zip et devront s'authentifier en utilisant les mêmes informations d'identification que lorsqu'ils se connectent via SFTP pour télécharger le fichier.

J'ai cherché des solutions comme la création d'un hôte virtuel distinct pour chaque utilisateur, et la création manuelle de fichiers htaccess dans chaque répertoire personnel, mais cela semble un peu désordonné.

Toute suggestion est la bienvenue.

1voto

Mufaka Points 54

Vous devez intégrer Apache à PAM pour son authentification. C'est assez facile à faire grâce à pwauth y mod_authnz_external . Vous pouvez lire plus de détails ici :

Le problème, c'est que je ne vois aucun moyen de l'intégrer dans le système de gestion de l'information. userdir module. pwauth vous permettra de spécifier requires user <username> mais je ne vois pas comment combiner les deux. Et croyez-moi quand je dis que j'ai cherché.

Je pense que la méthode la plus simple pour cela serait de conserver manuellement une entrée pour chaque utilisateur :

<Directory /users/abed/>
    DocumentRoot /home/abed/public_html/
    AuthType Basic
    AuthName "Restricted Area"
    AuthBasicProvider external
    AuthExternal pwauth
    Require user abed
</Directory>

<Directory /users/britta/>
    DocumentRoot /home/britta/public_html/
    AuthType Basic
    AuthName "Restricted Area"
    AuthBasicProvider external
    AuthExternal pwauth
    Require user britta
</Directory>

Et ainsi de suite. Vous pourriez même script quelque chose pour régénérer cela sur une base périodique. Ce n'est pas une structure de modèle difficile à suivre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X