VSFTPD +SSL telepítése, beállítása

A bejegyzésből megtudhatod, hogy hogyan telepítsd és konfiguráld a vsftpd alkalmazás szervert. A leírás lépésről-lépésre végigvezet a beállításokon.

VSFTPD Daemon telepítése

A leírás Ubuntu 18.04 illetve Debian rendszerre vonatkozik. Az egyes disztribúciók konfigurációs állományai eltérő helyen lehetnek. Első lépésben frissítsük fel a rendszerünket.

sudo apt update && sudo apt upgrade -y

Majd telepítsük fel a szükséges csomagokat

apt install vsftpd libpam-pwdfile

Majd rögzön állítsuk is le a szolgáltatást

sudo /etc/init.d/vsftpd stop

A konfigurációs állományokat mentsük el

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.ORIG && sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.ORIG

 

Konfigurálás

Felhasználó létrehozása

A célünk az, hogy a szerver támogassa a virtuális kliensek kezelését, és csakis az ily módon megadott felhasználók tudjanak csatlakozni a szolgáltatáshoz. A kiszolgálást ssl titkosítással biztosítjuk, a virtuális felhasználók hitelesítését a PAM végzi, az általunk megadott fájlból olvassa fel a felhasználók nevét és jelszavát. A jelszó titkosított módon kerül letárolásra. Első lépésben hozzuk létre azt a felhasználót, akinek a nevében futnak a virtuális felhasználók és maga a szolgáltatásunk is.

sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Tanusítványok beszerzése

Szükségünk lesz tanúsítványra is. A Let’s encrypt ingyenes szolgáltatását fogjuk használni. Töltsük le a szükséges állományokat, a git tárolóból, ehhez szükségünk lesz a megfelelő szoftverre

sudo apt-get install git -y

Majd adjuk ki a következő parancsot:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

A tanúsítvány beszerzéséhez a következőket hajtsuk végre. Az így legenerált tanusítványokkal együtt az apache webserver config állománya is létrejön. Jelen állás szerint webes szolgáltatást is akarok, tehát számomra ez a megfelelő parancs:

cd /opt/letsencrypt
sudo ./letsencrypt-auto --apache -d pelda.domain

A tanúsítványok a

/etc/letsencrypt/live/

könyvtár alatt jönnek létre

ls /etc/letsencrypt/liva/pelda.domain

az alábbi tartalommal

cert.pem chain.pem fullchain.pem privkey.pem

Az legenerált tanúsítványok 90 napra kerülnek kibocsájtásra. Érdemes automatizáltan elküldeni a hosszabítási kérelmet, így folyamatosan teljesértékűen tudjuk üzemeltetni a szolgáltatásunkat. Ehhez tegyük be cron ütemezésbe a szükséges parancsot

sudo crontab -e

és

@monthly /opt/letsencrypt/letsencrypt-auto certonly --apache --renew-by-default -d pelda.domain

 

Konfigurációs állományok létrehozása

Hozzuk létre a saját conf fájlunkat

sudo nano /etc/vsftpd.conf

Majd másoljuk be az alábbi tartalmat

# Server standalone/inet indítása az interfészeken
listen=YES
listen_ipv6=NO
# Anonim felhasználás tiltva
anonymous_enable=NO
# Helyi felhasználók engedélyezése
local_enable=YES
# Helyi felhasználók írhatják a tárhelyet
write_enable=YES
# felhasználói és csoport jogok beállítása a létrehozott állományokon
local_umask=022
# A vsftpd daemon kinek a nevében fut...
nopriv_user=vsftpd
virtual_use_local_privs=YES
# Virtuális felhasználók engedélyezése
guest_enable=YES
user_sub_token=$USER
# Virtuális felhasználók gyökérkönyvtára
local_root=/home/vsftpd/vsftpd/$USER
# Csak a saját gyökerükbe legyenek zárva
chroot_local_user=YES
# Írhatnak a gyökérbe
allow_writeable_chroot=YES
# Rejtett állományok elérése
hide_ids=YES
# Virtuális felhasználók, mint....
guest_username=vsftpd
# Helyi idő használata
use_localtime=YES
dirmessage_enable=YES
# Logolás engedélyezése
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log


# Passív mód beállításai
pasv_enable=YES
port_enable=YES
pasv_min_port=40000
pasv_max_port=44000
pasv_address=<pelda.domain ip címe>
pasv_addr_resolve=NO
connect_from_port_20=YES
utf8_filesystem=YES


# TLS szekció
rsa_cert_file=/etc/letsencrypt/live/<pelda.domain>/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/<pelda.domain>/privkey.pem
ssl_enable=YES
allow_anon_ssl=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
# Protokoll szintek engedélyezése
ssl_tlsv1=YES
# vátoztasd, ha szeretnéd...
ssl_sslv2=YES
# változtasd, ha szeretnéd...
ssl_sslv3=YES
# A bejelentkezés SSL-en:
force_local_logins_ssl=YES
# Az adatok is SSL-en mennek
force_local_data_ssl=YES

A virtuális felhasználókat tartalmazó állomány a /etc/vsftpd könyvtárba kerül, ezért azt létre kell hoznunk, majd konfiguráljuk a PAM -ot.

sudo mkdir /etc/vsftpd && sudo nano /etc/pam.d/vsftpd

Másoljuk be az alábbi tartalmat

auth required /lib/security/pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required /lib/security/pam_permit.so

Hozzuk létre az első virtuális felhasználóinkat

sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2

 

Felhasználói könyvtárak létrehozása, szolgáltatás indítás

A felhasználók könyvtárai a /home/vsftpd alkönyvtárban lesznek. A konfigurációnk szerint a saját könyvtárából senki nem lát ki, oda viszont korlátozás nélkül írhatnak és olvshatnak. A könyvtárneveknek meg kell egyezniük a virtuális felhasználóink neveivel. Hozzuk létre a könyvtárakat

sudo mkdir /home/vsftpd/user1 /home/vsftpd/user2

Állítsuk be a jogosultságokat

sudo chown vsftpd.nogroup -R /home/vsftpd && sudo chmod 775 -R /home/vsftpd

Végezetül nincs más dolgunk, mint elindítani a szolgáltatást

sudo /etc/init.d/vsftpd start

Elkészültünk, ha mindent jól csináltunk, a szerverünk üzemkész. a tárhelyre másolt állományok írási jogai 755 formátumúak lesznek, mivel az umas=022 -vel kerültek deklarálásra. A tulajdonos a vsftpd lesz, nogroup csoporttagsággal.

 

Kiegészíéts

Amennyiben azt szeretnénk, hogy minden felhasználóra vonatkozóan egyedileg szabjuk meg a gyökérkönyvtár helyét a szerveren, egészítsük ki a vsftpd.conf konfigurációt, a következő sorral:

 

user_config_dir=/etc/vsftpd

A könyvtárba hozzuk létre a felhasználó nevével megegyező fájlt és helyezzük el az egyedi konfigurációkat. Ez esetben a kívánt könyvtárra való hivatkozást.

 

local_root=/.....