FTP協議簡介
FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩臺計算機之間互相傳送文件。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因爲FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思爲主動式和被動式。
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了臨時端口,你過來連接我”。於是服務器從20端口向客戶端的臨時端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了臨時端口,你過來連接我”。於是客戶端向服務器的臨時端口發送連接請求,建立一條數據鏈路來傳送數據。
ftp的操作數據/var/ftp/pub 和~/student 家目錄。
匿名用戶默認登陸到/var/ftp/pub 。
認證用戶默認登錄到~/student家目錄。
selinux 安全上下文
/var/ftp/pub public_content_t
~/home user_home_dir_t
查看安全上下文
ls -dZ /var/ftp/pub
ls -dZ ~/student
設置安全上下文
chcon -R -t 'public_content_t' /var/ftp/pub
chcon -R -t 'user_home_dir_t' ~/student
selinux 布爾值
ftp_home_dir
(
查詢布爾值 getsebool -a |grep ftp
設置布爾值 setsebool -P ftp_home_dir on
)
idle-session-timeout =600 ( 空閒超時時間)
可以用tcp-wrapper 控制客戶端的訪問
#vi /etc/hosts.deny
vsftpd: 192.168.0.181 (ALL) Except 192.168.0.254
或者使用/etc/vsftpd ftpusers 文件進行控制。