Немного усложним мое 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-ресурсе.

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

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

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

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

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

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS