首页 > 系统 > FreeBSD > 正文

FreeBSD架 FTP

2020-10-23 22:29:16
字体:
来源:转载
供稿:网友
你的 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.tgzcd /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 。得注意安全警示,有要上更新程式,以免被!本文出自 51CTO.COM技术博客
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表