vsftpd安裝及虛擬用戶配置


FTP服務是最常用的跨平台文件共享服務之一

============= 完美的分割線 ===============

0.FTP兩種模式的區分

1)PORTFTP和PASVFTP,PORTFTP是一般形式的FTP。
2)這兩種FTP在建立控制連接時操作是一樣的,都是由客戶端首先和FTP服務器的控制端口(默認值為21)建立控制鏈接,並通過此鏈接進行傳輸操作指令。它們的區別在於使用數據傳輸端口(ftp-data)的方式。
3)PORTFTP由FTP服務器指定數據傳輸所使用的端口,默認值為20。
4)PASVFTP由FTP客戶端決定數據傳輸的端口。PASVFTP這種做法,主要是考慮到存在防火牆的環境下,由客戶端與服務器進行溝通(客戶端向服務器發出數據傳輸請求中包含了數據傳輸端口),決定兩者之間的數據傳輸端口更為方便一些。

1.安裝FTP服務端

1.1.環境准備

# 檢查系統環境,如果系統版本較低,建議升級內核等

# 在CentOS6.x和7.x版本安裝方法基本相同

uname -a
cat /etc/redhat-release 
# yum update -y       # 如果是新服務器或者是ftp獨占可以升級,其他看情況

1.2.安裝vsftpd

# 包括服務端和客戶端

yum install vsftpd ftp -y

1.3.啟動vsftpd服務並配置開機自啟動

/etc/init.d/vsftpd start
netstat -anptl|grep vsftpd
chkconfig vsftpd on
chkconfig --list vsftpd

1.4.配置查看ftp相關日志

# 從xferlog可以查看到用戶上傳下載等的操作記錄,刪除不會顯示

vim /etc/logrotate.d/vsftpd 
/var/log/vsftpd.log {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
/var/log/xferlog {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
tail -f /var/log/xferlog

2.配置匿名方式訪問FTP服務端

2.1.安裝好vsftpd服務,默認為匿名訪問

1)可以直接輸入IP端口,可以打開ftp服務器
2)允許匿名用戶登錄,宿主目錄為/var/ftp,不能離開,下載目錄為/var/ftp/pub,且只能下載,不能上傳
3)允許本地用戶登錄,且可離開主目錄,本地用戶允許上傳/下載
4)寫在文件/etc/vsftpd/ftpusers中的本地用戶禁止登錄
5)服務器使用獨占方式啟動,且無限制連接數

3.配置虛擬用戶認證的FTP服務端

3.1.修改vsftpd.conf 文件

cd /etc/vsftpd/
vim vsftpd.conf 

# 修改配置文件,確認以下選項

anonymous_enable=NO     # 修改,禁止匿名用戶登錄
local_enable=YES        # 默認啟用,允許本地用戶登錄,虛擬用戶需要映射到本地用戶才可以使用
write_enable=YES        # 默認啟用,本地用戶開放寫權限
#local_umask=022        # 注釋掉,本地用戶創建的文件的權限反碼022,創建的文件為644
userlist_enable=YES        # 默認啟用,默認為允許user_list中的用戶進行訪問
# userlist_deny=yes        # 也可以用這個,默認拒絕user_list中的用戶訪問FTP服務器,保留一種即可
userlist_file=/etc/vsftpd/user_list
chroot_local_user=YES      # 默認啟用,將本地用戶鎖定在自家目錄中

# made for virtual user
guest_enable=YES              # 增加,啟用虛擬用戶模式
guest_username=ftpvuser        # 增加,配置虛擬用戶映射到的本地用戶名
pam_service_name=/etc/pam.d/ftpvuser.pam    # 修改,配置虛擬用戶的認證方式
user_config_dir=/etc/vsftpd/vuser.d    # 增加,虛擬用戶的配置文件目錄
anon_umask=022            # 增加,匿名用戶新增文件的umask數值。默認值為077,需要修改為022,否則上傳后的文件為600

# 其他配置選項,根據實際需求修改

dirmessage_enable=YES          # 設置切換到目錄時顯示message 隱含文件的內容
xferlog_enable= YES             # 激活上傳和下載日志
connect_from_port_20= YES          # 啟用FTP數據端口連接
pam_service_name=vsftpd            # 設置PAM認證服務的配置文件名稱,  該文件存放在/etc/pam.d目錄下
userlist_enable= YES            # 允許vsftpd.user_list文件中的用戶訪問服務器
userlist_deny= YES             # 拒絕vsftpd.user_list文件中的用戶訪問服務器
listen= YES                    # 是否使用獨占啟動方式
tcp_wrappers= YES              # 使用防火牆
#file_open_mode=0755

# vsftpd配置文件

/etc/vsftpd/vsftpd.conf         # 主配置文件
/etc/vsftpd/ftpusers             # FTP限制訪問的用戶,里面是一些系統用戶,默認不允許訪問,防止被入侵
/etc/vsftpd/user_list            # 授權用戶列表,可以控制哪些用戶可以訪問或者禁止訪問

# 注意:
1)vsftpd.conf 文件中每個選項設置為一行,格式為“option=value”,“=”號兩邊不能留空白符
2)除了主配置文件外,還可以給特定用戶設定個人配置文件
3)虛擬用戶默認可以讀寫,訪問時映射為本地用戶,所以需要啟用對本地用戶的控制
4)實際的訪問權限可由用戶獨立的配置文件進行單獨控制

3.2.創建虛擬用戶相關文件

1)創建授權認證文件

cd /etc/pam.d/
mv vsftpd vsftpd.ori        # 備份原有的ftp的pam認證文件
vim ftpvuser.pam          # 創建新的ftp虛擬用戶認證文件

寫入以下內容:

#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser        # 不可以加.db的擴展名,否則認證不成功
account    required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser

2)創建虛擬用戶的秘鑰文件

mkdir -p /etc/vsftpd/vuser.d
cd /etc/vsftpd/vuser.d
touch vuser.list

3)加密虛擬用戶的秘鑰文件

# 使用db_load工具生成加密

yum install db4-utils -y
db_load -T -t hash -f vuser.list vuser.db
file vuser.list 
file vuser.db 

# 為了安全,修改虛擬用戶文件的訪問權限

chmod 600 /etc/vsftpd/vuser.*
ll /etc/vsftpd/vuser.*

3.3.配置一個虛擬用戶訪問權限的實例

1)創建或修改虛擬用戶秘鑰信息

cd /etc/vsftpd/vuser.d
vim  vuser.list
--------------------
admin
123456
--------------------

2)設置可以訪問ftp的虛擬用戶列表user_list

# 注釋掉其他本地用戶認證的內容,因為啟用了guest_enable后,本地用戶將失效,所有非匿名用戶變成虛擬用戶
# 因為需要授權訪問的用戶比較少,所以user_list設置為可以訪問ftp服務的用戶

vim /etc/vsftpd/user_list 
---------------------
admin
----------------------

3)每個用戶單獨創建授權文件

cd /etc/vsftpd/vuser.d
vim admin
---------------------------
# 指定宿主目錄,配置訪問權限
write_enable=YES
local_root=/data/ftpdata/admin     # 宿主目錄
anon_upload_enable=YES               # 上傳
anon_mkdir_write_enable=YES          # 創建目錄寫權限
anon_other_write_enable=YES          # 其他寫入權限
---------------------------

4)創建ftp虛擬用戶的宿主目錄

# 創建的ftp本地用戶及其根目錄,用於映射虛擬用戶,注意修改目錄權限

mkdir -p /data/ftpdata/admin            # 虛擬用戶的宿主目錄需要預先創建
useradd -d /data/ftpdata/ -s /sbin/nologin ftpvuser
chmod 755 /data/ftpdata/
ll /data/ftpdata/ -d

5)配置完成刷新配置信息,進行測試

service vsftpd reload

4.常見報錯處理

錯誤現象1:文件顯示上傳成功,刷新就是不顯示。

報錯分析:

1)檢查發現上傳的文件權限為600,是上傳文件權限設置問題

解決方法:修改虛擬用戶權限配置

local_umask=022 改為 anon_umask=022

2)另外,在創建虛擬用戶映射的ftp本地用戶的時候,使用useradd創建的宿主目錄權限默認為700

這樣,雖然上傳文件的權限為644可讀,文件夾755可讀,但由於ftp的上層目錄不可讀,子目錄也會受限

解決方法:修改宿主目錄的權限為755即可

chmod 755 /data/ftpdata/

5.附:防火牆配置

如果ftp被動模式用到防火牆,可以參考以下配置

iptables -I INPUT -p tcp --dport 21 -j ACCEPT          #FTP連接端口
iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT      #pasv模式下的隨機端口
iptables-save >/etc/sysconfig/iptables              #保存防火牆配置

systemctl restart iptables.service
systemctl restart vsftpd.service

======== 完畢,呵呵呵呵 ========


免責聲明!

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



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