From 3f8ba622c701a988b1bccb4f87e5eaa9516f42e6 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Mon, 29 May 2023 15:33:32 +0200
Subject: [PATCH] update project

---
 agent_based/checkpoint_identity_awareness.py  |   3 +
 ...oint_identity_awareness-0.3.0-20230529.mkp | Bin 0 -> 6377 bytes
 checkpoint_identity_awareness.mkp             | Bin 6372 -> 6377 bytes
 gui/metrics/checkpoint_ia_adquery.py          |  58 ++++
 gui/metrics/checkpoint_identity_awareness.py  | 279 ++++++++++++++++++
 gui/wato/checkpoint_identity_awareness.py     |  87 ++++++
 packages/checkpoint_identity_awareness        |  13 +-
 7 files changed, 433 insertions(+), 7 deletions(-)
 create mode 100644 checkpoint_identity_awareness-0.3.0-20230529.mkp
 create mode 100644 gui/metrics/checkpoint_ia_adquery.py
 create mode 100644 gui/metrics/checkpoint_identity_awareness.py
 create mode 100644 gui/wato/checkpoint_identity_awareness.py

diff --git a/agent_based/checkpoint_identity_awareness.py b/agent_based/checkpoint_identity_awareness.py
index f3a9626..ae886e8 100644
--- a/agent_based/checkpoint_identity_awareness.py
+++ b/agent_based/checkpoint_identity_awareness.py
@@ -12,6 +12,9 @@
 # 2018-03-15: code cleanup, added identity counters 39-44
 # 2020-06-08: changed snmp-scan function
 # 2021-08-25: rewritten for CMK 2.0
+# 2023-0529: moved gui files to ~/local/lib/check_mk/gui/plugins/...
+#
+
 #
 # snmpwalk sample
 #
diff --git a/checkpoint_identity_awareness-0.3.0-20230529.mkp b/checkpoint_identity_awareness-0.3.0-20230529.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..9fbd734c55bd5c4b9a2bd7360e91332b9d322721
GIT binary patch
literal 6377
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

literal 0
HcmV?d00001

diff --git a/checkpoint_identity_awareness.mkp b/checkpoint_identity_awareness.mkp
index 4ac8f11742cb3a5c1773c5137c823e068570f2d6..9fbd734c55bd5c4b9a2bd7360e91332b9d322721 100644
GIT binary patch
literal 6377
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

literal 6372
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

diff --git a/gui/metrics/checkpoint_ia_adquery.py b/gui/metrics/checkpoint_ia_adquery.py
new file mode 100644
index 0000000..19d6c83
--- /dev/null
+++ b/gui/metrics/checkpoint_ia_adquery.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2018-03.12
+#
+# Check Point Identity Awareness AD Query metrics plugin
+# checkpoint_ia_query
+#
+
+from cmk.gui.i18n import _
+
+from cmk.gui.plugins.metrics.utils import (
+    metric_info,
+    graph_info,
+    perfometer_info,
+    indexed_color,
+)
+
+_MAX_DCS = 48  # max colors ;-)
+
+metric_info['checkpoint_ia_adquery_events_sum'] = {
+    'title': _('Events summary'),
+    'unit': '1/s',
+    'color': '26/a',
+}
+
+for i in range(1, _MAX_DCS):
+    # generate different colors for each DC.
+    # unfortunately there are only 24 colors on our
+    # color wheel, times two for two shades each, we
+    # can only draw 48 differently colored graphs
+    metric_info[f'checkpoint_ia_adquery_dc_{i}'] = {
+        'title': _(f'DC{i:02d} Events'),
+        'unit': '1/s',
+        'color': indexed_color(i, _MAX_DCS),
+    }
+
+dc_metric = ([(f'checkpoint_ia_adquery_dc_{num:d}', 'stack') for num in range(_MAX_DCS, 0, -1)])
+dc_metric.insert(0, ('checkpoint_ia_adquery_events_sum', 'line'))
+
+graph_info['checkpoint_ia_adquery_dc'] = {
+    'title': _('Check Point Identity Awareness AD queries'),
+    'metrics': dc_metric,
+    'range': (0, None),
+    'optional_metrics': [f'checkpoint_ia_adquery_dc_{num:d}' for num in range(0, _MAX_DCS + 1)]
+}
+
+perfometer_info.append({
+    'type': 'linear',
+    'segments': [
+        'checkpoint_ia_adquery_events_sum',
+    ],
+    'total': 100,
+})
diff --git a/gui/metrics/checkpoint_identity_awareness.py b/gui/metrics/checkpoint_identity_awareness.py
new file mode 100644
index 0000000..5887fa9
--- /dev/null
+++ b/gui/metrics/checkpoint_identity_awareness.py
@@ -0,0 +1,279 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2018-01-02
+#
+# Check Point Identity Awareness metrics plugin
+# checkpoint_identity_awareness
+#
+
+from cmk.gui.i18n import _
+
+from cmk.gui.plugins.metrics.utils import (
+    metric_info,
+    graph_info,
+    perfometer_info,
+)
+
+metric_info['checkpoint_identity_awareness_iaSuccUserLoginADQuery'] = {
+    'title': _('Successfull ADQuery user login attempts'),
+    'unit': 'count',
+    'color': '11/a',
+}
+metric_info['checkpoint_identity_awareness_iaSuccMachLoginADQuery'] = {
+    'title': _('Successfull ADQuery machine login attempts'),
+    'unit': 'count',
+    'color': '13/a',
+}
+metric_info['checkpoint_identity_awareness_iaSuccUserLoginKerberos'] = {
+    'title': _('Successfull Kerberos user login attempts'),
+    'unit': 'count',
+    'color': '15/a',
+}
+metric_info['checkpoint_identity_awareness_iaSuccMachLoginKerberos'] = {
+    'title': _('Successfull Kerberos machine login attempts'),
+    'unit': 'count',
+    'color': '21/a',
+}
+metric_info['checkpoint_identity_awareness_iaSuccUserLoginPass'] = {
+    'title': _('Successfull User Name And Password login attempts'),
+    'unit': 'count',
+    'color': '23/a',
+}
+metric_info['checkpoint_identity_awareness_iaUnSuccUserLoginKerberos'] = {
+    'title': _('Unsuccessfull Kerberos user login attempts'),
+    'unit': 'count',
+    'color': '25/a',
+}
+metric_info['checkpoint_identity_awareness_iaUnSuccMachLoginKerberos'] = {
+    'title': _('Unsuccessfull Kerberos machine login attempts'),
+    'unit': 'count',
+    'color': '31/a',
+}
+metric_info['checkpoint_identity_awareness_iaUnSuccUserLoginPass'] = {
+    'title': _('Unsuccessfull User Name And Password login attempts'),
+    'unit': 'count',
+    'color': '43/a',
+}
+
+metric_info['checkpoint_identity_awareness_iaSuccUserLDAP'] = {
+    'title': _('Successful LDAP queries'),
+    'unit': '1/s',
+    'color': '11/b',
+}
+metric_info['checkpoint_identity_awareness_iaUnSuccUserLDAP'] = {
+    'title': _('Unsuccessful LDAP queries'),
+    'unit': '1/s',
+    'color': '21/b',
+}
+
+metric_info['checkpoint_identity_awareness_iaAuthUsers'] = {
+    'title': _('Authenticated users to the gateway'),
+    'unit': 'count',
+    'color': '12/a',
+}
+metric_info['checkpoint_identity_awareness_iaAuthUsersADQuery'] = {
+    'title': _('Authenticated users by ADQuery'),
+    'unit': 'count',
+    'color': '14/a',
+}
+metric_info['checkpoint_identity_awareness_iaAuthMachADQuery'] = {
+    'title': _('Authenticated machines by ADQuery'),
+    'unit': 'count',
+    'color': '16/a',
+}
+metric_info['checkpoint_identity_awareness_iaAuthUsersKerberos'] = {
+    'title': _('Authenticated users by Kerberos'),
+    'unit': 'count',
+    'color': '22/a',
+}
+metric_info['checkpoint_identity_awareness_iaAuthMachKerberos'] = {
+    'title': _('Authenticated machines by Kerberos'),
+    'unit': 'count',
+    'color': '24/a',
+}
+metric_info['checkpoint_identity_awareness_iaAuthUsersPass'] = {
+    'title': _('Authenticated users by User name and password'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['checkpoint_identity_awareness_iaUnAuthUsers'] = {
+    'title': _('Unauthenticated guests'),
+    'unit': 'count',
+    'color': '32/a',
+}
+
+metric_info['checkpoint_identity_awareness_iaLoggedInADQuery'] = {
+    'title': _('Identities logged in with ADQuery'),
+    'unit': 'count',
+    'color': '12/a',
+}
+metric_info['checkpoint_identity_awareness_iaLoggedInAgent'] = {
+    'title': _('Identities logged in with agents'),
+    'unit': 'count',
+    'color': '14/a',
+}
+metric_info['checkpoint_identity_awareness_iaLoggedInCaptivePortal'] = {
+    'title': _('Identities logged in with Captive Portal'),
+    'unit': 'count',
+    'color': '16/a',
+}
+metric_info['checkpoint_identity_awareness_iaRADIUSAccounting'] = {
+    'title': _('Identities logged in with RADIUS Accounting'),
+    'unit': 'count',
+    'color': '22/a',
+}
+metric_info['checkpoint_identity_awareness_iaIdentityCollectorActiveDirectory'] = {
+    'title': _('Identities logged in with Identity Collector Active Directory'),
+    'unit': 'count',
+    'color': '24/a',
+}
+metric_info['checkpoint_identity_awareness_iaIdentityCollectorCiscoISE'] = {
+    'title': _('Identities logged in with Identity Collector Cisco ISE'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['checkpoint_identity_awareness_iaTerminalServer'] = {
+    'title': _('Identities logged in with terminal server'),
+    'unit': 'count',
+    'color': '32/a',
+}
+metric_info['checkpoint_identity_awareness_iaRemoteAccess'] = {
+    'title': _('Identities logged in with Remote Access'),
+    'unit': 'count',
+    'color': '34/a',
+}
+metric_info['checkpoint_identity_awareness_iaIdentityWebAPI'] = {
+    'title': _('Identities logged in with Identity Web API'),
+    'unit': 'count',
+    'color': '36/a',
+}
+
+metric_info['checkpoint_identity_awareness_iaAntiSpoffProtection'] = {
+    'title': _('Users with an active Traffic Anti-Spoffing protection'),
+    'unit': 'count',
+    'color': '11/a',
+}
+
+metric_info['checkpoint_identity_awareness_iaDataTrans'] = {
+    'title': _('How much data did  gateway transmitted'),
+    'unit': 'count',
+    'color': '42/a',
+}
+
+graph_info['checkpoint_identity_awareness_login_attempts'] = {
+    'title': _('Check Point Identity Awareness login attempts'),
+    'metrics': [
+        ('checkpoint_identity_awareness_iaUnSuccUserLoginPass', '-stack'),
+        ('checkpoint_identity_awareness_iaUnSuccMachLoginKerberos', '-stack'),
+        ('checkpoint_identity_awareness_iaUnSuccUserLoginKerberos', '-stack'),
+        ('checkpoint_identity_awareness_iaSuccUserLoginPass', 'stack'),
+        ('checkpoint_identity_awareness_iaSuccMachLoginKerberos', 'stack'),
+        ('checkpoint_identity_awareness_iaSuccUserLoginKerberos', 'stack'),
+        ('checkpoint_identity_awareness_iaSuccMachLoginADQuery', 'stack'),
+        ('checkpoint_identity_awareness_iaSuccUserLoginADQuery', 'stack'),
+    ],
+    'optional_metrics': [
+        'checkpoint_identity_awareness_iaUnSuccUserLoginPass',
+        'checkpoint_identity_awareness_iaUnSuccMachLoginKerberos',
+        'checkpoint_identity_awareness_iaUnSuccUserLoginKerberos',
+        'checkpoint_identity_awareness_iaSuccUserLoginPass',
+        'checkpoint_identity_awareness_iaSuccMachLoginKerberos',
+        'checkpoint_identity_awareness_iaSuccUserLoginKerberos',
+        'checkpoint_identity_awareness_iaSuccMachLoginADQuery',
+        'checkpoint_identity_awareness_iaSuccUserLoginADQuery',
+    ],
+}
+
+graph_info['checkpoint_identity_awareness_ldap_queries'] = {
+    'title': _('Check Point Identity Awareness LDAP queries'),
+    'metrics': [
+        ('checkpoint_identity_awareness_iaUnSuccUserLDAP', '-area'),
+        ('checkpoint_identity_awareness_iaSuccUserLDAP', 'area'),
+    ],
+    'optional_metrics': [
+        'checkpoint_identity_awareness_iaUnSuccUserLDAP',
+        'checkpoint_identity_awareness_iaSuccUserLDAP',
+    ]
+}
+
+graph_info['checkpoint_identity_awareness_auth_user_machine'] = {
+    'title': _('Check Point Identity Awareness authenticated/unauthenticated users/machines'),
+    'metrics': [
+        ('checkpoint_identity_awareness_iaUnAuthUsers', 'stack'),
+        ('checkpoint_identity_awareness_iaAuthUsersPass', 'stack'),
+        ('checkpoint_identity_awareness_iaAuthMachKerberos', 'stack'),
+        ('checkpoint_identity_awareness_iaAuthMachADQuery', '-stack'),
+        ('checkpoint_identity_awareness_iaAuthUsersKerberos', '-stack'),
+        ('checkpoint_identity_awareness_iaAuthUsersADQuery', 'stack'),
+        ('checkpoint_identity_awareness_iaAuthUsers', 'line'),
+    ],
+    'optional_metrics': [
+        'checkpoint_identity_awareness_iaUnAuthUsers',
+        'checkpoint_identity_awareness_iaAuthUsersPass',
+        'checkpoint_identity_awareness_iaAuthMachKerberos',
+        'checkpoint_identity_awareness_iaAuthMachADQuery',
+        'checkpoint_identity_awareness_iaAuthUsersKerberos',
+        'checkpoint_identity_awareness_iaAuthUsersADQuery',
+        'checkpoint_identity_awareness_iaAuthUsers',
+    ]
+}
+
+graph_info['checkpoint_identity_awareness_loggid_in_users'] = {
+    'title': _('Check Point Identity Awareness logged in users with'),
+    'metrics': [
+        ('checkpoint_identity_awareness_iaLoggedInCaptivePortal', 'stack'),
+        ('checkpoint_identity_awareness_iaRADIUSAccounting', 'stack'),
+        ('checkpoint_identity_awareness_iaIdentityWebAPI', 'stack'),
+        ('checkpoint_identity_awareness_iaIdentityCollectorActiveDirectory', 'stack'),
+        ('checkpoint_identity_awareness_iaIdentityCollectorCiscoISE', 'stack'),
+        ('checkpoint_identity_awareness_iaRemoteAccess', 'stack'),
+        ('checkpoint_identity_awareness_iaTerminalServer', 'stack'),
+        ('checkpoint_identity_awareness_iaLoggedInAgent', 'stack'),
+        ('checkpoint_identity_awareness_iaLoggedInADQuery', 'stack'),
+    ],
+    'optional_metrics': [
+        'checkpoint_identity_awareness_iaLoggedInCaptivePortal',
+        'checkpoint_identity_awareness_iaRADIUSAccounting',
+        'checkpoint_identity_awareness_iaIdentityWebAPI',
+        'checkpoint_identity_awareness_iaIdentityCollectorActiveDirectory',
+        'checkpoint_identity_awareness_iaIdentityCollectorCiscoISE',
+        'checkpoint_identity_awareness_iaRemoteAccess',
+        'checkpoint_identity_awareness_iaTerminalServer',
+        'checkpoint_identity_awareness_iaLoggedInAgent',
+        'checkpoint_identity_awareness_iaLoggedInADQuery',
+    ],
+}
+
+# graph_info.append({
+#     'title': _('Check Point Identity Awareness users with an active Traffic Anti-Spoffing protection'),
+#     'metrics': [
+#         ('checkpoint_identity_awareness_iaAntiSpoffProtection', 'area'),
+#     ],
+# })
+
+# graph_info.append({
+#     'title': _('Check Point Identity Awareness How much data did the gateway transmitted'),
+#     'metrics': [
+#         ('checkpoint_identity_awareness_iaDataTrans', 'area'),
+#     ],
+# })
+
+perfometer_info.append(('stacked', [
+    {
+        'type': 'logarithmic',
+        'metric': 'checkpoint_identity_awareness_iaAuthUsers',
+        'half_value': 2000.0,
+        'exponent': 2,
+    },
+    {
+        'type': 'logarithmic',
+        'metric': 'checkpoint_identity_awareness_iaUnAuthUsers',
+        'half_value': 2000.0,
+        'exponent': 2,
+    },
+]))
diff --git a/gui/wato/checkpoint_identity_awareness.py b/gui/wato/checkpoint_identity_awareness.py
new file mode 100644
index 0000000..099b833
--- /dev/null
+++ b/gui/wato/checkpoint_identity_awareness.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date: 2017-12-20
+#
+# Check_MK checkpoint_identity_awareness WATO plugin
+#
+# 2022-11-29: fixed CheckParameterRulespecWithoutItem
+#             (from CheckParameterRulespecWithItem) THX to jblaak[at]gmail[dot]com
+#
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    ListChoice,
+)
+
+from cmk.gui.plugins.wato.utils import (
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+    CheckParameterRulespecWithoutItem
+)
+
+_ignorecounters = [
+    # ('iaAuthUsers', 'Authenticated users and machines'),  # will be used in perf-o-meter
+    ('iaAuthUsersPass', 'Authenticated users by name and password'),
+    ('iaAuthUsersADQuery', 'Authenticated users by ADQuery'),
+    ('iaAuthUsersKerberos', 'Authenticated users by Kerberos'),
+    ('iaAuthMachKerberos', 'Authenticated machines by Kerberos'),
+    ('iaAuthMachADQuery', 'Authenticated machines by ADQuery'),
+    # ('iaUnAuthUsers', 'Unauthenticated guests'),  # will be used in perf-o-meter
+    ('iaLoggedInAgent', 'Logged in users with agents'),
+    ('iaLoggedInCaptivePortal', 'Logged in users with Captive Portal'),
+    ('iaLoggedInADQuery', 'Logged in users with ADQuery'),
+
+    ('iaRADIUSAccounting', 'Identities logged in with RADIUS Accounting'),
+    ('iaIdentityCollectorActiveDirectory', 'Identities logged in with Identity Collector Active Directory'),
+    ('iaIdentityCollectorCiscoISE', 'Identities logged in with Identity Collector Cisco ISE'),
+    ('iaTerminalServer', 'Identities logged in with terminal server'),
+    ('iaRemoteAccess', 'Identities logged in with Remote Access'),
+    ('iaIdentityWebAPI', 'Identities logged in with Identity Web API'),
+
+    ('iaSuccUserLoginPass', 'Successfull login attempts users by name and password'),
+    ('iaSuccUserLoginKerberos', 'Successfull login attempts users by Kerberos'),
+    ('iaSuccUserLoginADQuery', 'Successfull login attempts users by ADQuery'),
+    ('iaSuccMachLoginKerberos', 'Successfull login attempts machines by Kerberos'),
+    ('iaSuccMachLoginADQuery', 'Successfull login attempts machines by ADQuery'),
+    ('iaUnSuccUserLoginPass', 'Unsuccessfull login attempts users by name and password'),
+    ('iaUnSuccUserLoginKerberos', 'Unsuccessfull login attempts users by Kerberos'),
+    ('iaUnSuccMachLoginKerberos', 'Unsuccessfull login attempts machines by Kerberos'),
+    ('iaSuccUserLDAP', 'LDAP queries successfull'),
+    ('iaUnSuccUserLDAP', 'LDAP queries unsuccessfull'),
+    ('iaAntiSpoffProtection', 'Users with an active Traffic Anti-Spoffing protection'),
+    ('iaDataTrans', 'How much data did the gateway transmitted'),
+]
+
+
+def _parameter_valuespec_checkpoint_identity_awareness():
+    return Dictionary(
+        title=_('Check Point Identity Awareness status'),
+        elements=[
+            (
+                'ignore_counters',
+                ListChoice(
+                    title=_('list of counters to ignore'),
+                    help=_('Counters to remove from performance data.'),
+                    choices=_ignorecounters,
+                    default_value=[],
+                )
+            ),
+        ],
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithoutItem(
+        check_group_name='checkpoint_identity_awareness',
+        group=RulespecGroupCheckParametersNetworking,
+        # match_type='dict',
+        parameter_valuespec=_parameter_valuespec_checkpoint_identity_awareness,
+        title=lambda: _('Check Point Identity Awareness'),
+    )
+)
diff --git a/packages/checkpoint_identity_awareness b/packages/checkpoint_identity_awareness
index 84a8e3d..478f119 100644
--- a/packages/checkpoint_identity_awareness
+++ b/packages/checkpoint_identity_awareness
@@ -5,13 +5,12 @@
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['checkpoint_ia_adquery.py',
                            'checkpoint_identity_awareness.py'],
-           'web': ['plugins/wato/checkpoint_identity_awareness.py',
-                   'plugins/metrics/checkpoint_identity_awareness.py',
-                   'plugins/metrics/checkpoint_ia_adquery.py']},
+           'gui': ['metrics/checkpoint_identity_awareness.py',
+                   'wato/checkpoint_identity_awareness.py',
+                   'metrics/checkpoint_ia_adquery.py']},
  'name': 'checkpoint_identity_awareness',
- 'num_files': 5,
  'title': 'Check Point Identity Awareness checks',
- 'version': '20221130.v.0.2a',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '0.3.0-20230529',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab