Crmgo Blog

vsftpd

vsftpd

yum install vsftpd chkconfig vsftpd on service vsftpd start Domyślna konfiguracja pozwala na logowanie użytkowników posiadających konta w systemie, przy użyciu ich haseł. ! Domyślnie zalogowania anonimowe są dozwolone! Można zmienić domyślne zachowanie i autoryzować nie tylko użytkowników systemowych, ale i…

vsftpd

yum install vsftpd

chkconfig vsftpd on
service vsftpd start

Domyślna konfiguracja pozwala na logowanie użytkowników posiadających konta w systemie, przy użyciu ich haseł.
! Domyślnie zalogowania anonimowe są dozwolone!

Można zmienić domyślne zachowanie i autoryzować nie tylko użytkowników systemowych, ale także na podstawie specjalnej listy. Formalnie będą oni działać jako przypisany użytkownik, np. ftpuser.
Pamiętajmy, że konfiguracja ta odbywa się przez PAM, w pliku /etc/pam.d/vsftpd
Domyślny plik:

#%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
W przypadku autoryzacji przez bazę db, lepiej utworzyć osobny plik i wskazać go w konfiguracji
/etc/pam.d/vsftpd-db
Wybór konfiguracji PAM poprzez 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

Plik z hasłami będzie znajdował się w /etc/vsftpd/login.db
Format pliku źródłowego (login.txt):
użytkownik1
hasło1
użytkownik2
hasło2
(Nowa linia na końcu. Bez niej może nie działać!)

Generowanie pliku haseł:
db_load -T -t hash -f login.txt /etc/vsftpd/login.db

szczegóły

Przez MySQL
Instalujemy 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

Test połączenia z MySQL, dodanie bazy i użytkownika
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Tworzenie tabeli:
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;

Dodanie użytkownika systemowego
vsftpd:*:1003:1003:User &:/home/vsftpd:/sbin/nologin

Dodawanie użytkownika
#mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES(’testuser’, PASSWORD(’secret’));
quit;

 

_______________________________________________________

problem, z którym się spotkałem:  cannot change directory:/home/username

Domyślnie włączony jest selinux, który powoduje ten problem. Rozwiązanie:

setsebool -P ftp_home_dir 1

Oraz dodanie jednej linii do pliku „vsftpd.conf”:

session_support=YES
service vsftpd restart
Problem wynika z faktu, że vsftpd domyślnie nie korzysta z modułów sesji w PAM.

http://www.opennet.ru/base/net/vsftpd_overview.txt.html szczegółowy artykuł na ten temat

 

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.