uos-ftp部署文檔


一、安裝

  • 服務端安裝
sudo apt install -y vsftpd
  • 客戶端安裝
sudo apt install -y ftp

二、配置項

配置文件路徑:/etc/vsftpd.conf

類別 配置項 描述
匿名用戶 anonymous_enable=yes 允許匿名用戶訪問,需local_enable開啟才生效
anon_upload_enable=YES 允許匿名用戶上傳
anon_mkdir_write_enable=YES 允許匿名用戶創建文件夾
anon_other_write_enable=YES 允許匿名用戶刪除、移動、修改等
anon_umask=077 匿名用戶上傳、創建文件的默認權限
全局用戶配置 local_enable=YES 允許用戶登錄
write_enable=YES 允許用戶上傳、修改、移動、刪除文件
local_umask=022 用戶上傳文件的默認權限
訪問限制 chroot_local_user=YES 禁止所有用戶離開家目錄
chroot_list_enable=YES 啟用配置文件限制,白名單模式
chroot_list_file=/etc/vsftpd/chroot_list 只允許該文件中用戶離開家目錄,其余用戶都不可離開家目錄,一行一個用戶名
登錄限制 userlist_enable=YES 啟用配置文件限制
userlist_deny=NO NO白名單,YES黑名單
userlist_file=/etc/vsftpd_user_list 用戶配置文件,一行一個用戶名
性能限制 anon_max_rate=0 匿名用戶最大下載速度
local_max_rate=0 用戶最大下載速度
max_clients=2000 最大並發連接數
max_per_ip 單IP的最大並發連接數

三、實驗

1.匿名用戶登錄

  • 修改配置文件
vim /etc/vsftpd.conf
anonymous_enable=YES
write_enable=YES

# 允許匿名用戶上傳
anon_upload_enable=YES
anon_mkdir_write_enable=YES

# 允許匿名用戶刪除、移動文件
anon_other_write_enable=YES
  • 創建公共目錄
mkdir /srv/ftp/pub

# 必須要給定權限,否則會不能下載或上傳
chown ftp:ftp /srv/ftp/pub
chmod 755 /srv/ftp/pub
  • 客戶端測試
ftp 192.168.149.140

圖片

# 查看
ls 

# 進入公共目錄
cd pub

# !ls表示查看操作系統當前位置的文件,ls表示查看ftp當前位置下的文件
!ls

# 上傳文件
put aaa

圖片

2.用戶登錄

  • 創建用戶
# 創建一個用戶,要有家目錄
useradd -m zhangsan

# 給用戶設置密碼
passwd zhangsan
  • 登錄測試
ftp 192.168.149.140
zhangsan
123456

# 上傳文件測試
>ls
>!ls
>put aaa

3.白名單或黑名單限制用戶登錄

ftp調用了pam模塊認證,里面指向了/etc/ftpusers文件

cat /etc/pam.d/vsftpd

直接修改/etc/ftpusers,將需要禁止登錄的賬號添加進去即可禁止登錄。

圖片


自定義黑白名單用戶列表

  • 創建一個用戶列表文件
touch /etc/ftp_userlist

里面每行插入一個用戶名即可

  • 修改ftp配置

vim /etc/vsftpd.conf插入以下配置

# 啟用用戶限制登錄功能
userlist_enable=YES

# 指定用戶列表文件
userlist_file=/etc/ftp_userlist

# 指定模式,如果為NO,則表示在ftp_userlist文件中的用戶可以登錄,其他用戶不允許登錄(白名單模式),否則相反。
userlist_deny=NO
  • 重啟服務測試
systemctl restart vsftpd

圖片

4.禁止用戶離開家目錄

chroot_local_user=YES #禁止所有本地用戶離開家目錄,需要去除家目錄w權限才能生效。

chroot_list_enable=YES #開啟后,只會允許文件中的用戶切換目錄

chroot_list_file=/etc/vsftpd/chroot_list #指定用戶文件路徑

# 創建3個用戶
useradd -m user1
useradd -m user2
useradd -m user3
passwd user1
passwd user2
passwd user3

# 編輯vsftpd.conf
vim /etc/vsftpd.conf

chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

# 重啟服務
systemctl restart vsftpd.service

# 編輯用戶文件
echo "user1" >> /etc/vsftpd/chroot_list
echo "user2" >> /etc/vsftpd/chroot_list

測試

  • user1

圖片

  • user2

圖片

  • user3

圖片

5.虛擬用戶

ftp用戶登錄使用的是ftp服務器的本地賬號,當ftp賬號密碼泄露,會對服務器造成很大的風險。所以一般我們不給用戶這種賬號,而是使用一個虛擬賬號。這樣當這個虛擬賬號密碼泄露后,不會影響系統安全。

虛擬用戶實際上是一個不存在於的操作系統的用戶,ftp-server在進行認真的時候需要調用pam模塊進行認證。因為虛擬用戶不是系統用戶,虛擬用戶登錄ftp需要一個身份權限,所以需要將虛擬用戶映射到一個系統用戶。

  • 創建一個系統用戶用於映射虛擬用戶
mkdir /srv/ftp/vuser
useradd -d /srv/ftp/vuser vuser
chown vuser.vuser /srv/ftp/vuser
  • 創建虛擬用戶家目錄
# 創建目錄
mkdir /srv/ftp/vuser/user{1..3}

# 目錄一定要給映射的用戶屬組權限
chown vuser.vuser /srv/ftp/vuser/user*
  • 創建pam認證用戶數據庫
# 創建一個FTP配置文件夾,便於管理
mkdir -p /etc/vsftpd

# 創建用戶賬號密碼文件,一行賬號,一行密碼
vim /etc/vsftpd/vuser.txt

user1
123456
user2
123456
user3
123456

# 創建本地數據庫,用於pam認證
apt search db | grep -E "^db" 
apt install -y db5.3-util
cd /etc/vsftpd
db5.3_load  -T  -t hash -f vuser.txt vuser.db

# 修改vsftpd pam模塊配置文件
vim /etc/pam.d/vsftpd

# 注意,實際/etc/vsftpd/vuser文件名叫vuser.db
auth sufficient pam_userdb.so db=/etc/vsftpd/vuser
account sufficient pam_userdb.so db=/etc/vsftpd/vuser

sufficient:表示只要標記sufficient此項配置的模塊一旦驗證成功,立即返回成功。
required:表示此項配置的模塊必須要驗證成功,驗證成功后還要驗證其他的required,只有當所有的required驗證成功才會返回成功。

  • 修改vsftpd配置文件
# 添加以下配置
vim /etc/vsftpd.conf

# 啟用虛擬用戶
guest_enable=YES
# 虛擬用戶映射的系統用戶
guest_username=vuser
# 指定虛擬用戶配置文件目錄
user_config_dir=/etc/vsftpd/vuser_conf
  • 給虛擬用戶添加配置

虛擬用戶的上傳、刪除等權限和匿名用戶的配置項一樣。

vim /etc/vsftpd/vuser_conf/user1
local_root=/srv/ftp/vuser/user1
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vim /etc/vsftpd/vuser_conf/user2
local_root=/srv/ftp/vuser/user2
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vim /etc/vsftpd/vuser_conf/user3
local_root=/srv/ftp/vuser/user3
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
  • 重啟服務測試
systemctl restart vsftpd

圖片

測試發現有500報錯,這是因為vsftpd是非常安全的ftp,我們只需要把家目錄的w權限去掉即可。

chmod a-w /srv/ftp/vuser
chmod a-w /srv/ftp/vuser/user*

圖片

發現可以登錄了,但是不能創建文件,因為我們把/srv/ftp/vuser/user1目錄的w權限給去了,所以所有用戶不能在此目錄下創建、刪除文件。解決辦法很簡單,我們在服務器上創建一個上傳目錄即可。

mkdir /srv/ftp/vuser/user1/upload 
chown vuser.vuser /srv/ftp/vuser/user1/upload 

圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM