vsftpd安裝配置
vsftpd測試服務器:
192.168.1.191
1、安裝:
yum provides */vsftpd
yum install vsftpd -y
2、匿名用戶最基本配置(生產上不設置匿名用戶訪問):
vim /etc/vsftpd/vsftpd.conf
允許匿名用戶訪問
anonymous_enable=YES
允許匿名用戶上傳文件並可以創建目錄:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
修改匿名目錄所有者(默認是root):
chown ftp.ftp /var/ftp/pub/
設置允許匿名用戶可上傳可讀寫:
anon_other_write_enable=YES
注:如果去掉這一條,匿名用戶可以創建,上傳,但是不能刪除。
3、啟動vsftp服務:
service vsftpd start
service vsftpd stop
service vsftpd restart
4、正式部署vsftpd(廢棄原來默認的ftp目錄:/var/ftp):
首先修改配置文件
備份配置文件
cp -a vsftpd.conf vsftpd.conf.bak
echo "" > vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
加入以下內容:
anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1
ascii_upload_enable=YES
ascii_download_enable=YES
5、創建宿主用戶
創建用戶 ftpuser 指定 /vsftpd 目錄:
useradd -g root -M -d /vsftpd -s /sbin/nologin ftpuser
設置用戶 ftpuser 的密碼:
passwd ftpuser
密碼:
12345678
把 /vsftpd 的所有權給ftpuser.root:
chown -R ftpuser.root /vsftpd
建立虛擬用戶文件:
touch /etc/vsftpd/vuser_passwd
編輯虛擬用戶名單文件:
第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統保留。
vim /etc/vsftpd/vuser_passwd
編輯內容:
ftp1
12345678
ftp2
12345678
6、生成虛擬用戶數據文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
7、創建用戶配置
mkdir /etc/vsftpd/vuser_conf # 建立虛擬用戶個人vsftp的配置文件
cd /etc/vsftpd/vuser_conf # 進入目錄
touch ftp1 ftp2
每個文件(ftp1和ftp2寫入如下內容,local_root=/vsftpd/ftp1#這里寫入這個用戶的實際存儲路勁):
vim ftp1
內容:
local_root=/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim ftp2
內容:
local_root=/vsftpd/ftp2
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
8、創建用戶目錄
mkdir -p /vsftpd/ftp1
mkdir -p /vsftpd/ftp2
修改權限:
chown -R ftpuser.root /vsftpd/ftp1
chown -R ftpuser.root /vsftpd/ftp2
注:原來ftp安裝完的默認目錄/var/ftp可以廢棄。
9、服務啟動
systemctl restart vsftpd.service # 重啟服務
systemctl start vsftpd.service # 啟動服務
systemctl status vsftpd.service # 服務狀態查看
10、生成虛擬用戶的PAM文件
cd /etc/pam.d/
備份vsftpd文件:
cp -a vsftpd vsftpd.bak
修改vsftpd文件內容(加入第二和第三行,下面的都全部注釋,注意下面是64位操作系統,如果是32位的話lib64需要改成lib):
vim vsftpd
內容:
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
11、客戶端調試
1.首先每次更改配置需要重啟vsftpd服務。
2.上面每個配置文件中的內容最好是手動鍵入(曾經的我直接粘貼進去,cat就是沒問題,但是粘貼進去就是不行)。
3.客戶端windows打開cmd到后台進行連接,網頁和資源管理器里面都會有緩存也看不到報錯。
4.服務器tail -f /var/log/secure查看日志(也可以tail -f /var/log/messages,這個看不出什么,前者更精准)。
查看日志:
tail -f /var/log/secure
5.客戶端報錯示例(坑了我好久,它說chroot沒有讀到/etc/vsftpd/chroot_list這個文件,所以我們新建這個文件就行,記得重啟服務)。
建立文件:
touch /etc/vsftpd/chroot_list
6.如果虛擬用戶登錄到自己的宿主目錄后,不能上傳文件的話,服務器端需要在宿主目錄里面再新建一個文件夾,給這文件夾777權限,就可以了(直接把宿主目錄設置777就會登錄不了)。
7.新增用戶的話,需要在/etc/vsftpd/vsuser.passwd里面追加用戶(刪除就是刪除用戶),
記得使用db_load重新生成vsuser.passwd文件即可,vuser_confi里面新建一個新建賬戶的權限文件,宿主目錄記得新建存儲文件。
8.建議使用ftp工具和cmd驗證。
測試1:
ftp 192.168.1.191
輸入:
ftp1
密碼
12345678
ftp 192.168.1.191
輸入:
ftp2
密碼
12345678
在ftp>下輸入:
user
注:輸入user可以重新輸入用戶名和密碼。
測試2:
注:輸入ftp1用戶名,進入的是ftp1用戶的目錄(ftp1),輸入ftp2用戶名,進入的是ftp2用戶的目錄(ftp2)。
12、修改端口號(測試的時候沒有修改成2121,而是用默認的21端口)
1.在/etc/vsftpd/vsftpd.conf文件中增加listen_port=21(這里默認是21)。
2.在vim /etc/services文件中修改如下內容。
ftp 21/tcp
ftp 21/udp fsp fspd
注意:上面修改的只是鏈接端口號,既然更改了連接端口號,別忘記訪問的時候修改端口。
既然我們設置的是被動模式(服務器被動打開數據端口,只有在數據鏈接的時候才會使用,
下面我們用ftp工具能成功連接,當打開某個文件夾的時候(請求數據的時候),才會使用該端口,
但是我這里使用了iptables,之允許了2121通過我們設置的是10060到10090端口,具體如下)。
設置防火牆:
firewall-cmd --add-port=10060-10090/tcp --zone=public --permanent
firewall-cmd --add-port=21/tcp --zone=public --permanent
firewall-cmd --reload
注:正常情況下使用默認21端口即可,考慮到安全,可以修改為其它端口。