软件安全测试之系统安全测试

书接上文:~应用安全测试设计~


一、操作系统安全

1. 操作系统不允许存在Nessus扫描出的高风险级别漏洞

*注:Nessus使用方法简介

对于各服务器的操作系统采用Nessus进行漏洞扫描:
1、登录Nessus;
2、创建扫描策略:点击“Policies”菜单,再点击“Add”按钮,在第一步中设置扫描策略的名称;在第二步配置超级管理员账号口令;在第三步,点击“Disable All”按钮,在“Familles”框中选择“Policy Compliance”,在“Policy Compliance”的“Plugins”框中选择对应的系统类型(如Unix系统是21157,window系统是21156),即使该Plugins圈变绿,然后点击“Submit”;在第四步,在“Plugin”中选择对应的操作系统(例如Unix系统的选择“Unix Compliance Checks”,windows系统选择“WindowsComplianceChecks”),然后导入本用例附件“CIS Compliance Audit Policies.rar”中对应的audit文件,然后点击“Submit”按钮,完成扫描策略配置;
3、点击“Scans”菜单,点击“Add”按钮,创建新的扫描任务,“Policy”选择步骤2创建的扫描策略,“Scan Targets”中输入测试环境的IP地址;点击“Launch Scan”按钮,开始扫描;
4、等到“Scans”窗口中,步骤3启动的扫描任务不见了之后,表明扫描结束了,点击“Reports”菜单,查看对应的扫描结果报告。


2. 通用操作系统安全补丁

对于基于通用操作系统的产品,检查其配套发布资料中是否包含公司发布的最新操作系统安全补丁的列表,以及对这些补丁的兼容性测试结果。


3. 通用操作系统安全补丁纳入年度补丁计划


4. 远程登录支持 SSH 协议

使用putty软件,访问被测操作系统的22端口,是否能够正常登录


5. 安全防毒软件


二、数据库安全

1. 数据库安全配置基本要求

可以采用NGSSQuirreL进行扫描是否使用厂商的缺省口令:
1、运行数据库对应的NGSSQuirreL软件(例如Oracle对应NGSSQuirreL for Oracle);
2、根据扫描向导“Scan Wizard”配置扫描对象。以Oracle为例,第一步,直接点击“Next”按钮;第二步,在“Host”中填要扫描的IP地址,在“Port”中填写Oracle的监听端口(默认为1521),点击“Next”按钮;第三步,根据实际情况配置Oracle Listener的密码,然后点击“OK”按钮(如果没有设置密码则直接点击“Cancel”按钮);第四步,点击下拉列表框选择要扫描的数据库实例,然后点击“OK”;第五步,在“Username”中填“system”,在“Password”中填system用户的实际密码(默认是manager),如果“Instance”为空,则填入要扫描的Oracle实例名,然后点击“Next”按钮;第六步,点击“Scan”按钮,开始扫描。
3、扫描工具窗口底部的状态栏显示“Scan Finished”,表明扫描结束了,点击“File”菜单,选择“Export Report to”-“HTML File”,输出扫描报告。
4、查看数据库扫描报告。
也可以手工测试是否使用厂商的缺省口令:
oracle11g之前版本采用Checkpwd工具扫描,运行CMD后命令如下
checkpwd system/manager@//10.71.99.12:1521/BME password_file.txt
如果pc已经安装客户端并且配置了数据源可直接使用
checkpwd system/manager@数据源名字password_file.txt
注:其中蓝色部分要根据实际情况填写。
Oracle11g获取使用默认口令的用户SQL:select * from dba_users_with_defpwd
2.使用informix/DB2/LDAP/内存数据库/MySQL等其他类型数据的产品,检查访问数据库的用户缺省口令(可通过查看建用户脚本或者密码修改指南)
手工检查产品的数据库中非锁定/失效用户的缺省口令复杂度需满足“口令安全要求”:
可通过查看建用户脚本或者密码修改指南
注:非标数据库必须进行该项手工测试用例设计,需要收集所有安装运行启动初始化等各过程中的所有默认账号、接口、入口、口令等。

预期结果:

数据库口令禁止使用数据库厂商的缺省口令,且口令复杂度需满足“口令安全要求”
针对NGSSQuirreL扫描报告中不存在默认帐号密码的漏洞,也就是说扫描报告的“Vulnerability”列查找不到“Default Password”的字符串。
备注:如果确定该账号已经锁定无法正常访问,该账号被暴出来的“Default Password”可以认为是误报。
针对手工测试方法:
1.oracle11g之前版本扫描报告中不存在默认口令、弱口令,也就是说扫描报告中“Weak passwords found”的值为0(此工具不支持ORACLE11扫描。)。
Oracle11g查询结果为空,也就是不存在使用默认口令的数据库用户(锁定/失效用户除外)。
2.使用informix/DB2/LDAP等其他类型数据的产品没有使用数据库厂商的默认口令
口令安全要求:
1、口令长度至少6个字符(特权用户至少8个字符);
2、口令必须包含如下至少两种字符的组合:
      -至少一个小写字母;
      -至少一个大写字母;
      -至少一个数字;
      -至少一个特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/?  和空格
3、口令不能和帐号或者帐号的倒写一样;


2. 数据库帐户最小授权


3. 对于有监听器功能的数据库(如Oracle的listener.ora)需要设置监听器密码或者设置为本地操作系统验证。


4. 数据库中的重要文件在OS下的权限:

1.$ORACLE_HOME/bin目录下的文件必须属于oracle用户、dba组,且权限小于或等于755
2.$ORACLE_HOME目录下的文件必须属于oracle用户、dba组,且权限小于或等于750(不包括$ORACLE_HOME/bin中的文件和externaljob.ora)
3.$ORACLE_HOME/network/admin目录下的文件必须属于oracle用户、dba组,且权限小于或等于640
4.控制文件、数据文件、联机日志文件必须属于oracle用户、dba组,且权限均需要设置为660(如果使用ASM管理,则不需要设置权限) 
5.归档日志文件必须属于oracle用户、dba组,且权限需要小于等于750
6.密码文件必须属于oracle用户、dba组,且权限需要设置为640
7.pfile,spfile文件必须属于oracle用户、dba组,且权限需要设置为640
8.user_dump_dest、background_dump_dest、core_dump_dest指向的目录必须属于oracle用户、dba组,且权限需要设置为640
9.diagnostic_dest指向的目录必须属于oracle用户、dba组,且权限需要设置为660
10.ifile必须属于oracle用户、dba组,且权限需要设置为750
11.$ORACLE_HOME/bin/tkprof文件必须属于root用户、dba组,且权限需要设置为750
12.externaljob.ora文件必须属于root用户、dba组,且权限需要设置为640
13.ASM磁盘必须属于oracle/grid用户、dba/oinstall组,且权限需要设置为660


5. 使用单独的操作系统帐号来运行数据库

linux下参考命令返回运行oracle数据库的操作系统帐号:ps -ef | grep ora_|awk '{print $1}'


6. 数据库若存在多个默认帐号,必须将不使用的帐号禁用或删除

对于oracle,重点检查DBA_USERS表中的账户名


7. 数据库安全补丁


三、Web容器安全

1. 使用Appscan等业界主流扫描工具,确保Web容器不存在高风险级别漏洞

至于appscan的使用,百度上有大量教程,这里就不多说了。


关于系统安全设置的话题,这里只是列出提纲;具体问题和解决办法以后有时间会在新文章中补全。

你可能感兴趣的:(软件应用安全,软件系统安全)