RedHat 5.4 RHCE VSFTPD學習筆記

 

個人博客:http://wqmsl.blog.51cto.com/shell

製做人:wqmsl數據庫

 

目標:一、常規VSFTPD服務器搭建(很簡單的匿名訪問)瀏覽器

      二、本地用戶訪問FTP的方式(安全性高)安全

      三、虛擬用戶訪問方式(安全性最高)服務器

      四、chroot安全機制,禁錮用戶只在本身的目錄下活動,不可切換到別的目錄下session

      五、訪問控制機制ide

一、IP說明:測試

192.168.0.2——主機名:vsftpd.wqmsl.com   vsftpd服務器ui

192.168.0.3——主機名:client.wqmsl.com    client客戶端this

二、前期準備

   更改主機名稱(更改三處):一、hostname更改,二、hosts更改,三、/etc/sysconfig/network

三、所需軟件包以下

wps_clip_p_w_picpath-31674

使用yum來安裝,rpm的方式也是能夠的

進入到vsftpd的主配置目錄下:

wps_clip_p_w_picpath-26851

  (1)ftpusers是用戶控制文件,在這個文件裏面的用戶,默認是不可使用vsftpd服務的。

  (2)user_list默認功能和第一個同樣,可是經過配置,咱們可讓只有在第二個文件裏的用戶才能使用vsftpd服務,這樣新加入的用戶就不會自動擁有vsftp的使用權,這樣可讓vsftpd服務器更加安全

  (3)vsftpd_conf_migrate.sh是vsftpd操做的一些變量和設置,這個不用管的

固然,主角就是 vsftpd.conf ,配置vsftpd,咱們操做最多的也就是這個文件了

1、下面開始實現第一個目標(搭建基本的FTP服務器)

我先備份一下vsftpd的主配置文件

wps_clip_p_w_picpath-22122

以便配置錯誤以後方便恢復

下面看看vsftpd.conf文件的內容吧

wps_clip_p_w_picpath-16383

大概就這些內容,能夠本身more看一下哈!

默認安裝完成vsftpd以後啓動服務客戶端就能夠訪問FTP了(匿名訪問的方式),

wps_clip_p_w_picpath-14646

下面我在客戶端來訪問一下FTP

wps_clip_p_w_picpath-1629

不用登錄便可訪問FTP的pub目錄,該目錄在FTP服務器的

wps_clip_p_w_picpath-9335

這樣一個簡單的FTP服務器就搭建完成了,(關於vsftpd.Conf文件裏的詳細參數介紹看文章結尾的注意內容)。

2、下面咱們來實現第二個實驗的目標(本地用戶訪問FTP的方式)

編輯vsftpd.conf文件,

wps_clip_p_w_picpath-27053

關閉默認容許的匿名訪問的方式

wps_clip_p_w_picpath-27373

把其YES改成NO 便可,重啓FTP服務,匿名就不能夠訪問了

wps_clip_p_w_picpath-9786

就要求我填寫用戶名和密碼了

wps_clip_p_w_picpath-25111

添加用戶ftp1指定到ftp組,並指定ftp1的shell不能夠登錄系統(安全起見)

最後設置用戶的密碼,

wps_clip_p_w_picpath-9311

在ftp1的家目錄下創建一個test的文件用來測試

現我用ftp1帳號如今訪問一下

wps_clip_p_w_picpath-32351

看看是否是能夠了,登錄以後是在ftp1的家目錄下面,而後咱們用Linux客戶端來訪問一次

wps_clip_p_w_picpath-18060

wps_clip_p_w_picpath-366

登錄成功

登錄後輸入「?」能夠查看能夠在ftp模式下敲擊的命令哦!

wps_clip_p_w_picpath-5307

看咱們在本身的家目錄,經過切換以後竟然能夠切換到/etc下面,固然,這時候就是你下載passwd文件都是沒有問題的,這樣是很不安全的啦

實現目標四 禁錮用戶在本身家目錄

因此咱們啓用chroot機制,把用戶禁錮在本身的家目錄,不容許他亂跑的哦。

咱們來編輯vsftpd的主配置文件,來啓用cheroot

wps_clip_p_w_picpath-21611,

去掉前面註釋#便可,保存

在/etc/vsftpd下添加chroot_list文件,編輯chroot_list添加ftp1用戶,一行一個用戶(在此

文件內的添加的用戶將不能切換目錄,視本身的家目錄爲跟目錄)

wps_clip_p_w_picpath-6210

從新加載vsftpd配置文件。

wps_clip_p_w_picpath-13559

下面咱們從新使用Linux客戶端訪問如下,看看效果

wps_clip_p_w_picpath-4955

看看,切換目錄失敗,說明咱們的實驗是成功的

下面我使用ftp2用戶登錄(ftp2我沒有加入到chroot_list 文件中,因此正常狀況下ftp2登錄以後應該是能夠切換目錄的)

wps_clip_p_w_picpath-21269

從上面看到,咱們呢使用ftp2用戶登錄以後是能夠成功切換目錄的,如今你知道chroot的的做用了吧,也應該知道這個chroot_list文件的做用了吧。

(注意:若是你啓動了chroot機制,卻沒有子啊/etc/vsftpd/下創建chroot_list 這個文件,那麼當你登錄的時候會出現失敗的字樣具體以下:421 Service not available, remote server has closed connection,因此啓用以後必定要創建chroot_list 文件的哦)

3、下來咱們來實現第三個目標,用虛擬用戶訪問FTP服務器

    這個最重要的是

在/etc/vsftpd/下創建vlogin.txt文件,用來存儲虛擬用戶的用戶名和密碼

wps_clip_p_w_picpath-23012

編輯vlogin.txt這個文件

wps_clip_p_w_picpath-12142

編輯格式:奇數行:用戶名

          偶數行:密碼

生成數據庫

保存虛擬賬號和密碼的文本文件沒法被系統賬號直接調用哈~咱們須要使用db_load命令生成db數據庫文件

wps_clip_p_w_picpath-32033

(注意:rhel5默認只安裝db4-4.3.29-9.fc6.i386.rpm和db4-devel-4.3.29-9.fc6.i386.rpm,

要使用db_load須要將db4-utils-4.3.29-9.fc6.i386.rpm包安裝上哈~不然會出現下圖的錯  誤:找不到db_load命令。)

修改數據庫文件訪問權限
數據庫文件中保存着虛擬賬號的密碼信息,爲了防止非法用戶盜取哈,咱們能夠修改該文件的訪問權限。生成的認證文件的權限應設置爲只對root用戶可讀可寫,即600
chmod 600 /etc/vsftpd/vlogin.db

wps_clip_p_w_picpath-17544編輯pam文件(編輯的時候必定要認真,出現錯誤的話客戶端登錄會被530的錯誤提示拒絕登錄)PAM模塊配置文件路徑爲/etc/pam.d/目錄,此目錄下保存着大量與認證有關的配置文件,並以服務名稱命名。

wps_clip_p_w_picpath-19076

用#註釋掉原來的全部參數(如需使用訪問控制ftpusers,則不要註釋這行便可「auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed」)如上圖

在最後添加auth        reguired     pam_userdb.so       db=/etc/vsftpd/vlogin

          account      reguired     pam_userdb.so       db=/etc/vsftpd/vlogin

這兩行,pam_userdb.so 的位置在/lib/security/下面,db=/etc/vsftpd/vlogin中的vlogin爲咱們生成的db數據文件vlogin.db。

添加一個系統用戶 來對應 虛擬用戶,光有虛擬用戶是沒法登錄的,咱們須要讓虛擬用戶對應一個系統實際的用戶,這樣全部的用戶登錄以後就會進入到系統實際用戶的家目錄,咱們再經過給各個虛擬用戶來分配不一樣的權限(最後講這個)

wps_clip_p_w_picpath-6893

這裏,-g指定用戶的屬組爲ftp組,-s指定用戶的Shell爲不可登錄,-d指定用戶的家目錄爲/var/share ,它的加目錄的權限以下

wps_clip_p_w_picpath-24010

編輯/etc/vsftpd/vsftpd.conf  ,

添加以下內容

wps_clip_p_w_picpath-10071

內容選項解釋:

pam_service_name=vsftpd:          配置vsftpd使用的PAM模塊爲vsftpd

user_config_dir=/etc/vsftpd/vuserconfig:設置虛擬賬號權限配置的主目錄爲 vuserconfig

guest_enable=yes                    容許使用虛擬用戶登錄FTP

guest_username=ftp3                 虛擬用戶所對應的系統用戶爲ftp3(我以前添加的)。

max_clients=1:設置FTP服務器最大接入客戶端數爲1個(爲了方便測試,你能夠根據本身的實際狀況設定)

max_per_ip=1:設置每一個IP地址最大鏈接數爲1個(爲了方便測試,你能夠根據本身的實際狀況設定)

在/etc/vsftpd/下創建vuserconfig目錄,用於存放用戶的權限配置文件,以便爲各個用戶分配不一樣的權限,

wps_clip_p_w_picpath-18673

在vuserconfig目錄下面創建用戶的權限配置文件,配置文件的名稱必需要和在vlogin.txt.中添加的用戶名一致

wps_clip_p_w_picpath-2901

看一下ftp6配置文件的內容:

wps_clip_p_w_picpath-10438

參數詳解:

anon_world_readable_only=no     容許匿名用戶瀏覽器整個服務器的文件系統write_enable=yes                容許在文件系統寫入權限

anon_mkdir_write_enable=yes     容許建立文件夾

anon_other_write_enable=yes      容許用戶更名和刪除文件的權限

anon_upload_enable=yes         開啓匿名賬號的上傳功能

anon_max_rate=100000          限定傳輸速度爲100KB/s(以字節爲單位的)

重啓服務 service  vsftpd  restart /reload

如今使用ftp6虛擬用戶登錄能夠看到,已經登錄成功

wps_clip_p_w_picpath-21512

wps_clip_p_w_picpath-29485

並且已經禁錮用戶在家目錄下面,切換用戶目錄失敗。

在用戶的權限配置文件下編輯不一樣的權限,那麼對應的用戶就會擁有不一樣的權限,

這裏就看本身的實際狀況了,你也能夠在虛擬用戶的權限配置文件中添加對應的系統實際用戶,虛擬用戶能夠是  (1)多個虛擬用戶———— 一個實際系統用戶

                    (2)一個虛擬用戶————  一個系統用戶

靈活多變,看本身的實際狀況去設置。

4、實現第四個目標訪問控制機制

/etc/ftpusers(訪問控制文件)

wps_clip_p_w_picpath-28655
默認是拒絕這些用戶登錄的(上面添加ftp6用戶) 但能夠經過修改/etc/pam.d/ftp中的sense值爲allow 就表示只容許登錄的用戶以下:

*****************************************************************************************************************
[root@service root]# more /etc/pam.d/ftp
#%PAM-1.0
auth       required      /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed
auth       required      /lib/security/pam_unix.so shadow nullok
auth       required      /lib/security/pam_shells.so
account    required      /lib/security/pam_unix.so
session    required       /lib/security/pam_unix.so
****************************************************************************************************************咱們先來分析一下auth         required /lib/security/pam_listfile.so   item=user sense=deny file=/etc/ftpusers onerr=succeed 這一句

其中 /lib/security/pam_listfile.so是調用這個模塊用來檢測登錄進來的用戶是否是記記載在/etc/ftpusers中的用戶

而item=user 很明顯是說明要檢測的是用戶

sense=deny則是處理方法deny就是就是拒絕的意思了

我有個用戶名字叫ftp6在默認條件下條件下是能夠登錄ftp服務器的我把它加入/etc/ftpusers 後看看狀況哦

#echo "ftp6" >> /etc/ftpusers

有時候 你只想容許某部分人登錄ftp服務器 那麼 你能夠經過修改/etc/pam.d/ftp中的sense值爲allow 就表示只容許登錄的用戶,那麼你在 /etc/ftpusers 文件加入的 用戶就表示訪問的 沒在文件內的用戶都被拒絕

如今我使用ftp6來登陸一下FTP服務器試試

wps_clip_p_w_picpath-29767

登陸失敗,說明配置已經生效。

Vsftpd的主配置文件/etc/vsftpd.conf的配置選項解釋:

咱們要先了解幾個關鍵的配置選項
anonymous_enable=YES                   //容許匿名用戶登錄
local_enable=YES                        //容許本地用戶登錄 若是這個不打開的話 uid 500如下的人都被訪問拒絕

write_enable=YES                        //容許客戶端寫命令
local_umask=022                         //本地用戶新文件的umask的值 就等於ground 和other 部分的可寫部分去掉

anon_upload_enable=YES                   //容許匿名用戶上傳文件
anon_mkdir_write_enable=YES               //容許匿名用戶建立目錄 這個最好不要打開不然會帶來不可預測的後果

dirmessage_enable=YES                          //容許使用目錄的消息
ftpd_banner=Welcome to weihua0722's FTP service.     //登錄歡迎辭詞
ls_recurse_enable=YES                            //容許使用ls -R命令
listen=YES                                      //監聽模式 就是要服務器單獨運行

FTP原理嘗試:

後臺進程:vsftpd類型:System V 服務使用端口:20(ftp-data),21(ftp)所需RPM包:vsftpd配置文件:/etc/vsftpd/vsftpd.conf

FTP的主動模式和被動模式很重要

主動模式:

client 先鏈接服務器的 21端口(命令端口),而後client開放一個大於1024的端口等待服務器的20端口鏈接,21號端口的連接創建之後,服務器就用20去鏈接client開放的端口,簡單來講就是服務器主動連客戶端啦

基於上面的鏈接方式,若是client端有個防火牆,服務器的20端口就鏈接不進入,致使會鏈接失敗。

被動模式:

就是client開啓大於1024的X端口鏈接服務器的21(命令端口),同時開啓X+1端口

當21號端口鏈接成功後,client會發送PASV命令,通知服務器本身處於被動模式,服務器收到這個消息後,就會開放一個大於1024的端口Y通知client,client接到通知後就會用X+1來鏈接服務器的Y端口,簡單的說就是client主動鏈接服務器

通常咱們使用的是主動模式

你們瞭解被動模式就能夠了,當你架設FTP服務器,出現這樣的狀況,你應該想到可使用被動模式來解決,固然防火牆通常也支持FTP的追蹤模塊,會自動識別本身發出的FTP數據請求。這樣制動模式也能返回數據

會遇到的問題

一、500 OOPS: vsftpd: refusing to run with writable anonymous root

這表示ftp用戶的家目錄的權限不對,應該改過纔對;

二、有時候會遇到530的錯誤,通常都是由於你啓用了虛擬用戶以後編輯pam.d/vsftpd文件致使,內容出現錯誤的時候就會被拒絕登錄,全部必定要認真。

 

個人博客:http://wqmsl.blog.51cto.com/

歡迎你們和我一塊兒交流

相關文章
相關標籤/搜索