首页 > 系统 > FreeBSD > 正文

FreeBSD FTP 的架设教程

2020-10-23 22:25:07
字体:
来源:转载
供稿:网友

你的 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 。

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表