搜索:


其它专题 计算机技术应用 计算机在线手册 健康心理知识 育儿百科知识 原创文学
 
 

FreeBSD FTP 的架?

【 标签:系统管理,freebsd 】【 发布时间:2008-01-01 】上一篇  下一篇  

?你的 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)
  • ?定各目?的?限:
目?名??有者?限
~ftproota-w
~ftp/etcroot555 (目??限)
444 (pwd.db group ftpmod 三??案)
~ftp/pubroota-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

 

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
??做 chrootrestricted-uid 使用者??
restricted-uid * (?所有使用者 chroot)
不做 chootunrestricted-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 ?????。

?得??注意安全警示,有??要?上更新程式,以免被?!

【 标签:系统管理,freebsd 】【 发布时间:2008-01-01 】上一篇  下一篇  
 
 
 
 
最多人阅读的文章
最多人评论的文章
 
 
相关文章
原创文章列表
· 11月份晋级作品列表
· 原创文学大赛作品1
· 原创文学大赛作品2
· 原创文学大赛作品3
· 原创文学大赛作品4
· 原创文学大赛作品5





关于布谷 | 联系我们 | 友情链接 | 布谷帮助
广州亿码科技有限公司版权所有©2000-2007    粤B2-20050444    网络实名:布谷    服务热线(9:00-18:00):020-38480358-1020   简化1 简化2 简化3