FreeBSD FTP 的架设教程
?你的 FreeBSD 安?好後就?冉 FTP ,只是??不??铀??眩 有人?得 FreeBSD ?冉ǖ ftpd 太?春,??硗庥?e的 ftpd ?砣〈? 常?的替代方案有:proftpd , pureftp ......等,不?要??r注意更新,因? FTP 程式常常被找到有安全漏洞。
1 以 FreeBSD ?冉ǖ ftpd 提供服?
一般??恚??你安?好 FreeBSD ,FTP 的服?粘淌 /usr/libexec/ftpd 就有了
只要修改一下 /etc/inetd.conf , FTP 服?站鸵呀?可以提供?有本?C?ぬ?的人使用
1-1 打? FTP 服??/h4>
FreeBSD 系?的?? ftpd 提供 daemon 模式(stand alone)和由 inetd ?? ftpd ?煞N方式
?煞N方式比?起?恚?aemon 的方式?合?ν??r???使用多,???大的主?C
1-1-1 方法一:daemon 模式 (stand alone)
1-1-1-1 立即?? ftpd daemon
如果只是要?上??臃?罩灰?绦校?/p>
/usr/libexec/ftpd -D -l -l
??嫡f明:
- -D :? ftpd 以 daemon 的方式??印
- -l :叫 syslogd ??每次的??,用?纱 -l ?t可以?使用的?幼鞫加??
-l 要留下?????需要配合修改 /etc/syslog.conf 才???佑??
ftpd ?有很多的??担?梢 man ftpd 查看。
1-1-1-2 如何? FreeBSD ??C?r自??? ftpd
如果只用前面的方法?? ftpd daemon,下次系?重新??C後就?]了,?榱俗?它能自???樱???可以把??又噶罘湃 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的?n案,自己???? ftpd.sh 。
例一:
ee /etc/rc.local
在?面放一行:
/usr/libexec/ftpd -D -l -l
例二:
仿 /usr/local/etc/rc.d 中的?n案,新增一??叫 ftpd.sh 的 script :
ee /usr/local/etc/rc.d/ftpd.sh
?面放入下面的?热荩?br />
#!/bin/sh ftpd_flag="-l -l -S" case "$1" in exit 0 |
存好?n後再更改一下?n案的?嘞蓿??它可以?绦校?/p>
chmod 554 /usr/local/etc/rc.d/ftpd.sh
??樱?? FreeBSD ??C?r就????? ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop ?硗V狗?眨?绦?r要加什???稻托薷 ftpd_flag 那行。
1-1-2 方法二:由 inetd ??? ftpd
??方式,想?然??,就是要修改 /etc/inetd.conf ?樱?/p>
ee /etc/inetd.conf
先?z查一下 /etc/inetd.conf 中有?]有下面?行:
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
如果像上面那行一?樱?_?是井字?,表示?在 FTP 服?疹A?是被??的。井字?表示?解,不使用,只要把井字?去掉改成下面的?幼樱?/p>
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
存?n後?绦邢旅娴闹噶睿?/p>
kill -HUP `cat /var/run/inetd.pid`
? inetd 重新抓取 /etc/inetd.conf ?定?n就好了
注意:上面的 ` 是 Esc ?下面那?毛毛?的按?哦,可?e打成?我??
1-2 停止 FTP 服??/h4>
如果要停止 FTP 服?眨?粗?笆且 daemon 模式??舆?是 inetd 模式??佣?兴?煌??/p>
1-2-1 daemon 模式
daemon 模式可以?绦邢铝兄噶?斫K止 ftpd 的程序:
killall ftpd
如果之前是? ftpd 放在 /etc/rc.local 中?碛上到y在??C?r自???樱?梢杂孟旅娴姆椒?硗V棺?犹峁 FTP 服?铡?/p>
先打? /etc/rc.local ?砭??,?绦校?/p>
ee /etc/rc.local
??n案中,?绦 ftpd 那行的最前面加??井字?,?Υ婧眉纯伞?/p>
1-2-2 inetd 模式
?初是以 inetd 模式?硖峁┓?盏模?t要修改 inetd 的?定?n /etc/inetd.conf ,?K? inetd 重新?取?定。
先打? /etc/inetd.conf ?砭??,?绦校?/p>
ee /etc/inetd.conf
?⒃O定?n中,有 ftpd 那行的前面加上井字?後,?Υ嬖O定?n。
? inetd 重??定?n,?绦邢旅嬷噶睿?/p>
kill -HUP `cat /var/run/inetd.pid`
如果要?? FTP 服是否已?停止了,可以?绦校?/p>
netstat -na
看看下面?行是不是已?消失了:
tcp4 0 0 *.21 *.* LISTEN
1-3 限制使用者只能在自己目?活??chroot)
如果?]有特殊?定,使用者用自己的?ぬ? FTP 到主?C後,可以自由的切?Q任意目?的,如果不想?它?y跑?t要做以下?定。
1-3-1 方法一:利用 /etc/ftpchroot
FreeBSD 的 ftpd 以 /etc/ftpchroot ?砜刂颇男┤嘶蛉航M要如何 chroot ,所以我????ⅲ?略鲞@???定?n?砭??。
ee /etc/ftpchroot
在?n案?面放入我??要管制的人或群?:
gsyan foo @staff |
上面的?定使得 gsyan, foo 及?凫 staff 群?的人都只能在自己目?活?印?br />
?明:
小老鼠??的表示後面接的名??槿航M。
有方法可以只?放一???ぬ?不 chroot 其它全部 chroot ?幔?/strong>
最近 FreeBSD ?冉ǖ ftpd 在 /etc/ftpchroot 又多了可?定的?|?|, 如果 man ftpchroot 可以看到?明,就表示可以使用下面的的?定?磉_到只?放部份?ぬ?不?定在??人目?的目的。
首先?? /etc/ftpchroot ?砭??:
ee /etc/ftpchroot
假? admin 是管理?T的?ぬ?,? admin 可以在系?中到?游走,就?面放入下面三行:
admin / ftp . @ www |
?Υ婧镁涂梢杂 ftp ??看看, 上面的?定有底下的效果:
- 第一行?定:admin 登入?r???Q到 /
- 第二行?定:匿名登入?r?t保持原?淼姆绞剑?荒茉?ぬ?指定的公用目?活?印
- 第三行?定:其它使用者?t只能在??人目?中的 www ?料?A中活?印
第三行??迷 server 有 apache 提供使用者放??, 而 apache ?定 UserDir=www ?r,以後只要告?使用者: 『??⒆龊玫木W?直接用自己的?ぬ? ftp 到主?C即可』, 以前都要解?半天,?他 ftp 後把??放到 www ?料?A, 不?,?得先?⑹褂谜叩 www 目?先建立好,不然可是??B登入都?o法登入哦!!
在 FreeBSD 4.8R 以後的 /etc/ftpchroot 又新增了功能,??的?定可以 man ftpchroot (不?,之前的版本?]?? man )。
1-3-2 方法二:利用 /etc/login.conf
???方法是利用使用者?料? (系?密??n /etc/master.passwd) 中 login class 的?谖唬?碓O定使用者?於的 class ,然後在 /etc/login.conf 中?定各 class 在 FTP chroot 的?幼?楹危? /etc/ftpchroot 不方便?定?r,?用於要?理很多人的??r。
???font color="#ff0000"> /etc/login.conf ?硇薷模?绦校?/p>
ee /etc/login.conf
然後找到下面 default: ??的哪?仔校??似下面的?热荩?/p>
default:/ :copyright=/etc/COPYRIGHT:/ :welcome=/etc/motd:/ ...................略 |
加下面?一行:
:ftp-chroot:/
?成:
default:/ :ftp-chroot:/ :copyright=/etc/COPYRIGHT:/ :welcome=/etc/motd:/ ...................略 |
然後?绦邢铝羞@行指令,把 login.conf ?成?料?旄袷?/p>
cap_mkdb /etc/login.conf
??樱??械?ぬ?都?? chroot,活?拥墓???拖薅ㄔ谧约旱哪夸?中。
想全部管制,但又想?放系?管理用的?ぬ?不做 chroot 呢?
前面的方法,我???定的是 default ??? login class 要做 FTP 的 chroot,也就是所有人共同的?定,想?系?管理可以到?游走,就?定一??系管的 class ,?K且? ftp-chroot 的?傩匀サ艏纯蛇_到部份?放的目的。
?? /etc/login.conf 新增系管的 login class 叫 admin,?K加入 ftp-chroot ?榉竦脑O定:
ee /etc/login.conf
新增下面?仔?注意?色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我??在下面另外新增一?? login class 叫 admin:
default:/ ...................略 |
然後?绦邢铝羞@行指令,把 login.conf ?成?料?旄袷剑?/p>
cap_mkdb /etc/login.conf
注意:上面在 admin ??? class 中用的是:
:ftp-chroot@:/
ftp-chroot 多了??小老鼠哦!它代表???值要相反的意思,也就不做 ftp-chroot。
再?恚???要告?系?,??凫 admin ??? login class ,直接修改?ぬ??料?欤?绦?strong>
vipw
修改管理?T (不做 chroot) 的 login class ? admin
例如:
假?系?管理?T gsyan 原?淼?ぬ??料是:
gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh
要?⑺? login class 修改? admin ,就改?橄旅娴?幼樱?/p>
gsyan:*:1000:1000:admin:0:0:大雄:/home/gsyan:/bin/tcsh
都修改完了就?Υ?n案,利用 FTP ??以不同身份登入?y?看看。
?明:
FreeBSD 中 /etc/master.passwd 密??谖灰佬?椋?/p>
?ぬ?名?:密?:UID:GID:class:??制?Q密?的?r?:有效?r?:?料:家目?:shell
所以要改的 login class 是第五???谖弧?/p>
?於密??n的格式可以 man 5 passwd 查看
?⒉煌?矸莸氖褂谜叻???? login class,?K利用 /etc/login.conf ?碓O定各身份能?蚴褂玫南到y?源是?M不?的管制工具,非常值得好好的研究,??的?热菘梢 man login.conf 。
1-4 提供匿名(?客用)的 FTP 服??/h2>
?在系?中?]有?ぬ??客可以下? FTP 站中的?n案,??叫匿名的 FTP 服? (Anonymous FTP),要提供??服?毡仨?有一??叫 ftp 的?ぬ??K建立好相?的目?及?n案,?部份如果不清楚,利用 /stand/sysinstall ?碜鍪亲钶p?不?的。底下是?定的步?:
1.呼叫 /stand/sysinstall ,?绦校?/p>
/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.接著,???是否要?生?站?g迎? (welcome message),直接按 Enter ?就可以。
9.?入?站的?g迎?:
10.??完好後按 Esc ?,再按 Enter ??纱渭纯纱?n??。
11.接著都???巫钌厦娴 Exit 即可。
/stand/sysinstall ?湍阕隽耸颤N事?!
- 新增 FTP 用的?ぬ? (一般都叫 ftp)
- 新增 FTP 用的群?
- 新增 FTP 用的目?
- 新增?n案到 ~ftp/etc/ (group,passwd,ftpmotd)
- ?定各目?的?嘞蓿
目?名? | ?碛姓?/td> | ?嘞?/td> |
~ftp | root | a-w |
~ftp/etc | root |
555 (目??嘞? 444 (pwd.db group ftpmod 三???n案) |
~ftp/pub | root | a-w |
一定要注意各目?的?嘞蓿?夸?只要有 Write 的?嘞蓿?L客就可以任意上?/修改/?h除?n案,如果 FTP 主?C被有心人士??可以任意上??n案,呵~?路流量可能??本?爆增。
相??n案:
- /etc/ftpusers 不可使用? ftp ??的黑名?
- /etc/ftpchroot 需要做 chroot 的?ぬ?/群?清?
- /etc/ftphosts ??M站台的?定?n
- /etc/ftpwelcome ?站的?g迎?
- /etc/ftpmotd 登入成功後???语@示的?息
- /var/run/nologin ?示?息?K拒?登入(??n案存在?r ftpd ??@示?热?K拒?登入)
- /var/log/ftpd ??用匿名方式登入?r的?鬏???r(必?有 -S 的???且??n存在)
其它??的?定、??嫡?自行 man ftpd 。
1-5 ? fptd 可以???鬏???r
ftpd 的????涤 -l 可以???系???的 syslogd ? FTP ??情形??下?恚?贿^我??必?先?定 /etc/syslog.conf ,?K且? syslogd 重新?取?定?n,才能?生作用。
下面是?定的步?:
1.?生空的???n /var/log/ftpd ,?绦邢旅娴闹噶睿?/p>
touch /var/log/ftpd
2. 修改 syslod 的?定?n
?? /etc/syslog.conf ?砭??:
ee /etc/syslog.conf
找到含有 mail.info 的那一行
mail.info /var/log/maillog
在前述那行的下面新增一行:
ftp.* /var/log/ftpd
加完以後,按 Esc ?,再按?纱 Enter ?,?⒃O定?n?Υ婧谩?/p>
3.? syslogd 重新?取 /etc/syslog.conf
?绦邢旅娴闹噶钔ㄖ syslogd 重新?取?定:
kill -HUP `cat /var/run/syslogd.pid`
※ 注意:` 是按??上毛毛?那??按?哦!
2 FTP 的架?─pure-ftpd
- 另一??不?的 FTP
3 以 wu-ftpd 架? FTP (建?用?e的方案取代)
雄曰:
?在都直接用 FreeBSD ?冉ǖ ftpd ,下面的部份已?好久?]用?樱《际桥f?料啦,希望不??`?А?/font>
wu-ftp (Washington University FTP) 由於功能??大,?去在 Unix Like 的主?C上被?V??裼茫?蛟S是用的人多,也成?榇蠹已芯康慕裹c, ?常被??有安全漏洞,所以安?後一定要?常注意相??息,??r更新。
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 ?r需要用到 autoconf213 ,?得要先安?好?工具,?K?? ports tree 中有 /usr/ports/devel/autoconf213 才不??霈F??。
如果?]有可以?绦邢旅嬷噶畎惭b autoconf213 及抓取 ports 相??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??浜冕峒纯??溥M行??及安?:
cd /usr/ports/ftp/wu-ftpd
make
make install
3-2 修改?定?n
wu-ftpd ??玫降脑O定?n如下:
- /usr/local/etc/ftpaccess :主?定?n
- /usr/local/etc/ftpconversions :?定?n案?鬏??r,?嚎s/解?嚎s的程式
- /usr/local/etc/ftpusers :黑名?危?腥氡?n中的?ぬ??o法以 FTP 登入
- /usr/local/etc/ftpgroups :黑名?危?凫侗?n中群?者?o法以 FTP 登入
- /usr/local/etc/ftphosts :黑名?危?腥氡?n中的?C器?o法以 FTP 登入
安?完後,在 /usr/local/etc 就??幸恍 ftp*.sample 的?例,我????一份?硇薷模?/p>
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 中常用的?定:
功能 | ?法 |
定???e(class) |
class??e名?成?T(real,guest,anonyous)???址 class TP real,guest,anonymous *.tp.edu.tw |
限制上?人?导?r段 |
limitclass名?人?怠?r??息?n(??β?? limit TP 50 any /usr/local/etc/ftp.msg.Full ? TP ??? class 同?r最多 50 ????,?M了就?示 ftp.msg.Full中的?热?/td> |
???? |
log commandsclass名? log transfersclass名?inbound,outbound |
控制可?绦械闹噶?/td> |
deleteyes 或 no??e overwriteyes 或 no??e renameyes 或 no??e chmodyes 或 no??e umaskyes 或 no??e |
???r只?示主?C名?,不?示版本... | greeting brief |
??做 chroot |
restricted-uid使用者?ぬ? restricted-uid * (?⑺?惺褂谜 chroot) |
不做 choot |
unrestricted-uid使用者?ぬ? unrestricted-uid gsyan (gsyan不做 chroot) |
wu-ftp 可以做的事??在太多了,其它的?定 man ftpaccess 包您可以?M?而?w。
3-3 修改 /etc/inetd.conf
我??打算? wuftpd 以 inetd 的模式提供服?眨??砸?刃薷 /etc/inetd.conf ,然後? inetd 重新?取?定?n。
?? /etc/inetd.conf ?硇薷模?/p>
ee /etc/inetd.conf
?⒑? ftp ??的那行改?橄旅娴?热荩?/p>
ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -a
然後? inetd 重新?取?定?n,?绦邢旅娴闹噶睿?/p>
kill -HUP `cat /var/run/inetd.pid`
最後利用 netstat -na ?碛^察服?帐欠??樱?蚴且 FTP ????y?。
?得??r注意安全警示,有???要?上更新程式,以免被?!