diff --git a/public/uk/index.gmi b/public/uk/index.gmi index 8992aa8..3dd1089 100644 --- a/public/uk/index.gmi +++ b/public/uk/index.gmi @@ -9,6 +9,7 @@ ### Нотатки +=> setup-anonymous-ftp-server.gmi 2025-09-17 Організація гостьового сервера FTP => my-alfis-dns-preset-on-yggdrasil-mycelium-router.gmi 2025-09-17 Мій пресет Alfis DNS на роутері Yggdrasil / Mycelium => install-mycelium-network-router-in-linux.gmi 2025-09-16 Встановлення роутера мережі Mycelium в Linux => restoration-of-ukrainian-web-archives.gmi 2025-09-14 Реставрація українських Веб-архівів diff --git a/public/uk/setup-anonymous-ftp-server.gmi b/public/uk/setup-anonymous-ftp-server.gmi new file mode 100644 index 0000000..b632223 --- /dev/null +++ b/public/uk/setup-anonymous-ftp-server.gmi @@ -0,0 +1,100 @@ +# Організація гостьового сервера FTP + +Постало завдання десь зберігати дампи україномовних сайтів у сирому HTML. Розгортати повноцінний Git хостинг поки не хочу, зокрема й тому що при кожному апдейті там будуть оновлюватись хеші файлів, це не дуже доречно. Утім, хочеться якось "розподілити" дані між користувачами. + +Для цієї мети, вирішив підняти старий добрий публічний сервер FTP (для локальної мережі) з анонімним доступом до сервера в активному та пасивному режимах. Доступ до файлів тут в режимі read-only, я додаю їх від користувача по окремому потоку SSH. + +Нижче описані кроки з налаштувань, щоб наступного не лазити по закладкам, може комусь стане в нагоді. + +``` bash +apt install vsftpd +``` + +## Налаштування + +* В операційній системі Fedora, файл конфігурації знаходиться за адресою /etc/vsftpd/vsftpd.conf +* В Debian - це /etc/vsftpd.conf + +``` vsftpd.conf +# дозволити підключення в анонімному режимі +anonymous_enable=YES + +# заборонити логін локальних користувачів +local_enable=NO + +# заборонити запис (додаю файли через SSH) +write_enable=NO + +# маска, я її лишив здається стандартною +local_umask=022 + +# дозволити отримання списку директорій (для зручності навігації) +dirmessage_enable=YES + +# вимкнув, щоб отримувати журнали в файл (див. vsftpd_log_file) +xferlog_std_format=NO + +# вимкнув IPv4, оскільки я користуюсь тільки IPv6 (Yggdrasil/Mycelium) +listen=NO +listen_ipv6=YES + +# в мене не стандартна локація на примонтованому пристрої +anon_root=/path/to/public + +# дозволив відображення "прихованих" файлів що починаються з крапки +force_dot_files=YES + +# увімкнув пасивний режим явно та вказав діапазон портів для iptables +# про активний і пасивний режими, конструктивно тут: https://vps.ua/wiki/ukr/ftp-mode/ +pasv_enable=YES +pasv_min_port=10000 +pasv_max_port=10100 + +# можна також обмежити конективність для певних конфігурацій +# pasv_address= +# pasv_addr_resolve=NO +# connect_from_port_20=YES + +# файл журналів +vsftpd_log_file=/var/log/vsftpd.log +``` +* інші опції я лишив як є, але це актуально лише для моєї версії vsftdp - будьте уважні! + +## Фаєрвол + +Тепер важливо відкрити потрібні порти. Так як я не використовую режим SSL, мені потрібно дозволити тільки порти 20, 21 і 10000-10100 (pasv_min_port і pasv_max_port відповідно). + +На Fedora, я досі не навчився користуватись новомодним firewalld через командний рядок, тому зробив це через GUI Firewall / firewall-config (https://firewalld.org). Тут важливо додати ці правила до групи Permanent щоб вони не злетіли після ребуту. + +В Debian, для перманентної зміни iptables, я користуюсь ufw: + +``` bash +ufw allow 20/tcp +ufw allow 21/tcp +ufw allow 10000:10100/tcp +``` + +### Альтернативні мережі + +Якщо потрібно дозволити підключення тільки для користувачів Yggdrasil: + +``` bash +ufw allow from 0200::/7 port 20 proto tcp +ufw allow from 0200::/7 port 21 proto tcp +ufw allow from 0200::/7 port 10000:10100 proto tcp +``` +* для Mycelium вказуємо 0400::/7 + +### Мульти-мережний режим + +Я особисто використовую правила без from (дозволяю підключення звідусіль) оскільки в мене крутиться декілька IPv6 мереж і якщо правильно не забіндити сервер на одній з них - можливі помилки підключення в пасивному режимі. Якщо не вдається підключитись через таймаут - дивіться /var/log/ufw.log і спробуйте тимчасово викнути фаєрвол взагалі, щоб перевірити чи справа дійсно в ньому (ufw disable). + +## Запуск + +* systemctl restart vsftpd - застосовуємо конфігурацію перезапуском сервера +* systemctl enable vsftpd - автозапуск сервера при старті системи +* systemctl status vsftpd - перевіряємо статус, після чого можна підключатися + +## Посилання + +=> https://devzone.org.ua/post/orhanizatsiia-hostyovoho-servera-ftp Веб-версія цієї публікації з коментарями на DevZone