vsftpd是linux系統下的一套開源FTP服務器軟件,在企業中對一些資源的快速共享等功能爲我們提供了很好的幫助,企業內部資源是很需要安全性防護的,下面我們就通過ssl/tls來實現vsftpd的安全通信;並且進一步通過PAM實現vsftpd虛擬用戶認證,下面就讓我們一起來看一看吧
vsftpd的安全通信實現
安裝vsftpd與mod_ssl模塊
- # yum install vsftpd –y
- # yum install mod_ssl -y
修改openssl.conf配置文件中相對路徑
- dir = /etc/pki/CA
準備CA必需的目錄及文件
- # mkdir certs newcerts crl
- # touch index.txt
- # echo 01 > serial
爲CA準備私鑰
- # (umask 077;openssl genrsa -out private/cakey.pem 2048)
CA自簽署證書
- # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
vsftpd服務器準備
創建個特定目錄
- # mkdir /etc/vsftpd/ssl
生成vsftpd服務器自身私鑰
- # cd /etc/vsftpd/ssl
- # (umask 077;openssl genrsa -out vsftpd.key 2048)
生成自簽署證書
- # openssl req -new -key vsftpd.key -out vsftpd.csr
CA簽署vsftpd服務器的證書請求
- # openssl ca -in vsftpd.csr -out vsftpd.crt
編輯vsftpd.conf配置文件,在文件末行添加一下指令
- ssl_enable=YES ----啓用ssl功能
- ssl_sslv3=YES ----支持sslv3協議
- ssl_tlsv1=YES ----支持tlsv1協議
- allow_anon_ssl=NO ----匿名用戶不啓用ssl加密訪問
- force_local_data_ssl=YES ----強制本地用戶文件傳輸使用ssl
- force_local_logins_ssl=YES ----強制本地用戶登陸需ssl認證
- rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt -----vsftpd服務器證書文件路徑
- rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key ----vsftpd服務器自身密鑰文件路徑
配置完成啓動vsftpd服務
匿名用戶登陸測試
驗證使用ssl加密功能來測試本地用戶是否能夠登陸ftp服務器,使用windows端工具flashfxp進行驗證
基於PAM完成vsftpd支持的虛擬用戶
PAM認證的的完成是在上面安全通信完成之後實驗的,在vsftpd的主配置文件中定義的ssl會話指令對PAM認證虛擬用戶會有影響,所以需要註釋
使用pam驗證mysql中的用戶賬號與密碼,需要插件的支持
- # yum install mysql-server mysql-devel -y
編譯安裝pam_mysql-0.7RC1
- # tar xf pam_mysql-0.7RC1.tar.gz
- # cd pam_mysql-0.7RC1
- # ./configure --with-mysql=/usr --with-openssl
- # make
- # make install
啓動mysql服務
連接mysql創建vsftpd庫
- mysql> create database vsftpd;
- mysql> use vsftpd;
創建表
- mysql> CREATE TABLE users (
- -> id SMALLINT AUTO_INCREMENT NOT NULL,
- -> name CHAR(20) BINARY NOT NULL,
- -> password CHAR(48) BINARY NOT NULL,
- -> PRIMARY key(id));
授權用戶訪問
- mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'vsftpd';
- mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY 'vsftpd';
創建虛擬用戶
- mysql> INSERT INTO users (name,password) VALUE ('test','test'),('test1','test1');
重新讀取授權表
- mysql> FLUSH PRIVILEGES;
建立pam認證需要的文件
- # vim /etc/pam.d/vsftpd.mysql
添加一下內容
- auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd tables=users usercolumn=name passwdcolumn=passwd crypt=0
- account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd tables=users usercolumn=name passwdcolumn=passwd crypt=0
創建虛擬用戶映射的系統用戶及對應的目錄
- # usradd –s /sbin/nologin –d /var/ftproot vuser
- # chmod go+rx /var/ftproot/
定義vsftp.conf配置文件內容,確定啓用了以下指令
- anonymous_enable=YES
- local_enable=YES
- write_enable=YES
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
在配置文件末尾添加下面指令
- guest_enable=YES -----啓用來賓賬戶訪問
- guest_username=vuser ------指定虛擬用戶訪問時映射的本地用戶
配置文件要修改的內容
- pam_service_name=vsftpd.mysql
重新啓動vsftpd服務
- # service vsftpd restart
配置虛擬用戶具有不同的訪問權限
修改vsftpd.conf配置文件在末行添加一下內容
- user_config_dir=/etc/vsftpd/vuser ----指定虛擬用戶配置文件目錄
創建虛擬用戶配置文件目錄
- # mkdir /etc/vsftpd/vuser
- # cd /etc/vsftpd/vuser
- # touch test test1 ---創建與虛擬用戶同名的配置文件
爲test配置文件添加權限指令
- anon_upload_enable=NO
爲test1配置文件添加權限指令
- anon_upload_enable=YES
test用戶
現在整個流程就結束了,希望會對你有所幫助哦