|
?你的 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/ftpchrootFreeBSD 的 ftpd 以 /etc/ftpchroot ?控制哪些人或群?要如何 chroot ,所以我???/新增???定????。 ee /etc/ftpchroot
在?案?面放入我?要管制的人或群?: 上面的?定使得 gsyan, foo 及?於 staff 群?的人都只能在自己目?活?。
?明: 小老鼠??的表示後面接的名??群?。
有方法可以只?放一???不 chroot 其它全部 chroot ??
最近 FreeBSD ?建的 ftpd 在 /etc/ftpchroot 又多了可?定的??, 如果 man ftpchroot 可以看到?明,就表示可以使用下面的的?定??到只?放部份??不?定在?人目?的目的。 首先?? /etc/ftpchroot ???: ee /etc/ftpchroot
假? admin 是管理?的??,? admin 可以在系?中到?游走,就?面放入下面三行: ?存好就可以用 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 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 ?????。 ?得??注意安全警示,有??要?上更新程式,以免被?! |