coffee in, code out

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            2 隨筆 :: -1 文章 :: 2 評論 :: 0 Trackbacks
          Linux Ubuntu上架設FTP

          操作系統:ubuntu (GNU/Linux)

          為了在機子上架設ftp服務器,我們需要安裝ftp服務器軟件。Linux下具有代表性的ftp服務器軟件有Wu-FTP,ProFTP和Vsftp。
          Wu-FTP(Washington University FTP)由美國華盛頓大學開發。它的功能強大,配置較復制。由于開發時間較早,應用十分廣泛,也因此成為黑客們主要的攻擊目標。
          ProFTP針對Wu-FTP的弱項而開發,在安全性方面進行了改進,并提供了一些Wu-FTP沒有的功能,大大簡化了架設和管理FTP服務器的工作。
          Vsftp在安全性,高性能及穩定性3個方面上有上佳的表現。它提供的主要功能包括虛擬IP設置,虛擬用戶,standalone(可自行單獨啟動的daemon),inetd操作模式(由一支特殊的super daemon管理),強大的單用戶設置能力以及帶寬限流等。接下來我們主要講解在ubuntu上如何架設vsftpd。

          vsftpd的安裝:
          在ubuntu可直接通過apt安裝    sudo apt-get install vsftpd

          安裝完畢,檢查vsftpd進程是否已啟動,可以查看進程或者查看監聽端口
          ps -eaf|grep vsftpd

          vsftpd進程已開啟

          netstat -tnl|grep :21

          端口21正在被監聽

          vsftpd的配置文件:
          在ubuntu中,vsftpd的主要配置文件分布如下:
          /etc/vsftpd.conf    vsftpd服務器的配置文件
          /usr/sbin/vsftpd    vsftpd服務器的進程文件
          /etc/pam.d/vsftpd   vsftpd服務器的PAM接口配置文件
          /var/ftp            vsftpd服務器匿名用戶的工作目錄

          配置vsftpd服務器:
          vsftpd服務器的配置文件以及各參數代表的意義如下:
          /etc/vsftpd.conf
          vsftpd.conf
          listen=YES
          listen_ipv6=YES    # listen=YES和listen_ipv6=YES 設為YES表示將以獨立的方式運行(可自行單獨啟動的daemon),前者監聽ipv4,后者監聽ipv6,但兩者不能同時在一個配置文件中設置

          anonymous_enable=YES        # 表示允許匿名用戶登錄FTP服務器
          anon_world_readable_only=NO    # 只要ftp用戶在操作系統中有讀權限,就可以下載文件
          anon_root=/var/ftp/anonymous    # 匿名用戶登錄后進入到/var/ftp/anonymous目錄中,可以下載該目錄中的文件
          anon_uploads_enable=YES        # 匿名用戶可以上傳文件
          anon_mkdir_write_enable=YES    # 匿名用戶可以在服務器上創建目錄
          anon_other_write_enable=YES     # 匿名用戶可以在服務器上進行命名,刪除等寫操作

          local_enable=YES        # 表示允許本地用戶帳號登錄
          local_umask=022            # 表示本地用戶創建新的文件時,該文件初始的權限值。022表示初始的權限值是創建者有全部的權限,其他用戶(包括組用戶,其他用戶)只有讀和執行權限,077表示初始創建者具有全部權限,其他用戶沒有權限

          write_enable=YES        # 表示服務器接收與寫有關的控制命令

          dirmessage_enable=YES        # 表示用戶第一次進入一個新目錄時,會給用戶一些提示信息
          use_localtime=YES        # 表示服務器顯示本地時區時間,默認是顯示GMT時間


          xferlog_enable=YES        # 允許產生日志
          xferlog_std_format=YES        # 日志采用標準的xferlog格式
          xferlog_file=/var/log/vsftpd.log# 日志文件以及所在目錄

          connect_from_port_20=YES    # 使用20端口作為建立數據連接時的源端口

          pam_service_name=vsftpd        # 指定PAM服務配置文件的名字,在/etc/pam.d

          chown_uploads=YES        # 這兩個選項是一對相關的配置,表示匿名用戶上傳的文件所以者將變為whoever,這個配置是為了安全目的
          chown_username=whoever        # 文件所有者變為其他用戶后,匿名用戶將不能再對文件進行刪除,甚至讀操作,例如作業上交FTP

          idle_session_timeout=600    # 表示控制連接的超時值為600秒
          data_connection_timeout=120    # 表示數據連接的超時值為120秒

          nopriv_user=ftpsecure        # 表示當vsftpd進程處于非特權運行狀態時,所使用的用戶身份是ftpsecure

          async_abor_enable=NO        # 表示vsftpd支持”async ABOR“的FTP命令,這條命令會影響vsftpd的安全,一般使用默認的NO設置

          ascii_upload_enable=YES
          ascii_download_enable=YES    # 表示上傳下載文件時真正允許ASCII模式。有些FTP服務器在實現ACSII傳輸模式時,容易遭受DoS攻擊。為了避免這種情況的發送,vsftpd給客戶端回應時可以假裝允AXSCII模式,但實際上使用的是binary模式,通過把這兩個值設置為NO來達到。

          ftpd_banner=Welcome to stone FTP service.    # 表示用戶登錄時,將顯示Welcome to stone FTP service信息,沒有這個選項時,將顯示vsftpd服務器的名稱和版本信息,存在安全問題,因而這樣做的目的是為了隱藏這些信息

          deny_email_enable=YES                # 匿名用戶如果輸入aaa@做為登錄密碼,將被拒絕,主要目的是為了防止一些自動登錄工具進行登錄。
          banned_email_file=/etc/vsftpd.banned_emails    # 指定的deny_mail的文件

          chroot_list_enable=YES                # 這兩個選項制定了一個用戶列表,這個列表放在/etc/vsftpd/chroot_list文件中。當 chroot_local_user
          chroot_list_file=/etc/vsftpd/chroot_list    # 設為NO后,這些用戶登錄FTP服務器后,他們看到的根目錄是他們自己的個人目錄,也就是說雖然在實際的文件系統中,這些用戶個人目錄的上級還有目錄,但是不能切換到這些上級目錄

          chroot_local_user=YES                # 當chroot_local_user被設置為YES時,上述用戶列表將不會被限制在個人目錄中,可以進一步轉到其他目錄

          ls_recurse_enable=YES        # 表示客戶端在使用ls命令時可以加-R參數,-R參數表示ls命令可以列出整個目錄樹的內容,需要一些處理時間,特別存在惡意用戶時,情況會更嚴重

          anon_max_rate=0        # 用于設置匿名用戶客戶端能夠達到的最大速率,其值是一個數值,單位為b/s,0表示無限制
          local_max_rate=0    # 該選項限制的是本地用戶的速率
          max_clients=0        # vsftpd能接收的最大客戶端連接數
          max_per_ip=5        # 限制每一臺主機可以連入的客戶端數,用戶為了加快下載速度,可能會打開很多的客戶端連接,影響其他用戶的正常使用



          匿名用戶配置:
          配置匿名用戶,使得
          1 FTP服務器支持匿名用戶(帳號:anonymous   密碼:任意)登錄
          2 只要ftp用戶(操作系統用戶)在操作系統有讀權限,就可以下載文件
          3 匿名用戶登錄后進入/var/ftp/anonymous目錄,可以下載該目錄中的文件
          4 可以上傳文件到目錄/var/ftp/anonymous/upload目錄中,但不能下載或刪除該目錄中的文件

          利用vim修改vsftpd.conf文件
          anonymous_enable=YES
          anon_world_readable_only=NO
          anon_root=/var/ftp/anonymous
          anon_upload_enable=YES
          chown_uploads=YES

          在/var目錄下新建目錄anonymous,所以者為root,在/var/anonymous目錄下新建目錄upload,所有者為ftp

          重啟vsftpd進程
          sudo killall -HUP vsftpd

          測試匿名用戶
          以匿名用戶登錄本地FTP服務器(127.0.0.1)

          列出目錄,下載文件
          進入upload目錄,上傳文件,列出目錄

          測試完畢

          虛擬主機的配置:
          何為虛擬主機?vsftpd的虛擬主機是指在一臺主機上配置多個vsftpd服務,各個vsftpd服務可以采用不同的配置,給用戶的感覺好像這些vsftpd服務是不同的主機上運行的。vsftpd的虛擬主機是基于IP地址。既然是基于IP地址的,那您可能會問我只有一個網卡一個IP怎么配置虛擬主機?
          這時,我們可以利用linux的邏輯網卡來實現不同IP。
          一個虛擬主機的配置例子:
          1 增加邏輯網卡,我現在的IP地址為192.168.1.100,增加邏輯網卡IP為192.168.1.101
          sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up

          2 停止vsftpd服務
          sudo killall vsftpd

          3 修改vsftpd.conf配置,增加以下一欄
          listen_address=192.168.1.100

          4 重新啟動vsftpd服務 & 表示后臺運行
          sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

          5 為第二個vsftpd服務器建立匿名用戶對應的本地帳號以及個人目錄,參數-d指定個人目錄,需自己建立,-s指定登錄shell,/sbin/nologin是一種不登錄shell
          sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp

          6 創建/var/ftp/myftp目錄,改變/var/ftp/myftp的所有者(默認就是root),目的是使myftp用戶對其沒有寫權限
          sudo mkdir /var/ftp/myftp
          sudo chown root /var/ftp/myftp

          7 復制vsftpd.conf,命名為myvsftpd.conf放在/etc目錄下
          sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf

          8 修改myvsftp.conf
          ftpd_banner=Welcome to my virtual FTP server
          ftp_username=myftp
          listen=YES
          listen_address=192.168.1.101

          9 啟動第二個vsftpd
          sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf

          測試虛擬主機:
          登錄192.168.1.100 和 192.168.1.101

          測試完畢

          虛擬用戶的配置:
          vsftpd中的用戶有3種。匿名用戶,本地用戶。還有一種就是接下來介紹的虛擬用戶,該用戶無法登錄你的操作系統,但是能夠登錄FTP服務器,而且當存在很多虛擬用戶,您并不需要在操作系統上為每個虛擬用戶新建一個不可登錄的本地用戶,只需要一個。而且還有一個更強大的用法,我們可以通過為每個虛擬帳號創建一個配置文件來不同虛擬帳號不同的權限,目錄,這將對我們管理FTP用戶有很大的方便。

          1 新建user.txt,輸入以下內容,表示有2個虛擬用戶,分別為xuni1(密碼pass1),xuni2(密碼pass2)
          user.txtxuni1
          pass1
          xuni2
          pass2

          2 接下來我們需要生成虛擬帳號數據庫,先安裝DB庫工具
          sudo apt-get install db4.8-util

          在/etc下新建目錄/etc/vsftpd
          sudo mkdir /etc/vsftpd

          將數據庫文件導入到剛剛產生的目錄
          sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db

          將數據庫文件設置權限為600,并不需要被其他用戶讀,修改
          sudo chmod 600 /etc/vsftpd/vsftpd_login.db

          3 新建/etc/pam.d/vsftpd_login文件,輸入以下內容
          vsftpd_login
          auth required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login
          account required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login

          所有支持PAM的程序都有一個與PAM進行對接的配置文件,它們存放在/etc/pam.d目錄,vsftpd與PAM的對接配置文件名可以由vsftpd.conf文件中的pam_service_name選項指定,默認是pam_service_name=vsftpd,當以后認證本地用戶時,會根據/etc/pam.d/vsftpd文件的配置內容進行認證。

          4 建立所有FTP虛擬用戶帳號使用的操作系統帳號,需要我們自己新建目錄,并設置該帳號工作目錄的權限,所有者(貌似可以修改使之自動新建目錄)
          sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
          sudo mkdir /home/ftpsite
          sudo chown ftp_virt /home/ftpsite
          sudo chgrp ftp_virt /home/ftpsite
          sudo chmod 700 /home/ftpsite

          5 在vsftpd.conf配置文件中添加有關虛擬帳號用戶的配置內容
          guest_enable=YES
          guest_username=ftp_virt
          pam_service_name=vsftpd_login

          最后一項將于原來的默認值沖突,可以注釋掉原來的項,重啟vsftpd之后,你將發現本地用戶無法登錄vsftpd了

          6 設置虛擬用戶的權限,我們可以通過添加下面這一行,來指定放置用戶配置文件的目錄位置是/etc/vsftpd
          user_config_dir=/etc/vsftpd

          解釋下這一項的作用,添加這一項之后,當我們以虛擬用戶登錄vsftpd時,服務器將會尋找/etc/vsftpd目錄下于虛擬用戶名相同的配置文件,從而確定該虛擬用戶的權限等屬性。這方便了我們管理FTP虛擬用戶。

          7 配置虛擬用戶配置文件
          在/etc/vsftpd下,我們新建文件xuni1,輸入以下內容
          xuni1local_root=/home/ftpsite
          新建文件xuni2,輸入以下內容
          xuni2
          local_root=/home/ftpsite
          anon_mkdir_write_enable=YES
          anon_other_write_enable=YES
          anon_upload_enable=YES
          anon_world_readable_only=YES
          write_enable=YES

          8 然后重啟vsftpd
          先關閉
          sudo killall vsftpd
          啟動
          sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

          測試

          虛擬用戶具體的權限,目錄配置方法將可以通過各種方法來配置,這里不再描述。










          繼續編輯中...
          posted on 2012-01-31 18:52 stonestyle 閱讀(11908) 評論(2)  編輯  收藏

          評論

          # re: ubuntu架設ftp 2014-10-27 10:08 craftsmen
          按照您的教程后用虛擬用戶登錄發圖片后出現
          530 Login incorrect.
          錯誤,希望得到指正。  回復  更多評論
            

          # re: ubuntu架設ftp[未登錄] 2015-04-15 21:05 dddd
          auth required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login
          account required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login
          這里少了個vsftpd_login,少了個D  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 和政县| 搜索| 四会市| 寻甸| 河曲县| 噶尔县| 罗山县| 手游| 恩施市| 庆阳市| 赤城县| 东港市| 霍山县| 庐江县| 凭祥市| 聂拉木县| 阿拉善盟| 客服| 康乐县| 雷山县| 大悟县| 来安县| 新闻| 拉孜县| 龙岩市| 涿鹿县| 双峰县| 荣成市| 平遥县| 日喀则市| 金坛市| 九龙坡区| 包头市| 绿春县| 西城区| 丹阳市| 永泰县| 宜丰县| 德庆县| 安仁县| 江陵县|