Як встановити та використовувати SFTP на серверах Linux

Як встановити та використовувати SFTP на серверах Linux

 

SFTP або SSH File Transfer Protocol – це метод безпечної передачі даних між двома комп’ютерами та більше. Це FTP, який працює поверх протоколу SSH і використовує переваги його безпеки, а також повністю підтримує його аутентифікацію.

Сьогодні рекомендується використовувати протокол SFTP замість застарілого протоколу FTP або FTP/S. SFTP є безпечним за замовчуванням, оскільки саме так працює SSH. З точки зору безпеки, SFTP також захищає вас від винюхування пароля та атак типу “людина посередині” (MiTM).

Як і SSH, SFTP захищає цілісність даних за допомогою шифрування та криптографічної хеш-функції. Він також підтримує кілька безпечних методів автентифікації, включаючи автентифікацію за допомогою пароля та ключа. Крім того, він зменшує відкритий порт сервера для зовнішньої мережі, оскільки він працює на тому ж порту, що й протокол SSH.

Передумови

У цьому посібнику ви дізнаєтеся, як налаштувати SFTP-сервер у системі Linux. Крім того, ви вивчите базову команду sftp-клієнта.

Нижче наведено поточне середовище для впровадження:

  • Сервер Linux – ви можете використовувати Debian, Ubuntu, CentOS, Fedora, Rocky або будь-який інший дистрибутив Linux.
  • Переконайтеся, що пакети OpenSSH доступні у вашій системі Linux.
  • SFTP-клієнт – командний рядок sftp або будь-який клієнт з графічним інтерфейсом, який вам більше подобається.

Перевірка пакетів OpenSSH

Щоб налаштувати SFTP-сервер, пакети OpenSSH повинні бути встановлені у вашій системі Linux. Майже на всіх серверах дистрибутивів Linux за замовчуванням встановлені пакети OpenSSH. Але, якщо у вашій системі немає пакета OpenSSH, ви можете встановити його з офіційного репозиторію.

1. Щоб переконатися, що пакети OpenSSH встановлені у вашій системі Linux, використовуйте наступну команду.

Для серверів Debian або Ubuntu ви можете використовувати команду dpkg, наведену нижче.

dpkg -l | grep ssh

Нижче наведено вихідні дані з нашої системи Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

Перший стовпець ‘ii‘ означає, що пакунок встановлено. Пакет ‘openssh-sftp-server‘ встановлено на системі Debian/Ubuntu.

Ви можете використовувати наведену нижче команду rpm для користувачів RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux.

rpm -qa | grep ssh

Створення групи та користувача

На цьому кроці ви створите нову групу та користувача для SFTP-сервера. Користувачам цієї групи буде дозволено доступ до сервера SFTP. З міркувань безпеки користувачі SFTP не можуть отримати доступ до служби SSH; вони можуть отримати доступ лише до SFTP-сервера.

1. Виконайте наступну команду, щоб створити нову групу ‘sftpgroup‘.

sudo groupadd sftpgroup

2. Створіть нового користувача ‘sftpuser‘ за допомогою наступної команди.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Детальні параметри:

  • -G : автоматично додавати користувача до ‘sftpgroup‘.
  • -d : вказати домашній каталог для нового користувача.
  • -s : встановити за замовчуванням для нового користувача ‘/sbin/nologin‘, що означає, що користувач не може отримати доступ до сервера SSH.

3. Далі створіть пароль для користувача ‘sftpuser‘ за допомогою наведеної нижче команди.

passwd sftpuser

Введіть свій надійний пароль і повторіть, а потім натисніть «Enter» для підтвердження.

Як встановити та використовувати SFTP на серверах Linux

Щоб додати більше користувачів, повторіть етапи номер 2 і 3, і найголовніше, всі користувачі SFTP повинні бути в групі ‘sftpgroup‘ без доступу до оболонки через SSH.

Налаштуйте директорію Chroot Jail

Після створення нової групи та користувача необхідно створити та налаштувати каталог chroot для користувачів SFTP.

1. Для користувача ‘sftpuser’ новий домашній каталог буде за адресою ‘/srv/sftpuser’. Виконайте наведену нижче команду, щоб створити його.

mkdir -p /srv/sftpuser

2. Щоб налаштувати chroot для користувача ‘sftpuser‘, ви повинні змінити право власності на кореневий каталог користувача, але залишитися групою для читання та виконання без доступу на запис.

Змініть власника каталогу на користувач ‘root’ за допомогою наступної команди.

sudo chown root /srv/sftpuser

Надайте групі дозвіл на читання і виконання, але не на запис.

sudo chmod g+rx /srv/sftpuser

3. Далі створіть новий каталог ‘data’ у каталозі ‘/srv/sftpuser‘ і змініть право власності на цей каталог ‘data‘ користувача ‘sftpuser‘.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Як встановити та використовувати SFTP на серверах Linux

Поки що нижче наведено детальну конфігурацію для каталогу користувачів SFTP.

  • Каталог ‘/srv/sftuser’ є домашнім каталогом за замовчуванням.
  • Користувач ‘sftpuser‘ не може записувати до каталогу ‘/srv/sftpuser‘, але може читати в цьому каталозі.
  • Користувач ‘sftpuser‘ може завантажувати файли на сервер SFTP у директорії ‘/srv/sftpuser/data‘.

Увімкніть SFTP на SSH-сервері

Щоб увімкнути сервер SFTP на OpenSSH, вам слід відредагувати конфігурацію SSH ‘/etc/ssh/sshd_config’.

1. Відредагуйте конфігурацію ssh ‘/etc/ssh/sshd_config‘ за допомогою nano або vim.

sudo nano /etc/ssh/sshd_config

2. Прокоментуйте наступну конфігурацію, щоб вимкнути автономну функцію ‘sftp-server‘.

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3.  Вставте наступну конфігурацію в нижню частину лінії.

Subsystem sftp internal-sftp

Match Group sftpgroup
     ChrootDirectory %h
     X11Forwarding no
     AllowTCPForwarding no
     ForceCommand internal-sftp

Збережіть конфігурацію та вийдіть.

Детальна конфігурація:

  • Замість використання підпроцесу ‘sftp-server‘, ми використовуємо ‘internal-sftp‘.
  • Увімкнено сервер SFTP для групи ‘sftpgroup‘.

4. Щоб застосувати нову конфігурацію, перезапустіть службу ssh за допомогою наведеної нижче команди.

sudo systemctl restart sshd

Сервер SFTP готовий і доступний, і він працює на тому ж порту, що й служба SSH.

Доступ до SFTP-сервера

На стороні клієнта ми будемо використовувати командний рядок sftp, який встановлений за замовчуванням у більшості дистрибутивів Linux. Але ви також можете використовувати інший клієнт командного рядка або FTP-клієнт з графічним інтерфейсом, наприклад FileZillaCyberduck тощо.

1. Щоб підключитися до сервера SFTP, виконайте команду sftp, як показано нижче.

sftp ftpuser@SERVER-IP

Якщо ваш SFTP та/або SSH-сервер працює на спеціальному порту, ви можете використовувати команду sftp, як показано нижче.

sftp -P PORT ftpuser@SERVER-IP

Введіть пароль для ‘sftpuser‘.

2. Після підключення до сервера SFTP виконайте наступну команду.

Показати поточний шлях до робочого каталогу та вивести список усіх доступних файлів та каталогів.

pwd
ls

Як встановити та використовувати SFTP на серверах Linux

3. Завантажте локальний файл на сервер SFTP у директорії ‘/‘, що призведе до ‘permission denied‘, оскільки це каталог chroot.

put /path/to/file/on/local /

4. Завантажте локальний файл у директорію ‘/data/‘ на SFTP-сервері. Якщо ваша конфігурація правильна, ваш файл буде завантажено в директорію ‘/data/‘.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

Як встановити та використовувати SFTP на серверах Linux

5. Тепер перевірте доступні файли в каталозі ‘/data‘ за допомогою наступної команди.

ls /data/

І ви побачите свій файл, завантажений на SFTP-сервер.

Як встановити та використовувати SFTP на серверах Linux

Висновок

Вітаємо! Ви успішно налаштували SFTP-сервер у системі Linux. Цей тип конфігурації може бути застосований у більшості систем Linux з встановленим OpenSSH поверх неї. Крім того, ви дізналися, як налаштувати каталог chroot для користувачів SFTP і вивчили базову команду sftp-клієнта.

Прокрутка до верху