GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le serveur SFTP MySecureShell sur Ubuntu 18.04

Dans cet article, je vais vous expliquer comment configurer un serveur SFTP à l'aide de MySecureShell sur Ubuntu 18.04. SFTP est un moyen sécurisé de transférer des fichiers à l'aide d'une connexion SSH cryptée. Bien qu'il soit largement pris en charge par les clients FTP modernes, il s'agit d'un protocole complètement différent de FTP (File Transfer Protocol).

Vous pourriez me demander pourquoi MySecureShell au lieu du serveur FTP traditionnel. Voici les quelques fonctionnalités,

  • Transfert de données sécurisé via SSH
  • Pas besoin de gérer les certificats SSL
  • Facile à installer et à configurer
  • Limiter l'utilisation de la bande passante
  • Restrictions relatives aux fichiers et dossiers
  • Liste de contrôle d'accès à l'aide de l'IP/du nom d'utilisateur/des groupes/de l'hôte virtuel
  • Restreindre les utilisateurs à n'avoir que sftp (l'accès au shell est désactivé par défaut)
  • Système de journalisation amélioré

Commençons donc d'abord par l'installation, des connaissances de base en FTP sont suffisantes pour comprendre ce tutoriel.

Installation

À partir d'ubuntu 15.04 et supérieur, MySecureShell est disponible dans les référentiels par défaut. Nous utilisons Ubuntu 18.04 pour cette installation. Exécutez simplement les commandes ci-dessous pour installer MySecureShell.

apt-get install mysecureshell

S'ils ne sont pas disponibles, suivez les étapes, assurez-vous que toutes les étapes suivantes sont exécutées en tant qu'utilisateur root.

vim /etc/apt/sources.list

Ajouter les 2 lignes suivantes,

deb http://mysecureshell.free.fr/repository/index.php/ubuntu testing main
deb-src http://mysecureshell.free.fr/repository/index.php/ubuntu testing main

Ajoutez maintenant la clé gpg en tant que,

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B; gpg --export E328F22B | apt-key add
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 7601D76CE328F22B: public key "MySecureShell repository " imported
gpg: Total number processed: 1
gpg:           	imported: 1
OK

Une fois le référentiel ajouté, vous pouvez commencer l'installation

apt-get update
apt-get install mysecureshell

Vous êtes maintenant prêt à démarrer le service et à vérifier son statut

systemctl start mysecureshell.service
systemctl status mysecureshell.service

Exemple de sortie

# systemctl start mysecureshell.service
root@li1004-153:~# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 4min 44s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.

# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 50min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.
#

Utilisez les commandes ci-dessous pour arrêter et redémarrer le service mysecureshell

systemctl stop mysecureshell.service
systemctl restart mysecureshell.service

Création d'utilisateur SFTP MySecureShell

Tout d'abord, nous devons trouver l'emplacement d'installation de MySecureShell,

whereis mysecureshell

Comme vous le voyez dans la sortie ci-dessous, le chemin d'installation de mysecureshell est /usr/bin/mysecureshell.

mysecureshell: /usr/bin/mysecureshell /usr/share/man/man8/mysecureshell.8.gz

Maintenant, après avoir vérifié le chemin, créons un utilisateur

useradd -m -s /usr/bin/mysecureshell testsftpuser
passwd testsftpuser

Comme vous le voyez dans la commande ci-dessus, nous créons un utilisateur et attribuons le chemin de l'emplacement mysecureshell. De plus, vous pouvez attribuer aux utilisateurs existants l'accès et l'utilisation de MySecureShell à l'aide de la commande :

sudo usermod -s /usr/bin/mysecureshell testsftpuser

Connexion utilisateur

Désormais, l'utilisateur "testsftpuser" peut se connecter à votre serveur SFTP à partir de vos clients comme indiqué ci-dessous avec l'adresse IP de votre machine,

sftp [email protected]

IP de votre machine

Connected to 45.33.54.153
sftp>

En outre, vous pouvez vous connecter à votre serveur SFTP avec n'importe quel client graphique tel que FileZilla à partir de votre système client.

Commandes MySecureShell

MySecureShell dispose de l'ensemble de commandes suivant pour administrer votre serveur SFTP.

  • sftp-admin
  • sftp-kill
  • sftp-état
  • utilisateur sftp
  • sftp-verif
  • sftp-qui

sftp-admin

Cette commande permet de gérer un MySecureShell à distance.

sftp-admin [ssh options] user@hostname

sftp-kill

Cela déconnectera l'utilisateur du serveur FTP.

sftp-kill testsftpuser
Kill testsftpuser on PID 1961
(Press "Y" when requested)

sftp-état

Afficher l'état du serveur ftp

# sftp-state

Exemple de sortie

# sftp-state
Server is up
#

utilisateur sftp

Cette commande vous permet de créer un utilisateur SFTP, sans spécifier le chemin que nous avons fait auparavant.

sftp-user create test

Lister les utilisateurs SFTP

sftp-user list
test
testsftpuser

La commande supprimera le test utilisateur

sftp-user delete test

sftp-verif

Cette commande vérifiera et corrigera les problèmes sur un serveur MySecureShell.

sftp-verif
################################################################################
MySecureShell Verification Tool
################################################################################

### Verifing file existance ###

/bin/MySecureShell                                                       [ OK ]
/bin/sftp-who                                                            [ OK ]
/bin/sftp-kill                                                           [ OK ]
/bin/sftp-state                                                          [ OK ]
/bin/sftp-admin                                                          [ OK ]
/bin/sftp-verif                                                          [ OK ]
/bin/sftp-user                                                           [ OK ]

### Verifing rights ###

Verifing file rights of /etc/ssh/sftp_config                             [ OK ]
Verifing file rights of /bin/sftp-who                                    [ OK ]
Verifing file rights of /bin/sftp-verif                                  [ OK ]
Verifing file rights of /bin/sftp-user                                   [ OK ]
Verifing file rights of /bin/sftp-kill                                   [ OK ]
Verifing file rights of /bin/sftp-state                                  [ OK ]
Verifing file rights of /bin/sftp-admin                                  [ OK ]
Verifing file rights of /bin/MySecureShell                               [ OK ]

### Verifing rotation logs ###
Rotation logs have been found                                            [ OK ]
### Verifing server status ###
Verifing server status (ONLINE)                                          [ OK ]
[...]

sftp-qui

Cette commande vous indiquera qui est actuellement connecté au serveur FTP.

sftp-who
# sftp-who
--- 1 / 10 clients ---
Global used bandwidth : 0 bytes/s / 0 bytes/s
PID: 2207   Name: testsftpuser   IP: pa39-178-9-194.pa.nsw.optusnet.com.au
        Home: /home/testsftpuser
        Status: idle    Path: /
        File:
        Connected: 2018/05/18 01:30:50 [since 03mins 59s]
        Speed: Download: 0 bytes/s [5.00 kbytes/s]  Upload: 0 bytes/s [unlimited]
        Total: Download: 924 bytes   Upload: 100 bytes
#

Configuration

Le fichier de configuration principal de MySecureShell est /etc/ssh/sftp_config. Vous pouvez configurer la bande passante de téléchargement et de téléchargement, les utilisateurs de chroot, le nombre maximum de connexions, etc. dans le fichier de configuration. Vous pouvez définir ces options pour tout le monde ou uniquement pour un groupe particulier.

cat /etc/ssh/sftp_config

Balise par défaut

La balise par défaut est utilisée si vous souhaitez appliquer une configuration pour tous vos utilisateurs

#Default rules for everybody
Default
        GlobalDownload          50k     #total speed download for all clients
                                        # o -> bytes   k -> kilo bytes   m -> mega bytes
        GlobalUpload            0       #total speed download for all clients (0 for unlimited)
        Download                5k      #limit speed download for each connection
        Upload                  0       #unlimit speed upload for each connection
        StayAtHome              true    #limit client to his home
        VirtualChroot           true    #fake a chroot to the home account
        LimitConnection         10      #max connection for the server sftp
        LimitConnectionByUser   1       #max connection for the account
        LimitConnectionByIP     2       #max connection by ip for the account
        Home                    /home/$USER     #overrite home of the user but if you want you can use
                                                #       environment variable (ie: Home /home/$USER)
        IdleTimeOut             5m      #(in second) deconnect client is idle too long time
        ResolveIP               true    #resolve ip to dns
        LogFile         /var/log/sftp-server_ftp.log
#       IgnoreHidden            true    #treat all hidden files as if they don't exist
#       DirFakeUser             true    #Hide real file/directory owner (just change displayed permissions)
#       DirFakeGroup            true    #Hide real file/directory group (just change displayed permissions)
#       DirFakeMode             0400    #Hide real file/directory rights (just change displayed permissions)
                                        #Add execution right for directory if read right is set
        HideNoAccess            true    #Hide file/directory which user has no access
#       MaxOpenFilesForUser     20      #limit user to open x files on same time
#       MaxWriteFilesForUser    10      #limit user to x upload on same time
#       MaxReadFilesForUser     10      #limit user to x download on same time
        DefaultRights           0640 0750       #Set default rights for new file and new directory
#       MinimumRights           0400 0700       #Set minimum rights for files and dirs

        ShowLinksAsLinks        false   #show links as their destinations
#       ConnectionMaxLife       1d      #limits connection lifetime to 1 day

#       Charset                 "ISO-8859-15"   #set charset of computer

Default

Remarque : Les journaux ne sont pas activés par défaut, vous pouvez définir l'emplacement du fichier journal dans le fichier de configuration.

Balise FileSpec

La balise FileSpec est conçue pour créer des filtres sur les fichiers et les répertoires.

    # Only check against filenames/folder names only
FileSpec
    UseFullPath false

    # we can use multiple deny/allow directives for clarity
    Order DenyAllow
    Deny ".*.exe$"
    Deny ".*.sh$"
    Allow all
FileSpec

Tag utilisateur
La balise utilisateur définit pour un dossier d'accueil utilisateur spécifique

User tom 
Home /home/tom 
User

Balise VirtualHost

La balise VirtualHost peut définir des limitations basées sur le nom de l'hôte virtuel

    # Set home directory for this virtualhost
VirtualHost
    Home                    /var/www/html/www.mysftpsite.com
    # Set dedicated log file
    LogFile                 /var/log/sftp/www.mysftpsite.com
    # Override the maximum number of connection per user
    LimitConnectionByUser   5
VirtualHost

Installation de gFTP

Maintenant, essayons l'installation de gFTP sur Ubuntu 18.04, suivez les étapes ci-dessous,

sudo apt-get install gftp
  • Ouvrir gFTP à partir des applications
  • Entrez l'adresse IP du serveur SFTP, le numéro de port (par défaut/spécifié lors de la configuration du serveur), le nom d'utilisateur et le mot de passe et utilisez SSH2. Appuyez sur Entrée pour vous connecter
  • Si la tentative de connexion a réussi. Nous sommes connectés à SFTP via gFTP

C'est tout pour le moment. À ce stade, vous aurez un serveur SFTP fonctionnel. J'espère que vous aimez ce tutoriel et que je vous ai laissé une partie de configuration pour l'auto-apprentissage, veuillez commenter la configuration que vous avez faite pour vous-même, ce qui aide notre communauté Linoxide à apprendre et à grandir. Merci.


Ubuntu
  1. Comment configurer le serveur SFTP sur Ubuntu 20.04 Focal Fossa Linux

  2. Comment configurer le serveur Rsyslog sur Ubuntu 18.04 LTS

  3. Comment configurer le serveur de messagerie Zimbra sur Ubuntu 16

  4. Comment configurer le serveur NTP sur Ubuntu et LinuxMint

  5. Configurer Rsyslog Server sur Ubuntu 20.04 - Comment faire ?

Comment configurer le serveur multijoueur Minecraft sur Ubuntu 16.04

Comment configurer OpenVPN sur Ubuntu Server

Comment configurer le serveur Git sur Ubuntu 20.04

Comment configurer le serveur Rsyslog sur Ubuntu

Comment configurer le serveur DHCP sur Ubuntu

Comment installer le serveur OmniDB sur Ubuntu 20.04