Установка vsftpd centos 7. Установка vsftpd на CentOS. Предварительная подготовка к установке FTP-сервера

Совсем недавно заглючил некий скрипт на пыхе. Скрипт был покупной, именно поэтому я решил не разбираться с ним, а напрямую обратиться в саппорт продавца для выяснения проблемы. Саппорт ответил коротко: нужен доступ к 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.
Никаких лишних директорий.
Всё предельно разумно и максимально безопасно.

Vsftpd (‘Very Secure FTP Daemon’ — Очень безопасный FTP-демон) -это FTP-сервер для UNIX-подобных систем, в том числе CentOS / RHEL / Fedora и других дистрибутивов Linux. Он поддерживает IPv6, SSL, блокировку пользователей к своим домашним каталогам и много других дополнительных функций. В своей теме «Установка vsftpd на CentOS» я расажу как можно установить vsftpd на CentOS в подробных примерах.

Шаг 1 — Установка Vsftpd

Вы можете быстро установить Vsftpd на свою VPS для этого в командной строке выполнить команду:

# yum install vsftpd

Нам также необходимо установить клиент FTP:

# yum install ftp

Как только файлы закончат загружаться, после чего Vsftpd будет на вашей VPS.

Шаг 2 — Настройка VSFTP

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

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bk

Откройте файл конфигурации:

# vim /etc/vsftpd/vsftpd.conf

Одно основное изменение, которое вы должны сделать это изменить вход для ананимуса (мне это не нужно):

[...] anonymous_enable=NO [...]

До этого изменения, в Vsftpd было разрешено анонимные входы на фтп сервер и неизвестные пользователи могли получать доступ к файлам нашей VPS. После этого, раскомментируйте local_enable вариант, измените его на «да».

[...] local_enable = YES [...]

Это даст доступ локальным пользователям к ФТП.

Далее раскомментировав команду chroot_local_user. Когда эта строка имеет значение»YES» , все локальные пользователи будут заключены в так званые тюрьмы в пределах их возможностей и будет отказано в доступе к любой другой части сервера. Предоставляем chroot для всех пользователей:

[...] chroot_local_user = YES [...]

[...] write_enable=YES [...]

Это даст пользователям FTP права на запись, так же, по необходимости отключаем 20 порт — уменьшит привилегии VSftpd:

[...] connect_from_port_20=NO [...]

Установим маску 022, чтобы быть уверенными в том, что для всех файлов (644) и папок (755) которые мы закачиваем, устанавливаются соответствующие права

[...] local_umask=022 [...]

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

Дополнительные настройки для конфигурации vsftpd

allow_anon_ssl NO
Параметр YES дает возможность подключаться через SSL-соединение всем анонимным пользователям.

anon_mkdir_write_enable NO
Параметр YES дает возможность создавать каталоги анонимными пользователями (при определённых условиях), но для этого нужно будет включить опцию «write_enable»кто му же, должны присутствовать права на запись анонимными пользователями для родительского каталога.

anon_other_write_enable NO
Параметр YES дает возможность для анонимных пользователях выполнять не только операции закачки файлов, создания папок, но и удалять и переименовывать их.

anon_upload_enable NO
Параметр YES дает возможность для анонимных пользователях выполнять закачку файлов на сервер (нужно включить опцию «write_enable»,кто му же, должны присутствовать права на запись анонимными пользователями в папке закачки). Эта опция также должен быть включена для того, чтобы виртуальные пользователи смогли закачать свои файлы, т.к по умолчанию, все виртуальные юзеры считаются анонимными.

anon_world_readable_only YES
Параметр YES нужен для того чтобы анонимные пользователи могли скачать только файлы, которые доступные на чтение всем (владельцем которых является пользователь ftp).

anonymous_enable YES
Параметр YES дает возможность подключения анонимных пользователей к серверу с именами ftp и anonymous.

ascii_download_enable NO
Параметр YES дает возможность выбрать для скачивания файлов режим ASCII

ascii_upload_enable NO
Параметр YES дает возможность выбрать для закачивания файлов режим ASCII

async_abor_enable NO
Параметр YES дает возможность использования специальной команды FTP, известной как «async ABOR».

background YES
Параметр YES включает работу vsftpd в фоновом режиме.

check_shell YES
Внимание! Данный параметр работает только для vsftpd, собранного без «PAM»! Если опция стоит в — NO, то vsftpd не проверяет наличие shell локального пользователя в /etc/shells. Обычно же, если shell пользователя не найден в /etc/shells, то в доступе по FTP этому пользователю будет отказано!

chmod_enable YES
Параметр YES дает возможность локальному пользователю (ям) использовать команду «SITE CHMOD». Анонимные пользователи НИКОГДА не могут использовать данную команду!

chown_uploads NO
Параметр YES приводит к тому, что для всех файлов, которые закачивают анонимные пользователи, владелец будет изменён на пользователя, указанного в опцие «chown_user-name».

chroot_list_enable NO
Параметр «YES» дает возможность создавать список локальных пользователей, для которых после входа будет выполнен «chroot()» в их домашний каталог. Если опция «chroot_local_user» установлена в «YES», то всё работает с точностью до наоборот: для локальных юзеров в предоставляемом списке НЕ БУДЕТ выполняться «chroot()». По умолчанию, список юзеров содержится в файле /etc/vsftpd/chroot_list, вы можете задать и любое другое имя файла с помощью опции «chroot_list_file».

chroot_local_user NO
Параметр YES приводит к тому, что после входа, для локальных пользователей будет выполнен chroot() в их домашний каталог. Внимание! Данная опция может нанести ущерб безопасности, особенно в случае, когда юзере могут закачивать файлы или имеют shell доступ. Включайте его только если понимаете, что делаете!

connect_from_port_20 NO
Опция установленная в YES дает возможность использовать порт 20 (ftp-data) на сервере для передачи данных, по соображениям безопасности, некоторые клиенты могут требовать такого поведения от сервера. Наоборот, выключение данной опции, позволяет запускать vsftpd с меньшими превилегиями.

debug_ssl NO
Опция установленная в YES приводит к протоколированию работы подключений по SSL. (Добавлено в 2.0.6)

deny_email_enable NO
Параметр YES позволяет предоставить список паролей в стиле E-mail адресов для анонимных пользователей (для которых доступ будет запрещён). По умолчанию, список содержится в файле /etc/vsftpd/banned_emails, но можно задать другой файл с помощью опции «banned_email_file».

dirlist_enable YES
Опция установленая в NO запрещает доступ на выполнение команд для просмотра содержимого папок.

dirmessage_enable NO
Параметр YES дает возможность показывать сообщения пользователям, которые первый раз заходят в какой-либо каталог. По умолчанию, сообщения находятся в файлах.message, но можно указать другой файл с помощью опции «message_file».

download_enable YES
Параметр NO запрещает выполнять скачивание файлов.

dual_log_enable NO
Параметр YES включает параллельную генерацию двух журналов /var/log/xferlog и /var/log/vsftpd.log. Первый имеет стиль wu-ftpd, второй — vsftpd.

force_dot_files NO
Параметр YES дает возможность показа файлов и каталогов, имя которых начинается с точки. Исключения составляют имена «.» и «..»

force_anon_data_ssl NO
Работает только если включеа опция «ssl_enable». Параметр YES принудительно переключает соединения всех анонимных пользователей в режим SSL при скачивании и закачивании файлов.

force_anon_logins_ssl NO
Работает только если включена опция «ssl_enable». Параметр YES принудительно переключает соединения всех анонимных пользователей при отправке пароля.

force_local_data_ssl YES
Работает только если включена опция «ssl_enable». Параметр YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при скачивании и закачивании файлов.

force_local_logins_ssl YES
Работает только если включен параметр «ssl_enable». Параметр YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при отправке пароля.

guest_enable NO
Параметр YES говорит о том, что все анонимные соединения должны рассматриваться как «гостевые». Гостевой вход будет переназначен на пользователя, который задан параметром «guest_username».

hide_ids NO
Параметр YES приводит к тому, что при показе для всех файлов и каталогов, группа и владелец всегда будут «ftp».

listen YES
Параметр YES приводит к запуску vsftpd в режиме «демона». Это означает, что vsftpd не может быть запущен из inetd. Вместо этого, vsftpd запускается напрямую один раз и далее сам будет обслуживать входящие соединения.

listen_ipv6 NO
Тоже что и для параметра listen, только vsftpd будет обслуживать IPv6, а не только IPv4. Этот параметр и параметр listen являются взаимоисключающими.

local_enable NO
Параметр YES позволяет входить по FTP локальным пользователям (из /etc/passwd или авторизуемых через PAM). Данный параметр должен быть включен, если вы хотите организовать работу НЕ-анонимных пользователей, включая и виртуальных.

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

log_ftp_protocol NO
Параметр YES приводит к протоколированию всех запросов и ответов протокола FTP, а также в выключению параметра xferlog_std_format.

ls_recurse_enable NO
Если опция установлена в YES, то она включает использоваение «ls -R». Это создаёт значительный риск безопасности, потому что выполнение «ls -R» для каталога верхнего уровня, который содежит множество подкаталогов и файлов, может привести к очень большому потреблению ресурсов.

mdtm_write YES
Если опция установлена в YES, то он включает MDTM установку времени изменения файлов (полезно для проверки доступа)

no_anon_password NO
Если опция установлена в YES, то vstpd не спрашивает пароля у анонимных пользователей.

no_log_lock NO
Параметр YES говорит vsftpd не выполнять блокировку при записи в файлы журналов. Обычно данный параметр выключен. В Solaris в связке с файловой системой Veritas иногда появляется ошибка, выражающаяся в зависании при попытке установить блокировку на файлы журналов.

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

passwd_chroot_enable NO
Если опция установлена в YES, дает возможность совместно сchroot_local_user, включает chroot() отдельно для каждого пользователя, исходя из данных о его домашнем каталоге, взятых из /etc/passwd. При этом, значение «/./» в строке, задающей домашний каталог, означает отдельное местоположение в пути.

pasv_addr_resolve NO
Если опция установлена в YES, то дает возможность использовать имя (вместо IP адреса) в pasv_addres

pasv_enable YES
Если опция установлена в NO, то она запрещает метод PASV в полученном соединении для приёма/передачи данных.

pasv_promiscuous NO
Если опция установлена в YES, то она запрещает проверку безопасности, назначение которой убедиться, что соединение на приём/передачу данных осуществляется с того же IP-адреса, что и управляющее соединение. Включайте только если понимаете, что вы делаете! Такое необходимо только в некоторых случаях при организации безопасных туннелей или поддержке FXP.

port_enable YES
Если опция установлена в NO, то она запрещает метод PORT в полученном соединении для приёма/передачи данных.

port_promiscuous NO
Если опция установлена в YES, то она запретит проверку безопастности PORT, назначение которой убедиться, что исходяще соединение подключено именно к клиенту. Включайте только если понимаете, что делаете!

require_cert NO
Параметр YES требует от всех SSL клиентов наличия клиентского сертификата. Уменьшение подлинности, применимое к этому сертификату, управляется параметром validate_cert (добавлен в 2.0.6).

run_as_launching_user NO
Установите YES, если вы хотите запускать vsftpd от пользователя, который собственно и производит запуск. Обычно это нужно в тех случаях, когда доступ от пользователя root недоступен. СЕРЬЁЗНЕЙШЕЕ ЗАМЕЧАНИЕ! НЕ включайте этот параметр пока вы полностью не осознаете то, что вы делаете, так как использование этого параметра может создать серьёзную проблему с безопасностью. Особенно важно, чтобы vsftpd не мог использовать / в качестве корневого каталога, а также используйте chroot для ограничения доступа к файлам, когда включен данный параметр (даже если vsftpd запущен от root). Менее подходящим решением может быть использование deny_file с такими аргментами как {/*,*..*}, но надёжность такого решения не может сравниться с chroot, так что сильно на это не полагайтесь. При использовании этого параметра, вводятся ограничения на другие опции. Например не ждите, что будут работать опции требущие привелегий, такие как неанонимные входы, закачка файлов с изменением владельца, соединение по 20 порту и подключение по портам меньше, чем 1024, а также и другие подобные.

secure_email_list_enable NO
Установите YES, если вы хотите, чтобы для анонимных входов, в качестве паролей, использовался только указанный вами список E-mail адресов. Это полезно для некоторого ограничения доступа к содержимому сервера, без создания виртуальных пользователей. Анонимным пользователям будет отказано во входе, если пароль, который они указали не будет в списке, который находится в файл email_password_file. Формат файла: один пароль на строку без дополнительных пробелов. Местоположение файла по умолчанию: /etc/vsftpd/email_passwords

session_support NO
сли опция установлена в YES, vsftpd будет пытаться вести сессии. При этом он будет пытаться обновлять wtmp и utmp. Если для авторизации используется PAM, то vsftpd также будет пытаться открывать pam_session при входе и закрывать его только при выходе пользователя. Если вам не нужно протоколирование сессий, вы можете запретить это, а также вы можете указать vsftpd запускать меньше процессов и/или с меньшими привелегиями. Модификация wtmp и utmp работает только, если vsftpd собран с поддержкой PAM.

setproctitle_enable NO
сли опция установлена в YES, то vsftpd будет пытаться показывать информацию о состояние сессий в списке процессов. Другими словами, показываемое имя процесса будет изменено, чтобы отражать состояние сессии vsftpd (idle, downloading и т.д.) Из соображений безопасности, возможно вам лучше оставить этот параметр выключенным.

ssl_enable NO
сли опция установлена в YES и vsftpd был собран с библиотекой openSSL, то vsftpd будет обслуживать безопасные соединения через SSL. Это относится как к управляющим соединениям, так и к соединениям передающим данные. Также необходимо, чтобы и клиент поддерживал SSL соединения. Используйте этот параметр с осторожностью, потому что vsftpd целиком полагается на библиотеку openSSL в плане безопаснотсти SSL соединений и не может гарантировать, что эта библиотека свободна от ошибок.

ssl_request_cert YES
Если опция установлена в YES, то vsftpd запрашивает (но не делает из этого необходимости) у клиента сертификат.

ssl_sslv2 NO
Применяется только если включена опция ssl_enable.В случае если установлена опция в YES, допускаются соединения про протоколу SSL v2. Предпочтительными являются соединения по протоколу TLS V1.

ssl_sslv3 NO
Применяется только если включена опция ssl_enable.В случае если установлена опция в YES, допускаются соединения про протоколу SSL v3. Предпочтительными являются соединения по протоколу TLS V1.

ssl_tlsv1 YES
Применяется только если включена опция ssl_enable. В случае если установлена опция в YES, то допускаются соединения про протоколу TLS V1. Предпочтительными являются соединения по протоколу TLS V1.

Добавления пользователей.

Создам нового пользователя, с именем ‘ftpuser’ и назначим ему домашнюю директорию ‘/home/ftpuser’ :

# useradd -d "/home/ftpuser" -s /sbin/nologin ftpuser

Добавим пароль для созданного пользователя:

# passwd ftpuser

Создадим домашнюю директорию для данного юзера, (если еще не добавили) :

# mkdir -p /home/ftpuser

# chown -R ftpuser "/home/ftpuser" # chmod 775 "/home/ftpuser"

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

# groupadd ftpusers # usermod -G ftpusers ftpuser

Правила для IPtables.

Если Вы используете IPTABLES, необходимо создать соответствующее правило для VSftpd:

# vim /etc/sysconfig/iptables

Добавьте следующую строку, перед REJECT строкой, для открытия 21 порта:

A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

Сохраняем и закрываем файл, а так же ерезапустите фаервол:

# service iptables restart

Перезагрузим Vsftpd:

# service vsftpd restart

Добавим Vsftpd в автозагрузку для этого выполним:

# chkconfig vsftpd on

# chkconfig --levels 235 vsftpd on

Проверить уровни запуска можно вот так:

# chkconfig --list vsftpd

Должны получить что-то типа этого:

Vsftpd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл

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

# ps -aux | grep vsftpd

Шаг 3 — Перейти на FTP-сервер

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

# FTP сайт

Установка vsftpd на CentOS завершена. Основная суть понятна, детали (если вдруг не понятны) спрашивайте у меня. могу помочь.

|

Предупреждение : протокол 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: ,

FTP сервер vsftpd (Very Secure FTP daemon) является одним из надежнейших и простых в настройке ftp серверов. Это оптимальный выбор для большинства пользователей, которым нужен ftp сервер.

Установка vsftpd

Под root -ом, наберите в консоли:

# yum install vsftpd

Этот пакет входит в стандартный репозитарий CentOS, поэтому проблем с установкой возикнуть не должно.

Добавим запуск сервера при старте системы:

# chkconfig vsftpd on

Для интереса проверим теперь уровни запуска:

# chkconfig --list vsftpd

получаем:

Vsftpd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл

Service vsftpd start

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

System-config-securitylevel

Для CentOS 6 и 7:

System-config-firewall-tui

Настройка vsftpd

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

Параметры Параметр по умолчанию Пояснение
allow_anon_ssl NO Значение YES позволяет анонимным пользователям подключаться через SSL-соединение.
anon_mkdir_write_enable NO Значение YES позволяет анонимным пользователям при определённых условиях создавать каталоги. Чтобы они могли это делать, должен быть включен параметр write_enable и анонимный пользователь должен иметь права на запись для родительского каталога.
anon_other_write_enable NO Значение YES позволяет анонимным пользователям выполнять не только операции закачки файлов и создания каталогов, но и операции удаления и переименования.
anon_upload_enable NO Значение YES позволяет анонимным пользователям осуществлять закачку файлов на сервер при определённых условиях: должен быть включен параметр write_enable и анонимные пользователи должны иметь права на запись в каталог закачки. Этот параметр также должен быть включен для того, чтобы виртуальные пользователи могли закачивать файлы так как по умолчанию виртуальные пользователи считаются анонимными./td>
anon_world_readable_only YES Значение YES говорит, что анонимные пользователи могут скачивать только файлы, доступные на чтение всем. Это такие файлы, владельцем которых является пользователь ftp, что особенно касается закаченных файлов.
anonymous_enable YES Значение YES разрешает подключаться к серверу анонимным пользователям с именами ftp и anonymous.
ascii_download_enable NO Значение YES позволяет выбрать для скачивания файлов режим ASCII
ascii_upload_enable NO Значение YES позволяет выбрать для закачивания файлов режим ASCII
async_abor_enable NO Значение YES включает возможность использования специальной команды FTP, известной как "async ABOR". Не все клиенты поддерживают эту команду, к тому же, её неудобно управлять. Но к сожалению, некоторые FTP-клиенты будут "зависать" при отмене передачи файлов, если данная команда будет недоступна, так что возможно вы захотите включить её.
background YES Значение YES включае выполнение vsftpd в фоновом режиме.
check_shell YES Внимание! Данная опция работает только для vsftpd, собранного без PAM!. Если NO, то vsftpd не проверяет наличие shell локального пользователя в /etc/shells. Обычно же, если shell пользователя не найден в /etc/shells, то в доступе по FTP этому пользователю будет отказано!
chmod_enable YES Значение YES позволяет локальным пользователям использовать команду SITE CHMOD. Анонимным пользователи НИКОГДА не разрешается использовать эту команду!
chown_uploads NO Значение YES приводит к тому, что для всех файлов, которые закачивают анонимные пользователи, владелец будет изменён на пользователя, указанного в параметре chown_user-name. Это полезно для административных целей и возможно из соображений безопасности.
chroot_list_enable NO Значение YES позволяет задать список локальных пользователей, для которых после входа будет выполнен chroot() в их домашний каталог. Есть параметр chroot_local_user установлен в YES, то всё работает с точностью до наоборот: для локальных пользователей в предоставляемом списке НЕ БУДЕТ выполняться chroot(). По умолчанию, список пользователей находится в файле /etc/vsftpd/chroot_list, однако вы можете указать другое имя файла с помощью параметра chroot_list_file
chroot_local_user NO Значение YES приводит к тому, что после входа, для локальных пользователей будет выполнен chroot() в их домашний каталог. Внимание ! Данный параметр может нанести ущерб безопасности, особенно в случае, когда пользователи могут закачивать файлы или имеют shell доступ. Включайте его только если понимаете, что делаете!
connect_from_port_20 NO Значение YES позволяет использовать на сервере порт 20 (ftp-data) для передачи данных. По соображениям безопасности, некоторые клиенты могут требовать такого поведения от сервера. Наоборот, выключение данного параметра, позволяет запускать vsftpd с меньшими превилегиями.
debug_ssl NO Значение YES приводит к протоколированию работы подключений по SSL. (Добавлено в 2.0.6)
deny_email_enable NO Значение YES позволяет предоставить для анонимных пользователей список паролей в стиле E-mail адресов, для которых доступ будет запрещён. По умолчанию, список находится в файле /etc/vsftpd/banned_emails, но можно задать другой файл с помощью параметра banned_email_file.
dirlist_enable YES Значение NO запрещает доступ на выполнение команд просмотра содержимого каталогов.
dirmessage_enable NO Значение YES позволяет показывать сообщения пользователям, которые первый раз заходят в какой-либо каталог. По умолчанию, сообщения находятся в файлах.message, но можно указать другой файл с помощью параметра message_file.
download_enable YES Значение NO запрещает выполнять скачивание файлов.
dual_log_enable NO Значение YES включает параллельную генерацию двух журналов /var/log/xferlog и /var/log/vsftpd.log. Первый формируется в стиле wu-ftpd, второй в собственном формате vsftpd.
force_dot_files NO Значение YES включает показ файлов и каталогов, имя которых начинается с точки. Исключения составляют имена "." и ".."
force_anon_data_ssl NO Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех анонимных пользователей в режим SSL при скачивании и закачивании файлов.
force_anon_logins_ssl NO Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех анонимных пользователей при отправке пароля.
force_local_data_ssl YES Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при скачивании и закачивании файлов.
force_local_logins_ssl YES Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при отправке пароля.
guest_enable NO Значение YES говорит о том, что все анонимные соединения должны рассматриваться как "гостевые". Гостевой вход будет переназначен на пользователя, который задан параметром guest_username.
hide_ids NO Значение YES приводит к тому, что при показе для всех файлов и каталогов, группа и владелец всегда будут "ftp".
listen YES Значение YES приводит к запуску vsftpd в режиме "демона". Это означает, что vsftpd не может быть запущен из inetd. Вместо этого, vsftpd запускается напрямую один раз и далее сам будет обслуживать входящие соединения.
listen_ipv6 NO Тоже что и для параметра listen, только vsftpd будет обслуживать IPv6, а не только IPv4. Этот параметр и параметр listen являются взаимоисключающими.
local_enable NO Значение YES позволяет входить по FTP локальным пользователям (из /etc/passwd или авторизуемых через PAM). Данный параметр должен быть включен, если вы хотите организовать работу НЕ-анонимных пользователей, включая и виртуальных.
lock_upload_files YES Значение YES включает блокировку на запись для всех закачиваемых файлов. Все скачиваемые файлы имеют разделяемую блокировку на чтение. Внимание! Перед тем как включить этот параметр помните, что злонамеренное чтение может привести к тому, что пользователи, закачивающие файлы не смогут их дозаписать.
log_ftp_protocol NO Значение YES приводит к протоколированию всех запросов и ответов протокола FTP, а также в выключению параметра xferlog_std_format.
ls_recurse_enable NO Значение YES включает использоваение "ls -R". Это создаёт значительный риск безопасности, потому что выполнение "ls -R" для каталога верхнего уровня, который содежит множество подкаталогов и файлов, может привести к очень большому потреблению ресурсов.
mdtm_write YES Значение YES включает MDTM установку времени изменения файлов (полезно для проверки доступа)
no_anon_password NO При установленом YES, vstpd не спрашивает пароля у анонимных пользователей.
no_log_lock NO Значение YES говорит vsftpd не выполнять блокировку при записи в файлы журналов. Обычно данный параметр выключен. В Solaris в связке с файловой системой Veritas иногда появляется ошибка, выражающаяся в зависании при попытке установить блокировку на файлы журналов.
one_process_model NO Для ядер 2.4 поддерживается другая модель безопасности: один процесс на одно соединение. Такая модель менее безопасна, но более производительна. Не включайте, если не понимаете что делаете и если вашему серверу не нужна поддержка огромного количества отдельных соединений.
passwd_chroot_enable NO Значение YES совместно сchroot_local_user, включает chroot() отдельно для каждого пользователя, исходя из данных о его домашнем каталоге, взятых из /etc/passwd. При этом, значение "/./" в строке, задающей домашний каталог, означает отдельное местоположение в пути.
pasv_addr_resolve NO Установите YES, если вы хотите использовать имя (вместо IP адреса) в pasv_addres
pasv_enable YES Установите NO, если вы хотите запретить метод PASV в полученном соединении для приёма/передачи данных.
pasv_promiscuous NO Установите YES если вы хотите запретить проверку безопасности, назначение которой убедиться, что соединение на приём/передачу данных осуществляется с того же IP-адреса, что и управляющее соединение. Включайте только если понимаете, что вы делаете! Такое необходимо только в некоторых случаях при организации безопасных туннелей или поддержке FXP.
port_enable YES Установите NO, если вы хотите запретить метод PORT в полученном соединении для приёма/передачи данных.
port_promiscuous NO Установите YES, если вы хотите запретить проверку безопастности PORT, назначение которой убедиться, что исходяще соединение подключено именно к клиенту. Включайте только если понимаете, что делаете!
require_cert NO Значение YES требует от всех SSL клиентов наличия клиентского сертификата. Уменьшение подлинности, применимое к этому сертификату, управляется параметром validate_cert (добавлен в 2.0.6).
run_as_launching_user NO Установите YES, если вы хотите запускать vsftpd от пользователя, который собственно и производит запуск. Обычно это нужно в тех случаях, когда доступ от пользователя root недоступен. СЕРЬЁЗНЕЙШЕЕ ЗАМЕЧАНИЕ! НЕ включайте этот параметр пока вы полностью не осознаете то, что вы делаете, так как использование этого параметра может создать серьёзную проблему с безопасностью. Особенно важно, чтобы vsftpd не мог использовать / в качестве корневого каталога, а также используйте chroot для ограничения доступа к файлам, когда включен данный параметр (даже если vsftpd запущен от root). Менее подходящим решением может быть использование deny_file с такими аргментами как {/*,*..*}, но надёжность такого решения не может сравниться с chroot, так что сильно на это не полагайтесь. При использовании этого параметра, вводятся ограничения на другие опции. Например не ждите, что будут работать опции требущие привелегий, такие как неанонимные входы, закачка файлов с изменением владельца, соединение по 20 порту и подключение по портам меньше, чем 1024, а также и другие подобные.
secure_email_list_enable NO Установите YES, если вы хотите, чтобы для анонимных входов, в качестве паролей, использовался только указанный вами список E-mail адресов. Это полезно для некоторого ограничения доступа к содержимому сервера, без создания виртуальных пользователей. Анонимным пользователям будет отказано во входе, если пароль, который они указали не будет в списке, который находится в файл email_password_file. Формат файла: один пароль на строку без дополнительных пробелов. Местоположение файла по умолчанию: /etc/vsftpd/email_passwords
session_support NO При значении YES, vsftpd будет пытаться вести сессии. При этом он будет пытаться обновлять wtmp и utmp. Если для авторизации используется PAM, то vsftpd также будет пытаться открывать pam_session при входе и закрывать его только при выходе пользователя. Если вам не нужно протоколирование сессий, вы можете запретить это, а также вы можете указать vsftpd запускать меньше процессов и/или с меньшими привелегиями. Модификация wtmp и utmp работает только, если vsftpd собран с поддержкой PAM.
setproctitle_enable NO Если YES, то vsftpd будет пытаться показывать информацию о состояние сессий в списке процессов. Другими словами, показываемое имя процесса будет изменено, чтобы отражать состояние сессии vsftpd (idle, downloading и т.д.) Из соображений безопасности, возможно вам лучше оставить этот параметр выключенным.
ssl_enable NO Если YES и vsftpd был собран с библиотекой openSSL, то vsftpd будет обслуживать безопасные соединения через SSL. Это относится как к управляющим соединениям, так и к соединениям передающим данные. Также необходимо, чтобы и клиент поддерживал SSL соединения. Используйте этот параметр с осторожностью, потому что vsftpd целиком полагается на библиотеку openSSL в плане безопаснотсти SSL соединений и не может гарантировать, что эта библиотека свободна от ошибок.
ssl_request_cert YES Если YES, то vsftpd запрашивает (но не делает из этого необходимости) у клиента сертификат. Обычно, это не вызывает проблем, но IBM zOS считает иначе (добавлено в 2.0.7)
ssl_sslv2 NO Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу SSL v2. Предпочтительными являются соединения по протоколу TLS V1.
ssl_sslv3 NO Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу SSL v3. Предпочтительными являются соединения по протоколу TLS V1.
ssl_tlsv1 YES Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу TLS V1. Предпочтительными являются соединения по протоколу TLS V1.