vsftpd安裝配置虛擬用戶

来源:http://www.cnblogs.com/netonline/archive/2017/07/24/7231729.html
-Advertisement-
Play Games

原文發表於cu:2016-03-11 參考文檔: 一.環境 OS CentOS6.7 x86_64 網路 Sever:192.168.1.254 Client:192.168.1.100 二.安裝與配置 1. 安裝 使用yum安裝即可:yum install vsftpd -y 2. 軟體模塊 3. ...


原文發表於cu:2016-03-11

參考文檔:

  1. FTP原理:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_1.php
  2. FTP配置:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_2.php
  3. 虛擬用戶配置:http://yuanbin.blog.51cto.com/363003/129071

一.環境

OS

CentOS6.7 x86_64

網路

Sever:192.168.1.254

Client:192.168.1.100

二.安裝與配置

1. 安裝

使用yum安裝即可:yum install vsftpd -y

2. 軟體模塊

/etc/vsftpd/vsftpd.conf
vsftpd的配置文件,相關參數設定主要在這個文件進行。

/etc/pam.d/vsftpd
vsftpd使用 PAM 模塊時的相關配置文件,主要用來作為身份認證之用,還有一些用戶身份的抵擋功能, 也是透過這個檔案來達成的。

/etc/vsftpd/ftpusers/etc/pam.d/vsftpd文件有關,也就是 PAM 模塊中所指定的那個無法登入的用戶配置文件。這個檔案的設定簡單,只要將“不想讓他登入 FTP 的賬號”寫入這個文件即可。

/etc/vsftpd/user_list
這個文件是否生效與vsftpd.conf內的兩個參數有關,分別是“userlist_enable”與“userlist_deny”,會根據vsftpd.conf配置文件內的userlist_deny={YES/NO}不同而不同(設置為YES時,是阻止user_list中的賬號登入;設置為NO時,是允許user_list中的賬號登入)。
/etc/vsftpd/ftpusers是PAM模塊的安全設定文件,而/etc/vsftpd/user_list是vsftpd自定義的安全設定文件。
這個文件與/etc/vsftpd/ftpusers幾乎一樣,在預設情況下,可以將不希望可登入vsftpd賬號寫入這裡。

/etc/vsftpd/chroot_list
此文件預設是沒有的,需要手工建立,主要作用是將某些賬號chroot在其家目錄。
文件是否生效與vsftpd.conf的“chroot_list_enable”與“chroot_list_file”兩個參數有關。

/usr/sbin/vsftpd
vsftpd的執行文件。

/var/ftp/
vsftpd預設匿名賬戶登入根目錄,與ftp賬號的家目錄有關。

3. 配置文件簡介

以下列出主要的一些配置項供參考。

伺服器環境較相關的設置

connect_from_port_20=YES (NO)
主動式FTP伺服器port,ftp-data的埠。
#主動式ftp指server接到client的ftp請求後,由server的20埠主動連接client告知的數據接收port,建立數據傳輸通道;
#被動式ftp指server接到client的ftp請求後,隨機選取大於1024的port告知client,由client主動發起ftp數據通道連接;
#在有ftp的server與client之間有防火牆或nat時,基本只能使用被動式ftp。

listen_port=21
vsftpd的命令通道port,如果要使用非正規的埠,在此修改;修改埠號指適合以stand alone方式來啟動的vsftpd(對於super daemon 無效)。

dirmessage_enable=YES (NO)
當ftp用戶進入某個目錄時,會顯示該目錄需要註意的內容,顯示的檔案預設是 .message ,可以使用下麵的設定項目來修改顯示內容。

message_file=.message
當dirmessage_enable=YES時,可以設定這個項目來讓vsftpd 尋找該文件來顯示信息。

listen=YES (NO)
如果設置為YES,表示vsftpd是以stand alone的方式來啟動;設置為NO時,vsftpd以super daemon方式啟動。

pasv_enable=YES (NO)
支持數據流的被動式聯機模式(passive mode),請設定為YES。

use_localtime=YES (NO)
是否使用本地時間?vsftpd預設使用GMT時間(格林威治),建議設置YES。

write_enable=YES (NO)
是否允許用戶上傳數據。

connect_timeout=60
單位是秒,在數據連接的主動式聯機模式下,發出的連接信號在 60 秒內得不到client響應,則不等待並強制斷線。

accept_timeout=60
當client以被動式PASV進行數據傳輸時,如果server端啟用passive port並等待client超過60秒而無響應,那麼就強制斷線。這個設置與connect_timeout類似,不過一個是管理主動聯機,一個管理被動聯機。

data_connection_timeout=300
如果server與client的數據聯機已經成功建立(不論主動還是被動聯機),但是可能由於線路問題導致300秒內沒有順利的完成數據傳送,那client的聯機就會被vsftpd 強制斷線。

idle_session_timeout=300
如果client在300 秒內都無命令動作,強制斷線。

max_clients=0
如果vsftpd 以stand alone方式啟動,那麼這個設定值可以設置在同一時間,最多有多少 client可以同時連上vsftpd。

max_per_ip=0
與max_clients類似,同一個IP同一時間可允許多少聯機。

pasv_min_port=0, pasv_max_port=0
與 passive mode 使用的port有關,如果你想要使用65400到65410這11個port來進行被動式聯機模式的連接,可以這樣設定pasv_max_port=65410以及 pasv_min_port=65400。 如果是 0 的話,表示隨機取用而不限制。

ftpd_banner=一些文字說明
當ftp用戶登入時,在 ftp client軟體上會顯示的說明文字。建議使用下麵的banner_file設定值取代這個項目。

banner_file=/path/file
指定某個純文本文件作為用戶登入vsftpd伺服器時所顯示的歡迎字眼。同時,也可以放置一些讓用戶知道本伺服器的目錄結構。

與實體用戶相關的設置

guest_enable=YES(NO)
設為YES時,任何實體賬戶,都會被假設成為guest (所以預設是NO)。guest在vsftpd 當中,預設取得ftp賬戶的相關許可權,但可以通過 guest_username來修改。
#使用虛擬賬戶登錄FTP時需要設置為YES。

guest_username=ftp
在 guest_enable=YES 時生效,指定guest的身份(虛擬賬戶統一獲得此設置賬號的許可權)。

local_enable=YES(NO)
此設置值必須要為YES時,在/etc/passwd內的賬號才能以實體用戶的方式登入vsftpd。

local_max_rate=0
實體用戶的傳輸速度限制,單位為bytes/secon,0為不限制。

chroot_local_user=YES(NO)
預設情況下,是否要將使用者限制在自己的家目錄之內(chroot)。如果是YES代表用戶預設就會被chroot;如果是NO,則預設不chroot。實際使用需要與下麵兩個參數互相參考。為了安全性,建議設置為YES。

chroot_list_enable=YES(NO)
是否啟用chroot寫入列表的功能。與下麵的chroot_list_flie有關。此值開啟時下麵的列表檔案才會生效。

chroot_list_file=/etc/vsftpd.chroot_list
如果chroot_list_enable=YES,那麼此設置生效。

userlist_enable=YES(NO)
是否藉助vsftpd的阻止機制來處理某些不受歡迎的賬號,與下麵的參數設定有關。

userlist_deny=YES(NO)
當userlist_enable=YES時才會生效。若設定為 YES 時,則當用戶賬號被列入到user_list文檔時,在該文檔內的賬號將不能登入vsftpd 伺服器;設置為NO時,則允許user_list中的賬號登入。該檔案文件名與下列設定項目有關。

userlist_file=/etc/vsftpd/user_list
若上面userlist_deny=YES時,則設置文檔生效,在這文件內的賬號都無法登錄vsftpd。

匿名用戶登入的相關設置

anonymous_enable=YES(NO)
是否允許anonymous登入vsftpd。預設是YES,下麵所有相關設置都需要設置為 anonymous_enable=YES 之後才生效。

anon_world_readable_only=YES(NO)
僅允許anonymous 具有下載可讀檔案的許可權,預設是YES。

anon_other_write_enable=YES(NO)
是否允許anonymous具有除了寫入之外的許可權,包括刪除與改寫伺服器上的文件及文件名等許可權,預設是NO。如果需要設置為YES,那麼開放給anonymous寫入的目錄需要調整許可權,讓vsftpd的PID 擁有者可以寫入才行。

anon_mkdir_write_enable=YES(NO)
是否讓anonymous具有建立目錄的許可權,預設是NO。如果要設置為YES,那麼anony_other_write_enable必須設置為YES。

anon_upload_enable=YES(NO)
是否讓anonymous具有上傳數據的功能,預設是NO。如果要設定為 YES ,則 anon_other_write_enable必須設置為YES。

deny_email_enable=YES(NO)
禁止某些特殊的email address的anonymous登入。如果以anonymous登入伺服器時,要求輸入的密碼是email address,如果不讓某些email address登入,可以使用此設置取消其登入許可權,需與下麵的設置值配合。

banned_email_file=/etc/vsftpd/banned_emails
如果deny_email_enable=YES時,可以使用此設置文件來規定哪些email address不可登入。

no_anon_password=YES(NO)
當設定為YES時,表示anonymous將會略過密碼檢驗步驟,而直接登入。

non_max_rate=0
單位為bytes/s,限制anonymous的傳輸速度,如果是0則不限制.

anon_umask=077
限制anonymous上傳檔案的許可權。

關於系統安全方面的一些設置

ascii_download_enable=YES(NO)
如果設定為YES,那麼client優先(預設)使用ASCII 格式下載文件。

ascii_upload_enable=YES(NO)
使用ASCII 格式上傳文件,預設是NO。

one_process_model=YES(NO)
此設定值比較危險,當設置為YES時,表示每個建立的session都會有一個守護進程負責,可以增加vsftpd的性能。不過除非你的系統比較安全,而且硬體配備比較高,否則容易耗盡系統資源,一般建議設置為NO。

tcp_wrappers=YES(NO)
建議設置為YES 。

xferlog_enable=YES(NO)
當設定為YES時,用戶上傳與下載文件都會被紀錄起來,記錄文件與下麵的設置值相關。

xferlog_file=/var/log/xferlog
如果xferlog_enable=YES,這裡的設置就有效。

xferlog_std_format=YES(NO)
是否設置為wu ftp相同的登錄文件格式,預設是NO,因為登錄檔會比較容易讀。如果有使用wu ftp登錄文件的分析軟體,這裡需要設定為YES。

dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log
通常/var/log/xferlog只記錄上傳與下載,此設置可以開啟用戶登錄日誌。

nopriv_user=nobody
vsftpd預設以nobody作為此服務執行者的許可權,因為nobody的許可權很低,因此即使被入侵,入侵者也僅能取得nobody的許可權。

pam_service_name=vsftpd
pam模塊,一般放置為/etc/pam.d/vsftpd文件。

4. 必要的安全放行配置

SELinux

預設情況下,vsftpd不允許賬戶登入取得家目錄數據(登入使用dir,但不能取得任何數據),主要是由SELinux引起的。如下:

[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off

#將“allow_ftpd_full_access”與“ftp_home_dir”設置為“on”即可;
#此兩項設置需要一點時間,勿著急。
[root@localhost ~]# setsebool -P allow_ftpd_full_access 1
[root@localhost ~]# setsebool -P ftp_home_dir 1

[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on

iptables

FTP使用兩個埠,另有隨機啟用的數據流埠,及被動聯機的伺服器埠等,大概需要如下規則:

#加入iptables的“ip_nat_ftp”與“ip_conntrack_ftp”兩個模塊;
#大概在底6行,以下兩者順序不可調換。
[root@localhost ~]# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

#開放port 21給訪問者使用;
#開放隨機啟動的數據流埠給訪問者連接使用;
#允許client大於1024的隨機埠主動發起數據通道連接,server端使用埠65401~65410響應。
[root@localhost ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 65401:65410 --sport 1024:65534 -j ACCEPT

#重啟iptables
service iptables restart

5. 虛擬賬戶配置

添加虛擬用戶及口令文件

#新建虛擬用戶文件
[root@localhost ~]# vim /etc/vsftpd/vftpuser.txt

test1          #用戶名
123456        #密碼
test2
123456

生成虛擬用戶口令認證文件

將vftpuser.txt虛擬用戶口令文件轉換成系統可識別的口令認證文件。

#查看系統有沒有安裝生成口令認證文件所需的軟體db4-utils,如果沒有安裝採用rpm或者yum方式安裝。
[root@localhost ~]# rpm -qa | grep db4-utils

#使用db_load命令生成虛擬用戶口令認證文件。
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

編輯vsftpd的PAM認證文件

#將文件中其他行都註釋掉,添加下麵這兩行:
[root@CentOS5 /]#vi /etc/pam.d/vsftpd

#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vftpuser
account    required     pam_userdb.so db=/etc/vsftpd/vftpuser
#路徑為生成的db路徑,去掉尾碼

#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth

建立本地映射用戶並設置宿主目錄許可權

#所有的虛擬用戶需要映射一個系統用戶,此系統用戶不需要密碼,不可登入系統
[root@localhost ~]# useradd -d /home/vftpsite -s /sbin/nologin vftpuser

#註意虛擬用戶家目錄的許可權問題,否則可能導致後面登入但無法讀寫
[root@localhost ~]# chown -R vftpuser:vftpuser /home/vftpsite

配置vsftpd.conf(虛擬用戶配置項相關)

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

guest_enable=YES #開啟虛擬用戶
guest_username=vftpuser #FTP虛擬用戶對應的系統用戶
pam_service_name=vsftpd #PAM認證文件

重啟vsftpd服務

[root@localhost ~]# service vsftpd restart

測試虛擬用戶登錄

C:\>ftp 192.168.1.254
連接到 192.168.1.254220 (vsFTPd 2.2.2)
用戶(192.168.1.254:(none)): test1
331 Please specify the password.
密碼:
230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Mar 02 21:04 test
226 Directory send OK.
ftp: 收到 62 位元組,用時 0.00秒 62.00千位元組/秒。
ftp>

6. 虛擬用戶高級設置

virtual_use_local_privs參數

#虛擬用戶與本地用戶有相同的許可權
virtual_use_local_privs=YES

#虛擬用戶與匿名用戶有相同的許可權,預設是NO。
virtual_use_local_privs=NO

各虛擬用戶獨立的配置文件(未驗證)

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

#在配置文件中指定一個存放各虛擬用戶獨立配置文件的目錄路徑,添加:
user_config_dir=/etc/vsftpd/vftpuser_conf

#編輯test1的配置文件:
[root@localhost ~]# vim /etc/vsftpd/vftpuser_conf/test1

#可針對讀/寫/下載/上傳等獨立配置許可權,如:
write_enable=YES #開放寫許可權
anon_world_readable_only=NO #開放下載許可權
anon_upload_enable=YES #開放上傳許可權
anon_mkdir_write_enable=YES #開放創建目錄許可權
anon_other_write_enable=YES #開放刪除與重命名許可權

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多時候,大家都知道,浮點型這個東西,本身存儲就是一個不確定的數值,你永遠無法知道,它是 0 = 0.00000000000000123 還是 0 = 0.00000000000999這樣的東西。也許一開始使用的時候沒有問題,但是有時候做統計的時候,就會看出端倪 簡單的舉個例子,就知道統計的時候,有 ...
  • 一、MySQL數據類型 1.數值型 SMALLINT: 2個位元組 INT: 4個位元組 // age int(10) INTEGER:INT的同義詞 BIGINT : 8個位元組 FLOAT : 4個位元組 DOUBLE : 8個位元組 //score float(10,2) 2.字元串(字元)類型 CHA ...
  • 一、資料庫的基本概念 資料庫: 以一定方式儲存在一起、能為多個用戶共用、具有儘可能小的冗餘度的特點、是與應用程式彼此獨立的數據集合。 DBMS(DataBase Management System,資料庫管理系統)和資料庫。平時談到“資料庫”可能有兩種含義:MSSQLServer、Oracle等某種 ...
  • Jexus 即 Jexus Web Server,簡稱JWS,是Linux平臺上的一款ASP.NET WEB伺服器,是 Linux、Unix、FreeBSD 等非Windows系統架設 ASP.NET WEB 伺服器的核心程式,是企業級ASP.NET跨平臺部署的一種可選方案。與其它WEB伺服器相比, ...
  • gawk 程式是Unix中原始awk程式的GNU版本。gawk程式讓流編輯器邁上了一個新的臺階,它提供了一種編程語言而不只是編輯器命令。在gawk編程語言中,可以完成下麵的事情: (1)定義變數來保存數據; (2)使用算數和字元串操作符來處理數據; (3)使用結構化編程概念(比如if then語句和 ...
  • 本文目錄: 1.6.1 基本整數運算 1.6.2 bc命令高級算術運算 使用let、$(())或$[]進行基本的整數運算,使用bc進行高級的運算,包括小數運算。其中expr命令也能進行整數運算,還能判斷參數是否為整數,具體用法見expr命令全解。 1.6.1 基本整數運算 [root@xuexi t ...
  • 在一開始使用Ubuntu時還是滿興奮的,但是在多次登錄系統後發現Ubuntu有自己設置的帳號和密碼之外,還有一個“客人登錄”。細心的人就會發現客人登錄是不需要帳號和密碼的,直接點擊就能登錄。雖然說客人登錄退出後會刪除所有設置和操作,但我還是不放心。我在網上找了一些方法,終於被我找到一個比較合適的了。 ...
  • expr命令可以實現數值運算、數值或字元串比較、字元串匹配、字元串提取、字元串長度計算等功能。它還具有幾個特殊功能,判斷變數或參數是否為整數、是否為空、是否為0等。 先看expr命令的info文檔info coreutils 'expr invocation'的翻譯。 下麵將使用示例來介紹expr的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...