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:

ftp://192.168.1.191/

注:輸入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