環境:CentOS 6.5 64位
yum install -y vsftpd
vim /etc/vsftpd/vsftpd.conf
#禁止匿名用戶登錄 anonymous_enable=NO #允許本地用戶登錄 local_enable=YES #具有寫權限 write_enable=YES #本地用戶創建文件或目錄的掩碼 local_umask=022 dirmessage_enable=YES connect_from_port_20=YES xferlog_std_format=YES #屏蔽本地所有用戶瀏覽其他目錄的權限 chroot_local_user=YES #使用/etc/vsftpd/user_list配置文件 userlist_enable=YES userlist_deny=NO #pam模塊 pam_service_name=vsftpd #passive mode 連接端口 pasv_min_port=20000 pasv_max_port=20009 listen=YES
vim /etc/vsftpd/ftpusers 去掉ftp用戶
#增加用戶,不讓他登錄服務器
useradd upuser -s /sbin/nologin
#設置密碼
passwd upuser
#設置家目錄
usermod -d /data/upuser upuser
vim /etc/vsftpd/user_list
增加upuser一行
vim /etc/sysconfig/iptables
#ftp監聽端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#Passive模式 隨機打開的端口
-A INPUT -p tcp -m state --state NEW -m multiport --dports 20000:20009 -j ACCEPT
重啓iptables
service iptables restart
service vsftpd restart
Ps:
被動和主動模式簡介
Port模式FTP 客戶端首先和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP服務器收到 Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
userlist_enable與userlist_deny
userlist_enable和userlist_deny兩個選項聯合起來針對的是:本地全體用戶(除去ftpusers中的用戶)和出現在user_list文件中的用戶以及不在在user_list文件中的用戶這三類用戶集合進行的設置。
當且僅當userlist_enable=YES時:userlist_deny項的配置纔有效,user_list文件纔會被使用;當其爲NO時,無論userlist_deny項爲何值都是無效的,本地全體用戶(除去ftpusers中的用戶)都可以登入FTP
當userlist_enable=YES時,userlist_deny=YES時:user_list是一個黑名單,即:所有出現在名單中的用戶都會被拒絕登入;
當userlist_enable=YES時,userlist_deny=NO時:user_list是一個白名單,即:只有出現在名單中的用戶纔會被准許登入(user_list之外的用戶都被拒絕登入);另外需要特別提醒的是:使用白名單後,匿名用戶將無法登入!除非顯式在user_list中加入一行:anonymous