1. 安裝
# 安裝 vsftpd yum -y install vsftpd
2. 啟動服務並添加到開機自啟
# 啟動 vsftpd systemctl start vsftpd # 設置開機啟動 systemctl enable vsftpd # 查看服務狀態和端口(默認端口是 21 ) systemctl status vsftpd netstat -nltp | grep 21 -------------------------------------- -bash: netstat: 未找到命令 執行 yum -y install net-tools --------------------------------------
3. 防火牆設置
3.1 關閉防火牆
# 關閉防火牆 systemctl disable firewalld # 查看防火牆狀態 systemctl status firewalld
3.2 關閉 selinux
# 臨時關閉 getenforce setenforce 0 getenforce #永久關閉 vi /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled # 重啟服務器 reboot
因為我已經永久關閉 selinux 了,所以臨時關閉提示信息是這些,正常情況下提示信息如下所示
4. 配置
4.1 配置文件說明
# 配置文件在 /etc/vsftpd 目錄下 vsftpd.conf 核心配置文件 ftpusers 黑名單,不允許訪問 FTP 服務器的用戶列表,一行一個賬號 user_list 白名單,允許訪問 FTP 服務器的用戶列表,一行一個賬號
4.2 配置本地登錄
(1) 修改配置文件
# 備份 mv vsftpd.conf vsftpd.conf.bak
# 編輯配置文件
vi vsftpd.conf
# 是否允許虛擬用戶訪問
anonymous_enable=NO
#
# 是否允許本地用戶登錄 ftp
local_enable=YES
#
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=6000
data_connection_timeout=1200
connect_from_port_20=YES
#
# 將不在 /etc/vsftpd/chroot_list 文件中的用戶限制在其家目錄下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#
# 當用戶主目錄不在根目錄下時需要添加此參數
allow_writeable_chroot=YES
#
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# 本地用戶的 ftp 根目錄
local_root=/data/ftpdata
listen=YES
listen_ipv6=NO
#
# 認證
pam_service_name=vsftpd
#
tcp_wrappers=YES
chroot_list 在安裝時是沒有的,這個需要自己創建
在配置文件中 chroot_local_user=YES 和 chroot_list_enable=YES ,這表示
① 所有用戶都被限制在其主目錄下
② 使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list ,這些用戶作為“例外”,不受限制
cd /etc/vsftpd/
# 編輯 chroot_list 將 root 加進去
vi chroot_list
/var/log/xferlog 需要創建
該日志文件記錄 FTP 會話,可以顯示出用戶向 FTP 服務器或從服務器拷貝了什么文件。會顯示用戶拷貝到服務器上的用來入侵服務器的惡意程序,以及該用戶拷貝了哪些文件供他使用。
該文件的格式為:第一個域是日期和時間,第二個域是下載文件所花費的秒數、遠程系統 名稱、文件大小、本地路徑名、傳輸類型(a:ASCII,b:二進制)、與壓縮相關的標志或tar,或"_"(如果沒有壓縮的話)、傳輸方向(相對於服務 器而言:i代表進,o代表出)、訪問模式(a:匿名,g:輸入口令,r:真實用戶)、用戶名、服務名(通常是ftp)、認證方法(l:RFC931,或 0),認證用戶的ID或"*"。
cd /var/log touch xferlog
修改了配置文件之后要重啟 vsftpd 服務 systemctl restart vsftpd ,以生效配置。
(2) 創建本地用戶並設置密碼
# 添加用戶,指定其家目錄、所屬組及登入后所使用的 shell,/sbin/nologin 表示不允許 login 系統 # 主用戶 useradd ftpuser -d /data/ftpuser -s /sbin/nologin -g ftp # 子用戶 useradd ftp_liu -d /data/ftpdata/ftp_liu -s /sbin/nologin -g ftp useradd ftp_li -d /data/ftpdata/ftp_li -s /sbin/nologin -g ftp ... # 設置密碼 passwd ftpuser
(3) 添加白名單
cd /etc/vsftpd/ vi user_list
ftpuser
(4) 修改目錄權限
chmod 755 /ftpuser/ chown -R ftpuser:ftp /ftpuser/
(5) 修改 /etc/pam.d/vsftpd
為什么要修改這個文件呢?
我們前面在配置文件中設置 pam_service_name=vsftpd ,即指定 vsftpd 的認證走/etc/pam.d/vsftpd 文件。
(6) 登錄測試
前面在配置文件中,我們配置了 chroot_local_user=YES 和 chroot_list_enable=YES ,所以沒有寫進 chroot_list 中的用戶都會被限制在當前用戶目錄下,不能往上一級切換
簡單說明一下,如圖所示, ljq_1 目錄的權限是 700 ,即該目錄除了目錄的所有者具有完整的權限之外,其他所有用戶對該目錄完全沒有任何權限。所以可以通過調整目錄的權限規定每個 ftp 用戶能進行的操作。
# 參數簡介
r 讀( 看目錄有什么,如 ll ) w 可以在目錄里創建、刪除、移動文件、文件夾,如 touch mkdir rm mv cp x 表示用戶可進入到該目錄中