首页 > 系统教程 > 操作系统 > 使用https保护多服务器安全引擎安装

使用https保护多服务器安全引擎安装

Jennifer Aniston
发布: 2025-03-10 09:02:15
原创
259 人浏览过

Secure A Multi-Server Security Engine Installation With HTTPS

本教程的第二部分将介绍如何设置和保护多服务器CrowdSec安全引擎的安装。在第一部分中,我们讲解了如何在多台服务器上设置CrowdSec安全引擎,其中一台服务器作为父服务器,另外两台服务器将警报转发给它。

本部分将解决先前多服务器安全引擎安装中明文HTTP通信带来的安全问题。为了解决这个问题,我们建议通过加密通道建立安全引擎之间的通信。此解决方案允许服务器2或服务器3信任服务器1的身份,并避免中间人攻击。

使用自签名证书

创建证书首先,您需要创建一个证书。这可以通过以下单行命令实现:

openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
登录后复制
登录后复制

目前,安全引擎在启动时无法请求私钥的密码。因此,您可以选择每次启动或重新加载安全引擎时手动解密私钥,或者将密钥未加密地存储。无论哪种方式,要删除密码,您可以使用以下命令:

openssl rsa -in encrypted-key.pem -out key.pem
登录后复制

然后,在安全引擎启动后,可以安全地删除未加密的密钥文件。

配置安全引擎以使用自签名证书在服务器1上,您需要配置安全引擎以使用生成的证书。如下所示,以下/etc/crowdec/config.yaml摘录中api.server部分的tls.cert_filetls.key_file选项设置为生成的证书文件。

api:
  server:
    log_level: info
    listen_uri: 10.0.0.1:8080
    profiles_path: /etc/crowdsec/profiles.yaml
    online_client: # Crowdsec API credentials (to push signals and receive bad 

    tls:
      cert_file: /etc/crowdsec/ssl/cert.pem
      key_file: /etc/crowdsec/ssl/key.pem
登录后复制

在客户端,配置更改发生在两个文件中。首先,修改/etc/crowdec/config.yaml以接受自签名证书,方法是将insecure_skip_verify设置为true

您还需要在/etc/crowdsec/local_api_credentials.yaml文件中将HTTP更改为HTTPS以反映这些更改。此小的更改必须在所有三台服务器(服务器1、服务器2和服务器3)上完成。

注意:请记住,如果服务器1也用作日志处理器,则也必须在此服务器上进行此LAPI配置。

url: https://10.0.0.1:8080/
login: <login>
password: <password></password></login>
登录后复制

旁注:显然,使用自签名证书不会对LAPI服务器的所有权提供任何保证。使用该服务的服务器(在此设置中为服务器2或服务器3)仍然容易受到中间人攻击,但至少此设置提供了加密通信。这就是需要InsecureSkipVerify选项的原因。

使用证书颁发机构颁发的证书

Let's Encrypt或Amazon ACM等服务可以通过为可以添加到/etc/hosts或本地DNS服务器的完全限定域名颁发证书来解决InsecureSkipVerify问题。然后,可以使用此指定的完全限定域名填充/etc/crowdsec/local_api_credentials.yaml

这确实有效,并防止设置InsecureSkipVerify选项。只要可以信任DNS配置,这就能确保客户端和服务器之间的通信不会被篡改,但这仍然应该被视为一种变通方法。

使用PKI

配置和管理SSL公钥基础设施(PKI)的过程不在本教程的范围内,但我强烈建议您查看OpenSSL官方文档。简单的PKI方案足以满足此安全引擎设置的需求。

根据OpenSSL文档,有一些值得一提的事情。

要在我们的CrowdSec TLS方案中使用,证书请求必须使用与Crowdsec LAPI服务器的IP相对应的主题替代名称发出。这可以通过在调用OpenSSL进行证书请求时定位SAN环境变量来完成(请参阅OpenSSL简单PKI方案中的步骤3.3)。

openssl req -x509 -newkey rsa:4096 -keyout encrypted-key.pem -out cert.pem -days 365 -addext "subjectAltName = IP:172.31.100.242"
登录后复制
登录后复制

在启动CrowdSec安全引擎之前,必须将根证书和签名证书的公共部分(在OpenSSL简单PKI方案的步骤4.5中创建的捆绑文件)添加到本地证书存储区。在此设置中,这是连接到LAPI服务器所必需的。有很多方法可以做到这一点,golang源代码指定了预期证书的位置,或者您可以在systemd服务文件中使用SSL_CERT_FILE环境变量来指定启动安全引擎时查找证书的位置。

关于CrowdSec和TLS身份验证的更新说明

在本文首次发表后,我们在安全引擎中添加了一项新功能,您现在不仅可以保护TLS上的通信,还可以使用证书确保身份验证。在官方文档中,您可以找到一个很好的示例,该示例显示了如何在安全引擎之间或安全引擎和补救组件之间使用证书进行TLS身份验证。

结论

本文重点介绍了如何保护不同CrowdSec安全引擎安装之间的通信。所考虑的用例是在私有网络中的安全引擎安装,但这也可以在具有互联网通信的公共网络上部署。在这种情况下,第三方证书很容易就能解决问题。

根据需要,我们提出了三种不同的方法来实现安全引擎之间的安全TLS通信——使用自签名证书、使用证书颁发机构颁发的证书和使用SSL公钥基础设施。

第一种方案(使用自签名证书)仅适用于您希望确保加密通信而无需身份验证的情况。当您可以修改本地DNS解析时,才可以考虑第二种方案。第三种方案是最复杂的,但它适合大多数用例,并且在安全问题严重时可能是最佳选择。

希望本教程对您有所帮助。感谢您的阅读,敬请期待!

如果您有任何疑问或反馈,请随时通过我们的Discord和Discourse社区平台与我们联系。

以上是使用https保护多服务器安全引擎安装的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板