Linux系統中vsftpd配置及如何添加vsFTPd用戶和設置權限


     轉載:http://blog.sina.com.cn/s/blog_3edc5e2e0102vzv8.html

vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。

    如果你想在你的Linux/Unix服務器上搭建一個安全、高性能、穩定性好的FTP 服務器,那么vsftpd可能是你的首選應用。vsftpd意思為“very secure FTP daemon(非常安全的FTP進程)”,是一個基於GPL發布的類UNIX類操作系統上運行的服務器的名字(是一種守護進程),可以運行在諸如 Linux、BSD、Solaris、HP-UX以及Irix等系統上面。vsftpd支持很多其他傳統的FTP服務器不支持的良好特性。

CentOS vsftpd軟件配置


1 安裝軟件

2 配置為超級服務

3 使用匿名用戶登入

4 本地用戶登入

5 使用虛擬用戶登入

6 使用ssl加密

7 vsftpd.conf 配置文件詳解

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1 安裝 vsftpd

centos Redhat 系統;
[root@localhost ~]# yum install vsftpd
如果是debian ubuntu 類系統;
[root@localhost ~]# apt-get install vsftpd




2 啟用超級服務啟動

[root@localhost ~]# 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




3 使用匿名用戶登入

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

anonymous_enable=YES




4 使用本地用戶登入

[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


新建個用戶 這樣重啟服務 可以在客戶端使用新建的本地用戶登入了。

5 使用虛擬用戶登入

#創建兩個目錄
[root@localhost ~]#mkdir /home/vsftpd/ftp1
[root@localhost ~]# mkdir /home/vsftpd/ftp3

[root@localhost ~]# vi /etc/vsftpd/loginuser.txt

#加入兩個用戶  奇數行代表用戶名偶數行代表密碼
xftpadmin
123456
xftpuser
123456

#執行命令生成虛擬數據庫
[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
       #我們建立的虛擬用戶將采用PAM進行驗證,這是通過/etc/vsftpd.conf文件中的語句pam_service_name=vsftpd.vu來啟用的。

vsftpd使用的pam文件
auth    sufficient      pam_userdb.so db=/etc/vsftpd/login
account sufficient      pam_userdb.so db=/etc/vsftpd/login

#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 ~]# touch xftpuser xftpadmin #創建兩個文件

[root@localhost ~]# vi /etc/vsftpd/user_config/xftpadmin

#加入以下內容擁有所有權限
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/ftp3

[root@localhost ~]# vi /etc/vsftpd/user_config/xftpuser

#加入以下內容只讀權限
local_root=/home/vsftpd/ftp1

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


這樣就可以用虛擬賬號登入了  ftpadmin、ftpuser分別登入之后訪問的是ftp3、ftp1目錄。


6 使用ssl登入

[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem

4 修改vsftpd.conf文件
[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加密連接了 。

  7 vsftpd.conf 設定詳細說明
  /etc/vsftpd/vsftpd.conf 本身就是一個挺詳細的配置文件,且使用『 man 5 vsftpd.conf 』則可以得到完整的參數說明。

    與主機較相關的設定值
        connect_from_port_20=YES (NO)
        ftp-data 的端口;

        listen_port=21
        vsftpd 使用的命令通道之端口號,如果您想要使用非正規的端口,在這個設定項目修改吧! 不過你必須要知道,這個設定值僅適合以 stand alone 的方式來啟動(對於 super daemon 無效)

        dirmessage_enable=YES (NO)
        當用戶進入某個目錄時,會顯示該目錄需要注意的內容,顯示的文件默認是 .message ,你可以使用底下的設定項目來修改!

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

        listen=YES (NO)
        若設定為 YES 表示 vsftpd 是以 standalone 的方式來啟動的

        pasv_enable=YES (NO)
        啟動被動式聯機模式(passive mode),一定要設定為 YES 的

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

        write_enable=YES (NO)
        如果你允許用戶上傳數據時,就要啟動這個設定值;

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

        accept_timeout=60
        當用戶以被動式 PASV 來進行數據傳輸時,如果主機啟用 passive port 並等待 client 超過 60 秒而無回應, 那么就給他強制斷線!這個設定值與 connect_timeout 類似,不過一個是管理主動聯機,一個管理被動聯機。

        data_connection_timeout=300
        如果服務器與客戶端的數據聯機已經成功建立 (不論主動還是被動聯機),但是可能由於線路問題導致 300 秒內還是無法順利的完成數據的傳送,那客戶端的聯機就會被我們的 vsftpd 強制剔除!

        idle_session_timeout=300
        如果使用者在 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 number 有關,如果您想要使用 65400 到 65410 這 11 個 port 來進行被動式聯機模式的連接,可以這樣設定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的話,表示隨機取用而不限制。

        ftpd_banner=一些文字說明
        當使用者聯機進入到 vsftpd 時,在 FTP 客戶端軟件上頭會顯示的說明文字。不過,這個設定值數據比較少啦! 建議你可以使用底下的設定值來取代這個項目;

        banner_file=/path/file
        這個項目可以指定某個純文本檔作為使用者登入 vsftpd 服務器時所顯示的歡迎字眼。

    與實體用戶較相關的設定值
        guest_enable=YES (NO)
        若這個值設定為 YES 時,那么任何非 anonymous 登入的賬號,均會被假設成為 guest (訪客)   至於訪客在 vsftpd 當中,預設會取得 ftp 這個使用者的相關權限。但可以透過 guest_username 來修改。

        guest_username=ftp
        在 guest_enable=YES 時才會生效,指定訪客的身份而已。

        local_enable=YES (NO)
        這個設定值必須要為 YES 時,在 /etc/passwd 內的賬號才能以實體用戶的方式登入我們的 vsftpd 主機

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

        chroot_local_user=YES (NO)
        將用戶限制在自己的家目錄之內(chroot)!這個設定在 vsftpd 當中預設是 NO,因為有底下兩個設定項目的輔助喔! 所以不需要啟動他!
        chroot_list_enable=YES (NO)
        是否啟用將某些實體用戶限制在他們的家目錄內?預設是 NO ,不過,如果您想要讓某些使用者無法離開他們的家目錄時, 可以考慮將這個設定為 YES ,並且規划下個設定值

        chroot_list_file=/etc/vsftpd.chroot_list
        如果 chroot_list_enable=YES 那么就可以設定這個項目了! 他里面可以規定那一個實體用戶會被限制在自己的家目錄內而無法離開!(chroot) 一行一個賬號即可!

        userlist_enable=YES (NO)
        是否藉助 vsftpd 的抵擋機制來處理某些不受歡迎的賬號,與底下的設定有關;

        userlist_deny=YES (NO)
        當 userlist_enable=YES 時才會生效的設定,若此設定值為 YES 時,則當使用者賬號被列入到某個文件時, 在該文件內的使用者將無法登入 vsftpd 服務器!該文件名與下列設定項目有關。
        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 不可登入我們的 vsftpd 喔!在上面設定的文件內,一行輸入一個 email address 即可!

        no_anon_password=YES (NO)
        當設定為 YES 時,表示 anonymous 將會略過密碼檢驗步驟,而直接進入 vsftpd 服務器內喔!所以一般預設都是 NO

        anon_max_rate=0
        這個設定值后面接的數值單位為 bytes/秒 ,限制 anonymous 的傳輸速度,如果是 0 則不限制(由最大帶寬所限制),如果您想讓 anonymous 僅有 30 KB/s 的速度,可以設定『anon_max_rate=30000』

        anon_umask=077
        限制 anonymous 的權限!如果是 077 則 anonymous 傳送過來的文件 權限會是 -rw-------

    關於系統安全方面的一些設定值
        ascii_download_enable=YES (NO)
        如果設定為 YES ,那么 client 就可以使用 ASCII 格式下載文件。

        ascii_upload_enable=YES (NO)
        與上一個設定類似的,只是這個設定針對上傳而言!預設是 NO

        one_process_model=YES (NO)
        這個設定項目比較危險一點~當設定為 YES 時,表示每個建立的聯機 都會擁有一支 process 在負責,可以增加 vsftpd 的效能。不過, 除非您的系統比較安全,而且硬件配備比較高,否則容易耗盡系統資源  一般建議設定為 NO

        tcp_wrappers=YES (NO)
        當然我們都習慣支持 TCP Wrappers 的  所以設定為 YES

        xferlog_enable=YES (NO)
        當設定為 YES 時,使用者上傳與下載文件都會被紀錄起來。記錄的文件與下一個設定項目有關:

        xferlog_file=/var/log/vsftpd.log
        如果上一個 xferlog_enable=YES 的話,這里就可以設定了!這個是登文件的名稱

        xferlog_std_format=YES (NO)
        是否設定為 wu ftp 相同的登錄檔格式?!預設為 NO ,因為登錄檔會比較容易讀! 不過,如果您有使用 wu ftp 登錄文件的分析軟件,這里才需要設定為 YES

        nopriv_user=nobody
        我們的 vsftpd 預設以 nobody 作為此一服務執行者的權限。因為 nobody 的權限 相當的低,因此即使被入侵,入侵者僅能取得 nobody 的權限

        pam_service_name=vsftpd
        這個是 pam 模塊的名稱,我們放置在 /etc/pam.d/vsftpd 即是這個


在linux中添加ftp用戶,並設置相應的權限,操作步驟如下:
環境:ftp為vsftp。被限制用戶名為test。被限制路徑為/home/test

 

## 增加用戶test,並制定test用戶的主目錄為/home/test

useradd -d /home/test test

## 為test設置密碼

passwd test

## 更改用戶相應的權限設置,限定用戶test不能telnet,只能ftp

usermod -s /sbin/nologin test

## 恢復登錄權限

usermod -s /bin/bash

## 更改用戶test的主目錄為/test

usermod -d /test test


限制用戶只能訪問/home/test,不能訪問其他路徑
修改/etc/vsftpd/vsftpd.conf如下:

 

## 限制訪問自身目錄

chroot_local_user=YES

chroot_list_enable=YES

## 只有在chroot_list中的用戶才能跳出自己的主目錄

chroot_list_file=/etc/vsftpd/chroot_list

創建chroot_list文件並將ftp用戶名寫進去


改完配置文件,不要忘記重啟vsFTPd服務器

 

/etc/init.d/vsftpd restart


如果需要允許用戶修改密碼,但是又沒有telnet登錄系統的權限:

 

##  用戶telnet后將直接進入改密界面

usermod -s /usr/bin/passwd test

 



 

1、/etc/vsftd/vsftpd.conf增加

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

2、/etc/vsftpd/user_list

增加訪問的用戶

3、/etc/vsftpd/ftpusers

添加拒絕訪問的用戶

4、啟動/etc/init.d/vsftpd start

5、netstat -ntlp檢查21端口是否開啟

6、iptables -nvL檢查防火牆是否開啟21端口

 


免責聲明!

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



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