Читать дальше


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


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

apt update

Устанавливаем vsFTPd:

apt install vsftpd

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

vi /etc/vsftpd.conf

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

write_enable=YES
chroot_local_user=YES

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

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



* где

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



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

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

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

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

apt install iptables-persistent

netfilter-persistent save

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

systemctl enable vsftpd

systemctl restart vsftpd

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


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

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

* где

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



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

passwd ftpuser

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

   vi /etc/shells   

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

   /bin/false   

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

Проверка


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

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

apt install ftp

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

ftp localhost

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

Настройка 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:

   vi /etc/vsftpd.conf   

Редактируем строки:



* где

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



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



* где:

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 — выбор шифра. В данном примере мы говорим использовать максимально безопасный.


Перезапускаем FTP-сервер:

systemctl restart vsftpd

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


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

apt install libpam-pwdfile

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

   vi /etc/vsftpd.conf   



* где:

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


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

apt install apache2-utils

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

mkdir /etc/vsftpd

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

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

   vi /etc/pam.d/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).

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

mkdir /etc/vsftpd_virtuser_conf

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

   vi /etc/vsftpd_virtuser_conf/virt1   


local_root=/var/www/virt1

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

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

mkdir /var/www/virt1

chown vsftpd:nogroup /var/www/virt1

Перезапускаем vsftpd:

systemctl restart vsftpd || service vsftpd restart

взято тут
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 29th, 2025 04:07 pm
Powered by Dreamwidth Studios