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;这将创建一个新的CGI请求,似乎来自127.0.0.1,因此匹配“允许来自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一样困难或简单.

点赞