Create ftp server linux

Как настроить FTP на Ubuntu 20.04 LTS

FTP – это протокол, который позволяет передавать файлы по сети от одного узла другому. Данный протокол является самым старым протоколом прикладного уровня, который появился намного раньше, чем HTTP или TCP/IP. С помощью протокола FTP могут быть организованы соединения с удаленными серверами для просмотра и передачи необходимых данных. При подключении к серверам и рабочим станциям при помощи протокола FTP необходимо использовать специальные приложения, которые именуются FTP-клиентами. Далее о том, как настроить работу с протоколом FTP на сервере, работающем под управлением Ubuntu 20.04 LTS.

Для того чтобы развернуть свой FTP-сервер на Ubuntu 20.04 LTS, необходимо:

  • установить FTP-сервер с поддержкой SSL для безопасного подключения;
  • настроить учетную запись FTP-пользователя;
  • проверить подключение к FTP-серверу.

Установка FTP-сервера

Как всегда при работе с Ubuntu необходимо произвести первоначальную настройку сервера в соответствии с посвящённой данной процедуре статье. Далее следует обновить списки пакетов:

После чего необходимо установить программу vsftpd :

По окончании установки можно убедиться, что сервис vsftpd уже успешно работает:

systemctl status vsftpd

Далее необходимо произвести некоторые настройки в конфигурационном файле. Для этого откройте при помощи текстового редактора файл vsftpd.conf :

Вот те основные изменения, которые необходимо внести для корректной работы FTP-сервера:

listen=YES listen_ipv6=NO anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd allow_writeable_chroot=YES

После внесения изменений в файл настроек необходимо сохранить их и перезапустить службу vsftpd :

$ sudo systemctl restart vsftpd

Защита передачи данных при помощи SSL/TLS

Для защиты передачи ваших данных между FTP-клиентом и FTP-сервером в данной инструкции мы будем использовать генерацию самозаверяющего SSL-сертификата. Закрытый ключ и сертификат будут сохранены в одном файле, для чего следует применить команду:

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

После установки SSL-сертификата необходимо внести изменения в конфигурационный файл:

Читайте также:  Mac address on linux ubuntu

А именно, внесите изменения в следующие строки данного файла:

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Настройка учётной записи FTP-пользователя

Для авторизации на FTP-сервере необходимо создать учетную запись пользователя. Изначально, подключаться к серверу можно и под локальным пользователем. Но более целесообразно для этих целей использовать специальную учётную запись. Для её создания используйте следующую команду:

Таким образом, у нас теперь есть пользователь ftpuser . Следующей командой нужно создать для него домашний каталог:

$ sudo mkhomedir_helper ftpuser

После этого для него необходимо создать пароль на вход:

Настройка брандмауэра

Если вы производили работы по первоначальной настройке виртуального сервера, то на нём должен быть запущен межсетевой экран UFW. Соответственно, для того, чтобы брандмауэр вашего VPS позволял осуществлять подключения, необходимо внести небольшие изменения в настройки UFW. Проще говоря, нужно будет добавить в брандмауэр исключения для TCP-портов 20 и 21. Делается это следующими командами:

$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp

После чего брандмауэр следует перезапустить:

$ sudo ufw disable $ sudo ufw enable

И убедиться, что служба работает без ошибок:

sudo ufw status

Проверка подключения к FTP-серверу

Корректность произведённых настроек можно проверить через осуществление подключения к FTP-серверу. Для этой цели можно воспользоваться бесплатным FTP-клиентом FileZilla. После запуска приложения в FileZilla следует заполнить поля Хост и Имя пользователя . После нажатия кнопки Быстрое соединение система попросит ввести пароль учётной записи, под именем которой происходит подключение к FTP-серверу.

Подключение к серверу осуществлено успешно, значит произведенные настройки в конфигурационном файле корректны. В статусе подключения видно, что в данной сессии TLS соединение установлено , значит передача данных между клиентом и сервером шифруются.

Источник

Sysadminium

В этой статье я покажу как создать FTPS сервер на Linux (Debian 11) с отдельными каталогами для разных пользователей.

Реализуемая схема

В этой статье я покажу процесс подготовки FTPS сервера на Linux, при этом каждый пользователь будет видеть только свой каталог.

SFTP сервер на Linux с отдельными каталогами для разных пользователей

Установка и настройка FTP сервера

Я буду использовать Very Secure FTP Daemon (vsftpd), устанавливаем пакет:

После установки, у вас появится новая служба — vsftpd.service:

# systemctl status vsftpd.service ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-12-09 13:14:31 MSK; 26s ago Process: 1135 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 1136 (vsftpd) Tasks: 1 (limit: 4915) Memory: 1.0M CGroup: /system.slice/vsftpd.service └─1136 /usr/sbin/vsftpd /etc/vsftpd.conf

Перед настройками сервера, сделаем резервную копию конфига:

# cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
# nano /etc/vsftpd.conf anonymous_enable=NO # запрещаем вход анонимных пользователей local_enable=YES # разрешаем вход по ftp для локальных пользователей write_enable=YES # разрешаем писать на ftp (загружать или удалять файлы) local_umask=077 # маска для вновь создаваемых файлов xferlog_enable=YES # записывать в лог файл все транзакции по передаче файлов xferlog_std_format=YES # использовать стандартный формат лога xferlog_file=/var/log/vsftpd.log # файл лога connect_from_port_20=YES # исходящие с сервера FTP-соединения по 20 порту вместо случайного listen=YES # ожидать входящие соединения listen_ipv6=NO # для ipv6 не ожидать входящие соединения pam_service_name=vsftpd # использовать PAM библиотеки userlist_enable=YES # разрешим вход только для перечисленных пользователей userlist_file=/etc/vsftpd.userlist # перечислим пользователей в этом файле userlist_deny=NO # пользователи, которые есть в списке не будут отбрасываться chroot_local_user=YES # пользователи ограничены только своей домашней папкой

Различные опции хорошо описаны здесь, на русском языке.

Читайте также:  Linux write file to socket

После настройки перезапустим службу:

# systemctl restart vsftpd.service

По желанию, проверим слушает ли наш ftp сервер входящие соединения:

# ss -ltupn | grep vsftpd tcp LISTEN 0 32 0.0.0.0:21 0.0.0.0:* users:(("vsftpd",pid=1273,fd=3))

Создание FTP-пользователей

Создадим первого и второго пользователя и запишем их в userlist. Все остальные, локальные пользователи, не смогут подключаться по протоколу FTP:

# adduser ftp_user1 # adduser ftp_user2 # nano /etc/vsftpd.userlist ftp_user1 ftp_user2

Включение TLS

Сейчас уже можно подключиться к нашему FTP-серверу, но логины и пароли, при этом, будут передаваться открытым текстом. Чтобы этого избежать включим поддержку TLS, превратив FTP-сервер в FTPS-сервер.

Создадим самоподписанный ssl сертификат на 10 лет:

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
# nano /etc/vsftpd.conf ssl_enable=YES # включим ssl rsa_cert_file=/etc/ssl/private/vsftpd.pem # путь к файлу ключа rsa_private_key_file=/etc/ssl/private/vsftpd.pem # путь к файлу сертификата allow_anon_ssl=NO # запретим анонимные подключения по ssl force_local_data_ssl=YES # разрешим передачу данных только по ssl force_local_logins_ssl=YES # разрешим подключаться только по ssl ssl_tlsv1=YES # разрешим алгоритм tlsv1 ssl_sslv2=NO # запретим устаревший sslv2 ssl_sslv3=NO # запретим устаревший sslv3

Затем перезапустим службу:

# systemctl restart vsftpd.service

Подключение к серверу (FTP-клиенты)

Для подключения можно использовать FileZilla, WinSCP, или обычный Windows Проводник.

Я покажу как подключиться к FTP серверу с помощью приложения FileZilla. После запуска приложения вы увидите такое окно:

Внешний вид приложения FileZilla

Слева будет локальная файловая система, а справа удалённая. Вы можете совершить быстрое подключение, указав: хост, имя пользователя, пароль и порт. Или можете сохранить подключение, чтобы использовать его в последующем несколько раз. Для того, чтобы сохранить подключение, откройте менеджер сайтов, выбрав в меню «Файл / Менеджер сайтов«. Каждый сайт — это сохранённое подключение. Создавая новый сайт вы можете указать ip-адрес, порт, логин и пароль и другое:

Читайте также:  Linux создать загрузочную дискету

FileZilla - создание сайта

Дальше, используя созданные сайты, вы сможете подключаться к различным FTP серверам.

Формат логов

Далее я подключился с помощью FileZilla к своему FTP серверу. И выполнил некоторые действия:

В журнале (/var/log/vsftpd.log) появились следующие записи:

Mon Dec 12 15:06:29 2022 1 192.168.0.5 6 /user2/test.txt a _ o r ftp_user2 ftp 0 * c Mon Dec 12 15:25:39 2022 1 192.168.0.5 7254 /user2/report.json b _ i r ftp_user2 ftp 0 * c Mon Dec 12 15:27:53 2022 1 192.168.0.5 6 /user2/test.txt a _ i r ftp_user2 ftp 0 * c

Здесь видна следующая информация:

  • дата и время транзакции, а также ip-адрес клиента ( Mon Dec 12 15:06:29 2022 1 192.168.0.5 );
  • размер файла в байтах и сам файл ( 7254 /user2/report.json );
  • режим передачи: (a — ASCII, b — двоичный), символ (_) — означает, что не было произведено никаких специальных операций, и направление передачи (o — файл скачали, i — файл загрузили) — ( a _ o ) или ( b _ i );
  • символ (r) — означает что пользователь был зарегистрирован в системе, дальше идёт имя пользователя ( r ftp_user2 ).

Логирование желательно включать, чтобы в случае чего знать, кто и что делал с файлами по FTP.

Итог

Из статьи вы узнали как подготовить FTPS сервер на Linux. Я все действия выполнял на системе Debian 11, но на Ubuntu 22.04 всё делается аналогично. Показал как защитить сервер с помощью TLS протокола, как использовать userlist, для создания списка разрешённых пользователей.

Создание FTPS сервера на Linux

В этой статье я покажу как создать ftps сервер на Linux (Debian 11) с отдельными каталогами для разных пользователей

Источник

Оцените статью
Adblock
detector