最近在做一个风险评估和等保测评相结合项目,需要对某单位的4套核心系统进行风险评估和等保测评,其中有2套系统还是等保定级的4级系统,非常重要。在进行主机和数据库的策略审计时,遇到一点小麻烦,情况是这样的,传统的譬如说银行证券行业、政府行业、通信行业,他们的运维终端一般都是windows的,所以对主机和数据库的配置检查可以通过windows终端的SecureCRT等工具连接,并记录检查日志来实现,或许和直接上传sh脚本执行,然后将结果传下来即可。

但是要评估的单位的系统部署在比较特殊的网络架构中,且运维终端都是linux或者hp-ux。在不能使用SecureCRT的情况下,也就无法复制粘贴直接运行如下命令了。

hostname

ifconfig

uname-a

who-r

netstat-nr

netstat-a

netstat-lnpt

ps-ef

ps-ef|greptelnet

ps-ef|grepssh

ps-ef|grepsyslog

ps-ef|grepaudit

ls-l/etc

ls-l/etc/security

....

在这种情况下如何处理呢?

目前运维终端都是图形化界面的linux系统(PS:未安装ssh连接工具),既然无法使用工具连接,那么自然也无法设置自动日志配置输出。解决的办法就是将检查的结果输出到指定文件中,最后再导出文件即可。当然此时可使用windows终端也通用的方法就是直接上传sh脚本到每一台服务器上,然后直接脚本,最后再将结果导到本地终端上。但是好多客户是禁止直接往服务器上传脚本、工具等的。那只有最后一个方法,就是制作直接可在运维终端本地运行的脚本。核心思路就是在linux运维终端上ssh远程连接数据库等服务器,然后打开并复制粘贴上传到linux运维终端上的脚本内容并执行,在远端服务器上生成诸多配置文件,然后打包,最后再将结果导到本地终端上,并记得删除远端服务器上的生成的检查的配置文件。具体的脚本内容如下,此处先只介绍远程服务器是linux系统的linuxscript.txt脚本情况:

linuxscript.txt

mkdir./syschecklog


cd./syschecklog


echo'#superOrder0001********************hostname*****************#'>>0001hostname.log

hostname>>0001hostname.log


echo'#superOrder0002********************ifconfig*****************#'>>0002ifconfig.log

ifconfig>>0002ifconfig.log


echo'#superOrder0003********************uname-a*****************#'>>0003uname.log

uname-a>>0003uname.log


echo'#superOrder0004********************who-r*****************#'>>0004who_r.log

who-r>>0004Who_r.log


echo'#superOrder0005********************ifconfig-a*****************'>>0005ifconfig_a.log

ifconfig-a>>0005ifconfig_a.log


echo'#superOrder0006********************netstat-nr*****************'>>0006netstat_nr.log

netstat-nr>>0006netstat_nr.log


echo'#superOrder0007********************netstat-a*****************'>>0007netstat_a.log

netstat-a>>0007netstat_a.log


echo'#superOrder0008********************ps-ef*****************'>>0008ps_ef.log

ps-ef>>0008ps_ef.log

echo'#superOrder0009********************ls-l/etc*****************'>>0009etc_filelist.log

ls-l/etc>>0009etc_filelist.log


echo'#superOrder0010********************ls-l/etc/security*****************'>>0010etc_security.log

ls-l/etc/security>>0010etc_security.log


echo'#superOrder0011********************etc/hosts.equiv*****************'>>0011etc_hosts.equiv

cat/etc/hosts.equiv>>0011etc_hosts.equiv



echo'#superOrder0014********************df-h*****************'>>0014df_h.log

df-h>>0014df_h.log


echo'#superOrder0015********************cat/etc/inittab*****************'>>0015etc_inittab.log

cat/etc/inittab>>0015etc_inittab.log


echo'#superOrder0016********************cat/etc/rc.d/rc.sysinit*****************'>>0016etc_rcd_rc.sysinit.log

cat/etc/rc.d/rc.sysinit>>0016etc_rcd_rc.sysinit.log


echo'#superOrder0017********************cat/etc/rc.d/rc.local*****************'>>0017rcd_rc_local.log

cat/etc/rc.d/rc.local>>0017rcd_rc_local.log


echo'#superOrder0018********************ls-l/etc/rc.d/rc0.d*****************'>>0018rcd_rc0d.log

ls-l/etc/rc.d/rc0.d>>0018rcd_rc0d.log


echo'#superOrder0019********************ls-l/etc/rc.d/rc1.d*****************'>>0019rcd_rc1d.log

ls-l/etc/rc.d/rc1.d>>0019rcd_rc1d.log


echo'#superOrder0020********************ls-l/etc/rc.d/rc2.d*****************'>>0020rcd_rc2d.log

ls-l/etc/rc.d/rc2.d>>0020rcd_rc2d.log


echo'#superOrder0021********************ls-l/etc/rc.d/rc3.d*****************'>>0021rcd_rc3d.log

ls-l/etc/rc.d/rc3.d>>0021rcd_rc3d.log


echo'#superOrder0022********************ls-l/etc/rc.d/rc4.d*****************'>>0022rcd_rc4d.log

ls-l/etc/rc.d/rc4.d>>0022rcd_rc4d.log


echo'#superOrder0023********************ls-l/etc/rc.d/rc5.d*****************'>>0023rcd_rc5d.log

ls-l/etc/rc.d/rc5.d>>0023rcd_rc5d.log


echo'#superOrder0024********************ls-l/etc/rc.d/rc6.d*****************'>>0024rcd_rc6d.log

ls-l/etc/rc.d/rc6.d>>0024rcd_rc6d.log


echo'#superOrder0025********************cat/etc/fstab*****************'>>0025etc_fstab.log

cat/etc/fstab>>0025etc_fstab.log


echo'#superOrder0026********************cat/etc/profile*****************'>>0026etc_profile.log

cat/etc/profile>>0026etc_profile.log


echo'#superOrder0027********************cat/etc/environment*****************'>>0027etc_environment.log

cat/etc/environment>>0027etc_environment.log


echo'#superOrder0028********************printenv*****************'>>0028printenv.log

printenv>>0028printenv.log


echo'#superOrder0029********************cat/etc/syslog.conf*****************'>>0029etc_syslog_conf.log

cat/etc/syslog.conf>>0029etc_syslog_conf.log


echo'#superOrder0030********************ls-l/var/log*****************'>>0030var_log_list.log

ls-l/var/log>>0030var_log_list.log


echo'#superOrder0031********************crontab-l*****************'>>0031crontab_l.log

crontab-l>>0031crontab_l.log


echo'#superOrder0032********************at-l*****************'>>0032at_l.log

at-l>>0032at_l.log


echo'#superOrder0033********************cat/etc/passwd*****************'>>0033etc_passwd.log

cat/etc/passwd>>0033etc_passwd.log


echo'#superOrder0034********************cat/etc/shadow*****************'>>0034etc_shadow.log

cat/etc/shadow>>0034etc_shadow.log


echo'#superOrder0035********************cat/etc/group*****************'>>0035etc_group.log

cat/etc/group>>0035etc_group.log


echo'#superOrder0036********************cat/etc/pam.d/system-auth*****************'>>0036etc_pamd_system_auth.log

cat/etc/pam.d/system-auth>>0036etc_pamd_system_auth.log


echo'#superOrder0037********************cat/etc/login.defs*****************'>>0037etc_login_defs.log

cat/etc/login.defs>>0037etc_login_defs.log


echo'#superOrder0038********************cat/etc/ssh/sshd_config*****************'>>0038etc_ssh_sshd_config.log

cat/etc/ssh/sshd_config>>0038etc_ssh_sshd_config.log


echo'#superOrder0039********************cat/etc/logrotate.conf*****************'>>0039etc_logrotate_conf.log

cat/etc/logrotate.conf>>0039etc_logrotate_conf.log


echo'#superOrder0040********************chkconfig--list*****************'>>0040chkconfig_list.log

chkconfig--list>>0040chkconfig_list.log


echo'#superOrder0041********************cat/etc/security/limits.conf*****************'>>0041etc_security_limits_conf.log

cat/etc/security/limits.conf>>0041etc_security_limits_conf.log


echo'#superOrder0042********************cat/etc/hosts.allow*****************'>>0042etc_hosts_allow.log

cat/etc/hosts.allow>>0042etc_hosts_allow.log


echo'#superOrder0043********************cat/etc/hosts.deny*****************'>>0043etc_hosts_deny.log

cat/etc/hosts.deny>>0043etc_hosts_deny.log


echo'#superOrder0044********************cat/etc/snmp/snmpd.conf*****************'>>0044etc_snmp_snmpd_conf.log

cat/etc/snmp/snmpd.conf>>0044etc_snmp_snmpd_conf.log


echo'#superOrder0045********************service--status-all*****************'>>0045service_status.log

service--status-all>>0045service_status.log


cat *.log


cd../


dateInfo=`date+"%Y%m%d"`


tar -cvf linuxcheck$dateInfo.tar./syschecklog


但是实际操作时还是出现了一些小插曲。此脚本的结构是先在当前目录下建立一个新的syschecklog目录,然后进入此目录,将45个检查项的提示语和命令执行结果输入到对应的文件中,最终会生成45个结果文件,然后在syschecklog的上一目录中生成一个对syschecklog目录的压缩包。

出现的第一个问题是权限问题。远端服务器的root用户已配置高强度密码,已密封不让使用,另外设置了一个管理员叫sysroot。在用sysroot用户登录后,原本预想在根目录下保存检查结果,复制粘贴脚本内容运行,大批量的报错无权限,然后依次换了/var/和/tmp/目录都不行。说明管理员对sysroot用户的可建立目录的权限范围限制的很死。最后只好在/home/sysroot/这一用户自身的目录下建立syschecklog目录来保存检查结果了。

接下来遇到了第二个问题脚本格式问题。脚本上传到linux终端上去后,打开后复制粘贴运行后,只生成35个文件。其中编号第32到41的检查结果没生成,检查脚本执行情况,发现命令被断开执行了,自然会报错。解决办法是将编号第32到41的命令了重新执行一遍即可。

经测试脚本运行还存在另外一个问题是偶尔会出现tar包失败的情况,解决方法是单独执行tar包命令即可,tar -cvf linuxcheck1.tar./syschecklog

接下来是导出tar包到本地,因为运维终端连接远端服务器使用了ssh协议。故可使用scp命令进行远程文件传输。格式是

scp远端服务器用户名@远端服务器ip:/要复制文件的路径/文件发送目的地的路径,

scp sysroot@192.168.1.3:/home/sysroot/linuxcheck1.tar /d8003/home/checklog

然后输入sysroot用户的密码即可下载。

等批量检查完近百台服务器后,在终端上拷贝走所有tar包即可。


文章中以列出了针对风险评估的linux检查的命令脚本。希望这个能对大家有用。