电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

FreeBSD FTP 的架設教程

瀏覽:8日期:2022-06-03 14:27:31

當你的 FreeBSD 安裝好後就內建 FTP ,只是預設不啟動它而已, 有人覺得 FreeBSD 內建的 ftpd 太陽春,會另外用別的 ftpd 來取代, 常見的替代方案有:proftpd , pureftp ......等,不過要隨時注意更新,因為 FTP 程式常常被找到有安全漏洞。

1 以 FreeBSD 內建的 ftpd 提供服務

一般說來,當你安裝好 FreeBSD ,FTP 的服務程式 /usr/libexec/ftpd 就有了
只要修改一下 /etc/inetd.conf , FTP 服務就已經可以提供給有本機帳號的人使用

1-1 打開 FTP 服務

FreeBSD 系統的預設 ftpd 提供 daemon 模式(stand alone)和由 inetd 啟動 ftpd 兩種方式
兩種方式比較起來,daemon 的方式適合對同一時間連線使用多,負載較大的主機

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

1-1-1-1 立即啟動 ftpd daemon

如果只是要馬上啟動服務只要執行:

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

參數說明:

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

ftpd 還有很多的參數,可以 man ftpd 查看。

1-1-1-2 如何讓 FreeBSD 開機時自動啟動 ftpd

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

例一:

ee /etc/rc.local

在裡面放一行:

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

例二:

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

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

裡面放入下面的內容:


#!/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

存好檔後再更改一下檔案的權限,讓它可以執行:

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

這樣,當 FreeBSD 開機時就會自動啟動 ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來停止服務,執行時要加什麼參數就修改 ftpd_flag 那行。

1-1-2 方法二:由 inetd 來啟動 ftpd

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

ee /etc/inetd.conf

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

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

如果像上面那行一樣,開頭是井字號,表示現在 FTP 服務預設是被關閉的。井字號表示註解,不使用,只要把井字號去掉改成下面的樣子:

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

存檔後執行下面的指令:

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

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

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

1-2 停止 FTP 服務

如果要停止 FTP 服務,看之前是以 daemon 模式啟動還是 inetd 模式啟動而有所不同。

1-2-1 daemon 模式

daemon 模式可以執行下列指令來終止 ftpd 的程序:

killall ftpd

如果之前是將 ftpd 放在 /etc/rc.local 中來由系統在開機時自動啟動,可以用下面的方法來停止自動提供 FTP 服務。

先打開 /etc/rc.local 來編輯,執行:

ee /etc/rc.local

將檔案中,執行 ftpd 那行的最前面加個井字號,儲存好即可。

1-2-2 inetd 模式

當初是以 inetd 模式來提供服務的,則要修改 inetd 的設定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設定。

先打開 /etc/inetd.conf 來編輯,執行:

ee /etc/inetd.conf

將設定檔中,有 ftpd 那行的前面加上井字號後,儲存設定檔。

讓 inetd 重讀設定檔,執行下面指令:

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

如果要確認 FTP 服是否已經停止了,可以執行:

netstat -na

看看下面這行是不是已經消失了:

tcp4 0 0 *.21 *.* LISTEN

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

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

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

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

ee /etc/ftpchroot

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

gsyan
foo
@staff

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

說明:

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

有方法可以只開放一個帳號不 chroot 其它全部 chroot 嗎?

最近 FreeBSD 內建的 ftpd 在 /etc/ftpchroot 又多了可設定的東東, 如果 man ftpchroot 可以看到說明,就表示可以使用下面的的設定來達到只開放部份帳號不鎖定在個人目錄的目的。

首先開啟 /etc/ftpchroot 來編輯:

ee /etc/ftpchroot

假設 admin 是管理員的帳號,讓 admin 可以在系統中到處游走,就裡面放入下面三行:

admin /
ftp .
@ www

儲存好就可以用 ftp 連線看看, 上面的設定有底下的效果:

  • 第一行設定:admin 登入時會切換到 /
  • 第二行設定:匿名登入時則保持原來的方式,只能在帳號指定的公用目錄活動。
  • 第三行設定:其它使用者則只能在個人目錄中的 www 資料夾中活動。

第三行應用在 server 有 apache 提供使用者放網頁, 而 apache 設定 UserDir=www 時,以後只要告訴使用者: 『請將做好的網頁直接用自己的帳號 ftp 到主機即可』, 以前都要解釋半天,請他 ftp 後把網頁放到 www 資料夾, 不過,記得先將使用者的 www 目錄先建立好,不然可是會連登入都無法登入哦!!

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

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

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

開啟 /etc/login.conf 來修改,執行:

ee /etc/login.conf

然後找到下面 default: 開頭的哪幾行,類似下面的內容:

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

加下面這一行:

:ftp-chroot:\

變成:

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

然後執行下列這行指令,把 login.conf 轉成資料庫格式

cap_mkdb /etc/login.conf

這樣,所有的帳號都會做 chroot,活動的範圍就限定在自己的目錄中。


想全部管制,但又想開放系統管理用的帳號不做 chroot 呢?

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

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

ee /etc/login.conf

新增下面幾行(注意藍色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我們在下面另外新增一個 login class 叫 admin:


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

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

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

然後執行下列這行指令,把 login.conf 轉成資料庫格式:

cap_mkdb /etc/login.conf

注意:上面在 admin 這個 class 中用的是:

:ftp-chroot@:\

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

再來,我們要告訴系統,誰屬於 admin 這個 login class ,直接修改帳號資料庫,執行

vipw

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

例如:

假設系統管理員 gsyan 原來的帳號資料是:

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

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

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

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

說明:

FreeBSD 中 /etc/master.passwd 密碼欄位依序為:

帳號名稱:密碼:UID:GID:class:強制換密碼的時間:有效時間:資料:家目錄:shell

所以要改的 login class 是第五個欄位。

關於密碼檔的格式可以 man 5 passwd 查看

將不同身份的使用者分為幾個 login class,並利用 /etc/login.conf 來設定各身份能夠使用的系統資源是滿不錯的管制工具,非常值得好好的研究,詳細的內容可以 man login.conf

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

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

1.呼叫 /stand/sysinstall ,執行:

/stand/sysinstall

2.當出現安裝點單『/stand/sysinstall Main Menu』, 按方向鍵移到『Configure』,然後按空白鍵

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

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

5.進入到『Anonymous FTP Configuration』後,輸入下面的資料:

6.輸入完畢後就按 OK

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

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

9.輸入進站的歡迎詞:

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

11.接著都選點單最上面的 Exit 即可。

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

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

一定要注意各目錄的權限,目錄只要有 Write 的權限,訪客就可以任意上載/修改/刪除檔案,如果 FTP 主機被有心人士發現可以任意上載檔案,呵~網路流量可能會直線爆增。

相關檔案:

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

其它詳細的設定、參數請自行 man ftpd

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

ftpd 的啟動參數有 -l 可以讓負責系統記錄的 syslogd 將 FTP 連線情形記錄下來,不過我們必須先設定 /etc/syslog.conf ,並且讓 syslogd 重新讀取設定檔,才能發生作用。

下面是設定的步驟:

1.產生空的記錄檔 /var/log/ftpd ,執行下面的指令:

touch /var/log/ftpd

2. 修改 syslod 的設定檔

開啟 /etc/syslog.conf 來編輯:

ee /etc/syslog.conf

找到含有 mail.info 的那一行

mail.info /var/log/maillog

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

ftp.* /var/log/ftpd

加完以後,按 Esc 鍵,再按兩次 Enter 鍵,將設定檔儲存好。

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

執行下面的指令通知 syslogd 重新讀取設定:

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

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

2 FTP 的架設─pure-ftpd

  • 另一個不錯的 FTP

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

雄曰:
現在都直接用 FreeBSD 內建的 ftpd ,下面的部份已經好久沒用囉!都是舊資料啦,希望不會誤導。

wu-ftp (Washington University FTP) 由於功能強大,過去在 Unix Like 的主機上被廣為採用,或許是用的人多,也成為大家研究的焦點, 經常被發現有安全漏洞,所以安裝後一定要經常注意相關訊息,隨時更新。

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 時需要用到 autoconf213 ,記得要先安裝好該工具,並確認 ports tree 中有 /usr/ports/devel/autoconf213 才不會出現錯誤。

如果沒有可以執行下面指令安裝 autoconf213 及抓取 ports 相關檔案:

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

準備好後即可準備進行編譯及安裝:

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

3-2 修改設定檔

wu-ftpd 會用到的設定檔如下:

  • /usr/local/etc/ftpaccess :主設定檔
  • /usr/local/etc/ftpconversions :設定檔案傳輸時,壓縮/解壓縮的程式
  • /usr/local/etc/ftpusers :黑名單,列入本檔中的帳號無法以 FTP 登入
  • /usr/local/etc/ftpgroups :黑名單,屬於本檔中群組者無法以 FTP 登入
  • /usr/local/etc/ftphosts :黑名單,列入本檔中的機器無法以 FTP 登入

安裝完後,在 /usr/local/etc 就會有一些 ftp*.sample 的範例,我們複製一份來修改:

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 中常用的設定:

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

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

3-3 修改 /etc/inetd.conf

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

開啟 /etc/inetd.conf 來修改:

ee /etc/inetd.conf

將含有 ftp 開頭的那行改為下面的內容:

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

然後讓 inetd 重新讀取設定檔,執行下面的指令:

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

最後利用 netstat -na 來觀察服務是否啟動,或是以 FTP 軟體來測試。

記得隨時注意安全警示,有問題要馬上更新程式,以免被駭!

相關文章:
主站蜘蛛池模板: RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | 微学堂-电动能源汽车评测_电动车性能分享网 | 桌上式超净工作台-水平送风超净工作台-上海康路仪器设备有限公司 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 深圳公司注册-工商注册公司-千百顺代理记账公司| 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 陕西鹏展科技有限公司| 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 电子书导航网_电子书之家_电子书大全_最新电子书分享发布平台 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 电机保护器-电动机综合保护器-浙江开民| 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 字典-新华字典-在线字典查字-字典趣| 蜜蜂职场文库_职场求职面试实用的范文资料大全 |