mirror of
https://codeberg.org/postscriptum/devzone.org.ua.git
synced 2026-02-18 22:02:41 +00:00
initial commit
This commit is contained in:
commit
d4994cde4c
61 changed files with 7044 additions and 0 deletions
96
post/orhanizatsiia-hostyovoho-servera-ftp.md
Normal file
96
post/orhanizatsiia-hostyovoho-servera-ftp.md
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# Організація гостьового сервера FTP
|
||||
|
||||
Постало [завдання](https://devzone.org.ua/topic/restavratsiia-ukrayinskykh-veb-arkhiviv) десь зберігати дампи україномовних сайтів у сирому 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](https://firewalld.org) (_firewall-config_). Тут важливо додати ці правила до групи 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` - перевіряємо статус, після чого можна підключатися
|
||||
Loading…
Add table
Add a link
Reference in a new issue