Полный цикл в digital

Установка сервера vsFTPd на Ubuntu с Nginx

Протокол передачи файлов FTP это TCP протокол для передачи файлов между компьютерами, работает на основе модели клиент-сервер. Серверный компонент постоянно слушает FTP запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом.

Одним из самых популярных FTP серверов является vsftpd — его легко устанавливать, настраивать и поддерживать. Доступ к FTP серверу возможен в двух режимах:

  1. В анонимном режиме удаленный клиент может получить доступ к FTP серверу, используя учетную запись anonymous или FTP и передав адрес email в качестве пароля. Данные в директории /srv/ftp доступны для всех анонимных пользователей.
  2. В авторизованном режиме пользователь должен иметь учетное имя и пароль в системе. Доступ к каталогам и файлам зависит от прав доступа пользователя, указанного при входе. Обычный пользователь ограничен своей домашней директорией.

В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP:

  1. В активном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PORT, в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с 20 порта на указанный в команде порт клиента.
  2. В пассивном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PASV. В ответ сервер передает адрес и порт, на который следует устанавливать соединение для передачи данных. Получив эту информацию, клиент устанавливает подключение к серверу и начинает передачу данных.

Основной недостаток активного режима — клиенту требуется выделенный IP-адрес. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT-ом. В пассивном режиме все соединения инициирует клиент и поэтому к нему нет никаких требований. По этой причине на сегодняшний день основным режимом работы FTP является пассивный в авторизованном режиме.

Установка vsFTPd

Обновляем список пакетов сервера:

sudo apt update

Обновляем пакеты сервера:

sudo apt upgrade

Устанавливаем сервер vsftp:

sudo apt install vsftpd

Включаем сервер vsftp:

sudo systemctl start vsftpd

Добавляем веб сервер vsftp в автозагрузку::

sudo systemctl enable vsftpd

Проверка работоспособности сервера vsftpd:

sudo systemctl status vsftpd

Управление сервером vsftpd

Отключаем сервер vsftp:

sudo systemctl stop vsftpd

Перезагружаем сервер vsftp:

sudo systemctl restart vsftpd

Запретить запуск службы при загрузке системы:

sudo systemctl disable vsftpd

В процессе установки FTP-сервера создается пользователь ftp с домашней директорией /srv/ftp.

Настройка анонимного доступа

Прежде чем вносить какие-либо изменения в конфигурационный файл, создадим копию файла конфигурации:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.default

Открываем на редактирование файл конфигурации:

sudo nano /etc/vsftpd.conf

Настройка vsftpd по умолчанию не разрешает подключаться анонимным пользователям, чтобы это изменить, раскомментируем строчку:

anonymous_enable=YES

Запрещаем подключаться со своим логином и паролем:

local_enable=NO

Разрешаем запись для всех пользователей, кроме анонимных:

write_enable=YES

Разрешаем запись (т.е. загрузку файлов) еще и анонимным:

anon_upload_enable=YES

Чтобы анонимный пользователь мог создавать директории:

anon_mkdir_write_enable=YES

Разрешаем пассивный режим:

pasv_enable=YES

После внесения изменений перезагружаем сервер:

sudo systemctl restart vsftpd

Перейдем в /srv/ftp и создадим неколько каталогов, которые будут доступны на запись всем пользователям:

sudo mkdir /srv/ftp/audio
sudo chmod 777 /srv/ftp/audio
sudo mkdir /srv/ftp/video
sudo chmod 777 /srv/ftp/video
sudo mkdir /srv/ftp/others
sudo chmod 777 /srv/ftp/others

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

Настройка авторизованного доступа

Прежде чем вносить какие-либо изменения в конфигурационный файл, создадим копию файла конфигурации:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.default

Открываем на редактирование файл конфигурации:

sudo nano /etc/vsftpd.conf

В итоге у нас должен получится вот такой файл конфигурации:

# данная опция запускает FTP-сервер как службу, сервер не должен запускаться от inetd
listen=YES

# listen обеспечивает поддержку IPv4, listen_ipv6 обеспечивает сразу IPv6 и IPv4, поэтому должна быть включена только одна из них. 
listen_ipv6=NO

# запрещаем доступ для анонимных пользователей
anonymous_enable=NO

# разрешаем локальных и виртуальных пользователей
local_enable=YES

# разрешаем пользователяим изменения файловой системы
write_enable=YES

# задаем маску для вновь создаваемых файлов и директорий, это обеспечит установку прав 755 на директории и 644 на файлы, т.е. полный доступ только владельцу и чтение для группы и остальных.
local_umask=022

# изолируем пользователей в их домашних директориях
chroot_local_user=YES

# добавим опцию, чтобы не возникала ошибка у изолируемых пользователей в их домашних директориях
allow_writeable_chroot=YES

# чтобы FTP-сервер использовал локальное время сервера, а не GMT установим
use_localtime=YES

# включим запись в лог-файл /var/log/vsftpd.log загружаемых и скачиваемых файлов
xferlog_enable=YES

# использовать стандартный формат лога
xferlog_std_format=YES

# для корректной работы с текстовыми данными, в частности с символами переноса строки в разных ОС (CR+LF в Windows, LF в Linux) включим поддержку ASCII
ascii_upload_enable=YES

# FTP автоматически будет менять символы переноса строки для соответствия стандартам системы
ascii_download_enable=YES

# будем использовать кодировку UTF-8 при работе с файловой системой
utf8_filesystem=YES

# разрешим пассивный режим
pasv_enable=YES

# минимальный порт
pasv_max_port=60000 

# максимальный порт
pasv_min_port=65535 

# директория куда бутеп перенаправлено FTTP соединение
local_root=/var/www/

# использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола
connect_from_port_20=YES

Настройка файервола

Брандмауэр нужен для защиты системы от компьютерных атак или для изоляции самой системы, если она была поражена вредоносным программным обеспечением.

В Ubuntu используется оболочка под названием UFW или Uncomplicated FireWall. В этой статье мы разберём, как выполняется настройка UFW Ubuntu.

Проверка состояния файрвола:

sudo ufw status

Включение файрвола:

sudo ufw enable

Отключение файрвола:

sudo ufw disable

Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду для сброса настроек до состояния по умолчанию:

sudo ufw reset

Обратите внимание, что если вы работаете по SSH, или запущен Apache то перед тем, как включать брандмауэр, нужно добавить правило разрешающее работу, иначе не будет доступа к серверу или сайту.

Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw - deny и reject.

Посмотреть доступные имена приложений:

sudo ufw app list

Например, чтобы открыть порт ufw для SSH, нужно добавить правило:

sudo ufw allow OpenSSH

Итак, для работы файервола должны быть открыты следующие правила.

Открываем 20-й порт:

sudo ufw allow 20/tcp

Открываем 21-й порт:

sudo ufw allow 21/tcp

Открываем 990-й порт:

sudo ufw allow 990/tcp

Открываем службу SSH:

sudo ufw allow OpenSSH

Открываем службу Apache:

sudo ufw allow Apache

Окрываем сопутствующие порты:

sudo ufw allow 60000:65535/tcp

Проверяем что-бы перечисленное выше было открыто:

sudo ufw status

Подробнее почитать про про Настройку UFW Ubuntu можно тут

Добавление пользователя

Чтобы использовать специальную учетную запись, для подключения к FTP, создаем пользователя следующей командой:

sudo useradd -m -s /bin/bash логин_пользователя

Задаем пароль для пользователя:

sudo passwd логин_пользователя

Назначаем полные права пользавателю на директорию с файлами и папками:

sudo chown пользователь:группа -R /var/www/
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг