主頁(yè) > 知識(shí)庫(kù) > FreeBSD FTP 的架設(shè)教程

FreeBSD FTP 的架設(shè)教程

熱門標(biāo)簽:駐馬店電話自動(dòng)外呼系統(tǒng)怎么樣 地圖標(biāo)注山峰最低高度 信陽(yáng)外呼系統(tǒng)廠家 地圖標(biāo)注與注記總結(jié) 赤峰防封電銷卡 南京自動(dòng)外呼系統(tǒng)有哪些 人工電銷和ai機(jī)器人的區(qū)別 地圖標(biāo)注多個(gè)城市 北海智能電銷機(jī)器人公司

當(dāng)你的 FreeBSD 安裝好後就內(nèi)建 FTP ,只是預(yù)設(shè)不啟動(dòng)它而已, 有人覺得 FreeBSD 內(nèi)建的 ftpd 太陽(yáng)春,會(huì)另外用別的 ftpd 來(lái)取代, 常見的替代方案有:proftpd , pureftp ......等,不過(guò)要隨時(shí)注意更新,因?yàn)?FTP 程式常常被找到有安全漏洞。

1 以 FreeBSD 內(nèi)建的 ftpd 提供服務(wù)

一般說(shuō)來(lái),當(dāng)你安裝好 FreeBSD ,F(xiàn)TP 的服務(wù)程式 /usr/libexec/ftpd 就有了
只要修改一下 /etc/inetd.conf , FTP 服務(wù)就已經(jīng)可以提供給有本機(jī)帳號(hào)的人使用

1-1 打開 FTP 服務(wù)

FreeBSD 系統(tǒng)的預(yù)設(shè) ftpd 提供 daemon 模式(stand alone)和由 inetd 啟動(dòng) ftpd 兩種方式
兩種方式比較起來(lái),daemon 的方式適合對(duì)同一時(shí)間連線使用多,負(fù)載較大的主機(jī)

1-1-1 方法一:daemon 模式 (stand alone)

1-1-1-1 立即啟動(dòng) ftpd daemon

如果只是要馬上啟動(dòng)服務(wù)只要執(zhí)行:

/usr/libexec/ftpd -D -l -l

參數(shù)說(shuō)明:

  • -D :讓 ftpd 以 daemon 的方式啟動(dòng)。
  • -l :叫 syslogd 記錄每次的連線,用兩次 -l 則可以連使用的動(dòng)作都記錄
      -l 要留下連線記錄還需要配合修改 /etc/syslog.conf 才會(huì)啟動(dòng)記錄

ftpd 還有很多的參數(shù),可以 man ftpd 查看。

1-1-1-2 如何讓 FreeBSD 開機(jī)時(shí)自動(dòng)啟動(dòng) ftpd

如果只用前面的方法啟動(dòng) ftpd daemon,下次系統(tǒng)重新開機(jī)後就沒了,為了讓它能自動(dòng)啟動(dòng),我們可以把啟動(dòng)指令放入 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的檔案,自己寫個(gè) ftpd.sh 。

例一:

ee /etc/rc.local

在裡面放一行:

/usr/libexec/ftpd -D -l -l

例二:

仿 /usr/local/etc/rc.d 中的檔案,新增一個(gè)叫 ftpd.sh 的 script :

ee /usr/local/etc/rc.d/ftpd.sh

裡面放入下面的內(nèi)容:


#!/bin/sh

ftpd_flag="-l -l -S"
ftpd="/usr/libexec/ftpd"

case "$1" in
start)
[ -x ${ftpd} ] ${ftpd} -D ${ftpd_flag} > /dev/null echo -n ' ftpd
;;
stop)
/usr/bin/killall ftpd > /dev/null echo -n ' ftpd'
;;
*)
echo "Usage: `basename $0` {start|stop}" >2
;;
esac

exit 0

存好檔後再更改一下檔案的權(quán)限,讓它可以執(zhí)行:

chmod 554 /usr/local/etc/rc.d/ftpd.sh

這樣,當(dāng) FreeBSD 開機(jī)時(shí)就會(huì)自動(dòng)啟動(dòng) ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來(lái)停止服務(wù),執(zhí)行時(shí)要加什麼參數(shù)就修改 ftpd_flag 那行。

1-1-2 方法二:由 inetd 來(lái)啟動(dòng) ftpd

這種方式,想當(dāng)然爾,就是要修改 /etc/inetd.conf 囉:

ee /etc/inetd.conf

先檢查一下 /etc/inetd.conf 中有沒有下面這行:

#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

如果像上面那行一樣,開頭是井字號(hào),表示現(xiàn)在 FTP 服務(wù)預(yù)設(shè)是被關(guān)閉的。井字號(hào)表示註解,不使用,只要把井字號(hào)去掉改成下面的樣子:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

存檔後執(zhí)行下面的指令:

kill -HUP `cat /var/run/inetd.pid`

讓 inetd 重新抓取 /etc/inetd.conf 設(shè)定檔就好了

注意:上面的 ` 是 Esc 鍵下面那鍋毛毛蟲的按鍵哦,可別打成單引號(hào)

 

1-2 停止 FTP 服務(wù)

如果要停止 FTP 服務(wù),看之前是以 daemon 模式啟動(dòng)還是 inetd 模式啟動(dòng)而有所不同。

1-2-1 daemon 模式

daemon 模式可以執(zhí)行下列指令來(lái)終止 ftpd 的程序:

killall ftpd

如果之前是將 ftpd 放在 /etc/rc.local 中來(lái)由系統(tǒng)在開機(jī)時(shí)自動(dòng)啟動(dòng),可以用下面的方法來(lái)停止自動(dòng)提供 FTP 服務(wù)。

先打開 /etc/rc.local 來(lái)編輯,執(zhí)行:

ee /etc/rc.local

將檔案中,執(zhí)行 ftpd 那行的最前面加個(gè)井字號(hào),儲(chǔ)存好即可。

1-2-2 inetd 模式

當(dāng)初是以 inetd 模式來(lái)提供服務(wù)的,則要修改 inetd 的設(shè)定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設(shè)定。

先打開 /etc/inetd.conf 來(lái)編輯,執(zhí)行:

ee /etc/inetd.conf

將設(shè)定檔中,有 ftpd 那行的前面加上井字號(hào)後,儲(chǔ)存設(shè)定檔。

讓 inetd 重讀設(shè)定檔,執(zhí)行下面指令:

kill    -HUP    `cat /var/run/inetd.pid`

如果要確認(rèn) FTP 服是否已經(jīng)停止了,可以執(zhí)行:

netstat -na

看看下面這行是不是已經(jīng)消失了:

tcp4     0     0     *.21     *.*     LISTEN

 

1-3 限制使用者只能在自己目錄活動(dòng)(chroot)

如果沒有特殊設(shè)定,使用者用自己的帳號(hào) FTP 到主機(jī)後,可以自由的切換任意目錄的,如果不想讓它亂跑則要做以下設(shè)定。

1-3-1 方法一:利用 /etc/ftpchroot

FreeBSD 的 ftpd 以 /etc/ftpchroot 來(lái)控制哪些人或群組要如何 chroot ,所以我們開啟/新增這個(gè)設(shè)定檔來(lái)編輯。

ee /etc/ftpchroot

在檔案裡面放入我們要管制的人或群組:

gsyan
foo
@staff

上面的設(shè)定使得 gsyan, foo 及屬於 staff 群組的人都只能在自己目錄活動(dòng)。

說(shuō)明:

小老鼠開頭的表示後面接的名稱為群組。

 

有方法可以只開放一個(gè)帳號(hào)不 chroot 其它全部 chroot 嗎?

最近 FreeBSD 內(nèi)建的 ftpd 在 /etc/ftpchroot 又多了可設(shè)定的東東, 如果 man ftpchroot 可以看到說(shuō)明,就表示可以使用下面的的設(shè)定來(lái)達(dá)到只開放部份帳號(hào)不鎖定在個(gè)人目錄的目的。

首先開啟 /etc/ftpchroot 來(lái)編輯:

ee /etc/ftpchroot

假設(shè) admin 是管理員的帳號(hào),讓 admin 可以在系統(tǒng)中到處游走,就裡面放入下面三行:

admin    /
ftp    .
@    www

儲(chǔ)存好就可以用 ftp 連線看看, 上面的設(shè)定有底下的效果:

  • 第一行設(shè)定:admin 登入時(shí)會(huì)切換到 /
  • 第二行設(shè)定:匿名登入時(shí)則保持原來(lái)的方式,只能在帳號(hào)指定的公用目錄活動(dòng)。
  • 第三行設(shè)定:其它使用者則只能在個(gè)人目錄中的 www 資料夾中活動(dòng)。

第三行應(yīng)用在 server 有 apache 提供使用者放網(wǎng)頁(yè), 而 apache 設(shè)定 UserDir=www 時(shí),以後只要告訴使用者: 『請(qǐng)將做好的網(wǎng)頁(yè)直接用自己的帳號(hào) ftp 到主機(jī)即可』, 以前都要解釋半天,請(qǐng)他 ftp 後把網(wǎng)頁(yè)放到 www 資料夾, 不過(guò),記得先將使用者的 www 目錄先建立好,不然可是會(huì)連登入都無(wú)法登入哦!!

在 FreeBSD 4.8R 以後的 /etc/ftpchroot 又新增了功能,詳細(xì)的設(shè)定可以 man ftpchroot (不過(guò),之前的版本沒這鍋 man )。

1-3-2 方法二:利用 /etc/login.conf

這個(gè)方法是利用使用者資料庫(kù) (系統(tǒng)密碼檔 /etc/master.passwd) 中 login class 的欄位,來(lái)設(shè)定使用者隸於的 class ,然後在 /etc/login.conf 中設(shè)定各 class 在 FTP chroot 的動(dòng)作為何,在 /etc/ftpchroot 不方便設(shè)定時(shí),適用於要處理很多人的狀況。

開啟 /etc/login.conf 來(lái)修改,執(zhí)行:

ee /etc/login.conf

然後找到下面 default: 開頭的哪幾行,類似下面的內(nèi)容:

default:\
     :copyright=/etc/COPYRIGHT:\
     :welcome=/etc/motd:\
...................略

加下面這一行:

:ftp-chroot:\

變成:

default:\
     :ftp-chroot:\
     :copyright=/etc/COPYRIGHT:\
     :welcome=/etc/motd:\
...................略

然後執(zhí)行下列這行指令,把 login.conf 轉(zhuǎn)成資料庫(kù)格式

cap_mkdb /etc/login.conf

這樣,所有的帳號(hào)都會(huì)做 chroot,活動(dòng)的範(fàn)圍就限定在自己的目錄中。


想全部管制,但又想開放系統(tǒng)管理用的帳號(hào)不做 chroot 呢?

前面的方法,我們?cè)O(shè)定的是 default 這個(gè) login class 要做 FTP 的 chroot,也就是所有人共同的設(shè)定,想讓系統(tǒng)管理可以到處游走,就設(shè)定一個(gè)系管的 class ,並且將 ftp-chroot 的屬性去掉即可達(dá)到部份開放的目的。

開啟 /etc/login.conf 新增系管的 login class 叫 admin,並加入 ftp-chroot 為否的設(shè)定:

ee /etc/login.conf

新增下面幾行(注意藍(lán)色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我們?cè)谙旅媪硗庑略鲆粋€(gè) login class 叫 admin:


default:\
    :ftp-chroot:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
...................略

admin:\
    :ftp-chroot@:\
    :tc=default:

...................略

然後執(zhí)行下列這行指令,把 login.conf 轉(zhuǎn)成資料庫(kù)格式:

cap_mkdb /etc/login.conf

注意:上面在 admin 這個(gè) class 中用的是:

:ftp-chroot@:\

ftp-chroot 多了個(gè)小老鼠哦!它代表這個(gè)值要相反的意思,也就不做 ftp-chroot。

再來(lái),我們要告訴系統(tǒng),誰(shuí)屬於 admin 這個(gè) login class ,直接修改帳號(hào)資料庫(kù),執(zhí)行

vipw

修改管理員 (不做 chroot) 的 login class 為 admin

例如:

假設(shè)系統(tǒng)管理員 gsyan 原來(lái)的帳號(hào)資料是:

gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh

要將它的 login class 修改為 admin ,就改為下面的樣子:

gsyan:*:1000:1000:admin:0:0:大雄:/home/gsyan:/bin/tcsh

都修改完了就儲(chǔ)存檔案,利用 FTP 軟體以不同身份登入測(cè)試看看。

說(shuō)明:

FreeBSD 中 /etc/master.passwd 密碼欄位依序?yàn)椋?/p>

帳號(hào)名稱:密碼:UID:GID:class:強(qiáng)制換密碼的時(shí)間:有效時(shí)間:資料:家目錄:shell

所以要改的 login class 是第五個(gè)欄位。

關(guān)於密碼檔的格式可以 man 5 passwd 查看

將不同身份的使用者分為幾個(gè) login class,並利用 /etc/login.conf 來(lái)設(shè)定各身份能夠使用的系統(tǒng)資源是滿不錯(cuò)的管制工具,非常值得好好的研究,詳細(xì)的內(nèi)容可以 man login.conf 。

1-4 提供匿名(訪客用)的 FTP 服務(wù)

讓在系統(tǒng)中沒有帳號(hào)訪客可以下載 FTP 站中的檔案,這種叫匿名的 FTP 服務(wù) (Anonymous FTP),要提供這種服務(wù)必須有一個(gè)叫 ftp 的帳號(hào)並建立好相關(guān)的目錄及檔案,這部份如果不清楚,利用 /stand/sysinstall 來(lái)做是最輕鬆不過(guò)的。底下是設(shè)定的步驟:

1.呼叫 /stand/sysinstall ,執(zhí)行:

/stand/sysinstall

2.當(dāng)出現(xiàn)安裝點(diǎn)單『/stand/sysinstall Main Menu』, 按方向鍵移到『Configure』,然後按空白鍵

3.進(jìn)入到『FreeBSD Configuration Menu』後,按方向鍵移到『Networking』,然後按空白鍵

4.進(jìn)入到『Network Services Menu』後,按方向鍵移到『Anon FTP』,後按空白鍵

5.進(jìn)入到『Anonymous FTP Configuration』後,輸入下面的資料:

6.輸入完畢後就按 OK

7.接著輸入FTP的 GID (使用預(yù)設(shè)值,直接按 Enter 鍵就可以)。

8.接著,詢問(wèn)是否要產(chǎn)生進(jìn)站歡迎詞 (welcome message),直接按 Enter 鍵就可以。

9.輸入進(jìn)站的歡迎詞:

10.編輯完好後按 Esc 鍵,再按 Enter 鍵兩次即可存檔離開。

11.接著都選點(diǎn)單最上面的 Exit 即可。

/stand/sysinstall 幫你做了什麼事?!

  • 新增 FTP 用的帳號(hào) (一般都叫 ftp)
  • 新增 FTP 用的群組
  • 新增 FTP 用的目錄
  • 新增檔案到 ~ftp/etc/ (group,passwd,ftpmotd)
  • 設(shè)定各目錄的權(quán)限:
目錄名稱 擁有者 權(quán)限
~ftp root a-w
~ftp/etc root 555 (目錄權(quán)限)
444 (pwd.db group ftpmod 三個(gè)檔案)
~ftp/pub root a-w

一定要注意各目錄的權(quán)限,目錄只要有 Write 的權(quán)限,訪客就可以任意上載/修改/刪除檔案,如果 FTP 主機(jī)被有心人士發(fā)現(xiàn)可以任意上載檔案,呵~網(wǎng)路流量可能會(huì)直線爆增。

相關(guān)檔案:

  • /etc/ftpusers 不可使用來(lái) ftp 連線的黑名單
  • /etc/ftpchroot 需要做 chroot 的帳號(hào)/群組清單
  • /etc/ftphosts 虛擬站臺(tái)的設(shè)定檔
  • /etc/ftpwelcome 進(jìn)站的歡迎詞
  • /etc/ftpmotd 登入成功後會(huì)自動(dòng)顯示的訊息
  • /var/run/nologin 顯示訊息並拒絕登入(這檔案存在時(shí) ftpd 會(huì)顯示內(nèi)容並拒絕登入)
  • /var/log/ftpd 記錄用匿名方式登入時(shí)的傳輸狀況(必須有 -S 的參數(shù),且該檔存在)

其它詳細(xì)的設(shè)定、參數(shù)請(qǐng)自行 man ftpd 。

1-5 讓 fptd 可以記錄傳輸狀況

ftpd 的啟動(dòng)參數(shù)有 -l 可以讓負(fù)責(zé)系統(tǒng)記錄的 syslogd 將 FTP 連線情形記錄下來(lái),不過(guò)我們必須先設(shè)定 /etc/syslog.conf ,並且讓 syslogd 重新讀取設(shè)定檔,才能發(fā)生作用。

下面是設(shè)定的步驟:

1.產(chǎn)生空的記錄檔 /var/log/ftpd ,執(zhí)行下面的指令:

touch /var/log/ftpd

2. 修改 syslod 的設(shè)定檔

開啟 /etc/syslog.conf 來(lái)編輯:

ee /etc/syslog.conf

找到含有 mail.info 的那一行

mail.info   /var/log/maillog

在前述那行的下面新增一行:

ftp.*   /var/log/ftpd

加完以後,按 Esc 鍵,再按兩次 Enter 鍵,將設(shè)定檔儲(chǔ)存好。

3.讓 syslogd 重新讀取 /etc/syslog.conf

執(zhí)行下面的指令通知 syslogd 重新讀取設(shè)定:

kill   -HUP   `cat   /var/run/syslogd.pid`

※ 注意:` 是按鍵盤上毛毛蟲那個(gè)按鍵哦!

 

2 FTP 的架設(shè)─pure-ftpd

  • 另一個(gè)不錯(cuò)的 FTP

 

3 以 wu-ftpd 架設(shè) FTP (建議用別的方案取代)

雄曰:
現(xiàn)在都直接用 FreeBSD 內(nèi)建的 ftpd ,下面的部份已經(jīng)好久沒用囉!都是舊資料啦,希望不會(huì)誤導(dǎo)。

wu-ftp (Washington University FTP) 由於功能強(qiáng)大,過(guò)去在 Unix Like 的主機(jī)上被廣為採(cǎi)用,或許是用的人多,也成為大家研究的焦點(diǎn), 經(jīng)常被發(fā)現(xiàn)有安全漏洞,所以安裝後一定要經(jīng)常注意相關(guān)訊息,隨時(shí)更新。

3-1 安裝 wu-ftpd

方法一:用 packages

pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/wu-ftpd.tgz

方法二:用 ports

編譯 wu-ftpd 時(shí)需要用到 autoconf213 ,記得要先安裝好該工具,並確認(rèn) ports tree 中有 /usr/ports/devel/autoconf213 才不會(huì)出現(xiàn)錯(cuò)誤。

如果沒有可以執(zhí)行下面指令安裝 autoconf213 及抓取 ports 相關(guān)檔案:

pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/autoconf213.tgz

cd /usr/ports/devel
ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/ports/devel/autoconf213
cd /usr/ports/ftp
ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/ports/ftp/wu-ftpd

準(zhǔn)備好後即可準(zhǔn)備進(jìn)行編譯及安裝:

cd /usr/ports/ftp/wu-ftpd
make
make install

3-2 修改設(shè)定檔

wu-ftpd 會(huì)用到的設(shè)定檔如下:

  • /usr/local/etc/ftpaccess :主設(shè)定檔
  • /usr/local/etc/ftpconversions :設(shè)定檔案?jìng)鬏敃r(shí),壓縮/解壓縮的程式
  • /usr/local/etc/ftpusers :黑名單,列入本檔中的帳號(hào)無(wú)法以 FTP 登入
  • /usr/local/etc/ftpgroups :黑名單,屬於本檔中群組者無(wú)法以 FTP 登入
  • /usr/local/etc/ftphosts :黑名單,列入本檔中的機(jī)器無(wú)法以 FTP 登入

安裝完後,在 /usr/local/etc 就會(huì)有一些 ftp*.sample 的範(fàn)例,我們複製一份來(lái)修改:

cd /usr/local/etc
cp ftpaccess.sample ftpaccess
cp ftpconversions.sample ftpconversions
cp ftpusers.sample ftpusers
cp ftpgroups.sample ftpgroups
cp ftphosts.sample ftphosts

只要稍加修改就可以用囉!

ftpaccess 中常用的設(shè)定:

功能 語(yǔ)法
定義類別(class) class 類別名稱 成員(real,guest,anonyous) 連線網(wǎng)址
class TP real,guest,anonymous *.tp.edu.tw
限制上線人數(shù)及時(shí)段 limit class名稱 人數(shù) 時(shí)間 訊息檔(絕對(duì)路徑)
limit TP 50 any /usr/local/etc/ftp.msg.Full
讓 TP 這個(gè) class 同時(shí)最多 50 個(gè)連線,滿了就顯示 ftp.msg.Full中的內(nèi)容
連線記錄 log commands class名稱
log transfers class名稱 inbound,outbound
控制可執(zhí)行的指令 delete yes 或 no 類別
overwrite yes 或 no 類別
rename yes 或 no 類別
chmod yes 或 no 類別
umask yes 或 no 類別
連線時(shí)只顯示主機(jī)名稱,不顯示版本... greeting brief
連線做 chroot restricted-uid 使用者帳號(hào)
restricted-uid * (將所有使用者 chroot)
不做 choot unrestricted-uid 使用者帳號(hào)
unrestricted-uid gsyan (gsyan不做 chroot)

wu-ftp 可以做的事實(shí)在太多了,其它的設(shè)定 man ftpaccess 包您可以滿載而歸。

3-3 修改 /etc/inetd.conf

我們打算讓 wuftpd 以 inetd 的模式提供服務(wù),所以要先修改 /etc/inetd.conf ,然後讓 inetd 重新讀取設(shè)定檔。

開啟 /etc/inetd.conf 來(lái)修改:

ee /etc/inetd.conf

將含有 ftp 開頭的那行改為下面的內(nèi)容:

ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -a

然後讓 inetd 重新讀取設(shè)定檔,執(zhí)行下面的指令:

kill -HUP `cat /var/run/inetd.pid`

最後利用 netstat -na 來(lái)觀察服務(wù)是否啟動(dòng),或是以 FTP 軟體來(lái)測(cè)試。

記得隨時(shí)注意安全警示,有問(wèn)題要馬上更新程式,以免被駭!

標(biāo)簽:德陽(yáng) 烏蘭察布 梧州 達(dá)州 廣元 晉中 張家界 信陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《FreeBSD FTP 的架設(shè)教程》,本文關(guān)鍵詞  FreeBSD,FTP,的,架設(shè),教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《FreeBSD FTP 的架設(shè)教程》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于FreeBSD FTP 的架設(shè)教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章