Ftp сервер для linux

Передача файлов в сети осуществляется благодаря правильно настроенному FTP-серверу. Такой протокол работает с применением TCP по архитектуре клиент-сервер и задействует различные сетевые соединения для обеспечения передачи команд между подключенными узлами. Пользователи, которые подключились к определенному хостингу, сталкиваются с надобностью настройки личного FTP-сервера по требованиям компании, предоставляющей услуги обеспечения работы сайта или другого обеспечения. Далее мы продемонстрируем, как создается такой сервер в Linux на примере одной из утилит.

Создаем FTP-сервер в Linux

Сегодня мы будем использовать инструмент под названием VSftpd. Преимущества такого FTP-сервера в том, что он по умолчанию работает на многих ОС, обслуживает официальные репозитории различных дистрибутивов Linux и относительно просто настраивается для корректного функционирования. К слову, на ядре Линукс официально применяется именно этот FTP, и многие хостинги рекомендуют ставить VSftpd. Поэтому давайте обратим внимание на пошаговый процесс инсталляции и настройки необходимых компонентов.

Шаг 1: Установка VSftpd

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

  1. Откройте «Терминал» любым удобным методом, например, через меню.

Обладателям версий Debian или Ubuntu требуется прописать команду sudo apt-get install vsftpd . CentOS, Fedora — yum install vsftpd , а для Gentoo — emerge vsftpd . После введения нажмите на Enter, чтобы запустить процесс инсталляции.

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

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

yum update
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install yum-plugin-fastestmirror
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm
yum install kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum install perf-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/python-perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum install python-perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum –enablerepo=elrepo-kernel install kernel-ml

После окончания всей этой процедуры запустите любым удобным образом конфигурационный файл /boot/grub/grub.conf . Измените его содержимое таким образом, чтобы в итоге следующие параметры имели соответствующие значения:

default=0
timeout=5
title vmlinuz-4.0.4-1.el7.elrepo.x86_64
root (hd0,0)
kernel /boot/vmlinuz-4.0.4-1.el7.elrepo.x86_64 console=hvc0 xencons=tty0 root=/dev/xvda1 ro
initrd /boot/initramfs-4.0.4-1.el7.elrepo.x86_64.img

Далее вам останется только перезагрузить выделенный сервер и переходить к непосредственной инсталляции FTP-сервера на компьютер.

Шаг 2: Первоначальная настройка FTP-сервера

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

    В операционных системах Debian или Ubuntu конфигурационный файл запускается так: sudo nano /etc/vsftpd.conf . В CentOS и Fedora он находится по пути /etc/vsftpd/vsftpd.conf , а в Gentoo — /etc/vsftpd/vsftpd.conf.example .

В консоли или текстовом редакторе отобразится сам файл. Здесь обратите внимание на указанные ниже пункты. В вашем конфигурационном файле они должны иметь такие же значения.

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
Остальное редактирование осуществляйте сами, а после не забудьте сохранить изменения.

Шаг 3: Добавление пользователя с расширенными правами

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

    Запустите «Терминал» и введите команду sudo adduser user1 , где user1 — имя новой учетной записи.

Задайте для него пароль, после чего подтвердите его. Кроме этого, настоятельно рекомендуем запомнить домашний каталог учетной записи, в дальнейшем может понадобиться обращение к нему через консоль.

Заполните основную информацию — полное имя, номер комнаты, номера телефонов и прочую информацию, если требуется.

После этого присвойте пользователю расширенные права путем ввода команды sudo adduser user1 sudo .

Создайте для юзера отдельную директорию под хранение его файлов через sudo mkdir /home/user1/files .

Далее переместитесь в свою домашнюю папку через cd /home и там сделайте нового пользователя владельцем своей директории, введя chown root:root /home/user1 .

Перезапустите сервер после осуществления всех изменений sudo service vsftpd restart . Только в дистрибутиве Gentoo утилита перезагружается через /etc/init.d/vsftpd restart .

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

Шаг 4: Настройка Firewall (Только для Ubuntu)

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

Читайте также:  Ты поступила необдуманно и ветрено

    В консоли поочередно активируйте команды sudo ufw disable и sudo ufw enable , чтобы перезапустить Firewall.

Добавьте правила входящих соединений, используя sudo ufw allow 20/tcp и sudo ufw allow 21/tcp .

Проверьте, были ли применены введенные правила, просмотрев статус фаервола sudo ufw status .

Отдельно хочется отметить несколько полезных команд:

  • /etc/init.d/vsftpd start или service vsftpd start — анализ конфигурационного файла;
  • netstat -tanp | grep LISTEN — проверка корректности установки FTP-сервера;
  • man vsftpd — вызов официальной документации VSftpd для поиска необходимой информации касаемо работы утилиты;
  • service vsftpd restart или /etc/init.d/vsftpd restart — перезагрузка сервера.

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

На этом статья подходит к концу. Сегодня мы разобрали процедуру установки сервера VSftpd без привязки к какому-либо хостингу, поэтому учтите это при выполнении наших инструкций и сравнивайте их с теми, что предоставляет компания, содержащая ваш виртуальный сервер. Кроме всего, советуем ознакомиться с другим нашим материалом, в котором разбирается тема установки компонентов LAMP.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Технический блог специалистов ООО"Интерфейс"

  • Главная
  • Простой FTP-сервер на базе Ubuntu (vsftpd)

Простой FTP-сервер на базе Ubuntu (vsftpd)

  • Автор: Уваров А.С.
  • 27.02.2012

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

Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный – низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами, указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

Для нашего сервера мы будем использовать vsftpd – простой, быстрый и безопасный FTP сервер. Так как он будет обслуживать как внешнюю, так и внутреннюю сети, то имеет смысл добавить эту роль нашему роутеру. Установка сервера предельно проста:

Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf он имеет простую структуру, хорошо откомментирован и позволяет настроить сервер без какой-либо инструкции при наличии минимальных знаний. Рассмотрим его основные параметры.

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

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

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

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

Если требуется установить иной набор прав: 775 и 664, то umask должен быть равен 002.

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

Включим лог загружаемых и скачиваемых файлов:

Разрешим серверу устанавливать соединения для передачи данных на порт 20 (активный режим):

Следующие опции задают место и формат хранения логов:

Зададим таймауты сессии:

Также в целях безопасности изолируем пользователя в его домашнем каталоге и сразу разрешим запись в его корень:

Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

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

Читайте также:  Играть в делать видео

Достаточно интересная опция:

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

Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

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

Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию):

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

В случае появления ошибки, связанной с некорректной работой vsftpd и системы безопасности seccomp:

добавьте в файл недокументированную опцию:

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

и создадим файл списка пользователей:

По умолчанию vsftpd запрещает доступ к серверу пользователям, указанным в данном списке еще до ввода пароля, т.е. реализует принцип разрешено всем, кому не запрещено. Но гораздо лучше будет реализовать иной подход: запрещено всем, кому не разрешено. Т.е. разрешать доступ только указанным пользователям. Для этого добавим опцию:

Теперь доступ к FTP-серверу будут иметь только явно указанные пользователи, их следует указывать в vsftpd.user_list по одному в строку, например:

Если не указано иное, то подключившись по FTP пользователи попадают в свой домашний каталог. Это не всегда удобно, часто нужно перенаправлять их в иную директорию. Если это общая для всех папка, скажем /var/ftp, то можно задать опцию:

Которая перенаправит всех пользователей в указанный каталог и изолирует их там.

Это самая простая ситуация, реальные задачи обычно сложнее, допустим нам надо установить пользователю Иванову в качестве корневой директории /var/www/example1.com, а Петрову /var/www/example2.com, чтобы каждый из них работал со своей папкой. Для этих целей можно использовать еще одну возможность vsftpd – пользовательские настройки, которые перекрывают настройки основного конфигурационного файла.

Для этого добавим опцию:

Затем создадим саму директорию

Чтобы задать пользователю собственные настройки в данной директории следует создать файл с именем пользовтаеля и добавить в него необходимые опции. Изменения применяются без перезапуска FTP-сервера при следующем подключении клиента.

Создадим файл с настройками для Иванова:

и внесем в него опцию:

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

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

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

Как видим, мы действительно создали рабочий FTP-сервер менее чем за полчаса.

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

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

sudo vi /etc/vsftpd.conf

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

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

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

Установим значение 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-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:

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

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

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

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

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. Если у вас остались вопросы, спрашивайте в комментариях!

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

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

Adblock detector