vsftpd 配置用戶及根目錄及其參數詳解


vsftpd 常用功能參數配置及參數詳解

1 配置超級服務

vi /etc/xinetd.d/vsftpd
service ftp
{
    disable           = no
    socket_type       = stream
    wait              = no
    user              = root server            = /usr/sbin/vsftpd
    server_args       = /etc/vsftpd/vsftpd.conf
# 上面這個 server 的設定請依照您的主機環境來設定!
# 至於 server_args 則請寫入您的 vsftpd 的配置文件完整名稱即可!
    per_source        = 5     <==與同一 IP 的聯機數目有關
    instances         = 200   <==同一時間最多的聯機數目
    no_access         = 192.168.1.3
    banner_fail       = /etc/vsftpd/vsftpd.busy_banner
# 上面這個文件就是當主機忙碌中,則在 Client 端顯示的內容!
    log_on_success    += PID HOST DURATION
    log_on_failure    += HOST
}

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
listen=NO

2 配置匿名用戶

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
Table 1: 匿名用戶配置
參數 說明
anonymous_enable=YES 是否允許匿名登錄 yes=允許 no= 不允許
ftp_username=ftp 設置ftp匿名登錄時的用戶名,默認 ftp
no_anon_password=YES 匿名用戶登錄不需要輸入密碼 默認 YES
deny_email_enable=YES 以banned_email_file里面的電子郵件為密碼的匿名用戶不能登錄
anon_root 匿名用戶登錄后的默認目錄,不設置,默認為/var/ftp
anon_upload_enable=YES 允許匿名登錄用戶上傳文件 默認NO
anon_mkdir_write_enable=YES 允許匿名登錄用戶創建目錄 默認NO
anon_other_write_enable=NO 允許匿名用戶有較高的寫權限包括 刪除目錄和重命名等 默認NO
anon_world_readable_only=YES 允許匿名用戶下載可讀文件 默認YES , 設置為yes時只能下載不能直接在Ftp中閱讀。
chown_uploads=YES 設置是否改變匿名用戶上傳文件(非目錄)的屬主。默認值為NO。

3 配置本地用戶登錄

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
#下面是允許某些用戶登入的項目  存在user_list文件中的用戶不允許登入
userlist_enable=YES
userlist_deny=YES #如果這里改為NO  反過來只能存在user_list文件中的用戶允許登入
userlist_file=/etc/vsftpd/user_list
anonymous_enable=NO

#下面是限制用戶只能訪問自己的主目錄  存在chroot_list文件中的用戶只能訪問自己的主目錄
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

4 配置虛擬用戶登錄

#創建虛擬用戶的專用目錄
[root@localhost ~]# mkdir /home/vsftpd/admin


[root@localhost ~]# vi /etc/vsftpd/loginuser.txt
#加入兩個用戶  奇數行代表用戶名 偶數行代表密碼
admin
admin123

#執行命令 生成虛擬數據庫
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/login.db
#設置數據庫文件的訪問權限
[root@localhost ~]# chmod 600 /etc/vsftpd/login.db
[root@localhost ~]# vi /etc/pam.d/vsftpd
#將以下內容增加的原文件前面兩行:
auth    required        pam_userdb.so db=/etc/vsftpd/login
account required        pam_userdb.so db=/etc/vsftpd/login
auth    sufficient      pam_userdb.so db=/etc/vsftpd/login
account sufficient      pam_userdb.so db=/etc/vsftpd/login
#我們建立的虛擬用戶將采用PAM進行驗證,這是通過/etc/vsftpd.conf文件中的 語句pam_service_name=vsftpd 來啟用的。

#auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
#auth       required     pam_stack.so service=system-auth
#auth       required     pam_shells.so
#account    required     pam_stack.so service=system-auth
#session    required     pam_stack.so service=system-auth

可以看出前面兩行是對虛擬用戶的驗證,后面是對系統用戶的驗證。 為了安全我一般把系統用戶的登入關閉  使用虛擬賬號登入ftp
對虛擬用戶的驗證使用了sufficient這個控制標志。
這個標志的含義是如果這個模塊驗證通過,就不必使用后面的層疊模塊進行驗證了;但如果失敗了,
就繼續后面的認證,也就是使用系統真實用戶的驗證。
虛擬用戶創建本地系統用戶

#新建一個系統用戶vsftpd, 用戶登錄終端設為/bin/false(即使之不能登錄系統)
[root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /bin/false
[root@localhost ~]# chown vsftpd:vsftpd /home/vsftpd #改變目錄所屬用戶組

根據需要創建/etc/vsftpd/vsftpd.conf,以下設置:
listen=YES                             #監聽為專用模式
anonymous_enable=NO                    #禁用匿名登入
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log       #記錄ftp操作日志
xferlog_std_format=YES
chroot_local_user=YES                  #對用戶訪問只限制在主目錄 不能訪問其他目錄
guest_enable=YES                       #啟用guest
guest_username=vsftpd                  #使用虛擬賬號形式
user_config_dir=/etc/vsftpd/user_conf  #虛擬賬號配置目錄
pam_service_name=vsftpd                #對vsftpd的用戶使用pam認證
local_enable=YES

#執行以下命令
[root@localhost ~]# mkdir /etc/vsftpd/user_conf
[root@localhost ~]# cd /etc/vsftpd/user_conf
[root@localhost ~]# vi /etc/vsftpd/user_conf/admin
#加入以下內容 擁有所有權限
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/admin

#如果不能讀寫操作 可能是目錄權限不夠需要設置權限 試試看
[root@localhost ~]# chmod 777 /home/vsftpd/admin

5 使用SSL登入

[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
[root@localhost ~]#vi /usr/local/etc/vsftpd.conf
ssl_enable=YES(開啟vsftpd對ssl協議的支持)
ssl_sslv2=YES(支持SSL v2 protocol)
ssl_sslv3=YES(支持SSL v3 protocol)
ssl_tlsv1=YES(支持TSL v1)
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem(證書的路徑)

ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES

這樣重啟vsftpd 就可以用客戶端來嘗試進行SSL加密連接了 。

相關參數說明:

Table 2: ssl 加密協議配置
參數 說明
allow_anon_ssl=NO 是否允許SSL連接,啟用SSL后才可以使用此參數,默認NO
ssl_enable=NO 是否啟用ssl 安全連接 默認NO 如果設置為yes,vsftpd。
  將啟用openSSL,通過SSL支持安全連接和數據傳輸
force_local_logins_ssl=YES 是否對非匿名用戶登錄加密 默認yes
force_local_data_ssl=YES 是否對非匿名用戶傳輸加密 默認yes
force_anon_logins_ssl=NO 匿名用戶登錄時是否加密 默認為no
force_anon_data_ssl=NO 匿名用戶數據傳輸時是否加密 默認為no
ssl_sslv2=NO 是否開戶sslv2協議。 默認NO ,如果設置為yes,
  前提為ssl_enable=YES
ssl_sslv3=NO 是否開戶sslv3協議。 默認NO ,如果設置為yes,
  前提為ssl_enable=YES
dsa_cert_file 為ssl加密連接指定dsa證書位置 默認 無
ssl_ciphers 是否指定加密方式 默認 DES-CBC3-SHA

6 日志文件


參數 說明
dual_log_enable=NO # 是否啟用雙日志,默認NO 如果設置為yes,則分別在/var/log/xferlog、
  var/log/vsftpd.log里記錄日志。前一個為wu-ftpd格式,可被通用工具
  分析,后一個為vsftpd的專用格式
xferlog_enable=YES # 激活上傳和下傳的日志 依賴 參數xferlog_std_format的設置
xferlog_std_format=YES # 使用標准格式記錄上傳、下傳日志
syslog_enable=NO # 是否關閉vsftpd的日志並記錄系統日志 默認NO ,如果設置為YES,系
  統日志會記錄到/var/log/vsftpd.log,而VSFTPD的日志進程將停止。

7 傳輸模式


參數 說明
ascii_download_enable=YES 是否啟用ascii模式下載文件 默認 NO
ascii_upload_enable=YES 是否啟用ascii模式上傳文件 默認 NO
async_abor_enable=NO 是否啟用強制中止傳輸文件 默認 NO 啟用此參數是為了
  免中止傳輸時的客戶端掛死。只有特殊情況下才使用。
background=NO 是否后台啟動vsftpd監聽 默認 NO 啟用后,VSFTPD將
  監聽進程置於后台,當訪問vsftpd服務時,console 會返
  回到shell 模式
check_shell=YES 檢測是否有可用的shell環境 默認 YES
userlist_enable=YES 啟用user_list 文件的檢查 默認 NO 為YES時檢查
  user_list文件中的用戶列表,為NO 時不檢測該文件
userlist_deny=NO 只有在userlist_enable 啟用時有效,默認YES .
  YES: 表示user_list文件中的用戶不允許登錄ftp
  NO: 表示只允許user_list文件中的用戶登錄FTP

8 傳輸速率設置


參數 說明 默認值
anon_max_rate 匿名用戶允許的最大傳輸速率 0秒
local_max_rate 本地認證用戶的最大傳輸速率 0秒

9 超時設置


參數 說明 默認值
accept_timeout 嘗試連接時間 60s
data_connection_timeout 數據傳輸延遲的最大時間,超過限制,會話將被終止 300s
idle_session_timeout 連接建立后,兩次ftp命令之間的時間間隔,超時會話將被終止 300s

10 用戶創建的文件的權限


參數 說明 默認值
anon_umask 匿名用戶創建的文件的默認權限 022
local_umas 本地用戶創建的文件的默認權限 022

11 連接數設置


參數 說明 默認值
max_clients 允許的最大連接數 0
max_per_ip 單個IP允許的最大連接數 0

12 端口設置


參數 說明 默認值
listen_port=21 FTP服務器建立連接所偵聽的端口 21
ftp_data_port 數據傳輸所使用的默認端口 20
connect_from_port_20=YES 指定FTP數據傳輸連接使用20端口,設置為NO時,則進 NO
  行數據連接時,所使用的端口由ftp_data_port指定  
pasv_max_port=0 passive 模式下數據傳輸使用的端口上限 0
pasv_mim_port=0 passive 模式下數據傳輸使用的端口下限 0

13 用戶訪問權限

參數 說明
chroot_list_enable=YES 是否改變用戶的根目錄, 默認 NO。 當設置為YES時,需要以root
  用戶做如下操作:
  mkdir /etc/vsftpd/userconf;
  cat >>$username<<eof
  local_root=$path
  EOF
  說明 "$username" 是需要改變默認根目錄的用戶比如用戶aaa
  ,$path 為你想要用戶aaa默認訪問的路徑 ,比如/data/aaa
chroot_list_enable=YES 設置是否啟用chroot_list_file配置項指定的用戶列表文件。
  默認值為NO
chroot_list_file=/etc/vsftpd/chroot_list 用於指定存儲用戶列表文件,該文件用於控制哪些用戶只可以
  訪問自己的根目錄,不可以訪問根路徑的上級路徑目錄
chroot_local_user=YES 用於指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值為NO。
  通過搭配能實現以下多種效果。見表格下方。

①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd/chroot_list文件中列出的用戶,可以切換到根路徑的上級路徑;未在文件中列出的用戶,則不能切換。

②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd/chroot_list文件中列出的用戶,不能切換到根路徑的上級路徑;未在文件中列出的用戶,則可以切換。

③當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到用戶根路徑的上級路徑

④當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到用戶根路徑的上級路徑

Author: halberd.lee

Created: 2019-10-24 Thu 19:34

Validate


免責聲明!

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



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