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
2.啓動
3.測試
anonymous爲匿名
這樣我們的vsftpd已經開始簡單的使用
查看他的配置文件
************打開vsftpd.conf,任何的啓動指令之前不能有空白字符,否則爲語法錯誤*********
anonymous_enable=YES/NO,是否允許匿名用戶
local_enable=YES/NO,是否允許所有用戶
write_enable=YES/NO定義系統用戶能否上傳文件
anon_upload_enable=YES/NO定義匿名用戶能否上傳文件
anon_mkdir_write_enable=YES/NO定義匿名用戶能否創建目錄
dirmessage_enable=YES/NO切換目錄時的顯示信息
anon_other_write_enable=YES/NO定義其他的寫權限
xferlog_enable=YES/NO定義是否打開傳輸日誌
xferlog_file定義日誌目錄
chroot_list_enable=YES/NO定義是不是用一個文件來定義它特定用戶所在他的家目錄下
chroot_list_file=打算在哪一個文件之中創建一個用戶列表,所有的列表中的用戶要被禁錮
listen=YES,vsftpd是否工作爲一個獨立的守護進程
13. max_client_ip=#定義最多可以幾個客戶IP進行訪問
安全通信方式
1.ftps:ftp+ssl/tls
2.sftp:Opessl,SubSystem,sftp(基於SSH實現)
實現1 的方式:創建一個CA,給ftpd發送一個證書,配置ftp的啓用的指令:
接下開要安裝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服務的搭建,能夠實現文件的傳輸。