前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用于安全监控的实时SSH仪表板

用于安全监控的实时SSH仪表板

原创
作者头像
点火三周
修改2021-04-19 11:08:19
6.9K0
修改2021-04-19 11:08:19
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

SSH(安全外壳)是用于路由器,交换机,防火墙,安全设备,基于Linux的操作系统和其他IT资产的最常见的远程管理协议。尽管SSH守护程序提供了出色的强化功能,以增强您的身份验证方法和访问控制,但SSHD并未提供本机监视功能。

这篇博客文章详细介绍了如何使用 Elastic Stack 中的 ELK(Elasticsearch,Logstash和Kibana)将SSH日志文件转换为实时和交互式开源SIEM(安全信息和事件管理)的仪表板。这样,您就知道谁在敲门并在SSH会话中获得可见性。图1显示了该实时仪表板。此安全性仪表板的左侧显示失败的SSH操作,而右侧显示成功的SSH会话:

SSH实时仪表板
SSH实时仪表板

图1:SSH安全仪表板

在以下情况下,此数据和仪表板可能会很有用:

  • 您的SSH密钥对被盗/复制/破解,并被恶意参与者用来登录。
  • 利用了(Web应用程序)漏洞,并执行了特权升级,这导致sudo特权/根访问,或者生成并配置了辅助SSH密钥对。
  • 在网关,管理和Web /应用程序服务器上执行并行攻击,并且您想要使用SSH和sudo日志数据进行威胁搜索。
  • SSHD或sudo配置中的配置错误会导致大量的登录和提权。

设置

您可以自建ELK Stack,也可以利用腾讯云ES 。后者实质上是云原生SIEM解决方案。

SSHD日志与操作系统无关,这意味着无论您运行的是Debian,Red Hat或基于Ubuntu的系统,甚至是OpenBSD版本,SSH日志条目的格式也应统一。但是,时间/日期表示法可能不统一,应该在Logstash中进行标准化。

日志数据流管道

SSH日志文件需要经过数个步骤的处理,然后我们才能获得用于监视目的的闪亮的实时安全性仪表板。图2显示了用于日志转发,收集,分析和可视化的数据流过程:

rsyslog-elk-stack-dataflow
rsyslog-elk-stack-dataflow

图2:从SSH源到SIEM的日志数据流

步骤1:从源头开始,SSH身份验证尝试和会话活动会自动附加到/ var / log / authlog日志文件中。SSH authlog文件的内容如下所示:

代码语言:javascript
复制
$ tail /var/log/authlog

Apr 15 12:55:28 cryptsus-bastion sshd[25158]: Connection from 61.61.61.61 port 35444 on 209.209.209.209 port 22 rdomain "0"
Apr 15 12:55:58 cryptsus-bastion sshd[25158]: fatal: Timeout before authentication for 61.61.61.61 port 35444
Apr 15 12:56:30 cryptsus-bastion sshd[35310]: Connection from 61.61.61.61 port 13361 on 209.209.209.209 port 22 rdomain "0"
Apr 15 12:56:54 cryptsus-bastion sshd[7145]: Connection from 95.95.95.95 port 10265 on 209.209.209.209 port 22 rdomain "0"
Apr 15 12:56:55 cryptsus-bastion sshd[7145]: Accepted key ED25519 SHA256:doBfNsySf8/sA29ak2aBl29Aksdliuj2923lA23a/G4lcZs found at /home/$USERNAME/.ssh/authorized_keys:3
Apr 15 12:56:55 cryptsus-bastion sshd[7145]: Postponed publickey for krabelize from 95.95.95.95 port 10265 ssh2 [preauth]
Apr 15 12:56:55 cryptsus-bastion sshd[7145]: Accepted key ED25519 SHA256:doBfNsySf8/sA29ak2aBl29Aksdliuj2923lA23a/G4lcZs found at /home/$USERNAME/.ssh/authorized_keys:3
Apr 15 12:56:55 cryptsus-bastion sshd[7145]: Accepted publickey for krabelize from 95.95.95.95 port 10265 ssh2: ED25519 SHA256:doBfNsySf8/sA29ak2aBl29Aksdliuj2923lA23a/G4lcZs
Apr 15 12:56:55 cryptsus-bastion sshd[7145]: User child is on pid 73005
Apr 15 12:56:55 cryptsus-bastion sshd[73005]: Starting session: shell on ttyp0 for krabelize from 95.95.95.95 port 10265 id 0

步骤2:本地rsyslogd守护程序(远程syslog)或Filebeat代理将每个新日志条目转发到集中式Logstash服务器,该服务器通过TLS与CA证书结合对网络上的日志流量进行加密,并通过TCP发送(可靠日志记录)。Rsyslogd是Linux固有的,而Filebeat是Elastic的第三方代理,需要首先安装。

步骤3:使用Logstash将数据标准化为JSON格式。我们使用grok过滤器创建映射字段以创建变量(例如,将IPv4和IPv6地址转换为geo-IP点):

代码语言:javascript
复制
%{MONTH:month}(%{SPACE})?%{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{WORD}\[%{NUMBER:ssh_session_id}\]: Invalid user %{USER:ssh_user} from %{IPV4:ssh_source_ip} port %{NUMBER:ssh_source_port}
%{MONTH:month}(%{SPACE})?%{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{WORD}\[%{NUMBER:ssh_session_id}\]: %{DATA} %{WORD:ssh_auth_type} for %{USER:ssh_user} from %{IPV4:ssh_source_ip} port %{NUMBER:ssh_source_port} %{NOTSPACE} %{WORD:ssh_key_type} %{NOTSPACE:ssh_hash_type}:%{NOTSPACE:ssh_hash}
%{MONTH:month}(%{SPACE})?%{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{WORD}\[%{NUMBER:ssh_session_id}\]: Starting session: shell on %{DATA:ssh_shell} for %{USER:ssh_user} from %{IPV4:ssh_source_ip} port %{NUMBER:ssh_source_port} %{DATA}
%{MONTH:month}(%{SPACE})?%{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{DATA} %{USER:user} to %{USER:sudo_user} on %{DATA:ssh_shell}

步骤4:Elasticsearch存储日志条目,并允许我们过滤Logstash变量,以便仅选择相关数据。

第5步:我们基于Elasticsearch搜索过滤器使用Kibana创建可视化,并将这些可视化添加到我们的SSH安全仪表板中。

步骤6:安全分析人员通过Web GUI通过端口443或SSH隧道或端口转发访问Kibana仪表板。您还可以像使用SOC(安全运营中心)一样,使用实时Kibana仪表板将纯平屏幕悬挂在墙上。

由于日志条目是通过rsyslog在本地自动和自主地转发到集中管理的ELK的,因此恶意活动也会被自动记录和转发(除非网络会话被该恶意参与者劫持或阻止)。我们应该使用这种自动转发机制来发挥我们的优势。如果满足特定的阈值或变量,则可以配置警报,例如从无关国家/地区成功进行恶意登录。

提示:首先先强化SSH守护程序,然后再应用监视/SIEM日志记录过滤器。这将消除噪音和误报。

Kibana SSH安全仪表板

结果显示在下面,在这里我们可以看到失败的SSH尝试源自何处(图1)。接下来,我们将看到失败的SSH尝试的时间表,该时间表按地域和日期/时间排序。这样,我们就可以实时发现SSH暴力破解攻击。您也可以将此仪表板用于Honeypot系统。

接下来,您将看到无效的SSH尝试的细目分类,该尝试按国家和SSH用户名排序。此饼图可让您更好地了解攻击者所采用的攻击路径。

最后,我们还将可视化随时间推移失败的sudo尝试。

ssh失败的会话实时
ssh失败的会话实时

图3:实时失败的SSH会话

图4显示了与图3相反的部分,即成功的SSH会话。这很重要,因为您可能会根据此信息来推断误报和SSH流量转移。

在下面,您可以查看成功登录的IP地址。请注意,Geo-IP转换并不总是准确的,恶意行为者可以使用服务器方法隐藏其真实地理位置。接下来,您可以查看哪些资产通过了成功的SSH身份验证会话以及在什么日期/时间通过。

我们也对SSH身份验证方法感兴趣。我们可以看到仅使用了SSH公钥而不是密码身份验证。接下来,显示ed25519公钥的相关SSH指纹。

最后,记录所有成功的提升sudo操作。从逻辑上讲,这些sudo操作应与成功的SSHD身份验证的时间戳相匹配。

ssh成功会话实时
ssh成功会话实时

图4:实时成功的SSH会话

现在,您可以关联和汇总其他来源的数据。从Web服务,数据库,防火墙,IDS,HIDS,LDAP / AD服务器,腾讯云平台和所有其他来源收集日志。这样,您就可以在整个IT环境中看到信息,并且可以通过关联事件和数据来进行侦察甚至横向移动。愉快的进行威胁捕获!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设置
  • 日志数据流管道
  • Kibana SSH安全仪表板
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档