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加密鏈接了 。css
相關參數說明:html
參數 | 說明 |
---|---|
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文件中列出的用戶,能夠切換到根路徑的上級路徑;未在文件中列出的用戶,則不能切換。java
②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd/chroot_list文件中列出的用戶,不能切換到根路徑的上級路徑;未在文件中列出的用戶,則能夠切換。node
③當chroot_list_enable=NO,chroot_local_user=YES時,全部的用戶均不能切換到用戶根路徑的上級路徑python
④當chroot_list_enable=NO,chroot_local_user=NO時,全部的用戶都可以切換到用戶根路徑的上級路徑sql