建立vsftpd伺服器基於mysql的虛擬使用者認證

來源:互聯網
上載者:User

標籤:vsftpd 虛擬使用者 mysql認證

簡單羅列基礎命令,只分享我的想法!

一、目的

要求:配置允許虛擬使用者訪問的vsftpd伺服器,虛擬使用者儲存在另一台MySQL的伺服器上面,虛擬使用者帳號有兩個分別是tom和jerry,密碼是tom和jerry,要求對這兩個賬戶的許可權做一下限制(根據實際的要求,自己調節)。

環境:MySQL伺服器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43。另一台是通過yum安裝vsftpd(192.168.0.22),OS是CentOS 6.6。

  • MySQL是通用二進位格式安裝,前文的部落格已經介紹過如何安裝。

  • vsftpd。

1、介紹vsftpd

Vsftpd是ftp協議實現的一種方式,在應用程式層,不依賴於通訊子網,也就是不依賴於核心,所以,Windows使用者也可以使用。本身基於C/S模式,伺服器端始終監聽在21連接埠,因為21連接埠是命令串連連接埠,而20連接埠是資料轉送的連接埠,需要資料轉送的時候建立,之後拆除,而不是一致處於監聽狀態,所以,client和server之前的資料轉送的串連又可以分為“主動”和“被動”兩個模式。

“主動”:由server端主動建立的串連。就是首先client的隨機連接埠串連server的21連接埠,當收到下載資料的命令之後,server端主動會開啟20連接埠,串連client的隨機+1連接埠,傳輸完畢20連接埠將被“拆除”,一般不用“主動”串連的模式,因為如果client有防火牆的話,一般需要client手動去允許存取或設定。

“被動”:由client建立的串連。就是首先client的隨機連接埠串連server的21連接埠,在21連接埠client和server已經“協商”完畢,server端使用哪個隨機連接埠去串連client的隨機+1連接埠(注意:為什麼client不主動串連server的20連接埠,因為server的20連接埠不會像21連接埠那樣,vsftpd一直在監聽,按需要建立然後關閉)。

ftp的傳輸格式是看資料,如果資料是文本就文本傳輸,如果資料是二進位的程式,那就是以二進位傳輸,這一點不同於http協議,只能是以文字資料流進行傳輸。

ftp也有資訊碼:

1系列:資訊碼。

2系列:成功。

3系類:需要進一步提示補充的狀態代碼(當你輸入賬戶之後,會有,因為還有密碼)。

4系類:用戶端錯誤。

5系列:伺服器端錯誤。

因為vsftpd只有在類unix伺服器上實現,所以認證主要是通過OS自己的pam模組認證,OS的系統使用者,匿名使用者(沒有使用者和密碼),虛擬使用者(在資料庫或其它檔案中儲存的帳號和密碼)認證。

2、yum安裝vsftpd之後產生的主要檔案。

使用者認證(pam)設定檔:/etc/pam.d/vsftpd(注意:主設定檔中的pam_service_name=vsftpd,就是調用這個設定檔)。

主應用程式:/user/sbin/vsftpd

匿名使用者共用的資源:/var/ftp(注意:所有的匿名的使用者都需要映射到OS中的使用者,為了安全起見,最好是系統使用者,但是需要建立系統使用者的時候建立家目錄,因為模式開放的就是家目錄,只有映射到OS中的使用者你才能夠訪問檔案,因為local file也是需要許可權的,但是不能更改/var/ftp的許可權,可以建立一個目錄,然後修改可寫的許可權)。

系統使用者就是使用者的家目錄。

設定檔目錄:/etc/vsftpd

主設定檔:/etc/vsftpd/vsftpd.conf

3、對於主設定檔的部分內容進行說明

anonymous_enable=YES //是否啟用匿名使用者anon_upload_enable=YES //是否開啟匿名使用者上傳anon_mkdir_write_enable=YES //是否允許匿名使用者建立目錄anon_ohter_write_enable=YES //是否允許匿名使用者刪除檔案local_enable=YES //是否啟用本地系統使用者write_enable=YES //是否允許本地系統使用者刪除、建立local_umask=022 //限制許可權


禁錮所有的ftp本機使用者於其家目錄中:

chroot_local_user=YES

禁錮檔案中指定的ftp本機使用者於其家目錄中:

chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

日誌:

xferlog_enable=YESxferlog_std_format=YESxferlog_file=/var/log/xferlog

改變上傳檔案的屬主:

chown_uploads=YESchown_username=whoever

是否啟用控制使用者登入的列表檔案/etc/vsftpd/user_list

userlist_enable=YESuserlist_deny=YES|NO

串連限制:

max_clients:  //最大並發串連數max_per_ip: //每個IP可同時發起的並發請求數


傳輸速率:

anon_max_rate:  //匿名使用者的最大傳輸速率, 單位是“位元組/秒”local_max_rate:  //本機使用者的最大傳輸速率, 單位是“位元組/秒”


強制啟動文字資料流傳輸,有可能用戶端開啟的檔案是亂碼

ascii_upload_enable=YESascii_download_enable=YES

4、配置

A、安裝所需要的程式

1、安裝vsftpd、pam_mysql和mysql_server

注意:pam_mysql是由epel源提供

                           

B、建立虛擬使用者帳號

1、準備資料庫及相關的表格

mysql>CREATE DATABASE vsftpd;//mysql>GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY‘mima‘; 資料庫在原生時候可以使用mysql>GRANT SELECT ON vsftpd.* TO [email protected]‘172.16.%.%‘ IDENTIFIEDBY ‘mima‘;mysql>FLUSH PRIVILEGES; mysql>use vsftp;                                                                                                                     mysql>CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULLPRIMARY KEY,name CHAR(20) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);

                           

2、添加測試的虛擬賬戶

為了密碼的安全使用mysql內部的函數進行加密,之後密碼的位元是48位。

mysql>INSERT INTO users (name,password) VALUES(’tom‘,password(‘tom‘)),(’jerry‘,password(‘jerry‘)
);

                           

C、配置vsftpd

1、建立pam認證所需的檔案

vim /etc/pam.d/vsftpd.mysql //為了不與原來的vsftpd的認證檔案衝突,所以進行重新命名添加如下兩行(可以直接寫pam_mysql.so,會自動去/lib64/security這個目錄下面去找):auth required /lib64/security/pam_mysql.so user=vsftp passwd=mima host=MYSQL那台機器的IP db=vsftpd table=users usercolumn=name passwdcolumn=passwordcrypt=2  //認證帳號,為什麼是crypt=2,rpm-ql pam_mysql中的README解決account required /lib64/security/pam_mysql.so user=vsftp passwd=mima host=MYSQL那台機器的IP db=vsftpd table=users usercolumn=name passwdcolumn=passwordcrypt=2  //檢查帳號是否在有效期間之內


                  

2、修改vsftpd的設定檔,使其適應mysql的認證

建立虛擬使用者映射的系統使用者及對應的家目錄

useradd -s /sbin/nologin -d /var/ftproot vuserchmod go+rx /var/ftproot

                           

確保主設定檔/etc/vsftpd/vsftpd.conf中有,可以根據需要臨時修改

anonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_local_user=YES

                           

而後添加以下選項

guest_enable=YESguest_username=vuser

        

確保pam_service_name的值

pam_service_name=vsftpd.mysql //只能通過mysql認證登陸


                           

D、啟動vsftpd服務

/etc/init.d/vsftpd startchkconfig vsftpd on

                           

使用虛擬使用者登陸,驗證配置結果,你可以通過win的IE或者cmd等

                           

E、配置虛擬使用者具有不同的存取權限

vsftpd可以在設定檔目錄中為每個使用者提供單獨的設定檔已定義其ftp服務存取權限,每個虛擬使用者的設定檔名桐虛擬使用者的使用者名稱。設定檔目錄可以是任意未使用目錄,只需要在vsftpd.conf指定路徑及名稱即可。

1、配置vsftpd為虛擬使用者使用設定檔目錄

vim /etc/vsftpd/vsftpd.conf

添加如下

user_config_dir=/etc/vsftpd/vusers_config

                           

2、建立所需要的目錄,並為虛擬使用者提供設定檔

mkdir /etc/vsftpd/vusers_configtouch /etc/vsftpd/vusers_config/{tom,jerry}

                           

3、配置虛擬使用者的存取權限

虛擬使用者對vsftpd服務的存取權限是通過匿名使用者的相關指令進行的。比如,如果需要讓tom使用者具有上傳下載的許可權,可以修改/etc/vsftpd/vuser_config/tom檔案,在裡面添加

anon_upload_enable={YES|NO}anon_mkdir_write_enable={YES|NO}anon_other_write_enable={YES|NO}

四、如下

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6C/D7/wKiom1VTPVPicnRkAALL_GjMNY0011.jpg" title="虛擬使用者在資料庫中建立.jpg" alt="wKiom1VTPVPicnRkAALL_GjMNY0011.jpg" />

圖1、資料庫的建立

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6C/D2/wKioL1VTPwHiH84FAANNQKbCny4686.jpg" title="通過windows的cmd登陸.jpg" alt="wKioL1VTPwHiH84FAANNQKbCny4686.jpg" />

圖2、虛擬使用者tom登陸

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/D2/wKioL1VTP5qw1ArsAAHCS30FI9c371.jpg" title="虛擬使用者上傳檔案和下載檔案.jpg" alt="wKioL1VTP5qw1ArsAAHCS30FI9c371.jpg" />

圖3、tom使用者上傳和建立目錄

注意:圖3中227 EnteringPassive Mode (192,168,0,22,28,236)告訴你是被動模式下載的資料,其實伺服器的連接埠號碼就是28*256+236。

有志同道合的“戰友”可以加我qq:865765761。(註明:Linux)


本文出自 “唯寫感受!” 部落格,請務必保留此出處http://damihua.blog.51cto.com/6537272/1651073

建立vsftpd伺服器基於mysql的虛擬使用者認證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.