
Давайте немного усложним хранилище и сделаем сохранение на SMB-хранилище файлов загруженных по FTP (все как у белых людей) и дополнительно установим SSL-сертификаты для Pure-FTP и даже возможно настроим отказоустойчивость.
Создание SSL-сертификатов FTP-сервера
Регистрируем DNS-записи под каждое из FTP-хранилищ и одну общую.

Устанавливаем Let’s encrypt CertBot на оба узла.
# aptitude install python3-certbot-dns-standalone python3-certbot
SSL-сертификаты для домена я буду получать через DNS-записи, так-как эти два узла я планирую использовать для создания кластера Kubernetes и, следовательно, стандартные порты 80 и 443 будут заняты Ingress-контроллером.
# certbot --manual --preferred-challenges dns certonly -d ftp-01.pikur.art -d ftp.pikur.art
# certbot --manual --preferred-challenges dns certonly -d ftp-02.pikur.art -d ftp.pikur.art
После добавления необходимых DNS-записей будут созданы SSL-сертификаты которые мы будем использовать для pure-dns.

В случае успешного создания сертификата получим следующее сообщение.

Подключение SSL-сертификата к FTP-серверу Pure FTP
Удаляем файл TLSCipherSuite, в противном случае сертификаты Let’s encrypt игнорируются pure-ftp сервером.
# rm /etc/pure-ftpd/conf/TLSCipherSuite
В конфигурацию добавляем параметры для работы с Let’s encrypt. Параметры в каталоге conf! Файл с расширением .conf в Ubuntu игнорируются!
TLS 2
CertFileAndKey "/etc/letsencrypt/live/ftp-01.pikur.art/fullchain.pem" "/etc/letsencrypt/live/ftp-01.pikur.art/privkey.pem"
Выполните следующие команды:
# echo 2 > TLS
# echo \"/etc/letsencrypt/live/ftp-02.pikur.art/fullchain.pem\" \"/etc/letsencrypt/live/ftp-02.pikur.art/privkey.pem\" > CertFileAndKey
Так же можно склеить файл сертификата и файл ключа и разместить его в файл сертификата по умолчанию.
# cat "/etc/letsencrypt/live/ftp-02.pikur.art/fullchain.pem" "/etc/letsencrypt/live/ftp-02.pikur.art/privkey.pem" > /etc/ssl/private/pure-ftpd.pem
Перезапускаем.
# systemctl restart pure-ftpd
Пробуем подключиться при помощи FileZilla и обратите внимание, что не должно быть сообщения.
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
И предупреждений о недействительном сертификате.

Монтируем сетевой каталог SAMBA
Порты используемые SAMBA-протоколом.
- 137: NetBIOS Name Service (UDP).
- 138: NetBIOS Datagram Service (UDP).
- 139: NetBIOS Session Service (TCP).
- 445: SMB over TCP.
Открываем доступ к сетевому ресурсу SMB с двух IP-адресов (мои ftp-сервера). Сетевой ресурс это внешний жесткий диск подключенный к Mikrotik HEX-S и расшареный по протоколу SMB.

Рисуем правила для доступа к нашему сетевому ресурсу только с определённых IP-адресов, так как у нас активен гостевой доступ.

Правила выглядят примерно так и доработайте под свою ситуацию (как говорится на вкус и цвет все фломастеры разные).

По поводу современного механизма монтирования сетевых ресурсов SMB я уже статью небольшую писал и посему, просто повторим, то-что описано в заметке “Монтирование SMB раздела при старте сервера (Ubuntu 20.04)“.
Устанавливаем пакеты.
# aptitude install cifs-utils
Создаем запись аккаунта гостевого доступа (/etc/.smbclient).
username=guest
password=guest
domain=INTERLAN
Создаем каталог куда будем монтировать сетевой ресурс.
# mkdir -p /opt/main-storage/public/
Создаем запись в /etc/fstab.
//37.194.5.244/public /opt/main-storage/public cifs user,rw,x-systemd.automount,credentials=/etc/.smbclient,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=2.0 0 0707
Тестирование автомантирования ресурса.
# mount /opt/main-storage/public/
Возможные ошибки (dmesg).
decode_ntlmssp_challenge: authentication has been weakened as server does not support key exchange
Я такое только с Mikrotik словил и пришлость делать гостевое монтирование как я уже выше и писал (обязательно ограничение по IP-адресам).
В этом случае запись в fstab будет вот такого плана.
//37.194.5.244/public /opt/main-storage/public cifs guest,rw,x-systemd.automount,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=2.0 0 0707
[197175.871282] CIFS: Attempting to mount \\37.194.5.244\public
[197186.196659] CIFS: VFS: Error connecting to socket. Aborting operation.
[197186.196736] CIFS: VFS: cifs_mount failed w/return code = -115
Проверьте telnet-ом доступ до 445-ого порта роутера, если не отвечает, перепроверьте правила Firewall.
И после тотго настраиваем второй FTP-сервер (пока будем его так называть).
Аналогичным образом монтируем сетевой ресурс на втором сервере (и пока все настраивается имеет смысл проверить, что все ваши сервисы прикрыты от доступа с небезопасных адреов, а-ля дикий интернет). В этом нам поможет nmap и telnet.
Монтирование ресурса FTP в каталог SMB со сменой владельца файлов.
Вот какую жуть написал, аж сам испугался. В целом есть идея сканировать при помощи МФУ и складывать сканы на сетевой ресурс SMB. И это еще вершина айсберга, так-как идея с общим сетевым ресурсом который диск 2.5 на террабайт смонтированный по сети к двум VPS совершенно случайно оказался довольно интересной идеей.
Разумно, что у меня есть и на такой финт ушами небольшая инструкция “Монтирование локального каталога со сменой владельца“, но у нас не локальный каталог, а сетевой серурс смонтированный по SMB и определенно нас могут ждать разные приключения.
Создаем каталоги _scan и в пространстве пользователя и на SMB-ресурсе.