天天看點

Vsftp 伺服器搭建

一、說明    

 vsftp提供3種遠端的登入方式:

1、匿名登入方式

 就是不需要使用者名,密碼。就能登入到伺服器電腦裡面

2、本地使用者方式

 需要帳戶名和密碼才能登入。而且,這個帳戶名和密碼,都是在你linux系統裡面,已經有的使用者。

3、虛拟使用者方式

 同樣需要使用者名和密碼才能登入。但是和上面的差別就是,這個使用者名和密碼,在你linux系統中是沒有的(沒有該使用者帳号)

二、安裝

使用yum install    vsftpd 指令安裝

安裝後/etc/vsftpd 目錄下面一般有下面的幾個檔案

1、/etc/vsftpd/vsftpd.conf  主配置檔案

2、/usr/sbin/vsftpd 啟動腳本

3、/etc/pam.d/vsftpd PAM認證檔案

4、/etc/vsftpd/user_list 禁止或允許使用vsftpd的使用者清單檔案。這個檔案中指定的使用者預設情況(即在/etc/vsftpd /vsftpd.conf中設定userlist_deny=YES)下也不能通路FTP伺服器,在設定了userlist_deny=NO時,僅允許 user_list中指定的使用者通路FTP伺服器。

5、/etc/vsftpd/ftpusers 禁止使用vsftpd的使用者清單檔案。記錄不允許通路FTP伺服器的使用者名單,管理者可以把一些對系統安全有威脅的使用者賬号記錄在此檔案中,以免使用者從FTP登入後獲得大于上傳下載下傳操作的權利,而對系統造成損壞。

匿名使用者的登入目錄下也有如下所示的幾個檔案

1、/var/ftp 匿名使用者主目錄;本地使用者主目錄為:/home/使用者主目錄,即登入後進入自己家目錄

2、/var/ftp/pub 匿名使用者的下載下傳目錄,此目錄需賦權根chmod 1777 pub(1為特殊權限,使上載後無法删除)

日志復原目錄下,有一個設定日志目錄的檔案

1、/etc/logrotate.d/vsftpd.log Vsftpd的日志檔案

三、啟動、重新開機、加為系統服務

1、service vsftpd start 啟動

2、service vsftpd stop 關閉

3、service vsftpd restart 重新開機

4、chkconfig --add vsftpd 加為服務

5、chkconfig vsftpd on 設為開機啟動

四、配置主配置檔案

cd /etc/vsftpd,下面的是現網的配置

[root@localhost vsftpd]# grep -v "#" vsftpd.conf 

anonymous_enable=NO #不允許匿名通路

local_enable=YES#允許本地使用者登入

write_enable=YES#允許本地使用者對FTP伺服器檔案具有寫權限

local_umask=022#使用ftp本地檔案權限

anon_upload_enable=NO#禁止匿名使用者上傳檔案

anon_mkdir_write_enable=NO#禁止匿名使用者建立檔案夾

xferlog_enable=YES#讓系統自動維護上傳和下載下傳的日志檔案

xferlog_file=/var/log/xferlog#日志檔案路徑

xferlog_std_format=YES#使用标準的日志格式

idle_session_timeout=3600#表示空閑的使用者會話中斷時間為600秒

data_connection_timeout=3600#設定資料連接配接逾時時間為3600秒

ftpd_banner=Welcome to MY FTP service.#登入服務後的歡迎資訊

chroot_local_user=YES#定義所有使用者都被限制在主目錄下

chroot_list_enable=YES#定義限制在家目錄的使用者名單

chroot_list_file=/etc/vsftpd/user_list#限制使用者家目錄檔案所在的路徑

listen_port=6162#控制連接配接端口,系統預設是21

listen=YES#vsftpd以獨立方式運作

pam_service_name=vsftpd#驗證方式

userlist_enable=YES#是否抑制userlist裡使用者登入伺服器

userlist_deny=YES#不允許user_list檔案中的使用者登入ftp伺服器

userlist_file=/etc/vsftpd/ftpusers#user_list_file檔案路徑

tcp_wrappers=YES#啟用 tcp_wrappers做為主機的通路控制方式

pasv_enable=YES#啟用被動模式

port_enable=NO#關閉主動模式

pasv_min_port=30000#被動連接配接最小端口

pasv_max_port=30999#被動連接配接最大端口

port_promiscuous=yes#關閉port模式安全檢查

pasv_addr_resolve=yes#可以在pasv模式使用主機名

listen_address=172.30.65.119#監聽位址

pasv_promiscuous=yes#關閉pasv模式安全檢查

reverse_lookup_enable=NO#關閉反向DNS解析,該項要注意,使用移動的網絡不關閉改項可能會報錯

五、測試伺服器登入和傳輸檔案情況

mkdir /test

useradd test -d /test -s /bin/bash

passwd test

chown test:test /test

service vsftpd restart

登入測試,如下所示:

[root@192 ~]# ftp 192.168.10.102 6162

Connected to 192.168.10.102(192.168.10.102).

220 Welcome to MY FTP service.

Name (192.168.10.102:root): test

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ?

Commands may be abbreviated.  Commands are:

!                 debug                mdir          sendport  site

$                dir              mget                  put            size

account             disconnect        mkdir                 pwd           status

append              exit            mls            quit           struct

ascii          form                   mode                 quote                 system

bell            get            modtime           recv           sunique

binary                glob           mput                  reget                  tenex

bye            hash                   newer                rstatus              tick

case          help           nmap                 rhelp                  trace

cd              idle            nlist           rename             type

cdup                   image                ntrans                reset                  user

chmod               lcd             open                   restart               umask

close                  ls                prompt              rmdir                  verbose

cr               macdef              passive              runique              ?

delete                mdelete            proxy                  send

ftp> ls

227 Entering Passive Mode(192,168,10,102,118,20).

150 Here comes the directory listing.

-rw-r--r--    1 506     507           286 Jul 12 05:21 梅梅.txt

-rw-r--r--    1 506     507         12023 Jul 12 05:25 腳本檔案.docx

226 Directory send OK.

ftp> get 梅梅.txt

local: 梅梅.txt remote: 梅梅.txt

227 Entering Passive Mode(192,168,10,102,119,139).

150 Opening BINARY mode data connection for梅梅.txt (286 bytes).

226 Transfer complete.

286 bytes received in 0.000878 secs (325.74Kbytes/sec)

227 Entering Passive Mode(192,168,10,102,118,79).

ftp> !dir

anaconda-ks.cfg   check_mem.sh         install.log             latin-numbers  myfile2.xml    nginx-1.10.1.tar.gz  quotas.sorted sales.sorted  test.txt  梅梅.txt

check_filehandle  example.txt       install.log.syslog  myapp.data          nginx-1.10.1 quotas                       sales         testfile            third.sh

ftp> put nginx-1.10.1.tar.gz

local: nginx-1.10.1.tar.gz remote:nginx-1.10.1.tar.gz

227 Entering Passive Mode(192,168,10,102,120,110).

150 Ok to send data.

909077 bytes sent in 0.0828 secs (10982.64Kbytes/sec)

六、測試使用者是否可以切換出主目錄

1、所有使用者都被限制在其主目錄下,使用chroot_list_file指定的使用者清單,這些使用者作為“例外”,不受限制。

chroot_local_user=YES#禁止使用者切換到主目錄以外的目錄

chroot_list_enable=YES#啟用限制使用者的清單

chroot_list_file=/etc/vsftpd/user_list#限制使用者清單的檔案路徑

[root@192 vsftpd]# grep -v "#"user_list #把test使用者加入限制名單中

root

test

可以看到test使用者可以切換到自己的主目錄以外的目錄。除了清單裡的使用者,别的使用者不能切換到自己主目錄以外的目錄。如下所示:

ftp> cd /home

250 Directory successfully changed.

227 Entering Passive Mode(192,168,10,102,119,22).

drwx------    4 505     506          4096 Jul 12 05:14hello

drwx------    4 501     502          4096 Jul 10 23:15huaxia

drwx------  19 500      501          4096 Jul 11 22:04 nagios

drwx------    5 502     503          4096 Jul 12 00:05 tom

drwx------    5 503     504          4096 Jul 12 05:06vftp

ftp> cd /

2、所有使用者都被限制在其主目錄下,不使用chroot_list_file指定的使用者清單,沒有例外。

chroot_list_enable=NO#不啟用限制使用者的清單

可以看到所有使用者都不可以切換到自己的主目錄以外的目錄。不使用chroot_list_file指定的使用者清單,沒有任何例外使用者。如下所示:

550 Failed to change directory.

3、所有使用者都不被限制在其主目錄下,使用chroot_list_file指定的使用者清單,這些使用者作為例外,受到限制。

chroot_local_user=NO#允許使用者切換到主目錄以外的目錄

可以看到所有使用者都可以切換到自己的主目錄以外的目錄。chroot_list_file指定的使用者清單裡的使用者作為例外,不能切換到主目錄以外的目錄。如下所示:

Name (192.168.10.102:root): hello#使用hello使用者登入,hello使用者不在user_list清單中

ftp> cd /usr

227 Entering Passive Mode(192,168,10,102,121,19).

dr-xr-xr-x    2 0       0           40960 Jul 11 22:41 bin

drwxr-xr-x    2 0       0            4096 Sep 23  2011 etc

drwxr-xr-x    2 0       0            4096 Sep 23  2011 games

drwxr-xr-x  61 0        0            4096 Jul 11 22:12 include

dr-xr-xr-x  27 0        0            4096 Oct 17  2015 lib

dr-xr-xr-x 114 0        0           61440 Jul 11 22:41 lib64

drwxr-xr-x  26 0        0           12288 Jul 11 22:41 libexec

drwxr-xr-x  14 0        0            4096 Oct 17  2015 local

dr-xr-xr-x    2 0       0           12288 Jul 11 22:41sbin

drwxr-xr-x 227 0        0           12288 Oct 17  2015 share

drwxr-xr-x    4 0       0            4096 Oct 17  2015 src

lrwxrwxrwx    1 0       0              10 Oct 17  2015 tmp -> ../var/tmp

Name (192.168.10.102:root): test#使用test使用者登入

ftp> cd /dev

ftp> cd /opt

4、所有使用者都不被限制在其主目錄下,不使用chroot_list_file指定的使用者清單,沒有例外。

可以看到所有使用者都可以切換到自己的主目錄以外的目錄。

Name (192.168.10.102:root): hello#使用hello使用者登入,hello使用者不在user_list清單中

227 Entering Passive Mode(192,168,10,102,119,108).

drwx------    2 0       0           16384 Oct 17  2015 lost+found

drwxr-xr-x    2 0       0            4096 Nov 22  2013 rh

ftp> bye

221 Goodbye.

227 Entering Passive Mode(192,168,10,102,118,148).

dr-xr-xr-x    2 0       0           40960 Jul 11 22:41 bin

dr-xr-xr-x  27 0        0            4096 Oct 17 2015 lib

七、添加虛拟使用者

1、添加虛拟使用者密碼檔案

cd /etc/vsftpd

vim vuser.txt

添加虛拟使用者名和密碼,一行使用者名,一行密碼,以此類推。奇數行為使用者名,偶數行為密碼。

test01#使用者名

123456#密碼

test02#使用者名

2.、生成虛拟使用者密碼認證檔案,将剛添加的vuser.txt虛拟使用者密碼檔案轉換成系統識别的密碼認證檔案。

Yum install db4 db4-utils

 db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db#vuser.db是認證生成的資料庫檔案

3、編輯vsftpd的PAM認證檔案

vim /etc/pam.d/vsftpd

将裡面其他的都注釋掉,添加下面這兩行:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser#db路徑不用寫成/etc/vsftpd/vuser.db

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser#db路徑不用寫成/etc/vsftpd/vuser.db

注意:64位的系統要把/lib/改成/lib64這樣認證時不會報錯,必須把原先的認證方式注釋掉,因為使用的認證子產品已經改變。

4、建立本地映射使用者并設定宿主目錄權限

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

mkdir /myftp

useradd myftp -d /myftp -s /bin/false

5、配置vsftpd.conf(設定虛拟使用者配置項)

grep -v "#" vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

idle_session_timeout=3600

data_connection_timeout=3600

ftpd_banner=Welcome to MY FTP service.

chroot_local_user=NO

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/user_list

listen_port=6162

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/ftpusers

tcp_wrappers=YES

port_enable=NO

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999

port_promiscuous=yes

pasv_addr_resolve=yes

pasv_promiscuous=yes

listen_address=172.30.65.119

user_config_dir=/etc/vsftpd/vuser_conf#新加的虛拟使用者配置檔案存放目錄

6、進入虛拟使用者配置檔案目錄,配置虛拟使用者配置檔案

cd /etc/vsftpd/vuser_conf

vim test01#注意虛拟使用者配置檔案名稱必須與在vuser.txt添加的兩個使用者名相同

guest_enable=yes#開啟虛拟使用者

local_root=/myftp#虛拟使用者映射的目錄

guest_username=myftp#虛拟使用者對應的系統使用者

anon_world_readable_only=no#關閉匿名全局浏覽

write_enable=yes#全局寫入權限開啟

anon_mkdir_write_enable=yes#允許匿名使用者建立目錄

anon_other_write_enable=yes#允許匿名使用者具有建立目錄,上傳之外的權限

anon_upload_enable=yes#匿名上傳開啟

vim test02#注意虛拟使用者配置檔案名稱必須與在vuser.txt添加的兩個使用者名相同

local_root=/myftp/test02#虛拟使用者映射的目錄

7、測試使用虛拟使用者帳号登入

注意:一定要先把/myftp,虛拟使用者映射目錄的所有權限,改成虛拟使用者對應的系統使用者myftp,不然會封包件無法傳輸的錯誤。

chown -R myftp:myftp /myftp

[root@localhost ~]# ftp 172.30.65.119 6162

Connected to 172.30.65.119 (172.30.65.119).

Name (172.30.65.119:root): test01#使用test01登入

anaconda-ks.cfg   example.txt       latin-numbers  nginx-1.10.1   quotas.sorted  testfile  梅梅.txt

check_filehandle  install.log       myapp.data     nginx-1.10.1.tar.gz  sales   test.txt

check_mem.sh   install.log.syslog  myfile2.xml    quotas    sales.sorted  third.sh

ftp> dir

227 Entering Passive Mode (172,30,65,119,118,178).

-rw-------    1 507      508          2708 Jul 13 17:29 check_mem.sh

drwxr-xr-x    2 507      508          4096 Jul 13 17:22 test02

-rw-------    1 507      508           286 Jul 13 17:32 梅梅.txt

ftp> put check_mem.sh#上傳正常

local: check_mem.sh remote: check_mem.sh

227 Entering Passive Mode (172,30,65,119,120,52).

2708 bytes sent in 0.03 secs (90.17 Kbytes/sec)

ftp> get 梅梅.txt#下載下傳正常

local: 梅梅.txt remote: 梅梅.txt

227 Entering Passive Mode (172,30,65,119,118,185).

150 Opening BINARY mode data connection for 梅梅.txt (286 bytes).

286 bytes received in 0.000122 secs (2344.26 Kbytes/sec)

Name (172.30.65.119:root): test02#使用test02登入

227 Entering Passive Mode (172,30,65,119,120,223).

ftp> pwd

257 "/"

ftp> put nginx-1.10.1.tar.gz#上傳正常

local: nginx-1.10.1.tar.gz remote: nginx-1.10.1.tar.gz

227 Entering Passive Mode (172,30,65,119,121,6).

909077 bytes sent in 0.127 secs (7164.86 Kbytes/sec)

ftp> get openssh-6.8p1.tar.gz#下載下傳正常

local: openssh-6.8p1.tar.gz remote: openssh-6.8p1.tar.gz

227 Entering Passive Mode (172,30,65,119,118,225).

150 Opening BINARY mode data connection for openssh-6.8p1.tar.gz (1475953 bytes).

1475953 bytes received in 0.116 secs (12705.00 Kbytes/sec)

八、注意事項

1、如主機啟用了防火牆,需在防火牆中放通ftp控制端口和資料端口。

2、測試過程中,如有報錯。可根據報錯資訊,到網上查詢相應的資料。

3、關閉機器上的selinux

本文轉自伺服器運維部落格51CTO部落格,原文連結http://blog.51cto.com/shamereedwine/1828354如需轉載請自行聯系原作者

neijiade10000