Centos 7 vsftpd не показывает файлов. Установка vsftpd на CentOS

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

Ведь фтп на моём Кенте не установлен, потому как работаю то я под SSH. Да ещё и авторизируюсь не под паролем, а под сертификатом . Не могу же я просто так взять, и дать SSH-ключ, под которым потом можно будет входить на сервер постоянно. Да и даже если включить временно вход по паролю, зачем саппорту конкретного скрипта под конкретную кмс видеть весь мой сервер и то, что на нём расположено?

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

К счастью, на деле оказалось всё довольно быстро и просто, и даже с выбором определился в раз - «vsftpd» (Very Secure FTP Daemon). Быстрый. Секурный. Кросплатформенный. Лёгок как в установке, так и в настройке. Иными словами - один из лучших FTP-серверов.

Устанавливаем & настраиваем vsftpd

$ yum install vsftpd

После чего правим главный конфигурационный файл, в котором нужно:

  1. Изолировать пользователей в их домашней директории.
  2. Запретить анонимный доступ.
$ nano /etc/vsftpd/vsftpd.conf
1
2
chroot_local_user=YES
anonymous_enable=NO

Настраиваем пользователей vsftpd

Здесь важно понять один очень интересный момент: лишних FTP-пользователей добавлять не нужно, они уже есть. А добавлялись пользователи именно тогда, когда мы при установке AMP на CentOS. Иными словами - пользователь уже имеет полный доступ на его домашний каталог , остаётся лишь подредактировать его для возможности авторизации под vsftpd.

Например, нам нужен FTP-доступ к директории /var/www/vhosts/сайт на сервере, владельцем которой является пользователь almostover . Делаем следующее:

  1. Смотрим список пользователей и меняем стандартную домашнюю директорию на нужную нам.
  2. Задаём пользователю пароль для FTP-логина.

Назначаем домашнюю директорию

$ nano /etc/passwd
1
2
-almostover:x:500:500::/home/almostover:/bin/bash
+almostover:x:500:500::/var/www/vhosts/сайт:/sbin/nologin

Также следует заменить /bin/bash на /sbin/nologin , для запрета на доступ пользователя к системе .

Задаём пользователю пароль

$ passwd almostover

Запускаем vsftpd

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

$ service vsftpd start

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

$ chkconfig vsftpd on

Заключение о FTP-сервере

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

С одной стороны, если Вы планируете работать с одним определённым каталогом (сайтом), тогда неплохим плюсом здесь будет то, что Вам не придётся постоянно chown -нить свежезакачанные файлы или директории. Все операции будут производиться от имени текущего пользователя и, соответственно, все права по-умолчанию будут назначаться ему.

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

  1. Меняю пароль от выдаваемого логина.
  2. Запускаю vsftpd.
  3. Даю логин и пароль от FTP.
  4. Останавливаю vsftpd.
  5. Меняю пароль ещё раз от этого же логина (на случай, если в следующий раз будет выдан другой логин).

Никаких SSH.
Никаких лишних директорий.
Всё предельно разумно и максимально безопасно.

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

В данном посту мы рассмотрим установку сервера ftp на операционную систему CentOS . В силу того, что он был разработан довольно таки давно, первоначальный ftp является не защищённым в плане шифрования трафика и т.д., что сегодня подрывает его актуальность по современным меркам безопасности. Поэтому наиболее оптимальным выбором для большинства пользователей, которым нужен ftp сервер, является софт vsftp (Very Secure FTP daemon). Стоит отметить его надежность, а так же простоту настройки FTP сервера.

Установка vsftpd
Для установки сервера vsftpd вам необходимо авторизоваться под root-ом, затем выполнить команду:

# yum install vsftpd

Данный пакет входит в стандартный репозиторий CentOS, и проблем с установкой данного софта проблем возникнуть не должно. После того как прошел процесс установки, можно добавить запуск сервера при старте системы:

# chkconfig vsftpd on

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

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

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

/etc/sysconfig/iptables

Добавляем правила для ftp сервера:

Iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

Не забываем, чтобы правила вступили в силу, iptables следует перезапустить.

# service iptables restart

Запуск vsftpd

# service vsftpd start

В качестве заключения хотелось бы отметить тот факт, что vsftpd не смотря на простоту его установки, он является довольно мощным сервером с достаточным количеством плюшек и полезностей. Среди них я бы отметил наиболее актуальные фичи, такие как виртуальные пользователи, индивидуальные настройки, лимиты, отдельные настройки для отдельных IP адресов, и многое другое.

Пример простой конфигурации сервера

Правим файл конфигурации:

# vi /etc/vsftpd/vsftpd.conf

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

Chroot_local_user=YES

Запрещаем анонимный вход на сервер

Anonymous_enable=NO

Создание пользователей FTP
Добавляем пользователя

# useradd ftpuser

Задаем пароль для созданного пользователя

# passwd ftpuser

Дарее правим файл /etc/passwd
Находим строку пользователя ftpuser:

Ftpuser:x:513:513::/home/ftpuser:/bin/bash

/home/ftp — домашний каталог пользователя;
/sbin/nologin — запрет на доступ пользователя к системе;

Для удобства использования можно создать группу к примеру ftpusers, затем задать соотвествующие права на папку /home/ftp

Одни из популярных программ для подключения к FTP-серверу это FileZilla или Total Commander
(см. ). Так же на нашем сайте есть пост о том, можно использовать между двумя серверами Linux.

Настраивается подключение так же как и в других случаях, в настройках подключения указываем адрес сервера, имя пользователя ftpuser, пароль.
Корневую дирректорию, можно не указывать, т.к. по умолчанию ею будет /home/ftp.

Сейчас рассмотрим пример организации FTP сервера на базе vsFTPd и CentOS 7 . Сервис FTP будет крайне полезным для любой организации и сервисов, например, . Первым делом устанавливаем требуемые пакеты vsftpd:

sudo yum -y install vsftpd

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

sudo mkdir /backup

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

Также устанавливаем клиент ftp на используемом сервере — возможно, он пригодится в будущем и сейчас при проверке настроек. Установка также не вызывает никаких затруднений:

sudo yum -y install ftp

Настройка vsFTPd сервера

После установки сервера и клиента переходим к настройке vsftpd. Сразу стоит обратить внимание: Анонимный доступ к FTP разрешен по умолчанию. Установите anonymous_enable=NO для обеспечения безопасности Вашего сервера.

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

sudo nano /etc/vsftpd/vsftpd.conf

Внесем следующие изменения:

Этого будет достаточно для корректной работы созданного FTP сервера, для получения расширенных данных по используемым параметрам — воспользуетесь man (man vsftpd.conf).

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

Создадим специального пользователя FTP с именем ftpuser и каталогом по умолчанию /var/www/ваш_каталог:

useradd -d ‘/var/www/path/to/your/dir’ -s /sbin/nologin ftpuser

Зададим пароль:

Если домашняя директория для ftpuser еще не создана, то сделаем это сейчас:

mkdir -p /var/www/path/to/your/dir

chown -R ftpuser ‘/var/www/path/to/your/dir’

chmod 775 ‘/var/www/path/to/your/dir’

Создаем группу ‘ftpusers’ для FTP пользователей, и добавляем в нее ‘ftpuser’ :

groupadd ftpusers

usermod -G ftpusers ftpuser

Настройка iptables для vsFTPd

Для корректной работы FTP сервера нужно сделать настройку IPTABLES (добавить правила для FTP). Подробнее об iptables: + .

Открываем конфигурационной файл iptables и вносим следующие изменения:

sudo nano /etc/sysconfig/iptables
-A INPUT -m state —state NEW -m tcp -p tcp —dport 21 -j ACCEPT

Сохраните и закройте файл. Перезапустите фаервол командой:

sudo systemctl restart iptables

Настройка автозапуска vsFTPd при старте системы

chkconfig —levels 235 vsftpd on

Стартуем vsFTPd FTP сервис:

Готово. Настройка FTP сервера завершена. Проверяем его работу локально.

|

Предупреждение : протокол FTP небезопасен! Вместо него рекомендуется использовать .

FTP (или File Transfer Protocol, протокол передачи файлов) – это способ обмена файлами между локальным и удаленным сервером. Этот протокол достаточно популярен, но способен подвергнуть систему серьёзному риску из-за отсутствия шифрования: FTP передает данные в виде простого текста.

Как уже отмечалось, SFTP – отличная альтернатива. Этот протокол осуществляет обмен файлами по протоколу SSH.

Примечание : при необходимости использовать именно FTP соединение можно защитить при помощи сертификатов SSL/TLS.

В этом руководстве показано, как использовать сертификаты SSL и TLS на vsftpd на виртуальном выделенном сервере CentOS 6.4.

Установка vsftpd

Сервер vsftpd можно загрузить из стандартных репозиториев CentOS. Для установки vsftpd наберите:

sudo yum install vsftpd

Сервер vsftpd установлен на VPS. Приступайте к его настройке.

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

Главный конфигурационный файл vsftpd по имени vsftpd.conf в CentOS хранится в каталоге /etc/vsftpd/. Откройте его в текстовом редакторе с привилегиями root:

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

Для начала нужно запретить доступ анонимным пользователям. Иногда открытый доступ для анонимов приветствуется (например, в случае с открытым хранилищем файлов), но это точно не подходит личному FTP-серверу.

anonymous_enable=NO

Теперь доступ анонимам запрещен. Следовательно, нужно предоставить системе способ аутентификации. Откройте доступ для локальных пользователей (это значит, что vsftpd сможет использовать авторизацию и пользователей системы Linux).

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

local_enable=YES

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

write_enable=YES

Теперь нужно ограничить пользователей их домашними каталогами. Для этого существует параметр:

chroot_local_user=YES

Для базовой (не SSL) конфигурации FTP этого достаточно. Добавление функций SSL будет описано позже.

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

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

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

Создайте нового пользователя при помощи команды:

sudo adduser ftpuser

Создайте пароль для нового пользователя, набрав:

sudo passwd ftpuser

CentOS 6.4 использует более старую версию vsftpd, потому его настройка немного проще некоторых новых релизов.

Настройка vsftpd для поддержки SSL

Первое, что нужно сделать – создать сертификат SSL. На самом деле, в руководстве используется TLS – протокол, который является преемником SSL и более безопасен.

В каталоге SSL создайте подкаталог для хранения файлов:

sudo mkdir /etc/ssl/private

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

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Будет предложен список вопросов. Заполните поля соответствующей информацией. Особое внимание следует уделить строке Common Name; внесите в нее IP-адрес или домен сервера. На самом деле, остальные поля можно не заполнять.

Внесение SSL в конфигурации vsftpd

Теперь необходимо отредактировать конфигурации vsftpd, настроив защищенное соединение.

Откройте конфигурационный файл vsftpd как пользователь root:

sudo nano /etc/vsftpd/vsftpd.conf

Перейдите в конец файла и внесите информацию о SSL/TLS.

Здесь необходимо указать расположение сертификата и ключей. Поскольку все это находится в одном файле, укажите этот файл в обоих параметрах:

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

Далее нужно включить поддержку этих файлов и отключить анонимных пользователей. Также необходимо настроить принудительное использование SSL для соединений всех НЕ-анонимных пользователей при отправке пароля или передаче данных. Это значительно усилит безопасность.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Затем нужно ограничить тип подключения до более безопасного TLS. Для этого явно разрешите TLS и запретите использование SSL:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

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

require_ssl_reuse=NO
ssl_ciphers=HIGH

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

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

sudo /etc/init.d/vsftpd restart

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

sudo chkconfig vsftpd on

Подключение к vsftpd при помощи FileZilla

Соединения SSL и TLS поддерживаются большинством современных FTP-клиентов. В данном разделе показано, как настроить FileZilla для использования безопасных соединений (благодаря их кроссплатформенности).

Примечание : предполагается, что клиент уже установлен.

Откройте FileZilla. Кликните на Site Manager.

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

В поле Host введите IP-адрес, в выпадающем меню Protocol выберите «FTP — File Transfer Protocol». В выпадающем меню Encryption выберите «Require explicit FTP over TLS».

В меню Login Type выберите Ask for password. В поле User укажите ранее созданного пользователя FTP.

Следующий шаг – это первый признак того, что при подключении к серверу используется TLS. Появится предупреждение «The server’s certificate is unknown. Please carefully examine the certificate to make sure the server can be trusted»: на данном этапе необходимо подтвердить сертификат.

На экране должна появиться внесенная при создании сертификата информация, позволяющая подтвердить соединение.

Чтобы установить подключение, примите сертификат.

Итоги

Это руководство предоставляет более безопасный вариант настройки. Тем не менее, в нем также может обнаружиться пара проблем безопасности. Потому использовать FTP на установках с доступом к интернету не рекомендуется, в таких случаях лучше обратиться к SFTP.

Tags: ,

Есть вопросы?

Сообщить об опечатке

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