introduction
scponly est une alternative sécurisée au FTP anonyme. Il donne à l’administrateur la possibilité de configurer un compte d’utilisateur sécurisé avec un accès restreint aux fichiers distants et sans accès à un shell interactif.
Pourquoi utiliser scponly au lieu de SSH normal? Avec scponly, vous donnez à l’utilisateur un accès à distance pour télécharger et télécharger des fichiers spécifiques. Ils n’auront pas de shell interactif, ce qui signifie qu’ils ne peuvent pas exécuter de commandes. L’utilisateur peut uniquement accéder au serveur via + scp
,` + sftp` ou via des clients prenant en charge ces protocoles. Du point de vue de la sécurité, cela réduit votre surface d’attaque en limitant les accès inutiles à un shell interactif sur un serveur.
Conditions préalables
Pour ce didacticiel, vous aurez besoin d’un nouveau gouttelette CentOS 6 ou 7.
Toutes les commandes de ce didacticiel doivent être exécutées en tant qu’utilisateur non root. Si un accès root est requis pour la commande, il sera précédé de + sudo +
. Si vous ne l’avez pas déjà configuré, suivez ce tutoriel: Initial Initial Server Setup on CentOS 6 ou https. : //www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [Configuration initiale du serveur pour CentOS 7].
Étape 1 - Installer les packages
scponly est disponible dans certains référentiels tiers, mais ces versions de scponly sont obsolètes et il manque certaines des fonctionnalités que nous ajouterons lorsque nous compilerons scponly à partir du code source.
Pour compiler scponly à partir du source, vous devrez installer les 5 packages suivants:
-
wget (pour télécharger des fichiers via la ligne de commande)
-
gcc (à compiler depuis le source)
-
man (Pour lire les pages de manuel)
-
rsync (pour fournir une copie de fichier avancée)
-
openssh-client-tools (pour fournir divers outils ssh)
Nous allons utiliser yum pour installer les paquets prérequis nécessaires pour compiler scponly. Au cours de l’installation, nous allons passer les noms de paquetages requis ainsi que + -y +
qui répond automatiquement par oui à toutes les invites.
Installez + wget
,` + gcc + ,
+ man`, + rsync
et` + openssh-clients` à l’aide de la commande + yum install +
:
sudo yum install wget gcc man rsync openssh-clients -y
Étape 2 - Téléchargez et extrayez scponly
Dans cette section, nous allons télécharger la dernière version de scponly depuis sourceforge en utilisant + wget +
et en extrayant les fichiers en utilisant + tar +
.
Avant de télécharger scponly, allez dans le répertoire + / opt +
. Ce répertoire est généralement désigné pour le logiciel optional.
cd /opt
En date de cet article, le dernier instantané de scponly est * 2011.05.26 *. Vous pouvez consulter la page Sourceforge pour une version ultérieure et ajuster la commande + wget +
en conséquence.
Téléchargez la source scponly en utilisant + wget +
:
sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz
Extrayez le code source scponly:
sudo tar -zxvf scponly-20110526.tgz
Étape 3 - Construire et installer scponly
Dans cette section, nous allons utiliser 3 commandes principales pour compiler scponly: + configure +
, + make +
et + make install +
. Ce sont les 3 commandes les plus souvent utilisées lorsque vous téléchargez et installez un logiciel à partir du code source.
Accédez au répertoire contenant le code source scponly que vous venez de décompresser:
cd /opt/scponly-20110526
Tout d’abord, lancez la commande + configure +
pour construire un fichier make avec toutes les fonctionnalités que vous voulez activer ou désactiver lors de la compilation à partir du source:
sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server
Les options suivantes ont été utilisées:
-
+ - enable-chroot-binary: +
binaire installé chroot+ scponly c +
-
+ - enable-winscp-compat: +
Active la compatibilité avec WinSCP, un client Windows scp / sftp -
+ - enable-rsync-compat: +
Activer la compatibilité avec rsync, un utilitaire de copie de fichiers très polyvalent -
+ - enable-scp-compat: +
Active la compatibilité avec les commandes scp de style UNIX
Ensuite, nous allons construire avec la commande + make +
. La commande make +
utilise toutes les options que vous avez passées à l’aide de la commande + configure +
et les construit dans les fichiers binaires qui seront installés et exécutés sur le système d’exploitation.
sudo make
Ensuite, nous allons installer les binaires avec + make install
:
sudo make install
Enfin, ajoutez les shell scponly au fichier + / etc / shells +
:
sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"
Le fichier + / etc / shells +
indique au système d’exploitation quels shells sont disponibles pour les utilisateurs. Nous disons donc au système d’exploitation que nous avons ajouté un nouveau shell au système appelé + scponly +
et que le fichier binaire est situé à + / usr / local / bin / scponly +
.
Étape 4 - Créer un groupe scponly
Nous allons maintenant créer un groupe appelé scponly afin de pouvoir gérer facilement tous les utilisateurs qui accéderont au serveur avec scponly.
sudo groupadd scponly
Étape 5 - Créer un répertoire de téléchargement et définir les autorisations appropriées
Dans cette section, nous allons créer un répertoire de téléchargement centralisé pour le groupe scponly. Cela vous permet de contrôler où et combien de données peuvent être téléchargées sur le serveur.
Créez un répertoire nommé + / pub / upload +
. Ce sera un répertoire dédié aux uploads:
sudo mkdir -p /pub/upload
Changez la propriété du groupe du répertoire + / pub / upload
en` + scponly`:
sudo chown root:scponly /pub/upload
L’étape suivante consiste à configurer les autorisations sur le répertoire + / pub / upload +
. En définissant les autorisations sur ce répertoire sur 770, nous donnons uniquement accès aux utilisateurs root et aux membres du groupe scponly.
Modifiez les autorisations sur le répertoire + / pub / upload +
pour lire, écrire et exécuter pour le propriétaire et le groupe et supprimer toutes les autorisations pour les autres:
sudo chmod 770 /pub/upload
Étape 6 - Créer un compte utilisateur avec scponly Shell
Nous allons maintenant configurer un compte d’utilisateur test pour vérifier notre configuration scponly.
Créez un utilisateur nommé * testuser1 * et spécifiez * scponly * comme groupe alternatif et + / usr / local / bin / scponly +
comme shell:
sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1
Modifiez les autorisations sur le répertoire de base * testuser1 * pour lire et exécuter uniquement pour le propriétaire:
sudo chmod 500 /home/testuser1
Enfin, définissez un mot de passe pour l’utilisateur * testuser1 *:
sudo passwd testuser1
Étape 7 - Vérifiez que l’utilisateur n’a pas accès à Interactive Shell
Nous allons maintenant tester l’accès au shell scponly et vérifier qu’il fonctionne comme prévu.
Vérifions que le compte * testuser1 * n’a pas accès à un terminal.
Essayez de vous connecter au serveur en tant que testuser1:
su - testuser1
Votre terminal sera bloqué car vous n’avez pas accès à un shell interactif. Appuyez sur + CTRL + C +
pour quitter le shell.
Vous pouvez également tester l’accès à partir de votre ordinateur local:
ssh testuser1@
Là encore, votre terminal sera bloqué car testuser1 n’est pas autorisé à accéder au shell. Appuyez sur + CTRL + C +
pour quitter le shell.
Étape 8 - Tester la capacité des utilisateurs à télécharger des fichiers
Dans cette section, nous nous connecterons via + sftp
de votre ordinateur local à votre droplet DigitalOcean pour vérifier que le compte` + test user1` peut télécharger les fichiers.
Commencez par créer un fichier de 100 mégaoctets en utilisant + fallocate +
:
sudo fallocate -l 100m /home/testuser1/testfile.img
Changez la propriété du fichier + testfile.img +
en testuser1:
sudo chown testuser1:testuser1 /home/testuser1/testfile.img
Sur votre système local, changez le répertoire en + / tmp +
:
cd /tmp
Suivant + sftp +
sur votre serveur DigitalOcean:
sftp testuser1@
Vous pouvez être invité à enregistrer la clé SSH lorsque vous entrez le mot de passe.
Une fois connecté, lancez le problème + ls -l +
à l’invite + sftp> +
:
ls -l
Téléchargez le fichier en utilisant la commande + get +
:
get testfile.img
Une fois le téléchargement du fichier terminé, tapez + quit +
pour quitter:
quit
De retour sur votre ordinateur local, vérifiez que le fichier a été téléchargé avec succès:
ls -l testfile.img
Étape 9 - Test de la capacité des utilisateurs à télécharger des fichiers
Dans cette section, nous allons tester la capacité du compte + testuser1 +
à télécharger des fichiers sur le serveur en utilisant + sftp +
.
Sur votre système local, créez un fichier de 100 mégaoctets appelé + uploadfile.img +
en utilisant + fallocate +
:
fallocate -l 100m /home/testuser1/uploadfile.img
À partir de votre système local, connectez-vous à votre Droplet DigitalOcean.
sftp testuser1@
Envoyez ensuite le fichier + uploadfile.img +
vers + / pub / upload
à partir de l’invite` + sftp`:
put uploadfile.img /pub/upload/
Vérifiez que le fichier a été chargé avec succès en exécutant la commande suivante à l’invite + sftp +
:
ls -ltr /pub/upload
Les résultats devraient ressembler à:
-rw-r--r-- 1 testuser1 testuser1 104857600 Jun 5 07:46 uploadfile.img
Enfin, tapez + quit +
à l’invite + sftp +
:
quit
Conclusion
scponly devrait être dans la boîte à outils de chaque administrateur. Il peut être utilisé comme une alternative sécurisée au FTP anonyme ou comme un moyen de donner aux utilisateurs authentifiés la possibilité de télécharger et de télécharger des fichiers sans passer par un shell interactif. La journalisation de scponly a lieu dans le fichier journal standard ssh + / var / log / secure +
. Comme toujours, lisez les pages de manuel et maintenez votre système à jour.
Pour plus d’informations sur scponly, consultez la page scponly.