Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:ftp_szerver:vsftpd

< FTP szerver

VsFTPd

  • Szerző: Sallai András
  • Copyright © Sallai András, 2011, 2012, 2013
  • Licenc: GNU Free Documentation License 1.3

Bevezetés

Több Linux terjesztés csak ezt az FTP szervert szállítja az alapértelmezett tárolójában. A nevében a Vs a „Very Secure” szavak kezdőbetűi. Vagyis a VsFTPd szerver készítője szerint nagyon biztonságos.

Telepítés

Telepítsük tárolóból:

apt-get install vsftpd

Vagy szedjük le a weboldaláról a legújabbat:

Beállítások

Debian GNU/Linux

/etc/vsftpd.conf

CentOS

A CentOS-ben van egy külön könyvtár:

/etc/vsftpd/

a következő fájlokkal:

  • ftpusers
  • user_list
  • vsftpd.conf
  • vsftpd_conf_migrate.sh

A beállítások a /etc/vsftpd/vsftpd.conf fájlban.

Névtelen felhasználó

Működés

Az anonymous felhasználók könyvtára:

/srv/ftp/

Az anonymous felhasználó alapértelmezetten csak letölthet. Fel nem.

Hogy fel tudjon tölteni a /etc/vsftpd.conf fájl végére fűzzük a következő két utasítást:

write_enable=YES
anon_upload_enable=YES

Ha az első nincs megadva, akkor az anonymous felhasználó sem tölthet fel.

A beállítások után töltsük újra a szolgáltatás konfigurációs állományát:

invoke-rc.d reload

Az anonymous felhasználók egy incoming nevű könyvtárba tölthetnek fel. Hozzuk ezt létre:

mkdir /srv/ftp/incoming

Tegyük az ftp csoprtba:

chgrp ftp /srv/ftp/incoming

A feltöltéshez a /srv/ftp/incoming könyvtár jogait is meg kell változtatni. Hozzá kell adni a csoportnak írási jogot. Az olvasási jogot szokás szerint pedig tiltjuk:

chmod g+w,g-r /srv/ftp/incoming

Teszt

A beállításokat a tesztelhetjük a szerverünkön vagy egy távoli gépen is. A teszteket valamilyen FTP kliens programmal végezzük. Az ilyen teszteket végezzük egyszerű linuxos felhasználóként, ne rootként!

A szerveren alapértelmezésként fel kerül egy egyszerű ftp kliens, valójában egy parancs, amelynek neve: ftp. Nézzük meg a szerver IP címét. Legyen például a következő: 192.168.5.6.

A teszteléshez készítsünk egy állományt amit majd felölthetünk:

echo "Teszfájl" > id.txt

Ezek után a kapcsolódjunk az FTP szerverünkhöz:

ftp 192.168.5.6

A következőket láthatjuk:

Connected to 192.168.5.6.
220 (vsFTPd 2.3.5)
Name (192.168.5.6:joska):

A program itt várja, hogy beírjunk egy felhasználónevet. Ha csak „Enter”-t nyomunk, akkor joska felhasználó lesz az alapértelmezés. Írjuk be az anonymous nevet:

Name (192.168.5.6:joska): anonymous
331 Please specify the password.
Password:

Az anonymoust beírva, majd „Enter”-t nyomva kéri a jelszót. Nem kell semmit beírnunk, csak egyszerűen nyomjunk megint „Enter”-t. Ehhez hasonlót kell látnunk:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Kapunk egy ftp> várakozási jelet. A „help” parancs segítségével kérdezhetjük le a használható parancsokat. Nekünk négy fontos parancs szükséges. A feltöltő, letöltő és a könyvtár váltó.

  • Letöltő: get
  • Feltöltő: send
  • Könyvtárváltó: cd
  • Kapcsolat megszakítása: bye

Töltsük fel az állományunkat. A feltöltés csak az incoming könyvtárba lehetséges, ezért váltsunk ebbe a könyvtárba:

ftp> cd incoming
250 Directory successfully changed.
ftp> send id.txt
local: id.txt remote: id.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
103 bytes sent in 0.01 secs (7.9 kB/s)
ftp>

Letiltása

A /etc/vsftpd.conf fájlban javaítsuk ki a anonymous_enable értékét YES helyett NO-ra.

sed -i s/anonymous_enable=YES/anonymous_enable=NO/ /etc/vsftpd.conf

Az engedélyezés ugyanígy, csak YES-re állítjuk.

Helyi felhasználók

A helyi felhasználók alapértelmezetten nincsenek engedélyezve. Engedélyezzük:

mcedit /etc/vsftpd.conf
local_enable=YES

Virtuális felhasználók

vsftpd konfigurálása

Az alapbeállításokat feltételezem:

/etc/vsftpd.conf
# Egyedi démonként fut ipv4-en:
listen=YES
 
# Mindenki csak a saját könyvtárában:
chroot_local_user=YES
 
# Helyi felhasználók engedélyezése:
local_enable=YES
 
# A PAM fájl neve az /etc/pam.d könyvtárban:
pam_service_name=vsftpd
 
# Virtuális felhasználók is lehetnek:
guest_enable=YES
 
# A virtuális felhasználók ennek a felhasználónak a nevében férnek a fájlrendszerhez.
guest_username=ftpuser
 
# Az FTP felhasználók root könyvtára:
local_root=/home/virtual-ftp/$USER
user_sub_token=$USER
 
# A feltöltéshez kell ez is:
write_enable=YES

Indítsuk újra a vsftpd démont:

/etc/init.d/vsftpd restart

A PAM modul beállítása

A PAM azonosítást fogjuk átírni, ezért az eredetit elmentjük:

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.Mentes

Az új PAM azonosítás userdb-ből:

/etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

Felhasználók felvétele

mkdir /etc/vsftpd

A következő két felhasználó (joska, tibi) léphet be „titok” jelszóval:

logins.txt
joska
titok
tibi
titok

A jelszavakat Berkeley DB adatbázisba tesszük. Ehhez szükségünk van a db4.8-util csomagra:

apt-get install db4.8-util
db4.8_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
chmod 600 logins.txt

Egyéni beállítások

Fűzzük az alábbi beállítást a /etc/vsftpd.conf fájl végére:

user_config_dir=/etc/vsftpd/users

Ebben a könyvtárban a felhasználóval azonos néven létrehozott fájlban mindenkinek külön beállítása lehet.

Például joska könyvtára és sávszélessége:

echo "local_root=/home/virtual-www/zold.and" > /etc/vsftpd/users/joska
echo "anon_max_rate=20000" >> /etc/vsftpd/users/joska

Ekkor a joska felhasználó könyvtára a /home/virtual-www/zold.and/

MySQL azonosítás

Megjegyzés

Ez a rész Debian GNU/Linux 7.x (és Ubuntu) szerveren nem működik kisebb gondok miatt. A Debian GNU/Linux 6.x még működik. Megoldása kidolgozás alatt.

Szükséges telepítések

Szükségünk van a MySQL szerverre és PAM-nak képesnek kell lenni MySQL-ből azonosítani. Ehhez a következő két csomagot tegyük fel:

apt-get install libpam-mysql mysql-server

Feltételezzük, hogy a vsftpd már fent van.

MySQL teendők

mysql -u root -p

Először biztonsági beállítások:

USE mysql
DELETE FROM USER WHERE USER="";
UPDATE USER SET Password=password("titok") WHERE USER="root";
FLUSH PRIVILEGES;
CREATE DATABASE vsftpd; 
USE vsftpd;
CREATE TABLE accounts (USER CHAR(30) BINARY, pass CHAR(30) BINARY);
 
INSERT INTO accounts (USER, pass) VALUES('jozsi', password('titok'));
 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
INDEX, ALTER ON `vsftpd`.* TO ‘vsftpd’@’localhost’
IDENTIFIED BY ‘titok’; 
 
quit;

Beállítás

Hozzunk létre egy felhasználót akinek a nevében vsftpd eléri a fájlrendszert, ha virtuális felhasználó lép be:

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

Az eredeti vsftpd.conf fájlról készítsünk mentést, majd töröljük a tartalmát, és szerkesszük:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null > /etc/vsftpd.conf
nano /etc/vsftpd.conf

Szerkesszük a vsftpd.conf fájlt az alábbiak szerint:

/etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

A PAM beállítások

/etc/pam.d/vsftpd
auth required pam_mysql.so user=vsftpd passwd=titok host=localhost db=vsftpd table=accounts usercolumn=user passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=titok host=localhost db=vsftpd table=accounts usercolumn=user passwdcolumn=pass crypt=2

SSL

RSA tanúsítvány létrehozása a vsftpd számára:

cd /etc/ssl/private/
openssl req -x509 -nodes -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

Ügyeljünk arra, hogy a private könyvtár csak a Debian alapú rendszerekben létezik. CentOSben például létre kell azt hozni.

A következőkben feltételezem,hogy a vsftpd.pem az etc könyvtárba tettük.

Fűzzük a beállítások végére a /etc/vsftpd/vsftpd.conf fájlban:

#SSL engedélyezése:
ssl_enable=YES
 
# A bejelentkezés SSL-en:
force_local_logins_ssl=YES
 
# Az adatok is SSL-en mennek
force_local_data_ssl=YES
 
# Az RSA tanúsítvány helye
rsa_cert_file=/etc/ssl/private/vsftpd.pem
 
# Esetleg még ezek:
allow_anon_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Dokumentáció

/usr/share/doc/vsftpd
man 5 vsftpd.conf
man 8 vsftpd
man pam.d
man PAM

Linkek

Leírások

  • /usr/share/doc/libpam-mysql/README.Debian
  • /usr/share/doc/libpam-mysql/README.gz
  • /usr/share/doc/vsftpd/
oktatas/linux/ftp_szerver/vsftpd.txt · Utolsó módosítás: 2019/08/16 22:18 szerkesztette: admin