GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit SFTP server na CentOS

Tento tutoriál vysvětluje, jak nastavit a používat server SFTP na CentOS. Než začnu, dovolte mi vysvětlit, co vlastně SFTP představuje a k čemu slouží. V současné době většina lidí ví, že pro přenos, stahování nebo nahrávání dat ze serveru na klienta nebo z klienta na server můžeme použít normální FTP. Tento protokol však snadno napadnou (pokud se nepoužívá TLS) anonymními vetřelci, protože porty jsou široce otevřené komukoli. Proto byl SFTP představen jako další alternativa ke splnění hlavního účelu posílit úroveň zabezpečení.

SFTP je zkratka pro SSH File Transfer Protocol nebo Secure File Transfer Protocol. Používá samostatný protokol přibalený k SSH, který poskytuje zabezpečené připojení.

1. Předběžná poznámka

Pro tento tutoriál používám CentOS 7 v 64bitové verzi. Stejné kroky budou fungovat i na CentOS 6. Výsledek tutoriálu ukáže, jak může být klientovi poskytnut přístup k serveru SFTP, ale nemůže se přihlásit k samotnému serveru pomocí SSH.

2. Instalace SFTP

Na rozdíl od běžného FTP není potřeba instalovat další balíčky, abyste mohli používat SFTP. Požadujeme pouze předem sestavený balíček SSHd, který byl již nainstalován během instalace na server. Proto pouze zaškrtnutím potvrďte, zda již požadovaný SSH balíček máte. Níže jsou kroky:

Spustit:

rpm -qa|grep ssh

Výstup by měl být podobný tomuto:

[[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

To je vše, nyní se podíváme na to, jak provést konfiguraci SFTP.

3. Konfigurace SFTP

Jakmile jsou splněny všechny předpoklady instalace, přejdeme do fáze konfigurace. Pro nejlepší praxi musíme vytvořit skupinu a uživatele, abychom mohli spravovat všechny uživatele, kteří mají získat přístup SFTP. Nejprve však vytvořte další složku s názvem data. Níže jsou kroky:

mkdir -p /data/sftp
chmod 701 /data

V podstatě to, co se snažím udělat s výše uvedeným krokem, je získat samostatnou složku jako hlavní adresář pro přístup SFTP. Všechny uživatelské adresáře pro uživatele SFTP budou podadresáři této datové složky.

Pojďme vytvořit skupinu pro uživatele SFTP, níže jsou kroky:

groupadd sftpusers

Poté vytvořte uživatele 'howtoforge' a přiřaďte jej do skupiny SFTPUSERS. Níže jsou kroky:

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.

Níže je vysvětlení výše uvedených příkazů:

  1. Vytvořím uživatele a zahrnu jej do skupiny sftpusers pomocí příkazu -g.
  2. Hlavní adresář pro uživatele přiřadím do adresáře /upload nastavením příkazu -d /upload. To znamená, že později bude složka /upload pod /data/mysftpuser/upload.
  3. Omezuji přístup k shellu /sbin/nologin, abych zajistil, že uživatel bude moci používat pouze protokol SFTP, nikoli SSH.
  4. Jmenuji uživatele „mysftpuser“.
  5. Nastavit heslo pro uživatele "mysftpuser".


Nyní vytvoříme složku /upload pod /data/mysftpuser a poté této složce přiřadíme příslušné vlastnictví.

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

Po dokončení ověřte, že nová složka v adresáři /data existuje a že jsme provedli správnou konfiguraci.


[[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

Nyní nakonfigurujte protokol SSH pro vytvoření procesu SFTP. To lze provést úpravou konfiguračního souboru v /etc/ssh/sshd_config. Níže jsou kroky:

nano /etc/ssh/sshd_config

Přidejte následující řádky na konec souboru.

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

Po dokončení restartujte služby SSH, níže jsou kroky:

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. Testování SFTP

Nyní je vše nakonfigurováno, takže proveďte test, abychom se ujistili, že nastavení splňuje náš účel.
Přistupuji k SFTP pomocí jiného serveru s názvem TEST01. Nejprve ověřím port SFTP serveru. K tomu použiji funkci nmap. Pokud jej váš klientský server neměl, můžete si jej stáhnout a nainstalovat pomocí yum, jak je uvedeno níže:

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


Všimnete si, že v současné době na našem SFTP serveru je jediným otevřeným portem SSH 22. Nyní se pokusme o přístup k SFTP serveru (IP:192.168.1.100 v mém případě) z klienta TEST01. Níže jsou kroky:

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

Skvělý! Nyní je náš SFTP server přístupný zvenčí. Všimněte si, že výchozí adresář je /upload . To znamená, že SFTP zobrazí výchozí cestu pouze jako /upload, i když naše předchozí konfigurace provedená v adresáři serveru SFTP je /data/mysftpuser/upload.
Nyní se pokusíme získat soubor z adresáře serveru SFTP do našeho testovací klient. Nejprve vytvořte testovací soubor pod /data/mysftpuser/upload. Níže jsou kroky:

cd /data/mysftpuser/upload
touch testing_file.txt

Poté se vraťte na náš testovací web TEST01 a zjistěte, zda jsme schopni získat a stáhnout vytvořený soubor.

[[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

Vynikající! Náš test SFTP byl úspěšný, zkusme přistupovat k SSH pomocí uživatele mysftpuser. Stejně jako dříve jsme nastavili konfiguraci jako /sbin/nologin, takže uživatel nebude moci používat služby SSH:

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

Pěkný! Nyní máme zabezpečený SFTP server v provozu.


Cent OS
  1. Jak nastavit SysLog Server na CentOS 7 / RHEL 7

  2. Jak nastavit replikaci MySQL na CentOS

  3. Jak nastavit proxy server squid na CentOS/RHEL 7

  1. Jak nastavit server NFS na CentOS 7 / RHEL 7

  2. Centos – Jak vytvořit Sftp uživatele v Centos?

  3. Jak nastavit VNC Server pro nového uživatele v CentOS/RHEL 5

  1. Jak nastavit FTP server s VSFTPD na CentOS 7

  2. Jak nastavit NTP server v CentOS?

  3. Jak nastavit VSFTPD na CentOS 7.x?