Як встановити FTP-сервер на Linux Mint

FTP, або протокол передачі файлів, є широко використовуваним мережевим протоколом передачі файлів і даних між двома системами в мережі. FTP за замовчуванням не шифрує трафік, що є небезпечним і може призвести до атаки на сервер. VSFTPD (Very Secure FTP Daemon) – безпечний, надійний та швидкий FTP-сервер.

VSFTPD поширюється під ліцензією GNU GPL і є стандартним FTP-сервером для більшості систем Linux. У цій статті показано, як встановити та настроїти FTP-сервер в операційній системі Linux Mint.

Як працює FTP-сервер?

FTP-сервер дозволяє передачу файлів між клієнтом та сервером. Ви можете завантажувати чи завантажувати файли з сервера. Клієнт встановлює два з’єднання з сервером: одне передачі команд і одне передачі даних. Клієнт передає команду на FTP сервер через порт 21, командний порт FTP. Для передачі використовується порт даних. Існує два типи режимів підключення для передачі даних:

  • Активний режим: в активному режимі клієнт створює порт і очікує на підключення сервера. Це дозволяє йому передавати дані. Сервер підключається до клієнта передачі даних через порт 20. Активний режим не включений за замовчуванням у більшості FTP-клієнтів, оскільки більшість брандмауерів, таких як наш FTP-сервер, забороняють з’єднання, встановлені ззовні. Щоб скористатися цією функцією, ви повинні налаштувати брандмауер.
  • Пасивний режим: коли клієнт запитує файл, сервер відкриває довільний порт і вказує клієнту підключитися до нього. У цьому випадку клієнт ініціює з’єднання, усуваючи проблеми із брандмауером. Більшість FTP-клієнтів за промовчанням працюють у пасивному режимі.

Встановлення FTP-сервера в Linux Mint

Спочатку підключіться до віртуальної машини Linux за SSH, використовуючи користувача з привілеями sudo, а потім виконайте такі дії:

Крок 1: Встановіть FTP-сервер

Існує безліч доступних FTP-серверів, таких як ProFTPD та vsftpd. Ми будемо використовувати vsftpd.

Функції FTP-сервера vsftpd

vsftpd пропонує безліч функцій, які роблять його чудовим FTP-сервером. Це:

  • Підтримує конфігурацію віртуального IP
  • Підтримує сумісність SSL/TLS
  • Полегшує IPv6
  • Завдяки можливості chroot система може обмежувати користувачів їх домашнім каталогом. Це буде встановлено далі у статті.
  • Це може обмежити пропускну здатність.
  • Підтримує віртуальних користувачів

Ми почнемо з установки VSFTPD у нашій системі. Для цього запустіть Термінал у ОС Mint, натиснувши Ctrl+Alt+T на клавіатурі. Потім у терміналі введіть наступну команду, щоб оновити індекс системного репозиторію:

sudo apt update

Тепер введіть команду нижче, щоб встановити vsftpd:

sudo apt install vsftpd

Після завершення інсталяції виконайте наступний рядок коду, щоб перевірити, чи активна служба vsftpd:

sudo systemctl status vsftpd

У категорії Active ви можете побачити, що vfstpd активний (працює). Команда systemctl використовується для керування та перевірки служб Linux. Цю команду також можна використовувати для увімкнення та вимкнення служб Linux. Якщо vsftpd не запущено, введіть наступний рядок коду в термінал:

sudo systemctl enable --now vsftpd

Примітка. Параметр –now гарантує, що команда enable негайно впливає на нашу службу, а не після перезавантаження.

Крок 2. Налаштуйте брандмауер

FTP використовує порт 20 для активного режиму, порт 21 для команд та кілька портів для пасивного режиму. Ми повинні дозволити ці порти через наш брандмауер. Ви можете пропустити цей крок, якщо ви не використовуєте брандмауер. Більшість систем Linux використовують ufw для керування брандмауерами. Тим не менш, деякі постачальники хмарних послуг, такі як Microsoft Azure, мають брандмауери за межами віртуальної машини, які потрібно налаштувати через їх портал. Відкрийте діапазон портів для пасивних FTP-з’єднань та портів 20 та 21 для TCP-з’єднань. Діапазон пасивних портів залежить від очікуваної кількості одночасних клієнтів користувача.

Крім того, один клієнт може передавати кілька або більші файли, використовуючи кілька портів. Ми побачимо, як вказати наш FTP-сервер для використання цих портів пізніше у цьому посібнику. Порти з 1 до 1024 зарезервовані, тому наш пасивний діапазон портів FTP має бути більшим за 1024. Я відкрию порти між 5000 і 10000. Крім того, ми відкриємо порт 990 для TLS, який буде налаштований пізніше. Давайте зробимо це для ufw. Введіть наступні рядки коду на терміналі:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 5000:10000/tcp

Крок 3. Налаштуйте користувачів

Два найбільш типові варіанти використання FTP-серверів:

  • Ви хочете розмістити загальнодоступний FTP-сервер, до якого будуть підключатися багато загальнодоступних користувачів для отримання файлів.
  • Ви хочете завантажити файли на свій Linux-сервер для особистого використання без присутності публічних користувачів.

У першому сценарії вам потрібно створити додаткового користувача та надати своїм клієнтам ім’я користувача та пароль для доступу до файлів. В іншому другий приклад ідентичний першому.

Загальнодоступному користувачеві має бути дозволено переглядати та завантажувати файли лише з певного каталогу, але адміністратор повинен мати можливість завантажувати файли до будь-якої папки на комп’ютері. Для цього ви повинні мати базове уявлення про дозволи користувачів. Користувач root може записувати файли до будь-якої папки на сервері. Інші користувачі мають доступ до всіх папок у своєму домашньому каталозі, яким є /home/username, але не можуть писати більшість інших каталогів.

Припустимо, ви хочете завантажувати файли в каталоги, відмінні від домашнього каталогу вашого адміністратора, наприклад /var/www. У цьому випадку ви повинні змінити власника каталогу на свого користувача адміністратора за допомогою команди chown або змінити права на зміну каталогу за допомогою команди chmod.

Створіть загальнодоступний обліковий запис користувача, щоб розпочати. Для цього виконайте наступний рядок коду:

sudo adduser fosslinux

Введіть свій пароль, очистіть інші поля та натисніть Y, щоб зберегти зміни.

Тепер ми відключимо дозвіл ssh для цього користувача з метою безпеки. Введіть наступну команду:

sudo nano /etc/ssh/sshd_config

Додайте у цей файл рядок нижче:

DenyUsers fosslinux

Введіть Ctrl+x, потім y, а потім Enter. Перезапустіть службу SSH, щоб ці зміни набули чинності.

sudo systemctl restart ssh

Крок 4. Створіть папку FTP та налаштуйте її роздільну здатність.

Ми створимо каталог FTP. Введіть наступну команду:

sudo mkdir /ftp

Тепер ми змінимо власника цього каталогу на наш обліковий запис адміністратора. Ключ у

sudo chown fosslinux /ftp

Якщо ви хочете завантажити файли до папки, що не належать вашому обліковому запису адміністратора, ви повинні використовувати попередню команду, щоб змінити власника папки.

Крок 5: Налаштуйте та захистіть vsftpd

Відкрийте конфігураційний файл для vsftpd. Для цього виконайте таку команду:

sudo nano /etc/vsftpd.conf

Переконайтеся, що рядки не закоментовані

anonymous_enable=NO
local_enable=YES
write_enable=YES

Крім того, ми відкрили порти з 5000 до 10000 для пасивного режиму на кроці 2. Тому тепер ми повинні повідомити vsftpd, які порти використовувати для пасивних FTP-з’єднань. Додайте наведені нижче рядки до файлу vsftpd.conf.

pasv_min_port=5000
pasv_max_port=10000

Тепер ми визначимо каталог за замовчуванням для FTP-з’єднань, який відкриватиметься щоразу, коли клієнт підключається до нашого FTP-сервера. Для цього додайте наступний рядок:

local_root=/ftp

Примітка. Пам’ятайте, що в цьому конфігураційному файлі не повинно бути пробілів ні перед, ні після знака =.

Як заблокувати користувача в домашньому каталозі

З метою безпеки ми обмежимо користувача fosslinux каталогом за промовчанням, оскільки користувач зазвичай може переглядати весь сервер Linux за промовчанням. Для цього vsftpd використовує chroot. Щоб продовжити, розкоментуйте наступні рядки.

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Крім того, додайте наступний рядок у файл конфігурації, оскільки він відсутній за промовчанням.

allow_writeable_chroot=YES

Перший рядок включає функцію chroot для локальних користувачів, включаючи наших адміністраторів та користувачів fosslinux. Другий і третій рядки дозволяють нам вибрати користувачів для chroot.

Як встановити дозвіл на файл

local_umask=0002

Цей рядок змінить дозвіл на зміну кожного новоствореного файлу та папки на 664 (-rw-rw-r-) та 775 відповідно (rwxrwxr-x). Це означає, що користувач fosslinux може лише читати та завантажувати файли з кожного підкаталогу нашого FTP-каталогу, але не може нічого завантажувати, оскільки він не є власником каталогу.

Введіть Ctrl+x, потім y, а потім Enter. В даний час ми повинні створити цей файл списку, виконавши наступний рядок коду:

sudo touch /etc/vsftpd.chroot_list
sudo nano /etc/vsftpd.chroot_list

Незалежно від користувачів, яких ви вибираєте у цьому файлі; вони не будуть chroot’овані. Тому помістіть своє адміністративне ім’я користувача у файл, оскільки ми не любимо його блокувати.

Введіть Ctrl+x, потім y, а потім Enter. Ми повинні перезапустити наш сервер vsftpd, щоб ці зміни набули чинності негайно. Ви можете перезапустити сервер, виконавши цей рядок коду:

sudo systemctl restart --now vsftpd

Як захистити vsftpd за допомогою TLS/SSL

Рекомендується шифрувати FTP-трафік, якщо він передаватиметься через Інтернет. FTPS використовуватиметься для шифрування нашого трафіку (протокол передачі файлів через SSL). По-перше, давайте створимо самопідписаний сертифікат. Введіть наступні команди у терміналі:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Введіть необхідну інформацію, а сертифікат буде згенерований. Ви також можете натиснути Enter, щоб встановити значення за промовчанням. У цей час відкрийте файл конфігурації vsftpd. Виконайте цей рядок коду:

sudo nano /etc/vsftpd.conf

Перейдіть в кінець файлу та видаліть рядки, наведені нижче.

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 
ssl_enable=NO

Після того, як ви видалили вказані вище рядки, додайте такі рядки:

rsa_cert_file=/etc/ssl/private/vsftpd.pem 
rsa_private_key_file=/etc/ssl/private/vsftpd.pem 
ssl_enable=YES 
allow_anon_ssl=NO 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 
ssl_tlsv1=YES 
ssl_sslv2=NO 
ssl_sslv3=NO 
require_ssl_reuse=NO 
ssl_ciphers=HIGH

Нарешті, перезапустіть службу vsftpd за допомогою команди

sudo systemctl restart --now vsftpd

Як підключитись до нашого FTP-серверу

Для цього вам знадобиться FTP-клієнт. Знову ж таки, є безліч доступних варіантів. Я б порадив використати Filezilla. Завантажте, встановіть, а потім запустіть. Введіть IP-адресу вашого сервера у розділі «Хост» разом із вашим ім’ям користувача та паролем, а потім натисніть кнопку «Швидке підключення».

Ви побачите каталоги вашого ПК зліва та каталоги вашого FTP-сервера праворуч. Ви можете завантажувати та завантажувати файли між FTP-сервером та вашим пристроєм, перетягуючи їх (клієнт).

 

Поділіться своєю любов'ю

Залишити відповідь

0 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x