扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
企业系统的安全管理运维涉及到公司信息化系统和数据的防入侵、防泄露工作,这是为所有CSO、COO非常关注的基础性工作。虽然基础,但是一旦处理不到 位,将会给企业带来重大数据、经济损失或者声誉损失。本文针对企业系统的安全管理,给出了10个非常实用、有效的系统强化措施,能够较好地帮助企业系统管 理员发现和提前处理系统可能存在的风险和漏洞,从而在事前保证企业系统的安全运营。
1、从运行路径中去掉“.”
在超级用户(root)模式下,用户必须明确正在运行的命令是用户想要的。考虑下面的场景,用户在哪里登录了超级用户,那么用户的路径变量就是
.:/usr/bin:/usr/sbin:/bin:/sbin.
用户在ls目录下创建了一个包含如下命令的脚本:
#!/usr/bin/ksh
cp /usr/bin/ksh /tmp
chown root:bin /tmp/ksh
chmod 6755 /tmp/ksh
rm -f ls
/bin/ls $*
现在A用户呼叫并上报一个问题,在他的主目录里有些不明文件。用户作为超级管理员,使用cd命令进入他的目录并运行ls -l命令去查看。突然,在用户不知情的情况下,A用户可以运行一个shell脚本来获取用户的超级用户权限!
这样的情况经常发生,但是很容易避免。如果在用户的路径中没有“.”,用户会看到一个名为ls的脚本在他的主目录中,而不会去执行它。
2、规避风险脚本
当用户写一个脚本,总是指定正在使用的应用程序的完整路径。参考下面的脚本:
#!/usr/bin/ksh
date > log
find . -mtime +7 -ls -exec rm -rf {} \; >> log 2>&1
虽然只有三行,并且只有两行执行命令,然而却存在很多安全漏洞:
让我们再看一下另外一个脚本是如何解决其中的一些问题的。
#!/usr/bin/ksh
cd /directory || exit -1
PATH=/usr/bin; export PATH
/usr/bin/date > log
/usr/bin/find /directory -mtime +7 -ls -exec /usr/bin/rm -rf {} \; \
>> log 2>&1
第二行,cd /directory || exit -1,告诉ksh的尝试使用CD命令进入/directory。如果命令失败,它需要退出脚本并且返回一个–1的代码。在Ksh命令中||意味着“如果上 个命令失败”,&&则意味着“如果上个命令成功”。举一个额外的例子,使用命令touch /testfile || echo Could not touch创建一个名为/testfile的文件,或者如果文件不能被创建(也许用户没有足够的权限来创建它),那么在屏幕上会显示“Could not touch”。使用命令touch
/testfile && echo Created file来创建/testfile文件,如果touch命令成功,在屏幕上只会显示“Created file”。用户检查的条件将决定用户是使用||还是&&。
如果脚本继续运行,用户将进入/directory。现在用户可以明确指定用户的路径,如果用户忘记了完整路径可以使用系统搜索命令来锁定。这个方法的例 子并没有在这个小脚本中,但它是一个很好的习惯,尤其是在当用户写长的并且更复杂的脚本时;如果用户忘了指定完整的路径,用户的脚本调用木马程序几率将会 非常小。
接下来用户调用date的全名是:/usr/bin/date。用户也可以完全指定/usr/bin/find和/usr/bin/rm。通过执行此操 作,用户可以让希望在用户系统中插入木马程序并且在用户不知觉的情况下运行的人更加困难。毕竟,如果他们有足够的权限来修改文件/usr/bin,他们可 能就有足够的权限来做任何他们想做的事情。
当编写一个脚本,经常需要遵循这些简单的规则:
3、盯紧容易忽视的计划任务
用户知道什么工作在用户的系统无人值守下正在运行吗?当系统安装完成后,许多操作系统都提供了各种各样的自动化任务自动为用户安装和配置。其他工作随着时间推移而增加的应用程序,会定期的运行。
要掌握用户的系统,用户需要清楚的了解它正在运行的程序。定期审核用户的计划任务列表文件中哪些程序正在运行。许多系统的计划任务文件存储在/var /spool/cron中。一些计划任务守护进程另外支持每小时计划任务,每周计划任务,每月计划任务和每年计划任务的文件,以及一个cron.d目录。 使用man cron命令来将确定用户的计划任务守护进程的确切功能。
在每个目录检查所有的文件。注意每个工作的所有者,如果用户的计划任务守护进程(crond服务)支持,请锁定计划任务并且只对需要使用的用户ID开放。 请注意每个正在运行的文件和它所运行的时间。如果预定的计划用户不清楚,研究来确定到底是什么文件以及用户是否需要它。如果用户正在运行一些用户觉得他们 不需要的东西,与他们联系,问其原因,然后进行相应处理。
持续跟踪用户的计划任务作业并且定期检查他们是否有任何的变化。如果用户发现有些事情已经改变了,进行调查并确定原因。持续跟踪用户的系统正在做什么是保持用户系统安全的一个关键步骤。
4、记录所有守护进程的日志
众所周知,如果守护进程不在第一个时间记录任何信息,那么保存和记录日志也是没用的。在默认情况下有一些守护进程会创建日志,有一些则没有。当用户审核用户的系统时,验证用户的守护进程是否记录日志信息。
任何公开的守护进程都需要配置日志,日志需要被保存。试着访问用户的一些服务,查看用户的日志服务器收集的日志。如果没有,阅读该服务的线上说明手册并查找所需的操作来激活记录。启动它,并尝试再次使用该服务。持续检查用户所有的服务直到确保记录和保存了所有的日志。
5、运行CIS扫描
互联网安全中心(CIS)创建了一个系统安全基准测试工具。用户可以从www.cisecurity.org下载这个工具,对用户的本地系统进行审计并报告其分析结果。该工具会扫描到好的和坏的结果,并在扫描结束后给出一个整体排名。扫描工具可用于Solaris, HP-UX,Linux,Windows,以及思科路由器。
CIS基准测试最好的地方是他们给出的说明,报告中并不会只是简单的提到“用户有什么,哪个不好”;它会告诉用户为什么说它不好的更深层的原因,它可以让用户自己决定是否要禁用“坏东西”或维持原样。基准工具可能会检查很多用户没有想到的地方,并且给用户一份系统的详细报告。
下载并解压缩CIS工具,阅读README文档和PDF文档。 (PDF文档针对系统安全提供了很好的参考材料。)按照README文档说明进行安装包安装,工具安装完成后,用户应该有一个目录/opt/CIS。运行 命令cis-scan来了解用户的系统。这取决于用户服务器的速度和所连接的硬盘数量,扫描可能需要花很长时间才能完成。扫描完成后,用户将会有一个名为 cis-ruler-log.YYYYMMDD-HH:MM:SS.PID的文档。该文档是系统的总结报告,包含了所有的测试结果。其中该文档不包详细信 息--这意味着只能作为索引来参考扫描工具自带的PDF文档。逐行审阅ruler-log文件,如果有一个负面的结果,建议在PDF文档中确定是否可以执 行变更。大部分变更可以在不影响服务器的操作下实现,但并不是所有。谨防漏报;用户可能需要使用PortSentry工具查看端口515是否存在lp漏洞,这会导致了CIS工具报告用户有lp漏洞的错误。在报告末尾,数字越高用户的系统越“坚固”。
这是一个很好的信息安全工具,定期在用户的服务器上运行可以保持服务器的健康。访问互联网安全中心的网站,随着关注该工具的不断发展和变化。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者