Установка ftp на ubuntu

Настройка vsftpd.conf

# Примерный конфиг /etc/vsftpd.conf
#
#
# разрешить вход дядюшке anonymous'у?
anonymous_enable=YES
#Не запускать через inetd
#listen=YES
# разрешать вход локальным пользователям.
local_enable=YES
#
# Разрешить любую форму команды записи FTP.
write_enable=YES
#
# umask по умолчанию для локальных юзеров 077. Возможно хочется
# изменить на 022, (022 используется в большинстве ftpd's)
#local_umask=022
#
# Разрешить аплоад для  анонимусов.
# Имеет смысл когда разрешена запись (write_enable=YES)
# кроме того каталог должен быть доступен для записи FTP юзером.
anon_upload_enable=NO
#
# Разрешить анонимусу создавать каталоги
#anon_mkdir_write_enable=YES
#
# Разрешить мессаги каталогов - сообщения которые выдаются при
# входе в определенную директорию.
dirmessage_enable=YES
#
# логить аплоад/даунлоад
xferlog_enable=YES
#
# убедиться что PORT коннекты вылазят из порта 20 (ftp-data).
connect_from_port_20=YES
#
# Можно изменять автоматически владельца на аплоадных файлах
# естественно использовать тут root'а я не советую
chown_uploads=YES
chown_username=psycho
#
# в какой файл пишем логи
xferlog_file=/var/log/vsftpd.log
#
# можно увидеть лог и в формате xferlog
#xferlog_std_format=YES
#
# таймаут на открытую && неиспользующуюся сессию.
idle_session_timeout=600
#
# таймаут на коннект по порту data.
#data_connection_timeout=120
#
# рекомендуется создать в системе пользователя, которого
# ftp стервер будет использовать как конкретно униженного в своих
# правах юзверя.
#nopriv_user=ftpsecure
#
# Это для распознования асинхронных ABOR запросов.
# не рекомендуется по соображениям безопасности (этот код довольно
# сложный (и проверять его разработчикам видимо влом Demige)).
# А если его не включить то возможно старые FTP клиенты вас не поймут.
#async_abor_enable=YES
#
# По-умолчанию сервер будет разрешать ASCII режим, но фактически
# игнорировать реквест. Здесь можно разрешить использовать ASCII.
# Есть ппасность при вкл. ascii_download_enable что некоторые нехорошие
# юзеры будут тормозить вашу машину командой "SIZE /большой/файл" в
# ASCII режиме.
# Эти ASCII опции разбиты на аплоад и даунлоад т.к. вы можете возжелать
# разрешить ASCII-аплоады (для работы аплоад скриптов), без
# разрешения даунлоада из-за DoS риска по командам SIZE и ASCII.
# Поддержка ASCII на стороне клиента должна быть.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# Баннер при входе
ftpd_banner=Welcome to Psycho FTP.
#
# файл неразрешенных email адресов.
# юзабельно для защиты от DoS атак.
deny_email_enable=YES
# (умолчальный файл)
banned_email_file=/etc/vsftpd.banned_emails
#
# можно разрешить некоторым юзерам chroot()ится в их домашний каталог
# если chroot_local_user=YES, тогда это будет листинг юзеров, которые
# не могут chroot()ится.
# если chroot_local_user=NO то в ftp_chroot_list прописывается какого
# виртуального юзера куда chroot`ить

chroot_list_enable=YES
chroot_list_file=/etc/ftp_chroot_list
# для локальных юзверей
chroot_local_user=YES
# можно разрешить опцию "-R" для встроенного ls.
# по умолчанию запрещена т.к. сильно загружает систему на больших сайтах
# Тем не менее некоторые FTP-клиенты такие как "ncftp" и "mirror" предпологают
# ее наличие. Так что лучше ее включить.
#ls_recurse_enable=YES

Проверим работоспособность

# ftp 192.168.5.13
Connected to 192.168.5.13.
220 Welcome to Psycho FTP.
Name (192.168.5.13:psycho):
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.

При написании этой статьи использовалось официальное руководство и
собственный опыт. Документацию и последнюю версию vsftpd можно найти
на

Дополнительная информация

Файл хорошо прокомментирован на английском языке, а также, все параметры хорошо задокументированы и находятся под тем же именем в руководстве на страницах man:

man vsftpd.conf

Перевод файла «FAQ», содержащего часто задаваемые вопросы, из последней версии vsftpd доступен ?здесь

Сама программа располагается в каталоге «/usr/sbin/vsftpd», возможно, в разных дистрибутивах файл vsftpd.conf находится в разных местах, узнать его расположение, к примеру, можно командой «whereis vsftpd».

Перевод последней версии странички доступен здесь

После установки следует обратить внимание на файлы, содержащие документацию в каталоге «/usr/share/doc/vsftpd», каталог «EXAMPLE» уже содержит различные примеры файла настроек «vsftpd.conf». Перевод различных примеров с документацией из последней версии доступен здесь

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

Шаг 2 – Разрешение FTP трафика на фаерволе

Чтобы позволить серверу FTP, развёрнутому на ОС Ubuntu взаимодействовать с внешним миром, нужно настроить путь через фаервол. Для начала посмотрим включён ли фаервол. Запустите следующую команду для определения статуса:

sudo ufw status

Если вы увидите такое сообщение:

ufw: command not found

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

Если же на выходе будут показаны правила или сообщение о том, что фаервол активен, нужно определить, как он будет обрабатывать FTP-трафик. Давайте сделаем следующее, откроем порты 20 и 21 для трафика FTP; порты 40000-50000 будут зарезервированы, как диапазон пассивных портов, который в конечном итоге будет установлен в файле конфигурации; порт 990 будет использоваться, когда TLS будет включен. Выполним следующие команды:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp

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

sudo ufw status

Результат будет выглядеть где-то так:

Output

Status active

ToAction      From

------------

990tcp                    ALLOW       Anywhere

20tcp                     ALLOW       Anywhere

21tcp                     ALLOW       Anywhere

4000050000tcp            ALLOW       Anywhere

20tcp (v6)ALLOW       Anywhere (v6)

21tcp (v6)ALLOW       Anywhere (v6)

990tcp (v6)ALLOW       Anywhere (v6)

4000050000tcp (v6)ALLOW       Anywhere (v6)

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

Проверяем VSftpd Сервер

Проверяем FTP Server локально:

ftp localhost

Вывод:

Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
***

Проверяем FTP Server удаленно:

ftp your.ftp.server.com

Вывод:

Connected to your.ftp.server.com.
220 (vsFTPd 2.2.2)
Name (your.ftp.server.com:yourname):
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
***

Какой использовать клиент для работы с сервером FTP в Ubuntu

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

Кроме proxy обращайте внимание также на скорость работы программы, ее функциональные возможности и, разумеется, на цену

Лучший клиент, который и поддерживает proxy, и защищенный SFTP протокол, и есть на русском языке, и распространяется бесплатно – это FileZilla. Использовать такую программу для подключения к серверу – это действительно мудрое решение, так как FileZilla среди прочих клиентов всегда выделялся скоростью работы и простотой использования. Вы быстро сможете разобраться и в proxy, и в работе с файловой системой сервера, и в особенностях подключения к хосту – это совсем несложно. Кроме того, это обсуждаемый в Интернете клиент, потому информации хватает.

Другой клиент, который поддерживает proxy и множество протоколов – это WinSCP. Данный клиент был изначально придуман для работы с SCP для копирования файлов, однако, со временем начал использоваться и для FTP. Есть и другие программы, такие как Cyberduck, CoreFTP LE, BitKinex. Что выбирать – это уже решать вам.

III. Базовая настройка

Для проверки работоспособности сервера его необходимо запустить от пользователя root, командой vsftpd. Жмякаем Ctrl + C чтобы его выключить.
Консольным клиентом ftp (в любой(?) операционной системе) будем проверять, как мы его настроили.
Файл с настройками /etc/vsftpd.conf, но он нам не нужен, поэтому открываем любимым текстовым редактором, затираем все и пишем свой конфиг. И так…

Включаем работу сервера в режиме самостоятельного демона, без всяких inetd, и ведение логов (по-умолчанию /var/log/vsftpd.log)

Включаем 20 порт для обмена непосредственно данными через команду PORT, и ограничиваем количество одновременных соединений.

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

Прячем пользователей в системе, так, что при листинге директорий имя/группа всех объектов будет просто именоваться ftp, а не иметь id реального владельца этого объекта, и включаем возможность загружать файлы на сервер — для этого мы его и настраиваем, же.

Включаем локальных пользователей, — теперь логиниться на FTP можно под своим реальным пользователем в системе, и вы попадаете в свой хомяк (/home/%USERNAME%). Меня это не устроило, но об этом мы еще поговорим. И устанавливаем права на новые создаваемые файлы, -rw-r—r— т.е. владелец файла может его читать/изменять, группа и остальные только читать. По-умолчанию устанавливаются права -rwxrwxrwx, но зачем оно нам?

Включаем виртуальных пользователей на сервере. Это несомненно безопаснее, чем авторизироваться под реальным пользователем системы и попадать в хомяк. Так же, эта настрока позволяет более гибко настраивать доступ пользователям, о чем поговорим еще ниже. И укажем пользователя, с правами которого будет выполняться сессия — ftp — он у нас совсем без прав, поэтому это безопасно. Под этим пользователем будут создаваться (загружаться на сервер) новые файлы. Можете указать nobody или еще кого.

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

Все, наша система с такими настройками в безопасности.

Step 7 — Testing TLS with FileZilla

Most modern FTP clients can be configured to use TLS encryption. We will demonstrate how to connect using FileZilla because of its cross platform support. Consult the documentation for other clients.

When you first open FileZilla, find the Site Manager icon just below the word File, the left-most icon on the top row. Click it:

A new window will open. Click the “New Site” button in the bottom right corner:


Under “My Sites” a new icon with the words “New site” will appear. You can name it now or return later and use the Rename button.

You must fill out the “Host” field with the name or IP address. Under the “Encryption” drop down menu, select “Require explicit FTP over TLS”.

For “Logon Type”, select “Ask for password”. Fill in the FTP user you created in the “User” field:


Click “Connect” at the bottom of the interface. You will be asked for the user’s password:

Click “OK” to connect. You should now be connected with your server with TLS/SSL encryption.


When you’ve accepted the certificate, double-click the folder and drag upload.txt to the left to confirm that you’re able to download files.
When you’ve done that, right-click on the local copy, rename it to upload-tls.txt` and drag it back to the server to confirm that you can upload files.


You’ve now confirmed that you can securely and successfully transfer files with SSL/TLS enabled.

4: Настройка FTP-доступа

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

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

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

В любое место файла добавьте директиву user_sub_token, чтобы вставить имя пользователя в путь local_root directory. Это позволит в дальнейшем добавить новых пользователей.

Ограничьте диапазон портов для FTP:

Примечание: Этот диапазон портов был разблокирован в разделе 2. Если вы указали в файле другой диапазон, откорректируйте настройки брандмауэра.

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

Строка userlist_deny изменяет логику. Когда в ней установлено значение YES, пользователи не могут получить доступ к FTP. Значение NO даёт FTP-доступ только пользователям из списка.

Сохраните и закройте файл.

Создайте и пользователя и добавьте его в файл. Флаг –a вставит данные о пользователе в файл:

Убедитесь, что пользователь был внесён в список:

Перезапустите демон, чтобы обновить настройки:

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

В конфигурационном файле хранятся опции vsftp. Некоторые из них нужно отредактировать.

Найдите в файле следующие строки и отредактируйте их, как показано ниже:

Кроме того, нужно добавить в файл новые параметры.

Примечание: Полный список опций можно найти с помощью команды:

Добавьте в конфигурационный файл следующие параметры

Файл не имеет чёткой структуры, потому неважно, в какой части файла будут находиться новые опции

Примечание: Если вы используете Iptables вместо UFW, разблокируйте все необходимые порты между pasv_min_port и pasv_max_port самостоятельно.

Сохраните и закройте файл.

Перезапустите демон:

Команда systemctl не отображает вывод некоторых команд. Чтобы убедиться, что всё прошло успешно, введите:

Команда должна вернуть:

Вступление

В этом руководстве расскажем, как установить FTP сервер на VPS с ОС Ubuntu. Будем использовать сервер vsftpd, который считается самым быстрым и безопасным FTP сервером для UNIX-систем.

FTP или File Transfer Protocol – протокол приема и передачи файлов в сети. Используя модель клиент/сервер и безопасность SSL/TLS, FTP позволяет пользователям обмениваться файлами с удаленными компьютерами безопасно, эффективно и надежно, передавая данных по протоколу TCP/IP.

FTP работает подобно HTTP или SMTP, с единственным отличием, что он ответственен за безопасную передачу данных от отправителя к получателю, а не веб-страницы с сервера к пользователю или электронного письма через интернет. В этом руководстве рассмотрено создание FTP сервера на ОС Ubuntu версии 16.04.

Примечание: Текущее руководство основывается на версии ОС Ubuntu 16.04. Но вы можете применить те же шаги по созданию FTP сервера на Ubuntu 14.04.

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

Поскольку vsftpd защищает все jail-ы chroot, chroot не должен принадлежать пользователю и не должен иметь право на изменение. Поэтому удобнее всего создать отдельного пользователя для работы с FTP.

Для этого наберите:

Установите пароль; на остальные извещения можно нажать ENTER. Теперь нужно передать root -привилегии домашнему каталогу пользователя ftpuser.

Внутри этого домашнего каталога создайте отдельный каталог, в который можно выгрузить файлы. Затем передайте этот каталог пользователю FTP:

Теперь можно установить (незащищенное) соединение как ftpuser и выгрузить файлы в каталог files.

Step 5 — Testing FTP Access

We’ve configured the server to allow only the user to connect via FTP. Let’s make sure that’s the case.

Anonymous users should fail to connect: We disabled anonymous access. Here we’ll test that by trying to connect anonymously. If we’ve done it properly, anonymous users should be denied permission:

Close the connection:

Users other than should fail to connect: Next, we’ll try connecting as our user. They, too, should be denied access, and it should happen before they’re allowed to enter their password.

Close the connection:

should be able to connect, as well as read and write files: Here, we’ll make sure that our designated user canconnect:

We’ll change into the directory, then use the command to transfer the test file we created earlier to our local machine:

We’ll turn right back around and try to upload the file with a new name to test write permissions:

Close the connection:

Now that we’ve tested our configuration, we’ll take steps to further secure our server.

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

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

Adblock
detector