Solaris下虚拟VSFTP+蜜罐的架设
中国科学院西安分院嵌入式小组 e-mail:netciw@yahoo.com.cn
关于蜜罐的问题,我这里没有讲详细,大概在5月中旬会有一个很详细蜜罐原理,搭建过程的文章与大家见面。这里只是想引入一个概念。[/size]
版权声明:本文档是由中国科学院西安分院嵌入式小组叶博洋编著整理,如果我们在文档中设计到您的版权问题,请通知作者. 本文档版权所属中国科学院西安分院嵌入式小组,欢迎广大爱好solaris的朋友们转载,请保留版权信息。 如发现有用于盈利性活动,删节,删除版权声明以及原著者单位姓名等违反版权法之有关规定,我单位及作者保留法律诉讼权利!
重点说明:我这里测试的环境为solaris sparc版,在一些软件下载的时候请选择你对应系统版本安装包。
solaris10默认FTP为wu-ftp。这里我不推荐大家使用wu-ftp。第一:安全性;wu-ftp并不是一个非常安全的ftp软件。且版本过低,而且没有一个开发团队对它进行继续深入开发。wu-ftp不是inetd进程启动的,而是standlone独立进程,这样会给系统带来负担。Vsftp的官方全名“VERY SECUR”它的安全性也就不言而喻了。第二,速度;vsftp使用的是ASCII模式下载,有些资料提及wu-ftp与vsftp速度比较时,都明确阐述vsftp速度要快于wu-ftp。第三:稳定性;普通单机可支持4000用户以上并发同时连接。 前置提示: 本文引入了虚拟文件系统概念,使用虚拟用户完成搭建FTP全过程。有朋友问为什么要引入虚拟文件系统概念,这是为了让大家在以后学习solaris flash的时候能有一个更清晰的思路,所以当你配置虚拟FTP的时候可以不使用虚拟文件系统。它不会对你的FTP配置带来任何问题。如果你已经开启wu-ftp,那么请你先关闭ftp服务。 小提示: svcs |grep online 查看当前运行服务 svcs |grep offline 查看当前停止服务 svcs |grep inetd 查看inetd服务状态 svcadm disable svc:network/ftp 关闭wu-ftp,既关闭现有的ftp服务。
第一部分::
这里引用我们需要引入几个在solaris下的几个思想! 一 :solaris和unix/linux一样都可以把它理解为一个绿色的操作软件。这样方便我们以后更好的去理解solaris下的solaris(solaris闪) 二 :虚拟系统 亦即当一个使用者使用的是"虚拟系统"时,他所看到的系统档案及程式,并不是系统管理者所使用的档案。 问题:我们为什么要制作一个虚拟系统,从安全角度来考虑,只要一台计算机连接上网络,它就已经不安全,无论你是否是一个高级的管理员,你也无法保证你所配置的服务器是安全的。也可以说你只能说这一秒solaris是安全的,但谁又知道下一秒是不是安全的!所以我们这里就需要用到一个虚拟的FTP把安全危机降到我们认为最安全的地步!也正是因为这个原因我们才需要使用到虚拟系统,双管齐下对来保证我们的服务器。那又是那两种手段?第一,虚拟的FTP,这是目前在各大操作系统上都经常使用的FTP搭建方法。这样即便是黑客通过暴力破解,网络嗅探等方式获取FTP帐户密码也无法得到操作系统的真实用户。第二,这里也是solaris被安全界公认比较可靠的操作系统的原因,它能够在虚拟FTP之后为我们带来一个叫虚拟系统的新概念。让我们有第二道更可靠的城墙,让我们的管理员在被黑客获取FTP帐户密码的情况下,依然可以从容的与黑客抗衡!使用虚拟系统可以保护系统的资料与系统运作正常,让恶意的使用者只能做到有限的破坏。其实所谓的"虚拟系统",主要是利用chroot(Change Root)来达成,即改变根目录的位置,而使得FTP对应到一新的系统设定中。
第二部分
构造虚拟系统: cd / (进入根目录) tar –cvf /system.tar /var /usr /etc /dev /devices (将 var usr etc dev decices 打包为 system.tar) mkdir /export/home/ftpusers tar -xvf system.tar /export/home/ftpusers (把我们打包的文件解压到export/home/ftpusers) 注意:这里我需要强调一点,我们可能会出现一点以外错误!由于我这里使用的中科院的较早的sparc专业服务器,且拆除了2块硬盘,所以我的空间不是很大 导致磁盘空不足,无法解压。当然有的朋友为什么不把根目录的目录CP过去,这里你问的很好,的确是可以这样的。但我操作了几次,发现在后面的工作中可能会导致一些莫名其妙的错误。所以我还是建议大家按照我的方法去完成。由于打包和解压时间都很长,我们也可以利用这段时间听听歌,看看新闻! :) 这里我想强调以下,由于我可能一直很关注安全,正如我在上文中所说的一台服务器连接到互联网之后就已经没有绝对的安全。我看过有些文档也是使用虚拟文件系统,但他们不是按照我的方案去完成,只是把直接在FTP目录建立一些和系统文件目录同名的目录,但我个人认为这样做就失去了虚拟文件系统的真正意义,一名有经验的黑客在很容易就能识别出这些是一个虚拟文件系统,是一个耗费他精力的蜜罐。那么我想虚拟文件系统的真正目的也就没有实际意义了。在这里我由衷的建议大家不要怕麻烦,花费多一点的时间做的有意义一点!本身安全就是一点一滴的积累。何况您还能在这段时间里看看新闻,听听歌曲。何乐而不为?
第三部分
vsftp简介: vsftp全称翻译为“非常安全的FTP”,vsftp稳定,安全,功能强大屹立在unix系列操作系统多年,在redhat8系列以后,正是由于vsftp的出色表现博得了整个unix/linux世界的青睐,很多版本的unix/linux都把它作为默认的ftp服务工具。时下流行的一句广告词完全可以诠释vsftp:“我相信群众!” 获取vsftp: ftp://vsftpd.beasts.org/users/cevans/ 下寻找你需要的vsftp,我这里使用的最新版本vsftpd-2.0.5.tar.gz,下载地址:ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz 但你必须ftp到vsftpd.beasts.org 。然后将它下载回来;get vsftpd-2.0.5.tar.gz
第四部分
安装vsftp: gunzip vsftpd-2.0.5.tar.gz /*生成tar包*/ tar xvf vsftpd-2.0.5.tar /*解压*/ cd /etc 在网络中也有朋友使用如下命令我这里提供给大家作为参看 gzcat vsftpd-2.0.5.tar.gz | tar xvf - 解压tar.gz包!
这里我们需要注意的是,现在生产的目录权限 drwxr-xr-x 8 500 500 2048 2006 7月 4 vsftpd-2.0.5 chown root vsftpd-2.0.5 (改变目录所属用户) chgrp root vsftpd-2.0.5 (改变目录所属组) ls –l drwxr-xr-x 8 root root 2048 2006 7月 4 vsftpd-2.0.5
小提示:我在实验vsftp的时候,就无法make。提示没有这个命令。这可能和你的安装的时候软件包安装有关系。这里提供一些补救办法。 1 下载并安装make get ftp://ftp.sunfreeware.com/pub/freeware/sparc/9/make-3.80-sol9-sparc-local.gz gunzip make-3.80-sol9-sparc-loca1.gz pkgadd -d make-3.80-sol9一sparc-local 2 下载libiconv并安装 ftp://mirror.Sprintlink.net/sunfreeware.com/pub/freeware/sparc/9/libiconv-1.8-so19-sparcloca1.gz gunzip libiconv-1.8-so19-sparc-loca1.gz pkgadd -d libiconv-1.8-sol9-sparc-local 3 下载gcc并安装 ftp://mirror.Sprintlink.net/sunfreeware.com/pub/freeware/sparc/9/gcc-small-3.3.2-sol9-sparc-loca1.gz gunzip gcc-small-3.3.2-sol9-sparc-loca1.gz pkgadd -d gcc-small-3.3.2-sol9-sparc-loca1
cd vstipd-2.0.5 make mkdir /usr/share/empty cp vsftpd /usr/local/bin/vsftpd cp vsftpd.conf.5 /usr/local/man/man5 cp vsftpd.8 /usr/local/man/man8 cp vsftpd.conf/etc
第五部分:
配置虚拟Ftp groupadd ftp /*建立ftp组*/ mkdir /ftp /*建ftp目录*/ useradd —d /ftp -g ftp -s /bin/false ftp /*实际使用的USER*/ chown ftp:ftp /ftp echo “ftp”>> /etc/vsftpd.chroot_lis mkdir /etc/vsftp /*建立ftp用户配置文件目录*/
1: 配置vsftpd.conf
vi /etc/vsftpd.conf anonymous_enable=NO /*不允许匿名用户登录*/ anon_root=ftp /*匿名用户在登录后将跳转的目录*/ anon_password=NO /*匿名用户登录不需要密码,可以直接登录*/ local_enable=NO /*不允许本地用户登录*/ write_enable=NO /*不允许FTP命令更改文件系统*/ local_umask=022 /* 设定本地用户上载文件的umask值*/ anon_upload_enable=NO /*不允许匿名用户上载*/ anon_mkdir_write_enable=NO /*不允许匿名用户创建目录*/ dirmessage_enable=YES /*当用户首次进入一个新目录时,FTP服务器将会显示欢迎信息*/ xferlog_enable=YES /*生成日志文件*/ connect_from_port_20=YES /*控制在服务器端,使用端口20进行数据连接*/ xferlog_file=/varflog/vsftpd.log /*xferlog_enable选项后需要加载日志文件定启用*/ xferlog_std_format=YES /*启用标准日志文件格式*/ idle_session_timeout=600 /*设置空闲的用户会话中断时间为600秒*/ data_connection_timeout=120 /*连接中断时间为120秒*/ ftpd_banner=Welcome to www.cnsapc.com /*欢迎信息*/ chroot_list_enable=YES /*/etc/vsftpd_chroot_list文件中列出的用户不能切换到根目录以外*/ Chroot_1ist_file=/etc/vsftpd.chroot_list /*指定启用chroot_1ist_enable选项后需要加载文件*/ User_config_dir=/etc/vsftpd /*不同的用户使用不同的配置.配置文件所在的目录*/ ls_recurse_enable=YES /*允许用户使用列目录*/ hide_ids=YES /*所有目录中的用户和组信息列取时都将显示为ftp*/ userlist_enable=YES /*当为YES时,userlist—deny的设置才有效*/ userlist_deny=NO /*只有在文件中明确指定的用户才能登录系统*/ userlist_file=/etc/vsftpd.user_list /*指定启用userlist_enable选项后需要加载文件*/ guest_enable=YES /*所有非匿名用户都将以guest身份登录*/ Guest_username=ftp /*将guest用户映射到一个真实用户ftp*/ Anon_max_rate=20000 /*设置匿名用户为最大传*/ Local_max_rate=500000 /*设置本地用户的最大传*/ max_clients=500 /*设定最大客户端联接数*/ max_per_ip=2 /*设定源于同一网络地址的最大联接数,防止暴力破解FTP密码*/ pasv_min_port=56000 /*PASV方式数据联接指派的最小端口*/ pasv_max_port=56100 /*PASV方式数据联接指派的最大端口*/ listen=YES /*vsfipd将以独立模式运行,不能由inetd来启动*/ 1isten_address=l27.0.0.1 /*定义使用哪个IP地址提供服务*/ 2: 建立目录与帐户并映设成ftp用户 mkdir /ftp/ftpusers chown ftp:ftp /ftp/ftpusers useradd –d /dev/null -g ftp –s /bin/false ftpusers /*无shell*/ passwd ftpusers 第六部分: 建立vsftp启动脚本 vi /etc/rc3.d/S83vsftpd
!/sbin/sh case "$1" in start) /usr/local/bin/vsftpd & ;; stop) pkill vsftpd ;; *) echo "Usage: $0 { start | stop }" exit 1 ;; esac exit 0
中国科学院西安分院嵌入式小组-----叶博洋 2007.4.29 |