Crmgo Blog

vsftpd

vsftpd

yum install vsftpd chkconfig vsftpd on service vsftpd start Ve výchozím nastavení bude umožňovat přístup uživatelům, kteří mají účty v systému, pomocí jejich hesel. ! Ve výchozím nastavení jsou povoleny anonymní přihlášení! Lze změnit výchozí chování a autorizovat nejen systémové uživatele, ale i…

vsftpd

yum install vsftpd

chkconfig vsftpd on
service vsftpd start

Ve výchozím nastavení bude povolovat přihlášení uživatelům, kteří mají účty v systému, pomocí jejich hesel.
! Ve výchozím nastavení jsou povoleny anonymní přihlášení!

Lze změnit výchozí chování a autorizovat nejen systémové uživatele, ale i podle speciálního seznamu. Formálně pak budou pracovat pod zadaným uživatelem, například ftpuser.
Nezapomeňte, že toto se nastavuje přes PAM, v souboru /etc/pam.d/vsftpd
Výchozí soubor:

#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so

BDB
Pro autorizaci přes databázi db je lepší vytvořit samostatný soubor a ten zadat v konfiguraci
/etc/pam.d/vsftpd-db
Výběr PAM konfigurace přes pam_service_name=vsftpd-db

session optional pam_keyinit.so force revoke
auth required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login

Při tomto nastavení bude soubor s hesly umístěn v /etc/vsftpd/login.db
Formát původního souboru (login.txt):
uzivatel1
heslo1
uzivatel2
heslo2
(konec řádku na konci. Bez něj to nemusí fungovat!)

Generování souboru s hesly:
db_load -T -t hash -f login.txt /etc/vsftpd/login.db

podrobněji

Přes MySQL
nainstalujeme pam_mysql

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

Otestovat funkčnost MySQL, přidat databázi a uživatele
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Vytvořit tabulku:
CREATE TABLE 'accounts' ( 'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 'username' VARCHAR(30) NOT NULL , 'pass' VARCHAR( 50 ) NOT NULL , UNIQUE ( 'username' ) ) ENGINE = MYISAM ;
quit;

Přidat systémového uživatele
vsftpd:*:1003:1003:User &:/home/vsftpd:/sbin/nologin

Přidání uživatele
#mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES(’testuser’, PASSWORD(’secret’));
quit;

 

_______________________________________________________

problém, který se u mě vyskytl: cannot change directory:/home/username

Výchozí nastavení má zapnutý SELinux, který způsobuje tento problém. Řešení je následující:

setsebool -P ftp_home_dir 1

A přidáním jednoho řádku do „vsftpd.conf“:

session_support=YES
service vsftpd restart
Problém vzniká proto, že vsftpd ve výchozím nastavení neovlivňuje moduly session služby v PAM.

http://www.opennet.ru/base/net/vsftpd_overview.txt.html podrobný článek na toto téma

 

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.