Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

使用Jail构建安全的Vsftpd

 关闭 [复制链接]
cqfanli 发表于 2003-7-27 11:34:57 | 显示全部楼层 |阅读模式
使用Jail构建安全的Vsftpd
                 作者:★可乐∮(三轮车夫,easypp)
                  QQ:223480 MSN:easy2go@msn.com
版权声明:本文版权归★可乐∮(三轮车夫,easypp)所有,如需转载,请保留该声明,谢谢!
  vsftpd有一些小小的缺点,就是一般是用系统的帐号进行用户的验证!虽然vsftpd在安全方面非常不错,但是和系统的帐号分离,这样你对你的服务器安全更加放心。我现在通过FreeBSD下面的jail来实现vsftpd和系统的帐号分离!这样不仅可以轻松的管理ftp服务器,而且不必担心因为ftp的安全问题而导致你系统的安全隐患!

  软件需求:
      FreeBSD 4.8 Stable(Release也可以)  vsftpd-1.2.0(可以到vsftpd的官方网站下载)
  环境介绍:
      FreeBSD 4.8 Stable
      Ip: 10.0.1.1   hostname:powerbsd.org
下面是我机器的一些信息:
powerbsd<Time:9:43am>[/]-root->ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
           inet 10.0.1.1 netmask 0xff000000 broadcast 10.255.255.255
           ether 00:60:67:76:fb:13
           media: Ethernet autoselect (100baseTX <full-duplex>)
           status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
           inet 127.0.0.1 netmask 0xff000000
powerbsd<Time:9:43am>[/]-root->hostname
powerbsd.org
powerbsd<Time:9:43am>[/]-root->uname -a
FreeBSD powerbsd.org 4.8-STABLE FreeBSD 4.8-STABLE #7: Mon Jun 23 08:57:32 CST 2003     root@powerbsd.org:/usr/src/sys/compile/PowerBSD  i386
OK,下面开始我们的jail之旅:
1.   安装vsftpd
a)   tar zxvf vsftpd-1.2.0.tar.gz
b)   cd vsftpd-1.2.0
c)   make
d)   cp vsftpd /sbin
e)   cp vsftpd.conf /etc
f)   mkdir /var/ftp
g)   mkdir /usr/share/empty
h)   pw groupadd ftp
i)   pw useradd ftp –d /var/ftp –g ftp –s /nonexistent
j)   编辑/etc/vsftpd.conf 在最后添加上: listen=YES
k)   测试vsftpd是不是正常,启动vsftpd:/sbin/vsftpd &  然后使用ftp –a 10.0.1.1 下面是我测试的信息:
powerbsd<Time:9:50am>[/source/src]-root->ftp -a 10.0.1.1
Connected to 10.0.1.1.
220 (vsFTPd 1.2.0)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
   2.构建jail环境
         a) 建立jail的目录环境:
mkdir-p /jail/{bin,sbin,etc,dev,var/log,var/ftp,usr/bin,usr/sbin/,usr/lib,usr/libexec,usr/share/empty}
         b) 查看vsftpd需要哪些运行库
powerbsd<Time:9:55am>[/jail/etc]-root->ldd /sbin/vsftpd
/sbin/vsftpd:
        libpam.so.1 => /usr/lib/libpam.so.1 (0x28076000)
        libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x28080000)
        libutil.so.3 => /usr/lib/libutil.so.3 (0x28099000)
        libc.so.4 => /usr/lib/libc.so.4 (0x280a2000)
         c)建立vsftpd在jail下运行环境:
            cp /usr/lib/libpam.so.1 /jail/usr/lib/
cp /usr/lib/libcrypt.so.2 /jail/usr/lib/
cp /usr/lib/libutil.so.3 /jail/usr/lib/
cp /usr/lib/libc.so.4 /jail/usr/lib/
cp /dev/MAKEDEV* /jail/dev/
sh /jail/dev/MAKEDEV jail
cp /sbin/vsftpd /jail/sbin/vsftpd
cp /etc/vsftpd.conf /jail/etc/
cp /etc/passwd /jail/etc
cp /etc/group /jail/etc
cp /etc/master.passwd /jail/etc
cp /etc/pwd.db /jail/etc
cp /etc/spwd.db /jail/etc
           d)运行jail测试:
            killall vsftpd
            jail -u root /jail/ powerbsd.org 10.0.1.1 /sbin/vsftpd &
            出现错误的提示:ELF interpreter /usr/libexec/ld-elf.so.1 not found
            cp /usr/libexec/ld-elf.so.1 /jail/usr/libexec/
再次运行:jail -u root /jail/ powerbsd.org 10.0.1.1 /sbin/vsftpd 没有出现任何出错的信息!Ctrl+C终止
运行:jail -u root /jail/ powerbsd.org 10.0.1.1 /sbin/vsftpd &
netstat -na
可以看到:
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  10.0.1.1.21            *.*                    LISTEN
使用ps auxww | grep vsftpd
root       455  0.0  0.2  1132  628  p0  IJ    8:31下午   0:00.01 /sbin/vsftpd(IJ表示是在jail环境中运行)
ftp -a 10.0.1.1 测试通过!
2.   可以在jail下面进行用户的管理:
cp /bin/ls /jail/bin
cp /bin/mkdir /jail/bin
cp /bin/rmdir /jail/bin
cp /bin/sh /jail/bin
cp /bin/csh /jail/bin
cp /usr/sbin/pw /jail/usr/sbin
cp /usr/lib/libcrypt.so.2 /jail/usr/lib/
cp /usr/sbin/pwd_mkdb /jail/usr/sbin/
cp /usr/sbin/vipw /jail/usr/sbin/
cp /usr/bin/chgrp /jail/usr/bin/
cp /usr/sbin/chown /jail/usr/sbin/
cp /bin/chmod /jail/bin/
cp adduser.conf /jail/etc/
cp adduser.message /jail/etc/
cp /usr/bin/passwd /jail/usr/bin/
cp /usr/lib/librpcsvc.so.2 /jail/usr/lib/
cp /usr/lib/libutil.so.3 /jail/usr/lib/
cp /etc/pam.conf /jail/etc
cp /usr/lib/pam_skey.so /jail/usr/lib/
cp /usr/lib/pam_opie.so /jail/usr/lib/
cp /usr/lib/pam_opieaccess.so /jail/usr/lib/
cp /usr/lib/pam_cleartext_pass_ok.so /jail/usr/lib/
cp /usr/lib/pam_unix.so /jail/usr/lib/
      
   现在你可以通过如下命令进行用户的管理
      jail /jail/ powerbsd.org 10.0.1.1 /bin/sh
      下面是我进行用户管理的过程:
powerbsd<Time:10:10am>[/]-root->jail /jail/ powerbsd.org 10.0.1.1 /bin/sh
# pw user show -a
root:*:0:0::0:0:Charlie &:/root:/bin/csh
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
ftp:*:1004:1002::0:0:User &:/var/ftp:/nonexitent
# pw group show -a
wheel:*:0:root
nobody:*:65534:
ftp:*:1002:
# pw groupadd ftpgroup
# pw useradd test -d /home/test -g ftpgroup -s /nonexistend
# pw user show -a
root:*:0:0::0:0:Charlie &:/root:/bin/csh
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
ftp:*:1004:1002::0:0:User &:/var/ftp:/nonexitent
test:*:1005:1003::0:0:User &:/home/test:/nonexistend
# pw group show -a
wheel:*:0:root
nobody:*:65534:
ftp:*:1002:
ftpgroup:*:1003:
# passwd test
Changing local password for test.
New password:
Retype new password:
passwd: updating the database...
passwd: done

至此如何建立jail下面的vsftpd已经讲解完毕!至于vsftpd该如何进行设置,参考vsftpd的Example!该文只是我学习FreeBSD-jail的一点小小的笔记!就作为抛砖引玉吧!如有不足之处请多多指教,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 00:19 , Processed in 0.019115 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表