Поиск по сайту:

Как настроить SFTP-сервер на CentOS


На этой странице

  1. 1. Предварительное примечание
  2. 2. Установка SFTP
  3. 3. SFTP-конфигурация
  4. 4. Тестирование SFTP

В этом руководстве объясняется, как настроить и использовать SFTP-сервер в CentOS. Прежде чем я начну, позвольте мне объяснить, что на самом деле представляет собой SFTP и для чего он используется. В настоящее время большинство людей знают, что мы можем использовать обычный FTP для передачи, загрузки или выгрузки данных с сервера на клиент или с клиента на сервер. Но этот протокол легко взламывается (если TLS не используется) анонимными злоумышленниками, поскольку его порты широко открыты для всех. Поэтому SFTP был представлен как еще одна альтернатива для достижения основной цели — повышения уровня безопасности.

SFTP означает протокол передачи файлов SSH или безопасный протокол передачи файлов. Он использует отдельный протокол, упакованный с SSH, для обеспечения безопасного соединения.

1. Предварительное примечание

В этом руководстве я использую CentOS 7 в 64-разрядной версии. Те же шаги будут работать и на CentOS 6. Результат руководства покажет, как клиенту может быть предоставлен доступ к серверу SFTP, но он не может войти на сам сервер через SSH.

2. Установка SFTP

В отличие от обычного FTP, нет необходимости устанавливать дополнительные пакеты для использования SFTP. Нам просто нужен пакет предварительной сборки SSHd, который уже был установлен во время установки на сервере. Поэтому просто проверьте, есть ли у вас уже требуемый пакет SSH. Ниже приведены шаги:

Бег:

rpm -qa|grep ssh

Вывод должен быть похож на этот:

[ ~]# 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

Вот и все, теперь приступим к настройке SFTP.

3. Конфигурация SFTP

После того, как все предварительные условия установки выполнены, можно перейти к этапу настройки. Для лучшей практики нам нужно создать группу и пользователя, чтобы мы могли управлять всеми пользователями, которые получат доступ к SFTP. Но сначала давайте создадим дополнительную папку с именем data. Ниже приведены шаги:

mkdir -p /data/sftp
chmod 701 /data

В основном то, что я пытаюсь сделать с помощью вышеуказанного шага, — это получить отдельную папку в качестве основного каталога для доступа по SFTP. Все пользовательские каталоги для пользователей SFTP будут подкаталогами этой папки данных.

Давайте создадим группу для пользователя SFTP, ниже приведены шаги:

groupadd sftpusers

Затем создайте пользователя howtoforge и назначьте его группе SFTPUSERS. Ниже приведены шаги:

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.

Ниже приведено объяснение приведенных выше команд:

  1. Я создаю пользователя и включаю его в группу sftpusers с помощью команды -g.
  2. Я назначаю основной каталог для пользователя в каталоге /upload, задав команду -d /upload. Это означает, что позже папка /upload будет находиться в папке /data/mysftpuser/upload.
  3. Я ограничиваю доступ к оболочке /sbin/nologin, чтобы пользователь мог использовать только протокол SFTP, а не SSH.
  4. Я называю пользователя \mysftpuser\.
  5. Установите пароль для пользователя \mysftpuser\.


Теперь давайте создадим папку /upload в каталоге /data/mysftpuser, а затем назначим ей соответствующего владельца.

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

После этого убедитесь, что новая папка в каталоге /data существует и что мы сделали правильную конфигурацию.


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

Теперь настройте протокол SSH для создания процесса SFTP. Это можно сделать, отредактировав файл конфигурации в /etc/ssh/sshd_config. Ниже приведены шаги:

nano /etc/ssh/sshd_config

Добавьте следующие строки в конец файла.

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

После этого перезапустите службы SSH. Ниже приведены шаги:

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
[ ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service

4. Тестирование SFTP

Теперь все настроено, поэтому давайте проверим, чтобы убедиться, что настройка соответствует нашей цели.
Я получу доступ к SFTP, используя другой сервер с именем TEST01. Во-первых, я проверю порт SFTP-сервера. Для этого я воспользуюсь функцией nmap. Если на вашем клиентском сервере его нет, вы можете загрузить и установить его с помощью yum, как показано ниже:

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!
[ ~]# 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


Вы заметите, что в настоящее время на нашем SFTP-сервере единственным открытым портом является SSH 22. Теперь давайте попробуем получить доступ к SFTP-серверу (IP: 192.168.1.100 в моем случае) с клиента TEST01. Ниже приведены шаги:

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

Большой! Теперь наш SFTP-сервер доступен извне. Обратите внимание, что каталог по умолчанию — /upload. Это означает, что SFTP будет отображать путь по умолчанию только как /upload, хотя наша предыдущая конфигурация, сделанная в каталоге сервера SFTP, была /data/mysftpuser/upload.
Теперь давайте попробуем загрузить файл из каталога сервера SFTP в наше тестирование. клиент. Во-первых, давайте создадим тестовый файл в /data/mysftpuser/upload. Ниже приведены шаги:

cd /data/mysftpuser/upload
touch testing_file.txt

Затем вернитесь на наш тестовый сайт TEST01 и посмотрите, сможем ли мы получить и загрузить созданный файл.

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

Отлично! Наш тест SFTP прошел успешно, давайте попробуем получить доступ к SSH, используя пользователя mysftpuser. Как и ранее, мы установили конфигурацию как /sbin/nologin, поэтому пользователь не сможет использовать службы SSH:

['s password:
This service allows sftp connections only.
Connection to 192.168.1.100 closed.

Красивый! Теперь у нас есть защищенный SFTP-сервер.