1.什麼是vsftpd服務
vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 伺服器設計開發的最開始的時候,高安全性就是一個目标。
一個例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是為程式(這裡就是 vsftpd 了)單獨指定一個新的目錄,它也就不能通路那個目錄之外的程式和檔案了 --- 是以這也稱為“被鎖上的”。一個可能被潛在的攻擊者破壞的 FTP 伺服器将被從系統的其他部分獨立開來,進而避免了更大的損失。
2.什麼是ftp
FTP Transfer Protocol 件傳輸協定的縮寫,在RFC 959中具體說明。
FTP會話時包含了兩個通道,一個叫控制通道,一個叫資料通道。
控制通道:控制通道是和FTP伺服器進行溝通的通道,連接配接FTP,發送FTP指令都是通過控制通道來完成的。
資料通道:資料通道是和FTP伺服器進行檔案傳輸或者清單的通道。
FTP協定中,控制連接配接均有用戶端發起,而資料連接配接有兩種工作方式:PORT方式和PASV方式
PORT模式(主動方式)
FTP 用戶端首先和FTP Server的TCP 21端口建立連接配接,通過這個通道發送指令,用戶端需要接收資料的時候在這個通道上發送PORT指令。 PORT指令包含了用戶端用什麼端口(一個大于1024的端口)接收資料。在傳送資料的時候,伺服器端通過自己的TCP 20端口發送資料。 FTP server必須和用戶端建立一個新的連接配接用來傳送資料。
PASV模式(被動方式)
在建立控制通道的時候和PORT模式類似,當用戶端通過這個通道發送PASV 指令的時候,FTP server打開一個位于1024和5000之間的随機端口并且通知用戶端在這個端口上傳送資料的請求,然後FTP server 将通過這個端口進行資料的傳送,這個時候FTP server不再需要建立一個新的和用戶端之間的連接配接傳送資料。
如果從C/S模型這個角度來說,PORT對于伺服器來說是OUTBOUND,而PASV模式對于伺服器是INBOUND,這一點請特别注意,尤其是在使用防火牆的企業裡,這一點非常關鍵,如果設定錯了,那麼客戶将無法連接配接。
3.安裝ftp
先關閉selinux政策
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl stop firewalld #關火牆或者添加服務到火牆識别服務
(
firewall-cmd --list-all
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
)
setenforce 0
lftp ip ##能登陸并且顯示,表示安裝成功
4.vsftpd檔案資訊
/var/ftp ##預設釋出目錄
/etc/vsftpd ##配置目錄
5.vsftpd服務的配置參數(/etc/vsftpd/vsftpd.conf)
550服務本身不允許
530使用者名或密碼錯誤,與PAM認證有關
553沒權限
500權限過大
1)匿名使用者設定
anonymous_enable=YES|NO ##匿名使用者登陸限制
#<匿名使用者上傳>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
#<匿名使用者家目錄修改>
anon_root=/direcotry
#<匿名使用者上傳檔案預設權限修改>
anon_umask=xxx
#<匿名使用者建立目錄>
anon_mkdir_write_enable=YES|NO
#<匿名使用者下載下傳>
anon_world_readable_only=YES|NO ##設定參數值為no表示匿名使用者可以下載下傳
#<匿名使用者删除>
anon_other_write_enable=YES|NO
#<匿名使用者使用的使用者身份修改>
chown_uploads=YES
chown_username=student
#<最大上傳速率>
anon_max_rate=102400
#<最大連結數>
max_clients=2
2)本地使用者設定
local_enable=YES|NO ##本地使用者登陸限制
write_enable=YES|NO ##本地使用者寫權限限制
#<本地使用者家目錄修改>
local_root=/directory
#<本地使用者上傳檔案權限>
local_umask=xxx
#<限制本地使用者浏覽/目錄>
所有使用者被鎖定到自己的家目錄中
chroot_local_user=YES
chmod u-w /home/*
使用者黑名單建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim
使用者白名單建立
vim /etc/vsftpd/chroot_list
student
westos
#<限制本地使用者登陸>
vim /etc/vsftpd/ftpusers ##使用者黑名單
vim /etc/vsftpd/user_list ##使用者臨時黑名單
使用者白名單設定
userlist_deny=NO
/etc/vsftpd/user_list ##參數設定,此檔案變成使用者白名單,隻在名單中出現的使用者可以登陸ftp
6.<ftp虛拟使用者的設定>
6.1建立虛拟帳号身份
vim /etc/vsftpd/loginusers ##檔案名稱任意
ftpuser1 ##使用者名
123 ##密碼
ftpuser2
123
ftpuser3
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
vim /etc/pam.d/ckvsftpd ##檔案名稱任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
pam_service_name=ckvsftpd
guest_enable=YES
guest_username=ftpuser #虛拟帳号身份指定
chmod u-w /home/ftpuser
6.2虛拟帳号家目錄獨立設定
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
6.3虛拟帳号配置獨立
注釋
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此檔案中設定配置檔案中的所有參數,此檔案的優先級搞
本文轉自willis_sun 51CTO部落格,原文連結:http://blog.51cto.com/willis/1847008,如需轉載請自行聯系原作者