网络安全焦点::用自由软件构建中小企业弱点评估系统 用自由软件构建中小企业弱点评估系统 吴鲁加 04/18/2004
1. 准备工作 1.1 了解你需要什么 在确定要投入精力来配置系统之前,你或许希望了解它能为你带来什么。这么说吧,如果你现在:
负责企业内部的企业安全,希望有一套比较适合企业应用的漏洞扫描系统; 自己的网络和系统管理水平较好,不需要太多的所谓专家顾问支持; 公司在这方面的预算相当有限,你的钱必须花在上级已经定好的几个项目和产品上了。 这里所说的比较适合企业应用,简单说来,我想至少包括下面几点:
漏报、误报率较低,或者至少自己能够对报警的真实性进行调整后再统计; 对漏洞升级的快速反应,重大事件三天内应该有相应扫描模块升级; 能够出具比较美观的报表,对企业内部安全状况进行分析; 尽量简单易用,或者配置后就能自动运转,减少系统管理员的维护工作量。 那么,恭喜你,Inprotect具备了上述的所有功能,如果你有一定的编程能力,那么你还可以对它进行定制,使之更适合你的特定网络环境需求。
1.2 环境准备 安装配置支持php、mysql和gd的apache服务器,并且顺手将nmap、nessus和nikto这些扫描工具全装齐。
apt-get install apache php4 php4-gd2 php4-mysql mysql-server mysql-client nmap nessus nessusd nikto 配置apache,直接编辑/etc/apache/httpd.conf,将:
DirectoryIndex index.html index.htm index.shtml index.cgi#AddType application/x-httpd-php .php#AddType application/x-httpd-php-source .phpsAddDefaultCharset on 改成:
DirectoryIndex index.php index.php3 index.html index.htm index.shtml index.cgiAddType application/x-httpd-php .php .php3AddType application/x-httpd-php-source .phpsAddDefaultCharset gb2312 运行下面的命令给mysql加上密码:
mysqladmin password xxxxxx 如果希望mysql启动时带上更好的中文支持,则可以编辑/etc/init.d/mysql文件,把/usr/bin/mysqld_safe > /dev/null 2>&1 &改成:
/usr/bin/mysqld_safe --default-character-set=gb2312 /dev/null 2>&1 & 编辑/etc/php4/apache/php.ini文件,找到“;default_charset = "iso-8859-1"”,替换成:
default_charset = "gb2312" 2. 安装配置 2.1 Inprotect的安装 2.1.1 安装perl模块 至少需要以下模块才能够使crontab里面的perl脚本正常运行,可以到CPAN找来安装。
MIME::LiteParallel::ForkManagerDate::Calc 2.1.2 下载Inspect并导入数据库 直接到http://www.inprotect.com/下载Inspect的最新版本。解包后可以仔细阅读INSTALL、console/html/readme.txt这两份文件,里面有较为详细的安装说明。
进入console/sql目录,运行:
mysql -h localhost --user=root < sql/inprotect.sql 如果你下载的是018版本,可能会有错误提示,数据库不会完全导入,原因是inprotect_settings重复,将第二个inprotect_settings的内容注释掉即可。
由于我对MySQL不太熟练,更喜欢通过phpmyadmin进行web管理,这样也方便后期更好地对弱点数据库进行整理。因此,就apt-get install phpmyadmin安装。phpmyadmin的界面如下:
2.1.3 安装并修改配置文件 运行install.sh,可以安装Inprotect程序,但该脚本只是为RedHat准备的,有些地方需要修改。脚本分成安装web文件、安装数据库和安装扫描器三个部份,除了安装文件外,也写入crontab定时运行任务。所有这些内容都可以自行根据脚本内容进行灵活调整。
分别编辑在html目录下的config.php和/usr/local/etc/inprotect.cfg,主要修改数据库相关参数如主机、用户名、口令等。然后创建数据目录/usr/data/nessus和/usr/data/nmap。
2.1.4 updateplugins.pl 这样Inprotect就可以运行了,但由于nessus的插件还没有入库,因此暂时只是nmap扫描可用,试图运行nessus扫描时,会提示先运行nessus-plugins-update脚本,这个脚本中我们需要注意几个地方:
nessus-update-plugins命令#execute nessus-update-plugins#system ("nessus-update-plugins") == 0 or die "No new plugins installed";#If used patch for nessus-update-plugins, we may pass parameter on the command line.system ("nessus-update-plugins -u $inprotect_url/html/nessus") == 0 or die "No new plugins installed"; 这里的nessus-update-plugins带了-u参数,是Inprotect的作者修改过的,可以指定url,这里指定了本地url以提高速度。这个脚本在Inprotect软件包console/patch目录下。由于速度对我影响不大,因此我将这行注释了,直接采用不带-u参数的。
nessus命令参数#system("/usr/bin/nessus -qxpS $nessussvr $nessusport $nessususer $nessuspassw > $tempfile");system("/usr/bin/nessus -qxpS localhost 1241 aa my_password_here > $tempfile"); 系统中原来是第一行,但变量没有赋值(017之前的版本是在inprotect.cfg文件中赋值的),懒得改了,直接把自己的nessus用户信息写进程序。
2.1.5 登陆使用 直接连接到web服务器http://localhost/html/login.php,以用户名Admin,密码password直接登陆,可以看到如下界面:
是否还算精美?;)
2.2 配置使用 建议的使用流程如下:
建立个人的profile选择"Settings" -> "Nessus Scan Profiles" -> "Create New Profile" -> 填写信息 -> 点击"Save"
选择nessusd服务器选择"Settings" -> "Nessus Servers" -> "Add new Nessus server" -> 填写信息 -> 点击"Save"
建立nessus管理区域选择"Settings" -> "Network Zones" -> "Add New Network Zone" -> 填写信息 -> 点击"Add zone" -> 返回 -> Edit Zone -> Zone Details -> Edit Zone Users
提示:这里填写的zone的IP范围要覆盖你希望扫描的网络。如果这里的信息填写有误,则添加扫描任务的时候会无法加入IP地址。
建立nessus用户选择"Settings" -> "Manage Users" -> 增加或者修改用户信息
开始扫描 这时候可以到Security Scan里尝试一下,如果配置得当,nessus的扫描与nmap的扫描都可以正常使用了。
2.3 报告 这里的报告实际上是将Nessus、nmap和nikto的结果综合输出了,报告还是相当精美的,并且能够直接生成pdf。
3. 企业应用 3.1 Inprotect对企业应用的支持 3.1.1 周期扫描 我们可以先看看下面这幅截屏:
套用一款商用扫描器的广告词:可以在指定时间自动完成定时扫描任务或周期扫描任务,同时可以在无人值守的情况下自动获取升级信息。
3.1.2 误报分析 在2.3节的报告部份,我们可以看到图片中每一漏洞后都有红色的小勾,如果我们点击该小勾,则将该漏洞表示为“误报”,这对数据入库后的月、季和年度分析的准确性很有帮助。
3.1.3 趋势分析 在报告部份,有漏洞趋势分析、按日期或扫描排序的趋势等,能够对安全问题的趋势、分布进行统筹分析,便于制定安全决策和长远的安全规划。
3.2 怎样用好弱点评估系统 其实漏洞扫描是一种“未雨绸缪”式的安全工作,如果工作到位,能使入侵者的攻击难度极大增加,下面是我工作中的一些小经验,希望有用:
将内部网络划分成不同的区域,每个区域有不同安全级别,定义的扫描频度和强度也有所不同。但一定要涵盖全网,不能有遗漏! 让机器代替人去做定期重复性的扫描,管理员把精力放在分析扫描报告上。最初几次扫描能够初步了解内部网络信息,后期分析则注重看“区别”。 注重问题的解决而非漏洞扫描本身。每次扫描的结果与上次比较,如果漏洞已经通知IT但却长期不补,至少责任能够厘清。 如果你的报告一定需要以中文形式提交,那么安全焦点扫描器插件翻译项目 里找到部份nessus插件的中文翻译,如果你感兴趣,也可以加入到项目中。
Power by Debian, Created with Vim