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