增强的CGI安全性和身份验证

介绍

本文旨在作为围绕CGI Web界面实现更强大的身份验证和服务器安全性的简介。

有很多方法可以增强监视服务器和Nagios环境的安全性。这不应被视为最终所有安全措施。相反,可以将其视为对可以用来加强系统安全性的一些技术的介绍。与往常一样,您应该进行研究并使用最好的技术。将您的监视服务器视为网络中最重要的服务器,您将得到回报。

附加技术

  • 使用摘要式身份验证的更强身份验证 如果您已经按照快速入门指南进行操作,则很可能正在使用Apache的基本身份验证。基本身份验证将在每个http请求中以“明文”形式发送您的用户名和密码。考虑使用更安全的身份验证方法,例如摘要身份验证,该方法会创建您的用户名和密码的MD5哈希,以随每个请求发送。

  • 强制进行所有Web通信的TLS / SSL Apache 通过mod_ssl模块提供TLS / SSL。TLS / SSL在客户端和服务器之间提供了安全的隧道,可使用强大的公钥/私钥加密技术防止窃听和篡改。

  • 使用访问控制锁定Apache 请考虑将对Nagios框的访问锁定到您的IP地址,IP地址范围或IP子网。如果您需要网络外部的访问,则可以使用VPN或SSH隧道。这是限制系统访问HTTP / HTTPS的简便而有效的方法。

实施摘要式身份验证

摘要式身份验证的实现很简单。您将必须使用“ htdigest”工具创建新型的密码文件,然后修改nagios的Apache配置(通常是/etc/httpd/conf.d/nagios.conf)。

使用“ htdigest”工具创建一个新的密码文件。如果您熟悉“ htpasswd”工具,将会注意到的区别是要求提供“领域”参数。在这种情况下,“领域”是指Apache配置中“ AuthName”指令的值。

htdigest -c /usr/local/nagios/etc/.digest_pw“ Nagios访问” nagiosadmin

接下来,使用以下示例编辑Nagios的Apache配置文件(通常是/etc/httpd/conf.d/nagios.conf)。

##开始APACHE CONFIG SNIPPET-NAGIOS.CONF
ScriptAlias / nagios / cgi-bin“ / usr / local / nagios / sbin”
<目录“ / usr / local / nagios / sbin”>
选件ExecCGI
AllowOverride无
订单允许,拒绝
全部允许
AuthType摘要
AuthName“ Nagios访问”
AuthDigestFile /usr/local/nagios/etc/.digest_pw
需要有效用户
</目录>
别名/ nagios“ / usr / local / nagios / share”
<目录“ / usr / local / nagios / share”>
选项无
AllowOverride无
订单允许,拒绝
全部允许
AuthType摘要
AuthName“ Nagios访问”
AuthDigestFile /usr/local/nagios/etc/.digest_pw
需要有效用户
</目录>

END APACHE CONFIG SNIPPETS

然后,重新启动Apache服务,以使新设置生效。

/etc/init.d/httpd重新启动

实施强制TLS / SSL

确保已安装Apache和OpenSSL。默认情况下,如果仍然遇到问题,您应该具有mod_ssl支持,您可能会在阅读Apache的TLS / SSL加密文档时找到帮助。

接下来,通过使用HTTPS(https://your.domain/nagios)访问Nagios Web界面来验证TLS / SSL支持是否正常工作。如果工作正常,则可以继续执行将强制使用HTTPS并阻止对Nagios Web Interface的所有HTTP请求的后续步骤。如果您遇到问题,请访问Apache的TLS / SSL加密文档Google,以对您的特定Apache安装进行故障排除。

接下来,通过将’SSLRequireSSL’指令添加到’sbin’和’share’目录中,为Nagios编辑Apache配置文件(通常是/etc/httpd/conf.d/nagios.conf)。

##开始APACHE CONFIG SNIPPET-NAGIOS.CONF
ScriptAlias / nagios / cgi-bin“ / usr / local / nagios / sbin”
<目录“ / usr / local / nagios / sbin”>

SSL要求SSL

</目录>
别名/ nagios“ / usr / local / nagios / share”
<目录“ / usr / local / nagios / share”>

SSL要求SSL

</目录>

END APACHE CONFIG SNIPPETS

重新启动Apache服务,以使新设置生效。

/etc/init.d/httpd重新启动

实施IP子网锁定

以下示例将展示如何使用Apache的访问控制将Nagios CGI锁定到特定的IP地址,IP地址范围或IP子网。

通过使用“ Allow”,“ Deny”和“ Order”指令,以以下示例为示例,为Nagios编辑Apache配置文件(通常为/etc/httpd/conf.d/nagios.conf)。

##开始APACHE CONFIG SNIPPET-NAGIOS.CONF
ScriptAlias / nagios / cgi-bin“ / usr / local / nagios / sbin”
<目录“ / usr / local / nagios / sbin”>

AllowOverride无
拒绝订单,允许
全部拒绝
从127.0.0.1允许10.0.0.25#允许单个IP地址
允许从10.0.0.0/255.255.255.0#允许网络/网络掩码对
从10.0.0.0/24允许#允许网络/ nnn CIDR规范

</目录>
别名/ nagios“ / usr / local / nagios / share”
<目录“ / usr / local / nagios / share”>

AllowOverride无
拒绝订单,允许
全部拒绝
从127.0.0.1允许10.0.0.25#允许单个IP地址
允许从10.0.0.0/255.255.255.0#允许网络/网络掩码对
从10.0.0.0/24允许#允许网络/ nnn CIDR规范

</目录>

END APACHE CONFIG SNIPPET

重要笔记

  • 摘要式身份验证以明文形式发送数据,但不是您的用户名和密码

  • 摘要身份验证不像基本身份验证那样得到普遍支持

  • TLS / SSL具有“ 中间人攻击 ”的潜力。如果攻击者能够将自己插入服务器与客户端之间,例如网络钓鱼攻击,ISP监视或公司LAN防火墙证书重签名,则MITM攻击很容易受到攻击。因此,请仔细阅读证书验证!

  • Apache访问控制仅保护HTTP / HTTPS协议。查看IPtables以实现强大的系统范围防火墙控制。

  • 最重要的是,安全性是一个不断变化的目标,因此请及时了解情况并进行研究!也许通过收听Podcast(例如“ 立即安全! ”)。

本文章首发在 网安wangan.com 网站上。

上一篇 下一篇
讨论数量: 0
只看当前版本


暂无话题~