Centos 7 vsftpd не показывает файлов. Установка vsftpd на CentOS
Совсем недавно заглючил некий скрипт на пыхе. Скрипт был покупной, именно поэтому я решил не разбираться с ним, а напрямую обратиться в саппорт продавца для выяснения проблемы. Саппорт ответил коротко: нужен доступ к FTP - будем посмотреть. И вот тут я завис на пол минуты…
Ведь фтп на моём Кенте не установлен, потому как работаю то я под SSH. Да ещё и авторизируюсь не под паролем, а под сертификатом . Не могу же я просто так взять, и дать SSH-ключ, под которым потом можно будет входить на сервер постоянно. Да и даже если включить временно вход по паролю, зачем саппорту конкретного скрипта под конкретную кмс видеть весь мой сервер и то, что на нём расположено?
Ну, думаю, как раз для таких особых случаев нужно фтпишечку то и поднять.
К счастью, на деле оказалось всё довольно быстро и просто, и даже с выбором определился в раз - «vsftpd» (Very Secure FTP Daemon). Быстрый. Секурный. Кросплатформенный. Лёгок как в установке, так и в настройке. Иными словами - один из лучших FTP-серверов.
Устанавливаем & настраиваем vsftpd
$ yum install vsftpdПосле чего правим главный конфигурационный файл, в котором нужно:
- Изолировать пользователей в их домашней директории.
- Запретить анонимный доступ.
1
2 | chroot_local_user=YES
anonymous_enable=NO |
Настраиваем пользователей vsftpd
Здесь важно понять один очень интересный момент: лишних FTP-пользователей добавлять не нужно, они уже есть. А добавлялись пользователи именно тогда, когда мы при установке AMP на CentOS. Иными словами - пользователь уже имеет полный доступ на его домашний каталог , остаётся лишь подредактировать его для возможности авторизации под vsftpd.
Например, нам нужен FTP-доступ к директории /var/www/vhosts/сайт на сервере, владельцем которой является пользователь almostover . Делаем следующее:
- Смотрим список пользователей и меняем стандартную домашнюю директорию на нужную нам.
- Задаём пользователю пароль для 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 -нить свежезакачанные файлы или директории. Все операции будут производиться от имени текущего пользователя и, соответственно, все права по-умолчанию будут назначаться ему.
С другой стороны, лично моя цель поднятия ФТП была озвучена в самом начале: когда нужно дать кому-то временный доступ к определённой изолированной директории на сервере/определённому сайту:
- Меняю пароль от выдаваемого логина.
- Запускаю vsftpd.
- Даю логин и пароль от FTP.
- Останавливаю vsftpd.
- Меняю пароль ещё раз от этого же логина (на случай, если в следующий раз будет выдан другой логин).
Никаких 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: ,