Vsftpd centos 6 настройка

Обновлено: 06.07.2024

Несмотря на популярность облачных систем хранения, достаточно часто появляется задача развертывания FTP-ервера.

Рассмотрим как настроить vsftpd приложение с поддержкой SSL и IPv6 под ОС Ubuntu и CentOS.

Vsftpd является акронимом и его следует понимать как Very Secure FTP Daemon - очень защищенный FTP-сервер.

Процесс разделим на два этапа - установку и настройку.

Установка в Ubuntu:

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

sudo apt-get update

sudo apt-get upgrade

Теперь устанавливаем vsftpd:

sudo apt-get install vsftpd

Установка в CentOS:

Обновляем компоненты системы и перезагружаемся:

yum install vsftpd

service vsftpd start

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

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

Если анонимном доступе нет необходимости, то первым делом исправляем это в конфигурационном файле. Для этого находим строчку:

Заменяем YES на NO. В последних версиях Ubuntu это не требуется, но проверка не будет лишней.

Соответственно, если по умолчанию указан параметр NO, то заменяем на YES.

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

Также, если по умолчанию указан параметр NO, то заменяем на YES.

Сохраняем конфигурационный файл и перезапускаем сервер командой:

service vsftpd restart

Проверяем запустилась ли служба:

service vsftpd status

Добавляем пользователя в sudo:

adduser <USER_NAME> sudo

Создаем директорию внутри пользовательской:

Меняем владельца каталога на root:

chown root:root /home/<USER_NAME>

sudo service vsftpd restart

Если подключение не удается - настраиваем файрволл.

В Ubuntu это делается с помощью ufw:

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

В CentOS, как и во всех остальных случаях, можно использовать iptables:

sudo iptables -A INPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

Проверка соединения выполняется подключением к серверу, например, из окна браузера по ссылке вида: ftp://IP-address

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

Предупреждение: FTP по своей сути небезопасен. Если вам необходимо использовать FTP, следует обеспечить безопасное соединение FTP с SSL/TLS.

В противном случае лучше использовать SFTP, безопасную альтернативу FTP.

Первые две буквы vsftpd расшифровываются как «very secure» («очень безопасный»), программа была написана, чтоб предоставить сильнейшую защиту от возможных уязвимостей F.

1. Установка vsftpd

Можно быстро установить vsftpd на виртуальный выделенный сервер в командной строке:

sudo yum install vsftpd

Также нужно установить клиента FTP, чтоб подключаться к FTP-серверу:

sudo yum install ftp

Когда файлы будут загружены, vsftpd установится на VPS. Как правило, он уже настроен до разумного уровня безопасности. Тем не мене, он дает доступ анонимным пользователям.

2. Настройка VSFTP

Когда VSFTP установлен, можно изменить настройки.

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

sudo vi /etc/vsftpd/vsftpd.conf

Основное изменение, которое нужно внести – установить «No» в сроке Anonymous_enable:

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

Затем раскомментируйте пункт local_enable, изменяя на «yes».

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

В завершение перезапустите vsftpd:

sudo service vsftpd restart

Чтобы убедиться, что vsftpd работает при загрузке, запустите chkconfig:

chkconfig vsftpd on

3. Доступ к FTP-серверу

Когда FTP-сервер установлен и настроен по вашему усмотрению, можно получить доступ к нему.

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

Кроме того, можно попасть на FTP-сервер с помощью командной строки, набрав:

Теперь смело можно подключаться к серверу под логином и паролем используя программу, например,FileZilla

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

в строке chroot_list_file=/etc/vsftpd/chroot_list указан файл с списком пользователей которых необходимо запереть в домашнем катологе, внесите имя пользователя(в данном случаи ftpuser) в файл chroot_list предварительно создав его, имя файла может быть любым, главное что-бы имя было указанно в строке chroot_list_file

Если необходимо запретить просматривать каталоги на сервере всем пользователям то необходимо раскоментировать только строку

и добавить строку(хотя эту строку необходимо добавить в любом случаи)

Чтобы создать файл необходимо проделать следующие действия

зайдём в каталог /etc/vsftpd/ командой

создадим файл chroot_list командой

и перед вами откроется текстоый редактор vi


Нажмите клавишу i и вводите список пользователей(тем же образом что указанно на скриншоте) которых необходимо запереть в своём каталоге


Теперь сохраним файл, нажмите клавишу Esc и введите :wq и нажмите Enter


Теперь запретим пользователю доступ по SSH

Открывает файл /etc/passwd и на ходим строку с именем пользователя которого вы создали. Выглядеть это будет примерно так

необходимо заменить на это

сохраните изменение в файле и перезапустите службу VSFTPD(перезапуск службы необходимо делать каждый раз при изменениях в конфигах)

service vsftpd restart

Теперь добавим правила для iptables

iptables -I INPUT -p tcp --dport 21 -j ACCEPT

сохраним настройки iptables

service iptables save

К слову, очень удобно редактировать файлы и перемещаться по папкам с помощью Midnight Commander, установить его очень просто


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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 мог читать и писать данные в его домашней папке, изменяем права доступа и владельца :

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

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

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

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

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

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

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

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

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

Читайте также: