FTP服務器

FTP服務器

讀者們請注意,此文主要是針對fedaro講解,fedora和ubuntun的安裝命令有稍許差別,僅供參考,如果需要幫助,可以發私信給我,歡迎探討。

FTP:File Transfer Protocol文件傳輸協議,工作在應用層,主要考慮文件的傳輸過程,監聽在TCP的21端口

有兩個連接,只要客戶端不斷開,那麼就長期處於連接狀態.分爲:控制連接(命令連接)與數據連接.

控制連接:監聽在TCP的21號端口一直在線.

數據連接:只有當數據進行傳輸的時候纔會打開,按需打開,按需關閉.

數據連接:分爲兩種情況,

        主動模式:將服務器監聽在tcp的20號端口

        被動模式:因爲主動模式存在客戶端防火牆的問題,對於客戶端來說不是一個合理的方式,當客戶端請求傳輸數據的時候,服務器端不是直接將數據發送,而是仍然通過命令連接,給客戶端發送一個能夠開始傳輸數據的消息,都不連接20號端口,而是打開一個隨機端口進行數據傳輸,服務器端再也不通過20號端口進行傳輸。因此在被動模式下,監聽的端口隨機。

防火牆擁有連接追蹤的功能,能夠自己判斷連接之間的特徵,識別請求響應連接彼此之間的關係,

客戶端發起的狀態爲新請求狀態,服務器的響應稱爲ESTABLISHED狀態,而客戶端請求之後,命令連接打開,數據連接才能啓動,命令連接與數據連接之間的關係稱爲RELATED,相關聯的連接。


傳輸模式有兩種:文本(html),二進制方式(mp3.jpeg),遵循文件本身的模式,基於哪種模式的傳輸,要讓服務器與客戶端自行協商,否則會有致命的錯誤

ps:三種類型:結構化數據,半結構化數據,非結構化數據

注:

    結構化數據:  即行數據,存儲在數據庫裏,可以用二維表結構來邏輯表達實現的數據。

   非結構化數據:不方便用數據庫二維邏輯表來表現的數據即稱爲非結構化數據,包括所有格式的辦公文檔、文本、                                 圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。


實現ftp的服務器端程序:

wu-ftpd:華盛頓大學研究的ftpd

proftpd:功能強大的服務器,

vsftpd:Very Secure Ftp Daemon:精小,主要關注ftp的安全性(紅帽系統提供)

pureftpd

filezilla新出現的開源服務程序:server&client


實現ftp的客戶端程序:

ftp

lftp(命令行格式)

圖形格式:

gftpd(紅帽)

 

windows:flasFXP,Cuteftp filezilla

vsftpd:

/etc/vsftpd:配置文件目錄

/etc/init.d/vsftpd服務腳本

/isr/sbin/vsftpd:主程序

基於PAM實現用戶認證


兩個機制/etc/pam.d/*

/lib/security/*

/lib64/security/*   


支持虛擬用戶放在其他存儲空間的,用來表示獲取當前服務的用戶憑證,不是系統賬號,不能登錄

不允許root用戶以外的用戶擁有寫權限

vsftpd的安裝及配置


1.安裝ftp

#wget ftp://172.16.0.1/pub/gls/server.repo -O /etc/yum.repos.d/server.repo

#yum install vsftpd

注:這裏使用的是fedaro不是ubuntun。fedaro的安裝命令和ubuntun的安裝命令不一樣。ubuntun是apt -get install


ftp的用戶:

匿名用戶: -->對應的系統用戶

虛擬用戶:--> 對應的系統用戶

系統用戶

ftp訪問的文件一定訪問的是用戶的家目錄,/var/ftp

wKiom1jsXe_y8fjeAAAvrRVBxs8121.png

2.啓動

wKioL1jsXe_QHnzOAAAqiQhxb8Y271.png

3.測試

wKiom1jsXfDgydowAAFO9bVawYM710.png

anonymous爲匿名

這樣我們的vsftpd已經開始簡單的使用


查看他的配置文件 


************打開vsftpd.conf,任何的啓動指令之前不能有空白字符,否則爲語法錯誤*********


  1. anonymous_enable=YES/NO,是否允許匿名用戶

  2. local_enable=YES/NO,是否允許所有用戶

  3. write_enable=YES/NO定義系統用戶能否上傳文件

  4. anon_upload_enable=YES/NO定義匿名用戶能否上傳文件

  5. anon_mkdir_write_enable=YES/NO定義匿名用戶能否創建目錄

  6. dirmessage_enable=YES/NO切換目錄時的顯示信息

  7. anon_other_write_enable=YES/NO定義其他的寫權限

  8. xferlog_enable=YES/NO定義是否打開傳輸日誌

  9. xferlog_file定義日誌目錄

  10. chroot_list_enable=YES/NO定義是不是用一個文件來定義它特定用戶所在他的家目錄下

  11. chroot_list_file=打算在哪一個文件之中創建一個用戶列表,所有的列表中的用戶要被禁錮

  12. listen=YES,vsftpd是否工作爲一個獨立的守護進程

 13. max_client_ip=#定義最多可以幾個客戶IP進行訪問


安全通信方式

1.ftps:ftp+ssl/tls

2.sftp:Opessl,SubSystem,sftp(基於SSH實現)


實現1 的方式:創建一個CA,給ftpd發送一個證書,配置ftp的啓用的指令:

wKiom1jsbF6yK5aPAAH5lj7W0D0071.png



接下開要安裝ftp的客戶端,客戶端使用的程序可以是FileZilla,並且完成擁有認證功能的ftp服務還需配置相關的數據庫等


以上主要是講解ftp服務器,主要是爲後面做鋪墊,好了,不瞎扯淡了,進入主題,感謝大家能靜下心來看這篇文章,謝謝!


一、安裝所需要程序


1、事先安裝好開發環境和mysql數據庫;

# yum -y install mysql-server mysql-devel

# yum -y groupinstall "Development Tools" "Development Libraries"

2.安裝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

3.安裝vsftpd

# yum -y install vsftpd

二、創建虛擬用戶賬號


1.準備數據庫及相關表

首先請確保mysql服務已經正常啓動。而後,按需要建立存儲虛擬用戶的數據庫即可,這裏將其創建爲vsftpd數據庫。

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.magedu.com';

mysql> grant select on vsftpd.* to [email protected] identified by 'www.magedu.com';

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)

    -> );


2、添加測試的虛擬用戶


根據需要添加所需要的用戶,需要說明的是,這裏將其密碼採用明文格式存儲,原因是pam_mysql的password()函數與MySQL的password()函數可能會有所不同。


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

mysql> insert into users(name,password) values('jerry','magedu');

三、配置vsftpd


1.建立pam認證所需文件

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

添加如下兩行

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

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


2.修改vsftpd的配置文件,使其適應mysql認證


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

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

#chmod go+rx /var/ftproot


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

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES


而後添加以下選項

guest_enable=YES

guest_username=vuser


並確保pam_service_name選項的值如下所示

pam_service_name=vsftpd.mysql


四、啓動vsftpd服務


# service vsftpd start

# chkconfig vsftpd on

查看端口開啓情況

# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd 

使用虛擬用戶登錄,驗正配置結果,以下爲本機的命令方式測試,你也可以在其它Win Box上用IE或者FTP客戶端工具登錄驗正

# ftp localhost

五、配置虛擬用戶具有不同的訪問權限


vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。

1、配置vsftpd爲虛擬用戶使用配置文件目錄

# vim vsftpd.conf

添加如下選項

user_config_dir=/etc/vsftpd/vusers_dir 

2、創建所需要目錄,併爲虛擬用戶提供配置文件

# mkdir /etc/vsftpd/vusers_dir/

# cd /etc/vsftpd/vusers_dir/

# touch tom jerry

3、配置虛擬用戶的訪問權限

虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。比如,如果需要讓tom用戶具有上傳文件的權限,可以修改/etc/vsftpd/vusers/tom文件,在裏面添加如下選項即可。

anon_upload_enable=YES


自此完成了整個FTP服務的搭建,能夠實現文件的傳輸。



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