coffee in, code out

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

          操作系統(tǒng):ubuntu (GNU/Linux)

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

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

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

          vsftpd進程已開啟

          netstat -tnl|grep :21

          端口21正在被監(jiān)聽

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

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

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

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

          write_enable=YES        # 表示服務(wù)器接收與寫有關(guān)的控制命令

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


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

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

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

          chown_uploads=YES        # 這兩個選項是一對相關(guān)的配置,表示匿名用戶上傳的文件所以者將變?yōu)閣hoever,這個配置是為了安全目的
          chown_username=whoever        # 文件所有者變?yōu)槠渌脩艉螅涿脩魧⒉荒茉賹ξ募M行刪除,甚至讀操作,例如作業(yè)上交FTP

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

          nopriv_user=ftpsecure        # 表示當vsftpd進程處于非特權(quán)運行狀態(tài)時,所使用的用戶身份是ftpsecure

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

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

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

          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    # 設(shè)為NO后,這些用戶登錄FTP服務(wù)器后,他們看到的根目錄是他們自己的個人目錄,也就是說雖然在實際的文件系統(tǒng)中,這些用戶個人目錄的上級還有目錄,但是不能切換到這些上級目錄

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

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

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



          匿名用戶配置:
          配置匿名用戶,使得
          1 FTP服務(wù)器支持匿名用戶(帳號:anonymous   密碼:任意)登錄
          2 只要ftp用戶(操作系統(tǒng)用戶)在操作系統(tǒng)有讀權(quán)限,就可以下載文件
          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服務(wù)器(127.0.0.1)

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

          測試完畢

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

          2 停止vsftpd服務(wù)
          sudo killall vsftpd

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

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

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

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

          7 復(fù)制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種。匿名用戶,本地用戶。還有一種就是接下來介紹的虛擬用戶,該用戶無法登錄你的操作系統(tǒng),但是能夠登錄FTP服務(wù)器,而且當存在很多虛擬用戶,您并不需要在操作系統(tǒng)上為每個虛擬用戶新建一個不可登錄的本地用戶,只需要一個。而且還有一個更強大的用法,我們可以通過為每個虛擬帳號創(chuàng)建一個配置文件來不同虛擬帳號不同的權(quán)限,目錄,這將對我們管理FTP用戶有很大的方便。

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

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

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

          將數(shù)據(jù)庫文件導(dǎo)入到剛剛產(chǎn)生的目錄
          sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db

          將數(shù)據(jù)庫文件設(shè)置權(quán)限為600,并不需要被其他用戶讀,修改
          sudo chmod 600 /etc/vsftpd/vsftpd_login.db

          3 新建/etc/pam.d/vsftpd_login文件,輸入以下內(nèi)容
          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,當以后認證本地用戶時,會根據(jù)/etc/pam.d/vsftpd文件的配置內(nèi)容進行認證。

          4 建立所有FTP虛擬用戶帳號使用的操作系統(tǒng)帳號,需要我們自己新建目錄,并設(shè)置該帳號工作目錄的權(quán)限,所有者(貌似可以修改使之自動新建目錄)
          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配置文件中添加有關(guān)虛擬帳號用戶的配置內(nèi)容
          guest_enable=YES
          guest_username=ftp_virt
          pam_service_name=vsftpd_login

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

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

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

          7 配置虛擬用戶配置文件
          在/etc/vsftpd下,我們新建文件xuni1,輸入以下內(nèi)容
          xuni1local_root=/home/ftpsite
          新建文件xuni2,輸入以下內(nèi)容
          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
          先關(guān)閉
          sudo killall vsftpd
          啟動
          sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

          測試

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










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

          評論

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

          # re: ubuntu架設(shè)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  回復(fù)  更多評論
            


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 旺苍县| 湖口县| 滨州市| 娄烦县| 利川市| 年辖:市辖区| 新竹县| 朝阳县| 岑巩县| 桦甸市| 江达县| 涿州市| 集贤县| 万年县| 开封县| 石渠县| 安龙县| 肇庆市| 南投市| 陕西省| 巩留县| 山东| 五常市| 克拉玛依市| 松桃| 垫江县| 桐柏县| 准格尔旗| 潜山县| 望都县| 贵州省| 慈溪市| 湘西| 巴东县| 综艺| 潢川县| 奉节县| 和田县| 寿阳县| 正镶白旗| 息烽县|