基於ssl/tls實現vsftpd的安全通信並通過PAM實現對vsftpd的虛擬用戶認證

 
vsftpd是linux系統下的一套開源FTP服務器軟件,在企業中對一些資源的快速共享等功能爲我們提供了很好的幫助,企業內部資源是很需要安全性防護的,下面我們就通過ssl/tls來實現vsftpd的安全通信;並且進一步通過PAM實現vsftpd虛擬用戶認證,下面就讓我們一起來看一看吧 
 vsftpd的安全通信實現
安裝vsftpd與mod_ssl模塊
  1. # yum install vsftpd –y 
  2. # yum install mod_ssl -y 
修改openssl.conf配置文件中相對路徑
  1. dir  = /etc/pki/CA 
準備CA必需的目錄及文件
  1. # mkdir certs newcerts crl 
  2. # touch index.txt 
  3. # echo 01 > serial 
爲CA準備私鑰
  1. # (umask 077;openssl genrsa -out private/cakey.pem 2048) 
CA自簽署證書
  1. # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 

vsftpd服務器準備
創建個特定目錄
  1. # mkdir /etc/vsftpd/ssl 
生成vsftpd服務器自身私鑰
  1. # cd  /etc/vsftpd/ssl 
  2. # (umask 077;openssl genrsa -out vsftpd.key 2048) 
生成自簽署證書
  1. # openssl req -new -key vsftpd.key -out vsftpd.csr 
CA簽署vsftpd服務器的證書請求
  1. # openssl ca -in vsftpd.csr -out vsftpd.crt 
編輯vsftpd.conf配置文件,在文件末行添加一下指令
  1. ssl_enable=YES                           ----啓用ssl功能 
  2. ssl_sslv3=YES                              ----支持sslv3協議 
  3. ssl_tlsv1=YES                                    ----支持tlsv1協議 
  4. allow_anon_ssl=NO                      ----匿名用戶不啓用ssl加密訪問 
  5. force_local_data_ssl=YES             ----強制本地用戶文件傳輸使用ssl 
  6. force_local_logins_ssl=YES          ----強制本地用戶登陸需ssl認證 
  7. rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt    -----vsftpd服務器證書文件路徑 
  8. rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key    ----vsftpd服務器自身密鑰文件路徑 
配置完成啓動vsftpd服務
匿名用戶登陸測試
本地用戶登陸測試(筆者已經創建了用戶hadoop)
驗證使用ssl加密功能來測試本地用戶是否能夠登陸ftp服務器,使用windows端工具flashfxp進行驗證
flashfxp客戶端工具設置
點擊“連接”選項
接受傳送過來的證書
基於PAM完成vsftpd支持的虛擬用戶
PAM認證的的完成是在上面安全通信完成之後實驗的,在vsftpd的主配置文件中定義的ssl會話指令對PAM認證虛擬用戶會有影響,所以需要註釋
使用pam驗證mysql中的用戶賬號與密碼,需要插件的支持
  1. # yum install mysql-server mysql-devel -y 
編譯安裝pam_mysql-0.7RC1
  1. # tar xf pam_mysql-0.7RC1.tar.gz 
  2. # cd pam_mysql-0.7RC1 
  3. # ./configure --with-mysql=/usr --with-openssl 
  4. # make 
  5. # make install 
啓動mysql服務
連接mysql創建vsftpd庫
  1. mysql> create database vsftpd; 
  2. mysql> use vsftpd; 
創建表
  1. mysql> CREATE TABLE users ( 
  2.     -> id SMALLINT AUTO_INCREMENT NOT NULL
  3.     -> name CHAR(20) BINARY NOT NULL
  4.     -> password CHAR(48) BINARY NOT NULL
  5.     -> PRIMARY key(id)); 
授權用戶訪問
  1. mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'vsftpd'
  2. mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY 'vsftpd'
創建虛擬用戶
  1. mysql> INSERT INTO users (name,password) VALUE ('test','test'),('test1','test1'); 
重新讀取授權表
  1. mysql> FLUSH PRIVILEGES
建立pam認證需要的文件
  1. # vim /etc/pam.d/vsftpd.mysql 
添加一下內容
  1. auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd tables=users usercolumn=name passwdcolumn=passwd crypt=0 
  2. account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd tables=users usercolumn=name passwdcolumn=passwd crypt=0 
創建虛擬用戶映射的系統用戶及對應的目錄
  1. # usradd –s /sbin/nologin –d /var/ftproot vuser 
  2. # chmod go+rx /var/ftproot/ 
定義vsftp.conf配置文件內容,確定啓用了以下指令
  1. anonymous_enable=YES 
  2. local_enable=YES 
  3. write_enable=YES 
  4. anon_upload_enable=YES 
  5. anon_mkdir_write_enable=YES 
在配置文件末尾添加下面指令
  1. guest_enable=YES     -----啓用來賓賬戶訪問 
  2. guest_username=vuser   ------指定虛擬用戶訪問時映射的本地用戶 
配置文件要修改的內容
  1. pam_service_name=vsftpd.mysql 
重新啓動vsftpd服務
  1. # service vsftpd restart 
啓動vsftpd服務使用虛擬用戶登陸驗證
配置虛擬用戶具有不同的訪問權限
修改vsftpd.conf配置文件在末行添加一下內容
  1. user_config_dir=/etc/vsftpd/vuser                ----指定虛擬用戶配置文件目錄 
創建虛擬用戶配置文件目錄
  1. # mkdir /etc/vsftpd/vuser 
  2. # cd /etc/vsftpd/vuser 
  3. # touch test test1                   ---創建與虛擬用戶同名的配置文件 
爲test配置文件添加權限指令
  1. anon_upload_enable=NO 
爲test1配置文件添加權限指令
  1. anon_upload_enable=YES 
test用戶
現在整個流程就結束了,希望會對你有所幫助哦

 

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