Nagios:为经过身份验证的用户创建自定义菜单

标签 nagios

是否有任何“简单”的方法可以为 Nagios 认证用户创建定制的 web gui(例如,菜单、默认主页等)?我为客户创建了一个用户,该用户只能访问某些主机组。但是登录后,用户显然可以看到默认菜单,这是为内部使用而定制的。我怎样才能防止这种情况?

最佳答案

有多种方法可以限制用户在标准 gui 中看到的内容,请查看 manual pages .基本上,用户只会看到那些拥有包含该用户的联系人列表的主机和服务。您可以在 etc/cgiauth.cfg 文件中对特殊情况进行更多配置。

如果您想限制用户访问很少的预定义页面,您可以通过 Web 服务器配置中的一些技巧来实现。您应该对 apache 配置文件如何为此工作有一些了解,并且假设您可以使用他们的 IP 地址将您的客户与您的公司员工区分开来。如果不能,您可以使用组和 AuthGroupFiles,但那样会有点困难。

基本思想是:

  • 允许每个人访问静态页面、图像、css 等内容。
  • 仅允许从贵公司使用的 IP 访问 CGI
  • 为“隐藏”真实 CGI 的客户创建特殊 URL

  • 这需要 mod_authz、mod_rewrite 和 mod_proxy 与 mod_proy_http 一起工作。

    您的 Web 服务器目录中应该有一个 nagios.conf;它的确切位置和内容取决于发行版以及您是使用 RPM 还是自己编译的 nagios,因此您的目录路径可能会有所不同。

    在 CGI 脚本的配置中,我们将
    <Directory /usr/local/nagios/sbin>
        Order deny, allow
        Deny from all
        Allow from 127.0.0.1
        Allow from 1.2.3.4           # <-- this should be the address of the webserver
        Allow from 192.168.1.0/24    # <-- this should be the addresses your company use
        require valid-user
    </Directory>
    

    这将拒绝除您之外的所有人访问 CGI。

    然后,我们定义了一些被重写为 CGI 脚本的网页:
    <Location />
        RewriteEngine On
        RewriteRule customer.html$  http://127.0.0.1/nagios/cgi-bin/status.cgi?host=customerhost [P]
    </Location>
    

    所以当有人访问 customer.html ,服务器将获取 http://127.0.0.1/nagios/cgi-bin/status.cgi?host=customerhost使用其内部代理;这将创建一个似乎来自 127.0.0.1 的 CGI 新请求,因此匹配“允许来自 127.0.0.1”规则。

    mod_proxy 还需要来配置:
    ProxyRequests On
    <Proxy *>
        AddDefaultCharset off
        Order deny,allow
        Deny from all
        Allow from 1.2.3.4                 # <--- again, use your server IP
        Allow from 127.0.0.1
    </Proxy>
    

    这将代理限制为内部 apache 使用,并防止互联网上的其他人将您的代理用于其他任何用途。

    当然,执行的仍然是原始 CGI,但是您的客户不能直接使用它们,他只能访问您在 RewriteRules 中提供的那些。链接和操作下拉菜单仍然存在,但访问它们会导致错误消息。

    如果您仍然想要更多,请使用您选择的编程语言(我已经使用 perl 完成了此操作,但是 php、phyton、ruby ……应该也能正常工作),解析 objects.cache 和 status.dat 文件,并创建您自己的用户界面。一旦您编写了一些库函数来解析这些文件(这应该不会太难,它们的语法很简单),创建自己的 GUI 就像编写任何其他类型的 Web UI 一样困难或容易。

    关于Nagios:为经过身份验证的用户创建自定义菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22145532/

    相关文章:

    linux - 403 Forbidden 和 13 Permission Denied

    MySQL 复制监视器 - Seconds_Behind_Master

    java - REST API 不工作

    linux - Nagios 检查中的 Perl 正则表达式

    linux - ${1} 和 ${*} 有什么作用?

    centos - 监控 yum/rpm 包冲突

    curl - 如何从命令行到 cu​​rl 为任何特定的 nagios 主机设置停机时间?

    java - 当我在 CMD 中运行 "check_jmxeval.bat"来测试设置时出现异常缺少类

    linux - 在nagios中定义新主机进行监控

    testing - 模拟nagios通知