2011年5月21日 星期六

Ubuntu - vsftpd - 安裝與設定實作

一、vsftpd 安裝
  • 安裝完 Ubuntu Server 版作業系統後,以系統帳號/密碼登入Ubuntu系統
          sysadmin name : my english name
          sysadmin passwd : yuanxxxx
          MySQL passwd : mysqlxxxx
  • Ubuntu Server 主機 IP 建議使用固定 IP,不建議讓個人的 IP分享器自動指定 IP。
  • 確認 Ubuntu Server 主機是否能連線到網際網路 : ping www.google.com;若無法連上網路,則必須修改 2 個設定檔
    sudo vi /etc/network/interfaces
      
          sudo vi /etc/resolv.conf


    • 若還是連不上,則必須檢查 ISP-DNS主機 IP 是否輸入正確 或 Ubuntu Server 主機 IP與個人的 IP分享器 (My AP : ZyXEL P-334WT) 設定上是否有相衝突...等。例如:個人的AP是從 192.168.1.31開始動態指定 IP 給家裡網路的任一電腦,而你卻設定 Ubuntu Server 主機 IP=192.168.3.3,這樣就不行了。
    • 確定可以連上網路後,您可以加入喜愛的台灣區的「套件庫伺服主機位置」
      sudo vi /etc/apt/sources.list  

    • 最後依序輸入以下指令安裝「vsftpd」、「fail2ban」 :
      sudo apt-get update
      sudo apt-get upgrade
      sudo apt-get install vsftpd fail2ban

    二、vsftpd.conf 設定 (sudo vi /etc/vsftpd.conf)

        1. 參考網站: 


        2. 設定原則(我的設定):
    • 原則 (1): 允許匿名用戶登入,不允許匿名用戶上傳資料與建立目錄,但允許匿名用戶下載資料。
    •  原則 (2):允許本地用戶登入,而且只有特定的人(只有chroot_list內的本地用戶)不被 chroot.
    • 最大同時上線人數限制為 10 人,且同一 IP 來源最大連線數量為 2 個
    • 使用本地的時間,而非 GMT 時間
    •  

          
        3. 參數設定(我的設定):
          【 匿名用戶設定 】
    • 允許匿名用戶登入:anonymous_enable=YES (預設是 NO)
    • 不允許匿名用戶上傳資料: #anon_upload_enable=YES(加註解=使用預設值)
    • 不允許匿名用戶建立目錄: #anon_mkdir_write_enable=YES (加註解=使用預設值) 

          【 本地用戶設定 / 本地用戶設定檔在 /etc/passwd 】
    • 允許本地用戶登入:local_enable=YES
    • 本地用戶上傳檔案,該檔案的預設權限:local_umask=022
    •  
    • (NOTES : 以下三個參數都設定成 YES 表示:只有chroot_list內的使用者才不會被限制
    • 設定本地用戶限制在自己的家目錄之內:chroot_local_user=YES
    • 設定某些本地用戶限制在他們自己的家目錄內:chroot_list_enable=YES
    • 規劃那一個本地用戶會被限制在自己的家目錄內:chroot_list_file=/etc/vsftpd.chroot_list 
          
          【 全域設定 / 針對所有使用者的設定值 】
    • vsftpd 是以 standalone 的方式來啟動的:listen=YES (預設是 NO)
    • 允許使用者上傳資料:write_enable=YES 
    • 當使用者進入某個目錄時,會顯示該目錄需要注意的內容:dirmessage_enable=YES (預設是 NO= 不顯示)
    • 使用本地時間:use_localtime=YES(預設是 NO= GMT / 格林威治時間
    • 啟用上傳/下載日誌記錄:xferlog_enable=YES
    • 主動式連線的埠口:connect_from_port_20=YES
    • 設定最大同時上線人數max_clients=10
    • 設定同一 IP 來源最大連線數量:max_per_ip=2
    • 設定歡迎文字訊息:ftpd_banner=[歡迎文字訊息] 
         4. 儲存 vsftpd.conf 設定檔後,記得重新套用新的設定, 並啟動 vsftpd
    • sudo /etc/init.d/vsftpd restart


    三、為了能夠讓家裡多部電腦可以同時上網,原本就架設了一個 IP分享器 (My AP : ZyXEL P-334WT)。該台AP的設定我是用: PPPoE+動態IP,有設置無線網路WEP金鑰,並將 ISP (Seednet) 給的帳號、密碼輸入在 AP裡面,這樣家裡任一台電腦的網卡只要設定 dhcp, 就可以免撥接程式上網囉~





    而架了 Ubuntu Server 主機後,我是設定一個固定 IP 給 Server 主機 (IP=192.168.1.1xx ),而且並沒有在 AP裡面做特別設定, 這台 AP 好像知道這個 IP 已經被使用了,所以它也不會指定該 IP給家裡其他的電腦使用;一切都ok,我可以用筆電的 FileZilla Client 程式上傳/下載資料到 Ubuntu 主機.....不過,這只能說是 Intranet FTP Server.



    四、從網際網路 Internet 連線登入到 Ubuntu FTP Server 主機

            接下來,我想要讓這台 Ubuntu FTP Server 可以像中山、義守等大學FTP一樣, 可以供許多人從網際網路 Internet 連線登入這台 Ubuntu FTP Server 主機 上傳/下載資料。

            一開始我以為使用下列網址查詢本機"外部 IP Address"後,並將外部 IP 輸入至 /etc/network/interfaces ,且重新啟動網卡後就能夠利用 FTP Client 從"Internet"上傳/下載資料,但 很不幸的, 就是不行。
    >>查詢本機"外部 IP Address"網址:http://dir.twseo.org/ip-check.php

        經測試發現,當我重啟 AP, 再用筆電輸入上述網址查詢本機"外部 IP Address"時,咦  外部 IP 會變動;我也從網路上找到該台 AP 的設定手冊來進行設定,可是都無法成功。

            最後 我決定向 ISP 申請"固定IP" (PPPoE+固定IP 模式),這個很容易申請,只要進入 ISP業者網站線上申請即可。YES!  我得到一個固定 IP=221.xxx.yyy.zzz;接著 必須在 AP重新設定帳號(因為根據 ISP-Seednet 規定,若要使用固定連線,則 「T帳號」的後面必須加「#」),儲存設定並重啟 AP後,您可以請您的朋友試著從他的電腦 PING 這個固定 IP,若正常,表示該台 AP已擁有固定IP。

            若一切ok,最後需再進入 IP分享器 (My AP : ZyXEL P-334WT) 設定 SUA/NAT。如此才能讓外部電腦從網際網路 Internet 連線(到AP, 再由AP轉址)登入這台 Ubuntu FTP Server 主機。(WAN / 外部電腦<-->個人的 IP分享器<-->內部 Server)




    五、建立一些使用者帳號,允許他們可以從 Ubuntu FTP Server 公用下載資料區 download資料 (但限制上傳)
    1. 增加一個 Linux 使用者 [tim]:sudo adduser tim
    2. 這時候您若用 FileZilla Client / tim 帳號登入時,你會發現 tim用戶只能看到根目錄(其實是 tim用戶被限制在自己的家目錄 /home/tim/)
    3. 若您想要 tim用戶不被限制在自己的家目錄,則您必須將 tim 加入 /etc/vsftpd.chroot_list 中。



    六、如何加大 Ubuntu 主機硬碟容量 (mount other HDD to ftp/file Server)

        1. 參考網站: 

        2. 實作目標:將一顆 30GB 硬碟加入 Ubuntu Server
    • 主機板 Primary IDE / Master 的裝置與作用: : Maxtor 80GB ..for Ubuntu Server OS.
    • 主機板 Primary IDE / Slave 的裝置與作用: : DVD RW ROM.
    • 主機板 Secondary IDE / Master 的裝置與作用: : WD 30GB ..NEW HDD.
    • 若硬體安裝正確,您可以在 BIOS 看到新的硬碟裝置。 
    • 最好先用 Disk 工具 (例如:spfdisk, MHDD)進行磁碟掃描,個人偏好 spfdisk.
    • >>進入 Ubuntu Server..
        3. 新硬碟設定步驟:
    • 首先,我們必須找出硬碟代號:ls -l /dev/disk/ (by-id, by-path, by-uuid), 結果顯示如下:

    • 或者也可以使用:ll /dev/sd*  列出所有硬碟代號。這時候,得知新硬碟代號為「sdb」
    • 列出所有硬碟的資訊 (大小、磁柱、分割區partition..等):sudo fdisk -l
    • 硬碟切割:sudo fdisk /dev/sdb  ,>>開始對新硬碟進行切割 >>如下圖:

    • 因為我將整顆 30GB硬碟全部給一個 Partition, 所以只會看到「sdb1」;接下來就要格式化硬碟。
    • 格式化硬碟 (make filesystem, 「mkfs」/「mke2fs」),我們使用簡單的 '' 指令就好。
    • 在使用 mkfs 指令前,先看看 mkfs 指令支援哪些檔案格式:sudo mkfs [tab][tab]
    • 將新建好的 partition 格式化 ext4 格式:sudo mkfs -t ext4 /dev/sdb1
    • 磁碟檢查:fsck -C -f /dev/sdb1 (注意:fsck 前必須卸載磁碟;若檔案系統無太大問題,也不要輕易執行此命令)
    • 建立掛載點資料夾:sudo mkdir /mnt/HDD30G
    • 掛載 sdb1 測試:mount /dev/sdb1 /mnt/HDD30G  >> 掛載成功後,可以用指令 df (display filesystem -h) 確認是否掛載ok。df 另一個作用是查看根目錄的剩餘容量 (df /)。

    • 重開機後,您會發現剛剛已經掛載的 sdb1 並不會自動地被 mount 起來;您必須修改 /etc/fstab 檔案 (fstab=filesystem table),如下圖:

    • 使用 FileZilla Client 登入 Ubuntu FTP Server,測試是否可以上傳檔案到新的硬碟。若無法上傳,您必須先檢查登入帳號是否有該目錄 (/mnt/HDD30G) 的存取權限。(chgrp,chown,chmod)
    •  


    ~Done~

      沒有留言: