Меню Рубрики

Установка линукса с ftp

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

File Transfer Protocol, т. е. FTP – протокол передачи файлов и, как понятно из полного названия, предназначен для передачи файлов между удалёнными компьютерами через сеть. Несмотря на то, что сам протокол FTP является на сегодняшний день не самым совершенным из-за того, что передаваемые данные не шифруются, однако это не делает его устаревшим. Кроме того всё-таки к FTP возможно применять криптографическую защиту на основе протокола SSL, что и делает FTP достойным инструментом для передачи файлов.

Поскольку FTP работает по схеме клиент-серверного взаимодействия, то умелая и надёжная реализация протокола (да и вообще системы) в состоянии обеспечить ему надёжную защиту, высокую скорость и, как следствие — популярность, что и можно наблюдать на сегодняшний день, ведь большинство крупных проектов, таких как ftp.gnu.org, ftp.suse.com, ftp.redhat.com, ftp.gnome.org и т. д., используют для распространения программного обеспечения со своих серверов именно FTP. Надо заметить, что такой популярностью FTP обязан, в большей степени, одной из своих многочисленных реализаций — vsFTPd. Это FTP- сервер, поддерживающий работу с самыми современными технологиями по защите данных — SSL и IPv6, его реализация совмещает в себе высокую надёжность, стабильность, скорость работы и передачи данных, а также гибкую настройку работы сервера и широкий функционал. Разработчиком vsFTPd является Крис Эванс — профессиональный исследователь в сферах защиты данных и информационной безопасности. vsFTPd является FTP-сервером по-умолчанию практически во всех Linux-системах, поскольку, как уже упоминалось, помимо надёжности и высокой скорости работы, обладает большими функциональными возможностями, самыми значимыми из которых являются:

  1. Работа с виртуальными пользователями.
  2. Работа с виртуальными IP-адресами.
  3. Конфигурирование пользователей.
  4. Поддержка
  5. SSL-шифровние для защиты передаваемых данных.
  6. Контроль полосы пропускания.

В данной статье рассматривается установка и настройка FTP-сервера на примере vsFTPd, который, кстати, является свободно распространяемым программным обеспечением (ПО) с открытым исходным кодом. Официальная страница проекта: https://security.appspot.com/vsftpd.html.

Установка vsFTPd

Установить Vsftd в Debian-ориентированных дистрибутивах Linux позволяет команда:

Также полезно будет установить и простой FTP-клиент для тестирования соединения и передачи файлов:

Для дистрибутивов на основе RPM-пакетов, CentOS, RedHat:

Примечание: yum – это пакетный менеджер, тот же самый apt, но адаптированный для управления пакетами формата *.rpm.

После установки для vsFTPd будет доступна техническая документация, которая обычно находится в каталоге /usr/share/doc/vsftpd/examples – здесь приведены варианты различных конфигураций, в зависимости от характера и масштабов использования vsFTPd. Ознакомиться с документацией можно также с помощью команды:

Обычно после установки демон vsFTPd автоматически запускается, убедиться в этом можно с помощью следующих команд:

Запуск, перезапуск и остановка сервера:

Для включения демона vsftpd в автозагрузку используется команда:

Аналогично и с командой service.

Если vsFTPd используется в серверных дистрибутивах, в которых часто работает фаервол, например ufw, то ещё может понадобиться разрешить использование портов 20 и 21:

Настройка vsFTPd

Конфигурационным файлом для настройки vsFTPd является файл vsftpd.conf, который обычно находится в каталоге etc/. Ознакомиться с его одержимым можно командой cat:

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

$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup

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

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

Работа vsFTPd в данном режиме заключается в том, что действия с файлами на удалённом сервере производятся одним определённым по умолчанию пользователем, например, пользователем с именем «ftp» или «anonymous», при этом в качестве пароля используется e-mail.

Чтобы включить анонимный доступ по FTP нужно в фале vsftpd.conf определить значение «YES» для соответствующей директивы:

Теперь для управления файлами будет использоваться определённый каталог (обычно это /srv/ftp) и определённый пользователь — обычно ftp.

Можно определить и другое расположение файлов для анонимного доступа по FTP, т. е. изменить домашнюю директорию пользователя ftp:

Если нужно, чтобы анонимные пользователи могли ещё и загружать файлы на удалённый сервер, то это позволит сделать директива:

Теперь можно скопировать необходимые для анонимного доступа файлы в домашнюю папку пользователя ftp и перезапустить демон vsftpd:

Обычно этого набора настроек достаточно для организации анонимного FTP-доступа. Для проверки соединения можно выполнить команду ftp address_host:

что в случае успешного выполнения даст примерно такой вывод:

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

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

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

Примечание: для авторизации локальных пользователей используется пароль пользователя для локального входа в систему.

Теперь нужно перезапустить vsftpd для активации сделанных изменений:

Ограничение пользователей в своих домашних каталогах

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

Первая включает использование списка пользователей, вторая определяет файл, в котором в каждой строке перечислены пользователи с доступом только к своим домашним каталогам. Если при этом ещё указать директиву:

которая «запирает» в chroot() локальных пользователей и выше своих домашних каталогов они подняться не смогут, то в этом случае пользователи в файле vsftpd.chroot_list ограничиваться своими домашними каталогами не будут, в отличии от тех, кто в этот список не внесён.

Читайте также:  Установка 2din магнитолы в нексии

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

Лучшим способом исправить эту ошибку является указание некоего общего корневого каталога, куда при подключении будут попадать все пользователи, имея доступ лишь к своим домашним поддиректориям, например:

Можно также для устранения этой ошибки отключить проверку на запись в домашний каталог:

Но всё же это стоит делать лишь тогда, когда есть чёткое понимание, зачем это нужно для конкретной ситуации.

Защита данных с помощью SSL

Чтобы иметь возможность шифровать передаваемые данные, следует настроить vsFTPd в режиме FTPS. Это та же самая передача данных по FTP, но организованная поверх SSL – протокола. Шифрующего и проверяющего данные с помощью сертификатов и ключей.

Для включения режима FTPS нужно задействовать следующую директиву:

По умолчанию в конфигурационном файле vsftpd.conf также присутствуют опции, определяющие сертификаты и ключи, например:

Эти сертификат и ключ необходимо заменить. Для использования FTPS необходимо использовать сертификат и ключ. Cгенерированные (или полученные) для конкретного сервера или компьютера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Установка FTP на Ubuntu 16.04

FTP или File Transfer Protocol — это достаточно древний, но в то же время надёжный и проверенный протокол выгрузки файлов на удалённый сервер или их скачивания. Также иногда этот протокол применяется веб-мастерами для управления файлами или организации хранилища данных.

В этой статье мы рассмотрим, как выполняется установка FTP на Ubuntu 16.04, как настроить все необходимые компоненты, в том числе и защищённое соединение. Мы будем использовать FTP-сервер VSFTPD или Very Secure FTP Daemon, который обеспечивает самую надёжную защиту от уязвимостей.

Установка FTP Ubuntu

Программа доступна из официальных репозиториев, поэтому установка FTP на Ubuntu Server 16.04 не должна вызвать проблем. Сначала обновите список пакетов в репозиториях, затем установите саму программу:

sudo apt update
$ sudo apt install vsftpd

Когда установка будет завершена, вам необходимо включить сервис vsftpd, поскольку он не будет запущен по умолчанию, а также добавить службу в автозагрузку:

sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd

Если у вас установлен фаервол ufw, а такая ситуация возникает, когда вы пытаетесь установить FTP на Ubuntu Server, нужно открыть порты 20 и 21 для нормальной работы. Чтобы это сделать, выполните команды:

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

Установка FTP Ubuntu завершена, но теперь вам осталось настроить всё необходимое для обеспечения безопасной работы. Никогда не используйте FTP-сервер с настройками по умолчанию в производственных сетях, это небезопасно.

Настройка FTP Ubuntu

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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Затем откройте файл в редакторе:

Затем добавьте такие настройки. Вам нужно будет найти и изменить значения указанных строк, добавлять новые, если они уже есть, не стоит. Сначала отключаем анонимный вход:

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

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

Установим значение umask для новых файлов, создаваемых по FTP:

Включаем сообщение о необходимости выбрать каталог после регистрации:

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

xferlog_enable = YES
xferlog_std_format=YES

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

Указываем, что нужно ожидать входящих соединений:

Использовать PAM-сервис vsftpd:

На завершение разрешим аутентификацию только пользователей, перечисленных в файле userlist:

Указываем файл с нашими виртуальными пользователями:

По умолчанию таким пользователям запрещён вход в систему, но мы хотим совсем обратное, поэтому добавьте такую строчку:

При входе пользователей на FTP-сервер, они могут работать только в корневом каталоге FTP. Если вы хотите, чтобы пользователи были ограничены только своей домашней папкой, то необходимо раскомментировать эти строчки:

chroot_local_user = YES
allow_writeable_chroot = YES

Первая строчка указывает, что нужно разместить пользователя в изолированном домашнем каталоге, а вторая, что ему можно разрешить запись в этот каталог. Настройка FTP Ubuntu почти завершена, сохраните изменения в конфигурационном файле и перезапустите vsftpd:

sudo systemctl restart vsftpd

Тестирование vsftpd

Сервер готов, но система настроена ещё не полностью. Сначала создадим нашего тестового пользователя с помощью useradd:

sudo useradd -m -c «Test User» -s /bin/bash testuser
$ sudo passwd testuser

Поскольку мы хотим подключаться от его имени к FTP-серверу, то нам нужно добавить его в vsftpd.userlist:

echo «testuser» | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist

Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:

У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.

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

Настройка домашних папок пользователей

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

Читайте также:  Установка и настройка плагинов wordpress

sudo mkdir -p /home/testuser/ftp/files

Уберём право на запись для папки ftp:

sudo chown nobody:nogroup /home/testuser/ftp
$ sudo chmod a-w /home/testuser/ftp

Затем дайте необходимые полномочия пользователю на запись в подпапку.

sudo chown -R testuser:testuser /home/testuser/ftp/files
$ sudo chmod -R 0770 /home/testuser/ftp/files/

Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:

Теперь добавьте такие строчки:

user_sub_token = $USER
local_root=/home/$USER/ftp

Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:

sudo systemctl restart vsftpd

Теперь вы можете снова войти от имени этого пользователя и увидите, что сейчас используется указанная нами папка.

Настройка защищенного соединения

Установка FTP на Ubuntu 16.04 завершена, но в наше время небезопасно использовать открытую передачу данных через сеть. Всё, что только возможно, необходимо шифровать. Поэтому мы рассмотрим, как настроить защищённое соединение для vsftpd. Сначала создадим папку и сгенерируем сам сертификат, который будем использовать:

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

Затем нужно разрешить доступ к портам защищённого соединения FTP с фаерволе UFW:

sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

И осталось внести несколько правок в настройку самого FTP-сервера. Нам нужно включить ssl_enable и отключить поддержку шифрования sslv2 и sslv3, оставляем только tlsv1:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Далее раскоментируйте такие строки:

Запретите вход анонимных пользователей по SSL:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Теперь установим самый сложный шифр SSL:

И настроим диапазон портов для передачи данных:

Осталось перезагрузить наш сервис:

sudo systemctl restart vsftpd

Теперь тестируем, что у нас получилось:

Как видите, мы уже не можем авторизоваться с помощью утилиты ftp. FTP-сервер выдаёт, что мы обязаны использовать шифрование. Поэтому для тестирования применим FileZilla:

Теперь все данные будут передаваться по зашифрованному соединению. Установка FTP-сервер Ubuntu завершена.

Выводы

В этой статье мы рассмотрели, как выполняется установка FTP на Ubuntu Server 16.04, также как настроить FTP для максимально безопасной работы, включая настройку работы по SSL. Если у вас остались вопросы, спрашивайте в комментариях!

источник

Установка, настройка и защита сервера FTP vsftpd в Linux

FTP или протокол передачи файлов — протокол который обычно используется для передачи файлов между компьютерами, один из который выступает как клиент, а другой как сервер. В этой статье мы поговорим о FTP-сервере в системах Linux, а именно о Very Secure FTP Daemon (vsftpd).

Программа vsftpd — очень популярный FTP-сервер, который сегодня используется многими предприятиями.

Содержание

  1. Как работает FTP-сервер
    • Активный режим
    • Пассивный режим
  2. Особенности сервера FTPVsftpd
  3. Настройка FTP-сервера
    • Подключение в качестве локального пользователя
  4. Установка анонимного FTP-сервер
  5. Безопасность сервера FTP
  6. SFTP vs FTPS
  7. Ограничение круга пользователей FTP
  8. Команды FTP-сервера Linux

Как работает FTP-сервер?

FTP работает по клиент-серверной архитектуре для обмена и передачи файлов.

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

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

Существует два типа подключений FTP:

  • Соединение управления (также называется командным соединением.)
  • Соединение для передачиданных.

Когда вы устанавливаете соединение FTP, открывается порт TCP 21 для отправки ваших учетных данных, это соединение называется соединением управления.

Когда вы передаёте файл, запускается соединение для передачи данных.

Существует два типа подключения к данным:

  • Пассивный режим.
  • Активный режим.

Активные соединения инициируются удаленным сервером, и клиент ждёт запросов сервера.

Пассивные соединения , инициируются клиентом на удаленный сервер, и сервер ждёт запросов клиента.

Когда клиент FTP запускает передачу, то на нём можно указать опцию, которая указывает, хотите ли вы использовать активное или пассивное FTP-соединение.

Активный режим FTP

Клиент подключается из случайного порта источника к порту управления FTP 21.

Вы можете проверить свой диапазон портов, используя следующую команду:

Когда вам нужно передать файл, удаленный FTP-сервер откроет порт 20 для подключения к FTP-клиенту.

В соединениях с активным режимом обычно возникают проблемы с брандмауэрами, порты TCP 20 и 21 должны быть открыты и на вашем брандмауэре.

Из-за этих проблем активного режима с брандмауэрами был введен пассивный режим.

Пассивный режим FTP

В пассивном режиме клиент запускает соединение управления из произвольного порта в порт назначения 21 на удаленном сервере.

Если клиент FTP запрашивает файл, он выдаст команду PASV FTP. Сервер откроет случайный порт и предоставит этот номер порта клиенту.

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

В пассивном режиме соединения управления и данных запускаются FTP-клиентом.

Возможности FTP-сервера Vsftpd

Существует несколько FTP-серверов, доступных для использования, как коммерческих так и с открытым исходным кодом.

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

  • Может работать как обычный пользователь с разделением привилегий.
  • Поддержка FTP/TLSFTP-соединений.
  • Может помещать пользователей в свои домашние каталоги.

Настройка FTP-сервера

Некоторые дистрибутивы Linux, поставляются с предустановленным vsftpd, в любом случае, если вы хотите установить vsftpd в системах на базе Red Hat, вы можете использовать следующую команду:

Читайте также:  Установка защиты капота от вскрытия

В дистрибутивах на базе Debian, таких как Ubuntu, вы можете установить его следующим образом:

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

Конфигурационным файлом для FTP-сервера vsftpd является файл /etc/vsftpd/vsftpd.conf или в дистрибутивах на основе Debian, вы можете найти его в /etc/vsftpd.conf.

Фактически, FTP-сервер в Linux — один из самых простых серверов, с которыми вы можете работать.

Существует два типа доступа к FTP-серверу:

  • Анонимныйдоступ к FTP: любой пользователь может войти с именем пользователя анонимно без пароля.
  • Локальныйдоступпользователя: всем действительным пользователям внесённым в /etc/passwd разрешен доступ к FTP-серверу.

Вы можете разрешить анонимный доступ к FTP-серверу в конфигурации, в /etc/vsftpd/vsftpd.conf, включив anonymous_enable=YES, если он не включен и перезапустите службу.

Теперь вы можете попытаться подключиться к FTP-серверу с помощью любого FTP-клиента.

Вы можете установить его, если он отсутствует в вашей системе:

В дистрибутивах на базе Debian следующим образом:

Теперь вы можете получить доступ к своему FTP-серверу следующим образом:

Затем введите имя пользователя anonymous и войдите без пароля, просто нажмите enter:

Вы увидите подсказку о FTP.

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

Подключимся как локальный пользователь

Поскольку в настройках есть опция, позволяющая локальным пользователям получать доступ к FTP-серверу (local_enable=YES). Попробуем зайти на FTP-серверу с помощью локального пользователя:

Затем введите свое имя пользователя и пароль для этого пользователя, и вы увидите сообщение «Вход в систему выполнен».

Настройка FTP-сервера для анонимного доступа

Этот вид доступа к FTP-сервера полезен, если ваши файлы должны быть доступны для пользователей без каких-либо паролей или логинов.

Вам нужно настроить vsftpd, чтобы разрешить доступ только анонимным пользователям.

Откройте файл /etc/vsftpd/vsftpd.conf и измените следующие параметры:

Затем нам нужно создать непривилегированную системную учетную запись, которая будет использоваться для доступа к анонимному FTP-серверу:

Этот пользователь не имеет никаких прав в системе, именно поэтому безопаснее использовать его при доступе к FTP-серверу.

Не забудьте перезапустить свой FTP-сервер после изменения файла конфигурации.

Вы можете получить доступ к FTP-серверу из браузера, просто введите ftp://youdomain/

Безопасность сервера FTP

Мы можем настроить vsftpd на использование TLS, для того, чтобы передаваемые по сети файлы были более безопасны.

Во-первых, мы сгенерируем запрос сертификата с помощью команды openssl:

Затем мы создадим запрос сертификата:

Теперь мы удаляем пароль из ключевого файла:

Наконец, мы создаем наш сертификат:

Теперь мы копируем файл сертификата и ключ в директорию /etc/pki/tls/certs:

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

Откройте файл /etc/vsftpd/vsftpd.conf и добавьте следующие строки:

Перезапустите службу, чтобы применить эти изменения. Вот и все.

Попробуйте подключиться к вашему FTP-серверу с любого клиента в любой системе, например Windows. Выбирете защищенное соединение или FTPS, и вы увидите свои папки.

SFTP vs FTPS

В последнем примере мы видели FTP на SSL уровене(FTPS), и мы успешно подключились к FTP-серверу, однако на брандмауэре с большим количеством подключений таким подключением достаточно трудно управлять, поскольку FTPS использует несколько номеров портов.

Лучшим решением в этом случае является использование SFTP (FTP через SSH). SFTP использует только порт 22.

Этот порт используется для всех подключений во время сеансов FTP.

Если вы используете брандмауэр, то рекомендуем выбрать именно SFTP, так как ему нужен только один порт при подключении.

Ограничение круга пользователей FTP

Вы можете защитить свой FTP-сервер, ограничив доступ пользователей FTP к своим домашним каталогам и разрешая доступ к службе только определенным пользователям.

Откройте /etc/vsftpd/vsftpd.conf и раскомментируйте следующие параметры:

Файл /etc/vsftpd.chroot_list содержит список круга ограниченных пользователей, по одному в строке.

Сохраните файлы и перезапустите службу.

Команды FTP-сервера Linux

Вы можете использовать любой GUI-клиент для работы с вашими файлами, но вам также полезно будет узнать и некоторые команды для работы с FTP сервером.

Вы можете просмотреть текущий рабочий каталог с помощью команды pwd:

Вы можете просмотреть файлы список файлов и каталогов с помощью команды ls:

Кроме того, вы можете использовать команду cd для изменения рабочего каталога:

Если вы хотите выйти из сеанса FTP, используйте команду bye:

Команда lcd используется для отображения локальной папки, а не папки FTP:

Вы можете изменить локальный каталог, используя команду lcd:

Вы можете загрузить (скачать) файл, используя команду get:

Кроме того, вы можете загрузить несколько файлов с помощью команды mget:

Используйте команду delete для удаления файла на сервере:

Используйте команду put для загрузки файла на сервер:

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

Вы можете создать каталог, используя команду mkdir:

Вы можете удалить каталог с сервера с помощью команды rmdir:

Существует два режима передачи файлов при использовании FTP-сервера:

  • ASCII-режим
  • Двоичный режим

Вы можете изменить этот режим следующим образом:

FTP-сервер — один из самых простых серверов в Linux для настройки и работы.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

источник

Добавить комментарий

Adblock
detector