пʼятниця, 20 листопада 2020 р.

Install and configure vsftpd FTP server on pfSense 2.4.5


vsftpd - простий надійний FTP сервер, який ми інсталюємо на pfSense. Налаштовувати сервер будемо за допомогою системних користувачів.

Інсталяція

pfSense 2.4 базується на FreeBSD 11, отже встановлювати будемо з відповідного репозиторію:
pkg add https://pkg.freebsd.org/FreeBSD:11:amd64/quarterly/All/vsftpd-ssl-3.0.3_2.txz
В процесі створюється користувач ftp, домашній каталог /var/ftp
Головний файл конфігурації серверу знаходиться в /usr/local/etc/vsftpd.conf
Перед тим як його правити переконайтесь чи є резервна копія /usr/local/etc/vsftpd.conf.dist
В разі потреби робимо резервну копію:
cp /usr/local/etc/vsftpd.conf /usr/local/etc/vsftpd.conf.bak

Налаштування

Тепер редагуємо /usr/local/etc/vsftpd.conf через веб-інтерфейс pfSense (Diagnostics - Edit File):
ftpd_banner=Welcome to FTP server
listen=YES
listen_port=2005
background=YES
pasv_enable=YES
pasv_min_port=2000
pasv_max_port=2010
dirmessage_enable=NO
idle_session_timeout=3600
local_enable=YES
chroot_local_user=YES
anonymous_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=NO
#anon_world_readable_only=NO
#max_per_ip=5
max_clients=35
write_enable=YES
xferlog_enable=NO
secure_chroot_dir=/usr/local/share/vsftpd/empty
allow_writeable_chroot=YES
#https://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/
user_config_dir=/usr/local/etc/vsftpd_users
chmod_enable=YES
local_umask=022
anon_umask=022
#file_open_mode=022
Рядок user_config_dir=/usr/local/etc/vsftpd_users вказує, що є додаткові конфігурації для кожного користувача, це нам далі допоможе розділяти права.
Створюємо папку з конфігами користувачів:
mkdir /usr/local/etc/vsftpd_users
Створюємо самі конфіги, копіюючи як шаблон конфіг /usr/local/etc/vsftpd.conf:
cp /usr/local/etc/vsftpd.conf /usr/local/etc/vsftpd_users/user_1
cp /usr/local/etc/vsftpd_users/user_1 /usr/local/etc/vsftpd_users/user_2
cp /usr/local/etc/vsftpd_users/user_1 /usr/local/etc/vsftpd_users/user_3
cp /usr/local/etc/vsftpd_users/user_1 /usr/local/etc/vsftpd_users/ftp
Знову через веб-інтерфейс (Diagnostics - Edit File) заповнюємо конфіги юзерів.

user_1
local_root=/var/ftp/share
chmod_enable=YES
local_umask=022
anon_umask=022
anon_other_write_enable=no
user_2
chroot_local_user=YES
local_root=/var/ftp/share
anon_other_write_enable=yes
max_per_ip=0
user_3
local_root=/var/ftp/pub
chmod_enable=YES
local_umask=022
anon_umask=022
anon_other_write_enable=no
ftp
local_root=/var/ftp/pub
chmod_enable=YES
local_umask=022
anon_umask=022
anon_other_write_enable=no
Cтворюємо додаткові папки:
mkdir /var/ftp/pub
mkdir /var/ftp/share
Створюємо самих юзерів та їх паролі:
pw useradd -n user_1 -d /var/ftp/share -s /usr/bin/false
pw useradd -n user_2 -d /var/ftp/share -s /usr/bin/false
pw useradd -n user_3 -d /var/ftp/pub -s /usr/bin/false
passwd user_1
passwd user_2
passwd user_3
Аноніми по замовчуванню попадають в /var/ftp/ і бачать папки pub і share, щоб запихнути анонімів у pub - змінюємо домашній каталог цього юзера:
pw user mod ftp -d /var/ftp/pub
Моє завдання: user_1 може записувати/читати в share, user_2 лише читати share, user_3 записувати/читати в pub:
chmod -R 755 /var/ftp/share
chmod -R 755 /var/ftp/pub
chown -R user_2:ftp /var/ftp/share
chown -R user_1:ftp /var/ftp/share
chown -R user_3:ftp /var/ftp/pub

 Автозапуск сервісу при старті системи

Відповідно до офіційної документації pfSense, розділу "Startup Script Notes": для автоматичного старту сервісів скрипти потрібно класти в /usr/local/etc/rc.d/ з розширенням .sh і правами на запуск (chmod +x).
При встановленні vsftpd в /usr/local/etc/rc.d/ автоматично створюється демон vsftpd, робимо його копію але з розширенням .sh.
cp /usr/local/etc/rc.d/vsftpd /usr/local/etc/rc.d/vsftpd.sh
Цього все ж виявляється не достатньо.
У файл /etc/rc.conf через веб-інтерфейс прописуємо:

#!/bin/sh
vsftpd_enable="yes"
Запускаємо сервер:
service vsftpd onestart

Немає коментарів:

Дописати коментар