安裝並配置基於虛擬用戶的vsftpd

vsftpd用戶分爲:匿名用戶、本地用戶、虛擬用戶

 

虛擬用戶和本地用戶沒有關係,但是所有虛擬用戶會被映射爲一個指定的系統帳號,訪問共享位置就是這系統帳號的家目錄。

各虛擬用戶可以被賦予不同的訪問權限:

      通過匿名用戶權限控制參數進行指定;

虛擬用戶帳號的存儲方式

      文件,編輯文本文件來存儲

              奇數行爲用戶名,奇數行+1爲其對應密碼。

              此文件需要被編碼爲hash格式,這個方式非常費勁,添加一

              次就需要重新hash加密一次

      關係型數據庫的表中:

              即時查詢數據庫完成用戶認證:

                 mysql庫,pam要依賴於pam-mysql模塊

1 安裝軟件

安裝mysql,vsftpd,pam_mysql

image 

pam_mysql屬於epel的,得安裝epel:yum install epel-release

打開它的readme

裏面示例:

image 

認證方式   可選的   模塊認證    帳號密碼

紅色字體是遠程主機上執行的,黑色字體是在本地執行的:

2 配置數據庫

在遠程主機上安裝mariadb:

遠程主機上執行

create database vsftpd;

use vsftpd;

grant select on vsftpd.* TO vsftpd@'192.168.%.%' identified by 'vsftpd';

flush privileges;

image 

 

遠程連接mariadb的主機

mysql -uvsftpd -h192.168.1.108 -p

image

但是centos7裏面不是iptables了,所以需要關閉的是firewalld

systemctl stop firewalld

或者

service firewalld stop

image 

 

本地查看下數據庫。

image

遠程主機建立表

create table user( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL);

image 

 

在本地端可以查到

desc user;

image

 

數據庫內建函數password(‘xxx’)可以將任意數據變成48位的

select password(‘abc’);

image

 

insert into user (name,password) values('tom',password('magedu')),('gh',password('magedu'));

向遠程主機的vsftpd表中插入數據

image

 

在本地查詢

image

3 配置pam

隨便在/etc/pam.d裏建立個文件

image

在裏面輸入內容如下

image 

auth,認證

account,驗證用戶有效與否

required ,可選方式

pam_mysql.so ,模塊認證,相對路徑,/lib64

user=vsftpd,mysql連接用戶

passwd=vsftpd ,mysql連接密碼

host=192.168.1.108 ,mysql連接地址

db=vsftpd ,數據庫名字

table=user ,表名字

usercolumn=name ,用戶列名

passwdcolumn=password ,密碼列名

crypt=0,加密方式

image

4 建立賬號

需要在本地主機上建立一個帳號用來登錄

useradd –s /sbin/nologin –d /var/ftproot vuser

image 

chmod go+rx /var/ftproot

image

請確保/etc/vsftpd.conf中已經啓用了以下選項
anonymous_enable=YES   //匿名用戶
local_enable=YES   //本地用戶
write_enable=YES   //本地用戶寫入
anon_upload_enable=NO   //匿名上傳
anon_mkdir_write_enable=NO   //匿名建立文件夾
chroot_local_user=YES    //是否將用戶限制在主目錄,yes是

然後添加以下項
guest_enable=YES
guest_username=vuser

並確保pam_service_name選項的值如下所示
pam_service_name=vsftpd.mysql

image 

用tail /var/log/secure裏顯示最近登錄系統的日誌

image 

 

現在幾個用戶都是相同權限的,下面要賦予不同的權限。

 

5 配置不同用戶的訪問權限

在/etc/vsftpd/vsftpd.conf

添加user_config_dir=/etc/vsftpd/vuser_config

image

然後在指定位置建立文件夾vuser,並針對每個用戶建立一個文件

image

裏面的內容如下

anon_upload_enable=YES
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

image

測試連接一下,成功

image

-------------------------------------------------------------------------

除了ftp,下列也可以使用

axel,lftpget,wget,curl

 

ftp協議是明文

ftps:SSL,認證過程是安全的

sftp:SSH,

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