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

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

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

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

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

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

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

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

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

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

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