vsftpd 常用功能參數配置及參數詳解
Table of Contents
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
參數 | 說明 |
---|---|
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加密連接了 。
相關參數說明:
參數 | 說明 |
---|---|
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時,所有的用戶均可以切換到用戶根路徑的上級路徑
Created: 2019-10-24 Thu 19:34