FTP

ftp是文件傳輸協議,基於C/S模式,即服務器與客戶器的模式。
ftp採用雙tcp連接方式:
控制連接:用於在ftp客戶端和ftp服務器之間傳輸ftp控制命令及命令執行信息,控制連接在整個ftp會話期間一直保持打開,端口號21
數據連接:用於傳輸數據
,包括數據的上傳,下載,文件列表發送等。數據傳輸結束後數據連接終止,端口號20

ftp採用兩種數據傳輸方式:
主動方式:相對服務器而言,
被動方式:選擇是由客戶端決定

ftp有兩種文件傳輸模式:
ASCII模式:將本地文件傳化成ASCII在傳輸,適合文本傳輸。HTML和文本文件
二進制模式:文件按照比特流的方式進行傳輸,適用於傳送程序文件,它不轉換,速度比較快,可傳送可執行文件,壓縮文件和圖片文件。

ftp用戶的類型:
匿名用戶:anonymous,ftp 家目錄在/var/ftp    
本地用戶:用戶和密碼保存在passwd和shadow中
            相當於直接登陸到系統
虛擬用戶:有自己獨立的賬戶和密碼

yum install vsftp安裝ftp
service vsftpd start啓動服務
在客戶端登陸:ftp ip地址
                pwd查看登陸的位置
在linux上:ftp  ip地址
            lftp -u ftptest ip地址
            !ls本機的
            put  上傳
上傳是要注意用戶的權限和目錄的權限
   
vim /etc/vsftpd/vsftpd.conf 配置文件
anonymous_enable=YES是否允許匿名登陸
local_enable=YES是否允許本地用戶登陸
write_enable=YES本地是否有寫權限
local_umask=022對文件的權限自動掩碼
anon_mkdir_write_enable=YES是否允許匿名創建目錄
dirmessage_enable=YES切換目錄的信息
xferlog_enable=YES日誌
xferlog_file=/var/log/vsftp日誌文件的位置
connect_from_port_20=YES確定傳輸是20端口
idel_session_timeout=600將在用戶會話空閒10分鐘後被中斷
data_connection_timeout=120將在數據連接空閒2分鐘後被中斷
#ascii_upload_enable=yes是否啓用ascii傳輸,默認是關閉的

如果希望用戶登陸後不能切換到自家目錄之外的目錄,可以設置chroot選項
chroot_local_user=YES本地用戶執行chroot
若設置指定的用戶執行chroot,需要如下設置:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
這樣只有/etc/vsftpd.chroot_list文件中指定的用戶才能執行chroot命令

限制指定的本地用戶不能訪問,而其他本地用戶可以訪問,如下設置
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
是文件/etc/vsftpd.user_list中指定的本地用戶不能訪問ftp服務器,而其他本地用戶可訪問ftp服務器
若userlist_deny=NO則是限定指定的本地用戶可以訪問,而其他本地用戶不可以訪問ftp服務器

安全方面:
setenforce 1 開啓selinux
若開啓selinux會有限制
getsebool -a | grep ftp 查看權限
setsebool -P allow_ftpd_anon_write on允許寫權限,可以根據需要進行不同的設置

tcpdump是個捕獲工具
tcpdump -D顯示本地網絡接口
tcpdump -i eth0 -A dst host 192.168.0.11只要有訪問192.168.0.11的數據包通過eth0就進行捕獲
ftp傳輸是明文的,我們要使用ssl會話加密,證書加密
cd /etc/pki/CA
mkdir certs newcerts crl
touch index.txt serial
echo 01> seria
openssl genrsa 1024>private/cakey.pem
chmod 600 private/cakey.pem
openssl req -new -x509 -key private/cakey.pem
然後填一些信息,自簽證書完成
在客戶端 cd /etc/vsftpd/
         mkdir ssl
         openssl genrsa 1024 >ftp.key生成私鑰
          openssl req -new -key vsftpd.key -out
ftp.csr
在/etc/vsftpd/vsftpd.conf
ssl_enale=YES是否開啓ssl
ssl_tlsv1=YES版本
ssl_tlsv2=YSE
ssl_tlsv3=YES
allow_anon_ssl=NO是否允許匿名用戶使用ssl
force_local_data_ssl=YES本地數據是否強行加密
force_local_logins_ssl=YES本地登錄是否強行加密
rsa_cert_file=/etc/vsftp/ssl/vsftpd_cert.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd_key.pem

構建基於虛擬用戶的vsftpd服務器
1創建虛擬用戶的賬號和密碼,並保存在數據庫中
vim  /etc/vsftpd/vusers_listvusers
   zhou
   123
yum install db4-utils
cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusersdb通過hash算法傳化成數據庫文件
file vusers.db
chown 600 /etc/vsftpd/vusers.*
2創建ftp根目錄及虛擬用戶映射的系統用戶
mkdir /var/ftproot
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot
3建立支持虛擬用戶的PAM認證
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth   required  pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so.db=/etc/vsftpd/vusers
auth 檢查賬號密碼
account 檢查賬號是否過期,是否有權
登錄
required要求必須通過,否側結束退出
requisite只要通過一項即可
後面上數據庫文件的位置
4在vsftpd.conf文件中添加支持配置
vim  /etc/vsftpd/csftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
5.爲個別虛擬用戶建立獨立的配置文件
在vsftpd.conf文件中添加用戶配置目錄支持
 user_config_dir=/etc/vsftpd/vusers_dir
爲用戶mike、john建立獨立的配置目錄及文件
 配置文件名與用戶名同名
 mkdir /etc/vsftpd/vusers_dir/
 cd /etc/vsftpd/vusers_dir/
 touch mike
 vim john
anon_upload_enable=YES
anon_mkdir_write_enable=YES
6.重新加載vsftpd配置
service vsftpd reload
7.使用虛擬FTP賬戶訪問測試
分別用mike、john用戶登錄FTP服務器進行下載、上傳測試
 mike用戶可以登錄,並可以瀏覽、下載文件,但無法上傳
 john用戶可以登錄,並可以瀏覽、下載文件,也可以上傳
 匿名用戶或其他系統用戶將不能登錄


ftp的典型消息
在用於ftp客戶程序與ftp服務器進行通信時,經常會看到一些由ftp服務器發送消息,這些消息是ftp協議所定義的。下面列出典型的ftp消息:
消息號
125:數據連接打開,傳輸開始
200:命令OK
226:數據傳輸完畢
331:用戶名OK
425:不能打開數據連接
426:數據連接被關閉,傳輸被中斷
452:錯誤寫文件
500:語法錯誤,不可識別的命令

 

 

 

 

 

 

 

 

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