19、vftpd基於PAM_MYSQL進行虛擬用戶的認證且每個用戶有自己的獨立目錄及不同的訪問權限

1、vsftp相關介紹
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱

兩個連接:命令連接、數據連接(相對服務器來講)
FTP連接支持兩種模式:主動模式(Port模式)、被動模式(Passive模式)
主動模式:服務器端通過20端口主動連接客戶端,客戶端監聽在與服務器端建立命令連接的端口+1上,服務器工作在TCP/20
被動模式:客戶端使用自己與服務器端建立命令連接的端口+1上連接服務器端的隨機端口,該隨機端口在建立命令連接的時候已發給客戶端

vsftp的用戶有三種類型,分別是匿名用戶、系統用戶、虛擬用戶

/etc/vsftpd/vsftpd.conf主配置文件常用選項
anonymous_enable=NO (是否允許匿名登錄)
local_enable=YES (是否允許本地用戶登錄,設置虛擬賬戶必須設會YES)
write_enable=NO (決定是否允許一些FTP命令去更改文件系統。包括上傳文件,刪除文件,新增目錄,刪除目錄)
anon_upload_enable=NO (是否允許匿名用戶上傳文件,須將write_enable=YES,默認爲YES)
anon_mkdir_write_enable=NO (是否允許虛擬用戶創建文件夾)
xferlog_enable=YES (如果啓用此選項,系統將會維護記錄服務器上傳和下載情況的日誌文件)
xferlog_file=/var/log/xferlog (設置日誌存放位置)
ftpd_banner=Welcome to blah FTP service. (實現用戶的歡迎信息login banners)
chroot_local_user=YES (設置爲NO時,用戶登錄FTP 服務器後具有訪問自己目錄以外的其他文件的權限,設置爲YES時,用戶被鎖定在自己的宿主目錄中)
pam_service_name=vsftpd.mysql (設置 PAM 外掛模塊提供的認證服務所使用的配置文件名)
guest_enable=YES (如果啓用,所有的非匿名用戶登錄時將被視爲遊客,其名字將被映射爲guest_username裏所指定的名字。採用虛擬用戶必須設置該選項)
guest_username=vuser (設置當遊客進入後,其將會被映射的名字。這裏設置爲“vuser”,即虛擬用戶登陸ftp後被映射的本地用戶名)
user_config_dir=/etc/vsftpd/user_config (定義用戶配置文件的目錄,在文件夾中創建虛擬用戶同名的的文件,在文件中定義虛擬用戶的權限)
virtual_use_local_privs=YES (虛擬用戶和本地用戶權限相同。很重要,保證虛擬用戶有和映射的本地用戶相同的權限)

注意:啓用寫入功能時,ftp用戶對相應的本地文件系統也有相應的寫入權限;生效的權限取決於文件系統權限和服務權限的交集

連接數和速率限制
max_clients:最大併發連接數
max_per_ip:每IP可同時發起併發請求
anon_max_rete: 匿名用戶的傳輸速率,單位爲“字節/秒”
local_max_rate:本地用戶傳輸速率,單位爲“字節/秒”

2、vftpd基於PAM_MYSQL進行虛擬用戶的認證且每個用戶有自己的獨立目錄及不同的訪問權限(test1用戶只擁有上傳,下載,新建權限,不允許刪除操作,test2用戶擁有上傳,下載,新建,刪除權限)
2.1 安裝mysql和pam_mysql
rpm -ivh https://mirrors.aliyun.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
yum -y install vsftpd mysql-server mysql-devel pam_mysql
service mysqld start
chkconfig mysqld on

2.2 創建虛擬賬號
mysql
mysql> create database vsftpd;
mysql> grant all on vsftpd. to vsftpd@'localhost' identified by 'vsftpd';
mysql> grant all on vsftpd.
to vsftpd@'192.168.%.%' identified by 'vsftpd';
mysql> grant all on vsftpd. to [email protected] identified by 'vsftpd';
mysql> flush privileges;
mysql> \q
mysql -uvsftpd -p
mysql> use vsftpd;
mysql> CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, password CHAR(48) NOT NULL);
mysql> desc users;
mysql> insert into users(name,password) values('test1',password('test1'));
mysql> insert into users(name,password) values('test2',password('test2'));
mysql> select
from users;
mysql> \q

2.3 創建PAM認證文件
vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.130.61 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.130.61 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

2.4 建立虛擬用戶映射的系統用戶及對應的目錄、子目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
mkdir /var/ftproot/test{1,2}
chown vuser:vuser /var/ftproot/test*
chmod -R go+rx /var/ftproot

2.5 修改vsftpd的配置如下
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_umask=022
xferlog_enable=YES
xferlog_file=/var/log/xferlog
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers_config
#virtual_use_local_privs=YES

2.6 創建賬號差異權限文件
mkdir /etc/vsftpd/vusers_config
vim /etc/vsftpd/vusers_config/test1
local_root=/var/ftproot/test1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO

vim /etc/vsftpd/vusers_config/test2
local_root=/var/ftproot/test2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

2.7 啓動vsftpd並設置開機啓動
service vsftpd start
chkconfig vsftpd on

2.8 登錄FTP進行權限驗證
lftp -u test1,test1 192.168.130.61
lftp -u test2,test2 192.168.130.61

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章