GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer un serveur SFTP sur CentOS

Ce tutoriel explique comment configurer et utiliser un serveur SFTP sur CentOS. Avant de commencer, laissez-moi vous expliquer ce que représente réellement SFTP et à quoi il sert. Actuellement, la plupart des gens savent que nous pouvons utiliser le FTP normal pour transférer, télécharger ou importer des données d'un serveur vers un client ou d'un client vers un serveur. Mais ce protocole est facilement piraté (si TLS n'est pas utilisé) par des intrus anonymes, car les ports sont largement ouverts à tous. Par conséquent, SFTP a été présenté comme une autre alternative pour répondre à l'objectif principal de renforcer le niveau de sécurité.

SFTP signifie SSH File Transfer Protocol ou Secure File Transfer Protocol. Il utilise un protocole distinct fourni avec SSH pour fournir une connexion sécurisée.

1. Remarque préliminaire

Pour ce tutoriel, j'utilise CentOS 7 dans la version 64 bits. Les mêmes étapes fonctionneront également sur CentOS 6. Le résultat du tutoriel montrera comment un client peut avoir accès au serveur SFTP mais incapable de se connecter au serveur lui-même par SSH.

2. Installation SFTP

Contrairement au FTP normal, il n'est pas nécessaire d'installer des packages supplémentaires pour utiliser SFTP. Nous avons simplement besoin du package SSHd pré-construit qui a déjà été installé lors de l'installation sur le serveur. Par conséquent, vérifiez simplement si vous disposez déjà du package SSH requis. Voici les étapes :

Exécuter :

rpm -qa|grep ssh

Le résultat devrait ressembler à ceci :

[[email protected] ~]# rpm -qa|grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-7.4p1-13.el7_4.x86_64
openssh-server-7.4p1-13.el7_4.x86_64
openssh-clients-7.4p1-13.el7_4.x86_64

C'est tout, nous allons maintenant passer à la configuration SFTP.

3. Configuration SFTP

Une fois que toutes les conditions préalables à l'installation sont remplies, nous passerons à la phase de configuration. Pour les meilleures pratiques, nous devons créer un groupe et un utilisateur afin de pouvoir gérer tous les utilisateurs qui obtiendront un accès SFTP. Mais d'abord, créons un dossier supplémentaire appelé data. Voici les étapes :

mkdir -p /data/sftp
chmod 701 /data

Fondamentalement, ce que j'essaie de faire avec l'étape ci-dessus est d'obtenir un dossier séparé en tant que répertoire principal pour l'accès SFTP. Tous les répertoires d'utilisateurs pour les utilisateurs SFTP seront des sous-répertoires de ce dossier de données.

Créons un groupe pour l'utilisateur SFTP, voici les étapes :

groupadd sftpusers

Créez ensuite un utilisateur 'howtoforge' et affectez-le au groupe SFTPUSERS. Voici les étapes :

useradd -g sftpusers -d /upload -s /sbin/nologin mysftpuser
passwd mysftpuser
Changing password for user mysftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Vous trouverez ci-dessous l'explication des commandes ci-dessus :

  1. Je crée un utilisateur et l'inclus dans le groupe sftpusers à l'aide de la commande -g.
  2. J'attribue le répertoire principal à l'utilisateur dans le répertoire /upload en définissant la commande -d /upload. Cela signifie que plus tard le dossier /upload sera sous /data/mysftpuser/upload.
  3. Je limite l'accès au shell /sbin/nologin pour garantir que l'utilisateur ne peut utiliser que le protocole SFTP, pas SSH.
  4. Je nomme l'utilisateur "mysftpuser".
  5. Définir le mot de passe pour l'utilisateur "mysftpuser".


Créons maintenant le dossier /upload sous /data/mysftpuser, puis attribuons la propriété appropriée au dossier.

mkdir -p /data/mysftpuser/upload
chown -R root:sftpusers /data/mysftpuser
chown -R mysftpuser:sftpusers /data/mysftpuser/upload

Une fois cela fait, vérifiez que le nouveau dossier sous le répertoire /data existe et que nous avons fait la configuration correcte.


[[email protected] ~]# ls -ld /data/
drwx-----x. 5 root root 54 Mar 22 14:29 /data/
[[email protected] ~]# ls -ld /data/mysftpuser
drwxr-xr-x. 3 root sftpusers 20 Mar 22 14:29 /data/mysftpuser
[[email protected] ~]# ls -ld /data/mysftpuser/upload
drwxr-xr-x. 2 mysftpuser sftpusers 6 Mar 22 14:29 /data/mysftpuser/upload
[[email protected] ~]# cat /etc/passwd|grep mysftpuser
mysftpuser:x:1001:1001::/upload:/sbin/nologin

Configurez maintenant le protocole SSH pour créer un processus SFTP. Cela peut être fait en éditant le fichier de configuration sous /etc/ssh/sshd_config. Voici les étapes :

nano /etc/ssh/sshd_config

Ajoutez les lignes suivantes à la fin du fichier.

Match Group sftpusers
ChrootDirectory /data/%u
ForceCommand internal-sftp

Une fois terminé, redémarrez les services SSH, voici les étapes :

service sshd status
Redirecting to /bin/systemctl status sshd.service
? sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-03-22 14:21:38 CET; 16min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 942 (sshd)
CGroup: /system.slice/sshd.service
??942 /usr/sbin/sshd -D
Mar 22 14:21:37 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Mar 22 14:21:38 localhost.localdomain sshd[942]: Server listening on 0.0.0.0 port 22.
Mar 22 14:21:38 localhost.localdomain sshd[942]: Server listening on :: port 22.
Mar 22 14:21:38 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
Mar 22 14:21:49 localhost.localdomain sshd[1375]: Accepted password for root from 192.168.1.9 port 59465 ssh2
service sshd restart
[[email protected] ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service

4. Test SFTP

Maintenant que tout a été configuré, effectuons un test pour nous assurer que la configuration répond à notre objectif.
J'accéderai au SFTP en utilisant un autre serveur appelé TEST01. Tout d'abord, je vais vérifier le port du serveur SFTP. Pour ce faire, je vais utiliser la fonction nmap. Si votre serveur client ne l'avait pas, vous pouvez le télécharger et l'installer avec yum comme indiqué ci-dessous :

yum list nmap
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.copahost.com
* epel: mirror.imt-systems.com
* extras: mirror.imt-systems.com
* remi-php72: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* updates: ftp.rz.uni-frankfurt.de
Available Packages
nmap.x86_64 2:6.40-7.el7
yum install nmap -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.copahost.com
* epel: mirror.imt-systems.com
* extras: mirror.imt-systems.com
* remi-php72: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* updates: ftp.rz.uni-frankfurt.de
Resolving Dependencies
--> Running transaction check
---> Package nmap.x86_64 2:6.40-7.el7 will be installed
--> Processing Dependency: nmap-ncat = 2:6.40-7.el7 for package: 2:nmap-6.40-7.el7.x86_64
--> Running transaction check
---> Package nmap-ncat.x86_64 2:6.40-7.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================================================
Installing:
nmap x86_64 2:6.40-7.el7 base 4.0 M
Installing for dependencies:
nmap-ncat x86_64 2:6.40-7.el7 base 201 k
Transaction Summary
=============================================================================================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 4.2 M
Installed size: 17 M
Downloading packages:
(1/2): nmap-ncat-6.40-7.el7.x86_64.rpm | 201 kB 00:00:01
(2/2): nmap-6.40-7.el7.x86_64.rpm | 4.0 MB 00:00:14
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 300 kB/s | 4.2 MB 00:00:14
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 2:nmap-ncat-6.40-7.el7.x86_64 1/2
Installing : 2:nmap-6.40-7.el7.x86_64 2/2
Verifying : 2:nmap-ncat-6.40-7.el7.x86_64 1/2
Verifying : 2:nmap-6.40-7.el7.x86_64 2/2
Installed:
nmap.x86_64 2:6.40-7.el7
Dependency Installed:
nmap-ncat.x86_64 2:6.40-7.el7
Complete!
[[email protected] ~]# nmap -n 192.168.1.100
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-22 14:51 CET
Nmap scan report for 192.168.1.100
Host is up (0.000016s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds


Vous remarquerez qu'actuellement sur notre serveur SFTP, le seul port ouvert est SSH 22. Essayons maintenant d'accéder au serveur SFTP (IP :192.168.1.100 dans mon cas) depuis le client TEST01. Voici les étapes :

[[email protected] /]# sftp [email protected]
[email protected]'s password:
Connected to 192.168.1.100.
sftp> pwd
Remote working directory: /upload
sftp>

Génial! Désormais, notre serveur SFTP est accessible de l'extérieur. Notez que le répertoire par défaut est /upload . Cela signifie que SFTP n'affichera que le chemin par défaut sous la forme /upload même si notre configuration précédente effectuée dans le répertoire du serveur SFTP est /data/mysftpuser/upload.
Essayons maintenant d'obtenir un fichier du répertoire du serveur SFTP dans notre client de test. Commençons par créer un fichier de test sous /data/mysftpuser/upload. Voici les étapes :

cd /data/mysftpuser/upload
touch testing_file.txt

Revenez ensuite sur notre site de test TEST01 et voyez si nous pouvons obtenir et télécharger le fichier créé.

[[email protected] /]# sftp [email protected]
[email protected]'s password:
Connected to 192.168.1.100.
sftp> pwd
Remote working directory: /upload
sftp> ls
testing_file.txt
sftp> get testing_file.txt
Fetching /upload/testing_file.txt to testing_file.txt
sftp> quit

Excellent! Notre test SFTP a réussi, essayons d'accéder à SSH en utilisant l'utilisateur mysftpuser. Comme précédemment, nous avons défini la configuration sur /sbin/nologin, donc l'utilisateur ne pourra pas utiliser les services SSH :

[[email protected] ~]# ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to 192.168.1.100 closed.

Joli! Nous avons maintenant un serveur SFTP sécurisé opérationnel.


Cent OS
  1. Comment configurer le serveur SysLog sur CentOS 7 / RHEL 7

  2. Comment configurer le serveur NFS sur CentOS 7 / RHEL 7

  3. Centos - Comment créer un utilisateur Sftp dans Centos ?

  4. Comment configurer un serveur proxy squid sur CentOS/RHEL 7

  5. Comment configurer le serveur VNC pour un nouvel utilisateur dans CentOS/RHEL 5

Comment configurer le serveur d'impression Samba sur CentOS

Comment configurer le serveur de messagerie Zimbra sur CentOS 7

Comment configurer le serveur SysLog centralisé sur CentOS 8 / RHEL 8

Comment configurer le serveur SFTP sur CentOS ?

Comment initialiser la configuration du serveur CentOS 7

Comment configurer HAProxy sur CentOS 8