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埠即可,考慮到安全,可以修改為其它埠。
轉載至:https://www.cnblogs.com/suixhxy/p/14916989.html