使用 Crowdsec 保护我们的机器 – 第一部分

小心,这是… 对不起, 但这是真的… 对于那些仍然不知道的人, 在一系列文章中,我打算展示 Crowdsec 的一些奇迹,以及我们如何保护我们的基础设施免受攻击或不当访问.

在开始描述产品之前, 其建筑… 让我们开始认为我是一个快乐的 fail2ban 用户,直到我发现了 Crowdsec. 事实证明,Crowdsec, 是 IDS 和 IPS, 检测并阻止对计算机的访问, 我不在乎它是不是 LAN 上的机器, 比在 Internet 上发布的服务, 成为 Linux, Windows 或容器. Crowdsec(如果检测到 DDoS 攻击), 端口扫描, 漏洞扫描, 或者只是访问不正确 (如果该网站是一个网站, 如果是 Windows,则添加到该 RDP, SSH 公司, CIFS…). Crowdsec 将检测到该不当访问并采取措施, 最正常的事情, 封禁他, 如何? 嗯,除其他外,来自操作系统自己的防火墙 (窗户, Linux的…). 因此,Crowdsec 将在操作系统的固件中创建一个规则来阻止该源 IP. 另外, 明显地, Crowdsec 还将读取我们应用程序的日志, 服务业… 根据我所看到的, 做, 当心攻击者.

井, 要是那是, 我没有告诉你这是, 还, 还… Crowdsec 是免费软件, 如果您愿意,这有商业部分,我们不会在本系列文章中看到, 因此,我们将在本系列中看到的内容将全部开放. 总, Crowdsec 检测行为, 基于声誉的威胁管理, 但它也有公网 IP 地址黑名单, 由我们所有使用 Crowdsec 的人分享和培养; 因此,当检测到威胁的大多数人, 我们都会收到警报和预警!

等等,我们还没完成, 事实证明,Crowdsec 可以按照我们在 Windows 上所说的那样安装, macOS 的, Linux的, Kubernetes (简体中文), 码头工人, OpenWRT… 好吧,多亏了 Crowdsec API, 我们的机器还可以相互共享 IP 黑名单. 那是, 如果有人攻击我一台机器, 其余的将在您尝试之前阻止您的访问, 好奇… 井, Crowdsec 实际上会检测到 'bouncer'’ 做 (然后让我们开始吧).

还有很多事情要做, 我们会一点一点地看到它, 如果 Telegram 的通知, 您拥有的 Web 控制台, 与 Prometheus 集成, 格拉法纳… 但, 在我看来,您想知道最奇怪的事情吗?? 也许你觉得这是胡说八道, 对我来说,这是炸弹. 周到!!! 因为它确实如此, 如果我们在公司有企业防火墙, 真正的边界, 例如 Fortigate, 一个 pfSense… 我们也可以让这些防火墙以这些黑名单为食! 哦! 并在我们的防火墙中设置规则 (一切之上) 拒绝其他计算机访问所述黑 IP, 网络段… 哦,我的上帝!

重量轻, 调节, 设置简单… 井, 让我们开始吧,因为我谈了很多 😉

在第一篇文章中,我们将了解: 如何在 Linux 上安装 Crowdsec, 基本命令, 如何在 Windows 上安装 Crowdsec, 使用控制台, 我们进行了一次测试攻击,最后如何通过 Telegram 管理警报. 几乎一无所有.

在其他文章中,我们将了解如何进行多服务器安装, 这是, 我们的机器共享信息, 或将其与我们的 Fortigate 防火墙集成…

不用推荐它的官方文档: https://docs.crowdsec.net

在 Linux 上安装 Crowdsec

安装非常简单, 让我们从一个想要保护运行在 Ubuntu 上的 Nginx 的示例开始, 我们使用:

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | Sudo Bash sudo apt install crowdsec -y
   ...
   信息[11/12/2022:04:24:15 下午] crowdsec_wizard: Installing collection 'crowdsecurity/linux'
   INFO[11/12/2022:04:24:21 下午] crowdsec_wizard: Installing collection 'crowdsecurity/nginx'
   INFO[11/12/2022:04:24:24 下午] crowdsec_wizard: Installing collection 'crowdsecurity/sshd'
   ...

正如我们所看到的, 安装适用于 Linux 的 Crowdsec 代理时, 检测到我们有 SSHd 和 Nginx 服务, 因此自动且无需执行任何其他操作, 它已经检测到异常.

接下来是, 如果我们想要一个操作来禁止源 IP 地址, 因为我们需要在操作系统上安装并架设防火墙, 通常每个人都会带来它, 我们了解我们使用 iptables, 它还将支持 NFTables, ipset 或 p, 取决于我们的操作系统. 并且我们安装相应的 bouncer:

sudo apt install crowdsec-firewall-bouncer-iptables -y

好吧,原则上现在它已经准备好了, 机器保护! 🙂 现在就来! 现在让我们在 Windows 上执行相同的过程, 查看相似之处, 然后我们更详细地遵循也许是最有趣的命令, 我们将讨论 API… 确实,我们还有其他细节, 我们会看到的.

在 Windows 上安装 Crowdsec

我说了什么, 我们做同样的练习, 在 Windows 计算机上安装 Crowdsec, 以保护它为目标. 如果有人尝试通过 RDP 访问并输入了错误的密码 (违约 5 次) 好吧,禁止他, 或通过 CIFS, 或者你想要的任何东西, 进行扫描 😉

首先, 下载并安装 .NET 运行时要求: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.11-windows-x64-installer (或更高版本, 这取决于你什么时候读到这个).

我们可以继续, 我们从以下位置下载了 MSI 安装程序 https://github.com/crowdsecurity/crowdsec/releases/

“以后”,

“是的,宝贝”,

“是的”,

我们等待几秒钟,等待它安装…

并完成! 我们已经安装了 Crowdsec!

但请注意,我们还没有结束, 同样,Crowdsec 将检测到但无法执行操作, 为此,我们需要 Windows 防火墙的 Bouncer. 所以, 我们下载并安装它: https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases

“安装”,

现在它. 受保护的 Windows PC!

执行测试攻击

首先, 我们为什么不验证一下这是否有效? 这就是我们看到一些初始 first 命令的方式. 无, 很简单, 无畏, 如何测试?

好吧,Windows 计算机本身会尝试验证您 5 RDP 凭据不正确的时间 (远程桌面), 或通过 CIFS 和共享文件夹… 如果需要,您可以将其复杂化并执行端口扫描, 或漏洞… 您将看到 Windows 计算机如何阻止您.

它将在本地防火墙中创建一条规则,但拒绝来自所述恶意 IP 的任何访问.

和 Linux 团队, 例如,如果它像前一种情况一样携带一个 Nginx, 好吧,我们可以下载 Nikto,这是一个 Web 服务器扫描仪, 我们检查它是否检测到它:

git 克隆 HTTPS://github.com/sullo/nikto cd nikto/program git checkout nikto-2.5.0 ./nikto.pl -h HTTPS://XXX.XXX.XXX.XXX

在此之后,同样的事情, Linux 机器将立即拒绝我们的访问,防火墙中有一个例外.

基本命令

作为借口,我们继续讨论文档的下一点, 我们可能有兴趣了解的最小命令 (我们稍后会知道更多):

查看封禁或封禁列表:

sudo cscli 决策列表

这将告诉我们没有禁令, 如果我们没有进行测试.

或者它检测到一个块并向我们显示它的 IP, 您的理由, 阻塞时间…

手动禁止 IP:

sudo cscli decisions add --ip DIRECCIÓN_IP --reason "描述"

德班, 或取消阻止 IP 地址:

Sudo cscli decisions delete --IP DIRECCIÓN_IP

Con 'sudo cscli alerts list’ 我们将看到已响起的警报, con 'sudo cscli alerts inspect ID’ 我们将提供每个警报的更多详细信息.

Con 'sudo /usr/share/crowdsec/wizard.sh -c’ 我们可以启用/禁用要使用 Crowdsec 监控的服务.

在这个文件中 '/etc/crowdsec/parsers/s02-enrich/whitelists.yaml’ 我们将有可能排除一台机器并将其列入白名单, 默认情况下,它会带来 3 excluded ranges 以及 Test 攻击未检测到您, 也许你会在这里拍摄 😉

名字: crowdsecurity/whitelists 说明: "将来自私有 IPv4 地址的事件列入白名单"
白名单:
  原因: "私有 IPv4/IPv6 IP/范围"
  知识产权:
    - "127.0.0.1"
    - "::1"
  CIDR:
    #- "192.168.0.0/16"
    #- "10.0.0.0/8"
    - "172.16.0.0/12"
  # 表达:
  #   - "'foo.com' in evt.Meta.source_ip.reverse"

电报通知

好吧,这最后一天,也是另一天,我们将继续, 有很多东西要看和要告诉 🙂 默认情况下,在不搞砸 Telegram 的情况下,我们可以向 Slack 发送通知, Splunk (英语), 电子邮件…

我们编辑配置文件 '/etc/crowdsec/profiles.yaml’ 我们取消对这些 2 线:

通知:
  - http_default

我们按照 '/etc/crowdsec/notifications/http.yaml 中所说的进行编辑’ 保持那样, 我们必须考虑更改 Telegram 群组的 ID 和 Token:

类型: HTTP 名称: http_default log_level: 信息格式: |
  {
   "chat_id": "-ID_CHAT_TELEGRAM",
   "发短信": "
     {{范围 . -}}
     {{$警报 := . -}}
     {{范围。决定 -}}
     {{.价值}} 将得到 {{.类型}} 为了下一个 {{.期间}} 用于触发 {{.场景}}.\rn HTTPS://www.shodan.io/host/{{.价值}}
     {{结束 -}}
     {{结束 -}}
   "
  }

网址: https://api.telegram.org/botTOKEN/sendMessage 方法: POST 标头:
  内容类型: "应用程序/JSON"

照常, 重新启动 Crowdsec 服务所需的任何更改:

sudo systemctl restart crowdsec

Et voila!! Telegram 消息将立即到达!

来, 我们继续新的一天, 这简直要下地狱了, 我们留下许多值得一看的东西, 我们必须讨论更多的命令, 应用程序接口, 从他们告诉您我们会看到的仪表板或 Web 控制台, 但是拜托… 这很长 我们必须🙂让我们所有的代理相互交谈, (如果它引起兴趣), 将其与我们的边界防火墙集成的部分… 请参阅 Prometheus 部分, 格拉法纳…

井, 我希望这是一个有趣的解决方案, 我敢肯定,我们中的许多人在没有这种保护的情况下向 Internet 发布服务. 或者为什么不呢, 在我们组织的内部机器上实施, 它们之间形成一个网状结构并相互保护…

井, 多么大的拥抱!

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!

Aegis 免费代币管理器

10 十一月 2022