版权声明: 本文版权归★可乐∮(三轮车夫,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 此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。 :/usr/src/sys/compile/PowerBSD i386
OK,下面开始我们的jail之旅:1. 安装vsftpd
tar zxvf vsftpd-1.2.0.tar.gz cd vsftpd-1.2.0 make cp vsftpd /sbin cp vsftpd.conf /etc mkdir /var/ftp mkdir /usr/share/empty pw groupadd ftp pw useradd ftp –d /var/ftp –g ftp –s /nonexistent
编辑/etc/vsftpd.conf 在最后添加上: listen=YES 测试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 测试通过!
3. 可以在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的一点小小的笔记!就作为抛砖引玉吧!如有不足之处请多多指教,谢谢!