vsftp虛擬用戶訪問

CentOS6.4_X64安裝配置vsFTP-2.2.2

一、環境 :

CentOS6.4_X64

Vsftpd-2.2.2

二、安裝軟件及依賴軟件包

1、一般pam和db4默認系統已經安裝,如果沒有安裝如下一併安裝吧

#rpm –qa pam

#rpm –qa db4 ///檢測是否安裝

#yum install vsftpd pam db4 -y ///安裝所需軟件

2、將vsftp配置爲系統服務
#chkconfig --level 35 vsftpd on

3、安裝完成後生成如下配置文件:

[root@localhost vsftpd]# ll /etc/vsftpd/

-rw-------. 1 root root 125 Feb 192013 ftpusers

-rw-------. 1 root root 361 Feb 192013 user_list

-rw-r--r--. 1 root root 4691 Sep 17 16:54 vsftpd.conf

-rwxr--r--. 1 root root 338 Feb 192013 vsftpd_conf_migrate.sh

三、 建立FTP的宿主帳戶

1、建立ftp虛擬宿主帳戶
#useradd vsftpd -s /sbin/nologin

///vsftpd供虛擬帳戶映射的系統真實用戶,不需要登錄shell權限

四、VSFTPD的配置文件

配置vsftpd.conf ///該文件在/etc/vsftpd/
1、備份現有配置文件:

cd /etc/vsftpd/

cp vsftpd.conf vsftpd.conf.bak

2、下面更改配置文件:

[root@localhost vsftpd]# vi vsftpd.conf

anonymous_enable=NO //不允許匿名用戶訪問。

local_enable=YES //設定本地用戶可以訪問。主要是爲虛擬宿主用戶,如果該項目設定爲NO那麼所有虛擬用戶將無法訪問。

write_enable=YES //設定可以進行寫操作。

local_umask=022 //設定上傳後文件的權限掩碼。

idle_session_timeout=600

data_connection_timeout=1200 //設置超時時間
anon_upload_enable=NO //禁止匿名用戶上傳。
anon_mkdir_write_enable=NO //禁止匿名用戶建立目錄。

dirmessage_enable=YES ///設定開啓目錄標語功能。

xferlog_enable=YES ///設定開啓日誌記錄功能。

connect_from_port_20=YES ///設定端口20進行數據連接。
chown_uploads=NO ///設定禁止上傳文件更改宿主。
xferlog_file=/var/log/vsftpd.log ///設定Vsftpd的服務日誌保存路徑。該文件要手動建立,

並且必須給與該vsftpd用戶對日誌文件vsftpd.log的讀寫權限,否則服務將啓動失敗。

xferlog_std_format=YES ///設定日誌使用標準的記錄格式。
nopriv_user=vsftpd ///設定支撐Vsftpd服務的宿主用戶爲手動建立的Vsftpd用戶。

注意,一旦做出更改宿主用戶後,必須注意一起與該服務相關的讀寫文件的讀寫賦權問題。比如日誌文件就必須給與該用戶寫入權限等。

async_abor_enable=YES ///設定支持異步傳輸功能。
ascii_upload_enable=YES
ascii_download_enable=YES ///設定支持ASCII模式的上傳和下載功能。
ftpd_banner=Welcome to blah FTP service.//設定Vsftpd的登陸標語

chroot_local_user=YES

chroot_list_enable=YES ///禁止用戶登出自己的FTP主目錄。

chroot_list_file=/etc/vsftpd/chroot_list ///如果開啓了chroot_list_enable=YES,那麼一定要開啓這個,這條是鎖定登錄用戶只能家目錄的位置。

     注:建立chroot_list文件

touch/etc/vsftp/chroot_list,然後將帳戶輸入一行一個,保存就可以了,如果不需要限制用戶,也可以只建立一個空文件,或者將chroot_list_enable=NO

ls_recurse_enable=NO ///禁止用戶登陸FTP後使用"ls -R"的命令。該命令會對服務器性能造成巨大開銷。如果該項被允許,那麼擋多用戶同時使用該命令時將會對該服務器造成威脅。

listen=YES ///設定該Vsftpd服務工作在StandAlone模式下。順便展開說明一下,所謂StandAlone模式就是該服務擁有自己的守護進程支持,在ps -A命令下我們將可用看到vsftpd的守護進程名。如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,在該模式下 vsftpd將沒有自己的守護進程,而是由超級守護進程Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現。
pam_service_name=vsftpd ///設定PAM服務下Vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。

userlist_enable=YES ///設定userlist_file中的用戶將不得使用FTP。

tcp_wrappers=YES ///設定支持TCP Wrappers。

使用虛擬用戶需要增加以下部分默認中不包含這些設定項目,需要自己手動添加:

guest_enable=YES ///設定啓用虛擬用戶功能。
guest_username=vsftpd ///指定虛擬用戶的宿主用戶。
virtual_use_local_privs=YES ///設定虛擬用戶的權限符合他們的宿主用戶。
user_config_dir=/etc/vsftpd/vconf ///設定虛擬用戶個人Vsftp的配置文件存放路徑。

這個被指定的目錄裏,將存放每個Vsftp虛擬用戶個性的配置文件,注:就是這些配置文件名必須和虛擬用戶名相同。

  pasv_min_port=30000

  pasv_max_port=30100   //指定使用被動模式時打開端口的最小值與最大值

  anon_max_rate=1000000   //匿名用戶最大傳輸速率

  local_max_rate=2000000  //本地用戶最大傳輸速率

  max_clients=30  //限制服務器最大併發連接限制數30

  max_per_ip=1   //限制單個IP地址的最大併發連接爲1

五、創建日誌文件
[root@localhost vsftpd]# touch /var/log/vsftpd.log //日誌文件

[root@localhost vsftpd]# chown vsftpd.vsftpd /var/log/vsftpd.log

六、創建虛擬用戶名單文件

建立了一個虛擬用戶名單文件,用來記錄vsftpd虛擬用戶的用戶名和口令的數據文件,這裏命名爲v_user。爲了目錄清晰,這個名單文件就放置在/etc/vsftpd/vconf/下

[root@localhost vsftpd]# mkdir /etc/vsftpd/vconf/

[root@localhost vsftpd]# touch /etc/vsftpd/vconf/v_user

七、創建虛擬用戶

編輯上面創建的虛擬用戶名單文件v_user,在其中加入用戶的用戶名和口令信息。

格式:奇數行爲用戶名,偶數行是密碼,其他的以此類推

[root@localhost vsftpd]# vi /etc/vsftpd/vconf/v_user

test //用戶名
123123 //密碼

八、生成虛擬用戶數據庫文件

[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db

需要特別注意的是,以後再要添加虛擬用戶的時候,只需要按照上面的格式:“奇數行爲用戶名,偶數行是密碼”的格式將新用戶名和口令添加進虛擬用戶名單文件。如此不會生效的,還要再執行一遍“ db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數據庫文件.db ”的命令使其生效纔可以!

db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db

-T允許應用程序能夠將文本文件轉譯載入進數據庫。由於我們之後是將虛擬用戶的信息以文件方式存儲在文件裏的,爲了讓Vsftpd這個應用程序能夠通過文本來載入用戶數據,必須要使用這個選項。

-t如果指定了選項-T,那麼一定要追跟子選項-t,追加在-T選項後,用來指定轉譯載入的數據庫類型。擴展介紹下,-t可以指定的數據類型有Btree、Hash、Queue和Recon數據庫。這裏,接下來我們需要指定的是Hash型。

九、設置數據庫文件的權限
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vconf/v_user.db
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vconf/v_user

十、修改/etc/pam.d/vsftpd文件,增加以下紅色部分內容

#%PAM-1.0

auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user

account sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user

session optionalpam_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 password-auth

account include password-auth

session requiredpam_loginuid.so

session include password-auth

以上紅色部分兩條是手動添加的,內容是對虛擬用戶的安全和帳戶權限進行驗證。

這裏的auth是指對用戶的用戶名口令進行驗證。
這裏的account是指對用戶的帳戶有哪些權限哪些限制進行驗證。
其後的sufficient表示充分條件,也就是說,一旦在這裏通過了驗證,那麼也就不用經過下面剩下的驗證步驟了。相反,如果沒有通過的話,也不會被系統立即擋之門外,因爲sufficient的失敗不決定整個驗證的失敗,意味着用戶還必須將經歷剩下來的驗證審覈。

再後面的pam_userdb.so表示該條審覈將調用pam_userdb.so這個庫函數進行。
最後的db=/etc/vsftpd/v_user則指定了驗證庫函數將到這個指定的數據庫中調用數據進行驗證。

特別注意: 一定要使用“sufficient” ,按照老版本的做法,這裏使用required ,則會發生用戶認證不通過,報如下錯誤:

[root@localhost vsftpd]# tail /var/log/secure

Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): check pass; user unknown

Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=test r

host=localhost

Sep 17 17:28:20 localhost vsftpd[1387]: pam_succeed_if(vsftpd:auth): error retrieving information about user test

十一、創建用戶的配置文件
1、完全控制配置文件

用戶配置文件的名字要和創建的“虛擬用戶”名字對應

#touch /etc/vsftpd/vconf/test

#vim /etc/vsftpd/vconf/test

local_root=/data/ftp/ //虛擬用戶的個人目錄路徑
anon_world_readable_only=NO

//如果開啓,那麼所有非匿名登陸的用戶名都會被切換成guest_username指定的用戶名

anon_upload_enable=YES //匿名用戶可以上傳

anon_mkdir_write_enable=YES //匿名用戶可以建目錄

anon_other_write_enable=YES //匿名用戶其它的寫權利

local_max_rate=1048576 //本地用戶的最大傳輸速度,單位是Byts/s

 2、只可下載,無其他權限

#vim /etc/vsftpd/vconf/test

local_root=/data/ftp/ //虛擬用戶的個人目錄路徑

write_enable=NO //用戶無寫權限
anon_world_readable_only=NO

anon_upload_enable=NO //匿名用戶不可以上傳

anon_mkdir_write_enable= NO //匿名用戶不可以建目錄

anon_other_write_enable= NO //匿名用戶無寫權利

local_max_rate=1048576 //本地用戶的最大傳輸速度,單位是Byts/s,

十二、建立虛擬用戶目錄
如果不建立虛擬用戶的個人目錄,那麼所有的虛擬用戶登錄後所在的目錄都是同一個目錄下

mkdir /data/ftp/

chown vsftpd.vsftpd /data/ftp/

chmod 700 /data/ftp/ ///如果不設置爲700的權限,則會發生如下錯誤

     “500 OOPS: cannot change directory:/data/ftp”

配置就此完成,如果想增加新的用戶,只要按照上面的第八步、第十一步進行就可以了。

十三、所有配置完後的目錄文件及結構

[root@localhost vsftpd]# ll /etc/vsftpd/

-rw-r--r--. 1 root root 0 Sep 17 16:47 chroot_list

-rw-------. 1 root root 125 Feb 192013 ftpusers

-rw-------. 1 root root 361 Feb 192013 user_list

drwxr-xr-x. 2 root root 4096 Sep 17 18:22 vconf

-rw-r--r-- 1 root root 4689 Sep 18 10:32 vsftpd.conf

-rwxr--r--. 1 root root 338 Feb 192013 vsftpd_conf_migrate.sh

[root@localhost vsftpd]# ll /etc/vsftpd/vconf

-rw-r--r-- 1 root root125 Sep 17 18:22 test

-rw-------. 1 root root 12 Sep 17 16:55 vir_user

-rw-------. 1 root root 12288 Sep 17 16:55 vir_user.db

十四、關於防火牆規則

1、添加下面規則到 iptables
#vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 30000:30100 -j ACCEPT

#iptables-restore < /etc/sysconfig/iptables //重載配置,即時生效

2、SElinux狀態及關閉
輸入命令:
#setenforce 0

註釋:
#getenforce //查詢SElinux狀態

 三種模式:enforcing  //強制模式,開啓狀態

           permissive  //寬容模式,代表運作中

           disabled   //關閉狀態,並沒有實際運作

#setenforce 0|1 //配置狀態

          0:轉成permissive寬容模式

          1:轉成enforcing強制模式

#vim /etc/selinux/config //編輯文件SELINUX=“diskabled”,即時不生效,重啓後生效

參考轉載自 http://blog.51cto.com/luoxj100/1889309

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