Linux vsftpd ssl неявный

vsftpd и ssl

Всем доброго времени суток!

Проблема — хочу передачу аккаунта по ftp в шифрованном виде.

В vsftpd.conf указал:

server.pem содержит rsa private key и сертификат. Все это в base64. Openssl естественно присутствует.

При подключении пишет: 530 Non-anonymous sessions must use encryption. QUIT

Анонимного доступа нет вообще. Если строчки, перечисленные выше закомментировать, то все работает.

Люди, может кото-то это делал?? Поделитесь опытом? В Инете искал, натыкался только на интерпритацию man vsftpd.conf

Re: vsftpd и ssl

Это был результат с клиентов totalcmd, explorer, firefox

Совсем другой с линуксового клиента «ftp»:

(После ввода логина)

234 Proceed with negotiation.

[SSL Cipher AES256-SHA]

331 Please specify the password

(Ввожу пароль, принимает, пускает в систему)

НО. Нигде нет надписи типа «SSL connection established». И почему она не ругается на самовыданный сертификат (он НЕ лежит в репозитории доверенных сертификатов)?

По идее, сначало должно устанавливаться шифрованное соединение, а уж потом запрос логина/пароля

Re: vsftpd и ssl

Вот debug в «ftp»:

234 Proceed with negotiation.

[SSL Cipher AES256-SHA]

331 Please specify the password.

230 Login successful.

215 UNIX Type: L8

Remote system type is UNIX.

Using binary mode to transfer files

По rfc после AUTH должно идти ADAT в случае шифрования не только аккаунта, но и самих файлов. Устанавливаю опцию в vsftpd.conf force_local_data_ssl=YES , ADAT все равно нет.

Я пока не могу локализовать проблему. Либо клиент, либо сервер сбоят

Re: vsftpd и ssl

#force_local_data_ssl=YES не пробовали раскоментировать? Попробуйте такой клиент secureftp2.5_setup.bin (это установочный файл) Он на java сделан, показывает хорошо процесс подключения. С FTPS работал у меня хорошо. Свободный для некоммерческого использования

Re: vsftpd и ssl

У меня так работает на версии vsftpd-2.0.3, скомпилированной с openssl. Шифруется В конфиге прописано:

#SSL option
ssl_enable=YES
# Path to RSA cert file, default is /usr/share/ssl/certs/vsftpd.pem
rsa_cert_file=/etc/vsftpd/vsftpd.pem

Единственная проблема в отсутствии нормальных ftp клиентов. Гладко с самоподписанными сертификатами работает только FileZilla, но работает отлично, я ее под wine запускаю, клиенты именно ее используют. Kasablanca тоже коннектится, но не позволяет простмотреть сертификат и русский в вопросах выводит.

Re: vsftpd и ssl

У меня 2.0.3-r2, естественно скомпиленный с ssl

FileZilla выдает такой же ответ как и все клиенты после запроса логина:

530 Non-anonymous sessions must use encryption.

Re: vsftpd и ssl

В FileZilla нужно выбрать Тип сервера = «FTP over SSL (explicit encryption)». У меня работает шифрование данных и пароля, поэтому force_local_logins_ssl=YES отсутствует.

Re: vsftpd и ssl

Да. Нашел чуть позже 🙂

Только вот незадача, он показывает, типа сертификат, принимать или нет, login successeful, а потом пишет не могу сделать ls

Re: vsftpd и ssl

ВСЕ. Разобрался!! Вот конфиги на будущее:

ssl_ciphers=DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SH A:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DES-CBC3-MD5:DHE-RSA-AES128-SHA:DHE-DSS-AES1 28-SHA:AES128-SHA:IDEA-CBC-SHA:IDEA-CBC-MD5:RC2-CBC-MD5:DHE-DSS-RC4-SHA:RC4-SHA: RC4-MD5:RC4-MD5:RC4-64-MD5:EXP1024-DHE-DSS-DES-CBC-SHA:EXP1024-DES-CBC-SHA:EXP10 24-RC2-CBC-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:DES-CBC-MD5:E XP1024-DHE-DSS-RC4-SHA:EXP1024-RC4-SHA:EXP1024-RC4-MD5:EXP-EDH-RSA-DES-CBC-SHA:E XP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC2-CBC-MD5:EXP-RC4-M D5:EXP-RC4-MD5

ssl_ciphers список взят с $openssl ciphers

Читайте также:  Как подружить windows с linux

Огромное спасибо всем за участие и помощь!

Re: vsftpd и ssl

ИМНО глупо так использовать ciphers. Данная опция предназначена для ограничения методов шифрования. Вы же прописали все доступные на сегодняшний день методы. Лучше уж вообще опустить эту опцию. Тогда в будущем не будет коллизий с openssl.
С шифрованием трафика, а оно мне действительно нужно, у меня только одна проблема. openssl сильно грузит процессор, так что он становиться узким местом. С ssh такого не наблюдается.

Источник

Установка и настройка vsFTPd на Ubuntu

vsFTPd и proFTPd — одни из самых простых способов поднять сервер FTP на Linux. В данной инструкции пойдет речь о vsFTPd и Ubuntu (на примере версий 14 и 16).

Установка и настройка

Обновляем списки портов в репозиториях:

apt-get install vsftpd

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

И снимаем комментарий со следующих строк:

* write_enable — разрешить копировать файлы на сервер; chroot_local_user — использовать для пользователей изолированное окружение.

И дописываем следующее:

allow_writeable_chroot=YES
pasv_enable=YES
pasv_max_port=60000
pasv_min_port=65535

* где allow_writeable_chroot разрешаем использовать домашние каталоги с правом на запись; pasv_enable включает пассивный режим работы FTP-сервера; pasv_max_port и pasv_min_port определяют диапазон портов для пассивного режима.

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

  • 20 — основной порт FTP для передачи.
  • 21 — для активного режима. Используется для передачи команд.
  • 60000-65535 — диапазон динамических портов, который нами был определен в конфигурационном файле. Используется для пассивного режима.

Разрешаем и перезапускаем сервис:

systemctl enable vsftpd

systemctl restart vsftpd

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

iptables -I INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT

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

apt-get install iptables-persistent

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

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

useradd ftpuser -d /ftp -s /bin/false -m

* где ftpuser — имя учетной записи; /ftp — домашний каталог (в него будем попадать при подключении); /bin/false — запрет пользователю на локальный вход в систему.

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

И добавляем следующее:

* мы добавили /bin/false в список разрешенных оболочек. В противном случае, может вернуться ошибка 530 Login incorrect.

Проверка

Для проверки подключения можно воспользоваться FTP-клиентом на другом компьютере (например, FileZilla или Total Commander).

Также можно установить FTP-клиент на сервер:

apt-get install ftp

И для подключения используем следующую команду:

Система запросит логин и пароль.

Настройка SSL/TLS

TLS позволяет настроить безопасный FTP, передача данных через который осуществляется по шифрованному каналу.

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

openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/private/vsftpd.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ftp.dmosk.local/CN=ftp»

* в данном примере мы создаем самоподписанный сертификат на 4 года для URL ftp.dmosk.local или ftp. Открытый ключ будет сохранен в файле /etc/ssl/certs/vsftpd.pem, закрытый — /etc/ssl/private/vsftpd.key. При желании, мы можем использовать купленный сертификат или получить его бесплатно у Let’s Encrypt.

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

rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES

* где ssl_enable разрешает использование шифрования; rsa_cert_file — путь к открытому ключу; rsa_private_key_file — путь к закрытому ключу.

И дописываем следующие:

allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_ciphers=HIGH

  • allow_anon_ssl разрешает использовать SSL анонимным пользователям;
  • force_local_data_ssl требует использования шифрования, и если установить YES, клиенты без шифрования не смогут подключиться;
  • force_local_logins_ssl также требует подключение по SSL;
  • ssl_tlsv1 — использовать TLS версии 1;
  • ssl_sslv2 и ssl_sslv3 — использовать SSL версии 1 и 2;
  • ssl_ciphers — выбор шифра. В данном примере мы говорим использовать максимально безопасный.
Читайте также:  Linux поменять локаль koi 8

systemctl restart vsftpd

Виртуальные пользователи

Устанавливаем pam-модуль, позволяющий аутентифицировать пользователей с помощью passwd-like файлов:

apt install libpam-pwdfile

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

user_config_dir=/etc/vsftpd_virtuser_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd

  • user_config_dir — каталог для хранения настроек пользователя.
  • guest_enable — разрешаем гостевой вход.
  • virtual_use_local_privs — виртуальные пользователи используют привилегии, как локальные, а не анонимные.
  • pam_service_name — имя pam-сервиса.
  • nopriv_user — под каким пользователем работает сервер, когда ему не нужны привилегии.
  • guest_username — имя гостевого пользователя.

Для возможности использовать утилиту htpasswd ставим следующий пакет:

apt install apache2-utils

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

htpasswd -cd /etc/vsftpd/ftpd.passwd virt1

htpasswd -d /etc/vsftpd/ftpd.passwd virt2

* обратите внимание, опция -c команды htpasswd используется только при создании файла (при первом вводе команды). Мы создаем два пользователя — virt1 и virt2.

Архивируем имеющийся pam-сервис для vsftpd:

mv /etc/pam.d/vsftpd /etc/pam.d/back_vsftpd

Создаем новый со следующим содержимым:

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

В самой системе создаем пользователя, которого используем как гостевого:

useradd vsftpd -d /home/vsftpd -g nogroup -m -s /bin/false

* с домашней директорией /home/vsftpd, основной группой nogroup и без возможности входа в систему (-s /bin/false).

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

и создаем настройку для первого:

* local_root — домашняя директория для FTP пользователя virt1.

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

chown vsftpd:nogroup /var/www/virt1

systemctl restart vsftpd || service vsftpd restart

Источник

Использование SSL/TLS на vsftpd (CentOS)

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

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:

sudo nano /etc/vsftpd/vsftpd.conf

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

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

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

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

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

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

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

Читайте также:  Полное удаленное управление windows

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

Создание пользователя 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.

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

Далее нужно включить поддержку этих файлов и отключить анонимных пользователей. Также необходимо настроить принудительное использование 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

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

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

Перезапустите 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.

Далее нажмите Connect в нижней части панели. Будет предложено указать пароль FTP-пользователя.

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

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

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

Итоги

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

Источник

Оцените статью