Немного усложним мое FTP-хранилище

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

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

Создание SSL-сертификатов FTP-сервера

Регистрируем DNS-записи под каждое из FTP-хранилищ и одну общую.

Редактирование DNS-зоны в Cloud.ru

Устанавливаем 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.

Добавление DNS-записей в Cloud.ru

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

Сертификат Let's encrypt выпущен успешно.

Подключение 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.

И предупреждений о недействительном сертификате.

Let's encrypt certificate unknown

Монтируем сетевой каталог 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.

Разрешаем SMB-протокол на роутере Mikrotik.

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

Внешний доступ к 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-ресурсе.

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Топ-9 нейросетей для генерации изображений в 2026 году

Топ-9 нейросетей для генерации изображений в 2026 году

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker