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

Related Posts

Настройка FTP-сервера в Ubuntu Linux

Никогда бы не подумал, что мне понадобится настроить FTP-сервер в 2025-ом году, но к моему невероятному изумлению, мой принтер не умеет в SMB-протокол и для сетевого сканирования поддерживает только FTP.…

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

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

You Missed

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

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

Настройка FTP-сервера в Ubuntu Linux

Настройка FTP-сервера в Ubuntu Linux

Шпаргалка по работе с SUDO

Шпаргалка по работе с SUDO

Ошибка “исправление шифрования CredSSP” при подключении к удаленному рабочему столу.

Ошибка “исправление шифрования CredSSP” при подключении к удаленному рабочему столу.

Выполнение команд sudo без ввода пароля

Выполнение команд sudo без ввода пароля

Установка Windows VirtIO драйверов

Установка Windows VirtIO драйверов