天天看點

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:文法錯誤,不可識别的指令