vsftpd企業應用快速部署文檔

系統環境:centos 5.6

vsftpd:2.3.5


vsftpd是UNIX/Linux中非常安全且快速的FTP服務器,目前已經被許多大型站點所採用。vsftpd支持將用戶名和口令保存在數據庫文件或數據庫服務器中。登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄:

匿名登錄:在登錄FTP時使用默認的用戶名,一般是ftp或anonymous;

本地用戶登錄:使用系統用戶登錄,在/etc/passwd中;

虛擬用戶登錄:這是FTP專有用戶,有兩種方式實現虛擬用戶,本地數據文件和數據庫服務器;

FTP虛擬用戶是FTP服務器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大增強了系統的安全。


一、vsftpd安裝

1.安裝必要的支持文件

db4

db4-devel

db4-utils


2.開始安裝vsftpd

(1)源碼包安裝

下載最新穩定版本:vsftpd-2.3.5.tar.gz

tar zxvf vsftpd-2.3.5.tar.gz

cd vsftpd-2.3.5

./configure

make

make install

cd ../


(2)yum自動安裝

 yum install vsftpd


(3)rpm包安裝

rpm -qa |grep vsftpd

rpm -ivh vsftpd-2.0.5-16.el5_5.1.i386.rpm



二、vsftpd配置

1.本地數據文件方式

(1)添加虛擬用戶口令文件

vim /etc/vsftpd/vftpuser.txt

#添加虛擬用戶名和密碼,奇數行爲用戶名,偶數行爲密碼

xiaojiang

cusAVnRfwnK3sYaD

test

qPJN5pyy73hSAqnU

 

(2)生成虛擬用戶口令認證文件

將剛添加的vftpuser.txt虛擬用戶口令文件轉換成系統識別的口令認證文件。

首先查看系統有沒有安裝生成口令認證文件所需的軟件db4-utils。

rpm -qa |grep db4-utils


yum install db4 db4-utils db4-devel


使用db_load命令生成虛擬用戶口令認證文件

db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

chmod 0600 /etc/vsftpd/vftpuser.*


查看生成虛擬用戶口令認證文件

file /etc/vsftpd/vftpuser.db

 

(3)編輯vsftpd的PAM認證文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak

vim /etc/pam.d/vsftpd

#其他都註釋掉,添加下面這兩行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser


****************************

說明:(2014-06-12更新)

在實際工作中,我們使用的系統更多的是64位的,所以,我們在添加上面兩行文件時,參考下面的方式來添加:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser


在此,先檢查文件pam_userdb.so在什麼位置,一般是在:/lib64/security/pam_userdb.so


如果我們按照最開始的方式添加,在登錄ftp用戶時提示錯誤:530 Login incorrect

檢查日誌:tail -f /var/log/secure

發現下面錯誤信息:

Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32

Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM adding faulty module: /lib/security/pam_userdb.so

*************************

 

(4)建立本地映射用戶並設置宿主目錄權限

所有的FTP虛擬用戶需要使用一個系統用戶,這個系統用戶不需要密碼。

mkdir /home/vftpsite

useradd -d /home/vftpsite -s /sbin/nologin vftpuser

chmod 0777 /home/vftpsite

 

(5)配置vsftpd.conf(設置虛擬用戶配置項)

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

#開啓虛擬用戶

guest_enable=YES

#虛擬用戶對應的系統用戶

guest_username=vftpuser 

#PAM認證文件

pam_service_name=vsftpd

 

(6)重啓vsftpd服務

service vsftpd restart


說明:vsftpd上傳下載默認路徑爲/home/vftpsite

 

(7)測試虛擬用戶登錄

ftp 192.168.1.22


(8)爲指定虛擬用戶建立獨立的配置文件

vim /etc/vsftpd/vsftpd.conf

#添加用戶配置目錄支持

user_config_dir=/etc/vsftpd/vusers_dir


爲用戶建立獨立的配置目錄及文件,配置文件名與用戶名同名

mkdir /etc/vsftpd/vusers_dir/

cd /etc/vsftpd/vusers_dir/

vim xiaojiang

輸入以下內容:

local_root=/home/vftpsite

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_umask=022


2.數據庫服務器方式

(1)安裝mysql

具體安裝見另外文檔


(2)建立本地映射用戶並設置宿主目錄權限

mkdir /home/vftpsite

useradd -d /home/vftpsite -s /sbin/nologin vftpuser

chmod 0700 /home/vftpsite

 

(3)配置vsftpd.conf(設置虛擬用戶配置項)

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

#開啓虛擬用戶

guest_enable=YES

#虛擬用戶對應的系統用戶

guest_username=vftpuser 

#PAM認證文件

pam_service_name=vsftpd

 

(4)在MySQL中建立用戶口令數據庫

mysql -u root -p

#建立虛擬用戶數據庫,庫名vftpuser

create database vftpuser;

use vftpuser;

#建立虛擬用戶口令表,表名users

create table users(name char(32) binary,passwd char(48) binary);

#建立兩個虛擬用戶,bobyuan和markwang

insert into users (name,passwd) values ('xiaojiang','cusAVnRfwnK3sYaD'); 

insert into users (name,passwd) values ('test','qPJN5pyy73hSAqnU');



#授權vftpuser這個賬號可以讀取vftpuser數據庫的user表

grant select on vftpuser.users to vftpuser@localhost identified by 'AW978jdIfrDc';

flush privileges;


#驗證vftpuser用戶是否設置成功


注:

1.虛擬用戶密碼經過MySQL加密,加密後的密碼pam-mysql不能識別(MySQL和pam-mysql兼容性有些問題),因此使用明文保存密碼。

2.批量添加用戶

vi vftpuser.txt

#添加用戶名和密碼,注意字段之間要用Tab鍵隔開。

xiaojiang cusAVnRfwnK3sYaD

test qPJN5pyy73hSAqnU


use vftpuser;

load data local infile "/vftpuser.txt" into table users;

flush privileges;

 

(5)編譯MySQL的PAM認證模塊

查看/lib/security目錄下有沒有MySQL對應的PAM模塊。

ll /lib/security/pam_mysql*


tar -zxvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr/local/webserver/mysql/ --with-pam-mods-dir=/lib/security/

make

make install

 

(6)編輯vsftpd的PAM認證文件

vim /etc/pam.d/vsftpd

其他都註釋掉,添加下面這兩行:

auth     required   /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1

account  required   /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1


說明:

crypt=0:表示口令使用明文方式保存在數據庫中

crypt=1:表示口令使用UNIX的DES加密方式加密後保存在數據庫中

crypt=2:表示口令使用MySQL的password()函數加密後保存在數據庫中

crypt=3:表示口令使用MD5散列值的方式保存在數據庫中

 

(7)重啓vsftpd服務

service vsftpd restart


說明:vsftpd上傳下載默認路徑爲/home/vftpsite

 

(8)測試虛擬用戶登錄

ftp 192.168.1.22


三、virtual_use_local_privs參數說明

當virtual_use_local_privs=YES時,虛擬用戶和本地用戶有相同的權限;

 

當virtual_use_local_privs=NO時,虛擬用戶和匿名用戶有相同的權限,默認是NO。

 

當virtual_use_local_privs=YES,write_enable=YES時,虛擬用戶具有寫權限(上傳、下載、刪除、重命名)。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES時,虛擬用戶不能瀏覽目錄,只能上傳文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO時,虛擬用戶只能下載文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=YES時,虛擬用戶只能上傳和下載文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_mkdir_write_enable=YES時,虛擬用戶只能下載文件和創建文件夾,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES時,虛擬用戶只能下載、刪除和重命名文件,無其他權限。

 

四、虛擬用戶配置文件

1. 所有虛擬用戶使用統一配置

vim /etc/vsftpd/vsftpd.conf

添加如下內容:

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

#可以下載

anon_world_readable_only=NO

#不能上傳,默認爲no

anon_upload_enable=NO

#不能新建文件夾

anon_mkdir_write_enable=NO

#不能刪除和重命名文件

anon_other_write_enable=NO

ftpd_banner=Welcome to onbing's FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000

 

2. 各個虛擬用戶使用自身配置

vim /etc/vsftpd/vsftpd.conf

添加內容如下:

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

#指定虛擬用戶配置文件路徑

user_config_dir=/etc/vsftpd/vsftpd_user_conf

ftpd_banner=Welcome to onbing's FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000



#新建虛擬用戶配置文件路徑

mkdir /etc/vsftpd/vsftpd_user_conf


#編輯xiaojiang的配置文件

vi /etc/vsftpd/vsftpd_user_conf/xiaojiang

添加如下內容:

#只開放下載權限。注意這個地方千萬不能寫成YES,否則xiaojiang將不能列出文件和目錄

anon_world_readable_only=NO 


#編輯test的配置文件

vi /etc/vsftpd/vsftpd_user_conf/test

添加內容如下:

#開放寫權限

write_enable=YES

#開放下載權限

anon_world_readable_only=NO

#開放上傳權限

anon_upload_enable=YES

#開放創建目錄的權限

anon_mkdir_write_enable=YES

#開放刪除和重命名的權限

anon_other_write_enable=YES


《全文完》


說明:

1.具體企業應用(略)

2.本文參考文檔:《Vsftpd FTP服務器-虛擬用戶(mysql)和本地用戶同時驗證》

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