linux下ftp和ftps以及ftp基於mysql虛擬使用者證明伺服器的搭建

來源:互聯網
上載者:User

標籤:linux下ftp和ftps以及ftp基於mysql虛擬使用者證明伺服器的搭建

linux下ftp和ftps以及ftp基於mysql虛擬使用者證明伺服器的搭建

1.FTP協議:有命令和資料連線兩種

命令串連,控制串連:21/tcp

資料連線: 主動模式,運行在20/tcp連接埠 和 被動模式,運行在隨機連接埠

資料轉送模式(自動模式):有二進位(mp3,jpg等)和文本(html)兩種傳輸模式

ftp伺服器端程式:wu-ftpd:vsftpd pureftpd Filezilla Serv-U

ftp用戶端程式:CLI文字模式命令:ftp lftp

          GUI圖形介面軟體:gftpd FlashFXP Cuteftp Filezilla

vsftpd:命名為Very Secure ftp Daemon proftpd

   /etc/vsftpd: 設定檔目錄

   /etc/init.d/vsftpd: 服務指令碼

   /usr/sbin/vsftpd: 主程式

   /var/ftp:ftp服務和使用者的根目錄或家目錄,也是匿名使用者存取目錄

基於PAM實現使用者認證:

  /etc/pam.d/* :認證程式位置

  /lib/security/*:認證程式模組位置

  可支援虛擬使用者

ftp: 系統使用者,分有以下三種使用者

 匿名使用者:anonymous

 系統使用者: 本地系統使用者

 虛擬使用者: 需要映射到系統使用者

ftp檔案服務許可權:包括系統檔案目錄許可權和設定檔授權,取交集許可權

安全通訊方式:分明文和密文兩種,如下:

     ftp:明文

     ftps: ftp+ssl/tls,密文

     sftp: OpenSSH, SubSystem, sftp(SSH),密文

2.配置vsftpd.conf檔案詳解

安裝vsftpd 伺服器軟體

yum install vsftpd

編輯配置vsftpd.conf檔案

vim /etc/vsftpd/vsftpd.conf

設定檔內容如下:

anonymous_enable=YES  #開啟匿名使用者存取

local_enable=YES     #開啟本機使用者訪問

write_enable=YES     #開啟本機使用者上傳許可權

anon_upload_enable=YES #開啟匿名使用者上傳許可權

#anon_mkdir_write_enable=YES #開啟匿名使用者建立目錄許可權

#anon_other_write_enable=YES #開啟匿名使用者其他許可權,如建立,刪除檔案等許可權

#dirmessage_enable=YES #如在共用目錄建立.messages隱藏檔案並添加提示,給登入使用者提示而已

#xferlog_enable=YES   #開啟日誌功能

connect_from_port_20=YES #命令串連20/tcp連接埠開啟

#chown_uploads=YES     #開啟修改上傳使用者的屬主功能

#chown_username=whoever  #改變上傳使用者屬主是誰

#xferlog_file=/var/log/xferlog #對應上面的日誌開啟功能,記錄檔路徑位置

xferlog_std_format=YES      #記錄檔格式

#idle_session_timeout=600    #ftp命令串連時最大空閑連線時間

#data_connection_timeout=120  #ftp資料連線最大傳輸時間

#ftpd_banner=Welcome to blah FTP service.  #ftp使用者串連伺服器提示

#chroot_list_enable=YES    #開啟鎖定使用者家目錄,以防使用者切入至系統其他目錄

#chroot_list_file=/etc/vsftpd/chroot_list #此檔案下的ftp使用者才會被鎖定在傢具錄

#chroot_local_user=YES     #開啟本地系統使用者全部開啟chroot機制

listen=YES  #獨立守護進程,根據其他設定可將vsftpd變成瞬時守護進程

#max_clients= #同一時間最大並發使用者串連數

#max_per_ip=  #同一時刻每個IP地址最大串連數

pam_service_name=vsftpd  #基於pam認證服務名字

userlist_enable=YES     #user_list檔案中的使用者禁止登入ftp伺服器

注意:如果上面配置開啟上傳下載或刪除檔案許可權,但是所共用的目錄指定的ftp登入使用者沒有寫入

許可權,這樣也不能上傳下載或刪除檔案

3.ftp明文傳輸伺服器搭建,

實驗目的:在/var/ftp/目錄下建立upload目錄

      新增本機使用者willow

      允許匿名使用者和本地系統使用者willow能在upload目錄上傳下載建立刪除檔案

yum install vsftpd

mkdir /var/ftp/upload

useradd willow

echo "willow" | passwd --stdin willow

setfact -m u:willow:rwx /var/ftp/upload #這步驟很重要,授權willow對此目錄有寫入許可權

vim /etc/vsftpd/vsftpd.conf

確保如下配置生效:

anonymous_enable=YES  

local_enable=YES     

write_enable=YES     

anon_upload_enable=YES 

anon_mkdir_write_enable=YES 

anon_other_write_enable=YES

ftp localhost 利用willow使用者登入測試效果

4.ftps密文傳輸伺服器搭建,即ftp + tls加密認證

建立自我簽署憑證

cd /etc/pki/CA

mkdir certs newcerts crl

touch index.txt

echo 01 > serial

vim /etc/pki/tls/openssl.cnf

dir            = ../../CA   

 將上面一條語句修改成下面一條語句          

dir             = /etc/pki/CA      

(umask 077,openssl genrsa -out private/cakey.pem 1024)

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

mkdir /etc/vsftpd/ssl

cd /etc/vsftpd/ssl

(umask 077,openssl genrsa -out vsftpd.key 1024)

openssl req -new -key vsftpd.key -out vsftpd.csr

openssl ca -in vsftpd.key -out vsftpd.crt 

注意到此為止,我僅給出建立認證並再申請認證步驟,並沒有給出詳細過程,依自己實驗環境而定

如需瞭解認證建立詳細步驟,請查看我前面的部落格,在此我們得到如下資訊:

私密金鑰檔案位置:/etc/vsftpd/ssl/vsftpd.key

認證檔案位置:/etc/vsftpd/ssl/vsftpd.crt


vim /etc/vsftpd/vsftpd.conf

增加如下容:

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv3=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt   #認證位置

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key  #私密金鑰位置

重啟vsftpd服務

service vsftpd restart

使用FlashFXP用戶端軟體測試即可,加密傳輸

5.基於mysql虛擬使用者認證的ftp伺服器搭建

5.1.編譯安裝pam_mysql-0.7RC1

tar zxvf  pam_mysql-0.7RC1.tar.gz

cd  pam_mysql-0.7RC1

./configure --with-mysql=/usr --with-openssl

make

make install

cp /usr/lib/security/pam_mysql.* /lib/security/

5.2.安裝vsftpd

yum -y install vsftpd

5.3.安裝mysql-server和mysql-devel

yum install -y mysql-server mysql-devel

service mysqld start

5.4.建立虛擬使用者帳號

5.4.1準備資料庫及相關表

#mysql  本地串連mysql資料庫

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to [email protected] identified by ‘vsftpd‘;

mysql> grant select on vsftpd.* to [email protected] identified by ‘vsftpd‘;

mysql> flush privileges;

mysql> use vsftpd;

mysql> create table users (

    -> id int AUTO_INCREMENT NOT NULL,

    -> name char(20) binary NOT NULL,

    -> password char(48) binary NOT NULL,

    -> primary key(id)

    -> );

5.4.2.添加測試的虛擬使用者

mysql> insert into users(name,password) values(‘willow‘,‘willow‘);

mysql> insert into users(name,password) values(‘tom‘,‘tom‘);

注意;這裡將其密碼採用明文格式儲存,原因是pam_mysql與MySQL的password()函數可能會有所不同。

可通過pam_mysql目錄下的REDME檔案查看加密解釋,即less REDME

6.建立pam認證所需檔案

#vim /etc/pam.d/vsftpd.mysql

添加如下兩行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

7.修改vsftpd的設定檔,使其適應mysql認證

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

#useradd -s /sbin/nologin -d /var/ftpvuser vuser

#chmod go+rx /var/ftprootvuser

請確保/etc/vsftpd.conf中已經啟用了以下選項

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

chroot_local_user=YES

必須添加以下選項

guest_enable=YES

guest_username=vuser  #虛擬使用者映射本機使用者vuser

pam_service_name=vsftpd.mysql #對照前面新增的/etc/pam.d/vsftpd.mysql名字

啟動vsftpd服務並測試效果

# service vsftpd start

# chkconfig vsftpd on

# ftp localhost 

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

8.1.配置vsftpd為虛擬使用者使用設定檔目錄

# vim vsftpd.conf

關閉匿名使用者所有許可權

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

必須添加如下選項

user_config_dir=/etc/vsftpd/vusers_dir 

mkdir /etc/vsftpd/vusers_dir/

cd /etc/vsftpd/vusers_dir/

touch willow tom 


8.2.配置虛擬使用者的存取權限

8.2.1.讓虛擬使用者tom不能上傳,只有下載許可權

vim /etc/vsftpd/vusers/tom

anon_upload_enable=NO

8.2.2.讓虛擬使用者willow具有上傳,下載,建立,刪除等許可權

vim /etc/vsftpd/vusers/willow

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

本文出自 “夏維柳” 部落格,請務必保留此出處http://willow.blog.51cto.com/6574604/1786264

linux下ftp和ftps以及ftp基於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.