FTP服務器

FTP服務器html

讀者們請注意,此文主要是針對fedaro講解,fedora和ubuntun的安裝命令有稍許差異,僅供參考,若是須要幫助,能夠發私信給我,歡迎探討。mysql

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

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

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

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

數據鏈接:分爲兩種狀況,windows

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

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

防火牆擁有鏈接追蹤的功能,可以本身判斷鏈接之間的特徵,識別請求響應鏈接彼此之間的關係,tcp

客戶端發起的狀態爲新請求狀態,服務器的響應稱爲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

2、建立虛擬用戶帳號


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 vsftpd@127.0.0.1 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)

    -> );


二、添加測試的虛擬用戶


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


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

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

3、配置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


4、啓動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

5、配置虛擬用戶具備不一樣的訪問權限


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

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

# vim vsftpd.conf

添加以下選項

user_config_dir=/etc/vsftpd/vusers_dir 

二、建立所須要目錄,併爲虛擬用戶提供配置文件

# mkdir /etc/vsftpd/vusers_dir/

# cd /etc/vsftpd/vusers_dir/

# touch tom jerry

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

虛擬用戶對vsftpd服務的訪問權限是經過匿名用戶的相關指令進行的。好比,若是須要讓tom用戶具備上傳文件的權限,能夠修改/etc/vsftpd/vusers/tom文件,在裏面添加以下選項便可。

anon_upload_enable=YES


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

相關文章
相關標籤/搜索