检查服务是否存在漏洞

检查服务是否存在漏洞

我需要编写某种bash脚本来检查服务的conf文件(通常用作nginx apache mongodb cassandra ssh等)并搜索模式(即检查mongod.conf是否具有授权:启用行或检查是否通过密钥进行ssh日志记录启用,还检查每个服务是否是最新版本,禁用默认用户)以确保服务安全。

但有一个问题我还无法解决(还;)) - 我需要证明我的脚本有效 - 您知道有任何应用程序可以检查常用服务的漏洞吗?我指的不是网站 - 服务。我可以在运行我的脚本之前和之后执行该测试 - 瞧 - 我的脚本正在拯救世界;)

我将非常感谢任何答案。

非常感谢你:3

答案1

您对我要求的事情似乎是编写标准监控脚本。

解决这个问题的最佳方法是选择某种编程语言并使用它来编写所有这些语言。

Bash 脚本不是最好的选择,因为它对于某些操作来说是不稳定的 - 它可以做很多事情,但是维护它是一个巨大的问题,并且由于使用各种外部二进制文件和处理错误等而变得非常混乱,它并不好其他语言中的异常处理。

我建议使用一种 JVM 语言 - Java、Scala、Groovy - 每个数据库和其他东西都有驱动程序。 C# 也是不错的选择,因为它拥有所有库。

如果没有,那么 Python、PHP、Perl - 这里还有很多驱动程序和 API。

因此,您需要认真对待这个主题,one of the most important things并确保对每项服务进行适当的测试。

当您只编写脚本时,您可以使用任何现有的网络监控前端(例如带有 Thruk 的 Nagios)来支持这些脚本和通知/报告的计划执行。

此外,您可以使用 pnp4nagios 绘制指标。

另请注意,漏洞扫描和监控是两个不同的东西。对于第一个,您有 OpenVAS 和 Nessus,对于第二个,您有 Nagios、Solar Winds 等。您想要做的是将自定义脚本与 Nagios 等一起使用。

这也是学习编程的一个非常好的方法。您所需要的只是编写非常简单的脚本,这样您就可以在没有太大压力的情况下学到很多东西。每天花 2-3 小时,这样您就可以深入了解您的基础设施。您可以从 Eclipse 或 IntelliJ 开始,并使用 Gradle 构建简单的项目。由于 Gradle 具有良好的自动化功能,并且 Java 具有良好的支持,从长远来看,您应该会感到高兴。您可以向开发团队寻求帮助。检查 Nagios 插件文档应返回哪些字符串以使用 pnp4nagios 绘制图形。

您还可以尝试将日志提取到数据库中,这也非常有帮助。

现在一些更实用的信息。您可以远程运行 java 小程序(Nagios 插件),也可以在 Nagios 机器上本地运行(首选)。这样你就可以通过 ssh(Java 或 Python)连接到系统,读取文件,下载并解析它。所以在某些场景下你需要一些网络操作。

您还可以使用云 API。

您还可以将 SNMP 与现有的 Nagios 插件一起使用,因此不需要使用 Java 来完成所有事情。

您可以使用专用解决方案监控某些数据库,如果您不手动编写脚本(Nagios 是最好的),您可以在网络上找到可以监控数据库性能的工具。

最后,监控脚本可以检查数据库是否有密码。这就是它通常所做的事情。而且它不会耗尽 RAM、磁盘空间等。

这是如何正确完成此操作的方法。

  1. 您的基础设施的数据库,例如所有主机等,可能具有自动检测功能。这与构建基础设施/自动化相关。如果您使用云,这可以是多个数据库。

  2. 另一个包含日志和其他文档的数据库,因此包含 Nagios 的执行日志以及 (4) 中运行的脚本的结果。在这里您可以获取任何其他日志。 MongoDB 会很好。卡桑德拉也可以做到。

  3. 纳吉奥斯

    • 运行检查数据库 (2) 并查看检​​查是否成功以及结果是什么
    • 通过检查数据库日志来检查后台脚本是否正在运行(2)
  4. 运行密码/访问检查的后台脚本

    • 如果数据库 (1) 中的每个系统都没有设置空 root 密码或默认密码
    • 如果数据库 (1) 中的每个系统都允许某些登录
    • 将结果并记录到数据库中 (2)
    • 这也可以运行 OpenVAS,结果可以提取到 (2)
  5. 因此,如果有默认密码或没有密码,您可以从 (1) 更新版本 (1) 或服务器。您还可以构建 (1) 为 Nagios 生成检查以监视和生成特定指标。您可以运行许多 Nagios 系统。数据库 (2) 可用于从各种来源获取日志(为此您需要适配器)。根据这些日志,您可以查看暴力破解的内容并调整策略等。

Nessus 和 OpenVAS 也是巨大的猪。因此,使用 Nagios 来专门检查主机是一种简单而有效的方法。此外,Nessus 和 OpenVAS 也不是检查默认密码或缺少密码的良好解决方案。专用脚本是解决这个问题的更好方法。

相关内容