Linux vsftpd搭建

FTP全名是FileTransfer Protocol(文件傳輸協議) C/S架構linux

簡介:數據庫

下面是關於FTP這個服務的屬性vim

1)FTP服務相關軟件windows

   IISServ-U Vsftpd proftpd pureftpd服務器

2FTP客戶端相關軟件網絡

   ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp架構

3VSFTP的守護進程併發

   /usr/sbin/vsftpdapp

4FTP的啓動腳本tcp

   /etc/init.d/vsftpd

5FTP的端口

   TCP協議的2021端口與客戶端進行通訊

      20用於創建數據鏈接,傳輸文件數據。(數據端口)

      21用於創建控制鏈接,並傳輸FTP控制命令。(命令端口)

 (6)用戶控制列表文件

/etc/vsftpd/ftpusers 文件中的用戶禁止登陸FTP服務器(黑名單)

/etc/vsftpd/user_list 文件中的用戶可能被禁止或容許登陸FTP服務器,具體看vsftpd.conf的設置

7)工做模式  

      主動模式:

           客戶端想服務端21端口發送創建鏈接請求,須要傳輸數據時,客戶端會經過port命令告訴服務器本身監聽的端口,服務器會主動經過20端口與客戶端創建數據鏈接。

 

     

     被動模式

           客戶端想服務端21端口發送創建鏈接請求,須要傳輸數據時,

服務器以pasv命令告訴客戶我打開了某個端口(非20端口),你來鏈接我,客戶端會像服務器的非20端口創建數據鏈接

  

 8)根據傳輸文件是否進行字符轉換分爲:

    文本模式(又稱爲ASCII)以文本序列傳輸數據,用的較多

    二進制模式(又稱爲Binary模式)以二進制序列傳輸數據

 

 

主配置文件

/etc/vsftpd/vsftpd.conf 

 

 

 

搭建FTP服務:

  1、搭建yum倉庫

   1mount/dev/cdrom /mnt

   2cat /etc/yum.repos.d/rhel-debuginfo.repo

   [rhel-Server]

   name=Red Hat Enterprise Server

   baseurl=file:///mnt/Server

   enabled=1

   gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

   2、安裝

      yum-y install vsftpd*

 

配置選項講解

實驗1

1.  建立測試文件

2.  匿名用戶ftp對/var/ftp/pub有寫入權限

3.  容許匿名用戶瀏覽

4.  容許用戶(匿名,本地,虛擬)有上傳權限

5.  容許匿名用戶有上傳權限

6.  容許匿名用戶有上傳文件夾權限

7.  禁止匿名用戶有刪除,覆蓋等權限

 

(1)查看ftp的默認根路徑,默認是有一個pub目錄(默認的跟目錄),

    [root@Centos2~]# ls /var/ftp/

   pub

2)備份配置文件

cd /etc/vsftpd/vsftpd.confg

   cp vsftpd.conf vsftpd.bak

   vim vsftpd.conf

   內容以下

write_enable=YES

anon_umask=022

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=NO 是否容許匿名用戶有其餘寫入權(更名,刪除,覆蓋)

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

3)啓動服務

   service vsftpd start

(4)改變根目錄的屬主,若是不改變的話,只能訪問,其餘權限不能生效。由於咱們是以ftp用戶的身份訪問的,而pub默認的屬主屬組是root

   chown ftp /var/ftp/pub

 

驗證:

   在網絡或是計算中輸入ftp地址:格式以下圖。

   咱們會看到默認的pub目錄。

 

進入到pub目錄下,能夠建立和上傳測試目錄了。如圖2

注意:(1)修改完配置以後須要重啓完服務才能生效

      2)還須要重新從客戶端登錄,不然修改後的配置看不到效果。

 

實驗2

1.  建立測試賬號u1u2u3密碼都爲「user」

2.  容許本地用戶訪問

3.  將權限掩碼設爲077

4.  將本地賬號禁錮在宿主目錄中

5.  只容許u1u2兩個用戶能夠登陸

 

建立測試用戶,而且設置密碼

[root@crushlinux ~]# useradd u1

[root@crushlinux ~]# echo "user" |passwd --stdin u1

[root@crushlinux ~]# useradd u2

[root@crushlinux ~]# echo "user" |passwd --stdin u2

[root@crushlinux ~]# useradd u3

[root@crushlinux ~]# echo "user" |passwd --stdin u3

 

在配置文件中加入紅色部份內容

[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

 

local_enable=YES

local_umask=077

chroot_local_user=YES

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=NO

tcp_wrappers=YES

 

 

 

將容許登錄的用戶加入到白名單中

 

vi /etc/vsftpd/user_list

u1

u2

 

service vsftpd restart

 

登錄驗證

   格式爲:ftp://用戶名:密碼@ftpIP地址


 

登錄上默認是空白的,由於這是用戶的家目錄。

 

u3用戶登錄,會報錯誤(windows不一樣系統報錯不會徹底一致):

 

實驗3

構建基於虛擬用戶的FTP服務

建立帳號數據

   1.創建虛擬FTP用戶的賬號數據庫文件

   2.建立FTP根目錄及虛擬用戶映射的系統用戶

   3.創建支持虛擬用戶的PAM認證文件

添加虛擬用戶支持

   4.vsftpd.conf文件中添加支持配置

   5.爲個別虛擬用戶創建獨立的配置文件

啓動服務並測試

   6.從新加載vsftpd配置

   7.使用虛擬FTP帳戶訪問測試

 

實驗部分

1.創建虛擬FTP用戶的賬號數據庫文件用到db_load工具先安裝軟件包

   rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm

   cd/etc/vsftpd/

2、建立虛擬用戶文件

   vim user

   a

   1

   b

   1

   c

   1

  

   基數行表明用戶名,偶數行表明密碼

 

經過db_load工具建立出Berkeley DB格式的數據庫文件

  

   db_load -T -t hash -f user user.db

  

 

    -f 指定數據原文件

   -T 容許非Berkeley DB的應用程序使用文本格式轉換的DB數據文件

   -t hash 讀取文件的基本方法

3、建立虛擬用戶對應的系統用戶

   useradd -s /sbin/nologin vu

4創建支持虛擬用戶的PAM認證文件

vi/etc/pam.d/vsftpd.vu

加入如下兩行

auth       required     /lib64/security/pam_userdb.sodb=/etc/vsftpd/user

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

對應剛纔生成user.db的文件

5、在vsftpd的配置文件中支持虛擬用戶

注意:在作虛擬用戶的時候,必定要去掉userlist_deny=NO

這個選項,不然會顯示用戶驗證失敗

vi /etc/vsftpd/vsftpd.conf

guest_enable=YES            啓用用戶映射功能

guest_username=vu       指定映射的系統用戶名稱

pam_service_name=vsftpd.vu    指定新的PAM認證文件

local_enable=YES

local_umask=077

chroot_local_user=YES  若是紅色3條配置沒有的話就會報錯:用戶身份驗證失敗

 

virtual_use_local_privs=YES

若是沒有這條配置的話上傳將會顯示錯誤.這條最重要

還要注意每行配值的末尾不要有空行,不然也會有報錯

 

 

 

6.爲個別虛擬用戶創建獨立的配置文件

vi /etc/vsftpd/vsftpd.conf  加入下面一行

user_config_dir=/etc/vsftpd/user_dir 用戶配置目錄支持

爲用戶ab創建獨立的配置目錄及文件這一行也是必須有的

 

 mkdir /etc/vsftpd/user_dir

vim a

local_root=/test   規定了a用戶的根目錄  注意:必定要把目錄的屬主改成虛擬用戶對應的系統用戶。

 

 

默認就是全部權限

 

 

總結:本地用戶和虛擬用戶不能同時登陸、由於認證方式只有一種

本地是pam_service_name =vsftpd

虛擬是pam_service_name=vsftpd.vu 

 實驗4

1   修改vsftpd服務的監聽地址,端口

1.1  IP爲:192.168.200.129

1.2  端口爲:2121

2   使用vsftpd服務的被動模式

2.1  下限端口爲24500

2.2  上限端口爲24600

3   限制vsftpd服務的併發數,傳輸速度

3.1  限制併發客戶鏈接最多200

3.2  限制每一個IP地址的鏈接數最多50

3.3  限制匿名用戶傳輸速率爲50KB/s

3.4  限制本地用戶傳輸速率爲200KB/s

[root@crushlinux ~]# netstat-naptu |grep "vsftpd"

[root@crushlinux ~]# vi/etc/vsftpd/vsftpd.conf

listen=YES

listen_address=192.168.200.129

listen_port=2121

 

pasv_enable=YES

pasv_min_port=24500

pasv_max_port=24600

 

max_clients=200

max_per_ip=50

anon_max_rate=50000

local_max_rate=200000

 

[root@crushlinux ~]# servicevsftpd restart

[root@crushlinux ~]# netstat-naptu |grep "vsftpd"

tcp        0      0 192.168.200.129:2121        0.0.0.0:*                   LISTEN      3552/vsftpd   

相關文章
相關標籤/搜索