PART 1

Framework Overview

Netier Master Baseline Framework

Document ID: NET-FW-MBF-001
Version: 1.0
Effective Date: 2026-03-26
Next Review: 2026-09-26
Owner: Netier — GRC / Security Operations
Classification: Internal

Document Relationship

This document (Master Baseline Framework) defines the strategic framework — what Netier aims to achieve, which frameworks apply, and at what tier. For prescriptive configuration details (exact settings, policies, and deployment instructions per technology), see the companion Netier Technical Configuration Framework.

1. Executive Summary & Strategy

This document serves as the overarching Technical and Operational Baseline for Netier. It establishes a unified "Gold Standard" based on the Australian Signals Directorate (ASD) Information Security Manual (ISM) and Essential Eight (E8) Maturity Level 3.

From this peak standard, configurations are scaled into productised tiers (Essential, Professional, Enterprise) to provide clients with a secure-by-design baseline and a clear pathway to higher regulatory compliance. This framework governs all evidence gathering and tooling deployments (e.g., Netier Compliance Engine (planned — ISM scanner operational), NinjaOne).

2. Master Compliance & Framework Mapping

All technical controls and operational policies detailed in this baseline trace back to the following regulatory and security frameworks:

  • Australian Core: ASD ISM, Essential Eight (E8), SOCI Act, DISP, Privacy Act (AU).
  • International Core: ISO 27001, ISO 27002, ISO 9001, CIS Controls, NIST (CSF & 800-53).
  • Sector-Specific & Privacy: SOC II, HIPAA, GDPR, NERC-CIP, FISMA, FEDRAMP, PCIDSS.
  • Tactical Defense: MITRE ATT&CK framework for EDR/SIEM threat modeling.

  • 3. Technical Baselines & Configurations

    3.1 Identity & Access Management (M365, Entra ID, Active Directory)

    Framework References: E8 (MFA, Restrict Administrative Privileges), ISM, CIS Controls (Access Management), ISO 27001 (A.9).
  • Conditional Access (CA) Baseline (Entra ID):
  • * Global Block: Block Legacy Authentication globally.

    * Geo-Fencing: Block all non-AU logins (exceptions via strict PIM approval).

    * MFA Enforcement: Phishing-resistant MFA (FIDO2/Windows Hello) mandatory for all user access.

    * Device Trust: Require devices to be marked as 'Compliant' in Intune for corporate data access.

  • Privileged Access:
  • * Implement Privileged Identity Management (PIM) with Just-In-Time (JIT) access for all Global/Exchange/SharePoint admins.

    * Strict Tier 0/1/2 administrative isolation for on-premise Active Directory.

  • Local Access:
  • * Deploy Windows Local Administrator Password Solution (LAPS) to all endpoints and servers.

    3.2 Endpoint & Server Security

    Framework References: E8 (Application Control, Patch Applications, Patch OS), ISM, CIS Benchmarks, SOC II (Security).
  • OS Hardening: Apply CIS/ASD ISM hardened baselines via Intune/GPO (e.g., disable LLMNR, SMBv1).
  • Execution Control: Implement Application Control (AppLocker/WDAC) restricting execution to trusted publishers/paths. Block macro execution from the internet globally.
  • Vulnerability Management: Automated OS and 3rd-party patching via NinjaOne (SLA: Critical within 48h).
  • Threat Defense: Deploy advanced EDR integrated with centralized SIEM for active isolation and threat hunting.
  • 3.3 Network Perimeter (Firewalls, Switches, Wireless)

    Framework References: ISM, NIST CSF (Protect), ISO 27001 (A.13), PCIDSS.
  • Architecture: Default deny inbound/outbound rulesets. Implement strict micro-segmentation (Data/Voice/Guest/IoT).
  • Access Control: 802.1x Network Access Control (NAC) using certificate-based authentication for all physical and wireless ports.
  • Remote Access: Transition from traditional VPNs to Zero Trust Network Access (ZTNA).
  • Inspection: Deep Packet Inspection (DPI) and continuous automated external/internal vulnerability scanning.
  • 3.4 Email Security, Web Posture & Deliverability

    Framework References: ISM (Email Spoofing/Web Security), CIS, Privacy Act.
  • Email Deliverability & Protection (Valimail, PowerDMARC, Sendmarc, Postmaster):
  • * Enforce DMARC at p=reject for all managed domains.

    * Strict SPF and DKIM alignment configuration.

    * Inbound Advanced Threat Protection (ATP) and AI-driven phishing filtering.

  • Web Asset Posture (Cloudflare, Speedtest, PageSpeed):
  • * Enforce Cloudflare Web Application Firewall (WAF) in strict block mode for public assets.

    * Mandatory TLS 1.2+ (TLS 1.3 preferred) for all web traffic.

    * Continuous monitoring of web performance (PageSpeed) and network latency (Speedtest) to ensure Operational Level Agreements (OLAs) are met.


    4. Operational Policies & Governing Plans

    The technical controls above are orchestrated and maintained through the following foundational plans. (Note: Automated gathering of evidence for these plans will be integrated into the Netier Compliance Engine toolchain — planned; external ISM scanner operational, full evidence automation in development).

    4.1 Incident Response Plan (IRP)

    Framework References: NIST IR, ISO 27001 (A.16), SOCI Act.
  • Defines Netier's procedures for detecting, classifying, responding to, and recovering from security events (e.g., ransomware, unauthorized access).
  • Includes mandatory reporting timelines to the ASD (via ACSC) and OAIC (Privacy Act).
  • 4.2 Business Continuity Plan (BCP)

    Framework References: ISO 22301, SOCI Act, APRA CPS 234.
  • Strategies for maintaining Netier's critical MSP operations and ensuring client service uptime during major disruptions.
  • Identifies Maximum Tolerable Period of Disruption (MTPD) and Recovery Time Objectives (RTO) for core MSP toolstacks.
  • 4.3 Disaster Recovery Plan (DRP)

    Framework References: E8 (Daily Backups), ISM, HIPAA.
  • Technical procedures for restoring systems, infrastructure, and backup data.
  • Requires immutable, offline/offsite backups.
  • Testing frequency is tiered: Enterprise (Quarterly), Professional (Bi-Annually), Essential (Annually).
  • 4.4 Supply Chain Management (SCM)

    Framework References: ISO 27001 (A.15), SOCI Act, DISP.
  • Vendor risk assessment protocols focusing on third-party SaaS and hardware providers.
  • Addresses data sovereignty risks (particularly US-based SaaS tools) and delineates the Shared Responsibility Matrix between Netier, vendors, and clients.

  • 5. Standard Operating Procedures (SOPs)

    Each technical baseline and operational plan is supported by detailed, step-by-step SOPs that engineers follow during deployment and maintenance. SOPs are maintained in the SOPs/ directory.

    | TCF Section | Baseline | Implementing SOP | Document ID |

    |-------------|----------|-----------------|-------------|

    | 1.0 Infrastructure & Compute | Endpoint & Server Baseline | SOP: Infrastructure & Compute | NET-SOP-INFRA-001 |

    | 2.0 Identity & Cloud Workspaces | M365 & Entra ID Baseline | SOP: Identity, CA & Cloud Security | NET-SOP-IDM-001 |

    | 3.0 Endpoint Protection & Control | Endpoint & Server Baseline | SOP: Endpoint Protection | NET-SOP-EP-001 |

    | 4.0 Vulnerability Management | Endpoint & Server Baseline | SOP: Vulnerability Management | NET-SOP-VULN-001 |

    | 5.0 Security Awareness & Training | Operational Plans Baseline | SOP: Security Awareness | NET-SOP-SAT-001 |

    | 6.0 Endpoint Management (MDM) | M365 & Entra ID Baseline | SOP: Endpoint Management MDM | NET-SOP-MDM-001 |

    | 7.0 Networking & Perimeter | Network Perimeter Baseline | SOP: Networking & Perimeter | NET-SOP-NET-001 |

    | 8.0 Backup & Disaster Recovery | Operational Plans Baseline | SOP: Backup & DR | NET-SOP-BDR-001 |

    | 9.0 Remote Monitoring & Management | Endpoint & Server Baseline | SOP: RMM / NinjaOne | NET-SOP-RMM-001 |

    | 10.0 Knowledge Management | Operational Plans Baseline | SOP: Knowledge Management | NET-SOP-KM-001 |

    Netier Technical Configuration Framework

    Purpose: This document serves as the master index and prescriptive configuration guide for every technology in the Netier MSP stack. It dictates the exact settings, policies, and configurations required to meet the Netier "Gold Standard" (ISM/Essential Eight ML3) and defines how those settings scale down across the Essential, Professional, and Enterprise deployment tiers.

    >

    Relationship to Master Baseline: The Netier Master Baseline Framework defines the strategic framework and compliance mapping. This document provides the prescriptive, technology-specific configurations that implement that strategy.
    Document ID: NET-FW-TCF-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1.0 Infrastructure & Compute

    Implementing SOP: NET-SOP-INFRA-001
    Core infrastructure configurations for servers and virtualization.

    1.1 Windows Server (On-Premise & IaaS)

  • OS Version: Windows Server 2022 minimum for new deployments.
  • Patching SLA (NinjaOne):
  • * Critical/High: Installed within 48 hours of release.

    * Standard: Installed weekly.

  • Credential Guard: Enabled via GPO/Intune to protect NTLM password hashes and Kerberos Ticket Granting Tickets.
  • LAPS (Local Administrator Password Solution): Local admin passwords rotated every 14 days; stored in Entra ID; post-use reset within 1 hour.
  • LSA Protection: Configured to run as an isolated protected process (RunAsPPL).
  • RDP Restrictions: Disabled for standard users; restricted to Jumphosts/VPN subnets for administrators. Network Level Authentication (NLA) enforced.
  • SMB Signing: Enforced to prevent relay attacks.
  • Backup (Veeam): Daily application-aware image backups. Immutable storage destination required.
  • 1.2 Hypervisors (VMware / Hyper-V)

  • Management Access: Restricted to dedicated management VLANs.
  • Authentication: AD integration with MFA enforced for vCenter/Hyper-V Manager access.
  • VM Tools: Enforce auto-update of VMware Tools / Hyper-V Integration Services.

  • 2.0 Identity & Cloud Workspaces

    Implementing SOP: NET-SOP-IDM-001
    Configurations for Microsoft 365, Google Workspace, and Identity Providers.

    2.1 Microsoft 365 & Entra ID

  • MFA: Enforced via Conditional Access for ALL users (no exceptions).
  • Enterprise Tier*: Phishing-resistant MFA (FIDO2/Windows Hello) enforced.

  • Conditional Access Policies:
  • * Block legacy authentication protocols (POP3, IMAP, SMTP).

    * Require MFA for administrative roles.

    * Block sign-ins from high-risk locations/anonymous IPs.

    * Require compliant or hybrid-joined devices for access to SharePoint/OneDrive (Professional/Enterprise tiers).

  • Entra ID Roles: Limit Global Administrators to < 5. Use Privileged Identity Management (PIM) for Just-In-Time (JIT) access (Professional/Enterprise Tier).
  • Tenant Restrictions: Restrict cross-tenant access to prevent data exfiltration to unmanaged tenants.
  • 2.2 Defender for Office 365

  • Anti-Phishing: Strict mode enabled. Impersonation protection active for all VIPs and internal domains.
  • Safe Links: Enabled with "Do not track user clicks" unchecked to allow for audit trails.
  • Safe Attachments: Enabled for Email, SharePoint, OneDrive, and Teams. Dynamic Delivery configured for email attachments.
  • Zero-Hour Auto Purge (ZAP): Enabled for spam, phishing, and malware.
  • DKIM/DMARC/SPF:
  • * SPF hard fail (-all).

    * DKIM signing enabled for all primary and alias domains.

    * DMARC policy set to p=reject or p=quarantine.


    3.0 Endpoint Protection & Control

    Implementing SOP: NET-SOP-EP-001
    Next-generation antivirus, EDR, and application control.

    3.1 Application Whitelisting (ThreatLocker / AppLocker / WDAC)

    Primary tool: ThreatLocker (deployed on all managed endpoints). Where ThreatLocker is not deployed (e.g., air-gapped environments, client policy restrictions), use AppLocker (Windows Pro/Enterprise) or WDAC (Windows Defender Application Control) as the application control mechanism. The same default-deny policy intent applies regardless of tooling.
  • Mode: Default Deny (Ringfencing active).
  • Allowlisting: Based on path, publisher (certificate), and hash.
  • Ringfencing:
  • * PowerShell, Command Prompt, and cscript.exe restricted from interacting with network shares and downloading executables from the internet.

    * Office applications restricted from spawning child processes (e.g., PowerShell).

  • Elevation Control: Time-bound, auditable elevation requests instead of permanent local admin rights.
  • 3.2 Endpoint Detection and Response (Sophos MDR / Defender for Endpoint)

  • Tamper Protection: Enabled.
  • Scan Exclusions: Strictly managed centrally; no wildcards for user directories (e.g., C:\Users\*\Downloads).
  • Web Control: Malicious and unrated sites blocked.
  • Device Control: Removable media (USB) blocked or set to read-only for standard users.

  • 4.0 Vulnerability Management

    Implementing SOP: NET-SOP-VULN-001
    Continuous scanning and assessment tooling.

    4.1 Tenable Nessus / ConnectSecure

  • Scan Frequency:
  • * External perimeters: Weekly authenticated scans.

    * Internal networks: Monthly authenticated scans.

  • Credentialed Scanning: Mandatory for accurate software inventory and local vulnerability detection.
  • Risk Prioritization: SLA-driven remediation based on CVSS score and CISA Known Exploited Vulnerabilities (KEV) catalog.

  • 5.0 Security Awareness & Training

    Implementing SOP: NET-SOP-SAT-001
    User risk management.

    5.1 uSecure (or equivalent)

  • Onboarding: Baseline assessment assigned within week 1.
  • Phishing Simulations: Monthly automated, randomized campaigns.
  • Training Cadence: Quarterly core modules (data handling, password hygiene, social engineering).
  • Remediation: Auto-enrollment in remedial training for users who fail phishing simulations.

  • 6.0 Endpoint Management (MDM / UEM)

    Implementing SOP: NET-SOP-MDM-001
    Configuration profiles deployed via Microsoft Intune or equivalent.

    6.1 Microsoft Intune

    6.1.1 Windows 10/11

  • Device Compliance:
  • * Minimum OS version enforced.

    * BitLocker enforced (256-bit AES).

    * Antivirus active and up to date.

    * Firewall enabled.

  • Configuration Profiles:
  • * Implement CIS Windows 10/11 Benchmarks (Level 1 minimum).

    * Auto-lock screen after 15 minutes of inactivity.

    * Disable consumer features (Xbox app, consumer OneDrive).

  • Windows Update for Business: Update rings configured to deploy feature updates deferred by 14 days, quality updates deferred by 2 days.
  • 6.1.2 macOS

  • Device Compliance:
  • * Minimum OS version enforced.

    * FileVault enforced.

    * System Integrity Protection (SIP) enabled.

    * Gatekeeper enabled.

  • Configuration Profiles:
  • * Implement CIS Apple macOS Benchmarks.

    * Require password immediately after sleep or screen saver begins.

    6.1.3 iOS / iPadOS

  • Device Compliance:
  • * Jailbreak detection enforced.

    * Minimum OS version enforced.

  • Configuration Profiles:
  • * Enforce 6-digit alphanumeric passcode.

    * Prevent unmanaged apps from reading managed contacts/data.

    * Disable Siri while locked.

    6.1.4 Android

  • Device Compliance:
  • * Root detection enforced.

    * Minimum OS version enforced.

    * Google Play Protect enabled.

  • Configuration Profiles:
  • * Android Enterprise (Work Profile) mandatory for BYOD.

    * Enforce complex PIN.

    * Block screen capture within the Work Profile.

    * Block copy/paste from Work Profile to personal profile.

    6.1.5 Linux (Ubuntu / RHEL)

  • Device Compliance:
  • * Minimum kernel version.

    * Disk encryption (LUKS) enforced.

  • Configuration Profiles:
  • * SSH root login disabled.

    * sudo access restricted and logged.

    * Automated security updates (e.g., unattended-upgrades) configured for critical patches.


    7.0 Networking & Perimeter

    Implementing SOP: NET-SOP-NET-001
    Firewalls, DNS filtering, and Zero Trust Network Access.

    7.1 Firewalls (WatchGuard / Fortinet)

  • Firmware SLA: N-1 stable release applied within 30 days. Critical CVEs patched within 48 hours.
  • Management Interface: Restricted to Netier management IP addresses ONLY. Never exposed to the WAN.
  • Default Deny: Implicit deny rule at the bottom of all policies.
  • VPN:
  • * IKEv2 or SSL VPN enforced (PPTP/L2TP blocked).

    * MFA enforced for all VPN authentications via RADIUS/SAML integration.

  • IPS/IDS: Intrusion Prevention System enabled with block mode for High and Critical signatures.
  • 7.2 DNS Security (Cloudflare / Cisco Umbrella)

  • Filtering: Block known malware, botnet C2, and phishing domains.
  • Logging: DNS query logs retained for 90 days minimum for incident response.

  • 8.0 Backup & Disaster Recovery

    Implementing SOP: NET-SOP-BDR-001
    Data protection configurations.

    8.1 Data Backup (Veeam / AFI.ai / Dropsuite)

  • M365 Backup: Minimum 3x daily backups for Exchange, OneDrive, SharePoint, and Teams.
  • Retention: Minimum 1-year retention for standard data; up to 7 years for compliance-driven clients (Enterprise).
  • Immutability: Cloud storage targets (e.g., AWS S3, Wasabi) must have Object Lock enabled to prevent ransomware tampering.
  • Verification: Automated screenshot verification or boot testing enabled for all server images.
  • 8.2 AFI.ai (Cloud Workspace Backup)

  • Scope: Comprehensive backup for Microsoft 365 (Exchange, OneDrive, SharePoint, Teams) and Google Workspace.
  • Frequency: Automated daily backups with multiple recovery points.
  • Retention: Infinite retention policy for active users to meet compliance mandates (or up to 7 years depending on tier).
  • Immutability & Security: Backups stored in immutable, encrypted format. Platform access restricted via SSO and MFA.
  • Archiving: Automated archival process for offboarded employees to retain data without consuming active M365/Google licenses.

  • 9.0 Remote Monitoring & Management (RMM)

    Implementing SOP: NET-SOP-RMM-001
    Centralized management, patching, and automation.

    9.1 NinjaOne

  • Deployment: Agent installed on all managed Windows, macOS, and Linux endpoints.
  • Patch Management:
  • * OS and third-party application patching driven by SLA (aligned with Essential Eight).

    * Automated pre-deployment reboot and post-deployment verification.

  • Monitoring & Alerts:
  • * Offline alerts for critical infrastructure (Servers, Firewalls, Switches).

    * Disk space, CPU, and Memory utilization thresholds.

    * Security service state monitoring (e.g., EDR/Antivirus service stopped).

  • Automation: Routine maintenance scripts executed weekly.
  • Software Inventory: Continuous polling of installed software to reconcile against Application Whitelisting and Vulnerability Management tools.
  • 10.0 Knowledge Management & Documentation

    Implementing SOP: NET-SOP-KM-001
    Internal documentation, Standard Operating Procedures (SOPs), and client asset tracking.

    10.1 Confluence

  • Access Control: Integrated with Entra ID for Single Sign-On (SSO) and Conditional Access (MFA enforced).
  • Space Structure:
  • * Segregated spaces for Internal SOPs, Client Documentation, and Compliance Frameworks.

    * Strict Permission Schemes applied per space (e.g., restricted access for sensitive client credentials or security configurations).

  • Versioning & Auditing: Page history and version control enabled for all SOPs and technical frameworks to track changes.
  • Review Cadence: Core compliance and baseline documents (like this framework) set with automated review reminders every 6-12 months.
  • External Sharing: Anonymous access disabled globally. External sharing strictly controlled and limited to specific, short-lived client collaboration spaces.

  • Document Version: 1.0 Last Updated: March 2026
    PART 2

    Technical Baselines

    M365 & Entra ID Security Baseline

    Document ID: NET-BL-M365-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    This document defines the strict configuration standards for Microsoft 365 and Entra ID environments managed by Netier. It aligns with the ASD ISM, Essential Eight (E8) ML3, and CIS Controls.

    2. Entra ID (Azure AD) Configuration

    2.1 Authentication & MFA (E8 ML3)

    ISM Controls: ISM-1173, ISM-0974, ISM-1401, ISM-1872, ISM-1682, ISM-1919
  • Legacy Authentication: Blocked globally via Conditional Access. No exceptions.
  • MFA Enforcement: Phishing-resistant MFA (FIDO2 security keys, Windows Hello for Business) is enforced for all users.
  • Self-Service Password Reset (SSPR): Enabled, requiring two authentication methods.
  • 2.2 Conditional Access (CA) Policies

    ISM Controls: ISM-1546, ISM-1504, ISM-1680, ISM-0428, ISM-1403

    The following CA policies are mandatory:

  • Block Non-AU Logins: Block all sign-ins originating outside of Australia. (Exceptions require PIM approval and specific IP whitelisting).
  • Require Compliant Device: Access to corporate data (SharePoint, Exchange, Teams) requires the device to be marked as "Compliant" in Intune.
  • Require MFA for All Users: Enforce MFA for every sign-in attempt not covered by device compliance/SSO.
  • Sign-in Risk Policy: Block access if sign-in risk is High. Require MFA/Password change if risk is Medium.
  • User Risk Policy: Require secure password change if user risk is High.
  • 2.3 Privileged Identity Management (PIM)

    ISM Controls: ISM-1380, ISM-1173, ISM-1833, ISM-1620, ISM-1939
  • Standing Access: No standing access for Global Administrator, Exchange Administrator, or SharePoint Administrator roles.
  • JIT Access: All high-privilege roles require Just-In-Time (JIT) activation via PIM.
  • Approval Workflow: PIM activation requires MFA, ticketing integration (justification), and peer approval for Global Admin.
  • Identity Separation: Admin identities must be separate from daily productivity accounts (email/Teams). Global Admins must not use the same account for standard user activities and privileged operations.
  • 2.4 Break Glass (Emergency Access) Accounts

    ISM Controls: ISM-1685, ISM-1795, ISM-1954
  • Requirement: Two Break Glass accounts must exist in every managed Entra ID tenant.
  • Authentication: FIDO2 security keys stored in separate physical safes (one on-site, one off-site).
  • CA Exclusion: Excluded from all Conditional Access policies to prevent lockout during Microsoft MFA outages.
  • Monitoring: Sign-in events on Break Glass accounts trigger immediate alerts to Netier SOC.
  • 3. Microsoft Intune Configuration

    ISM Controls: ISM-1406, ISM-1914, ISM-1409, ISM-1745
  • Device Compliance:
  • * BitLocker encryption mandatory.

    * Antivirus/EDR active and up to date.

    * OS version within N-1 of current release.

    * Device is active (check-in within last 30 days).

  • Configuration Profiles:
  • * Deploy CIS/ASD ISM hardened Windows 11 baselines.

    * Disable LLMNR and NetBIOS.

    * Disable SMBv1.

    * Configure LAPS for local administrator management.

    3.1 Application Control (E8 ML3)

    ISM Controls: ISM-0843, ISM-1490, ISM-1657, ISM-1544, ISM-1488
  • Enforcement: Application Control (AppLocker/WDAC/ThreatLocker) enforced on all Intune-managed endpoints, restricting execution to approved publishers, paths, and file hashes.
  • Macros: Microsoft Office macros from the internet blocked via Intune policy. Trusted locations and digital signatures required for approved macros.
  • 4. Microsoft Defender for Office 365

    ISM Controls: ISM-1234, ISM-1502, ISM-1601
  • Safe Links: Enabled for all users, including Microsoft Teams.
  • Safe Attachments: Enabled with "Block" or "Dynamic Delivery".
  • Anti-Phishing: Set to "Strict" mode. Impersonation protection enabled for executive staff and key domains.
  • Anti-Spam: Outbound spam notifications routed to Netier SOC.

  • Evidence gathering for these controls will be automated via Netier Compliance Engine API integrations (planned — external ISM scanner operational; full evidence automation in development).

    Endpoint & Server Security Baseline

    Document ID: NET-BL-EP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    This document dictates the security controls for all Windows Server, Active Directory, and endpoint environments managed by Netier, directly mapping to Essential Eight (E8) ML3, ASD ISM, and ISO 27001.

    2. Active Directory (On-Premises / Hybrid)

    ISM Controls: ISM-1926, ISM-1827, ISM-1620, ISM-1685, ISM-0383
  • Tiered Administration: Strict separation of administrative accounts (Tier 0: Domain Controllers, Tier 1: Servers, Tier 2: Workstations).
  • Domain Controllers: Dedicated Server Core installations where possible. No non-essential software.
  • LAPS (Local Administrator Password Solution): Deployed globally. Local admin passwords rotated every 14 days or immediately after use.
  • Inactivity Pruning: Automated scripts disable computer and user accounts inactive for >45 days, and delete after >90 days.
  • 3. Application Control (E8 ML3)

    ISM Controls: ISM-0843, ISM-1490, ISM-1656, ISM-1657, ISM-1544
  • Enforcement: AppLocker or Windows Defender Application Control (WDAC) is enforced on all endpoints and servers.
  • Ruleset: Whitelist approach based on trusted publishers (code-signing certificates), specific paths (e.g., C:\Program Files), and specific file hashes.
  • Macros: Microsoft Office macros originating from the internet are blocked via GPO/Intune. Macros require trusted locations or digital signatures.
  • 4. Vulnerability & Patch Management (NinjaOne SLA)

    ISM Controls: ISM-1143, ISM-0298, ISM-1696, ISM-1877, ISM-1694
  • OS Patching:
  • * Critical/High: Deployed within 48 hours of release.

    * Standard: Deployed within 14 days.

  • Third-Party Patching: Managed via NinjaOne for core applications (browsers, PDF readers, zoom, etc.) mirroring OS SLA.
  • Servers: Automated maintenance windows established with pre/post-patching reboot checks.
  • 5. Endpoint Detection & Response (EDR)

    ISM Controls: ISM-1341, ISM-1034, ISM-1417, ISM-1601, ISM-0582
  • Deployment: Advanced EDR (e.g., Defender for Endpoint P2, CrowdStrike, SentinelOne) deployed to 100% of assets.
  • Configuration:
  • * Tamper protection enabled.

    * Cloud-delivered protection enabled.

    * Automated investigation and remediation enabled (Full/Active mode).

  • Isolation: SOC/EDR has automated capabilities to network-isolate compromised hosts.
  • Attack Surface Reduction (ASR): ASR rules deployed in Block Mode via Intune:
  • * Block executable files from running unless they meet prevalence, age, or trusted list criteria.

    * Block credential stealing from the Windows local security authority subsystem (LSASS).

    * Block Office applications from creating executable content.

    * Block untrusted and unsigned processes that run from USB.

    6. Protocol & Authentication Hardening

    ISM Controls: ISM-1055, ISM-1603, ISM-1962, ISM-1686, ISM-1861
  • SMB Signing: Enforced on all Domain Controllers and file servers. SMBv1 disabled globally.
  • NTLMv1: Disabled across all managed domains. NTLMv2 restricted to authenticated sessions only where Kerberos is unavailable.
  • Firmware & Driver Updates: OEM firmware and driver updates deployed via NinjaOne or vendor utilities (Dell Command Update, HP CMSL) within 30 days of release. Critical firmware CVEs patched within 14 days.

  • Evidence gathering for these controls will be automated via Netier Compliance Engine API integrations with NinjaOne and ThreatLocker (planned — external ISM scanner operational; full evidence automation in development).

    Network Perimeter & Infrastructure Baseline

    Document ID: NET-BL-NET-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    This standard details the physical and virtual network perimeter security configurations for Netier managed clients, aligning with NIST CSF, ASD ISM, and PCIDSS.

    2. Firewall & Gateway Configuration

    ISM Controls: ISM-1528, ISM-0631, ISM-1192, ISM-1427, ISM-1028
  • Default Posture: Default Deny for both inbound and outbound traffic. Explicit allow rules only.
  • Next-Gen Features: Intrusion Prevention System (IPS) and Deep Packet Inspection (DPI/SSL Decryption) enabled on core traffic paths.
  • Geo-IP Blocking: Inbound traffic restricted to Australia (AU) unless a documented business case exists. Known malicious exit nodes (Tor, generic VPNs) blocked.
  • Management Interfaces: Blocked from WAN. Accessible only via dedicated management VLAN or ZTNA/VPN from Netier infrastructure.
  • 3. Network Segmentation (Micro-segmentation)

    ISM Controls: ISM-1181, ISM-1577, ISM-1182, ISM-0385

    Networks must be segregated into distinct VLANs with strict inter-VLAN routing controls:

  • Management VLAN: Infrastructure management (Switches, ESXi, iLO/iDRAC).
  • Server/Data VLAN: Internal servers and databases.
  • Client VLAN: Corporate endpoints.
  • Voice VLAN: VoIP devices.
  • Guest/IoT VLAN: Completely isolated from corporate networks. IoT devices have outbound internet access explicitly whitelisted to required vendor endpoints only (not general internet). Guest VLAN has client isolation enabled.
  • 4. Network Access Control (NAC)

    ISM Controls: ISM-0520, ISM-1321, ISM-1332, ISM-0534
  • Wired & Wireless: 802.1x authentication is enforced on all corporate physical ports and Wi-Fi networks.
  • Authentication: Certificate-based authentication (EAP-TLS) preferred. MAC Auth Bypass (MAB) strictly limited to non-802.1x capable devices (e.g., printers) on restricted VLANs.
  • 5. Network Device Management

    ISM Controls: ISM-1304, ISM-1800, ISM-1963, ISM-0518, ISM-1782
  • Configuration Backups: Automated configuration backups for all perimeter devices (firewalls, routers, switches) via Unimus, Auvik, or oxidized. Daily backups with 90-day retention.
  • Firmware Patching: Critical CVEs on perimeter devices must be patched within 14 days of vendor advisory. Non-critical firmware updates within 30 days.
  • DNS Security/Filtering: Secure DNS resolver (Cloudflare Gateway, Cisco Umbrella, or NextDNS) mandated at the DHCP scope level to block malicious domains before traffic reaches the firewall.
  • 6. Remote Access

    ISM Controls: ISM-0619, ISM-0705, ISM-1781, ISM-0469
  • Zero Trust Network Access (ZTNA): Transitioning away from full-tunnel VPNs. Access provided on a per-application basis utilizing Entra ID Application Proxy or dedicated ZTNA solutions.
  • VPN Controls (Legacy): Where traditional VPNs exist, Entra ID SSO with MFA is mandatory. Split tunneling is disabled for high-security clients (DISP/SOCI).

  • Evidence gathering for these controls will be automated via Netier Compliance Engine API integrations (planned — external ISM scanner operational; full evidence automation in development).

    Email Security, Web Posture & Deliverability Baseline

    Document ID: NET-BL-EMAIL-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    This baseline covers external-facing assets, focusing on email authentication, deliverability, and web application security. It integrates controls across Cloudflare, Valimail, PowerDMARC, Sendmarc, Postmaster, and performance metrics (Speedtest/PageSpeed), aligning with ISM, CIS, and Privacy Act requirements.

    2. Email Authentication & Deliverability

    ISM Controls: ISM-0264, ISM-0569, ISM-0572, ISM-1589

    Netier mandates a strict email authentication framework to prevent spoofing and ensure high deliverability rates.

    2.1 Sender Policy Framework (SPF)

    ISM Controls: ISM-0574, ISM-1183, ISM-1151
  • Configuration: Explicitly define all authorized sending IPs and services.
  • Limit: Strict adherence to the 10 DNS lookup limit. When limits are hit, use Valimail/PowerDMARC SPF Flattening or SPF Macro features rather than manual IP flattening (which leads to maintenance drift).
  • Policy: Must end with ~all (soft fail during tuning) transitioning to -all (hard fail) in production.
  • 2.2 DomainKeys Identified Mail (DKIM)

    ISM Controls: ISM-0861, ISM-1026
  • Configuration: 2048-bit keys minimum. DKIM keys must be rotated annually.
  • Alignment: 100% of outbound mail streams must be DKIM signed.
  • 2.3 Domain-based Message Authentication, Reporting, and Conformance (DMARC)

    ISM Controls: ISM-1540, ISM-1799
  • Enforcement: The final state for all managed domains is p=reject.
  • Management Tools: Valimail, PowerDMARC, or Sendmarc must be utilized to aggregate RUA/RUF reports and maintain SPF/DKIM alignment dynamically.
  • Monitoring: Continuous monitoring via Postmaster tools for domain reputation and spam rate metrics.
  • 2.4 Inbound Email Protection (Microsoft Defender for Office 365)

    ISM Controls: ISM-1234, ISM-1502, ISM-0572, ISM-1589
  • Executable Blocking: Drop all inbound attachments with executable extensions (.exe, .bat, .ps1, .vbs, .js, .wsf).
  • Anti-Phishing: Strict mode with impersonation protection for executive staff and key domains (cross-reference: M365 baseline Section 4).
  • Zero-hour Auto Purge (ZAP): Enabled for both malware and phishing messages retroactively removed from mailboxes post-delivery.
  • High-Confidence Phishing: Quarantine action with no end-user release capability.
  • 3. Web Posture & Security (Cloudflare)

    ISM Controls: ISM-0963, ISM-0958

    All public-facing web applications and sites must be protected via Cloudflare (or equivalent Enterprise WAF).

    3.1 Web Application Firewall (WAF)

    ISM Controls: ISM-1862, ISM-0963, ISM-1431
  • Mode: Strict block mode for known malicious payloads (SQLi, XSS, LFI).
  • Bot Management: Super Bot Fight Mode (or equivalent) enabled to challenge/block automated scrapers and malicious bots.
  • DDoS Protection: Always-on Layer 3/4/7 DDoS mitigation.
  • 3.2 Encryption & Transport

    ISM Controls: ISM-1139, ISM-1369, ISM-1372, ISM-1448, ISM-1453
  • TLS Requirement: Minimum TLS 1.2 enforced. TLS 1.3 preferred. Legacy protocols (TLS 1.0/1.1) explicitly disabled.
  • HSTS: HTTP Strict Transport Security (HSTS) enabled with includeSubDomains and preload.
  • 3.3 Performance Metrics (OLAs)

    ISM Controls: ISM-1581, ISM-1438

    Performance is considered a security/availability metric.

  • PageSpeed: Cloudflare caching, image optimization, and minification enabled to meet baseline Core Web Vitals targets.
  • Speedtest/Latency: Automated monitoring to ensure global latency and load times remain within defined Operational Level Agreements (OLAs).

  • Evidence gathering for these controls will be automated via Netier Compliance Engine API integrations (planned — external ISM scanner operational; full evidence automation in development).

    Operational Policies & Governing Plans

    Document ID: NET-BL-OPS-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    This document outlines the required structure and mandates for Netier's core operational policies. These policies govern the technical baselines and provide the administrative controls required for ISO 27001, SOCI Act, DISP, and SOC II.

    2. Incident Response Plan (IRP)

    ISM Controls: ISM-0576, ISM-1784, ISM-0125, ISM-0123, ISM-0140
  • Objective: Define the process for identifying, investigating, responding to, and recovering from security incidents.
  • Phases: Preparation, Identification, Containment, Eradication, Recovery, Lessons Learned.
  • Mandatory Reporting:
  • * ACSC (ASD): Critical cyber security incidents affecting national infrastructure (SOCI) or defence (DISP) must be reported to the ACSC within 12 hours of becoming aware (s30CD). Other significant incidents within 72 hours (s30CE).

    * OAIC: Notifiable Data Breaches (NDB) under the Privacy Act must be reported within 72 hours of confirmation.

  • Post-Incident Review: A Post-Incident Report (PIR) must be completed within 14 days of incident closure, with resulting remediation tasks tracked in the risk register.
  • Testing: Tabletop exercises conducted at least annually.
  • 3. Business Continuity Plan (BCP)

    ISM Controls: ISM-1437, ISM-1579, ISM-1580, ISM-1431
  • Objective: Ensure Netier and its clients can maintain critical operations during a major disruption.
  • Key Metrics:
  • * MTPD: Maximum Tolerable Period of Disruption (defined per service tier).

    * RTO/RPO: Recovery Time Objective and Recovery Point Objective.

  • Scope: Covers physical site loss, critical system failure (e.g., NinjaOne outage), and loss of key personnel.
  • 4. Disaster Recovery Plan (DRP)

    ISM Controls: ISM-1547, ISM-1548, ISM-1511, ISM-1515, ISM-1708
  • Objective: The technical steps to restore IT infrastructure and data following a disaster.
  • Backup Architecture (E8 ML3):
  • * Immutable, offline, or offsite backups are mandatory.

    * Backups must be protected from domain/tenant compromise (separate authentication plane).

    * Backups must be encrypted at rest (AES-256) and in transit, with encryption keys managed securely and separately from the primary infrastructure.

  • Testing Frequency:
  • * Enterprise Tier: Quarterly full restoration tests.

    * Professional Tier: Bi-annual restoration tests.

    * Essential Tier: Annual restoration tests.

    5. Supply Chain Management (SCM)

    ISM Controls: ISM-1631, ISM-1452, ISM-1568, ISM-1569, ISM-0072
  • Objective: Manage risks introduced by third-party vendors and SaaS providers.
  • Vendor Assessment: Mandatory security questionnaire and review of vendor SOC II Type 2 / ISO 27001 certifications prior to onboarding.
  • Data Sovereignty: Explicit tracking of where data is hosted. High-risk data must remain in Australia. US-based SaaS tools require specific risk acceptance and mitigating controls.
  • Shared Responsibility Matrix: A documented matrix explicitly defining security responsibilities between Netier, the Vendor, and the Client.

  • Evidence gathering for these plans (e.g., backup logs, test results, vendor approvals) will be automated via Netier Compliance Engine API integrations (planned — external ISM scanner operational; full evidence automation in development).
    PART 3

    Standard Operating Procedures

    SOP: Infrastructure & Compute Hardening

    Document ID: NET-SOP-INFRA-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 1.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Windows Server 2022 Hardening
  • Local Administrator Password Solution (LAPS)
  • Hypervisor Management Security
  • RDP Restrictions
  • SMB Hardening
  • Backup Integration
  • Master Verification Checklist
  • Document History

  • Windows Server 2022 Hardening

    ISM Controls: ISM-1926, ISM-1927

    Prerequisites

  • Windows Server 2022 Standard or Datacenter, domain-joined
  • Active Directory domain functional level 2016 or higher
  • Group Policy Management Console (GPMC) access with Domain Admin or delegated GPO rights
  • CIS Benchmark for Windows Server 2022 v1.0+ downloaded from CIS WorkBench (https://workbench.cisecurity.org)
  • Hardware supporting Credential Guard (UEFI Secure Boot, TPM 2.0, Virtualization-Based Security capable)
  • Step-by-Step Instructions

    1. Apply CIS Level 1 Baseline via GPO

  • Open Group Policy Management Console on a domain controller or management workstation.
  • Navigate to Forest > Domains > [client-domain] > Group Policy Objects.
  • Right-click Group Policy Objects > Import Settings using the CIS GPO backup package.
  • Alternatively, create a new GPO named CIS-WS2022-L1-Baseline and manually configure:
  • - Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy:

    - Minimum password length: 14 characters

    - Password complexity: Enabled

    - Minimum password age: 1 day

    - Maximum password age: 365 days (or per client policy)

    - Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Audit Policy:

    - Audit logon events: Success, Failure

    - Audit account logon events: Success, Failure

    - Audit object access: Failure

    - Audit policy change: Success, Failure

    - Audit privilege use: Failure

    - Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment:

    - Deny access to this computer from the network: Local account and member of Administrators group (for workstations)

    - Deny log on through Remote Desktop Services: Guests, Local account (standard users per RDP section below)

  • Link the GPO to the Servers OU (or appropriate OU per client AD structure).
  • Run gpupdate /force on a target server and verify with gpresult /r.
  • PowerShell / CLI Alternative:
    # Import CIS GPO backup (run on DC or GPMC workstation)
    

    Import-GPO -BackupGpoName "CIS-WS2022-L1-Baseline" -Path "C:\CIS-Benchmarks\GPOBackup" -TargetName "CIS-WS2022-L1-Baseline" -CreateIfNeeded

    Link to Servers OU

    New-GPLink -Name "CIS-WS2022-L1-Baseline" -Target "OU=Servers,DC=contoso,DC=local" -LinkEnabled Yes

    Force GP update on remote server

    Invoke-GPUpdate -Computer "SERVER01" -Force -RandomDelayInMinutes 0

    2. Enable Credential Guard

  • Verify hardware support:
  •    # Check VBS readiness

    Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object -Property AvailableSecurityProperties, VirtualizationBasedSecurityStatus, SecurityServicesRunning

    - AvailableSecurityProperties must include 1 (Hypervisor support) and 3 (Secure Boot).

    - If VBS is not running, enable in BIOS: Intel VT-x/AMD-V, Secure Boot, TPM 2.0.

  • GPO Method (preferred for domain servers):
  • - Navigate to Computer Configuration > Policies > Administrative Templates > System > Device Guard.

    - Turn On Virtualization Based Security: Enabled

    - Select Platform Security Level: Secure Boot and DMA Protection

    - Credential Guard Configuration: Enabled with UEFI lock

    - Secure Launch Configuration: Enabled

  • Intune Method (for Entra ID-joined or hybrid-joined endpoints):
  • - Navigate to Microsoft Intune admin center > Endpoint security > Account protection.

    - Create profile: Windows 10/11 and later > Account protection.

    - Set Credential Guard: Enable with UEFI lock.

    - Assign to the appropriate device group.

    PowerShell / CLI Alternative:
    # Enable Credential Guard via registry (reboot required)
    

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\LSA" /v LsaCfgFlags /t REG_DWORD /d 1 /f

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 1 /f

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures /t REG_DWORD /d 3 /f

    Verify after reboot

    Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object SecurityServicesRunning

    Should return "1" (Credential Guard) or "1, 2" (Credential Guard + HVCI)

    3. Enable LSA Protection (RunAsPPL)

  • GPO Method:
  • - Computer Configuration > Policies > Administrative Templates > System > Local Security Authority

    - Configure LSASS to run as a protected process: Enabled (Enabled with UEFI Lock)

    PowerShell / CLI Alternative:
    # Enable LSA Protection
    

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\LSA" /v RunAsPPL /t REG_DWORD /d 2 /f

    Verify LSA Protection is active (after reboot)

    Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" -Name RunAsPPL

    Value of 2 = Enabled with UEFI lock; Value of 1 = Enabled without UEFI lock

    Verification Checks

    CIS baseline GPO is linked to the correct OU and gpresult /r shows it applied
    VirtualizationBasedSecurityStatus returns 2 (Running)
    SecurityServicesRunning includes 1 (Credential Guard active)
    RunAsPPL registry value is set to 2
    Event Viewer > Microsoft-Windows-DeviceGuard/Operational shows Event ID 7000 (VBS running)
    No LSASS audit warnings in Event Viewer > Microsoft-Windows-CodeIntegrity/Operational

    Rollback

  • To disable Credential Guard, set GPO to Disabled or:
  •    reg add "HKLM\SYSTEM\CurrentControlSet\Control\LSA" /v LsaCfgFlags /t REG_DWORD /d 0 /f

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 0 /f

  • For UEFI-locked Credential Guard, you must boot with the DG_Readiness tool:
  •    # Download from Microsoft, run with -Disable flag

    .\DG_Readiness_Tool_v3.6.ps1 -Disable -CG

  • Reboot the server. Verify SecurityServicesRunning no longer includes 1.
  • To revert LSA Protection: reg add "HKLM\SYSTEM\CurrentControlSet\Control\LSA" /v RunAsPPL /t REG_DWORD /d 0 /f and reboot.

  • Local Administrator Password Solution (LAPS)

    ISM Controls: ISM-1926, ISM-1409

    Prerequisites

  • Windows LAPS (built into Windows Server 2022 April 2023 update or later) or Legacy Microsoft LAPS installed
  • Entra ID P1 license (for cloud-backed LAPS) or on-premises AD schema extended for LAPS
  • Appropriate RBAC roles: Cloud Device Administrator or Intune Administrator for Entra ID LAPS
  • For on-prem: AD schema updated with Update-LapsADSchema and permissions set with Set-LapsADComputerSelfPermission
  • Step-by-Step Instructions

    1. Configure LAPS via GPO (On-Premises AD)

  • Extend the AD schema (run once, as Schema Admin):
  •    Import-Module LAPS

    Update-LapsADSchema

    Set-LapsADComputerSelfPermission -Identity "OU=Servers,DC=contoso,DC=local"

  • Create GPO named LAPS-Servers-14Day:
  • - Computer Configuration > Policies > Administrative Templates > System > LAPS

    - Configure password backup directory: Enabled > Active Directory (or Azure Active Directory for cloud-only)

    - Password Settings:

    - Password complexity: Large letters + small letters + numbers + specials

    - Password length: 24 characters

    - Password age (days): 14

    - Post-authentication actions:

    - Grace period (hours): 1 (forces reset within 1 hour of password use)

    - Actions: Reset password and logoff managed account

    - Name of administrator account to manage: Leave default (built-in Administrator RID 500) or specify custom local admin name

  • Link GPO to the Servers and Workstations OUs.
  • 2. Configure LAPS via Intune (Entra ID)

  • Navigate to Microsoft Intune admin center > Endpoint security > Account protection.
  • Create profile: Windows 10/11 and later > Local admin password solution (Windows LAPS).
  • Configure:
  • - Backup Directory: Backup the password to Azure AD only (or both for hybrid)

    - Password Age Days: 14

    - Administrator Account Name: leave blank for built-in RID 500

    - Password Complexity: Large + small letters + numbers + special characters

    - Password Length: 24

    - Post Authentication Actions: Reset password and logoff the managed account

    - Post Authentication Reset Delay (hours): 1

  • Assign to the appropriate device group.
  • 3. Retrieving LAPS Passwords

    # On-premises AD - retrieve LAPS password
    

    Get-LapsADPassword -Identity "SERVER01" -AsPlainText

    Entra ID - retrieve via Microsoft Graph

    Connect-MgGraph -Scopes "DeviceLocalCredential.Read.All"

    Get-LapsAADPassword -DeviceIds "device-object-id" -IncludePasswords -AsPlainText

    Portal Method:
  • Navigate to Entra admin center > Devices > All devices > [Device Name] > Local administrator password recovery.
  • Click Show local administrator password.
  • Record the password and note the automatic rotation time.
  • 4. Post-Use Password Reset (Mandatory Within 1 Hour)

    After any use of a LAPS-managed credential, the post-authentication action will trigger automatically. To force immediate rotation:

    # Force immediate LAPS password rotation
    

    Reset-LapsPassword -Identity "SERVER01"

    Invoke via Intune for cloud-managed devices

    Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/deviceLocalCredentials/{id}/rotateLocalAdminPassword"

    Verification Checks

    Get-LapsADPassword -Identity "SERVER01" returns a valid password with correct expiry date (14 days from last rotation)
    Password complexity meets 24-character minimum with all character classes
    Post-authentication action is configured to reset within 1 hour
    Event Viewer > Microsoft-Windows-LAPS/Operational shows Event ID 10018 (successful password update)
    GPO or Intune policy shows as applied on target devices
    LAPS password retrieval is restricted to authorized administrators only (check Set-LapsADReadPasswordPermission)

    Rollback

  • Set the LAPS GPO to Not Configured on all settings and unlink from OUs.
  • For Intune, delete or unassign the LAPS profile.
  • Manually set a known local administrator password on affected servers:
  •    $password = ConvertTo-SecureString "TempP@ssw0rd!" -AsPlainText -Force

    Set-LocalUser -Name "Administrator" -Password $password

  • Document the manual password in a secure vault (e.g., Keeper or Bitwarden) until LAPS is re-enabled.

  • Hypervisor Management Security

    ISM Controls: ISM-1926, ISM-0383

    Prerequisites

  • VMware vCenter 7.0+ or Microsoft Hyper-V on Windows Server 2022
  • Dedicated management VLAN configured on network infrastructure (e.g., VLAN 10 for management)
  • AD-integrated authentication configured for vCenter (Identity Sources) or Hyper-V Manager (default AD-integrated)
  • MFA provider configured (Entra ID Conditional Access for Hyper-V, vCenter SSO with RSA/Duo for VMware)
  • Step-by-Step Instructions

    1. Restrict Management VLAN Access

  • On the network switch/firewall, ensure vCenter/Hyper-V management interfaces are bound to the management VLAN only.
  • Create firewall rules:
  • - Allow: Management VLAN (e.g., 10.0.10.0/24) to vCenter TCP/443, ESXi TCP/443, Hyper-V TCP/5985-5986 (WinRM)

    - Deny: All other VLANs to management interfaces

  • Verify vCenter web client is only accessible from management VLAN or authorized VPN subnets.
  • Firewall Rule Example (FortiGate CLI):
    config firewall policy
    

    edit 100

    set srcintf "VLAN_MGMT"

    set dstintf "VLAN_HYPERVISOR"

    set srcaddr "Mgmt-Admins"

    set dstaddr "vCenter-Server" "ESXi-Hosts"

    set action accept

    set service "HTTPS"

    set logtraffic all

    next

    end

    2. AD-Integrated MFA for vCenter

  • In vCenter > Administration > Single Sign-On > Configuration > Identity Sources, add the AD domain as an identity source (Integrated Windows Authentication or LDAPS).
  • Assign AD security groups to vCenter roles: vCenter > Administration > Access Control > Global Permissions > Add the vSphere-Admins AD group with Administrator role.
  • Integrate MFA via Duo/RSA:
  • - Install Duo Authentication Proxy on a management server.

    - Configure vCenter to use the Duo RADIUS proxy as secondary authentication.

    - Test MFA prompt on vCenter login.

    3. AD-Integrated MFA for Hyper-V Manager

  • Hyper-V Manager natively uses Windows authentication. Enforce MFA via Entra ID Conditional Access:
  • - Navigate to Entra admin center > Protection > Conditional Access > Policies > New policy.

    - Name: Require MFA for Hyper-V Administration.

    - Assignments > Users: Select the Hyper-V Admins group.

    - Assignments > Target resources > Cloud apps: Windows Remote Management (WinRM) or apply to All cloud apps scoped to admin users.

    - Conditions > Client apps: Browser, Mobile apps and desktop clients.

    - Grant > Require multifactor authentication.

  • Alternatively, use Windows Hello for Business or Smart Card logon for RDP sessions to Hyper-V hosts.
  • 4. VM Tools Auto-Update (VMware)

  • In vCenter > Host > Configure > Software > VMware Tools, enable Automatic VMware Tools Upgrade.
  • Per-VM: Right-click VM > Edit Settings > VM Options > VMware Tools > Check Check and upgrade Tools during power cycling.
  • PowerCLI Alternative:
    # Connect to vCenter
    

    Connect-VIServer -Server vcenter.contoso.local

    Enable auto-upgrade on all VMs

    Get-VM | ForEach-Object {

    $spec = New-Object VMware.Vim.VirtualMachineConfigSpec

    $spec.tools = New-Object VMware.Vim.ToolsConfigInfo

    $spec.tools.toolsUpgradePolicy = "upgradeAtPowerCycle"

    $_.ExtensionData.ReconfigVM($spec)

    }

    Verify

    Get-VM | Select-Object Name, @{N='ToolsUpgradePolicy';E={$_.ExtensionData.Config.Tools.ToolsUpgradePolicy}}

    Verification Checks

    vCenter/Hyper-V management interfaces respond only from management VLAN and authorized VPN subnets
    Port scan from a non-management VLAN to vCenter/ESXi/Hyper-V ports returns filtered/closed
    AD authentication works for vCenter login; local SSO admin account is disabled or restricted to break-glass
    MFA prompt triggers on vCenter and Hyper-V administrative access
    VM Tools upgrade policy is set to upgradeAtPowerCycle on all VMs

    Rollback

  • To revert VLAN restrictions, restore previous firewall rules from backup configuration.
  • To remove MFA from vCenter, deconfigure the RADIUS integration in SSO settings.
  • To disable Conditional Access for Hyper-V, set the CA policy to Report-only or Off.
  • To revert VM Tools auto-update: set toolsUpgradePolicy to manual via PowerCLI.

  • RDP Restrictions

    ISM Controls: ISM-0380, ISM-1927

    Prerequisites

  • GPO management access
  • Jump host / PAW (Privileged Access Workstation) deployed in the management VLAN
  • VPN solution in place (e.g., FortiClient, GlobalProtect, Tailscale) with subnet routing configured
  • NLA-capable RDP clients on all administrative workstations (built into Windows 10/11)
  • Step-by-Step Instructions

    1. Enforce Network Level Authentication (NLA)

  • Create GPO named RDP-Hardening:
  • - Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security

    - Require use of specific security layer for remote (RDP) connections: Enabled > SSL

    - Require user authentication for remote connections by using Network Level Authentication: Enabled

    - Set client connection encryption level: High

    PowerShell / CLI Alternative:
    # Enable NLA via registry
    

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 1

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "SecurityLayer" -Value 2

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "MinEncryptionLevel" -Value 3

    2. Disable RDP for Standard Users

  • In the same GPO:
  • - Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment

    - Deny log on through Remote Desktop Services: Add Domain Users group (or the broadest standard user group).

    - Allow log on through Remote Desktop Services: Add only Remote Desktop Admins (a dedicated AD security group for authorized RDP users) and Domain Admins.

    # Verify who can RDP
    

    (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication").UserAuthentication

    Check Remote Desktop Users group membership

    Get-LocalGroupMember -Group "Remote Desktop Users"

    3. Restrict RDP Source Subnets (Jumphost/VPN Only)

  • On the Windows Firewall (via GPO or local policy):
  • - Computer Configuration > Policies > Windows Settings > Security Settings > Windows Defender Firewall > Inbound Rules

    - Modify the built-in Remote Desktop - User Mode (TCP-In) rule:

    - Scope tab > Remote IP address: Only these IP addresses

    - Add the jumphost IP(s) and VPN subnet(s):

    - Jumphost: e.g., 10.0.10.50

    - VPN subnet: e.g., 10.0.200.0/24

    PowerShell / CLI Alternative:
    # Restrict RDP to specific subnets via Windows Firewall
    

    Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -RemoteAddress @("10.0.10.50", "10.0.200.0/24") -Enabled True

    Verify the rule

    Get-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" | Get-NetFirewallAddressFilter

    4. Configure RDP Session Timeouts

    In the RDP-Hardening GPO:

  • Computer Configuration > Policies > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Session Time Limits
  • - Set time limit for disconnected sessions: Enabled > 1 hour

    - Set time limit for active but idle sessions: Enabled > 30 minutes

    - End session when time limits are reached: Enabled

    Verification Checks

    NLA is enforced: UserAuthentication registry value is 1
    RDP connection from a non-approved subnet is rejected by firewall
    Standard user (Domain Users member not in Remote Desktop Admins) cannot RDP to servers
    RDP connection from jumphost/VPN succeeds for authorized admin accounts
    Idle sessions disconnect after 30 minutes; disconnected sessions end after 1 hour
    RDP uses TLS/SSL (security layer = 2) and High encryption (level = 3)

    Rollback

  • Revert the RDP-Hardening GPO to Not Configured on all settings.
  • Reset firewall rules to allow RDP from any source:
  •    Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -RemoteAddress Any

  • Re-add Domain Users to the local Remote Desktop Users group if standard user RDP access is temporarily needed.

  • SMB Hardening

    ISM Controls: ISM-1926, ISM-1409

    Prerequisites

  • Windows Server 2022 (SMB 3.1.1 support built-in)
  • GPO management access
  • Confirmation from application owners that no legacy SMBv1-dependent applications exist (run audit first)
  • Step-by-Step Instructions

    1. Disable SMBv1

  • Audit SMBv1 usage first (run for 7 days minimum before disabling):
  •    # Enable SMBv1 auditing

    Set-SmbServerConfiguration -AuditSmb1Access $true -Force

    # Check audit logs for SMBv1 connections

    Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Audit" | Where-Object { $_.Id -eq 3000 } | Format-Table TimeCreated, Message -AutoSize

  • After confirming no legitimate SMBv1 traffic:
  •    # Disable SMBv1 server

    Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

    # Remove SMBv1 feature entirely

    Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart

    # Or via DISM

    dism /online /Disable-Feature /FeatureName:SMB1Protocol

  • GPO Method:
  • - Computer Configuration > Policies > Administrative Templates > Network > Lanman Server

    - Create a registry preference: HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 = 0 (DWORD)

    2. Enforce SMB Signing

  • Create GPO named SMB-Hardening:
  • - Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options

    - Microsoft network server: Digitally sign communications (always): Enabled

    - Microsoft network client: Digitally sign communications (always): Enabled

    - Microsoft network server: Digitally sign communications (if client agrees): Enabled

    - Microsoft network client: Digitally sign communications (if server agrees): Enabled

    PowerShell / CLI Alternative:
    # Enforce SMB signing on server side
    

    Set-SmbServerConfiguration -RequireSecuritySignature $true -Force

    Enforce SMB signing on client side

    Set-SmbClientConfiguration -RequireSecuritySignature $true -Force

    Enable SMB encryption (recommended where supported)

    Set-SmbServerConfiguration -EncryptData $true -Force

    Verify configuration

    Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, RequireSecuritySignature, EncryptData

    Get-SmbClientConfiguration | Select-Object RequireSecuritySignature

    3. Additional SMB Hardening

    # Disable SMB guest fallback (prevents NTLM relay to guest shares)
    

    Set-SmbClientConfiguration -EnableInsecureGuestLogons $false -Force

    Restrict anonymous access to named pipes and shares

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "RestrictNullSessAccess" -Value 1

    Verification Checks

    Get-SmbServerConfiguration shows EnableSMB1Protocol: False
    Get-SmbServerConfiguration shows RequireSecuritySignature: True
    Get-SmbClientConfiguration shows RequireSecuritySignature: True
    SMBv1 feature is removed: Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol shows State: Disabled
    No Event ID 3000 entries in SMBServer Audit log (no SMBv1 clients connecting)
    File share access works correctly over SMB 3.x from Windows 10/11 and Server 2016+ clients

    Rollback

  • Re-enable SMBv1 if a legacy dependency is discovered:
  •    Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart

    Set-SmbServerConfiguration -EnableSMB1Protocol $true -Force

  • Revert SMB signing to optional:
  •    Set-SmbServerConfiguration -RequireSecuritySignature $false -Force

    Set-SmbClientConfiguration -RequireSecuritySignature $false -Force

  • Document any legacy SMBv1 dependency as a risk exception and create a remediation plan with the client.

  • Backup Integration

    ISM Controls: ISM-0383, ISM-0380

    Prerequisites

  • Veeam Backup & Replication 12+ deployed
  • Backup repository with immutable storage configured (Veeam Hardened Repository on Linux)
  • NinjaOne or ConnectWise Automate for backup monitoring alerts
  • ConnectWise Manage for ticket creation on backup failures
  • Step-by-Step Instructions

    1. Configure Veeam Daily Image Backup

  • Open Veeam Backup & Replication Console > Home > Backup Job.
  • Create a new backup job:
  • - Name: [ClientCode]-DailyImage-Servers

    - Virtual Machines: Add all production VMs from vCenter/Hyper-V inventory.

    - Storage: Select the hardened (immutable) repository.

    - Retention: 14 daily restore points, 4 weekly, 12 monthly (adjust per client contract).

    - Enable inline deduplication and compression: Yes (Optimal).

    - Guest Processing: Enable application-aware processing (VSS) for SQL, Exchange, AD.

    - Schedule: Daily at 20:00 (or client-specified maintenance window).

    - Enable immutability: Set to 7 days minimum on the hardened repository.

    2. Configure Immutable Storage

    Veeam Hardened Repository (Linux):
    # On the Linux repository server (Ubuntu 22.04)
    

    Veeam configures immutability via XFS reflink + chattr +i

    Verify immutability is working:

    sudo lsattr /mnt/veeam-repo/backups/

    Files should show 'i' attribute (immutable)

    Veeam PowerShell - Verify Immutability:
    # Connect to Veeam
    

    Connect-VBRServer -Server "veeam.contoso.local"

    Check repository immutability settings

    Get-VBRBackupRepository | Select-Object Name, Type, @{N='Immutable';E={$_.GetImmutabilitySettings().Enabled}}, @{N='ImmutableDays';E={$_.GetImmutabilitySettings().Period}}

    Check last backup job status

    Get-VBRBackupSession | Where-Object {$_.CreationTime -gt (Get-Date).AddDays(-1)} | Select-Object JobName, Result, CreationTime, EndTime

    3. Backup Monitoring and Alerting

  • In NinjaOne > Administration > Policies > [Server Policy] > Conditions:
  • - Add condition: Windows Event Log > Log: Application, Source: Veeam, Event ID: 0 (job completion), Level: Error/Warning.

    - Action: Create ticket in ConnectWise Manage via integration.

  • Configure email alerts in Veeam:
  • - Veeam Console > Options > Notifications > Email Notifications

    - SMTP server, recipient: alerts@netier.com.au

    - Notify on: Failure and Warning (not Success, to reduce noise).

    Verification Checks

    Backup jobs run daily and complete successfully (check Veeam console)
    Immutable storage is active: backup files have immutable flag and cannot be deleted before retention expires
    Application-aware processing (VSS) completes without errors for SQL/Exchange/AD servers
    Offsite replication (Veeam Cloud Connect) is current within the last 24 hours
    Backup monitoring alerts are firing correctly (test by stopping a backup job and verifying ticket creation)
    Restore test completed within the last quarter (document date and result)
    SureBackup (Veeam) shows VMs boot successfully from backup

    Rollback

  • If a backup job causes performance issues, adjust the schedule to a different maintenance window.
  • If immutability is blocking legitimate deletions (e.g., storage full), you must wait for the immutability period to expire. Plan storage capacity accordingly.
  • To temporarily disable a backup job: right-click the job in Veeam > Disable. Document the reason and re-enable within 24 hours.

  • Master Verification Checklist

    Windows Server Hardening

    CIS Level 1 baseline GPO applied and verified via gpresult
    Credential Guard running (VBS status = 2, Security Services includes 1)
    LSA Protection (RunAsPPL) enabled with UEFI lock (value = 2)
    Event Viewer confirms DeviceGuard operational and no CodeIntegrity warnings

    LAPS

    LAPS GPO or Intune policy applied to all server and workstation OUs
    Password rotation set to 14 days
    Post-authentication reset configured for 1 hour
    Password retrieval restricted to authorized administrators
    LAPS operational event log shows successful rotations (Event ID 10018)

    Hypervisor Management

    Management interfaces restricted to management VLAN
    AD authentication configured for vCenter/Hyper-V
    MFA enforced for all hypervisor administrative access
    VM Tools auto-update policy set to upgrade at power cycle

    RDP

    NLA enforced (UserAuthentication = 1)
    RDP restricted to jumphost/VPN subnets via firewall rule
    Standard users denied RDP access; only authorized admin group permitted
    Session timeouts configured (idle: 30 min, disconnected: 1 hour)

    SMB

    SMBv1 disabled and feature removed
    SMB signing enforced on both server and client
    SMB encryption enabled
    Guest logon fallback disabled
    No SMBv1 audit events (7-day audit clean)

    Backup

    Daily image backups running successfully
    Immutable storage active and verified
    Application-aware processing working for SQL/Exchange/AD
    Offsite replication current (within 24 hours)
    Monitoring alerts configured and tested
    Quarterly restore test documented

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    Standard Operating Procedures: Identity, Conditional Access & Cloud Workspace Security

    Document ID: NET-SOP-IDM-001
    Version: 1.1
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 2.0
    Review Cycle: Quarterly or after any Microsoft portal change
    Applies to: All Netier-managed Microsoft 365 / Entra ID tenants

    Table of Contents

  • Break Glass Accounts
  • Conditional Access Policies
  • - Block Legacy Authentication

    - Block Non-AU Logins (Geo-Fencing)

    - Require Compliant Device

    - Require MFA for All Users

    - Sign-in Risk Policy

    - User Risk Policy

  • Privileged Identity Management (PIM)
  • Local Access — LAPS
  • Intune Device Compliance Policy
  • Application Control (Intune)
  • Defender for Office 365
  • Master Verification Checklist

  • Break Glass Accounts

    Break glass accounts must be created BEFORE any Conditional Access policies are deployed. These accounts provide emergency access if CA policies, MFA, or PIM malfunction.

    Prerequisites

  • Global Administrator access to the tenant
  • Two FIDO2 security keys (e.g., YubiKey 5 NFC)
  • Two separate physical safes — one on-site, one off-site
  • Netier SOC email distribution list or alert channel configured
  • A custom domain verified on the tenant (Use the tenant's primary custom domain for break glass accounts for consistency with monitoring and alerting. Note: some organisations prefer .onmicrosoft.com to survive custom domain deprovisioning — document the decision and rationale either way)
  • Step-by-Step Instructions

  • Navigate to Entra Admin Center > Identity > Users > All users > + New user > Create new user.
  • Create the first account:
  • - Username: BreakGlass1@

    - Display Name: Break Glass 1 — DO NOT DELETE

    - No group memberships at creation

    - Assign the Global Administrator role directly (not via PIM)

  • Repeat for BreakGlass2@.
  • For each account, set a long random password (20+ characters, generated, stored only in sealed envelopes in the physical safes).
  • Register a FIDO2 security key for each account:
  • - Sign in as the break glass account at https://mysignins.microsoft.com

    - Navigate to Security info > + Add sign-in method > Security key

    - Follow the on-screen prompts to register the FIDO2 key

    - Store each key in its designated safe (BG1 = on-site, BG2 = off-site)

  • Disable phone-based MFA methods for both accounts — FIDO2 only.
  • Configure sign-in alerts:
  • - Navigate to Entra Admin Center > Identity > Monitoring & health > Diagnostic settings > + Add diagnostic setting.

    - Export SignInLogs to a Log Analytics workspace.

    - Create an alert rule: Azure Monitor > Alerts > + Create alert rule.

    - Condition: SigninLogs | where UserPrincipalName in ("BreakGlass1@...", "BreakGlass2@...") | where ResultType == 0

    - Action group: email Netier SOC distribution list

    - Severity: Sev 0 (Critical)

  • Document both accounts in a sealed register accessible only to authorised senior engineers and the client's IT director.
  • PowerShell Alternative (account creation):
    # Requires Microsoft.Graph module
    

    Connect-MgGraph -Scopes "User.ReadWrite.All","RoleManagement.ReadWrite.Directory"

    $passwordProfile = @{

    # Generate a cryptographically secure 30-character password

    Password = -join ((48..57) + (65..90) + (97..122) + (33,35,36,37,38,42,64) |

    Get-Random -Count 30 | ForEach-Object { [char]$_ })

    # IMPORTANT: Record this password immediately in a sealed envelope for the physical safe.

    # Do NOT use GUIDs or predictable patterns for break glass credentials.

    ForceChangePasswordNextSignIn = $false

    }

    foreach ($i in 1..2) {

    $user = New-MgUser

    -DisplayName "Break Glass $i - DO NOT DELETE"

    -UserPrincipalName "BreakGlass$i@<tenantdomain>"

    -PasswordProfile $passwordProfile

    -AccountEnabled

    -MailNickname "BreakGlass$i"

    # Assign Global Admin role (Graph SDK v2+)

    $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Global Administrator'"

    New-MgRoleManagementDirectoryRoleAssignment -PrincipalId $user.Id

    -RoleDefinitionId $roleDefinition.Id -DirectoryScopeId "/"

    }

    Verification Checks

    Both accounts can sign in successfully using FIDO2 keys
    Both accounts hold the Global Administrator role (directly assigned, not via PIM)
    Sign-in alert fires within 5 minutes of a test login
    Netier SOC confirms receipt of the test alert
    FIDO2 keys are physically secured in separate safes
    Accounts are excluded from ALL Conditional Access policies (verify in each policy)
    Passwords and key locations are documented in the sealed register

    Rollback

    If a break glass account is compromised:

  • Immediately disable the compromised account in Entra Admin Center.
  • Use the other break glass account to regain access.
  • Revoke all sessions: Revoke-MgUserSignInSession -UserId .
  • Create a replacement account following this SOP.
  • Register a new FIDO2 key and store in the same safe.
  • Investigate the compromise via Entra sign-in logs and Defender for Cloud Apps.

  • Conditional Access Policies

    IMPORTANT: Before creating any Conditional Access policy, ensure break glass accounts exist and will be excluded from every policy. Deploy policies in Report-only mode first, monitor for 7 days via the CA Insights workbook, then switch to On after confirming no legitimate users are blocked.

    Exclusion Group Setup

    Before creating individual policies, create a single exclusion group for break glass accounts:

  • Navigate to Entra Admin Center > Identity > Groups > All groups > + New group.
  • Group type: Security
  • Group name: SG-CA-BreakGlass-Exclusions
  • Members: Add BreakGlass1 and BreakGlass2
  • Use this group in the Exclude > Users and groups section of every CA policy below.

  • Block Legacy Authentication

    Legacy authentication protocols (POP3, IMAP, SMTP AUTH, Exchange ActiveSync basic auth) bypass MFA and are the most common vector for password spray attacks. This policy blocks them globally with no exceptions.

    Prerequisites

  • Confirm no business-critical applications depend on legacy auth (check sign-in logs filtered to "Legacy Authentication Clients" for the past 30 days)
  • Break glass exclusion group created
  • Step-by-Step Instructions

  • Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.
  • Name: BLOCK — Legacy Authentication
  • Assignments:
  • - Users: Include > All users

    - Users: Exclude > Select users and groups > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > All cloud apps

  • Conditions:
  • - Client apps > Configure: Yes

    - Select: Exchange ActiveSync clients and Other clients

    - Deselect: Browser, Mobile apps and desktop clients

  • Access controls > Grant: Select Block access
  • Enable policy: Report-only (switch to On after 7-day monitoring)
  • Click Create.
  • PowerShell Alternative:
    Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
    
    

    $params = @{

    DisplayName = "BLOCK - Legacy Authentication"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{

    IncludeApplications = @("All")

    }

    ClientAppTypes = @("exchangeActiveSync", "other")

    }

    GrantControls = @{

    Operator = "OR"

    BuiltInControls = @("block")

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $params

    Verification Checks

    Policy appears in the CA policy list with correct state (Report-only, then On)
    Sign-in logs show legacy auth attempts being blocked/reported
    No legitimate business applications are affected (check CA Insights workbook)
    Break glass accounts are excluded
    Test: attempt an IMAP connection with valid credentials and confirm it is blocked

    Rollback

  • Navigate to the policy and set Enable policy to Off.
  • Investigate which legacy auth flows were impacted.
  • If a specific app genuinely requires legacy auth (rare), raise it as a risk acceptance with the client and document it.

  • Block Non-AU Logins (Geo-Fencing)

    This policy blocks all sign-ins originating from outside Australia. Exceptions for travel or offshore workers require PIM approval and an IP whitelist entry.

    Prerequisites

  • Break glass exclusion group created
  • Named location for Australia created (or confirm it exists)
  • Step-by-Step Instructions

  • Create Named Location (Australia):
  • - Navigate to Entra Admin Center > Protection > Conditional Access > Named locations > + Countries location.

    - Name: Allowed Countries — Australia

    - Select: Australia

    - Determine location by: IP address (recommended for accuracy)

    - Click Create

  • Create the Policy:
  • - Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.

    - Name: BLOCK — Non-AU Sign-ins

    - Assignments:

    - Users: Include > All users

    - Users: Exclude > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > All cloud apps

    - Conditions:

    - Locations > Configure: Yes

    - Include: Any location

    - Exclude: Selected locations > Allowed Countries — Australia

    - Access controls > Grant: Select Block access

    - Enable policy: Report-only (switch to On after 7-day monitoring)

    - Click Create

  • Handling Travel Exceptions:
  • - User raises a ticket requesting temporary access from a specific country

    - A PIM-eligible admin activates their role (see PIM section)

    - Create a new named location for the traveller's IP range or country

    - Create a time-limited exclusion (or use a dedicated security group for travellers)

    - Set a calendar reminder to remove the exception on the return date

    - Document the exception in the ticket

    PowerShell Alternative:
    # Create named location
    

    $locationParams = @{

    "@odata.type" = "#microsoft.graph.countryNamedLocation"

    DisplayName = "Allowed Countries - Australia"

    CountriesAndRegions = @("AU")

    IncludeUnknownCountriesAndRegions = $false

    }

    $location = New-MgIdentityConditionalAccessNamedLocation -BodyParameter $locationParams

    Create policy

    $policyParams = @{

    DisplayName = "BLOCK - Non-AU Sign-ins"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{

    IncludeApplications = @("All")

    }

    Locations = @{

    IncludeLocations = @("All")

    ExcludeLocations = @($location.Id)

    }

    }

    GrantControls = @{

    Operator = "OR"

    BuiltInControls = @("block")

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $policyParams

    Verification Checks

    Named location for Australia exists and contains only AU
    Policy is active and scoped to all users (minus break glass)
    Test from a non-AU VPN/IP — sign-in is blocked
    Test from an AU IP — sign-in succeeds
    CA Insights workbook shows no false positives after 7 days
    Travel exception process is documented and communicated to the client

    Rollback

  • Set the policy to Off in the Conditional Access blade.
  • If the named location is incorrect, edit it under Named locations.
  • For a user locked out while travelling, add their country or IP to the exclude list immediately, then investigate.

  • Require Compliant Device

    Access to SharePoint Online, Exchange Online, and Microsoft Teams requires the device to be enrolled in Intune and marked as Compliant. This prevents data access from unmanaged personal devices.

    Prerequisites

  • Intune device compliance policies deployed (see Intune Device Compliance section below)
  • Devices enrolled in Intune and reporting compliance status
  • Break glass exclusion group created
  • Consider whether to allow web-only access from non-compliant devices (if not, this policy blocks all access)
  • Step-by-Step Instructions

  • Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.
  • Name: REQUIRE — Compliant Device for M365 Workloads
  • Assignments:
  • - Users: Include > All users

    - Users: Exclude > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > Select apps:

    - Office 365 Exchange Online

    - Office 365 SharePoint Online (this covers OneDrive as well)

    - Microsoft Teams

  • Conditions:
  • - Client apps > Configure: Yes

    - Select: Browser, Mobile apps and desktop clients

  • Access controls > Grant:
  • - Select Require device to be marked as compliant

    - For multiple controls: Require all the selected controls

  • Enable policy: Report-only (switch to On after 7-day monitoring)
  • Click Create.
  • PowerShell Alternative:
    $policyParams = @{
    

    DisplayName = "REQUIRE - Compliant Device for M365 Workloads"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{

    IncludeApplications = @(

    "00000002-0000-0ff1-ce00-000000000000", # Exchange Online

    "00000003-0000-0ff1-ce00-000000000000", # SharePoint Online

    "cc15fd57-2c6c-4117-a88c-83b1d56b4bbe" # Teams (NOTE: Exchange Online and SharePoint Online targets already cover

    # most Teams data access via backend APIs. This explicit Teams app ID

    # covers Teams-specific features like chat, calls, and meetings that

    # don't route through EXO/SPO. Alternative: replace all three with

    # the Office 365 meta-app: IncludeApplications = @("Office365"))

    )

    }

    ClientAppTypes = @("browser", "mobileAppsAndDesktopClients")

    }

    GrantControls = @{

    Operator = "OR"

    BuiltInControls = @("compliantDevice")

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $policyParams

    Verification Checks

    Policy targets Exchange Online, SharePoint Online, and Teams
    A compliant device can access all three workloads without issue
    A non-compliant (or unenrolled) device is blocked with a clear remediation message
    Break glass accounts are excluded
    Guest/external users are handled appropriately (exclude or provide separate policy)
    Mobile devices enrolled via Company Portal are marked compliant

    Rollback

  • Set the policy to Off.
  • If users are locked out due to compliance evaluation delays, temporarily set to Report-only while Intune catches up.
  • Check Intune compliance status: Intune Admin Center > Devices > All devices > [device] > Device compliance.

  • Require MFA for All Users

    All users must authenticate with phishing-resistant MFA (FIDO2 security keys or Windows Hello for Business). This replaces legacy MFA per-user settings and Security Defaults.

    Prerequisites

  • Disable Security Defaults if enabled: Entra Admin Center > Identity > Overview > Properties > Manage Security defaults > Disabled
  • Disable legacy per-user MFA: Entra Admin Center > Identity > Users > All users > Per-user MFA (set all users to Disabled; CA policies take over)
  • FIDO2 and/or Windows Hello for Business enabled as authentication methods
  • Break glass exclusion group created
  • Step-by-Step Instructions

  • Enable phishing-resistant authentication methods:
  • - Navigate to Entra Admin Center > Protection > Authentication methods > Policies.

    - FIDO2 security key: Enable > Target: All users (or a pilot group initially)

    - Windows Hello for Business: Enable > Target: All users

    - Microsoft Authenticator: Enable (as fallback during transition, plan to disable push/OTP once FIDO2/WHfB adoption is complete)

  • Create the Conditional Access policy:
  • - Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.

    - Name: REQUIRE — MFA for All Users (Phishing-Resistant)

    - Assignments:

    - Users: Include > All users

    - Users: Exclude > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > All cloud apps

    - Conditions: Leave all at Not configured (applies to all conditions)

    - Access controls > Grant:

    - Select Require authentication strength

    - Choose Phishing-resistant MFA (built-in strength that includes FIDO2 and Windows Hello)

    - Enable policy: Report-only (switch to On after 7-day monitoring)

    - Click Create

  • Register users for FIDO2/WHfB:
  • - Direct users to https://mysignins.microsoft.com to register their security keys

    - For Windows Hello, ensure devices are joined or registered to Entra ID and WHfB policy is deployed via Intune

    PowerShell Alternative:
    $policyParams = @{
    

    DisplayName = "REQUIRE - MFA for All Users (Phishing-Resistant)"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{

    IncludeApplications = @("All")

    }

    }

    GrantControls = @{

    Operator = "OR"

    AuthenticationStrength = @{

    Id = "00000000-0000-0000-0000-000000000004" # Phishing-resistant MFA

    }

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $policyParams

    Verification Checks

    Security Defaults are disabled
    Legacy per-user MFA is disabled for all users
    FIDO2 and Windows Hello for Business are enabled as authentication methods
    Policy enforces "Phishing-resistant MFA" authentication strength (not just "Require MFA")
    Users are prompted for FIDO2/WHfB and cannot fall back to SMS/phone call
    Break glass accounts are excluded
    Service accounts/app registrations that cannot perform MFA are handled per the procedure below

    Handling Service Accounts and App Registrations

    Service accounts, app registrations, and headless integrations cannot perform interactive MFA. Each must be handled explicitly — never silently excluded.

    Step 1 — Identify all non-interactive accounts:
  • App registrations: Entra Admin Center > Identity > Applications > App registrations > All applications
  • Service principal sign-ins: Entra Admin Center > Identity > Monitoring & health > Sign-in logs > Filter: Sign-in type = "Service principal"
  • Known service accounts: Backup agents, SMTP relay, LOB integrations, SCIM provisioning, monitoring agents
  • Step 2 — Apply the correct approach for each:
    ApproachWhen to UseConfiguration
    Managed Identity (preferred)Azure-hosted services (Functions, Logic Apps, VMs)Assign system/user-assigned managed identity. Managed identities are excluded from CA by default. No credentials to manage.
    Workload Identity CA policyApp registrations authenticating via client credentialsCreate separate CA policy targeting Workload identities (Preview). Apply controls: restrict to Netier IPs only, block legacy auth protocols.
    Service account exclusion (last resort)Legacy integrations that cannot use managed identity or workload identityAdd to dedicated security group SG-CA-ServiceAccounts. Exclude from MFA policy ONLY. Compensating controls required: restrict sign-in to Netier IPs only (via named location in a separate CA policy), disable interactive logon, monitor via sign-in alerts.
    Step 3 — Document every exclusion:

    Maintain a Service Account Register (spreadsheet or CW Configuration) with:

  • Account name / App registration name
  • Purpose and owner
  • Exclusion justification
  • Compensating controls applied
  • Review date (minimum every 6 months)
  • Audit requirement: ISO 27001 A.5.18 and ISM-1833 require documented justification for every access exception. An undocumented exclusion is a nonconformity.

    Phased Deployment (Critical — Prevents User Lockout)

    Do NOT enforce phishing-resistant MFA immediately. Users need time to register FIDO2 keys or Windows Hello. Enforcing before registration is complete will lock out all users without phishing-resistant credentials.
    Phase A — Transitional (Weeks 1-4):
  • Deploy the CA policy above BUT change the Grant control to standard Require multifactor authentication (not phishing-resistant strength). This accepts Authenticator app, SMS, voice + FIDO2/WHfB.
  • Begin FIDO2 key distribution and user registration via https://mysignins.microsoft.com.
  • Track registration progress: Entra Admin Center > Protection > Authentication methods > Activity > Registration.
  • Target: >95% of users registered with FIDO2 or Windows Hello before Phase B.
  • Phase B — Hardened (Week 5+):
  • Once >95% adoption confirmed, update the CA policy Grant control:
  • - Change from Require multifactor authentication to Require authentication strength > Phishing-resistant MFA.

  • Set policy to Report-only for 7 days — monitor for any users blocked due to missing FIDO2/WHfB registration.
  • After 7 days with no unexpected blocks, switch to On (enforced).
  • Disable Microsoft Authenticator push/OTP as authentication methods (optional, for maximum security).
  • Handling the remaining <5%:
  • Users who cannot register FIDO2 (e.g., shared mailboxes, kiosk accounts): add to a dedicated exclusion group with compensating controls (IP restriction, compliant device requirement).
  • Document each exclusion in the Service Account Register.
  • Rollback

  • Set the policy to Off or Report-only.
  • If users cannot register FIDO2 keys, revert grant control to standard Require multifactor authentication (allows Authenticator app) while distributing keys.
  • Never re-enable Security Defaults — it conflicts with CA policies.

  • Sign-in Risk Policy

    Uses Entra ID Protection to evaluate sign-in risk in real time. High-risk sign-ins are blocked. Medium-risk sign-ins require MFA re-authentication.

    Prerequisites

  • Entra ID P2 (or Microsoft 365 E5) licences assigned to all users
  • MFA registered for all users (see previous policy)
  • Break glass exclusion group created
  • Step-by-Step Instructions

  • Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.
  • Name: RISK — Block High / MFA Medium Sign-in Risk
  • Assignments:
  • - Users: Include > All users

    - Users: Exclude > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > All cloud apps

  • Conditions:
  • - Sign-in risk > Configure: Yes

    - Risk level: Select High

  • Access controls > Grant: Select Block access
  • Enable policy: Report-only
  • Click Create.
  • Create a second policy for medium risk:
  • - Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.

    - Name: RISK — MFA for Medium Sign-in Risk

    - Assignments: Same as above (All users, exclude break glass)

    - Conditions:

    - Sign-in risk > Configure: Yes

    - Risk level: Select Medium

    - Access controls > Grant: Select Require authentication strength > Phishing-resistant MFA

    - Session controls: Set Sign-in frequency to Every time

    - Enable policy: Report-only

    - Click Create.

    PowerShell Alternative:
    # High risk - Block
    

    $highRiskParams = @{

    DisplayName = "RISK - Block High Sign-in Risk"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{ IncludeApplications = @("All") }

    SignInRiskLevels = @("high")

    }

    GrantControls = @{

    Operator = "OR"

    BuiltInControls = @("block")

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $highRiskParams

    Medium risk - Require MFA

    $medRiskParams = @{

    DisplayName = "RISK - MFA for Medium Sign-in Risk"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{ IncludeApplications = @("All") }

    SignInRiskLevels = @("medium")

    }

    GrantControls = @{

    Operator = "OR"

    AuthenticationStrength = @{

    Id = "00000000-0000-0000-0000-000000000004"

    }

    }

    SessionControls = @{

    SignInFrequency = @{

    Value = $null

    Type = $null

    IsEnabled = $true

    AuthenticationType = "primaryAndSecondaryAuthentication"

    FrequencyInterval = "everyTime"

    }

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $medRiskParams

    Verification Checks

    Entra ID P2 licences confirmed for all users
    High-risk sign-in policy blocks access
    Medium-risk sign-in policy prompts for MFA
    Risk detections are populating: Entra Admin Center > Protection > Identity Protection > Risk detections
    Break glass accounts are excluded from both policies
    Test with a simulated risky sign-in (e.g., anonymous proxy) if safe to do so in a test tenant

    Rollback

  • Set either policy to Off.
  • If legitimate users are being flagged as high risk, investigate the detection in Identity Protection and dismiss false positives: Protection > Identity Protection > Risky sign-ins > Confirm safe.
  • Do not lower risk thresholds — investigate root causes instead.

  • User Risk Policy

    Requires users flagged as high risk (leaked credentials, impossible travel patterns) to perform a secure password change.

    Prerequisites

  • Entra ID P2 licences assigned to all users
  • Self-Service Password Reset (SSPR) enabled for all users
  • MFA registered for all users
  • Break glass exclusion group created
  • Step-by-Step Instructions

  • Navigate to Entra Admin Center > Protection > Conditional Access > Policies > + New policy.
  • Name: RISK — Require Password Change for High User Risk
  • Assignments:
  • - Users: Include > All users

    - Users: Exclude > SG-CA-BreakGlass-Exclusions

    - Target resources: Include > All cloud apps

  • Conditions:
  • - User risk > Configure: Yes

    - Risk level: Select High

  • Access controls > Grant:
  • - Select Require authentication strength > Phishing-resistant MFA

    - AND select Require password change

    - For multiple controls: Require all the selected controls

  • Session controls:
  • - Set Sign-in frequency to Every time.

    - This forces re-authentication on every sign-in, which triggers the password change requirement for existing sessions (not just new sign-ins). Without this, a compromised user's existing refresh token remains valid.

  • Enable policy: Report-only (switch to On after 7-day monitoring)
  • Click Create.
  • Enable SSPR (if not already):
  • - Navigate to Entra Admin Center > Protection > Password reset > Properties.

    - Self-service password reset enabled: All

    - Authentication methods: require at least 2 methods

    - Ensure writeback is configured if hybrid (Entra Connect > Password writeback enabled)

    PowerShell Alternative:
    $userRiskParams = @{
    

    DisplayName = "RISK - Require Password Change for High User Risk"

    State = "enabledForReportingButNotEnforced"

    Conditions = @{

    Users = @{

    IncludeUsers = @("All")

    ExcludeGroups = @("<BreakGlass-Group-Id>")

    }

    Applications = @{ IncludeApplications = @("All") }

    UserRiskLevels = @("high")

    }

    GrantControls = @{

    Operator = "AND"

    BuiltInControls = @("passwordChange")

    AuthenticationStrength = @{

    Id = "00000000-0000-0000-0000-000000000004"

    }

    }

    SessionControls = @{

    SignInFrequency = @{

    Value = $null

    Type = $null

    IsEnabled = $true

    AuthenticationType = "primaryAndSecondaryAuthentication"

    FrequencyInterval = "everyTime"

    }

    }

    }

    New-MgIdentityConditionalAccessPolicy -BodyParameter $userRiskParams

    Verification Checks

    SSPR is enabled for all users with at least 2 authentication methods
    High-risk users are prompted to change their password upon next sign-in
    After password change, user risk is automatically remediated (drops from High)
    Break glass accounts are excluded
    Password writeback is functional for hybrid environments
    Risky users dashboard populates: Entra Admin Center > Protection > Identity Protection > Risky users

    Rollback

  • Set the policy to Off.
  • For users stuck in a password change loop, manually dismiss the risk: Identity Protection > Risky users > [user] > Dismiss user risk.
  • Investigate whether the risk detection was a true positive before dismissing.

  • Privileged Identity Management (PIM)

    PIM eliminates standing privileged access. Admins must activate their roles on-demand (just-in-time) with MFA, a justification, and (for Global Admin) peer approval.

    Prerequisites

  • Entra ID P2 licences for all administrators
  • Break glass accounts already hold permanent Global Admin (excluded from PIM)
  • Separate admin accounts created for each administrator (e.g., adm-thouston@)
  • Decide approval chain: who approves Global Admin activations
  • Step-by-Step Instructions

    Create Dedicated Admin Accounts

  • For each administrator, create a separate account with the adm- prefix:
  • - Navigate to Entra Admin Center > Identity > Users > + New user

    - Username: adm-@

    - No M365 productivity licences (no Exchange mailbox, no Teams, no OneDrive)

    - Assign only Entra ID P2 licence

  • Instruct administrators to never use admin accounts for email, browsing, or daily work.
  • Configure PIM Role Settings

  • Navigate to Entra Admin Center > Identity Governance > Privileged Identity Management > Entra roles.
  • Click Roles and select Global Administrator.
  • Click Settings > Edit.
  • Activation tab:
  • - Maximum activation duration: 4 hours (adjust per client policy)

    - On activation, require: Azure MFA

    - Require justification on activation: Yes

    - Require ticket information on activation: Yes

    - Require approval to activate: Yes

    - Select approver(s): Add designated senior engineers or client IT leadership

  • Assignment tab:
  • - Allow permanent eligible assignment: No

    - Expire eligible assignments after: 12 months (forces annual re-certification)

  • Notification tab:
  • - Send notifications when members are assigned as eligible: All admins

    - Send notifications when members are activated: All admins + designated SOC mailbox

  • Click Update.
  • Repeat for Exchange Administrator and SharePoint Administrator with these adjustments:
  • - Require approval to activate: No (peer approval not required for these roles per baseline)

    - All other settings remain the same (MFA, justification, ticketing)

    Assign Eligible Roles

  • Navigate to Entra Admin Center > Identity Governance > Privileged Identity Management > Entra roles > Roles.
  • Select the role (e.g., Global Administrator).
  • Click + Add assignments.
  • Select the admin accounts (e.g., adm-thouston).
  • Assignment type: Eligible (never Active, unless it is a break glass account).
  • Set eligibility duration: 12 months.
  • Click Assign.
  • Remove Standing Access

  • Navigate to Entra Admin Center > Identity > Roles & administrators > Global Administrator.
  • Review the list of Active assignments.
  • Remove all active assignments EXCEPT the break glass accounts.
  • Repeat for Exchange Administrator and SharePoint Administrator.
  • CAUTION: Ensure at least one PIM-eligible admin can activate before removing the last standing Global Admin. Always test with a second admin account first. PowerShell Alternative (assign eligible role):
    Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
    
    

    $roleDefinitionId = (Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Global Administrator'").Id

    $principalId = (Get-MgUser -Filter "userPrincipalName eq 'adm-thouston@<tenantdomain>'").Id

    $params = @{

    Action = "adminAssign"

    RoleDefinitionId = $roleDefinitionId

    PrincipalId = $principalId

    DirectoryScopeId = "/"

    ScheduleInfo = @{

    StartDateTime = (Get-Date)

    Expiration = @{

    Type = "afterDuration"

    Duration = "P365D"

    }

    }

    Justification = "Initial PIM eligible assignment per Netier baseline"

    }

    New-MgRoleManagementDirectoryRoleEligibilityScheduleRequest -BodyParameter $params

    Verification Checks

    No standing (active) Global Admin, Exchange Admin, or SharePoint Admin assignments exist (except break glass)
    All administrators have separate adm- accounts for privileged access
    adm- accounts have no productivity licences (no mailbox, no Teams)
    PIM activation for Global Admin requires MFA + justification + ticket + approval
    PIM activation for Exchange/SharePoint Admin requires MFA + justification + ticket (no approval)
    Maximum activation duration is 4 hours or less
    Eligible assignments expire after 12 months
    Test: an admin can successfully request, get approved, and activate Global Admin
    Activation and assignment notifications are received by the SOC mailbox
    Break glass accounts retain permanent active Global Admin (not managed by PIM)

    Rollback

  • If an admin is locked out of PIM activation, use a break glass account to assign a temporary active role.
  • If PIM is misconfigured and no admin can activate, use break glass to access PIM settings and correct them.
  • To revert to standing access temporarily: assign the role as Active via PIM with a short expiry while troubleshooting.

  • Local Access — LAPS

    Windows Local Administrator Password Solution (LAPS) ensures every endpoint and server has a unique, automatically rotated local admin password stored securely in Entra ID.

    Prerequisites

  • Devices are Entra ID joined or hybrid joined
  • Intune-managed (for cloud LAPS) or GPO-managed (for on-prem AD LAPS)
  • Windows 10 21H2+ or Windows 11 (cloud LAPS built in)
  • Windows Server 2019+ for servers
  • Entra ID P1 or higher
  • Step-by-Step Instructions

    Enable LAPS in Entra ID

  • Navigate to Entra Admin Center > Identity > Devices > All devices > Device settings.
  • Under Local administrator settings, toggle Enable Microsoft Entra Local Administrator Password Solution (LAPS) to Yes.
  • Click Save.
  • Configure LAPS via Intune

  • Navigate to Intune Admin Center > Endpoint security > Account protection > + Create policy.
  • Platform: Windows 10 and later
  • Profile: Local admin password solution (Windows LAPS)
  • Settings:
  • - Backup directory: Azure AD only (for cloud-native) or Active Directory (for hybrid)

    - Password age (days): 14

    - Administrator account name: Leave default (built-in Administrator) or specify a custom local admin account name

    - Password complexity: Large letters + small letters + numbers + special characters

    - Password length: 20 characters

    - Post-authentication actions: Reset password

    - Post-authentication delay (hours): 1 (reset password 1 hour after use)

  • Assignments: Target all Intune-managed Windows devices
  • Click Create.
  • Configure LAPS Permissions

  • Navigate to Entra Admin Center > Identity > Roles & administrators.
  • Assign the Cloud Device Administrator role (via PIM eligible assignment) to engineers who need to retrieve LAPS passwords.
  • Alternatively, use a custom role with microsoft.directory/deviceLocalCredentials/password/read permission.
  • Retrieving a LAPS Password

  • Navigate to Entra Admin Center > Identity > Devices > All devices > [device name] > Local administrator password.
  • Click Show local administrator password.
  • Use the password for the support session.
  • The password will automatically rotate based on the post-authentication action (within 1 hour of use).
  • PowerShell Alternative:
    # Retrieve LAPS password
    

    Connect-MgGraph -Scopes "DeviceLocalCredential.Read.All"

    Get-MgDirectoryDeviceLocalCredential -DeviceId "<device-object-id>" -Property "credentials" |

    Select-Object -ExpandProperty Credentials

    Note: Password auto-rotates after post-authentication delay

    Verification Checks

    LAPS is enabled in Entra device settings
    Intune LAPS policy targets all managed Windows devices
    Password rotation is set to 14 days
    Post-authentication reset is set to 1 hour
    LAPS passwords are visible in Entra Admin Center for managed devices
    Only authorised roles (Cloud Device Administrator or custom role) can read LAPS passwords
    Test: retrieve a password, use it, and confirm it rotates within 1 hour
    Servers are also covered (either via Intune or GPO-based LAPS)

    Rollback

  • If LAPS locks out a local admin account, use the stored password from Entra ID.
  • If the policy is causing issues, set the Intune policy assignment to a smaller group while investigating.
  • The previous password remains valid until rotation occurs.

  • Intune Device Compliance Policy

    These compliance policies define the minimum security posture required for a device to be marked "Compliant" in Entra ID (which the Conditional Access policy above relies on).

    Prerequisites

  • Intune licences assigned to all users with managed devices
  • Devices enrolled in Intune
  • BitLocker recovery keys escrowed to Entra ID
  • Defender for Endpoint onboarded (or third-party AV/EDR integrated with Intune)
  • Step-by-Step Instructions

  • Navigate to Intune Admin Center > Devices > Compliance > + Create policy.
  • Platform: Windows 10 and later
  • Name: Netier Baseline — Windows Compliance
  • Compliance settings:
  • Device Health:

    - Require BitLocker: Require

    - Require Secure Boot to be enabled on the device: Require

    - Require code integrity: Require

    Device Properties:

    - Minimum OS version: Set to N-1 (e.g., if current is 10.0.26100, set minimum to 10.0.22631 for Windows 11 23H2 or equivalent)

    System Security:

    - Require a password to unlock mobile devices: Require

    - Encryption of data storage on device: Require

    - Firewall: Require

    - Antivirus: Require

    - Antispyware: Require

    - Microsoft Defender Antimalware: Require

    - Microsoft Defender Antimalware minimum version: Current or N-1

    - Microsoft Defender for Endpoint — Require the device to be at or under the machine risk score: Clear (medium or low recommended)

    Microsoft Defender for Endpoint:

    - Require the device to be at or under the machine risk score: Medium (blocks high-risk devices)

  • Actions for noncompliance:
  • - Mark device noncompliant: Immediately (0 days)

    - Send email to end user: 1 day after noncompliance

    - Remotely lock the device: 7 days (optional, discuss with client)

    - Retire the noncompliant device: 30 days (matches check-in requirement)

  • Assignments: All users or all devices (depending on tenant structure)
  • Click Create.
  • Set compliance policy deadline (device check-in):
  • - Navigate to Intune Admin Center > Devices > Compliance > Compliance policy settings.

    - Mark devices with no compliance policy assigned as: Not compliant

    - Compliance status validity period (days): 30

    Verification Checks

    Compliance policy is assigned to all managed Windows devices
    BitLocker is required and keys are escrowed to Entra ID
    AV/EDR is required and enforced
    OS version check is set to N-1 of the current release
    Devices that have not checked in for 30 days are marked non-compliant
    Non-compliant devices are blocked from accessing M365 (via the Require Compliant Device CA policy)
    Test: deliberately disable BitLocker on a test device and confirm it becomes non-compliant
    Noncompliance email notifications are being sent to users

    Rollback

  • If the compliance policy is too aggressive and locks out many users, widen the grace period under Actions for noncompliance (e.g., 3 days instead of immediate).
  • To exempt a specific device temporarily, add it to an exclusion group and exclude that group from the compliance policy assignment.
  • Check individual device compliance: Intune Admin Center > Devices > All devices > [device] > Device compliance.

  • Application Control (Intune)

    Application control prevents unauthorised executables and scripts from running. This section covers AppLocker/WDAC via Intune and Office macro restrictions.

    Prerequisites

  • Intune-managed Windows 10/11 Enterprise or Education devices
  • Existing application inventory (audit mode first to build baseline)
  • ThreatLocker agent deployed (if using ThreatLocker instead of native WDAC)
  • Code signing certificates for in-house applications (if applicable)
  • Step-by-Step Instructions

    WDAC via Intune (Recommended for New Deployments)

  • Create a WDAC base policy on a reference machine:
  • # On a clean reference machine with all approved apps installed
    

    New-CIPolicy -Level Publisher -FilePath "C:\Policies\BasePolicy.xml"

    -UserPEs -MultiplePolicyFormat -Fallback Hash

    Add the Windows default policy as a base

    $defaultPolicy = "C:\Windows\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Enforced.xml"

    Merge-CIPolicy -PolicyPaths "C:\Policies\BasePolicy.xml", $defaultPolicy

    -OutputFilePath "C:\Policies\MergedPolicy.xml"

    Set policy to Audit mode first

    Set-RuleOption -FilePath "C:\Policies\MergedPolicy.xml" -Option 3 # Audit Mode

    Convert to binary

    ConvertFrom-CIPolicy -XmlFilePath "C:\Policies\MergedPolicy.xml"

    -BinaryFilePath "C:\Policies\MergedPolicy.bin"

  • Deploy WDAC via Intune:
  • - Navigate to Intune Admin Center > Endpoint security > Application control > + Create policy.

    - Platform: Windows 10 and later

    - Profile: Windows Defender Application Control

    - Upload the policy binary

    - Target: Pilot group first, then expand

  • Monitor in Audit mode for 30 days:
  • - Check Event Viewer: Applications and Services Logs > Microsoft > Windows > CodeIntegrity > Operational

    - Review blocked applications and add legitimate ones to the allow list

    - Once satisfied, change policy to Enforced mode (remove Option 3)

    Office Macro Restrictions

  • Navigate to Intune Admin Center > Devices > Configuration > + Create > New policy.
  • Platform: Windows 10 and later
  • Profile type: Settings catalog
  • Name: Netier Baseline — Office Macro Restrictions
  • Add settings by searching for each:
  • Block macros from the internet (all Office apps):

    - Search: "Block macros from running in Office files from the Internet"

    - Microsoft Word, Excel, PowerPoint, Access, Visio: Enabled

    VBA Macro notification settings:

    - Search: "VBA Macro Notification Settings"

    - For Word, Excel, PowerPoint: Disable all except digitally signed macros

    Trusted Locations:

    - Search: "Allow Trusted Locations on the network"

    - Set to: Disabled (only local trusted locations)

    - Or if network paths are required, define specific UNC paths via:

    - Search: "Trusted Location #1" through "Trusted Location #5"

    - Set each path explicitly (e.g., \\fileserver\approved-macros\)

  • Assignments: All Intune-managed Windows devices
  • Click Create.
  • ThreatLocker (If Deployed)

    If ThreatLocker is the primary application control platform:

  • Deploy ThreatLocker agent via Intune (Win32 app or LOB app deployment)
  • Configure policies in ThreatLocker portal:
  • - Default Deny mode for all unlisted applications

    - Ringfencing for permitted applications (restrict app-to-app communication)

    - Elevation control for admin-required applications

    - Storage control for USB/removable media

  • Set learning mode for 2 weeks on new deployments, then switch to Secured mode
  • Verification Checks

    WDAC policy deployed in Audit mode and generating logs (or ThreatLocker agent reporting)
    After 30-day audit, policy switched to Enforced mode
    Office macros from internet-downloaded files are blocked across all Office apps
    Only digitally signed macros execute (outside of trusted locations)
    Trusted locations are explicitly defined (no broad network shares)
    Test: download a macro-enabled file from the internet and confirm macros are blocked
    Test: run an unsigned executable and confirm it is blocked (in enforce mode)
    ThreatLocker (if applicable) shows all endpoints in Secured mode

    Rollback

  • WDAC: Switch policy back to Audit mode by re-enabling Option 3 and redeploying.
  • Office Macros: Set VBA Macro Notification to Enabled with notification temporarily.
  • ThreatLocker: Switch affected machine to Learning mode in the ThreatLocker portal.
  • Investigate the blocked application and add it to the allow list if legitimate.

  • Defender for Office 365

    Defender for Office 365 protects email and collaboration tools against phishing, malware, and business email compromise.

    Prerequisites

  • Microsoft Defender for Office 365 Plan 1 or Plan 2 licences (included in M365 E5)
  • Exchange Online mailboxes
  • Netier SOC distribution list for outbound spam notifications
  • Step-by-Step Instructions

    Safe Links

  • Navigate to Microsoft Defender portal (security.microsoft.com) > Email & collaboration > Policies & rules > Threat policies > Safe Links.
  • Click + Create or edit the default policy.
  • Name: Netier Baseline — Safe Links
  • Users and domains: Apply to all users in the tenant
  • URL & click protection settings:
  • - On: Safe Links checks a list of known, malicious links when users click links in email: Yes

    - Apply Safe Links to email messages sent within the organisation: Yes

    - Apply real-time URL scanning for suspicious links and links that point to files: Yes

    - Wait for URL scanning to complete before delivering the message: Yes

    - Do not rewrite URLs, do checks via Safe Links API only: No (rewrite for visibility)

    > Note: Microsoft is transitioning to API-only Safe Links checks for modern Outlook clients (desktop and mobile). URL rewriting remains necessary for Outlook on the web (OWA) and legacy clients. Review this setting at next quarterly review to align with Microsoft's deprecation timeline.

    - Apply Safe Links to messages sent within Microsoft Teams: Yes

    - Track user clicks: Yes

    - Let users click through to the original URL: No

  • Notification: Use default notification page
  • Click Submit.
  • Safe Attachments

  • Navigate to Defender portal > Email & collaboration > Policies & rules > Threat policies > Safe Attachments.
  • Click + Create or edit the default policy.
  • Name: Netier Baseline — Safe Attachments
  • Users and domains: Apply to all users in the tenant
  • Settings:
  • - Safe Attachments unknown malware response: Dynamic Delivery (delivers email body immediately, reattaches clean attachment after scan; use Block for higher security tenants where delivery delay is acceptable)

    - Quarantine policy: Default (AdminOnlyAccessPolicy or custom)

    - Redirect messages with detected attachments: Enable, redirect to Netier SOC mailbox for investigation

    - Apply the Safe Attachments detection response if scanning can't complete: Yes (treat as malicious if scan times out)

  • Click Submit.
  • Enable Safe Attachments for SharePoint, OneDrive, and Teams:
  • - Navigate to Defender portal > Email & collaboration > Policies & rules > Threat policies > Safe Attachments > Global settings.

    - Toggle Turn on Defender for Office 365 for SharePoint, OneDrive, and Microsoft Teams: On

    - Toggle Turn on Safe Documents for Office clients: On

    Anti-Phishing (Strict Mode)

  • Navigate to Defender portal > Email & collaboration > Policies & rules > Threat policies > Anti-phishing.
  • Click + Create.
  • Name: Netier Baseline — Anti-Phishing Strict
  • Users, groups, and domains: Apply to all accepted domains in the tenant
  • Phishing threshold & protection:
  • - Phishing email threshold: 3 — More aggressive (or 4 — Most aggressive)

    - Enable users to protect (impersonation): Add C-suite, finance, and HR users by name and email

    - Enable domains to protect: Add all tenant domains + partner domains

    - Add trusted senders and domains: Only add verified, vetted senders

    - Enable mailbox intelligence: Yes

    - Enable intelligence for impersonation protection: Yes

  • Actions:
  • - If a message is detected as user impersonation: Quarantine the message

    - If a message is detected as domain impersonation: Quarantine the message

    - If mailbox intelligence detects an impersonated user: Quarantine the message

    - If message is detected as spoof: Quarantine the message

    - Safety tips: Enable all (first contact, user impersonation, domain impersonation, unusual characters)

  • Click Submit.
  • PowerShell Alternative (Anti-Phishing):
    Connect-ExchangeOnline
    
    

    Create strict anti-phishing policy

    New-AntiPhishPolicy -Name "Netier Baseline - Anti-Phishing Strict"

    -PhishThresholdLevel 3

    -EnableMailboxIntelligence $true

    -EnableMailboxIntelligenceProtection $true

    -EnableSpoofIntelligence $true

    -EnableFirstContactSafetyTips $true

    -EnableSimilarUsersSafetyTips $true

    -EnableSimilarDomainsSafetyTips $true

    -EnableUnusualCharactersSafetyTips $true

    -MailboxIntelligenceProtectionAction Quarantine

    -TargetedUserProtectionAction Quarantine

    -TargetedDomainProtectionAction Quarantine

    -AuthenticationFailAction Quarantine

    Create the rule to apply it

    New-AntiPhishRule -Name "Netier Baseline - Anti-Phishing Strict"

    -AntiPhishPolicy "Netier Baseline - Anti-Phishing Strict"

    -RecipientDomainIs (Get-AcceptedDomain).DomainName

    Anti-Spam — Outbound Notifications

  • Navigate to Defender portal > Email & collaboration > Policies & rules > Threat policies > Anti-spam.
  • Select Anti-spam outbound policy (Default) or create a new one.
  • Protection settings:
  • - Set an external message limit (per hour): 500 (or lower for small tenants)

    - Set an internal message limit (per hour): 1000

    - Set a daily message limit: 1000

    - Restriction placed on users who reach the message limit: Restrict the user from sending mail until the following day

    - Automatic forwarding rules: Automatic — System controlled (or Off to block all)

  • Notifications:
  • - Send a copy of suspicious outbound email that exceeds these limits to these users and groups: Add Netier SOC distribution list

    - Notify these users and groups if a sender is blocked due to sending outbound spam: Add Netier SOC distribution list

  • Click Save.
  • PowerShell Alternative:
    Set-HostedOutboundSpamFilterPolicy -Identity "Default" 
    

    -RecipientLimitExternalPerHour 500

    -RecipientLimitInternalPerHour 1000

    -RecipientLimitPerDay 1000

    -ActionWhenThresholdReached BlockUserForToday

    -AutoForwardingMode Automatic

    -BccSuspiciousOutboundMail $true

    -BccSuspiciousOutboundAdditionalRecipients "soc@netier.com.au"

    -NotifyOutboundSpam $true

    -NotifyOutboundSpamRecipients "soc@netier.com.au"

    Verification Checks

    Safe Links: click a test URL in an email — URL is rewritten and scanned
    Safe Links: click a link in Teams — link is scanned
    Safe Attachments: send a test file (EICAR test file) — attachment is blocked or quarantined
    Safe Attachments: enabled for SharePoint/OneDrive/Teams
    Anti-Phishing: impersonation of a protected user triggers quarantine
    Anti-Phishing: spoofed email from outside the org is quarantined
    Anti-Spam: outbound sending limits are configured
    Anti-Spam: Netier SOC receives notification when outbound limits are hit
    Test: send an outbound email blast (in test) and confirm notification arrives
    Quarantine policies allow admins to review and release legitimate emails
    Defender portal Threat Explorer shows recent detections

    Rollback

  • Safe Links/Attachments: Edit the policy and set to Off or reduce scope to a smaller group.
  • Anti-Phishing: Lower the threshold from 3 to 2 if too many false positives.
  • Anti-Spam Outbound: Increase limits temporarily if a legitimate bulk send is needed (e.g., marketing campaign).
  • Review quarantine: Defender portal > Email & collaboration > Review > Quarantine to release false positives.

  • Master Verification Checklist

    Use this checklist after completing all SOPs above. Every item should be verified for each tenant onboarded to the Netier baseline.

    Break Glass & Emergency Access

    Two break glass accounts exist with permanent Global Admin
    FIDO2 keys registered and stored in separate physical safes
    Sign-in alerts configured and tested — SOC receives them
    Break glass accounts excluded from ALL Conditional Access policies

    Conditional Access Policies (7 policies total)

    BLOCK — Legacy Authentication: On, all users, no exceptions
    BLOCK — Non-AU Sign-ins: On, all users, travel exception process documented
    REQUIRE — Compliant Device for M365 Workloads: On, targets EXO/SPO/Teams
    REQUIRE — MFA for All Users (Phishing-Resistant): On, authentication strength set to phishing-resistant
    RISK — Block High Sign-in Risk: On
    RISK — MFA for Medium Sign-in Risk: On
    RISK — Require Password Change for High User Risk: On
    All policies exclude the break glass security group
    All policies were tested in Report-only mode for 7+ days before enforcement
    CA Insights workbook reviewed with no unexplained blocks

    Privileged Identity Management

    No standing Global Admin, Exchange Admin, or SharePoint Admin (except break glass)
    All admins use dedicated adm- accounts without productivity licences
    PIM requires MFA + justification + ticket for all privileged roles
    PIM requires peer approval for Global Admin activation
    Maximum activation window is 4 hours
    Eligible assignments expire after 12 months
    Activation notifications sent to SOC

    LAPS

    LAPS enabled in Entra ID device settings
    Intune LAPS policy deployed to all Windows devices
    Password rotation: 14 days
    Post-authentication reset: within 1 hour
    LAPS passwords retrievable by authorised roles only

    Intune Device Compliance

    BitLocker required
    AV/EDR required and current
    OS version set to N-1 minimum
    30-day check-in compliance validity
    Non-compliant devices are blocked from M365 (via CA policy)
    Noncompliance notifications configured

    Application Control

    WDAC or ThreatLocker enforced on all managed endpoints
    Office macros from internet are blocked
    Only digitally signed macros allowed
    Trusted locations explicitly defined
    Audit-to-enforce transition completed

    Defender for Office 365

    Safe Links enabled for email and Teams
    Safe Attachments in Dynamic Delivery or Block mode
    Safe Attachments enabled for SharePoint/OneDrive/Teams
    Anti-Phishing set to Strict (threshold 3+) with impersonation protection
    Outbound spam limits configured with SOC notifications
    Quarantine reviewed and release process documented

    Document History

    DateAuthorChange
    2026-03-25Netier Security EngineeringInitial creation — full baseline SOPs

    End of Document

    SOP: Endpoint Protection & Control

    Document ID: NET-SOP-EP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 3.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • ThreatLocker Deployment & Configuration
  • Sophos MDR Onboarding & Configuration
  • Microsoft Defender for Endpoint — ASR Rules
  • Application Control Policy Validation (Annual Review)
  • Master Verification Checklist
  • Document History

  • ThreatLocker Deployment & Configuration

    ISM Controls: ISM-0843, ISM-1490, ISM-1656

    Prerequisites

  • ThreatLocker portal access (https://portal.threatlocker.com) with Organization Admin role
  • ThreatLocker agent installer downloaded from the portal for the target organization
  • NinjaOne or ConnectWise Automate for mass deployment
  • Endpoints running Windows 10 21H2+ or Windows 11, or Windows Server 2016+
  • Test group of 5-10 endpoints identified for learning mode before production rollout
  • Step-by-Step Instructions

    1. Deploy ThreatLocker Agent

  • Navigate to ThreatLocker Portal > Organizations > [Client Org] > Deployment.
  • Download the MSI installer or copy the deployment command.
  • Deploy via NinjaOne:
  • - Navigate to NinjaOne > Administration > Library > Scripts.

    - Create a PowerShell script for deployment:

    PowerShell / CLI Alternative:
    # ThreatLocker silent install (replace GROUP_KEY with client org key from portal)
    

    $installerUrl = "https://api.threatlocker.com/updates/installers/threatlockerstubx64.exe"

    $installPath = "C:\Temp\ThreatLockerInstall.exe"

    New-Item -ItemType Directory -Path "C:\Temp" -Force | Out-Null

    Invoke-WebRequest -Uri $installerUrl -OutFile $installPath

    Start-Process -FilePath $installPath -ArgumentList "/quiet GROUPKEY=YOUR-GROUP-KEY-HERE" -Wait -NoNewWindow

    Verify installation

    Get-Service -Name "ThreatLockerService" | Select-Object Name, Status, StartType

  • In NinjaOne, assign the script to the target device group and execute.
  • Verify agents appear in ThreatLocker Portal within 15 minutes.
  • 2. Configure Learning Mode (Pre-Production)

  • Navigate to ThreatLocker Portal > Organizations > [Client Org] > Computers.
  • Select the test group endpoints.
  • Set to Learning Mode for a minimum of 14 days (30 days recommended for complex environments).
  • During learning mode, ThreatLocker observes all application executions and builds an allowlist.
  • Monitor the Unified Audit tab daily for the first week to identify unusual application activity.
  • 3. Configure Default-Deny Application Control

    After learning mode completes:

  • Navigate to ThreatLocker Portal > Policies > Application Control > [Client Org].
  • Review the auto-generated allowlist. For each entry, confirm:
  • - Publisher certificate: Is the publisher trusted? (e.g., Microsoft, Adobe, vendor-specific)

    - Path: Is the application in a sanctioned directory? (e.g., C:\Program Files\, C:\Windows\System32\)

    - Hash: For unsigned applications, verify the hash matches a known-good version.

  • Create allowlist policies using the following hierarchy (most to least preferred):
  • - Publisher certificate: Best for vendor software that updates frequently (e.g., Publisher: Microsoft Corporation, Product: *)

    - Path rule: For applications in controlled directories (e.g., C:\Program Files\AppName\*)

    - Hash rule: For unsigned or one-off executables (most restrictive, breaks on updates)

  • Set the organization to Secured Mode (default-deny):
  • - ThreatLocker Portal > Organizations > [Client Org] > Settings > Application Control Mode: Secured

  • Monitor the Denied Applications tab for the first 48 hours after switching to Secured Mode. Expect help desk tickets for legitimate applications that were missed during learning.
  • 4. Configure Ringfencing

  • Navigate to ThreatLocker Portal > Policies > Ringfencing > [Client Org].
  • Create the following ringfencing policies:
  • PowerShell/cmd/cscript Restriction:
  • Application: powershell.exe, pwsh.exe, cmd.exe, cscript.exe, wscript.exe
  • Ringfencing Rules:
  • - Network Access: Deny access to file shares (SMB TCP/445) and internet downloads (HTTP/HTTPS TCP/80,443) unless explicitly approved.

    - File Access: Deny write access to \\\ (UNC paths / network shares).

    - Interaction: Deny interaction with explorer.exe launching these processes from email attachments or browser downloads.

    Office Application Restriction:
  • Application: winword.exe, excel.exe, powerpnt.exe, outlook.exe, msaccess.exe
  • Ringfencing Rules:
  • - Child Process: Deny spawning of cmd.exe, powershell.exe, pwsh.exe, cscript.exe, wscript.exe, mshta.exe, regsvr32.exe, rundll32.exe.

    - Network Access: Allow only required ports (e.g., TCP/443 for SharePoint/OneDrive). Deny direct SMB access to non-sanctioned shares.

    - Registry: Deny write access to HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run and other persistence keys.

  • Test ringfencing policies on the test group before enabling organization-wide.
  • 5. Configure Elevation Control

  • Navigate to ThreatLocker Portal > Policies > Elevation > [Client Org].
  • Configure elevation policies:
  • - Default: Deny all elevation requests.

    - Time-bound approvals: Enable Request Elevation for end users.

    - Maximum elevation duration: 4 hours.

    - Require technician approval: Yes (approval via ThreatLocker portal or email).

    - Audit all elevation events: Yes (logged in Unified Audit).

    - Pre-approved elevations: Create policies for known applications that require admin rights (e.g., printer installers, approved vendor setup tools).

    - Set expiry: 30 days (forces re-evaluation).

  • Configure email notifications for elevation requests:
  • - ThreatLocker Portal > Organizations > [Client Org] > Settings > Notifications

    - Send elevation requests to: helpdesk@netier.com.au

    Verification Checks

    ThreatLocker agent installed and reporting on all endpoints (compare portal count vs RMM device count)
    Organization is in Secured Mode (default-deny active)
    Allowlist covers all approved business applications (zero false-positive denials after 48-hour monitoring)
    Ringfencing active: PowerShell/cmd blocked from network shares (test: powershell -c "dir \\server\share" should fail)
    Ringfencing active: Office apps cannot spawn child processes (test: open Word, attempt to run macro calling cmd.exe -- should be blocked)
    Elevation control: Standard user elevation request triggers approval workflow and email notification
    Elevation events are logged in Unified Audit with timestamp, user, application, and approver

    Rollback

  • To revert to learning mode: ThreatLocker Portal > Organizations > [Client Org] > Settings > Application Control Mode > Learning.
  • To disable ringfencing for a specific app: edit the ringfencing policy and set to Disabled or Monitor Only.
  • To uninstall ThreatLocker agent in an emergency:
  •    # Requires the uninstall password from ThreatLocker portal

    & "C:\Program Files\ThreatLocker\ThreatLockerStub.exe" /uninstall /quiet /password "UNINSTALL-PASSWORD"

  • Document any rollback in ConnectWise Manage as a security exception ticket.

  • Sophos MDR Onboarding & Configuration

    ISM Controls: ISM-1341, ISM-1034, ISM-1657

    Prerequisites

  • Sophos Central Partner dashboard access (https://cloud.sophos.com)
  • Sophos MDR license assigned to the client tenant
  • Client tenant created in Sophos Central with appropriate licensing (Intercept X Advanced with MDR)
  • Endpoints running Windows 10 21H2+, Windows 11, Windows Server 2016+, or macOS 12+
  • Network access to Sophos Central cloud (TCP/443 to *.sophos.com)
  • Step-by-Step Instructions

    1. Deploy Sophos Endpoint Agent

  • Navigate to Sophos Central Partner > [Client Tenant] > Devices > Installers.
  • Download the Sophos Endpoint Agent installer (Windows Thin Installer recommended for RMM deployment).
  • Deploy via NinjaOne or ConnectWise Automate:
  • PowerShell / CLI Alternative:
    # Sophos Central thin installer deployment
    

    Replace URL with the tenant-specific download link from Sophos Central

    $sophosInstallerUrl = "https://central.sophos.com/api/download/SophosSetup.exe"

    $installPath = "C:\Temp\SophosSetup.exe"

    New-Item -ItemType Directory -Path "C:\Temp" -Force | Out-Null

    Invoke-WebRequest -Uri $sophosInstallerUrl -OutFile $installPath

    Start-Process -FilePath $installPath -ArgumentList "--quiet" -Wait -NoNewWindow

    Verify Sophos services are running

    Get-Service -Name "Sophos*" | Select-Object Name, Status

    Expected: Sophos Endpoint Defense Service, Sophos File Scanner Service, Sophos MCS Agent, etc.

  • Verify the endpoint appears in Sophos Central > [Client Tenant] > Devices within 10 minutes.
  • 2. Enable Tamper Protection

  • Navigate to Sophos Central > [Client Tenant] > Global Settings > Tamper Protection.
  • Ensure Tamper Protection is Enabled (this should be on by default).
  • Record the tamper protection password (stored in Sophos Central, retrievable per-device).
  • Verify tamper protection status from endpoint:
  • # Check Sophos tamper protection status via registry
    

    Get-ItemProperty -Path "HKLM:\SOFTWARE\Sophos\SAVService\TamperProtection" -Name "Enabled" -ErrorAction SilentlyContinue

    Or check via Sophos CLI (if available)

    & "C:\Program Files\Sophos\Endpoint Defense\SEDcli.exe" -status

    3. Configure Centrally Managed Scan Exclusions

  • Navigate to Sophos Central > [Client Tenant] > Global Settings > Global Exclusions.
  • Add exclusions only for verified performance-impacting applications:
  • - Allowed exclusion types: Specific file paths, process names, or file extensions for known vendor requirements.

    - Example legitimate exclusions:

    - SQL Server data files: C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL\DATA\.mdf

    - Line-of-business app: C:\Program Files\VendorApp\engine.exe (process exclusion)

    - Prohibited exclusion patterns:

    - No wildcard exclusions for user profile directories (e.g., never exclude C:\Users\\Downloads\)

    - No blanket folder exclusions for C:\Temp\ or %APPDATA%\

    - No file extension exclusions for executable types (.exe, .dll, .ps1, .bat, .js)

  • Document each exclusion with:
  • - Reason for exclusion

    - Vendor KB article or support ticket reference

    - Review date (maximum 6 months)

    4. Configure Web Control

  • Navigate to Sophos Central > [Client Tenant] > Endpoint Protection > Policies > Web Control.
  • Create or edit the base policy:
  • - Block: Malicious sites (default), Phishing sites (default), Spam URLs, Anonymizer/proxy sites, Hacking sites

    - Block: Unrated/uncategorized websites

    - Warn: Sites with low reputation score

    - Allow: Business-critical categories as identified by client

  • Apply the policy to All Users and Devices in the client tenant.
  • 5. Configure Device Control (USB)

  • Navigate to Sophos Central > [Client Tenant] > Endpoint Protection > Policies > Device Control.
  • Create or edit the base policy:
  • - Removable Storage (USB drives): Block (or Read Only if the client requires USB read access)

    - Optical Drives (CD/DVD): Block (or Read Only)

    - Wireless Devices (Bluetooth file transfer): Block

    - Modems/Mobile broadband: Block

    - Exceptions: Add specific approved USB device IDs (e.g., hardware tokens, encrypted USB drives by serial number):

    - Navigate to Exceptions > Add Exception > Enter vendor ID + product ID or serial number.

    - Set to Allow with Full Access.

    Verification from endpoint:
    # Test USB block - insert a USB drive and check Event Viewer
    

    Get-WinEvent -LogName "Application" -FilterXPath "*[System[Provider[@Name='Sophos Device Control']]]" -MaxEvents 5 | Format-Table TimeCreated, Message -AutoSize

    Verification Checks

    Sophos agent deployed to all endpoints (compare Sophos Central device count vs RMM device count)
    Tamper protection enabled on all endpoints (check in Sophos Central > Devices > filter: Tamper Protection Off)
    No wildcard exclusions exist for user profile directories (C:\Users\*)
    All exclusions are documented with a reason, vendor reference, and review date
    Web control blocks malicious, phishing, and unrated sites (test: attempt to access Sophos test URLs from an endpoint)
    Device control blocks USB storage (test: insert USB drive, confirm block notification appears on endpoint)
    MDR integration active: verify in Sophos Central > Threat Analysis Center > MDR that the tenant is connected and analysts are monitoring
    Sophos services are running and healthy: Get-Service -Name "Sophos*" shows all services as Running

    Rollback

  • To temporarily disable web control: set the Web Control policy to Allow All (not recommended; document as exception).
  • To temporarily allow USB access: change Device Control policy to Allow for Removable Storage, or add the specific device as an exception.
  • To disable tamper protection for troubleshooting:
  • - Sophos Central > Devices > [Device] > Actions > Turn off Tamper Protection

    - This generates a one-time password valid for 4 hours.

  • To uninstall Sophos in emergency:
  •    # Must disable tamper protection first via Sophos Central

    & "C:\Program Files\Sophos\Sophos Endpoint Agent\SophosUninstall.exe" --quiet

  • Re-enable all protections within 4 hours and document the exception.

  • Microsoft Defender for Endpoint -- ASR Rules

    ISM Controls: ISM-0843, ISM-1656, ISM-1657

    Prerequisites

  • Microsoft 365 E5, E5 Security, or Defender for Endpoint Plan 2 license
  • Endpoints onboarded to Microsoft Defender for Endpoint (via Intune, GPO, or local script)
  • Microsoft Intune admin center access or Group Policy management
  • ASR rules should be tested in Audit Mode for a minimum of 14 days before switching to Block Mode
  • Step-by-Step Instructions

    1. Deploy ASR Rules via Intune

  • Navigate to Microsoft Intune admin center > Endpoint security > Attack surface reduction > Create policy.
  • Select Platform: Windows 10, Windows 11, and Windows Server > Profile: Attack surface reduction rules.
  • Configure the following ASR rules in Block mode (after audit period):
  • ASR RuleGUIDMode
    Block executable content from email client and webmailBE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550Block
    Block all Office applications from creating child processesD4F940AB-401B-4EFC-AADC-AD5F3C50688ABlock
    Block Office applications from creating executable content3B576869-A4EC-4529-8536-B80A7769E899Block
    Block Office applications from injecting code into other processes75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84Block
    Block JavaScript or VBScript from launching downloaded executable contentD3E037E1-3EB8-44C8-A917-57927947596DBlock
    Block execution of potentially obfuscated scripts5BEB7EFE-FD9A-4556-801D-275E5FFC04CCBlock
    Block Win32 API calls from Office macros92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7BBlock
    Block executable files from running unless they meet prevalence, age, or trusted list criterion01443614-CD74-433A-B99E-2ECDC07BFC25Block
    Block credential stealing from LSASS9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2Block
    Block untrusted and unsigned processes that run from USBB2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4Block
    Block process creations originating from PSExec and WMI commandsD1E49AAC-8F56-4280-B9BA-993A6D77406CBlock
    Use advanced protection against ransomwareC1DB55AB-C21A-4637-BB3F-A12568109D35Block
    Block Adobe Reader from creating child processes7674BA52-37EB-4A4F-A9A1-F0F9A1619A2CBlock
    Block persistence through WMI event subscriptionE6DB77E5-3DF2-4CF1-B95A-636979351E5BBlock
  • Exclusions (configure per-rule if needed):
  • - Exclude approved RMM tools (e.g., NinjaOne agent path) from the PSExec/WMI rule if they use WMI for management.

    - Exclude approved automation scripts from the obfuscated scripts rule if they trigger false positives.

    - Document every exclusion with justification.

  • Assign the policy to All Devices or a scoped device group.
  • 2. Deploy ASR Rules via GPO

  • Create GPO named ASR-Rules-Block:
  • - Computer Configuration > Policies > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Microsoft Defender Exploit Guard > Attack Surface Reduction

    - Configure Attack Surface Reduction rules: Enabled

    - Click Show and add each rule GUID with value 1 (Block) or 6 (Warn) or 2 (Audit):

    BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 = 1
    

    D4F940AB-401B-4EFC-AADC-AD5F3C50688A = 1

    3B576869-A4EC-4529-8536-B80A7769E899 = 1

    75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84 = 1

    D3E037E1-3EB8-44C8-A917-57927947596D = 1

    5BEB7EFE-FD9A-4556-801D-275E5FFC04CC = 1

    92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B = 1

    01443614-CD74-433A-B99E-2ECDC07BFC25 = 1

    9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2 = 1

    B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4 = 1

    D1E49AAC-8F56-4280-B9BA-993A6D77406C = 1

    C1DB55AB-C21A-4637-BB3F-A12568109D35 = 1

    7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C = 1

    E6DB77E5-3DF2-4CF1-B95A-636979351E5B = 1

    PowerShell / CLI Alternative:
    # Enable all ASR rules in Block mode
    

    $rules = @(

    "BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550", # Block executable content from email

    "D4F940AB-401B-4EFC-AADC-AD5F3C50688A", # Block Office child processes

    "3B576869-A4EC-4529-8536-B80A7769E899", # Block Office executable content creation

    "75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84", # Block Office code injection

    "D3E037E1-3EB8-44C8-A917-57927947596D", # Block JS/VBS launching executables

    "5BEB7EFE-FD9A-4556-801D-275E5FFC04CC", # Block obfuscated scripts

    "92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B", # Block Win32 API from Office macros

    "01443614-CD74-433A-B99E-2ECDC07BFC25", # Block low-prevalence executables

    "9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2", # Block LSASS credential stealing

    "B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4", # Block untrusted USB processes

    "D1E49AAC-8F56-4280-B9BA-993A6D77406C", # Block PSExec/WMI process creation

    "C1DB55AB-C21A-4637-BB3F-A12568109D35", # Advanced ransomware protection

    "7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C", # Block Adobe Reader child processes

    "E6DB77E5-3DF2-4CF1-B95A-636979351E5B" # Block WMI persistence

    )

    Set all rules to Block (1) -- use 2 for Audit during testing

    $actions = @(1,1,1,1,1,1,1,1,1,1,1,1,1,1)

    Set-MpPreference -AttackSurfaceReductionRules_Ids $rules -AttackSurfaceReductionRules_Actions $actions

    Verify ASR rules are applied

    Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids

    Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions

    Action values: 0=Disabled, 1=Block, 2=Audit, 6=Warn

    3. Monitor ASR Events

    # Query ASR audit/block events from Windows Event Log
    

    Event ID 1121 = ASR rule blocked, Event ID 1122 = ASR rule audited

    Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" -FilterXPath "*[System[EventID=1121 or EventID=1122]]" -MaxEvents 50 | Format-Table TimeCreated, Id, Message -AutoSize

    Query via Microsoft 365 Defender Advanced Hunting (in M365 Security portal)

    Navigate to: security.microsoft.com > Hunting > Advanced Hunting

    KQL query:

    DeviceEvents

    | where ActionType startswith "Asr"

    | where Timestamp > ago(7d)

    | summarize count() by ActionType, DeviceName

    | order by count_ desc

    4. Add ASR Exclusions (When Required)

    # Add per-rule exclusion (example: exclude RMM agent from PSExec/WMI rule)
    

    Add-MpPreference -AttackSurfaceReductionOnlyExclusions "C:\ProgramData\NinjaRMMAgent\ninjarmm-cli.exe"

    Verify exclusions

    Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionOnlyExclusions

    Intune Method:
  • In the ASR policy, scroll to Exclusions section.
  • Add file/folder paths that need exclusion.
  • Document the exclusion in the policy notes field.
  • Verification Checks

    All 14 ASR rules are in Block mode (verify with Get-MpPreference)
    No ASR rules are in Disabled (0) state unless documented as an exception
    ASR Event ID 1121 (block) events are appearing in Event Viewer for attempted violations
    Defender for Endpoint portal (security.microsoft.com) shows ASR rules as configured under Device configuration
    Exclusions are minimal and documented (check Get-MpPreference | Select -ExpandProperty AttackSurfaceReductionOnlyExclusions)
    No user-reported legitimate application breakage (review helpdesk tickets for the first 14 days after Block mode)
    Advanced Hunting query confirms ASR telemetry is flowing from all onboarded devices

    Rollback

  • To switch a specific rule to Audit mode for troubleshooting:
  •    # Switch LSASS rule to Audit (value 2) for investigation

    Set-MpPreference -AttackSurfaceReductionRules_Ids "9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2" -AttackSurfaceReductionRules_Actions 2

  • To disable a specific rule temporarily:
  •    Set-MpPreference -AttackSurfaceReductionRules_Ids "RULE-GUID-HERE" -AttackSurfaceReductionRules_Actions 0

  • If Intune-managed, edit the ASR policy and set the specific rule to Audit or Not configured.
  • Re-enable within 48 hours. Document the exception in ConnectWise Manage.

  • Application Control Policy Validation (Annual Review)

    ISM Controls: ISM-0843, ISM-1490

    Prerequisites

  • ThreatLocker portal access with Organization Admin role
  • Sophos Central access to review exclusion lists
  • Defender for Endpoint access to review ASR exclusions
  • Change management ticket created in ConnectWise Manage for the annual review (type: Scheduled Review)
  • Step-by-Step Instructions

    1. ThreatLocker Annual Ruleset Review

  • Navigate to ThreatLocker Portal > Policies > Application Control > [Client Org].
  • Export the full allowlist: Actions > Export Policies (CSV format).
  • Review each policy entry against the following criteria:
  • - Is the application still in use? Cross-reference with software inventory from NinjaOne or ConnectWise Automate.

    - Is the publisher certificate still valid? Check expiry dates on certificate-based rules.

    - Are there hash-only rules that could be upgraded to certificate rules? (reduces maintenance burden)

    - Are there overly broad path rules? (e.g., C:\Users\\ -- these should be tightened)

    - Are there entries for applications that have been decommissioned? Remove them.

  • Document findings in a review spreadsheet with columns: Policy Name, Type (cert/path/hash), Status (Keep/Remove/Modify), Justification.
  • Implement changes and have a second engineer verify.
  • 2. Sophos Exclusion Review

  • Navigate to Sophos Central > [Client Tenant] > Global Settings > Global Exclusions.
  • Review each exclusion:
  • - Is the exclusion still required? Contact the vendor or check KB articles for current requirements.

    - Is the exclusion scoped appropriately? Tighten if possible (e.g., change folder exclusion to process exclusion).

    - Are there any wildcard exclusions for user directories? Remove immediately unless there is exceptional documented justification with compensating controls.

  • Check Scanning Exclusions in each endpoint protection policy as well (per-policy exclusions may exist in addition to global ones).
  • 3. Defender ASR Exclusion Review

  • Navigate to Microsoft Intune admin center > Endpoint security > Attack surface reduction and open each ASR policy.
  • Review all exclusions in the policy.
  • Alternatively:
  •    # Review ASR exclusions across all managed devices (via M365 Defender Advanced Hunting)

    # DeviceEvents

    # | where ActionType == "AsrRuleExclusionApplied"

    # | where Timestamp > ago(90d)

    # | summarize count() by FileName, FolderPath

    # | order by count_ desc

  • Remove any exclusions that are no longer needed.
  • Ensure all remaining exclusions have documented justification.
  • 4. Document and Close Review

  • Update the review spreadsheet with all findings and actions taken.
  • Store the review document in the client's SharePoint site under IT Security > Annual Reviews.
  • Update the ConnectWise Manage ticket with the review summary and close.
  • Set a reminder for the next annual review (12 months from completion date).
  • Verification Checks

    ThreatLocker allowlist exported and reviewed (all entries have valid justification)
    Stale or decommissioned application policies removed from ThreatLocker
    Sophos global exclusions reviewed (no wildcard user directory exclusions)
    Sophos per-policy scanning exclusions reviewed
    Defender ASR exclusions reviewed (all have documented justification)
    Review findings documented in client SharePoint
    ConnectWise Manage review ticket closed with summary
    Next annual review date set (12 months)

    Rollback

  • If a removed policy causes application breakage, re-add the policy from the exported CSV backup.
  • In ThreatLocker, check the Denied Applications view to identify what was blocked and create a targeted allowlist entry.
  • For Sophos, re-add the exclusion temporarily while investigating the root cause with the vendor.

  • Master Verification Checklist

    ThreatLocker

    Agent deployed to all endpoints (portal count matches RMM count)
    Organization in Secured Mode (default-deny)
    Allowlist covers all approved business applications
    Ringfencing active for PowerShell/cmd (network share and internet access blocked)
    Ringfencing active for Office apps (child process spawning blocked)
    Elevation control configured with time-bound approvals (max 4 hours)
    Elevation requests generate email notifications to helpdesk
    All elevation events logged in Unified Audit

    Sophos MDR

    Agent deployed to all endpoints
    Tamper protection enabled on all devices
    No wildcard exclusions for user profile directories
    All exclusions documented with reason, vendor reference, and review date
    Web control blocking malicious, phishing, and unrated sites
    Device control blocking USB storage (or read-only per client policy)
    MDR integration active and analysts monitoring

    Defender for Endpoint ASR

    All 14 ASR rules in Block mode
    ASR telemetry flowing to M365 Defender portal
    ASR block events (Event ID 1121) appearing for attempted violations
    Exclusions minimal and documented
    No user-reported legitimate application breakage post-deployment

    Annual Review

    ThreatLocker allowlist reviewed and stale entries removed
    Sophos exclusions reviewed (global and per-policy)
    Defender ASR exclusions reviewed
    Review documented in client SharePoint
    Next review date scheduled

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Vulnerability Management

    Document ID: NET-SOP-VULN-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 4.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Scanner Deployment & Configuration
  • Credentialed Scan Configuration
  • Scan Scheduling
  • CVSS-to-Priority Mapping & Ticket Workflow
  • CISA KEV Cross-Reference Process
  • Remediation Workflow
  • Evidence Collection for Compliance Reporting
  • Master Verification Checklist
  • Document History

  • Scanner Deployment & Configuration

    ISM Controls: ISM-1808, ISM-1698

    Prerequisites

  • Tenable Nessus Professional or Tenable.io license, or ConnectSecure (formerly CyberCNS) portal access
  • Dedicated scan appliance or VM (minimum: 4 vCPU, 8 GB RAM, 100 GB disk)
  • Network access from the scanner to all target subnets (all TCP/UDP ports for authenticated scanning)
  • Firewall rules allowing scanner IP to target subnets with no port restrictions
  • Service account credentials for Windows (domain admin or local admin) and Linux (root or sudo) targets
  • ConnectWise Manage API keys for automated ticket creation (stored in Bitwarden)
  • Step-by-Step Instructions

    1. Deploy Tenable Nessus Scanner

  • Download Nessus from https://www.tenable.com/downloads/nessus.
  • Install on a dedicated VM (Windows Server or Ubuntu/Debian):
  • Windows Installation:
    # Silent install
    

    Start-Process -FilePath "Nessus-10.x.x-x64.msi" -ArgumentList "/qn ADDLOCAL=ALL" -Wait

    Start Nessus service

    Start-Service -Name "Tenable Nessus"

    Access web UI at https://localhost:8834

    Complete initial setup: register license, create admin account, download plugins

    Linux Installation:
    # Ubuntu/Debian
    

    sudo dpkg -i Nessus-10.x.x-ubuntu1404_amd64.deb

    sudo systemctl start nessusd

    sudo systemctl enable nessusd

    Access web UI at https://<scanner-ip>:8834

  • After installation, navigate to https://scanner-ip:8834 and complete setup:
  • - Register with activation code from Tenable license.

    - Wait for plugin compilation (can take 30-60 minutes on first run).

    - Navigate to Settings > Advanced and configure:

    - Max simultaneous hosts per scan: 30 (adjust based on network capacity)

    - Max simultaneous checks per host: 5

    - Network timeout: 10 seconds

    2. Deploy ConnectSecure Scanner

  • Navigate to ConnectSecure Portal > Deployment > Download Agent/Probe.
  • Deploy the ConnectSecure probe to the client network:
  • - Download the probe installer for the client environment.

    - Install on a dedicated VM or the same scanner appliance.

    PowerShell / CLI Alternative:
    # ConnectSecure probe installation (replace with actual download link from portal)
    

    $probeUrl = "https://deployment.connectsecure.com/probe/ConnectSecureProbe-Setup.exe"

    $installPath = "C:\Temp\CSProbeSetup.exe"

    New-Item -ItemType Directory -Path "C:\Temp" -Force | Out-Null

    Invoke-WebRequest -Uri $probeUrl -OutFile $installPath

    Start-Process -FilePath $installPath -ArgumentList "/S /COMPANY_ID=YOUR-COMPANY-ID /COMPANY_KEY=YOUR-KEY" -Wait

    Verify probe is running

    Get-Service -Name "ConnectSecure*" | Select-Object Name, Status

  • Verify the probe appears in ConnectSecure Portal > Settings > Probes and shows as Online.
  • Add target IP ranges:
  • - Navigate to ConnectSecure Portal > Assets > Scan Targets > Add Targets.

    - Add all client subnets (e.g., 10.0.0.0/24, 10.0.10.0/24, 192.168.1.0/24).

    3. Network Configuration

    Ensure the following firewall rules are in place:

    SourceDestinationPortsPurpose
    Scanner IPAll client subnetsTCP/1-65535, UDP/1-65535Authenticated scanning
    Scanner IPInternetTCP/443Plugin updates, cloud reporting
    Scanner IPDomain controllersTCP/389,636,445,135LDAP, SMB for credential auth
    Scanner IPAll endpointsTCP/135,445,5985-5986WMI, SMB, WinRM for credentialed scans
    Scanner IPLinux hostsTCP/22SSH for credentialed scans

    Verification Checks

    Scanner installed and web UI accessible
    Plugin database up to date (check last update timestamp in scanner settings)
    Scanner can reach all target subnets (run a host discovery scan to verify)
    Firewall rules allow scanner-to-target traffic on all required ports
    ConnectSecure probe shows as Online in portal (if applicable)

    Rollback

  • If the scanner causes network disruption, reduce Max simultaneous hosts to 10 and Max simultaneous checks per host to 2.
  • If scanning impacts production workloads, restrict scan windows to maintenance hours only (see Scan Scheduling section).
  • To decommission: stop the Nessus service, uninstall, and remove firewall rules.

  • Credentialed Scan Configuration

    ISM Controls: ISM-1698, ISM-1699

    Prerequisites

  • Dedicated service accounts created for vulnerability scanning (never use personal admin accounts)
  • Service accounts added to local Administrators group on targets (or Domain Admins for broad access)
  • Service account credentials stored in Bitwarden under the client organization
  • For Linux: SSH key-based authentication configured for the scan service account
  • Step-by-Step Instructions

    1. Create Windows Scan Service Account

    # Create AD service account for vulnerability scanning
    

    New-ADUser -Name "svc-vulnscan"

    -SamAccountName "svc-vulnscan"

    -UserPrincipalName "svc-vulnscan@contoso.local"

    -Path "OU=Service Accounts,DC=contoso,DC=local"

    -AccountPassword (ConvertTo-SecureString "GENERATE-STRONG-PASSWORD" -AsPlainText -Force)

    -Enabled $true

    -PasswordNeverExpires $true

    -CannotChangePassword $true

    -Description "Vulnerability scanner service account - Nessus/ConnectSecure"

    Add to local Administrators on all targets via GPO Restricted Groups

    OR add to Domain Admins (less preferred, broader than needed)

    Add-ADGroupMember -Identity "Domain Admins" -Members "svc-vulnscan"

    Preferred: Use GPO Restricted Groups for Least Privilege:
  • Create GPO named VulnScan-LocalAdmin:
  • - Computer Configuration > Policies > Windows Settings > Security Settings > Restricted Groups

    - Add group: Administrators

    - Members of this group: Add CONTOSO\svc-vulnscan

  • Link to Servers and Workstations OUs.
  • 2. Configure Windows Targets for Credentialed Scanning

    # Enable WinRM for credentialed scanning (if using WinRM-based scans)
    

    Enable-PSRemoting -Force

    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "SCANNER-IP" -Force

    Enable Remote Registry (required for Nessus credentialed scans)

    Set-Service -Name "RemoteRegistry" -StartupType Automatic

    Start-Service -Name "RemoteRegistry"

    Configure Windows Firewall for WMI (required for Nessus)

    These rules may already exist but ensure they are enabled

    Enable-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)"

    Enable-NetFirewallRule -DisplayGroup "File and Printer Sharing"

    For non-domain environments, disable UAC remote restrictions for local admin

    (Only if scan account is a local admin, not a domain admin)

    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "LocalAccountTokenFilterPolicy" -Value 1 -Type DWord

    3. Configure Nessus Credential Sets

  • Navigate to Nessus > Scans > [Scan Policy] > Credentials.
  • Add Windows credentials:
  • - Authentication method: Password

    - Username: CONTOSO\svc-vulnscan

    - Password: (retrieve from Bitwarden)

    - SMB Signing: Required

  • Add SSH credentials (for Linux targets):
  • - Authentication method: SSH key

    - Username: svc-vulnscan

    - Private key file: Upload the SSH private key

    - Elevate privileges with: sudo

  • Add SNMP credentials (for network devices):
  • - Community string: (retrieve from Bitwarden, per-client)

    - Version: SNMPv3 preferred (with auth and encryption)

    4. Configure ConnectSecure Credential Sets

  • Navigate to ConnectSecure Portal > Settings > Credentials > Add Credential.
  • Add Windows domain credentials:
  • - Type: Windows/Domain

    - Domain: contoso.local

    - Username: svc-vulnscan

    - Password: (retrieve from Bitwarden)

  • Add SSH credentials for Linux hosts.
  • Map credentials to scan target groups.
  • 5. Validate Credentialed Scanning

    Run a test scan against a single representative target and verify:

    # After scan completes, check for "Credentialed checks: yes" in scan results
    

    In Nessus: open scan results > click a host > look for Plugin 19506 "Nessus Scan Information"

    The output should contain:

    Credentialed checks : yes

    Patch management checks : (details)

    In ConnectSecure, check the scan results for the target and verify the asset shows full software inventory (only possible with authenticated scanning).

    Verification Checks

    Service account svc-vulnscan created and stored in Bitwarden
    Service account has local admin on all targets (verified by successful credentialed scan)
    Nessus scan results show "Credentialed checks: yes" (Plugin 19506) on all scanned hosts
    ConnectSecure scan results show full software inventory for scanned hosts
    Remote Registry service is running on Windows targets
    WMI and File and Printer Sharing firewall rules enabled on targets
    SSH key authentication working for Linux targets (test with manual SSH login)

    Rollback

  • To revoke scan access: remove svc-vulnscan from Administrators group or Domain Admins, and disable the account.
  • To disable Remote Registry: Set-Service -Name "RemoteRegistry" -StartupType Disabled; Stop-Service "RemoteRegistry".
  • If LocalAccountTokenFilterPolicy was set, revert: Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "LocalAccountTokenFilterPolicy" -Value 0.

  • Scan Scheduling

    ISM Controls: ISM-1699, ISM-1700

    Prerequisites

  • Scanner deployed and credentialed scanning verified
  • Maintenance windows confirmed with client (to avoid scanning during critical business hours)
  • ConnectWise Manage scheduled activity configured for scan oversight
  • Step-by-Step Instructions

    1. Weekly External Authenticated Scans

  • In Nessus > Scans > New Scan > Advanced Scan (or Tenable.io > Scans > Create Scan):
  • - Name: [ClientCode]-External-Weekly

    - Targets: Client's external IP addresses and hostnames (e.g., 203.0.113.10, mail.contoso.com, vpn.contoso.com)

    - Scanner: Select the external-facing scanner (or Tenable.io cloud scanner)

    - Policy:

    - Discovery > Host Discovery: Ping host, TCP scan (common ports + client-specific ports)

    - Assessment > General: Enable Thorough tests and Web application tests (for external web services)

    - Credentials: Add any external service credentials (web app logins, SMTP auth, etc.)

    - Schedule: Weekly, every Sunday at 02:00 AEST

    - Email Notifications: Send on completion to security@netier.com.au

  • In ConnectSecure (if used for external scans):
  • - Navigate to Scans > External Scans > Schedule.

    - Add external targets.

    - Schedule: Weekly, Sunday 02:00 AEST.

    2. Monthly Internal Authenticated Scans

  • In Nessus > Scans > New Scan > Advanced Scan:
  • - Name: [ClientCode]-Internal-Monthly

    - Targets: All internal subnets (e.g., 10.0.0.0/24, 10.0.10.0/24, 10.0.20.0/24)

    - Scanner: Internal scanner appliance

    - Policy:

    - Discovery > Host Discovery: Ping host, ARP (if on same subnet), TCP/UDP scan

    - Assessment > General: Enable Thorough tests

    - Assessment > Brute Force: Disabled (do not brute force client credentials)

    - Compliance: Enable CIS benchmarks for Windows Server 2022, Windows 11 if compliance scanning is required

    - Credentials: Windows domain credentials + SSH credentials (as configured above)

    - Schedule: Monthly, first Saturday at 20:00 AEST

    - Max scan duration: 24 hours (kill scan after this to avoid running into business hours)

    - Email Notifications: Send on completion to security@netier.com.au

  • In ConnectSecure:
  • - Navigate to Scans > Internal Scans > Schedule.

    - Add all internal target ranges.

    - Schedule: Monthly, 1st Saturday 20:00 AEST.

    3. Ad-Hoc Scans (Post-Patch / Emergency)

    For critical vulnerability verification or post-patch validation:

    # Nessus CLI - launch an ad-hoc scan (example using Nessus API)
    

    $nessusUrl = "https://scanner-ip:8834"

    $headers = @{ "X-ApiKeys" = "accessKey=YOUR_ACCESS_KEY;secretKey=YOUR_SECRET_KEY" }

    Get scan ID for the internal scan template

    $scans = Invoke-RestMethod -Uri "$nessusUrl/scans" -Headers $headers -Method Get

    $scanId = ($scans.scans | Where-Object { $_.name -eq "[ClientCode]-Internal-Monthly" }).id

    Launch the scan immediately

    Invoke-RestMethod -Uri "$nessusUrl/scans/$scanId/launch" -Headers $headers -Method Post

    Verification Checks

    Weekly external scan scheduled and running (check last run date/time in scanner console)
    Monthly internal scan scheduled and running (check last run date/time)
    Scan completion emails received by security@netier.com.au
    Scans complete within the maintenance window (no scans running during business hours)
    All scheduled scans show "Credentialed checks: yes" on target hosts
    Scan history shows consistent results (no large fluctuations in host count indicating scanner issues)

    Rollback

  • To disable a scheduled scan: navigate to the scan in Nessus/ConnectSecure and set schedule to Disabled or Manual.
  • To stop a running scan that is impacting production: click Stop in the scanner console or use the API:
  •    Invoke-RestMethod -Uri "$nessusUrl/scans/$scanId/stop" -Headers $headers -Method Post

  • Document the reason for scan interruption in ConnectWise Manage.

  • CVSS-to-Priority Mapping & Ticket Workflow

    ISM Controls: ISM-1700, ISM-1876

    Prerequisites

  • ConnectWise Manage configured with vulnerability ticket board (e.g., Security - Vulnerabilities)
  • ConnectWise Manage workflow rule WF-006 configured for automated priority assignment
  • API integration between scanner (Nessus/ConnectSecure) and ConnectWise Manage established
  • Step-by-Step Instructions

    1. Priority Mapping Table

    All vulnerabilities discovered by scanning are mapped to ConnectWise Manage ticket priorities using the following CVSS v3.1 base score ranges:

    CVSS ScoreSeverityCW PrioritySLA (Remediation)Description
    9.0 - 10.0CriticalP1 - Critical48 hoursActively exploitable, remote code execution, complete system compromise
    7.0 - 8.9HighP2 - High14 daysSignificant risk, privilege escalation, data exposure
    4.0 - 6.9MediumP3 - Medium30 daysModerate risk, requires user interaction or local access
    0.1 - 3.9LowP4 - Low90 daysInformational or minimal risk

    2. Configure ConnectWise Manage Workflow Rule (WF-006)

  • Navigate to ConnectWise Manage > System > Setup Tables > Workflow Rules.
  • Create or edit workflow rule WF-006 - Vulnerability Priority Assignment:
  • - Trigger: Ticket created on board Security - Vulnerabilities

    - Conditions and Actions:

    - If ticket summary contains [CRITICAL] or CVSS:9. or CVSS:10.: Set Priority to P1 - Critical, set SLA to 48 hours.

    - If ticket summary contains [HIGH] or CVSS:7. or CVSS:8.: Set Priority to P2 - High, set SLA to 14 days.

    - If ticket summary contains [MEDIUM] or CVSS:4. or CVSS:5. or CVSS:6.: Set Priority to P3 - Medium, set SLA to 30 days.

    - If ticket summary contains [LOW] or CVSS:0. or CVSS:1. or CVSS:2. or CVSS:3.: Set Priority to P4 - Low, set SLA to 90 days.

    - Additional Action: Send email notification to security@netier.com.au for all P1 tickets.

    3. Configure Automated Ticket Creation

    ConnectSecure to ConnectWise Integration:
  • Navigate to ConnectSecure Portal > Settings > Integrations > ConnectWise Manage.
  • Configure:
  • - API URL: https://api-na.myconnectwise.net/v4_6_release/apis/3.0

    - Company ID: (Netier's CW company ID)

    - Public Key / Private Key: (retrieve from Bitwarden: "ConnectWise Manage API - ConnectSecure")

    - Board: Security - Vulnerabilities

    - Ticket Prefix: [ClientCode]-VULN

    - Auto-create tickets: Enabled for CVSS >= 4.0 (suppress P4/Low to avoid ticket flood; review low-severity in monthly reports)

    - Deduplication: Enabled (do not create duplicate tickets for the same CVE on the same host)

    Nessus to ConnectWise Integration (via API script):
    # PowerShell script to export Nessus scan results and create CW tickets
    

    Run after each scheduled scan completes

    param(

    [string]$NessusUrl = "https://scanner-ip:8834",

    [string]$ScanId,

    [string]$CWApiUrl = "https://api-na.myconnectwise.net/v4_6_release/apis/3.0",

    [string]$CWCompanyId = "netier",

    [float]$MinCVSS = 4.0

    )

    Get scan results from Nessus API

    $headers = @{ "X-ApiKeys" = "accessKey=$env:NESSUS_ACCESS_KEY;secretKey=$env:NESSUS_SECRET_KEY" }

    $results = Invoke-RestMethod -Uri "$NessusUrl/scans/$ScanId" -Headers $headers -Method Get

    foreach ($hostEntry in $results.hosts) {

    $hostDetails = Invoke-RestMethod -Uri "$NessusUrl/scans/$ScanId/hosts/$($hostEntry.host_id)" -Headers $headers

    foreach ($vuln in $hostDetails.vulnerabilities) {

    if ($vuln.severity -ge 2) { # Medium and above

    $pluginDetails = Invoke-RestMethod -Uri "$NessusUrl/scans/$ScanId/hosts/$($hostEntry.host_id)/plugins/$($vuln.plugin_id)" -Headers $headers

    $cvss = $pluginDetails.info.plugindescription.pluginattributes.risk_information.cvss3_base_score

    if ([float]$cvss -ge $MinCVSS) {

    $severity = if ([float]$cvss -ge 9.0) { "[CRITICAL]" }

    elseif ([float]$cvss -ge 7.0) { "[HIGH]" }

    elseif ([float]$cvss -ge 4.0) { "[MEDIUM]" }

    else { "[LOW]" }

    $cveList = $pluginDetails.info.plugindescription.pluginattributes.cve -join ", "

    $solution = $pluginDetails.info.plugindescription.pluginattributes.solution

    # Create ConnectWise ticket body

    $ticketBody = @{

    summary = "$severity $($vuln.plugin_name) on $($hostEntry.hostname) (CVSS:$cvss)"

    board = @{ name = "Security - Vulnerabilities" }

    company = @{ identifier = $CWCompanyId }

    initialDescription = @"

    Vulnerability: $($vuln.plugin_name)

    CVE: $cveList

    Host: $($hostEntry.hostname)

    CVSS v3.1 Base Score: $cvss

    Nessus Plugin ID: $($vuln.plugin_id)

    Solution:

    $solution

    Detected by: Nessus scheduled scan

    Scan Date: $(Get-Date -Format 'yyyy-MM-dd HH:mm')

    "@

    } | ConvertTo-Json -Depth 4

    # POST to ConnectWise Manage API

    $cwAuthString = "$($CWCompanyId)+$env:CW_PUBLIC_KEY:$env:CW_PRIVATE_KEY"

    $cwAuthBytes = [System.Text.Encoding]::ASCII.GetBytes($cwAuthString)

    $cwAuthBase64 = [System.Convert]::ToBase64String($cwAuthBytes)

    $cwHeaders = @{

    "Authorization" = "Basic $cwAuthBase64"

    "Content-Type" = "application/json"

    "clientId" = $env:CW_CLIENT_ID

    }

    try {

    Invoke-RestMethod -Uri "$CWApiUrl/service/tickets" -Method Post -Body $ticketBody -Headers $cwHeaders

    Write-Host "Ticket created: $severity $($vuln.plugin_name) on $($hostEntry.hostname)"

    } catch {

    Write-Warning "Failed to create ticket for $($vuln.plugin_name) on $($hostEntry.hostname): $_"

    }

    }

    }

    }

    }

    Verification Checks

    CVSS-to-priority mapping matches the table above (P1=48h, P2=14d, P3=30d, P4=90d)
    ConnectWise Manage workflow rule WF-006 is active and correctly assigning priorities
    Automated ticket creation is working (verify by checking tickets after the latest scan)
    P1 tickets trigger email notification to security@netier.com.au
    Deduplication is working (no duplicate tickets for the same CVE on the same host)
    Tickets below CVSS 4.0 are suppressed from auto-creation (reviewed in monthly reports instead)

    Rollback

  • To disable automated ticket creation: toggle off auto-create in ConnectSecure integration settings or stop the Nessus-to-CW script.
  • To adjust priority mapping: edit WF-006 conditions in ConnectWise Manage Setup Tables.
  • If ticket flood occurs: temporarily disable auto-creation, bulk-close false positive tickets, and add scanner-side filters to exclude informational plugins.

  • CISA KEV Cross-Reference Process

    ISM Controls: ISM-1876, ISM-1700

    Prerequisites

  • Access to CISA Known Exploited Vulnerabilities catalog (https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
  • KEV JSON feed URL: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
  • ConnectWise Manage access to escalate tickets
  • Step-by-Step Instructions

    1. Automated KEV Cross-Reference

    After each vulnerability scan completes, cross-reference discovered CVEs against the CISA KEV catalog:

    # Download current CISA KEV catalog
    

    $kevUrl = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"

    $kevData = Invoke-RestMethod -Uri $kevUrl -Method Get

    $kevCVEs = $kevData.vulnerabilities | ForEach-Object { $_.cveID }

    Write-Host "CISA KEV catalog loaded: $($kevCVEs.Count) known exploited vulnerabilities"

    Import CVEs from latest scan export (CSV from Nessus or ConnectSecure)

    $scanExportPath = "C:\VulnScans\Latest\scan_results.csv"

    $scanResults = Import-Csv -Path $scanExportPath

    $scanCVEs = $scanResults | Where-Object { $_.CVE -ne "" } | Select-Object -ExpandProperty CVE -Unique

    Cross-reference

    $kevMatches = $scanCVEs | Where-Object { $_ -in $kevCVEs }

    if ($kevMatches.Count -gt 0) {

    Write-Host "n=== ALERT: $($kevMatches.Count) CISA KEV vulnerabilities found ===" -ForegroundColor Red

    foreach ($cve in $kevMatches) {

    $kevDetail = $kevData.vulnerabilities | Where-Object { $_.cveID -eq $cve }

    Write-Host "n CVE: $cve" -ForegroundColor Yellow

    Write-Host " Vulnerability: $($kevDetail.vulnerabilityName)"

    Write-Host " Vendor/Product: $($kevDetail.vendorProject) / $($kevDetail.product)"

    Write-Host " CISA Due Date: $($kevDetail.dueDate)"

    Write-Host " Required Action: $($kevDetail.requiredAction)"

    Write-Host " >>> AUTO-ESCALATING TO P1 <<<" -ForegroundColor Red

    # Find and escalate matching CW tickets

    # (integrate with CW API to update existing tickets to P1)

    }

    # Export KEV matches to log

    $logPath = "C:\VulnScans\Logs\KEV-Matches-$(Get-Date -Format 'yyyy-MM-dd').csv"

    $kevMatches | ForEach-Object {

    $detail = $kevData.vulnerabilities | Where-Object { $_.cveID -eq $_ }

    [PSCustomObject]@{

    CVE = $_

    Vulnerability = $detail.vulnerabilityName

    VendorProduct = "$($detail.vendorProject) / $($detail.product)"

    CISADueDate = $detail.dueDate

    RequiredAction = $detail.requiredAction

    DetectedDate = Get-Date -Format 'yyyy-MM-dd'

    }

    } | Export-Csv -Path $logPath -NoTypeInformation

    Write-Host "nKEV match log saved to: $logPath"

    } else {

    Write-Host "nNo CISA KEV matches found in scan results." -ForegroundColor Green

    }

    2. Auto-Escalation to P1

    When a CVE matches the CISA KEV catalog, regardless of its original CVSS score:

  • If ticket already exists: Update the ticket priority to P1 - Critical and add a note:
  •    CISA KEV ESCALATION: This vulnerability (CVE-XXXX-XXXX) is listed in the CISA Known Exploited

    Vulnerabilities catalog. Per SOP NET-SOP-VULN-001, this has been auto-escalated to P1 with a

    48-hour remediation SLA. Original CVSS score: X.X.

    Required Action: [from KEV catalog]

    CISA Due Date: [from KEV catalog]

  • If no ticket exists: Create a new P1 ticket on the Security - Vulnerabilities board with the KEV details.
  • Notify the security team: Send an immediate email/Teams notification to security@netier.com.au with KEV match details.
  • # Send KEV alert email via SMTP
    

    $smtpParams = @{

    From = "vulnscan@netier.com.au"

    To = "security@netier.com.au"

    Subject = "URGENT: CISA KEV Vulnerability Detected - $($kevMatches.Count) match(es)"

    Body = "The following CISA KEV vulnerabilities were detected in the latest scan for [ClientCode]:nn$($kevMatches -join "n")nnImmediate P1 remediation required per SOP NET-SOP-VULN-001."

    SmtpServer = "smtp.netier.com.au"

    Port = 587

    UseSsl = $true

    Credential = $smtpCredential

    }

    Send-MailMessage @smtpParams

    3. Weekly KEV Catalog Sync

    Schedule a Windows Task Scheduler job to download the latest KEV catalog and re-check all open vulnerability tickets:

    # Create scheduled task for weekly KEV sync
    

    Script location: C:\Scripts\Invoke-KEVCrossReference.ps1

    $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\Invoke-KEVCrossReference.ps1"

    $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At "06:00"

    $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd

    $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest

    Register-ScheduledTask -TaskName "KEV-Weekly-CrossReference" -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Description "Weekly CISA KEV cross-reference against open vulnerability tickets"

    Verification Checks

    CISA KEV catalog is being downloaded and parsed correctly (test script manually)
    KEV cross-reference runs after every scan completion
    Any CVE found in KEV is auto-escalated to P1 regardless of CVSS score
    P1 escalation note includes KEV details (required action, CISA due date)
    Security team receives immediate notification for KEV matches
    Weekly KEV sync scheduled task is running (check Task Scheduler or logs)
    KEV match logs are retained in C:\VulnScans\Logs\ for audit trail

    Rollback

  • If KEV auto-escalation creates false urgency (e.g., KEV entry is for a product not in the client environment), manually downgrade the ticket with a note explaining the non-applicability.
  • The KEV cross-reference script is advisory; it does not modify scan configurations. To disable, stop the scheduled task:
  •    Disable-ScheduledTask -TaskName "KEV-Weekly-CrossReference"


    Remediation Workflow

    ISM Controls: ISM-1700, ISM-1876

    Prerequisites

  • Vulnerability scan completed and tickets created in ConnectWise Manage
  • Access to patching tools (NinjaOne, WSUS, Intune, or manual)
  • Change management approval for critical patches (P1/P2)
  • Step-by-Step Instructions

    1. Workflow Overview

    SCAN --> TICKET CREATED (auto) --> ASSIGN TECHNICIAN --> REMEDIATE --> RE-SCAN --> CONFIRM FIXED --> CLOSE TICKET
    

    Detailed workflow:

    StepActionOwnerSLA
    1Scan completes, tickets auto-createdScanner/AutomationImmediate
    2Triage: validate vulnerability, confirm exploitabilitySecurity Engineer4 hours (P1), 1 day (P2-P4)
    3Assign to technician with remediation instructionsSecurity EngineerSame as triage
    4Implement remediation (patch, config change, mitigation)Assigned TechnicianPer priority SLA
    5Request re-scan of affected host(s)Assigned TechnicianAfter remediation
    6Re-scan confirms vulnerability is resolvedScannerWithin 24 hours of request
    7Close ticket with evidenceSecurity EngineerAfter confirmation

    2. Triage Process

    For each new vulnerability ticket:

  • Validate the finding: Check if the vulnerability is a true positive.
  • - Review the Nessus/ConnectSecure plugin output for the specific host.

    - Check if the vulnerable software version matches what is installed (credentialed scan confirmation).

    - If false positive: add note to ticket with justification, set status to Closed - False Positive, and add the plugin to the scanner's false positive suppression list.

  • Assess exploitability:
  • - Is the vulnerable service exposed externally? (If yes, treat as higher urgency)

    - Is there a public exploit available? (Check Exploit-DB, Metasploit modules)

    - Is it in the CISA KEV catalog? (If yes, auto-P1 per above section)

  • Determine remediation path:
  • - Patch available: Schedule patching via NinjaOne or WSUS.

    - No patch available: Implement compensating controls (e.g., disable service, restrict network access, apply WAF rule).

    - Configuration issue: Implement hardening per CIS benchmark or vendor guidance.

    3. Remediation Implementation

    Patching via NinjaOne:
  • Navigate to NinjaOne > Dashboard > Patching.
  • Identify the KB/update that addresses the CVE.
  • Create a patch policy or ad-hoc patch task:
  • - NinjaOne > Administration > Policies > [Client Policy] > Patching > Approve the specific KB.

    - Or: NinjaOne > Devices > [Device] > Patching > Install the specific update.

    Patching via PowerShell (direct):
    # Install specific Windows update on a remote server
    

    Invoke-Command -ComputerName "SERVER01" -ScriptBlock {

    # Use PSWindowsUpdate module for simplified patch management

    Install-Module -Name PSWindowsUpdate -Force -Scope AllUsers

    Import-Module PSWindowsUpdate

    # Search for specific KB

    $update = Get-WindowsUpdate -KBArticleID "KB5034441"

    if ($update) {

    Write-Host "Installing $($update.Title)..."

    Install-WindowsUpdate -KBArticleID "KB5034441" -AcceptAll -AutoReboot -Verbose

    } else {

    Write-Host "KB5034441 not applicable or already installed."

    }

    }

    Configuration Remediation Examples:
    # Example 1: Disable weak TLS versions (TLS 1.0 / 1.1)
    

    $protocols = @("TLS 1.0", "TLS 1.1")

    foreach ($protocol in $protocols) {

    $serverPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$protocol\Server"

    $clientPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$protocol\Client"

    New-Item -Path $serverPath -Force | Out-Null

    Set-ItemProperty -Path $serverPath -Name "Enabled" -Value 0 -Type DWord

    Set-ItemProperty -Path $serverPath -Name "DisabledByDefault" -Value 1 -Type DWord

    New-Item -Path $clientPath -Force | Out-Null

    Set-ItemProperty -Path $clientPath -Name "Enabled" -Value 0 -Type DWord

    Set-ItemProperty -Path $clientPath -Name "DisabledByDefault" -Value 1 -Type DWord

    }

    Write-Host "TLS 1.0 and 1.1 disabled. Reboot required."

    Example 2: Disable weak cipher suites

    Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_128_CBC_SHA"

    Disable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_256_CBC_SHA"

    Disable-TlsCipherSuite -Name "TLS_RSA_WITH_3DES_EDE_CBC_SHA"

    Verify active TLS versions and cipher suites

    [Net.ServicePointManager]::SecurityProtocol

    Get-TlsCipherSuite | Select-Object Name, Protocols | Format-Table -AutoSize

    # Example 3: Remediate open SMB null session
    

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "RestrictNullSessAccess" -Value 1

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" -Name "RestrictAnonymous" -Value 1

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" -Name "RestrictAnonymousSAM" -Value 1

    4. Re-Scan and Confirmation

    After remediation is applied:

  • Request a targeted re-scan of the affected host(s):
  • - In Nessus: create an ad-hoc scan targeting only the remediated host(s) with the same credentials.

    - In ConnectSecure: trigger a manual scan for the specific asset from Assets > [Host] > Scan Now.

  • After re-scan completes, verify the vulnerability no longer appears:
  • - Open the re-scan results and confirm the specific plugin/CVE is absent.

    - If the vulnerability persists, investigate: Was the patch applied correctly? Does it require a reboot? Is there a different instance of the vulnerable software?

  • Update the ConnectWise Manage ticket:
  • - Add the re-scan results as evidence (screenshot or exported PDF).

    - Add internal note with: remediation action taken, date applied, re-scan date, and confirmation of resolution.

    - Set ticket status to Closed - Resolved.

    # Quick validation: check if a specific KB is installed
    

    Get-HotFix -Id "KB5034441" -ComputerName "SERVER01" -ErrorAction SilentlyContinue

    If no result, the patch is NOT installed

    Validate TLS configuration post-remediation

    Invoke-Command -ComputerName "SERVER01" -ScriptBlock {

    $tls10 = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -ErrorAction SilentlyContinue

    $tls11 = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -ErrorAction SilentlyContinue

    Write-Host "TLS 1.0 Enabled: $($tls10.Enabled) (should be 0)"

    Write-Host "TLS 1.1 Enabled: $($tls11.Enabled) (should be 0)"

    }

    Verification Checks

    All P1 tickets remediated within 48 hours
    All P2 tickets remediated within 14 days
    All P3 tickets remediated within 30 days
    All P4 tickets remediated within 90 days
    Re-scan confirms vulnerability is resolved before ticket closure
    Ticket closure includes evidence (re-scan results attached)
    No open vulnerability tickets past their SLA deadline without documented exception

    Rollback

  • If a patch causes system instability, uninstall the patch:
  •    # Uninstall specific Windows update

    wusa /uninstall /kb:5034441 /quiet /norestart

    # Or via PowerShell

    Remove-WindowsUpdate -KBArticleID "KB5034441" -NoRestart

  • Document the rollback in the ConnectWise Manage ticket as a remediation exception.
  • Implement a compensating control (e.g., network isolation, WAF rule, host firewall restriction) until a stable patch is available.
  • Re-scan to confirm the compensating control reduces risk exposure (the CVE may still appear, but note the mitigation in the ticket).

  • Evidence Collection for Compliance Reporting

    ISM Controls: ISM-1808, ISM-1698

    Prerequisites

  • Access to scanner consoles (Nessus, ConnectSecure)
  • ConnectWise Manage reporting access
  • Client SharePoint site for evidence storage
  • Compliance reporting templates (provided by Netier compliance team or client)
  • Step-by-Step Instructions

    1. Monthly Vulnerability Report Generation

    After the monthly internal scan completes:

  • Export Nessus Executive Report:
  • - Navigate to Nessus > Scans > [Monthly Scan] > Report.

    - Export as PDF with format: Executive Summary.

    - This includes: total vulnerabilities by severity, trend comparison, top 10 vulnerabilities, and remediation progress.

  • Export ConnectSecure Report:
  • - Navigate to ConnectSecure Portal > Reports > Vulnerability Report.

    - Select the client organization and the most recent scan.

    - Export as PDF.

  • Generate ConnectWise Manage Ticket Report:
  • - Navigate to ConnectWise Manage > Reports > Service Board Report.

    - Filter: Board = Security - Vulnerabilities, Date range = last 30 days.

    - Include: Ticket ID, Summary, Priority, Status, Created Date, Closed Date, SLA Compliance.

    - Export as PDF or Excel.

    2. Quarterly Compliance Evidence Pack

    Compile the following evidence for quarterly compliance reviews:

    Evidence ItemSourceFormat
    Scan coverage report (% of assets scanned)Scanner consolePDF
    Vulnerability trend report (last 3 months)Scanner consolePDF
    Remediation SLA compliance reportConnectWise ManagePDF/Excel
    CISA KEV cross-reference logScript output logsText/PDF
    False positive documentationConnectWise Manage ticketsPDF
    Scan configuration audit (credentialed scan proof)Plugin 19506 outputScreenshot
    Patch compliance reportNinjaOne / IntunePDF

    3. Store Evidence

  • Upload all evidence documents to the client SharePoint site:
  • - Path: [Client SharePoint] > Shared Documents > IT Security > Vulnerability Management > [YYYY-QX]

    - Example: Contoso SharePoint > IT Security > Vulnerability Management > 2026-Q1

  • Name files consistently:
  • - [ClientCode]_VulnScan_External_[YYYY-MM-DD].pdf

    - [ClientCode]_VulnScan_Internal_[YYYY-MM-DD].pdf

    - [ClientCode]_Remediation_SLA_Report_[YYYY-QX].pdf

    - [ClientCode]_KEV_CrossRef_Log_[YYYY-MM-DD].txt

  • Update the compliance tracker spreadsheet with scan dates, finding counts, and remediation status.
  • 4. Annual Vulnerability Management Review

    Once per year (aligned with the annual compliance cycle):

  • Review all vulnerability management metrics:
  • - Total vulnerabilities discovered vs. remediated

    - Average time-to-remediate by priority

    - SLA compliance rate (target: 95%+)

    - Number of CISA KEV matches and remediation times

    - Recurring vulnerabilities (same CVE appearing in multiple scans)

  • Identify process improvements:
  • - Are scan schedules adequate?

    - Are credentials working for all targets?

    - Are any systems consistently unscanned?

    - Is the CVSS-to-priority mapping appropriate?

  • Document findings and recommendations in the annual security review report.
  • Store in SharePoint: [Client SharePoint] > IT Security > Annual Reviews > [YYYY]
  • Verification Checks

    Monthly vulnerability reports generated and stored in client SharePoint
    Quarterly compliance evidence packs compiled with all required documents
    File naming follows the standard convention
    Scan coverage report shows 100% of in-scope assets scanned (or exceptions documented)
    Remediation SLA compliance rate is tracked and reported
    CISA KEV cross-reference logs are retained for audit
    Annual review completed with metrics and improvement recommendations

    Rollback

  • Evidence collection is a reporting function with no system impact. No rollback needed.
  • If reports contain sensitive vulnerability details, ensure they are stored with appropriate access controls (client SharePoint permissions set to Security team only).

  • Master Verification Checklist

    Scanner Deployment

    Nessus/ConnectSecure scanner installed and accessible
    Plugin database up to date (last update within 24 hours)
    Scanner can reach all target subnets
    Firewall rules configured for scanner-to-target access

    Credentialed Scanning

    Service account svc-vulnscan created and stored in Bitwarden
    Service account has local admin on all targets
    Credentialed checks confirmed (Plugin 19506 shows "yes")
    Remote Registry and WMI firewall rules enabled on Windows targets
    SSH key authentication working for Linux targets

    Scan Scheduling

    Weekly external scans scheduled (Sunday 02:00 AEST)
    Monthly internal scans scheduled (1st Saturday 20:00 AEST)
    Scan completion notifications configured
    Scans complete within maintenance windows

    CVSS-to-Priority Mapping

    P1 = CVSS 9.0-10.0 / 48-hour SLA
    P2 = CVSS 7.0-8.9 / 14-day SLA
    P3 = CVSS 4.0-6.9 / 30-day SLA
    P4 = CVSS 0.1-3.9 / 90-day SLA
    ConnectWise WF-006 workflow rule active
    Automated ticket creation working with deduplication

    CISA KEV

    KEV catalog downloaded and parsed correctly
    KEV cross-reference runs after every scan
    KEV matches auto-escalated to P1
    Weekly KEV sync scheduled task running
    Security team notified immediately on KEV matches

    Remediation Workflow

    Triage process followed (validate, assess, determine path)
    Remediation applied within SLA per priority
    Re-scan confirms vulnerability resolved before ticket closure
    Ticket closure includes re-scan evidence
    No overdue tickets without documented exceptions

    Evidence & Reporting

    Monthly vulnerability reports generated
    Quarterly compliance evidence packs compiled
    Evidence stored in client SharePoint with correct naming
    Annual review completed with metrics and recommendations
    SLA compliance rate tracked (target: 95%+)

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Security Awareness & Training

    Document ID: NET-SOP-SAT-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 5.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • uSecure Platform Setup & Client Tenant Onboarding
  • Baseline Security Assessment
  • Monthly Automated Phishing Simulation Campaigns
  • Quarterly Core Training Modules
  • Auto-Enrollment Remedial Training & ConnectWise Integration
  • CyberCred Security Champions Program
  • Reporting & Compliance Evidence Extraction
  • Master Verification Checklist
  • Document History

  • 1. uSecure Platform Setup & Client Tenant Onboarding

    ISM Controls: ISM-0264 (Security Awareness Training), ISM-1784 (Ongoing Awareness)

    Prerequisites

  • Active Netier partner account on uSecure (https://app.usecure.io)
  • Client tenant licence provisioned (confirm licence count with Netier Licensing team)
  • Client primary contact name, email, and job title
  • Client Azure AD / Entra ID tenant details for directory sync (or CSV user list if no directory)
  • ConnectWise Manage company record created for the client
  • Client agreement covering security awareness training signed and filed in ConnectWise
  • Step-by-Step Instructions

  • Log in to uSecure Partner Portal at https://app.usecure.io using Netier partner credentials.
  • Navigate to Admin > Companies > + Add Company.
  • Enter the client company name exactly as it appears in ConnectWise Manage.
  • Under Company Settings > Licence, set the licence count to match the number of in-scope users per the client agreement.
  • Configure directory sync:
  • - Navigate to Company > Settings > Directory Sync.

    - Select Microsoft 365 / Azure AD.

    - Click Authorise and sign in with the client's Global Admin or a delegated admin account with User.Read.All and Directory.Read.All Graph permissions.

    - Map the required attributes: Display Name, Email, Department, Job Title.

    - Set sync frequency to Daily at 02:00 AEST.

    - Click Save & Test Sync. Verify the user count matches expectations.

  • If the client does not use Azure AD, import users via CSV:
  • - Navigate to Company > Users > Import.

    - Download the CSV template and populate with: First Name, Last Name, Email, Department, Job Title.

    - Upload the CSV and confirm the import preview.

  • Configure notification settings:
  • - Navigate to Company > Settings > Notifications.

    - Set the sender display name to the client's IT contact or IT Security .

    - Set the reply-to address to the Netier service desk: support@netier.com.au.

    - Enable notification types: Course Assignment, Course Reminder (3-day and 7-day), Simulation Sent, Policy Acknowledgement Due.

  • Under Company > Settings > Branding, upload the client's logo and set brand colours to match their corporate identity.
  • Enable the uSecure Outlook Add-in for phishing report button:
  • - Navigate to Company > Settings > Phishing Report Button.

    - Copy the add-in manifest URL.

    - In the Microsoft 365 Admin Centre (https://admin.microsoft.com) for the client tenant, go to Settings > Integrated apps > Upload custom apps.

    - Paste the manifest URL and deploy to All Users or a targeted security group.

  • Verify the deployment by sending a test email to a Netier engineer's mailbox in the client tenant and confirming the "Report Phishing" button appears in Outlook.
  • Verification Checks

    Client company created in uSecure with correct name
    Licence count matches agreement
    Directory sync connected and returning correct user count
    Notification sender name and reply-to configured
    Client branding (logo and colours) applied
    Outlook phishing report button add-in deployed and functional
    Test sync completed without errors

    Rollback

  • If directory sync pulls incorrect users, navigate to Company > Settings > Directory Sync and disconnect the integration. Manually remove any incorrectly imported users under Company > Users.
  • If the Outlook add-in causes issues, remove it from Microsoft 365 Admin Centre > Integrated apps, select the uSecure add-in, and click Remove.
  • If the entire tenant needs to be removed, navigate to Admin > Companies, select the client, and click Archive Company. Do not permanently delete without Netier Security Lead approval.

  • 2. Baseline Security Assessment

    ISM Controls: ISM-0264 (Security Awareness Training)

    Prerequisites

  • Client tenant fully onboarded in uSecure with all users imported
  • User directory sync verified (or CSV import confirmed)
  • Client onboarding kickoff date confirmed (assessment must be assigned within Week 1)
  • Step-by-Step Instructions

  • In the uSecure Partner Portal, navigate to the client company.
  • Go to Assess > Baseline Assessment.
  • Select uRisk Baseline Assessment (the default Netier template covers: phishing recognition, password hygiene, data handling, social engineering basics, physical security).
  • Under Assignment Settings:
  • - Target: All Users (or the specific security group if a phased rollout was agreed).

    - Start Date: the client's onboarding kickoff date (must be within Week 1).

    - Deadline: 10 business days from start date.

    - Reminders: Enable at Day 3 and Day 7.

  • Click Schedule Assessment.
  • Monitor completion rates:
  • - Navigate to Assess > Reports > Baseline.

    - Check daily during the assessment window.

    - If completion is below 50% at Day 5, escalate to the client primary contact via email requesting they send an internal reminder.

  • Once the deadline passes, export the baseline results:
  • - Navigate to Assess > Reports > Baseline > Export.

    - Download as PDF and CSV.

    - Save the PDF to the client's compliance folder in SharePoint: Clients/{ClientName}/Compliance/Security Awareness/Baseline Assessment - {YYYY-MM}.pdf.

  • Review the baseline report with the client in the next scheduled service review meeting. Identify the three lowest-scoring categories to prioritise in the first quarter's training plan.
  • Verification Checks

    Baseline assessment assigned within Week 1 of client onboarding
    Assessment uses the Netier standard uRisk template
    Deadline set to 10 business days
    Reminders enabled at Day 3 and Day 7
    Completion rate monitored during assessment window
    Results exported and saved to client SharePoint compliance folder
    Lowest-scoring categories documented for training plan prioritisation

    Rollback

  • If the assessment was assigned to the wrong user group, navigate to Assess > Baseline Assessment, cancel the active assessment, correct the target group, and reschedule.
  • If users report they cannot access the assessment, verify their email addresses in Company > Users and check spam/junk folders for the assignment notification.

  • 3. Monthly Automated Phishing Simulation Campaigns

    ISM Controls: ISM-0264 (Security Awareness Training), ISM-1784 (Ongoing Awareness)

    Prerequisites

  • Client tenant onboarded and baseline assessment completed
  • Phishing simulation licence active for the client
  • Client email admin has whitelisted uSecure sending IPs and domains per the uSecure whitelisting guide:
  • - IPs: Refer to https://help.usecure.io for the current IP list

    - Domains: simulations.usecure.io, *.usecure.io

    - Microsoft 365: Advanced Delivery policy configured for phishing simulation (Security & Compliance Centre > Email & Collaboration > Policies > Advanced Delivery > Phishing Simulation tab)

    Step-by-Step Instructions

  • Navigate to the client company in uSecure, then go to Simulate > Campaigns.
  • Click + New Campaign.
  • Configure the campaign:
  • - Campaign Name: {ClientName} - Monthly Phish - {YYYY-MM} (e.g., Acme Corp - Monthly Phish - 2026-04).

    - Target: All Users.

    - Template Selection: Select Randomised (uSecure will assign a random template to each user from the enabled template pool). This prevents users from warning each other about identical emails.

    - Template Pool: Enable at least 8 templates from the following categories, rotating quarterly:

    - Credential Harvesting (e.g., "Microsoft 365 Password Expiry", "SharePoint Document Shared")

    - Malicious Attachment (e.g., "Invoice Attached", "Delivery Notification")

    - Link-Based (e.g., "IT Support Ticket Update", "Company Policy Update")

    - Executive Impersonation (e.g., "CEO Urgent Request", "CFO Wire Transfer")

    - Landing Page: Use the Netier-branded education landing page (select "Netier - Phishing Education" from the landing page library).

    - Send Window: Randomised over 5 business days starting the first Monday of the month.

    - Tracking Duration: 7 days from last send.

  • Click Schedule Campaign.
  • After the tracking period ends:
  • - Navigate to Simulate > Reports > Campaign Report.

    - Review key metrics: Click Rate, Credential Submission Rate, Report Rate, Open Rate.

    - Netier benchmark targets:

    - Click Rate: below 15% (green), 15-25% (amber), above 25% (red)

    - Report Rate: above 30% (green), 15-30% (amber), below 15% (red)

  • Export the campaign report as PDF and save to: Clients/{ClientName}/Compliance/Security Awareness/Phishing Reports/Phish Report - {YYYY-MM}.pdf.
  • Users who clicked or submitted credentials are automatically flagged for remedial training (see Section 5).
  • Verification Checks

    Campaign uses randomised templates (minimum 8 in pool)
    Send window spreads over 5 business days
    Tracking duration set to 7 days
    Landing page is Netier-branded education page
    Email whitelisting verified (Advanced Delivery policy in M365)
    Campaign report exported and filed after tracking period
    Users who failed are flagged for remedial training auto-enrollment

    Rollback

  • If a campaign sends to the wrong user group or uses incorrect templates, navigate to Simulate > Campaigns, select the active campaign, and click Pause Campaign immediately. Contact uSecure support if emails have already been delivered and need to be recalled.
  • If users report the simulation emails are being blocked by spam filters, verify the Advanced Delivery policy in Microsoft 365 Security Centre > Email & Collaboration > Policies > Advanced Delivery and re-add the uSecure simulation domains.

  • 4. Quarterly Core Training Modules

    ISM Controls: ISM-0264 (Security Awareness Training), ISM-1784 (Ongoing Awareness)

    Prerequisites

  • Client tenant onboarded with all users synced
  • Baseline assessment completed (results inform topic prioritisation)
  • Quarterly training schedule agreed with client (typically aligned to calendar quarters: Jan, Apr, Jul, Oct)
  • Step-by-Step Instructions

  • Navigate to the client company in uSecure, then go to Train > Courses.
  • Click + Assign Course.
  • Assign the following quarterly core modules on a rotating annual schedule:
  • Q1 (January): Data Handling & Classification

    - Module: "Handling Sensitive Data"

    - Module: "Data Classification and Labelling"

    - Module: "Clean Desk and Clear Screen"

    Q2 (April): Password Hygiene & Authentication

    - Module: "Password Best Practices"

    - Module: "Multi-Factor Authentication"

    - Module: "Credential Theft Awareness"

    Q3 (July): Social Engineering & Phishing

    - Module: "Identifying Phishing Emails"

    - Module: "Social Engineering Tactics"

    - Module: "Business Email Compromise"

    Q4 (October): Physical Security & Incident Reporting

    - Module: "Physical Security Awareness"

    - Module: "Reporting Security Incidents"

    - Module: "Removable Media and USB Security"

  • For each assignment:
  • - Target: All Users (or departmental groups if client has role-specific training requirements).

    - Start Date: First Monday of the quarter month.

    - Deadline: 20 business days from start date.

    - Reminders: Enable at Day 5, Day 10, and Day 15.

    - Completion Certificate: Enabled (users receive a PDF certificate on completion).

  • Click Schedule Assignment.
  • Monitor completion:
  • - Check weekly via Train > Reports > Course Completion.

    - At Day 10, send a reminder to the client primary contact listing users below 50% completion.

    - At Day 15, escalate non-completions to the client's HR or management contact if previously agreed.

  • After the deadline:
  • - Export the completion report as PDF and CSV.

    - Save to: Clients/{ClientName}/Compliance/Security Awareness/Training Reports/Quarterly Training - {YYYY-QX}.pdf.

    - Users who did not complete the assigned training are flagged and added to a ConnectWise ticket for client follow-up (see Section 5).

    Verification Checks

    Quarterly modules match the annual rotation schedule
    Assignment targets correct user group
    Deadline set to 20 business days
    Reminders enabled at Day 5, Day 10, and Day 15
    Completion certificates enabled
    Completion monitored weekly during the assignment window
    Non-completions escalated at Day 15
    Final report exported and saved to client SharePoint folder

    Rollback

  • If the wrong modules are assigned, navigate to Train > Courses, select the assignment, and click Cancel Assignment. Reassign the correct modules.
  • If users cannot access the training portal, verify their email addresses are correct and that training notification emails are not being filtered. Check the user's status under Company > Users to confirm they are Active.

  • 5. Auto-Enrollment Remedial Training & ConnectWise Integration

    ISM Controls: ISM-0264 (Security Awareness Training)

    Prerequisites

  • ConnectWise Manage instance with API access configured for uSecure integration
  • ConnectWise Manage workflow WF-010 ("Security Awareness Remediation") created and active
  • uSecure remedial training courses configured in the template library
  • ConnectWise API member credentials stored securely (API keys in Netier's credential vault)
  • Step-by-Step Instructions

  • Configure auto-enrollment rules in uSecure:
  • - Navigate to the client company, then go to Settings > Automation Rules.

    - Click + New Rule.

    - Rule 1 — Phishing Failure Remediation:

    - Trigger: User clicks a phishing simulation link OR submits credentials on a simulation landing page.

    - Action: Auto-enroll user in "Identifying Phishing Emails" remedial course.

    - Deadline: 10 business days from enrollment.

    - Reminders: Day 3 and Day 7.

    - Rule 2 — Repeat Offender Escalation:

    - Trigger: User fails 2 or more phishing simulations within a rolling 90-day window.

    - Action: Auto-enroll in "Advanced Phishing Defence" course AND trigger ConnectWise ticket.

    - Deadline: 10 business days.

    - Rule 3 — Training Non-Completion:

    - Trigger: User does not complete assigned quarterly training by the deadline.

    - Action: Auto-enroll in the same training course with a 5-business-day extension AND trigger ConnectWise ticket.

    - Click Save for each rule.

  • Configure ConnectWise Manage integration:
  • - Navigate to Admin > Integrations > ConnectWise Manage.

    - Enter the ConnectWise Manage API URL: https://au.myconnectwise.net/v4_6_release/apis/3.0.

    - Enter the API Public Key and Private Key (retrieve from Netier credential vault — search "uSecure ConnectWise API").

    - Set the Company ID to netier.

    - Map ticket fields:

    - Board: Service Desk

    - Type: Security Awareness

    - Subtype: Remediation Required

    - Priority: Medium (escalate to High for repeat offenders)

    - Status: New

    - Set the Workflow ID to WF-010.

    - Click Test Connection to verify, then Save.

  • When a ConnectWise ticket is created by uSecure (WF-010 trigger):
  • - The ticket summary follows the format: [SAT Remediation] {UserName} - {TriggerReason} - {ClientName}.

    - The ticket body includes: user details, trigger event, assigned remedial course, and deadline.

    - The Netier service desk triages the ticket and confirms the client's designated contact has been notified.

    - Once the user completes the remedial training, uSecure updates the ticket status to Completed via the API.

  • Verify automation rules are firing correctly:
  • - After each monthly phishing campaign, check Settings > Automation Rules > Execution Log for the client.

    - Confirm that users who clicked/submitted credentials have been auto-enrolled.

    - Spot-check 2-3 users to ensure ConnectWise tickets were created for repeat offenders.

    Verification Checks

    Auto-enrollment Rule 1 (phishing failure) configured and active
    Auto-enrollment Rule 2 (repeat offender escalation) configured and active
    Auto-enrollment Rule 3 (training non-completion) configured and active
    ConnectWise Manage API integration connected and tested
    Ticket field mappings correct (board, type, priority, workflow)
    WF-010 workflow active in ConnectWise Manage
    Automation execution log reviewed after each campaign cycle
    Repeat offender tickets created with High priority

    Rollback

  • If automation rules are triggering incorrectly, navigate to Settings > Automation Rules, select the rule, and click Disable. Investigate the trigger conditions before re-enabling.
  • If ConnectWise tickets are being created with incorrect data, check the field mappings under Admin > Integrations > ConnectWise Manage and correct them. Manually close any erroneous tickets in ConnectWise.
  • If the ConnectWise API connection fails, verify the API keys are current and have not been rotated. Re-test the connection.

  • 6. CyberCred Security Champions Program

    ISM Controls: ISM-0264 (Security Awareness Training), ISM-1784 (Ongoing Awareness)

    Prerequisites

  • Client opted into the CyberCred Security Champions program
  • CyberCred portal active at https://cyber.netier.team
  • Client users synced to the CyberCred platform (via uSecure integration or manual import)
  • Client primary contact briefed on the program structure and reward tiers
  • Step-by-Step Instructions

  • Access the CyberCred admin portal at https://cyber.netier.team/admin.
  • Navigate to Companies > Select Client > Program Settings.
  • Verify the points allocation matrix is configured:
  • | Activity | Points Awarded | Frequency Cap |

    |----------|---------------|---------------|

    | Complete a training module | 10 per module | No cap |

    | Pass a phishing simulation (no click) | 15 per campaign | Monthly |

    | Report a suspicious email via Outlook button | 5 per report | 3 per day max |

    | Report a real phishing email (verified by SOC) | 25 per report | No cap |

    | Attend a security briefing / lunch-and-learn | 20 per event | Quarterly |

    | Complete the quarterly training set on time | 30 bonus | Quarterly |

    | Pass baseline assessment with score above 80% | 50 bonus | One-time |

    | Refer a colleague to complete overdue training | 5 per referral | No cap |

  • Verify reward tier thresholds:
  • - Bronze: 50 points — Digital badge + mention in company newsletter

    - Silver: 150 points — Digital badge + small gift card ($10 value)

    - Gold: 300 points — Digital badge + branded merchandise pack

    - Platinum: 500 points — Digital badge + premium gift card ($50 value) + Security Champion certificate

    - Diamond: 1,000 points — Digital badge + premium gift ($100 value) + Security Champion of the Year nomination + featured on cyber.netier.team Hall of Fame

  • Configure leaderboard settings:
  • - Navigate to Program Settings > Leaderboard.

    - Enable Company Leaderboard (shows top 10 users within the client company).

    - Enable Department Leaderboard (if client has departments mapped).

    - Set leaderboard refresh frequency: Real-time.

    - Enable Monthly Leaderboard Email to all participants (sent on the 1st of each month).

    - Leaderboard is publicly visible at: https://cyber.netier.team/{client-slug}/leaderboard.

  • Configure uSecure integration for automatic point tracking:
  • - Navigate to Program Settings > Integrations > uSecure.

    - Enter the uSecure API key for the client tenant (retrieve from uSecure > Company > Settings > API).

    - Enable event sync for: Training Completion, Simulation Result, Email Report.

    - Click Test Sync and verify a recent event is pulled through.

  • Launch the program:
  • - Navigate to Program Settings > Communications.

    - Customise the launch email template with client branding.

    - Schedule the launch email for the agreed program start date.

    - Include: program overview, how points are earned, reward tiers, link to leaderboard.

  • Ongoing management (monthly):
  • - Review the leaderboard and verify points are accruing correctly.

    - Process reward redemptions for users who reach a new tier:

    - Navigate to Rewards > Pending Redemptions.

    - Confirm the user's tier eligibility.

    - Dispatch the reward (digital badges are automatic; physical rewards are coordinated via Netier operations).

    - At the end of each quarter, generate a CyberCred summary report:

    - Navigate to Reports > Quarterly Summary.

    - Export as PDF and include in the client's quarterly service review pack.

    Verification Checks

    Points allocation matrix matches the table above
    All five reward tiers configured with correct thresholds
    Company and department leaderboards enabled
    Monthly leaderboard email scheduled
    uSecure integration connected and syncing events
    Launch email customised with client branding and scheduled
    Reward redemptions processed within 5 business days of tier achievement
    Quarterly CyberCred summary report generated and filed

    Rollback

  • If points are being awarded incorrectly, navigate to Program Settings > Points History and manually adjust the user's point balance. Document the correction.
  • If the uSecure integration stops syncing, check the API key validity under Integrations > uSecure and regenerate if needed.
  • If a client requests to pause the program, navigate to Program Settings > Status and set to Paused. This freezes all point accrual and hides the leaderboard. Points are retained for when the program resumes.

  • 7. Reporting & Compliance Evidence Extraction

    ISM Controls: ISM-0264 (Security Awareness Training), ISM-1784 (Ongoing Awareness)

    Prerequisites

  • All previous sections operational (uSecure onboarded, baseline done, campaigns running, training assigned, CyberCred active)
  • Access to the client's compliance SharePoint folder
  • Knowledge of the client's compliance framework requirements (ISO 27001 A.6.3, ISM, IS18 PR4)
  • Step-by-Step Instructions

  • Monthly Evidence Pack (due by the 5th of each month):
  • - Log in to uSecure Partner Portal.

    - Navigate to the client company.

    - Export the following reports:

    - Phishing Campaign Report (Simulate > Reports > Latest Campaign): PDF and CSV.

    - Training Completion Report (Train > Reports > All Courses): PDF showing completion rates for the current quarter.

    - User Risk Score Report (Assess > Reports > Risk Scores): PDF showing current risk posture per user.

    - Save all exports to: Clients/{ClientName}/Compliance/Security Awareness/Monthly Evidence/{YYYY-MM}/.

  • Quarterly Evidence Pack (due within 10 business days of quarter end):
  • - Export all monthly evidence for the quarter.

    - Additionally export:

    - Quarterly Training Summary (Train > Reports > Quarterly Summary): aggregate completion, pass rates, remediation counts.

    - Phishing Trend Report (Simulate > Reports > Trend Analysis): click rate and report rate trends over the quarter.

    - CyberCred Quarterly Summary (from cyber.netier.team > Reports > Quarterly Summary).

    - Remedial Training Report (Train > Reports > Remedial Courses): list of users who were auto-enrolled, completion status.

    - Compile into a single compliance evidence pack PDF.

    - Save to: Clients/{ClientName}/Compliance/Security Awareness/Quarterly Evidence/{YYYY-QX}/.

  • Compliance Framework Mapping:
  • | Evidence Item | ISO 27001 A.6.3 | ISM-0264 | ISM-1784 | IS18 PR4 |

    |---------------|-----------------|----------|----------|----------|

    | Baseline assessment results | Yes | Yes | - | Yes |

    | Monthly phishing simulation reports | Yes | Yes | Yes | Yes |

    | Quarterly training completion reports | Yes | Yes | Yes | Yes |

    | Remedial training enrollment evidence | Yes | Yes | Yes | - |

    | CyberCred participation summary | Yes | - | Yes | - |

    | User risk score trend | Yes | Yes | Yes | Yes |

  • Annual Review Evidence (due within 20 business days of financial year end):
  • - Export the annual summary from uSecure: Reports > Annual Summary.

    - Include year-over-year trend data for: click rates, report rates, training completion, risk scores.

    - Include CyberCred annual participation and tier achievements.

    - Present findings and recommendations in the client's annual security review meeting.

    - Save to: Clients/{ClientName}/Compliance/Security Awareness/Annual Review/{YYYY}/.

    Verification Checks

    Monthly evidence pack exported and filed by the 5th of each month
    Quarterly evidence pack compiled within 10 business days of quarter end
    All exports include both PDF and CSV formats where applicable
    Compliance framework mapping table reviewed and current
    Annual review evidence compiled and presented
    SharePoint folder structure follows the standard naming convention
    Evidence is sufficient to satisfy ISO A.6.3, ISM-0264, ISM-1784, and IS18 PR4

    Rollback

  • If reports contain incorrect data (e.g., wrong date range), re-export with the correct parameters and replace the filed document. Add a note to the filename: {Report} - {YYYY-MM} - CORRECTED.pdf.
  • If SharePoint access is unavailable, save evidence locally and upload within 2 business days of access restoration.

  • 8. Master Verification Checklist

    uSecure Platform Setup & Client Tenant Onboarding

    Client company created in uSecure with correct name
    Licence count matches agreement
    Directory sync connected and returning correct user count
    Notification sender name and reply-to configured
    Client branding (logo and colours) applied
    Outlook phishing report button add-in deployed and functional
    Test sync completed without errors

    Baseline Security Assessment

    Baseline assessment assigned within Week 1 of client onboarding
    Assessment uses the Netier standard uRisk template
    Deadline set to 10 business days
    Reminders enabled at Day 3 and Day 7
    Completion rate monitored during assessment window
    Results exported and saved to client SharePoint compliance folder
    Lowest-scoring categories documented for training plan prioritisation

    Monthly Automated Phishing Simulation Campaigns

    Campaign uses randomised templates (minimum 8 in pool)
    Send window spreads over 5 business days
    Tracking duration set to 7 days
    Landing page is Netier-branded education page
    Email whitelisting verified (Advanced Delivery policy in M365)
    Campaign report exported and filed after tracking period
    Users who failed are flagged for remedial training auto-enrollment

    Quarterly Core Training Modules

    Quarterly modules match the annual rotation schedule
    Assignment targets correct user group
    Deadline set to 20 business days
    Reminders enabled at Day 5, Day 10, and Day 15
    Completion certificates enabled
    Completion monitored weekly during the assignment window
    Non-completions escalated at Day 15
    Final report exported and saved to client SharePoint folder

    Auto-Enrollment Remedial Training & ConnectWise Integration

    Auto-enrollment Rule 1 (phishing failure) configured and active
    Auto-enrollment Rule 2 (repeat offender escalation) configured and active
    Auto-enrollment Rule 3 (training non-completion) configured and active
    ConnectWise Manage API integration connected and tested
    Ticket field mappings correct (board, type, priority, workflow)
    WF-010 workflow active in ConnectWise Manage
    Automation execution log reviewed after each campaign cycle
    Repeat offender tickets created with High priority

    CyberCred Security Champions Program

    Points allocation matrix matches the defined values
    All five reward tiers configured with correct thresholds
    Company and department leaderboards enabled
    Monthly leaderboard email scheduled
    uSecure integration connected and syncing events
    Launch email customised with client branding and scheduled
    Reward redemptions processed within 5 business days of tier achievement
    Quarterly CyberCred summary report generated and filed

    Reporting & Compliance Evidence Extraction

    Monthly evidence pack exported and filed by the 5th of each month
    Quarterly evidence pack compiled within 10 business days of quarter end
    All exports include both PDF and CSV formats where applicable
    Compliance framework mapping table reviewed and current
    Annual review evidence compiled and presented
    Evidence is sufficient to satisfy ISO A.6.3, ISM-0264, ISM-1784, and IS18 PR4

    9. Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Endpoint Management (MDM/UEM)

    Document ID: NET-SOP-MDM-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 6.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Windows 10/11 Endpoint Hardening
  • macOS Endpoint Hardening
  • iOS/iPadOS Device Management
  • Android Enterprise Device Management
  • Linux (Ubuntu/RHEL) Endpoint Hardening
  • Master Verification Checklist
  • Document History

  • 1. Windows 10/11 Endpoint Hardening

    ISM Controls: ISM-1406 (Hardening OS), ISM-1914 (Endpoint Encryption), ISM-1409 (OS Patching), ISM-1745 (Application Control), ISM-0869 (Screen Lock)

    Prerequisites

  • Microsoft Intune licence (included in Microsoft 365 Business Premium, E3, or E5)
  • Entra ID joined or Hybrid Entra ID joined devices
  • Client Azure AD / Entra ID tenant linked to Intune
  • Windows Autopilot hardware hashes imported (for new device provisioning)
  • CIS Microsoft Windows 11 Enterprise Benchmark v3.0+ downloaded from https://www.cisecurity.org/benchmark/microsoft_windows_desktop
  • Step-by-Step Instructions

    1.1 Device Enrollment
  • Sign in to the Microsoft Intune Admin Centre at https://intune.microsoft.com.
  • Navigate to Devices > Enrollment > Windows > Automatic Enrollment.
  • Set MDM User Scope to All (or a specific Entra ID group if phased rollout).
  • Verify the MDM and MAM discovery URLs are populated (they auto-populate for Intune).
  • For Autopilot provisioning:
  • - Navigate to Devices > Enrollment > Windows > Windows Autopilot > Devices.

    - Import hardware hashes via CSV (obtained from OEM or Get-WindowsAutopilotInfo script).

    - Create an Autopilot deployment profile: Devices > Enrollment > Windows > Windows Autopilot > Deployment Profiles > + Create Profile > Windows PC.

    - Settings: User-driven mode, Entra ID joined, skip privacy settings, skip EULA, hide change account options.

    - Assign the profile to the Autopilot device group.

    1.2 CIS Benchmark Level 1 Configuration Profile
  • Navigate to Devices > Configuration > + Create > New Policy.
  • Platform: Windows 10 and later. Profile type: Settings Catalog.
  • Name: CIS-W11-L1-Baseline-{ClientName}.
  • Add the following critical settings (mapped to CIS Benchmark Level 1):
  • Account Policies:

    - Password minimum length: 14 characters

    - Password complexity: Enabled

    - Account lockout threshold: 5 failed attempts

    - Account lockout duration: 15 minutes

    - Reset account lockout counter after: 15 minutes

    Local Policies — Security Options:

    - Interactive logon: Machine inactivity limit: 900 seconds (15 minutes)

    - Network access: Do not allow anonymous enumeration of SAM accounts: Enabled

    - Network security: LAN Manager authentication level: Send NTLMv2 response only, refuse LM & NTLM

    Windows Firewall:

    - Domain Profile: Firewall state ON, inbound connections BLOCK, outbound connections ALLOW

    - Private Profile: Firewall state ON, inbound connections BLOCK, outbound connections ALLOW

    - Public Profile: Firewall state ON, inbound connections BLOCK, outbound connections ALLOW

    Audit Policies:

    - Audit logon events: Success and Failure

    - Audit account logon events: Success and Failure

    - Audit object access: Failure

    - Audit policy change: Success

    Additional Hardening:

    - Disable consumer experience features (Settings Catalog > Experience > Allow Windows Consumer Features: Block)

    - Disable Cortana above lock screen

    - Disable Windows Store for Business

    - Block Microsoft accounts: Users can't add or log on with Microsoft accounts

  • Assign the profile to the target device group.
  • Click Create.
  • PowerShell / CLI Alternative (Graph API):
    # Connect to Microsoft Graph with Intune permissions
    

    Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"

    Export existing CIS baseline for review

    $profiles = Get-MgDeviceManagementDeviceConfiguration -Filter "displayName eq 'CIS-W11-L1-Baseline-ClientName'"

    $profiles | Select-Object DisplayName, Id, LastModifiedDateTime

    Verify profile assignment status

    $profileId = $profiles[0].Id

    $assignments = Get-MgDeviceManagementDeviceConfigurationAssignment -DeviceConfigurationId $profileId

    $assignments | Format-Table Target, Id

    1.3 BitLocker Encryption (256-bit AES)
  • Navigate to Endpoint Security > Disk Encryption > + Create Policy.
  • Platform: Windows 10 and later. Profile: BitLocker.
  • Name: BitLocker-AES256-{ClientName}.
  • Configure settings:
  • - Require device encryption: Yes

    - Encryption method for OS drive: XTS-AES 256-bit

    - Encryption method for fixed data drives: XTS-AES 256-bit

    - Encryption method for removable data drives: AES-CBC 256-bit

    - Startup authentication: Require TPM + PIN (6-digit minimum)

    - Recovery key rotation: Enabled (rotate after key is used)

    - Store recovery key in Entra ID: Required before enabling BitLocker

    - Hide recovery key prompt on initial encryption: Yes

    - Compatible TPM startup: Required

  • Assign to the target device group.
  • Click Create.
  • PowerShell / CLI Alternative:
    # Verify BitLocker status on a specific device
    

    Get-MgDeviceManagementManagedDevice -Filter "deviceName eq 'DEVICE-NAME'" |

    Select-Object DeviceName, IsEncrypted, ComplianceState

    Bulk check BitLocker compliance

    Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'Windows'" -All |

    Select-Object DeviceName, IsEncrypted, ComplianceState |

    Where-Object { $_.IsEncrypted -eq $false } |

    Export-Csv -Path "C:\Temp\Unencrypted-Devices.csv" -NoTypeInformation

    1.4 Windows Update for Business
  • Navigate to Devices > Windows > Update Rings > + Create.
  • Name: WUfB-Ring-Production-{ClientName}.
  • Configure settings:
  • - Feature update deferral period: 14 days

    - Quality update deferral period: 2 days

    - Auto-restart before deadline (days): 3

    - Deadline for feature updates: 7 days after deferral

    - Deadline for quality updates: 2 days after deferral

    - Maintenance window start: 02:00

    - Maintenance window end: 06:00

    - Allow user to restart before deadline: Yes

    - Disable pause on Windows Update: Yes

  • Assign to the target device group.
  • Click Create.
  • Additionally, create a Feature Update Policy:
  • - Navigate to Devices > Windows > Feature Updates > + Create.

    - Target version: Current supported version minus one (e.g., if 24H2 is current, target 24H2 after 14-day deferral).

    - Assign to the same device group.

    1.5 Auto-Lock (Screen Timeout)
  • This is covered in the CIS Benchmark profile (Section 1.2) with the machine inactivity limit of 900 seconds.
  • Additionally, enforce via Devices > Configuration > + Create > Settings Catalog:
  • - Search for "Max Inactivity Time Lock" under Device Lock.

    - Set to 15 minutes.

  • Assign to the target device group.
  • Verification Checks

    All Windows devices enrolled in Intune (Devices > All Devices > filter OS = Windows)
    CIS Level 1 baseline configuration profile applied — check Devices > Configuration > Monitor for profile compliance
    BitLocker enabled with XTS-AES 256 on all OS drives — check Endpoint Security > Disk Encryption > Monitor
    BitLocker recovery keys stored in Entra ID — verify under Entra ID > Devices > {Device} > BitLocker Keys
    Windows Update for Business ring assigned — check Devices > Windows > Update Rings > Monitor
    Feature updates deferred 14 days, quality updates deferred 2 days
    Screen auto-lock at 15 minutes confirmed
    Consumer experience features disabled
    Windows Firewall enabled on all profiles (Domain, Private, Public)

    Rollback

  • To remove a configuration profile: Navigate to Devices > Configuration, select the profile, go to Assignments, remove the device group, then delete the profile. Devices will revert to local policy on next sync.
  • To remove BitLocker encryption (requires valid business justification and Security Lead approval): Disable the encryption policy assignment. On the device, run manage-bde -off C: as local administrator. Monitor decryption progress with manage-bde -status.
  • To revert Windows Update settings: Delete the update ring assignment. Devices will fall back to local Windows Update settings.

  • 2. macOS Endpoint Hardening

    ISM Controls: ISM-1406 (Hardening OS), ISM-1914 (Endpoint Encryption), ISM-1409 (OS Patching), ISM-0869 (Screen Lock)

    Prerequisites

  • Apple Business Manager (ABM) account linked to Intune
  • Automated Device Enrollment (ADE) configured in Intune for macOS
  • Apple Push Notification (APN) certificate active in Intune (renew annually)
  • CIS Apple macOS 14 (or current version) Benchmark downloaded
  • Step-by-Step Instructions

    2.1 Device Enrollment
  • In the Intune Admin Centre, navigate to Devices > Enrollment > macOS > Enrollment Program Tokens.
  • Verify the ABM token is connected and not expired. If expired, download a new token from ABM and upload it.
  • Create an enrollment profile: Devices > Enrollment > macOS > Enrollment Program Tokens > {Token} > Profiles > + Create Profile.
  • Settings: User-prompted enrollment, require multi-factor authentication, lock enrollment profile (prevent user removal).
  • Assign the profile to ABM device serial numbers.
  • 2.2 FileVault Encryption
  • Navigate to Endpoint Security > Disk Encryption > + Create Policy.
  • Platform: macOS. Profile: FileVault.
  • Name: FileVault-{ClientName}.
  • Configure settings:
  • - Enable FileVault: Yes

    - Personal recovery key rotation (months): 6

    - Escrow location description: Your recovery key is stored securely by Netier IT. Contact support@netier.com.au if needed.

    - Number of times allowed to bypass: 0 (enforce immediately)

    - Store recovery key in Intune: Yes

  • Assign to the macOS device group.
  • Click Create.
  • 2.3 macOS Security Configuration (CIS Benchmark)
  • Navigate to Devices > Configuration > + Create > New Policy.
  • Platform: macOS. Profile type: Settings Catalog.
  • Name: CIS-macOS-Baseline-{ClientName}.
  • Add the following settings:
  • System Integrity Protection (SIP):

    - SIP is enabled by default on macOS. Intune cannot disable it, but add a compliance check (see Section 2.3 Compliance Policy below).

    Gatekeeper:

    - Allow identified developers: Yes

    - Enable Gatekeeper: Yes (Settings Catalog > System Policy Control > Enable Assessment: true)

    Screen Lock:

    - Require password after sleep or screen saver: Immediately (0 seconds)

    - Maximum inactivity before screen saver: 5 minutes (300 seconds)

    - Minimum password length: 14 characters

    - Password complexity: Alphanumeric with symbols

    Firewall:

    - Enable firewall: Yes

    - Enable stealth mode: Yes

    - Block all incoming connections: No (allow signed apps)

    Additional Hardening:

    - Disable automatic login

    - Disable Bluetooth sharing

    - Disable Internet sharing

    - Disable remote Apple events

    - Show Wi-Fi status in menu bar: Yes

  • Assign to the macOS device group.
  • Click Create.
  • 2.4 Compliance Policy for SIP Verification
  • Navigate to Devices > Compliance > + Create Policy.
  • Platform: macOS.
  • Name: macOS-Compliance-{ClientName}.
  • Configure:
  • - Require system integrity protection: Yes

    - Require FileVault: Yes

    - Minimum OS version: (set to current major version minus one)

    - Require device lock password: Yes

  • Actions for noncompliance:
  • - Mark device noncompliant: Immediately

    - Send email to user: After 1 day

    - Retire device: After 30 days (requires Security Lead approval before action triggers)

  • Assign to the macOS device group.
  • 2.5 macOS Software Updates
  • Navigate to Devices > macOS > Update Policies > + Create.
  • Name: macOS-Updates-{ClientName}.
  • Configure:
  • - Install macOS updates: Install immediately after the deferral period

    - Deferral period: 14 days for major updates, 2 days for security updates

    - Schedule type: Update at next check-in after deferral

  • Assign to the macOS device group.
  • Shell Script for Compliance Verification:
    #!/bin/bash
    

    macOS Compliance Quick Check — run on endpoint or via Intune shell script deployment

    echo "=== macOS Security Compliance Check ==="

    echo "Hostname: $(hostname)"

    echo "macOS Version: $(sw_vers -productVersion)"

    echo ""

    FileVault Status

    fv_status=$(fdesetup status)

    echo "FileVault: $fv_status"

    SIP Status

    sip_status=$(csrutil status)

    echo "SIP: $sip_status"

    Gatekeeper Status

    gk_status=$(spctl --status)

    echo "Gatekeeper: $gk_status"

    Firewall Status

    fw_status=$(/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate)

    echo "Firewall: $fw_status"

    Screen Lock

    screensaver_idle=$(defaults -currentHost read com.apple.screensaver idleTime 2>/dev/null || echo "Not set")

    echo "Screensaver Idle Time: ${screensaver_idle}s"

    ask_for_password=$(defaults read com.apple.screensaver askForPassword 2>/dev/null || echo "Not set")

    echo "Require Password After Screensaver: $ask_for_password (1 = Yes)"

    echo ""

    echo "=== Check Complete ==="

    Verification Checks

    All macOS devices enrolled via Automated Device Enrollment
    ABM token active and not expired
    FileVault enabled with recovery keys escrowed to Intune
    SIP enabled (csrutil status = enabled) verified via compliance policy
    Gatekeeper enabled
    Firewall enabled with stealth mode
    Screen lock requires password immediately after sleep
    macOS update policy assigned with correct deferral periods
    Compliance policy detecting and flagging non-compliant devices

    Rollback

  • To remove FileVault: Disable the FileVault policy assignment. On the device, go to System Settings > Privacy & Security > FileVault > Turn Off FileVault. Requires local admin credentials and Security Lead approval.
  • To remove a configuration profile from managed devices: Unassign the device group from the profile in Intune. The profile will be removed at next device check-in.
  • If a compliance policy is incorrectly blocking users, set the compliance policy action to "Mark noncompliant" only (remove any retire/wipe actions) while investigating.

  • 3. iOS/iPadOS Device Management

    ISM Controls: ISM-1406 (Hardening OS), ISM-1745 (Application Control), ISM-0869 (Screen Lock)

    Prerequisites

  • Apple Business Manager (ABM) account linked to Intune
  • APN certificate active in Intune
  • Entra ID groups for iOS/iPadOS devices created (Corporate-Owned and BYOD if applicable)
  • VPP (Volume Purchase Program) tokens configured for app deployment
  • Step-by-Step Instructions

    3.1 Device Enrollment
  • For corporate-owned devices (ADE):
  • - Navigate to Devices > Enrollment > Apple > Enrollment Program Tokens > {Token} > Profiles > + Create Profile > iOS/iPadOS.

    - Lock enrollment profile: Yes. Supervised mode: Yes.

    - Skip Setup Assistant panes: Location Services, Restore, Apple ID, Terms, Siri, Diagnostics, Display Tone, Privacy, Onboarding.

    - Assign to device serial numbers in ABM.

  • For BYOD devices:
  • - Navigate to Devices > Enrollment > Apple > Enrollment Types.

    - Configure User Enrollment with Company Portal app.

    - This creates a managed partition on the device without wiping personal data.

    3.2 Device Restrictions Profile
  • Navigate to Devices > Configuration > + Create > New Policy.
  • Platform: iOS/iPadOS. Profile type: Device Restrictions.
  • Name: iOS-Restrictions-{ClientName}.
  • Configure:
  • Passcode:

    - Require passcode: Yes

    - Passcode type: Alphanumeric

    - Minimum passcode length: 6 characters

    - Maximum minutes of inactivity before screen locks: 5

    - Passcode expiration (days): 90

    - Number of previous passcodes to prevent reuse: 5

    - Maximum passcode attempts before wipe: 10

    Jailbreak Detection:

    - Block jailbroken/rooted devices: Yes (set via compliance policy — see 3.3)

    Data Protection:

    - Prevent unmanaged apps from reading managed contacts: Yes

    - Prevent unmanaged apps from reading managed documents: Yes

    - Treat AirDrop as an unmanaged destination: Yes

    - Block copy/paste between managed and unmanaged apps: Yes (corporate-owned) / No (BYOD — data separation handled by App Protection Policy)

    Siri:

    - Block Siri while device is locked: Yes

    - Block Siri dictation: No (allow when unlocked)

    iCloud:

    - Block iCloud backup of managed apps: Yes

    - Block iCloud document sync for managed apps: Yes

    - Block iCloud Keychain sync: No (personal use — BYOD) / Yes (corporate-owned)

    Additional:

    - Block screen capture in managed apps: Yes (corporate-owned)

    - Block untrusted TLS certificates: Yes

    - Force encrypted backups: Yes

    - Block removing apps: Yes (supervised devices only)

  • Assign to the iOS/iPadOS device group.
  • Click Create.
  • 3.3 Compliance Policy
  • Navigate to Devices > Compliance > + Create Policy.
  • Platform: iOS/iPadOS.
  • Name: iOS-Compliance-{ClientName}.
  • Configure:
  • - Jailbroken devices: Block

    - Require device passcode: Yes

    - Minimum OS version: (current major version minus one, e.g., iOS 18.0 if iOS 19 is current)

    - Maximum OS version: not configured

    - Require device lock: Yes

  • Actions for noncompliance:
  • - Mark noncompliant: Immediately

    - Send push notification: After 1 day

    - Remotely lock device: After 7 days (jailbreak detection only)

  • Assign to the iOS/iPadOS device group.
  • 3.4 App Protection Policies (MAM for BYOD)
  • Navigate to Apps > App Protection Policies > + Create Policy > iOS/iPadOS.
  • Name: iOS-APP-{ClientName}.
  • Target apps: Microsoft Outlook, Teams, OneDrive, SharePoint, Edge.
  • Data protection settings:
  • - Send org data to other apps: Policy managed apps only

    - Receive data from other apps: Policy managed apps only

    - Save copies of org data: Block

    - Allow user to save copies to selected services: OneDrive for Business, SharePoint only

    - Cut, copy, paste between apps: Policy managed apps with paste in

    - Screen capture: Block

    - Encrypt org data: Require

  • Access requirements:
  • - PIN for access: Require (4-digit minimum, allow biometric)

    - Recheck access requirements after (minutes): 30

  • Conditional launch:
  • - Max PIN attempts: 5 (action: reset PIN)

    - Offline grace period: 720 minutes (action: block access)

    - Jailbroken/rooted devices: Block access

    - Min OS version: current minus one (action: warn)

  • Assign to the user group.
  • Verification Checks

    Corporate-owned iOS devices enrolled via ADE in supervised mode
    BYOD devices enrolled via User Enrollment with Company Portal
    Alphanumeric passcode enforced (6 characters minimum)
    Screen lock timeout set to 5 minutes
    Jailbreak detection enabled and blocking non-compliant devices
    Managed/unmanaged data separation enforced
    Siri blocked while device is locked
    App Protection Policy applied to Microsoft 365 apps
    Compliance policy flagging non-compliant devices
    iCloud backup of managed apps blocked

    Rollback

  • To remove device restrictions: Unassign the device group from the restrictions profile. For supervised devices, a profile removal may require a device wipe if the enrollment profile is locked.
  • To ease BYOD restrictions: Modify the App Protection Policy to loosen data transfer settings. Changes propagate at next app check-in.
  • Emergency device unlock (lost PIN): Navigate to Devices > {Device} > Remote Lock > Passcode Reset (supervised devices only).

  • 4. Android Enterprise Device Management

    ISM Controls: ISM-1406 (Hardening OS), ISM-1745 (Application Control), ISM-0869 (Screen Lock)

    Prerequisites

  • Managed Google Play account linked to Intune (navigate to Devices > Enrollment > Android > Managed Google Play to verify)
  • Entra ID groups for Android devices (Corporate-Owned Work Profile and BYOD Work Profile)
  • Android Enterprise fully managed enrollment configured for corporate-owned devices
  • Android Enterprise Work Profile enrollment configured for BYOD
  • Step-by-Step Instructions

    4.1 BYOD Work Profile Enrollment
  • Navigate to Devices > Enrollment > Android > Android Enterprise > Personal Devices with Work Profile.
  • Verify enrollment is set to Allow.
  • Users install the Intune Company Portal app from Google Play, sign in with their Entra ID credentials, and follow the prompts to create a Work Profile.
  • The Work Profile creates an isolated container on the device — corporate apps and data are separated from personal.
  • 4.2 Corporate-Owned Fully Managed Enrollment
  • Navigate to Devices > Enrollment > Android > Android Enterprise > Corporate-Owned Fully Managed User Devices.
  • Create an enrollment token or use QR code / NFC provisioning.
  • On a factory-reset device, tap the screen 6 times at the welcome screen to enter QR provisioning mode.
  • Scan the QR code generated from Intune. The device enrolls as fully managed.
  • 4.3 Device Restrictions — Work Profile (BYOD)
  • Navigate to Devices > Configuration > + Create > New Policy.
  • Platform: Android Enterprise. Profile type: Work Profile > Device Restrictions.
  • Name: Android-BYOD-WP-{ClientName}.
  • Configure:
  • Work Profile Settings:

    - Copy/paste between work and personal profiles: Block

    - Screen capture in work profile: Block

    - Contact sharing from work to personal profile: Block (caller ID allowed)

    - Allow widgets from work profile apps: No

    - Default app permissions: Prompt

    Password (Work Profile):

    - Require password: Yes

    - Password type: Complex (requires letter, number, symbol)

    - Minimum password length: 6

    - Maximum minutes of inactivity before work profile locks: 5

    - Number of failed sign-ins before wiping work profile: 10

    - Password expiration (days): 90

    - Prevent reuse of previous passwords: 5

    Root Detection:

    - Rooted devices: Block (configured via compliance policy — see 4.5)

    Google Play Protect:

    - Require Google Play Protect verification: Yes

    - SafetyNet device attestation: Check basic integrity and certified devices

  • Assign to the Android BYOD device group.
  • 4.4 Device Restrictions — Corporate-Owned Fully Managed
  • Navigate to Devices > Configuration > + Create > New Policy.
  • Platform: Android Enterprise. Profile type: Fully Managed > Device Restrictions.
  • Name: Android-Corp-FM-{ClientName}.
  • Configure all settings from 4.3, plus:
  • - Factory reset: Block (prevent user-initiated factory reset)

    - Camera: Allow (block if client requires it)

    - USB file transfer: Block

    - External media: Block

    - NFC: Block (if not business-required)

    - Screen capture: Block globally

    - Add personal accounts: Block

  • Assign to the Android corporate-owned device group.
  • 4.5 Compliance Policy
  • Navigate to Devices > Compliance > + Create Policy.
  • Platform: Android Enterprise (create one for Work Profile and one for Fully Managed).
  • Name: Android-Compliance-{ClientName}.
  • Configure:
  • - Rooted devices: Block

    - Minimum OS version: (current major minus one, e.g., Android 14 if Android 15 is current)

    - Require device lock: Yes

    - Google Play Protect: Require SafetyNet attestation (basic integrity + certified)

    - Require Google Play Services: Yes

    - Up to date security patch: Within 30 days

  • Actions for noncompliance:
  • - Mark noncompliant: Immediately

    - Send notification: After 1 day

    - Retire device (wipe work profile): After 14 days for root detection

  • Assign to the Android device groups.
  • PowerShell / CLI Alternative (Graph API for reporting):
    # Connect to Microsoft Graph
    

    Connect-MgGraph -Scopes "DeviceManagementManagedDevices.Read.All"

    List all Android devices and their compliance state

    Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'Android'" -All |

    Select-Object DeviceName, UserDisplayName, ComplianceState,

    IsEncrypted, AndroidSecurityPatchLevel, OsVersion |

    Export-Csv -Path "C:\Temp\Android-Compliance-Report.csv" -NoTypeInformation

    Find rooted/non-compliant devices

    Get-MgDeviceManagementManagedDevice -Filter "operatingSystem eq 'Android' and complianceState eq 'noncompliant'" -All |

    Select-Object DeviceName, UserDisplayName, ComplianceState |

    Format-Table -AutoSize

    Verification Checks

    Managed Google Play linked to Intune
    BYOD devices enrolled with Work Profile
    Corporate-owned devices enrolled as Fully Managed
    Work Profile copy/paste and screen capture blocked
    Complex PIN required (6 characters with letter, number, symbol)
    Work profile auto-locks after 5 minutes of inactivity
    Root detection enabled and blocking non-compliant devices
    Google Play Protect and SafetyNet attestation required
    USB file transfer and external media blocked on corporate-owned devices
    Compliance policy flagging non-compliant Android devices

    Rollback

  • To remove the Work Profile on a BYOD device: The user can remove the Company Portal app, which triggers Work Profile deletion (corporate data wiped, personal data preserved).
  • To unenroll a corporate-owned fully managed device: Navigate to Devices > {Device} > Wipe. This factory-resets the device. Ensure client approval before proceeding.
  • To loosen restrictions temporarily: Edit the device restrictions profile, adjust settings, and save. Changes propagate at next device check-in (typically within 8 hours, or force sync from Company Portal).

  • 5. Linux (Ubuntu/RHEL) Endpoint Hardening

    ISM Controls: ISM-1406 (Hardening OS), ISM-1914 (Endpoint Encryption), ISM-1409 (OS Patching)

    Prerequisites

  • Microsoft Intune licence that includes Linux management (Microsoft 365 E3/E5 or Intune Plan 2)
  • Linux devices running Ubuntu 22.04+ or RHEL 8+
  • Microsoft Edge and Intune agent installed on the Linux device
  • Entra ID registration completed on the Linux device
  • SSH access to the Linux device for initial setup (or configuration management tool such as Ansible)
  • Step-by-Step Instructions

    5.1 Intune Enrollment for Linux
  • On the Linux device, install the Microsoft Intune app:
  •    # Ubuntu

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg

    sudo install -o root -g root -m 644 /tmp/microsoft.gpg /usr/share/keyrings/microsoft-archive-keyring.gpg

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/ubuntu/22.04/prod jammy main" | sudo tee /etc/apt/sources.list.d/microsoft-prod.list

    sudo apt update && sudo apt install -y intune-portal

    # RHEL 8+

    sudo dnf install -y https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

    sudo dnf install -y intune-portal

  • Launch the Intune Portal app and sign in with the user's Entra ID credentials.
  • Complete the enrollment flow. The device will appear in Intune under Devices > Linux.
  • 5.2 LUKS Disk Encryption

    LUKS encryption must be configured at OS install time or via manual partition encryption. Intune can enforce a compliance check for encryption but cannot enable LUKS remotely.

  • During OS installation, select Encrypt the new installation (Ubuntu) or Encrypt my data (RHEL).
  • Set a strong LUKS passphrase (minimum 20 characters, stored in Netier credential vault for the client).
  • For existing devices without LUKS, back up data and reinstall with encryption enabled (coordinate with client for downtime window).
  • Verify encryption status:
  •    # Check LUKS encryption status

    sudo cryptsetup luksDump /dev/sda3 # adjust partition as needed

    lsblk -f | grep -i luks

  • Configure Intune compliance policy to require encryption:
  • - Navigate to Devices > Compliance > + Create Policy > Linux.

    - Name: Linux-Compliance-{ClientName}.

    - Require encryption: Yes.

    - Assign to the Linux device group.

    5.3 SSH Hardening
  • Edit the SSH daemon configuration:
  •    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)

    sudo tee /etc/ssh/sshd_config.d/99-netier-hardening.conf << 'SSHEOF'

    # Netier SSH Hardening — NET-SOP-MDM-001

    PermitRootLogin no

    PasswordAuthentication no

    PubkeyAuthentication yes

    MaxAuthTries 3

    LoginGraceTime 60

    X11Forwarding no

    AllowTcpForwarding no

    PermitEmptyPasswords no

    ClientAliveInterval 300

    ClientAliveCountMax 2

    Protocol 2

    SSHEOF

    sudo systemctl restart sshd

    sudo systemctl status sshd

  • Verify SSH root login is disabled:
  •    ssh root@localhost  # Should be denied

    sudo sshd -T | grep -i permitrootlogin # Should show "no"

    5.4 Sudo Restriction and Logging
  • Configure sudo to log all commands:
  •    sudo tee /etc/sudoers.d/99-netier-logging << 'SUDOEOF'

    # Netier sudo logging — NET-SOP-MDM-001

    Defaults log_output

    Defaults!/usr/bin/sudoreplay !log_output

    Defaults logfile="/var/log/sudo.log"

    Defaults timestamp_timeout=5

    SUDOEOF

    sudo chmod 0440 /etc/sudoers.d/99-netier-logging

    sudo visudo -c # Validate syntax

  • Restrict sudo group membership:
  •    # List current sudo users

    getent group sudo # Ubuntu

    getent group wheel # RHEL

    # Remove unnecessary users from sudo group (replace USERNAME)

    # sudo deluser USERNAME sudo # Ubuntu

    # sudo gpasswd -d USERNAME wheel # RHEL

  • Ensure only named users have sudo access — never allow ALL=(ALL) NOPASSWD: ALL except for service accounts with documented justification.
  • 5.5 Unattended Security Updates
  • Ubuntu:
  •    sudo apt install -y unattended-upgrades

    sudo dpkg-reconfigure -plow unattended-upgrades # Select "Yes"

    # Configure to only auto-install security updates

    sudo tee /etc/apt/apt.conf.d/50unattended-upgrades << 'UUEOF'

    Unattended-Upgrade::Allowed-Origins {

    "${distro_id}:${distro_codename}-security";

    };

    Unattended-Upgrade::AutoFixInterruptedDpkg "true";

    Unattended-Upgrade::Remove-Unused-Dependencies "true";

    Unattended-Upgrade::Automatic-Reboot "false";

    Unattended-Upgrade::Mail "support@netier.com.au";

    UUEOF

    sudo systemctl enable --now unattended-upgrades

  • RHEL:
  •    sudo dnf install -y dnf-automatic

    sudo tee /etc/dnf/automatic.conf << 'DNFEOF'

    [commands]

    upgrade_type = security

    apply_updates = yes

    random_sleep = 3600

    [emitters]

    emit_via = email

    email_from = root@$(hostname -f)

    email_to = support@netier.com.au

    DNFEOF

    sudo systemctl enable --now dnf-automatic.timer

  • Verify automatic updates are working:
  •    # Ubuntu

    sudo unattended-upgrade --dry-run --debug

    # RHEL

    sudo dnf check-update --security

    systemctl status dnf-automatic.timer

    Verification Checks

    Linux devices enrolled in Intune and visible under Devices > Linux
    LUKS disk encryption enabled on all partitions containing data
    Intune compliance policy requires encryption and is flagging non-compliant devices
    SSH root login disabled (PermitRootLogin no)
    SSH password authentication disabled (PubkeyAuthentication only)
    Sudo usage logged to /var/log/sudo.log
    Sudo group membership restricted to authorised users only
    Unattended security updates enabled and tested (dry run)
    Email notifications configured for update results

    Rollback

  • To restore SSH configuration: sudo cp /etc/ssh/sshd_config.bak.{date} /etc/ssh/sshd_config && sudo systemctl restart sshd.
  • To remove sudo logging: sudo rm /etc/sudoers.d/99-netier-logging && sudo visudo -c.
  • To disable unattended upgrades: sudo systemctl disable --now unattended-upgrades (Ubuntu) or sudo systemctl disable --now dnf-automatic.timer (RHEL).
  • To unenroll from Intune: Run the Intune Portal app on the Linux device and select "Unenroll". This removes the Intune management profile but does not affect local configurations.

  • 6. Master Verification Checklist

    Windows 10/11

    All Windows devices enrolled in Intune
    CIS Level 1 baseline configuration profile applied and compliant
    BitLocker enabled with XTS-AES 256 on all OS and fixed drives
    BitLocker recovery keys stored in Entra ID
    Windows Update for Business ring assigned (feature updates deferred 14d, quality updates deferred 2d)
    Screen auto-lock at 15 minutes confirmed
    Consumer experience features disabled
    Windows Firewall enabled on all three profiles

    macOS

    All macOS devices enrolled via Automated Device Enrollment
    FileVault enabled with recovery keys escrowed to Intune
    SIP enabled verified via compliance policy
    Gatekeeper enabled
    Firewall enabled with stealth mode
    Screen lock requires password immediately after sleep
    macOS update policy assigned with correct deferral periods

    iOS/iPadOS

    Corporate-owned devices enrolled via ADE in supervised mode
    BYOD devices enrolled with user enrollment
    Alphanumeric passcode enforced (6 characters minimum)
    Jailbreak detection enabled and blocking non-compliant devices
    Managed/unmanaged data separation enforced
    Siri blocked while device is locked
    App Protection Policies applied to Microsoft 365 apps

    Android Enterprise

    Managed Google Play linked to Intune
    BYOD Work Profile copy/paste and screen capture blocked
    Complex PIN required (6 characters)
    Root detection enabled and blocking non-compliant devices
    Google Play Protect and SafetyNet attestation required
    USB file transfer blocked on corporate-owned devices

    Linux (Ubuntu/RHEL)

    Linux devices enrolled in Intune
    LUKS disk encryption enabled
    SSH root login disabled, password auth disabled
    Sudo usage restricted and logged
    Unattended security updates enabled and tested

    7. Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Networking & Perimeter

    Document ID: NET-SOP-NET-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 7.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Firewall Initial Hardening (WatchGuard / Fortinet)
  • IPS/IDS Configuration
  • VPN Configuration
  • VLAN Design & Segmentation
  • DNS Filtering
  • Configuration Backup & Change Management
  • Network Access Control (802.1X)
  • Master Verification Checklist
  • Document History

  • 1. Firewall Initial Hardening (WatchGuard / Fortinet)

    ISM Controls: ISM-1528 (Network Security), ISM-0631 (Firewall Rulebase), ISM-1181 (Deny by Default), ISM-1182 (Rule Review)

    Prerequisites

  • Physical or virtual firewall appliance provisioned and cabled (WAN, LAN, DMZ interfaces minimum)
  • Vendor support contract active and registered (WatchGuard: WatchGuard Cloud licence; Fortinet: FortiCare + FortiGuard subscription)
  • Out-of-band management access available during initial setup (console cable or dedicated management interface)
  • Client network design document approved (IP schema, VLAN plan, WAN details)
  • Netier engineer credentials for the management portal (WatchGuard Cloud / FortiGate GUI)
  • Step-by-Step Instructions

    1.1 WatchGuard Firebox Hardening
  • Connect to the Firebox via the console port or the default management IP (https://10.0.1.1:8080).
  • Complete the initial setup wizard:
  • - Set the admin passphrase (minimum 16 characters, stored in Netier credential vault under {ClientName} - WatchGuard Admin).

    - Set the status passphrase (read-only access, different from admin).

    - Configure the WAN interface with the client's ISP-provided IP / DHCP / PPPoE settings.

    - Configure the LAN (Trusted) interface with the client's internal gateway IP.

  • Register the device to WatchGuard Cloud (https://cloud.watchguard.com):
  • - Navigate to Administration > Devices > + Add Device.

    - Enter the serial number and activation key from the licence.

    - Enable cloud management if the client has opted for WatchGuard Cloud-managed deployment.

  • Apply the default-deny baseline:
  • - Navigate to Firewall > Firewall Policies.

    - Confirm the implicit Deny rule exists at the bottom of the policy list (it is present by default — do NOT delete it).

    - Delete or disable any pre-configured "Outgoing" allow-all rules from the factory default configuration.

    - Create explicit allow rules for required traffic only:

    - Outbound HTTPS (TCP 443): Trusted to Any-External

    - Outbound HTTP (TCP 80): Trusted to Any-External (if required; prefer HTTPS-only where possible)

    - Outbound DNS (UDP/TCP 53): Trusted to DNS filter IPs only (see Section 5)

    - Outbound NTP (UDP 123): Firebox to trusted NTP servers (e.g., time.cloudflare.com, time.google.com)

    - All other outbound traffic: Denied by the implicit deny rule.

    - All inbound traffic: Denied unless a specific NAT/port-forward rule is required (document justification for each).

  • Restrict management interface access:
  • - Navigate to System > Management Access.

    - Set Management IP Restrictions to allow only:

    - Netier office public IP(s)

    - Netier Tailscale IP range (100.64.0.0/10) if VPN-based management is used

    - Disable management access from the WAN interface entirely.

    - Enable HTTPS management on the Trusted interface only (port 8080 or custom).

    - Disable HTTP management (force HTTPS).

  • Configure admin session settings:
  • - Navigate to System > Global Settings.

    - Set idle timeout: 15 minutes.

    - Enable login banner: Authorised access only. All activity is monitored and logged.

  • Enable logging:
  • - Navigate to System > Logging.

    - Configure log server: WatchGuard Cloud (preferred) or a local syslog server.

    - Log level: Information (minimum) for all policies.

    - Enable traffic logging for all Deny rules.

    - Enable diagnostic logging for VPN, authentication, and system events.

    1.2 Fortinet FortiGate Hardening
  • Connect to the FortiGate via the console port or the default management IP (https://192.168.1.99).
  • Complete the initial setup:
  • - Set the admin password (minimum 16 characters, stored in Netier credential vault).

    - Navigate to System > Settings and set:

    - Hostname: {ClientName}-FW01

    - Timezone: Australia/Sydney (or appropriate client timezone)

    - Idle timeout: 15 minutes

    - Login banner: Authorised access only. All activity is monitored and logged.

  • Register the device to FortiCloud (https://support.fortinet.com) and activate FortiGuard licences.
  • Configure interfaces:
  • - Navigate to Network > Interfaces.

    - Configure WAN1: ISP-provided settings.

    - Configure LAN (port1 or aggregate): client internal gateway IP.

    - Disable unused interfaces: Navigate to each unused interface and set Administrative Access to None.

  • Apply default-deny baseline:
  • - Navigate to Policy & Objects > Firewall Policy.

    - Verify the implicit deny rule at the bottom of the policy table (ID 0, action Deny, logging enabled).

    - Remove any factory-default allow-all policies.

    - Create explicit allow policies (same pattern as WatchGuard above).

    - Enable logging on all policies: set Log Allowed Traffic to "All Sessions" and Log Violation Traffic to enabled on the implicit deny.

    FortiGate CLI Alternative:
    # FortiGate CLI — accessed via SSH or console
    

    config system global

    set admin-lockout-threshold 3

    set admin-lockout-duration 300

    set admin-https-redirect enable

    set admin-http-redirect enable

    set timezone 67

    set hostname "{ClientName}-FW01"

    set admintimeout 15

    set pre-login-banner enable

    set pre-login-banner-message "Authorised access only. All activity is monitored and logged."

    end

    Restrict management access to Netier IPs only

    config system interface

    edit "wan1"

    set allowaccess ping

    # No HTTPS/SSH on WAN — management via LAN or VPN only

    next

    edit "lan"

    set allowaccess ping https ssh

    set trust-ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

    next

    end

    Create Netier management address group

    config firewall address

    edit "Netier-Mgmt-IPs"

    set type iprange

    set start-ip {NETIER_PUBLIC_IP_START}

    set end-ip {NETIER_PUBLIC_IP_END}

    next

    end

    config system admin

    edit "admin"

    set trusthost1 {NETIER_PUBLIC_IP}/32

    set trusthost2 100.64.0.0/10

    next

    end

  • Firmware management:
  • - Check current firmware: System > Firmware.

    - Policy: Maintain N-1 stable release (e.g., if 7.6.x is latest stable, run 7.4.x latest patch or 7.6.x minus one minor).

    - Critical CVE patches: Apply within 48 hours of vendor advisory.

    - Non-critical firmware upgrades: Apply within 30 days during a scheduled maintenance window.

    - Always back up the configuration before upgrading firmware.

    Verification Checks

    Admin passphrase set to minimum 16 characters and stored in credential vault
    Implicit deny rule present at the bottom of all policy tables
    No factory-default allow-all rules remain
    Explicit allow rules created only for documented required traffic
    Management interface access restricted to Netier IPs only
    WAN management interface access disabled
    HTTPS management enforced (HTTP disabled)
    Idle timeout set to 15 minutes
    Login banner configured
    Logging enabled on all policies (including deny rules)
    Firmware at N-1 stable or patched for critical CVEs within 48 hours
    Configuration backed up before any firmware upgrade
    Unused interfaces disabled

    Rollback

  • If a firewall policy blocks legitimate traffic, identify the policy by reviewing logs (Dashboard > Traffic Monitor on WatchGuard; Log & Report > Forward Traffic on FortiGate), create an appropriate allow rule, and document the change.
  • If a firmware upgrade causes instability, restore the previous configuration backup and downgrade firmware via the vendor's documented procedure.
  • If management access is accidentally locked out, use the console port for recovery. On FortiGate: reset the admin password via console with config system admin / edit admin / set password {new} / end. On WatchGuard: factory reset via the reset button (hold 10 seconds) and restore from backup.

  • 2. IPS/IDS Configuration

    ISM Controls: ISM-1528 (Network Security), ISM-0631 (Firewall Rulebase)

    Prerequisites

  • Firewall hardened per Section 1
  • IPS/IDS licence active (WatchGuard: Intrusion Prevention Service; Fortinet: FortiGuard IPS subscription)
  • Signature database up to date (auto-update enabled)
  • Step-by-Step Instructions

    2.1 WatchGuard IPS
  • Navigate to Security Services > Intrusion Prevention.
  • Enable IPS on all firewall policies (or globally if supported by the licence tier).
  • Configure the IPS action mode:
  • - High severity signatures: Action = Block (Drop and Log)

    - Critical severity signatures: Action = Block (Drop and Log)

    - Medium severity signatures: Action = Block (Drop and Log)

    - Low severity signatures: Action = Alarm (Log Only)

    - Informational signatures: Action = Alarm (Log Only)

  • Enable automatic signature updates:
  • - Navigate to System > Subscription Services > Signature Updates.

    - Set update frequency: Every 1 hour.

  • Configure IPS exceptions (only when a documented false positive is confirmed):
  • - Navigate to Security Services > Intrusion Prevention > Exceptions.

    - Add the specific signature ID with a justification note.

    - Exceptions must be reviewed quarterly and removed if the false positive no longer occurs.

    2.2 Fortinet IPS
  • Navigate to Security Profiles > Intrusion Prevention.
  • Create or edit the IPS sensor: Netier-IPS-Sensor-{ClientName}.
  • Configure signature actions:
  • - Critical severity: Action = Block

    - High severity: Action = Block

    - Medium severity: Action = Block

    - Low severity: Action = Monitor (Log Only)

    - Informational: Action = Monitor (Log Only)

  • Enable IPS deep packet inspection for SSL traffic (requires SSL/TLS inspection profile — see note below).
  • Apply the IPS sensor to all firewall policies:
  • - Navigate to Policy & Objects > Firewall Policy.

    - Edit each policy and under Security Profiles, enable IPS and select the Netier-IPS-Sensor-{ClientName} profile.

    FortiGate CLI Alternative:
    config ips sensor
    

    edit "Netier-IPS-Sensor"

    config entries

    edit 1

    set status enable

    set log enable

    set severity critical high

    set action block

    next

    edit 2

    set status enable

    set log enable

    set severity medium

    set action block

    next

    edit 3

    set status enable

    set log enable

    set severity low info

    set action pass

    set log-packet enable

    next

    end

    next

    end

  • Enable automatic signature updates:
  • - Navigate to System > FortiGuard > Update.

    - Verify IPS definitions are updating (check last update timestamp).

    - Set update schedule: Push-based (real-time from FortiGuard) or scheduled hourly.

    Verification Checks

    IPS enabled on all relevant firewall policies
    High and Critical severity signatures set to Block mode
    Medium severity signatures set to Block mode
    Low and Informational signatures set to Monitor/Alarm (log only)
    Automatic signature updates enabled and updating at least hourly
    IPS exceptions documented with justification (reviewed quarterly)
    IPS logs visible in the logging platform (WatchGuard Cloud or FortiAnalyzer/syslog)

    Rollback

  • If IPS is blocking legitimate traffic (false positive): Identify the signature ID from the IPS log, add it to the exceptions list with documentation, and notify the Netier Security Lead for quarterly review.
  • If IPS causes performance degradation: Temporarily change Medium severity to Monitor (log only) to reduce processing load while investigating the cause. Do not disable IPS entirely without Security Lead approval.

  • 3. VPN Configuration

    ISM Controls: ISM-1182 (Encrypted Communications), ISM-0520 (Remote Access)

    Prerequisites

  • Firewall hardened per Section 1
  • VPN licence active (if applicable — most enterprise firewalls include VPN in the base licence)
  • MFA solution configured: RADIUS server (e.g., NPS with Azure MFA extension) or SAML IdP (Entra ID)
  • VPN client software approved and tested (WatchGuard Mobile VPN / FortiClient)
  • Client VPN policy approved (who gets VPN access, from which devices)
  • Step-by-Step Instructions

    3.1 Protocol Enforcement
  • Block legacy VPN protocols:
  • - PPTP: Do NOT configure any PPTP VPN tunnels. If legacy PPTP tunnels exist, migrate users to IKEv2 or SSL VPN and delete the PPTP configuration.

    - L2TP without IPsec: Do NOT configure L2TP without IPsec encryption. If L2TP/IPsec is in use, migrate to IKEv2 (preferred) or SSL VPN.

  • Approved protocols:
  • - IKEv2/IPsec (preferred for site-to-site and client VPN): Strong encryption, native OS client support, best performance.

    - SSL VPN (alternative for client VPN when IKEv2 is not feasible): Firewalled to specific portal URL on port 443.

    3.2 WatchGuard IKEv2 VPN with MFA
  • Navigate to VPN > Mobile VPN > IKEv2.
  • Enable Mobile VPN with IKEv2.
  • Configure Phase 1 settings:
  • - Authentication: Certificate-based (preferred) or EAP with RADIUS

    - Encryption: AES-256-GCM

    - Hash: SHA-384 or SHA-256

    - DH Group: 20 (NIST P-384) or 21 (NIST P-521)

    - SA Lifetime: 28800 seconds (8 hours)

  • Configure Phase 2 settings:
  • - Encryption: AES-256-GCM

    - SA Lifetime: 3600 seconds (1 hour)

    - Perfect Forward Secrecy: Enabled (DH Group 20)

  • Configure RADIUS authentication for MFA:
  • - Navigate to Authentication > Servers > RADIUS.

    - Add the RADIUS server (NPS with Azure MFA extension):

    - IP: (NPS server internal IP)

    - Port: 1812

    - Shared secret: (stored in Netier credential vault under {ClientName} - RADIUS Shared Secret)

    - Timeout: 60 seconds (to allow for MFA prompt)

    - Navigate to Authentication > Authentication Policy.

    - Add the RADIUS server to the authentication chain for VPN users.

  • Define VPN user group:
  • - Navigate to Authentication > Users and Groups.

    - Create a group VPN-Users and add authorised users.

    - Map this group to the IKEv2 VPN configuration.

  • Configure split tunnelling (if approved by client):
  • - Under the IKEv2 settings, define the allowed resources (client internal subnets only).

    - Do NOT route all internet traffic through the VPN unless the client specifically requires it for compliance.

  • Configure client-side:
  • - Windows: Use the native IKEv2 VPN client (Settings > Network & Internet > VPN > Add VPN).

    - macOS/iOS: Use the native IKEv2 VPN client (System Settings > VPN > Add VPN Configuration).

    - Distribute VPN configuration via Intune VPN profile for managed devices.

    3.3 Fortinet SSL VPN with SAML MFA
  • Navigate to VPN > SSL-VPN Settings.
  • Configure:
  • - Listen on port: 443 (or 10443 if port 443 is used for other services)

    - Listen on interface: WAN1

    - Restrict access: Enable Source IP restriction to known countries (AU at minimum; add others per client travel requirements)

    - Server certificate: Valid publicly trusted certificate (Let's Encrypt or purchased CA cert)

    - Idle disconnect timeout: 300 seconds (5 minutes)

    - Authentication: SAML (preferred for Entra ID integration)

  • Configure SAML authentication with Entra ID:
  • - In the Entra ID portal (https://entra.microsoft.com), navigate to Enterprise Applications > + New Application > FortiGate SSL VPN (from the gallery).

    - Configure SAML SSO:

    - Identifier (Entity ID): https://{firewall-fqdn}/remote/saml/metadata

    - Reply URL: https://{firewall-fqdn}/remote/saml/login

    - Sign-on URL: https://{firewall-fqdn}/remote/saml/login

    - Download the Federation Metadata XML.

    - On the FortiGate, navigate to User & Authentication > Single Sign-On > + Create New.

    - Upload the Federation Metadata XML from Entra ID.

    - Map the Entra ID groups to FortiGate user groups for VPN access.

  • Create SSL VPN firewall policies:
  • - Navigate to Policy & Objects > Firewall Policy.

    - Source: SSL VPN tunnel interface, VPN user group.

    - Destination: Internal subnets (specific resources, not "all").

    - Service: Only required services (e.g., RDP, HTTPS, SMB).

    - Enable logging: All sessions.

    FortiGate CLI Alternative:
    config vpn ssl settings
    

    set status enable

    set servercert "{CERT_NAME}"

    set tunnel-ip-pools "SSL-VPN-Pool"

    set port 443

    set source-interface "wan1"

    set source-address "Geo-AU"

    set idle-timeout 300

    set auth-timeout 28800

    set dtls-tunnel enable

    set ssl-min-proto-ver tls1-2

    end

    config vpn ssl web portal

    edit "tunnel-access"

    set tunnel-mode enable

    set web-mode disable

    set split-tunneling enable

    set split-tunneling-routing-address "{CLIENT_INTERNAL_SUBNETS}"

    set ip-pools "SSL-VPN-Pool"

    next

    end

    Verification Checks

    PPTP and L2TP (without IPsec) protocols are not configured anywhere on the firewall
    IKEv2/IPsec or SSL VPN is the only configured VPN protocol
    VPN encryption uses AES-256 (GCM preferred)
    MFA enforced for all VPN connections (RADIUS or SAML)
    RADIUS timeout set to 60 seconds (to accommodate MFA prompt)
    VPN user group restricted to authorised users only
    Split tunnelling configured (if approved) with specific internal subnets only
    SSL VPN portal uses a valid publicly trusted certificate
    SSL VPN restricted to approved source countries (geo-IP filtering)
    VPN firewall policies restrict access to specific services (not "allow all")
    VPN sessions logged with full detail

    Rollback

  • If VPN MFA is locking out users, verify the RADIUS/SAML server is reachable from the firewall. Temporarily add a local user with a strong password for break-glass access (document and remove after resolution).
  • If VPN performance is degraded, check the firewall CPU/memory utilisation. Consider reducing the number of concurrent SSL VPN users or moving to IKEv2 (less CPU-intensive).
  • If a VPN protocol migration is incomplete and users cannot connect, maintain the old VPN configuration alongside the new one until all users have migrated, then decommission the old protocol.

  • 4. VLAN Design & Segmentation

    ISM Controls: ISM-1528 (Network Security), ISM-0631 (Firewall Rulebase)

    Prerequisites

  • Managed switches deployed (e.g., Cisco Catalyst, Meraki, Aruba, UniFi — must support 802.1Q VLAN tagging)
  • Firewall configured with VLAN subinterfaces or dedicated interfaces per VLAN
  • Client network design document with approved VLAN plan and IP addressing scheme
  • Trunk ports configured between switches and the firewall
  • Step-by-Step Instructions

    4.1 Standard VLAN Template

    Apply the following VLAN design for all new client deployments. Adjust VLAN IDs and subnets per the client's IP addressing plan.

    VLAN IDNamePurposeSubnet (example)DHCP ScopeFirewall Zone
    1DefaultDisabled / unusedNoneNone
    10ManagementNetwork device management (switches, APs, firewalls)10.{site}.10.0/24Static onlyManagement
    20ServerServers, hypervisors, storage10.{site}.20.0/24Static onlyTrusted
    30ClientUser workstations, laptops10.{site}.30.0/24DHCPTrusted
    40VoiceVoIP phones (QoS tagged)10.{site}.40.0/24DHCPTrusted
    50GuestGuest Wi-Fi, visitor access10.{site}.50.0/24DHCPGuest
    60IoTPrinters, cameras, building management, smart devices10.{site}.60.0/24DHCP/StaticIoT
    4.2 Firewall Inter-VLAN Policy Rules
  • On the firewall, create VLAN subinterfaces (or dedicated interfaces) for each VLAN.
  • Create inter-VLAN firewall policies following the principle of least privilege:
  • Management VLAN (10):

    - Allowed FROM: Netier management IPs only (via VPN or Netier office IPs)

    - Allowed TO: All VLANs (for device management)

    - Blocked FROM: All other VLANs

    Server VLAN (20):

    - Allowed FROM: Client VLAN (30) for specific services only (e.g., TCP 443, 445, 3389 to specific server IPs)

    - Allowed TO: Internet for updates (via proxy/filtered DNS)

    - Blocked FROM: Guest (50), IoT (60)

    Client VLAN (30):

    - Allowed TO: Server VLAN (20) for specific services

    - Allowed TO: Internet (via DNS filter and web proxy)

    - Blocked TO: Management (10), Voice (40) unless SIP client needed, Guest (50), IoT (60)

    Voice VLAN (40):

    - Allowed TO: SIP provider external IPs and ports (SIP TCP/UDP 5060-5061, RTP UDP 10000-20000)

    - Allowed TO: Voice gateway / PBX in Server VLAN (if on-prem)

    - Blocked TO: All other VLANs and general internet

    Guest VLAN (50):

    - Allowed TO: Internet only (HTTPS TCP 443, HTTP TCP 80, DNS UDP 53 to filtered DNS)

    - Blocked TO: All internal VLANs (complete isolation)

    - Rate limited: Per-client bandwidth cap (e.g., 10 Mbps down / 5 Mbps up)

    - Captive portal: Enabled (acceptance of Acceptable Use Policy)

    IoT VLAN (60):

    - Allowed TO: Specific whitelisted outbound destinations only (e.g., cloud management portals for printers, cameras):

    - Printer cloud: vendor-specific domains

    - Camera NVR: Server VLAN NVR IP only

    - Building management: vendor cloud portals

    - Blocked TO: All internal VLANs except explicitly whitelisted

    - Blocked FROM: Internet inbound (no port forwarding to IoT devices)

    - All other outbound traffic: Denied

  • Document all inter-VLAN rules in the client's firewall rulebase spreadsheet and save to: Clients/{ClientName}/Network/Firewall Rules - {Date}.xlsx.
  • Switch Configuration Example (Cisco IOS):
    ! Create VLANs
    

    vlan 10

    name Management

    vlan 20

    name Server

    vlan 30

    name Client

    vlan 40

    name Voice

    vlan 50

    name Guest

    vlan 60

    name IoT

    ! Trunk port to firewall

    interface GigabitEthernet0/1

    description Trunk to Firewall

    switchport mode trunk

    switchport trunk allowed vlan 10,20,30,40,50,60

    switchport trunk native vlan 999

    spanning-tree portfast trunk

    ! Access port for client workstation

    interface GigabitEthernet0/10

    description Client Workstation

    switchport mode access

    switchport access vlan 30

    switchport voice vlan 40

    spanning-tree portfast

    spanning-tree bpduguard enable

    ! Access port for IoT device (printer)

    interface GigabitEthernet0/20

    description IoT - Printer

    switchport mode access

    switchport access vlan 60

    spanning-tree portfast

    spanning-tree bpduguard enable

    ! Disable unused ports

    interface range GigabitEthernet0/40 - 48

    shutdown

    switchport access vlan 999

    description UNUSED - DISABLED

    Verification Checks

    All standard VLANs created (Management, Server, Client, Voice, Guest, IoT)
    Default VLAN 1 is not used for any production traffic
    Trunk ports between switches and firewall carry only required VLANs
    Native VLAN set to an unused VLAN (e.g., 999), not VLAN 1
    Inter-VLAN firewall policies follow least privilege (documented per client)
    Guest VLAN completely isolated from all internal VLANs
    Guest VLAN rate limited and captive portal enabled
    IoT VLAN whitelisted outbound only (no unrestricted internet access)
    Management VLAN accessible only from Netier management IPs
    Unused switch ports shut down and assigned to an unused VLAN
    Firewall rulebase documented and saved to client SharePoint

    Rollback

  • If VLAN segmentation breaks an application, identify the traffic flow (source VLAN, destination VLAN, port/protocol) from firewall logs, create a targeted allow rule, and document the exception.
  • If a trunk port misconfiguration causes a VLAN to lose connectivity, verify the trunk allowed VLAN list and native VLAN settings on both the switch and the firewall.
  • To revert to a flat network (emergency only, Security Lead approval required): Remove VLAN assignments from switch ports, set all ports to a single VLAN, and update the firewall to route on the single subnet.

  • 5. DNS Filtering

    ISM Controls: ISM-1528 (Network Security), ISM-1782 (Web Content Filtering)

    Prerequisites

  • DNS filtering platform account provisioned: Cloudflare Gateway (https://dash.teams.cloudflare.com) or Cisco Umbrella (https://dashboard.umbrella.com)
  • Firewall configured to intercept and redirect DNS queries (prevent DNS bypass)
  • Client DHCP scopes configured to assign the DNS filter IPs as the primary DNS servers
  • Client agreement covers DNS filtering and acceptable use
  • Step-by-Step Instructions

    5.1 Cloudflare Gateway Setup
  • Log in to Cloudflare Zero Trust at https://dash.teams.cloudflare.com.
  • Navigate to Gateway > DNS Locations > + Add Location.
  • Name: {ClientName} - {SiteName}.
  • Configure:
  • - Source IP: Client's public WAN IP (for IP-based identification).

    - DNS-over-HTTPS endpoint: Note the unique DoH URL for this location.

    - Assigned DNS IPs: Note the Cloudflare Gateway resolver IPs assigned to this location.

  • Navigate to Gateway > Policies > DNS Policies > + Create Policy.
  • Create the Netier standard DNS blocking policy:
  • - Policy Name: Netier-Standard-Block-{ClientName}.

    - Rule 1: Security Threats

    - Selector: Security Categories

    - Value: Malware, Botnet Command & Control, Phishing, Spyware, Cryptomining, DGA Domains, Newly Seen Domains

    - Action: Block

    - Rule 2: Content Filtering (adjust per client policy)

    - Selector: Content Categories

    - Value: Adult Content, Gambling, Weapons, Drugs, Questionable Content

    - Action: Block

    - Rule 3: Allow All Other

    - Action: Allow (implicit — Cloudflare allows by default)

  • Enable activity logging:
  • - Navigate to Settings > Network > Activity Logging.

    - Enable DNS logging.

    - Set retention: 90 days (minimum per TCF requirement).

  • Configure the client's DHCP scopes to use the Cloudflare Gateway DNS IPs:
  • - On the firewall DHCP server (or Windows DHCP if applicable):

    - Primary DNS: Cloudflare Gateway IP 1 (from the location setup)

    - Secondary DNS: Cloudflare Gateway IP 2

    - Apply to all DHCP scopes: Client VLAN (30), Voice VLAN (40), Guest VLAN (50), IoT VLAN (60).

    - Server VLAN (20) and Management VLAN (10): Set DNS to the Cloudflare Gateway IPs in static network configurations.

    5.2 Cisco Umbrella Setup
  • Log in to the Umbrella Dashboard at https://dashboard.umbrella.com.
  • Navigate to Deployments > Core Identities > Networks > + Add.
  • Enter the client's public WAN IP and name: {ClientName} - {SiteName}.
  • Navigate to Policies > DNS Policies > + Add Policy.
  • Create the standard blocking policy:
  • - Name: Netier-Standard-{ClientName}.

    - Security Settings:

    - Block: Malware, Command & Control Callbacks, Phishing, Cryptomining, Newly Seen Domains

    - Content Categories:

    - Block: Adult, Gambling, Weapons, Hate/Discrimination, Drugs (adjust per client)

    - Application Settings:

    - Block or monitor specific SaaS applications per client policy

  • Enable logging:
  • - Navigate to Admin > Log Management.

    - Enable full DNS logging.

    - Set retention to 90 days.

    - Configure S3 export if the client requires longer retention.

  • Configure the client's DHCP scopes to use Umbrella DNS IPs:
  • - Primary DNS: 208.67.222.222

    - Secondary DNS: 208.67.220.220

    - Or use the site-specific Umbrella Virtual Appliance IPs if deployed.

    5.3 Prevent DNS Bypass (Firewall Rule)
  • On the firewall, create a rule to block all DNS traffic to destinations other than the approved DNS filter IPs:
  • - Source: All internal VLANs

    - Destination: Any (NOT the approved DNS filter IPs)

    - Service: DNS (UDP/TCP 53)

    - Action: Deny (with logging)

  • Create a separate allow rule above the deny:
  • - Source: All internal VLANs

    - Destination: Approved DNS filter IPs only

    - Service: DNS (UDP/TCP 53)

    - Action: Allow

  • Additionally, block DNS-over-HTTPS (DoH) bypass for non-managed browsers:
  • - Block outbound TCP 443 to known public DoH providers (e.g., 8.8.8.8, 1.1.1.1 — unless using Cloudflare Gateway DoH directly).

    - On managed endpoints, configure the browser via Intune to use the approved DoH resolver or disable DoH.

    Verification Checks

    DNS filtering platform account provisioned and location configured
    Standard blocking policy applied (malware, botnet, phishing, cryptomining)
    Content filtering categories configured per client policy
    Activity logging enabled with 90-day retention
    DHCP scopes on all VLANs point to the DNS filter IPs
    Firewall rule blocks DNS to any destination other than approved filter IPs
    DNS bypass via DoH addressed (firewall block or endpoint configuration)
    Test blocked domain resolution from a client device (e.g., nslookup a known-blocked test domain)
    Test allowed domain resolution works correctly

    Rollback

  • If DNS filtering blocks a legitimate business-critical domain, add it to the allow list in the DNS filtering platform immediately, then investigate whether the block was a false positive or a policy misconfiguration.
  • If DNS filtering causes widespread connectivity issues (e.g., platform outage), temporarily change DHCP DNS servers to a public resolver (e.g., 8.8.8.8 / 8.8.4.4) and notify the client. Revert to DNS filter IPs once the platform is restored.
  • Do not disable the firewall DNS bypass prevention rule unless temporarily troubleshooting — restore it immediately after.

  • 6. Configuration Backup & Change Management

    ISM Controls: ISM-1528 (Network Security)

    Prerequisites

  • Backup platform provisioned: Unimus (https://unimus.net), Auvik (https://my.auvik.com), or Oxidized (self-hosted)
  • Network devices accessible via SSH or HTTPS API from the backup platform
  • Dedicated service account on each network device for backup access (read-only where possible)
  • Backup storage location with encryption at rest
  • Change management process documented in ConnectWise Manage
  • Step-by-Step Instructions

    6.1 Unimus Backup Configuration
  • Log in to Unimus at the instance URL (e.g., https://unimus.netier.team or cloud instance).
  • Navigate to Devices > + Add Device.
  • For each network device (firewalls, switches, APs, routers):
  • - Enter the device IP address (use the Management VLAN IP).

    - Set the connection protocol: SSH (preferred) or HTTPS API.

    - Enter the backup service account credentials (stored in Netier credential vault under {ClientName} - Network Backup Account).

    - Set the device type (auto-detect or manual: WatchGuard, FortiGate, Cisco IOS, etc.).

  • Navigate to Settings > Backup Schedule.
  • Set the backup schedule:
  • - Frequency: Daily at 01:00 AEST.

    - Retention: 90 days (minimum per TCF requirement).

    - On-change backup: Enable (triggers an immediate backup when a configuration change is detected).

  • Configure notifications:
  • - Navigate to Settings > Notifications.

    - Enable alerts for: Backup Failure, Configuration Change Detected, Device Unreachable.

    - Send to: noc@netier.com.au and the Netier Microsoft Teams "Network Alerts" channel webhook.

  • Verify the first backup completes successfully:
  • - Navigate to Devices > {Device} > Backups.

    - Confirm a backup entry exists with status "Success".

    - Click on the backup to view the configuration content (verify it is a complete config, not a partial or error).

    6.2 Auvik Backup Configuration
  • Log in to Auvik at https://my.auvik.com.
  • Navigate to Manage > Network > Devices.
  • Verify all network devices are discovered and monitored.
  • Auvik automatically backs up device configurations upon discovery and on change detection.
  • Verify backup settings:
  • - Navigate to Admin > Backup Settings.

    - Confirm retention is set to at least 90 days.

    - Confirm SNMP credentials and SSH credentials are configured for all device types.

  • To view a device's configuration backup:
  • - Click on the device, navigate to Configuration.

    - View the current configuration and diff against previous versions.

    6.3 Oxidized Backup Configuration (Self-Hosted)
  • SSH into the Oxidized server.
  • Edit the router database file to add devices:
  •    sudo vim /etc/oxidized/router.db

    # Format: hostname:model:username:password

    # Example:

    # 10.0.10.1:fortigate:backup-svc:PASSWORD

    # 10.0.10.2:ios:backup-svc:PASSWORD

  • Edit the Oxidized configuration:
  •    sudo vim /etc/oxidized/config

    Key settings:

       interval: 86400  # Backup every 24 hours (seconds)

    use_syslog: true

    log: /var/log/oxidized/oxidized.log

    input:

    default: ssh

    ssh:

    secure: true

    output:

    default: git

    git:

    single_repo: true

    repo: /var/lib/oxidized/configs.git

  • Restart Oxidized: sudo systemctl restart oxidized.
  • Verify backups: cd /var/lib/oxidized/configs.git && git log --oneline -10.
  • 6.4 Change Management Process
  • All network configuration changes must be logged in ConnectWise Manage as a ticket:
  • - Board: Projects or Service Desk

    - Type: Network Change

    - Include: Description of change, affected devices, rollback plan, change window.

  • For changes that are classified as high-risk (firewall rule changes, firmware upgrades, VLAN changes):
  • - Require peer review by a second Netier engineer.

    - Schedule during an approved maintenance window.

    - Take a manual configuration backup immediately before the change.

    - Test and verify after the change.

    - Document the result in the ConnectWise ticket.

  • For changes triggered by a detected configuration drift (Unimus/Auvik alert):
  • - Investigate the change: Was it authorised?

    - If unauthorised, restore the previous configuration from backup.

    - Document the incident and escalate per the incident response process.

    Verification Checks

    All network devices added to the backup platform (Unimus/Auvik/Oxidized)
    Daily backup schedule configured at 01:00 AEST
    Backup retention set to 90 days minimum
    On-change backup enabled (if supported by the platform)
    Backup failure alerts configured and sent to noc@netier.com.au
    First backup verified for each device (complete configuration captured)
    Change management process documented and followed for all network changes
    High-risk changes require peer review and approved maintenance window
    Unauthorised configuration changes detected and investigated

    Rollback

  • To restore a device configuration from backup: In Unimus/Auvik, navigate to the device's backup history, select the desired version, and use the "Push Config" feature (if supported). Otherwise, manually paste the backup configuration via SSH/console.
  • If the backup platform itself is unavailable, use the most recent manual backup stored in the client's SharePoint folder: Clients/{ClientName}/Network/Config Backups/.
  • If a configuration restore causes issues, restore the configuration that was active immediately before the restore attempt (the backup platform should have captured it via on-change backup).

  • 7. Network Access Control (802.1X)

    ISM Controls: ISM-0520 (Remote Access), ISM-1528 (Network Security)

    Prerequisites

  • RADIUS server deployed: Microsoft NPS (Network Policy Server) on Windows Server, or cloud RADIUS (e.g., Portnox, SecureW2)
  • PKI infrastructure for EAP-TLS: Internal CA or cloud-managed CA (e.g., Intune SCEP/PKCS certificate profiles)
  • Managed switches supporting 802.1X (port-based access control)
  • Wireless access points supporting 802.1X (WPA3-Enterprise or WPA2-Enterprise)
  • Entra ID / Active Directory for user and machine authentication
  • Intune for certificate deployment to managed endpoints
  • Step-by-Step Instructions

    7.1 RADIUS Server Configuration (Microsoft NPS)
  • Install the NPS role on a Windows Server:
  •    Install-WindowsFeature NPAS -IncludeManagementTools

  • Open the Network Policy Server console (nps.msc).
  • Register the NPS server in Active Directory:
  • - Right-click the server name in the NPS console and select Register Server in Active Directory.

  • Add RADIUS clients (each switch and AP):
  • - Navigate to RADIUS Clients and Servers > RADIUS Clients > + New.

    - Friendly name: {Switch/AP-Hostname}

    - IP address: Management VLAN IP of the device

    - Shared secret: Generate a strong 32+ character secret (store in Netier credential vault under {ClientName} - 802.1X RADIUS Secrets)

    - Repeat for each switch and access point.

  • Create a Connection Request Policy:
  • - Navigate to Policies > Connection Request Policies > + New.

    - Name: 802.1X-Wired-and-Wireless.

    - Conditions: NAS Port Type = Ethernet AND Wireless-IEEE 802.11.

    - Authentication: Forward to the local NPS server.

  • Create a Network Policy for EAP-TLS (certificate-based):
  • - Navigate to Policies > Network Policies > + New.

    - Name: EAP-TLS-Managed-Devices.

    - Conditions:

    - Windows Groups: Domain Computers (or a specific security group for 802.1X-enabled devices)

    - NAS Port Type: Ethernet, Wireless-IEEE 802.11

    - Authentication Type: EAP (Smart Card or other certificate)

    - Constraints:

    - Authentication Methods: Microsoft Smart Card or other certificate (EAP-TLS)

    - Require certificate from a trusted CA: Select the internal CA

    - Settings:

    - RADIUS Attributes > Standard: Tunnel-Type = VLAN, Tunnel-Medium-Type = 802, Tunnel-Private-Group-Id = 30 (Client VLAN)

    - For specific groups (e.g., servers), set the VLAN to 20

    - Grant access.

  • Create a Network Policy for MAB (MAC Authentication Bypass — for non-802.1X devices):
  • - Name: MAB-NonManaged-Devices.

    - Conditions:

    - NAS Port Type: Ethernet

    - Calling Station ID: regex matching known MAC addresses (maintained in a MAC whitelist)

    - Constraints:

    - Authentication Methods: Unencrypted authentication (PAP/SPAP) — required for MAB

    - Settings:

    - VLAN assignment: IoT VLAN (60) for printers, cameras, etc.

    - Grant access.

    - Ensure this policy is lower priority than the EAP-TLS policy.

    7.2 Switch 802.1X Configuration (Cisco IOS Example)
    ! Enable 802.1X globally
    

    aaa new-model

    aaa authentication dot1x default group radius

    aaa authorization network default group radius

    aaa accounting dot1x default start-stop group radius

    dot1x system-auth-control

    ! RADIUS server configuration

    radius server NPS-PRIMARY

    address ipv4 10.{site}.20.10 auth-port 1812 acct-port 1813

    key {RADIUS_SHARED_SECRET}

    ! 802.1X access port configuration

    interface GigabitEthernet0/10

    description Client Workstation - 802.1X

    switchport mode access

    switchport access vlan 30

    authentication port-control auto

    authentication order dot1x mab

    authentication priority dot1x mab

    dot1x pae authenticator

    mab

    authentication host-mode multi-auth

    authentication timer reauthenticate 3600

    spanning-tree portfast

    spanning-tree bpduguard enable

    7.3 Certificate Deployment via Intune (EAP-TLS)
  • In the Intune Admin Centre, navigate to Devices > Configuration > + Create > New Policy.
  • Platform: Windows 10 and later. Profile: PKCS Certificate or SCEP Certificate.
  • Configure:
  • - Certificate type: Device

    - Subject name format: CN={{DeviceName}}

    - Certificate validity period: 1 year

    - Key storage provider: TPM (if available), otherwise Software KSP

    - Root certificate profile: Assign the internal CA root cert via a Trusted Certificate profile

  • Assign to the 802.1X device group.
  • Create a Wi-Fi profile (for wireless 802.1X):
  • - Navigate to Devices > Configuration > + Create > Wi-Fi.

    - SSID: {ClientName}-Corp

    - Security: WPA3-Enterprise (or WPA2-Enterprise if devices don't support WPA3)

    - EAP Type: EAP-TLS

    - Certificate: Reference the PKCS/SCEP certificate profile created above

    - RADIUS server: NPS server(s)

  • Assign to the device group.
  • PowerShell — NPS Health Check:
    # Check NPS service status
    

    Get-Service -Name IAS | Select-Object Status, StartType

    View recent NPS authentication events (last 24 hours)

    Get-WinEvent -LogName "Security" -FilterXPath "*[System[(EventID=6272 or EventID=6273)]]" -MaxEvents 50 |

    Select-Object TimeCreated, Message |

    Format-Table -AutoSize -Wrap

    Export NPS configuration for backup

    Export-NpsConfiguration -Path "C:\Backup\NPS-Config-$(Get-Date -Format 'yyyyMMdd').xml"

    Verification Checks

    NPS server installed, registered in AD, and service running
    RADIUS clients added for all switches and access points
    EAP-TLS network policy created with correct VLAN assignment
    MAB policy created for non-802.1X devices with IoT VLAN assignment
    MAB policy is lower priority than EAP-TLS policy
    Switch ports configured for 802.1X with MAB fallback
    Intune PKCS/SCEP certificate profile deployed to managed devices
    Intune Wi-Fi profile deployed for wireless 802.1X
    Test a managed device: authenticates via EAP-TLS and receives correct VLAN
    Test an unmanaged device (printer): authenticates via MAB and receives IoT VLAN
    Test an unknown device: authentication fails and device is denied network access
    NPS event logs showing successful authentications

    Rollback

  • If 802.1X locks out all devices on a switch, disable 802.1X on the affected ports:
  •    interface range GigabitEthernet0/1 - 48

    no authentication port-control auto

    no dot1x pae authenticator

    no mab

    Then investigate and fix the RADIUS/NPS configuration before re-enabling.

  • If certificate deployment fails via Intune, verify the SCEP/PKCS connector is healthy in Intune > Tenant Administration > Connectors. Temporarily fall back to PEAP-MSCHAPv2 (username/password) while troubleshooting certificate issues.
  • If the NPS server is unavailable, switches with a "critical VLAN" configured will place devices on a restricted VLAN. Restore NPS service as a priority.

  • 8. Master Verification Checklist

    Firewall Initial Hardening

    Admin passphrase set and stored in credential vault
    Implicit deny rule present at bottom of all policy tables
    No factory-default allow-all rules remain
    Management interface restricted to Netier IPs only
    WAN management access disabled
    HTTPS management enforced
    Idle timeout set to 15 minutes
    Logging enabled on all policies
    Firmware at N-1 stable or critical CVEs patched within 48 hours
    Unused interfaces disabled

    IPS/IDS

    IPS enabled on all firewall policies
    High/Critical/Medium severity signatures set to Block
    Low/Informational signatures set to Monitor
    Automatic signature updates enabled (hourly)
    Exceptions documented and reviewed quarterly

    VPN

    PPTP and L2TP (without IPsec) not configured
    IKEv2 or SSL VPN using AES-256 encryption
    MFA enforced on all VPN connections
    VPN user group restricted to authorised users
    Split tunnelling configured with specific subnets only
    SSL VPN uses valid publicly trusted certificate
    VPN sessions fully logged

    VLAN Design & Segmentation

    All standard VLANs created (Mgmt, Server, Client, Voice, Guest, IoT)
    Default VLAN 1 not used for production traffic
    Native VLAN set to unused VLAN (not VLAN 1)
    Guest VLAN completely isolated from internal VLANs
    IoT VLAN whitelisted outbound only
    Management VLAN accessible from Netier IPs only
    Unused switch ports shut down

    DNS Filtering

    DNS filtering platform configured with standard blocking policy
    Activity logging enabled with 90-day retention
    All DHCP scopes point to DNS filter IPs
    Firewall blocks DNS to non-approved destinations
    DNS bypass via DoH addressed

    Configuration Backup

    All network devices added to backup platform
    Daily backups at 01:00 AEST with 90-day retention
    On-change backup enabled
    Backup failure alerts configured
    First backup verified for each device
    Change management process followed for all changes

    Network Access Control (802.1X)

    NPS server installed and healthy
    RADIUS clients configured for all switches and APs
    EAP-TLS policy with correct VLAN assignment
    MAB policy for non-802.1X devices on IoT VLAN
    Certificate deployment via Intune verified
    Managed device authenticated via EAP-TLS (tested)
    Unmanaged device authenticated via MAB (tested)
    Unknown device denied access (tested)

    9. Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Backup & Disaster Recovery

    Document ID: NET-SOP-BDR-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 8.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Veeam Backup Deployment
  • AFI.ai Microsoft 365 Backup
  • Dropsuite Email Archival
  • Immutable Storage Configuration
  • Backup Verification & Testing
  • Disaster Recovery Plan Test Execution
  • Evidence Collection & Compliance Reporting
  • Testing Schedule & ConnectWise Recurring Tickets
  • Master Verification Checklist
  • Document History

  • Veeam Backup Deployment

    ISM Controls: ISM-1547, ISM-1548, ISM-1511

    Prerequisites

  • Veeam Backup & Replication v12+ console access with Enterprise Plus licence
  • VMware vCenter or Hyper-V host credentials registered in Veeam credential manager
  • Target repository provisioned (local ReFS/XFS for fast-clone, offsite for copy job)
  • Immutable Linux hardened repository deployed (see Immutable Storage section)
  • Network connectivity from Veeam server to all hypervisor hosts and repository targets
  • ConnectWise Manage company record exists with correct service tier (Enterprise/Professional/Essential)
  • Step-by-Step Instructions

    1. Add Backup Repository

  • Open Veeam Backup & Replication Console > Backup Infrastructure > Backup Repositories.
  • Click Add Repository and select Direct Attached Storage (or Linux for immutable targets).
  • For Linux hardened repository:
  • - Enter the Linux server hostname/IP and single-use SSH credentials.

    - Set the repository path (e.g., /mnt/veeam-repo/backups).

    - Enable Make recent backups immutable for 14 days (minimum; set to 30 days for Enterprise tier).

    - Confirm XFS filesystem with reflink support is in use.

  • Set concurrent task limits based on storage IOPS (default: 4 per repository).
  • Click Apply > Finish.
  • 2. Create Backup Job

  • Navigate to Home > Jobs > Backup and click Backup Job > Virtual Machine.
  • Name the job using the convention: [ClientCode]-Daily-Image-[ServerGroup] (e.g., LCA-Daily-Image-ProdServers).
  • Add VMs from the inventory browser. Use Exclusions tab to skip test/dev VMs if not in scope.
  • Under Storage:
  • - Backup repository: Select the primary local repository.

    - Retention policy: 30 daily restore points.

    - Enable GFS (Grandfather-Father-Son):

    - Weekly: Keep for 12 weeks (Fridays).

    - Monthly: Keep for 12 months (first Saturday of month).

  • Under Guest Processing:
  • - Enable Application-Aware Processing.

    - Enable Guest File System Indexing for file-level recovery.

    - Provide guest OS credentials (domain service account with local admin on targets).

    - For SQL Server VMs: enable Transaction Log Backup every 15 minutes (truncate logs after backup).

    - For Exchange VMs: enable Transaction Log Truncation.

    - For Domain Controllers: ensure VSS is configured for AD-aware backup.

  • Under Schedule:
  • - Set to run Daily at 20:00 (outside business hours; adjust per client timezone).

    - Enable Automatic retry — 3 attempts, wait 10 minutes.

    - Enable Terminate job if exceeds allowed backup window — set to 12 hours.

  • Click Apply > Finish and run the job manually for the first full backup.
  • 3. Create Backup Copy Job (Offsite)

  • Navigate to Home > Jobs > Backup Copy.
  • Select the source backup job created above.
  • Target: offsite repository (secondary site, cloud connect provider, or S3-compatible object storage).
  • Set GFS retention to match primary: 12w weekly, 12m monthly.
  • Enable WAN acceleration if the copy job traverses a limited bandwidth link.
  • Schedule: Continuous (copies new restore points as they appear).
  • PowerShell Alternative — Create Backup Job:
    # Connect to Veeam Backup Server
    

    Connect-VBRServer -Server "veeam-server.client.local"

    Add VMs to a new backup job

    $vms = Find-VBRViEntity -Name "DC01","FS01","SQL01"

    $repo = Get-VBRBackupRepository -Name "Local-ReFS-Repo"

    $job = Add-VBRViBackupJob

    -Name "LCA-Daily-Image-ProdServers"

    -Entity $vms

    -BackupRepository $repo

    -Description "Production server daily image backup"

    Set retention: 30 daily + GFS

    $gfs = New-VBRGFSRetentionPolicy -Weekly 12 -Monthly 12

    Set-VBRJobAdvancedStorageOptions -Job $job -RetainDays 30

    Set-VBRJobGFSRetentionPolicy -Job $job -Policy $gfs

    Enable application-aware processing

    $cred = Get-VBRCredentials -Name "SVC_Veeam_Guest"

    $guestOptions = New-VBRJobVSSOptions -Credentials $cred -EnableAAIP

    Set-VBRJobVSSOptions -Job $job -Options $guestOptions

    Schedule daily at 20:00

    $schedule = New-VBRJobScheduleOptions -Type Daily -DailyOptions (New-VBRDailyOptions -Period 1 -Time "20:00")

    Set-VBRJobScheduleOptions -Job $job -Options $schedule

    Enable the job

    Enable-VBRJob -Job $job

    Verification Checks

    Backup job runs nightly and completes within the backup window
    Application-aware processing shows success for all VMs (check Veeam session log for VSS errors)
    GFS points are being created on the correct days (Friday/first Saturday)
    Backup copy job is synchronised — offsite repository has matching restore points
    Retention is enforced — verify oldest restore point does not exceed 30 days (daily) or 12 months (monthly GFS)
    Email notification configured and arriving to backups@netier.com.au

    Rollback

  • If a backup job is misconfigured, right-click the job > Edit and correct settings.
  • If a repository is corrupted, run Veeam Backup Validator (Veeam.Backup.Validator.exe) against the backup chain.
  • If GFS points are incorrect, disable GFS, let retention clean up, then re-enable with correct settings.
  • Do NOT delete backup files manually from the repository filesystem — always use Veeam console Remove from Disk.

  • AFI.ai Microsoft 365 Backup

    ISM Controls: ISM-1547, ISM-1511, ISM-1811

    Prerequisites

  • AFI.ai partner portal access (https://app.afi.ai)
  • Global Administrator consent for the client's Microsoft 365 tenant (or Application Administrator with Graph API permissions)
  • Client tenant ID and primary domain
  • Step-by-Step Instructions

    1. Register Client Tenant

  • Log in to AFI.ai Partner Portal > Tenants.
  • Click Add Tenant and select Microsoft 365.
  • Enter the client's primary domain (e.g., client.com.au).
  • Click Authorize — this redirects to Microsoft's consent screen.
  • Sign in with the client's Global Administrator account and grant the requested Graph API permissions.
  • Verify the tenant status shows Connected with a green indicator.
  • 2. Configure Backup Policies

  • Navigate to Tenant > Backup Policies.
  • Create policies for each workload:
  • Exchange Online:
  • Frequency: 3x daily (08:00, 13:00, 18:00 AEST).
  • Scope: All licensed mailboxes (auto-discovery enabled).
  • Retention: Infinite for active users.
  • Include: Mailbox, Archive Mailbox, Recoverable Items.
  • OneDrive for Business:
  • Frequency: 3x daily.
  • Scope: All licensed users.
  • Retention: Infinite for active users.
  • Include: All files and folder structures.
  • SharePoint Online:
  • Frequency: 3x daily.
  • Scope: All site collections (auto-discovery enabled).
  • Retention: Infinite.
  • Include: Document libraries, lists, site structure, permissions.
  • Microsoft Teams:
  • Frequency: 3x daily.
  • Scope: All Teams (auto-discovery enabled).
  • Retention: Infinite.
  • Include: Conversations, files, tabs, channel configurations.
  • Under Storage Settings, confirm:
  • - Storage region: Australia East (for data sovereignty).

    - Encryption: AES-256 at rest, TLS 1.2+ in transit.

    - Immutability: Enabled.

    3. Configure Offboarded User Handling

  • Navigate to Tenant > Settings > User Lifecycle.
  • Set Offboarded User Policy:
  • - When a user licence is removed or account disabled in Entra ID:

    - Retain backup data for 12 months after offboarding.

    - Archive the backup to cold storage after 12 months.

    - Alert m365backups@netier.com.au when a user is detected as offboarded.

  • Create a ConnectWise recurring ticket (monthly) to review offboarded user backup retention.
  • PowerShell — Verify AFI.ai Backup Status via API:
    # AFI.ai API check — retrieve backup status for a tenant
    

    $apiKey = "YOUR_AFI_API_KEY" # Store in Bitwarden, retrieve at runtime

    $tenantId = "client-tenant-guid"

    $headers = @{

    "Authorization" = "Bearer $apiKey"

    "Content-Type" = "application/json"

    }

    $response = Invoke-RestMethod -Uri "https://api.afi.ai/v1/tenants/$tenantId/backup-status"

    -Headers $headers -Method Get

    $response.workloads | ForEach-Object {

    Write-Host "$($_.name): Last backup $($_.lastBackupTime) — Status: $($_.status)"

    }

    Verification Checks

    All four workloads (Exchange, OneDrive, SharePoint, Teams) show "Protected" status
    3x daily backups are completing for all workloads (check AFI.ai dashboard > Backup History)
    Storage region confirmed as Australia East
    Immutable storage is enabled
    Auto-discovery is picking up new users/sites within 24 hours
    Offboarded user policy is active and alerts are routing correctly
    Restore test performed for at least one item per workload (see Verification section)

    Rollback

  • To disconnect a tenant, navigate to Tenants > [Client] > Settings > Disconnect. Backup data is retained per policy even after disconnection.
  • If consent expires, re-authorize via Tenants > [Client] > Re-authorize using a Global Admin account.
  • If backup failures occur, check the AFI.ai event log and verify Microsoft Graph API permissions have not been revoked in Entra ID > App Registrations.

  • Dropsuite Email Archival

    ISM Controls: ISM-1511, ISM-1815

    Prerequisites

  • Dropsuite partner portal access (https://partner.dropsuite.com)
  • Client M365 tenant with Exchange Online
  • Journal rule or service account access for mailbox archival
  • Step-by-Step Instructions

    1. Activate Client Tenant in Dropsuite

  • Log in to Dropsuite Partner Portal > Customers.
  • Click Add Customer and enter the client organisation name and primary domain.
  • Select Email Archiving as the product.
  • Authorise the Microsoft 365 connection (Global Admin consent).
  • Dropsuite will begin indexing existing email and archiving new messages.
  • 2. Configure Journal Rule (for compliance archival)

  • In the Microsoft 365 Exchange Admin Centre (https://admin.exchange.microsoft.com):
  • - Navigate to Mail Flow > Rules.

    - Create a new rule: "Journal to Dropsuite".

    - Apply this rule if: The sender or recipient is inside the organisation.

    - Do the following: Redirect the message to the Dropsuite journal address (provided in Dropsuite portal).

  • Alternatively, configure journaling via PowerShell:
  • # Connect to Exchange Online
    

    Connect-ExchangeOnline -UserPrincipalName admin@client.com.au

    Create journal rule for Dropsuite archival

    New-JournalRule -Name "Dropsuite Archive"

    -JournalEmailAddress "journal-abc123@journal.dropsuite.com"

    -Scope Global

    -Enabled $true

    Verify

    Get-JournalRule | Format-Table Name, JournalEmailAddress, Scope, Enabled

    3. Configure Retention & Search

  • In Dropsuite Portal > Archive Settings:
  • - Set retention period: 7 years (or per client's legal/regulatory requirements).

    - Enable Immutable Archive — prevents deletion of archived emails.

    - Configure eDiscovery access for client compliance officers (named users only).

  • Verify search functionality:
  • - Perform a test search for a known email by subject, sender, and date range.

    - Export search results to PST to confirm export functionality works.

    Verification Checks

    Journal rule is active and processing emails (check message trace in Exchange Admin Centre)
    Dropsuite dashboard shows emails being ingested
    Test search returns expected results
    Retention period set per client requirements
    Immutable archive enabled
    eDiscovery access restricted to authorised personnel only

    Rollback

  • To stop archival, disable the Exchange journal rule first, then deactivate the client in Dropsuite portal.
  • Archived data remains available for the configured retention period even after deactivation.

  • Immutable Storage Configuration

    ISM Controls: ISM-1515, ISM-1547

    Prerequisites

  • AWS account with S3 access or Wasabi account provisioned
  • IAM user/role with s3:PutObject, s3:GetObject, s3:PutObjectRetention, s3:GetBucketObjectLockConfiguration permissions
  • Backup application configured to write to S3-compatible storage (Veeam Scale-Out Repository or direct)
  • Step-by-Step Instructions

    1. AWS S3 with Object Lock

  • Log in to AWS Console > S3.
  • Click Create Bucket.
  • - Name: netier-[clientcode]-backup-immutable (e.g., netier-lca-backup-immutable).

    - Region: ap-southeast-2 (Sydney) for Australian data sovereignty.

    - Enable Object Lock (must be set at bucket creation; cannot be enabled later).

    - Enable Versioning (required for Object Lock).

  • Under Object Lock default retention:
  • - Mode: Compliance (prevents deletion by any user including root, for the retention period).

    - Retention period: 30 days (aligns with daily backup retention; increase for GFS points).

  • Apply a bucket policy to deny s3:DeleteObject for non-admin roles:
  • {
    

    "Version": "2012-10-17",

    "Statement": [

    {

    "Sid": "DenyDeleteExceptAdmin",

    "Effect": "Deny",

    "Principal": "*",

    "Action": "s3:DeleteObject",

    "Resource": "arn:aws:s3:::netier-lca-backup-immutable/*",

    "Condition": {

    "StringNotEquals": {

    "aws:PrincipalArn": "arn:aws:iam::ACCOUNT_ID:role/BackupAdminRole"

    }

    }

    }

    ]

    }

  • Enable S3 Object Lock Legal Hold capability for compliance-critical backups that must never be deleted.
  • AWS CLI Alternative:
    # Create immutable backup bucket
    

    aws s3api create-bucket \

    --bucket netier-lca-backup-immutable \

    --region ap-southeast-2 \

    --create-bucket-configuration LocationConstraint=ap-southeast-2 \

    --object-lock-enabled-for-bucket

    Set default Object Lock retention (Compliance mode, 30 days)

    aws s3api put-object-lock-configuration \

    --bucket netier-lca-backup-immutable \

    --object-lock-configuration '{

    "ObjectLockEnabled": "Enabled",

    "Rule": {

    "DefaultRetention": {

    "Mode": "COMPLIANCE",

    "Days": 30

    }

    }

    }'

    Verify

    aws s3api get-object-lock-configuration \

    --bucket netier-lca-backup-immutable

    2. Wasabi Hot Cloud Storage (Alternative)

  • Log in to Wasabi Console (https://console.wasabi.com).
  • Navigate to Buckets > Create Bucket.
  • - Name: netier-[clientcode]-immutable.

    - Region: ap-southeast-2 (Sydney).

    - Enable Object Lock and Versioning.

  • Set default retention: Compliance mode, 30 days.
  • Create an IAM policy with write-only permissions (no delete) for the backup service account.
  • In Veeam: add as a Scale-Out Backup Repository capacity tier with Make recent backups immutable enabled.
  • Verification Checks

    Object Lock is enabled on the bucket (cannot be added after creation if missed)
    Default retention mode is set to Compliance (not Governance — Governance can be overridden)
    Versioning is enabled
    Backup application can write objects successfully
    Attempting to delete an object within the retention period returns AccessDenied
    Bucket region is ap-southeast-2 for data sovereignty compliance
    IAM permissions follow least-privilege (no s3:DeleteObject for backup service accounts)

    Rollback

  • Object Lock in Compliance mode cannot be removed or shortened once set. This is by design.
  • If the wrong retention period was set, create a new bucket with the correct settings and migrate data.
  • To switch from Governance to Compliance mode, a new bucket is required.

  • Backup Verification & Testing

    ISM Controls: ISM-1548, ISM-1515

    Prerequisites

  • Veeam SureBackup job configured
  • Isolated test network (VLAN or virtual switch) for restore verification
  • Documented test plan listing servers to verify and expected outcomes
  • Step-by-Step Instructions

    1. Veeam SureBackup Verification

  • Navigate to Veeam Console > Backup Infrastructure > SureBackup.
  • Create a Virtual Lab:
  • - Select the hypervisor host for sandbox VMs.

    - Configure an isolated network (no production connectivity).

    - Set resource limits (CPU, RAM) to avoid impacting production.

  • Create an Application Group defining boot order:
  • - Domain Controller first (wait for AD services, DNS, DHCP).

    - Database server second (wait for SQL/PostgreSQL service).

    - Application server third (wait for IIS/application service).

  • Create a SureBackup Job:
  • - Name: [ClientCode]-SureBackup-Weekly.

    - Link the Application Group.

    - Under Verification Options:

    - Enable Heartbeat Test (VMware Tools/Hyper-V Integration Services responding).

    - Enable Ping Test (VM responds to ICMP from Veeam server).

    - Enable Application Test — for each role:

    - DC: LDAP query on port 389.

    - SQL: TCP connect on port 1433.

    - Web: HTTP 200 on port 80/443.

    - Enable CRC Check on backup files.

    - Capture Screenshot of login screen for evidence.

    - Schedule: Weekly (Saturday 06:00).

  • After the SureBackup job runs, review results in Home > Last 24 Hours > SureBackup Sessions.
  • Export the SureBackup report (PDF) for compliance evidence.
  • PowerShell — Retrieve SureBackup Results:
    # Get last SureBackup session results
    

    $sureBackupJob = Get-VBRSureBackupJob -Name "LCA-SureBackup-Weekly"

    $lastSession = Get-VBRSureBackupSession -Job $sureBackupJob | Sort-Object EndTime -Descending | Select-Object -First 1

    $lastSession.Result # Should be "Success"

    $lastSession.GetTaskSessions() | ForEach-Object {

    [PSCustomObject]@{

    VM = $_.Name

    Status = $_.Status

    Boot = $_.Progress.Details

    }

    } | Format-Table -AutoSize

    2. AFI.ai Restore Test

  • In AFI.ai > Tenant > Restore.
  • For each workload, perform a test restore:
  • - Exchange: Restore a mailbox item to a test mailbox.

    - OneDrive: Restore a file to the original user's OneDrive (or a test location).

    - SharePoint: Restore a document library to an alternate site collection.

    - Teams: Restore a channel conversation.

  • Verify the restored data matches the original.
  • Document the restore time and confirm it meets the stated RPO.
  • Verification Checks

    SureBackup job completes with "Success" for all VMs in the application group
    Screenshot captured shows OS login screen (not BSOD or boot failure)
    Application tests pass (LDAP, SQL, HTTP) confirming services start correctly
    CRC check passes — no corrupt backup files detected
    AFI.ai restore test successful for at least one item per workload
    All verification evidence saved (PDF reports, screenshots) to the client's compliance folder

    Rollback

  • SureBackup VMs are automatically destroyed after verification. If a VM is stuck, manually delete it from the Virtual Lab.
  • AFI.ai restores to alternate locations can be deleted after verification.

  • Disaster Recovery Plan Test Execution

    ISM Controls: ISM-1515, ISM-1811

    Prerequisites

  • Approved DRP document for the client
  • Scheduled test window communicated to client stakeholders
  • Isolated sandbox environment provisioned (separate VLAN, no production connectivity)
  • Test plan with: target servers, expected RTO, expected RPO, success criteria
  • Step-by-Step Instructions

    1. Pre-Test Preparation

  • Confirm the test window with the client contact — minimum 4 hours for Enterprise tier.
  • Create a ConnectWise ticket: type = Project, subtype = DR Test, board = Projects.
  • Document baseline metrics:
  • - Number of servers/workloads being restored.

    - Stated RTO per server (from the client's DRP document).

    - Stated RPO per server.

    - Application dependencies and boot order.

    2. Execute Restore to Sandbox

  • Veeam:
  • - Use Instant VM Recovery to mount the latest restore point to the isolated host/datastore.

    - Start the timer when the restore is initiated.

    - Boot the VM and wait for OS login screen — record the time.

    - Log in and verify: services started, application accessible, data consistent.

    - Record time-to-restore for each server.

    3. Integrity Verification

    For each restored server, perform:

  • File checksum comparison: Compare checksums of critical files against known-good values.
  • # Compare file checksums on restored server
    

    $criticalFiles = @(

    "C:\inetpub\wwwroot\web.config",

    "D:\SQLData\ClientDB.mdf",

    "C:\Windows\System32\config\SAM"

    )

    foreach ($file in $criticalFiles) {

    $hash = Get-FileHash -Path $file -Algorithm SHA256

    Write-Host "$($hash.Hash) $file"

    }

  • Application launch test: Open the primary line-of-business application and confirm functionality.
  • Database consistency check:
  • # SQL Server integrity check
    

    Invoke-Sqlcmd -ServerInstance "localhost" -Query "DBCC CHECKDB ('ClientDB') WITH NO_INFOMSGS, ALL_ERRORMSGS"

  • Active Directory verification:
  • # Verify AD database integrity
    

    dcdiag /test:database

    repadmin /showrepl

    4. Record Results & Calculate Delta

  • For each server, record:
  • - Actual RTO (time from restore initiation to services verified).

    - Stated RTO (from the DRP document).

    - Delta (actual minus stated; positive = missed SLA, negative = ahead of SLA).

    - Actual RPO (age of the restore point used).

    - Issues encountered (any failures, additional steps required).

  • If the actual RTO exceeds the stated RTO by more than 20%, flag for DRP revision.
  • Document all results in the DRP Test Report template and attach to the ConnectWise ticket.
  • 5. Post-Test Cleanup

  • Shut down and delete all sandbox VMs.
  • Remove any temporary network configurations.
  • Update the ConnectWise ticket with the completed test report.
  • If deficiencies were identified, create follow-up tickets for remediation.
  • Verification Checks

    All in-scope servers were restored successfully
    Time-to-restore recorded for each server
    Actual RTO vs stated RTO documented with delta analysis
    Application launch tests passed on restored servers
    Database integrity checks passed
    Sandbox environment fully cleaned up after test
    DRP Test Report completed and attached to ConnectWise ticket
    Client stakeholder briefed on results (email summary or meeting)

    Rollback

  • If a restore fails during the test, document the failure and attempt with an older restore point.
  • Sandbox VMs have no production impact — simply delete them.

  • Evidence Collection & Compliance Reporting

    ISM Controls: ISM-1547, ISM-1548, ISM-1511, ISM-1811, ISM-1515

    Prerequisites

  • Access to Veeam, AFI.ai, and Dropsuite portals
  • ConnectWise Manage access with compliance board visibility
  • Client compliance folder in SharePoint or Confluence
  • Step-by-Step Instructions

    1. Collect Backup Job Reports

  • Veeam: Navigate to Home > Last 24 Hours (or custom date range). Right-click a session > Statistics. Export to PDF/HTML.
  • - Alternatively, configure Email Notification under Options > Notifications to send automated daily reports.

  • AFI.ai: Navigate to Reports > Backup Status. Export the workload summary.
  • Dropsuite: Navigate to Reports > Archive Status. Export ingestion statistics.
  • 2. Compile for Compliance Audit

  • For each client, maintain a compliance evidence folder with the following structure:
  • [Client] Compliance Evidence/
    

    ├── Backup Reports/

    │ ├── YYYY-MM - Veeam Monthly Summary.pdf

    │ ├── YYYY-MM - AFI.ai Monthly Summary.pdf

    │ └── YYYY-MM - Dropsuite Monthly Summary.pdf

    ├── Restore Tests/

    │ ├── YYYY-MM-DD - SureBackup Report.pdf

    │ └── YYYY-MM-DD - AFI.ai Restore Test Log.pdf

    ├── DR Tests/

    │ └── YYYY-QX - DRP Test Report.pdf

    └── Immutability Evidence/

    └── YYYY-MM - S3 Object Lock Configuration Screenshot.png

  • Upload evidence to the client's compliance space in Confluence or SharePoint.
  • Cross-reference with the TCF Section 8.0 requirements checklist.
  • Verification Checks

    Monthly backup reports collected for all three platforms
    Restore test evidence filed per the testing schedule
    DRP test reports filed at the correct cadence (quarterly/bi-annual/annual)
    Immutability evidence captured (bucket configuration screenshots)
    All evidence is current (nothing older than the review cycle)

    Rollback

  • Evidence collection is non-destructive. If reports are misfiled, reorganise into the correct folder structure.

  • Testing Schedule & ConnectWise Recurring Tickets

    ISM Controls: ISM-1515

    Schedule by Service Tier

    ActivityEnterpriseProfessionalEssential
    Full DRP TestQuarterlyBi-AnnualAnnual
    Backup Restore VerificationMonthlyQuarterlyBi-Annual
    SureBackup/Screenshot ReviewWeekly (automated)Weekly (automated)Weekly (automated)
    M365 Backup Spot CheckMonthlyQuarterlyQuarterly
    Immutability AuditQuarterlyBi-AnnualAnnual

    ConnectWise Recurring Ticket Setup

  • In ConnectWise Manage > Service Desk > Tickets, click New Recurring Ticket.
  • For each activity above, create a ticket with:
  • - Summary: [ClientCode] - [Activity Name] - [Tier] (e.g., LCA - DRP Test - Enterprise).

    - Board: Compliance.

    - Type: Scheduled Review.

    - Recurrence: Per the schedule table above.

    - Assigned To: Security Engineering team.

    - Description: Include the test procedure checklist from this SOP.

  • Attach the relevant SOP section link to the ticket description for engineer reference.
  • Verification Checks

    Recurring tickets exist for all clients, all activities, at the correct frequency
    Tickets are assigned to a named team member
    Completed tickets have evidence attached before closing
    Overdue tickets are escalated (CW Manage SLA triggers)

    Rollback

  • If a recurring ticket was created with the wrong frequency, edit the recurrence pattern in ConnectWise. Do not delete and recreate (preserves ticket history).

  • Master Verification Checklist

    Veeam

    Backup job configured with application-aware processing
    Daily schedule running within the backup window
    GFS retention: 30d daily, 12w weekly, 12m monthly
    Backup copy job synchronised to offsite repository
    Email notifications configured and arriving

    AFI.ai M365

    All four workloads (Exchange, OneDrive, SharePoint, Teams) protected
    3x daily backup schedule active
    Storage region: Australia East
    Immutable storage enabled
    Offboarded user retention policy configured

    Dropsuite

    Journal rule active in Exchange Online
    Emails being ingested (visible in Dropsuite dashboard)
    Retention period set per client requirements
    Immutable archive enabled

    Immutable Storage

    S3 bucket created with Object Lock enabled at creation
    Compliance mode retention set (not Governance)
    Versioning enabled
    Delete denied for non-admin IAM roles
    Bucket region: ap-southeast-2

    Verification & Testing

    SureBackup/screenshot verification running weekly
    Restore tests documented per tier schedule
    DRP tests documented per tier schedule
    All evidence filed in compliance folder

    ConnectWise Integration

    Recurring tickets created for all testing activities
    Correct frequency per client service tier
    Evidence attached to completed tickets

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Remote Monitoring & Management (NinjaOne)

    Document ID: NET-SOP-RMM-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 9.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • NinjaOne Agent Deployment
  • Organisation Creation & Device Grouping
  • Patch Management Policy Configuration
  • Monitoring Policy Setup
  • Automated Maintenance Scripts
  • Software Inventory & ThreatLocker Reconciliation
  • Alert-to-ConnectWise Ticket Routing
  • Pre-Reboot & Post-Verification Automation
  • Master Verification Checklist
  • Document History

  • NinjaOne Agent Deployment

    ISM Controls: ISM-1143, ISM-0298

    Prerequisites

  • NinjaOne dashboard access (https://app.ninjarmm.com) with Administrator role
  • Organisation created for the client in NinjaOne (see next section if not)
  • Network access from target device to NinjaOne cloud (TCP 443 outbound to *.ninjarmm.com)
  • Local administrator credentials on the target device (for initial installation)
  • NinjaOne agent installer downloaded or deployment URL generated
  • Step-by-Step Instructions

    1. Generate Installer Package

  • Log in to NinjaOne > Administration > Devices > Installer.
  • Select the target Organisation from the dropdown.
  • Select the target Location (site) if the client has multiple offices.
  • Select the Role (Windows Workstation, Windows Server, Mac, Linux).
  • Choose the installer type:
  • - MSI — for deployment via GPO, SCCM, Intune, or scripted rollout.

    - EXE — for manual installation or simple script deployment.

  • Click Generate and copy the download URL.
  • 2. Deploy on Windows (Scripted)

    # NinjaOne Agent Silent Deployment — Run as Administrator
    

    Replace INSTALLER_URL with the URL from the NinjaOne portal

    $installerUrl = "https://app.ninjarmm.com/agent/installer/UNIQUE_ORG_TOKEN-ROLE.msi"

    $installerPath = "$env:TEMP\NinjaRMMAgent.msi"

    Download

    Invoke-WebRequest -Uri $installerUrl -OutFile $installerPath -UseBasicParsing

    Install silently

    Start-Process msiexec.exe -ArgumentList "/i "$installerPath" /qn /norestart" -Wait -NoNewWindow

    Verify agent service is running

    $svc = Get-Service -Name "NinjaRMMAgent" -ErrorAction SilentlyContinue

    if ($svc.Status -eq "Running") {

    Write-Host "NinjaOne agent installed and running." -ForegroundColor Green

    } else {

    Write-Host "ERROR: NinjaOne agent not running. Check installation log." -ForegroundColor Red

    }

    Clean up

    Remove-Item $installerPath -Force

    3. Deploy on macOS

    # Download the NinjaOne agent installer (replace URL)
    

    curl -L -o /tmp/NinjaRMMAgent.pkg "https://app.ninjarmm.com/agent/installer/UNIQUE_ORG_TOKEN-mac.pkg"

    Install silently

    sudo installer -pkg /tmp/NinjaRMMAgent.pkg -target /

    Verify

    if launchctl list | grep -q "com.ninjarmm.agent"; then

    echo "NinjaOne agent installed and running."

    else

    echo "ERROR: NinjaOne agent not detected."

    fi

    Clean up

    rm -f /tmp/NinjaRMMAgent.pkg

    4. Deploy on Linux

    # Download and install (Debian/Ubuntu example)
    

    curl -L -o /tmp/ninjaone-agent.deb "https://app.ninjarmm.com/agent/installer/UNIQUE_ORG_TOKEN-linux.deb"

    sudo dpkg -i /tmp/ninjaone-agent.deb

    Verify

    systemctl status ninjarmm-agent

    Clean up

    rm -f /tmp/ninjaone-agent.deb

    5. Deploy via Microsoft Intune

  • In Microsoft Intune Admin Centre (https://intune.microsoft.com):
  • - Navigate to Apps > All apps > Add.

    - App type: Line-of-business app (select the MSI).

    - Upload the NinjaOne MSI installer.

    - Under App information, set the name to "NinjaOne RMM Agent".

    - Under Assignments, assign to All Devices or the target device group.

  • Devices will install the agent at next Intune sync.
  • Verification Checks

    Agent appears in NinjaOne dashboard under the correct organisation and location
    Device operating system, hostname, and IP are reported correctly
    Agent status shows "Online" with a recent last check-in timestamp
    Agent version matches the current release (check NinjaOne release notes)
    NinjaRMMAgent service is set to Automatic start and is Running

    Rollback

  • To uninstall the agent:
  • - Windows: msiexec /x {PRODUCT_GUID} /qn or via NinjaOne dashboard > Device > Uninstall Agent.

    - macOS: sudo /Library/NinjaRMMAgent/uninstall.sh

    - Linux: sudo dpkg -r ninjarmm-agent or sudo yum remove ninjarmm-agent.

  • If the agent fails to check in after installation, verify DNS resolution for *.ninjarmm.com and outbound TCP 443 is not blocked.

  • Organisation Creation & Device Grouping

    ISM Controls: ISM-1143

    Prerequisites

  • NinjaOne Administrator access
  • Client information: company name, locations, service tier, primary contact
  • Step-by-Step Instructions

    1. Create Organisation

  • Navigate to NinjaOne > Administration > Organisations.
  • Click Create Organisation.
  • Fill in:
  • - Name: Match the ConnectWise Manage company name exactly (e.g., "Law Council of Australia").

    - Description: Service tier and brief note (e.g., "Enterprise tier — Full managed services").

    - Custom Fields:

    - ServiceTier: Enterprise / Professional / Essential.

    - CW_CompanyID: The ConnectWise Manage company record ID (for PSA integration mapping).

    - E8_MaturityLevel: ML1 / ML2 / ML3 (drives patch policy assignment).

  • Click Save.
  • 2. Create Locations

  • Within the organisation, click Locations > Add Location.
  • Enter site name (e.g., "Head Office — Canberra", "Branch — Melbourne").
  • Set the timezone for each location (affects patch/reboot scheduling).
  • 3. Configure Device Groups (Roles)

    NinjaOne uses device roles to group devices and assign policies. Standard roles:

    RoleDescriptionPolicy Applied
    Windows WorkstationEnd-user desktops/laptopsWorkstation patch policy, standard monitoring
    Windows ServerGeneral file/app serversServer patch policy (reboot window), server monitoring
    Domain ControllerAD domain controllersDC patch policy (no auto-reboot), DC-specific monitoring
    Exchange ServerExchange on-premExchange patch policy, mailflow monitoring
    Hyper-V HostHypervisor hostsHyper-V patch policy, VM host monitoring
    SQL ServerDatabase serversSQL patch policy, DB-specific monitoring
    macOS WorkstationApple endpointsmacOS patch policy, standard monitoring
    Linux ServerLinux infrastructureLinux patching (apt/yum), Linux monitoring
  • Navigate to Administration > Devices > Roles.
  • Verify the above roles exist. If not, create them via Add Role.
  • When a device is deployed, assign the correct role during agent installation or after check-in via Device > Edit > Role.
  • Verification Checks

    Organisation name matches ConnectWise Manage exactly
    Custom fields (ServiceTier, CW_CompanyID, E8_MaturityLevel) are populated
    All physical locations created with correct timezone
    Device roles are assigned to all devices (no devices left as "Unassigned")

    Rollback

  • Organisations can be renamed but not merged. If duplicates are created, move devices to the correct org and delete the empty duplicate.
  • Device role changes take effect on the next policy sync (within 60 minutes).

  • Patch Management Policy Configuration

    ISM Controls: ISM-1143, ISM-0298, ISM-1493, ISM-1807

    Prerequisites

  • Client's Essential Eight maturity level confirmed and recorded in the organisation custom field
  • Patch policies created in NinjaOne for each maturity level and device role
  • Reboot windows agreed with the client (typically outside business hours)
  • Step-by-Step Instructions

    1. Workstation Patch Policies by Maturity Level

    Navigate to NinjaOne > Administration > Policies > Patching.

    ML1 — 14-Day Patch Cycle:
  • Click Create Policy > Name: PATCH-WKS-ML1-14Day.
  • Under Windows Update Settings:
  • - Scan Schedule: Daily at 06:00.

    - Approval: Auto-approve all classifications (Critical, Important, Moderate, Low).

    - Installation Deadline: 14 days after release.

    - Reboot Behaviour: Prompt user; force reboot after 72 hours if pending.

    - Active Hours: Respect user-configured active hours (08:00-18:00 default).

  • Under Patch Exclusions: None for ML1.
  • Click Save and assign to all ML1 organisations' workstation roles.
  • ML2 — Tiered Urgency:
  • Create policy PATCH-WKS-ML2-Tiered.
  • Configure separate rules per classification:
  • - Critical / Security: Auto-approve, install within 48 hours.

    - Important: Auto-approve, install within 7 days.

    - Moderate / Low: Auto-approve, install within 14 days.

  • Reboot: Force reboot at the next maintenance window after deadline.
  • Assign to ML2 organisations' workstation roles.
  • ML3 — Aggressive Patching:
  • Create policy PATCH-WKS-ML3-Aggressive.
  • Configure:
  • - Critical / Security: Auto-approve, install within 48 hours.

    - Important: Auto-approve, install within 48 hours.

    - Moderate / Low: Auto-approve, install within 7 days.

  • Reboot: Forced reboot 4 hours after installation if pending.
  • Assign to ML3 organisations' workstation roles.
  • 2. Server Patch Policies

    Server patching requires more controlled maintenance windows. Create the following policies:

    Server — Daily Reboot (Dev/Test):
  • Policy: PATCH-SRV-Daily-Reboot.
  • Scan: Daily at 02:00.
  • Install: All approved patches daily.
  • Reboot window: 03:00-05:00 (auto-reboot after install).
  • Use case: Non-production servers where availability is not critical.
  • Server — Weekly Reboot (General):
  • Policy: PATCH-SRV-Weekly-Reboot.
  • Scan: Daily at 02:00.
  • Install: All approved patches on Saturday 02:00.
  • Reboot window: Saturday 03:00-06:00.
  • Use case: Standard file servers, application servers.
  • Server — Monthly Reboot (Production):
  • Policy: PATCH-SRV-Monthly-Reboot.
  • Scan: Daily at 02:00.
  • Install: All approved patches on Patch Tuesday + 7 days (third Saturday of month).
  • Reboot window: Third Saturday 02:00-06:00.
  • Use case: Production servers with strict change control.
  • Server — No Auto-Reboot (Critical Infrastructure):
  • Policy: PATCH-SRV-NoReboot.
  • Scan: Daily at 02:00.
  • Install: All approved patches on third Saturday 02:00.
  • Reboot: Disabled — manual reboot required (creates a CW ticket for scheduled reboot).
  • Use case: Domain Controllers, Exchange, Hyper-V, SQL.
  • 3. Role-Specific Policies

    Domain Controller Policy (PATCH-DC):
  • Base: PATCH-SRV-NoReboot.
  • Additional exclusions: Exclude patches tagged as "Firmware" or "Driver" (DCs should not receive hardware-specific patches via Windows Update).
  • Pre-patch script: Run repadmin /replsummary and verify no replication failures before patching.
  • Post-patch: AD health check (see Pre-Reboot & Post-Verification section).
  • Exchange Server Policy (PATCH-EX):
  • Base: PATCH-SRV-NoReboot.
  • Additional: Only install Exchange-related cumulative updates during scheduled maintenance windows.
  • Pre-patch: Put server into maintenance mode (Set-ServerComponentState).
  • Post-patch: Verify mailflow with Test-Mailflow.
  • Hyper-V Host Policy (PATCH-HV):
  • Base: PATCH-SRV-NoReboot.
  • Pre-patch: Live-migrate all VMs to partner host before reboot.
  • Post-patch: Verify all VMs are running after host comes back online.
  • SQL Server Policy (PATCH-SQL):
  • Base: PATCH-SRV-NoReboot.
  • Pre-patch: Full database backup.
  • Post-patch: DBCC CHECKDB on critical databases.
  • 4. Third-Party Application Patching

  • Navigate to Administration > Policies > Software Patching.
  • Enable third-party patching for common applications:
  • - Google Chrome, Mozilla Firefox, Microsoft Edge: Auto-update, 48-hour deadline.

    - Adobe Acrobat Reader: Auto-update, 7-day deadline.

    - 7-Zip, Notepad++, VLC: Auto-update, 14-day deadline.

    - Java Runtime: Auto-update, 48-hour deadline (critical due to frequent vulnerabilities).

    - Zoom, Teams Desktop: Auto-update, 7-day deadline.

  • Assign to all organisations.
  • Verification Checks

    Every organisation has a patch policy assigned matching their E8 maturity level
    Workstation policies align with the correct deadlines (ML1=14d, ML2=48h/7d/14d, ML3=48h/48h/7d)
    Server policies have appropriate reboot windows outside business hours
    Domain Controller, Exchange, Hyper-V, SQL policies have no-auto-reboot set
    Third-party application patching enabled for all standard applications
    Patch compliance report in NinjaOne shows >95% compliance within the policy window
    No devices are in "Patch Scan Failed" state

    Rollback

  • If a patch causes issues, use NinjaOne > Device > Patch History to identify the problematic KB.
  • Uninstall the patch via NinjaOne remote script:
  • # Uninstall a specific Windows update by KB number
    

    $kb = "KB5034441"

    $update = Get-HotFix | Where-Object { $_.HotFixID -eq $kb }

    if ($update) {

    wusa.exe /uninstall /kb:$($kb -replace 'KB','') /quiet /norestart

    Write-Host "Uninstalling $kb — reboot required."

    } else {

    Write-Host "$kb not found on this system."

    }

  • Add the problematic KB to the policy exclusion list until the vendor releases a fix.
  • Create a ConnectWise ticket documenting the excluded KB and set a follow-up date.

  • Monitoring Policy Setup

    ISM Controls: ISM-1143, ISM-0298

    Prerequisites

  • Device roles configured (see Organisation Creation section)
  • ConnectWise Manage PSA integration active (for alert-to-ticket routing)
  • Alert notification channels configured (email, PSA ticket)
  • Step-by-Step Instructions

    1. Disk Space Monitoring

  • Navigate to NinjaOne > Administration > Policies > Monitoring.
  • Create or edit the monitoring policy for each role.
  • Add condition: Disk Space:
  • - Warning threshold: Free space below 20% (i.e., used at or above 80%).

    - Critical threshold: Free space below 10% (i.e., used at or above 90%).

    - Check interval: Every 15 minutes.

    - Alert action (Warning): Create CW ticket (Priority 3 — Low).

    - Alert action (Critical): Create CW ticket (Priority 2 — Medium) + email alerts@netier.com.au.

  • Apply to all server and workstation roles.
  • 2. CPU & Memory Utilisation

  • Add condition: CPU Utilisation:
  • - Threshold: Sustained above 90% for 15 minutes.

    - Alert action: Create CW ticket (Priority 3).

  • Add condition: Memory Utilisation:
  • - Threshold: Sustained above 90% for 15 minutes.

    - Alert action: Create CW ticket (Priority 3).

  • For servers only, add stricter thresholds:
  • - CPU sustained above 85% for 10 minutes = Priority 2.

    - Memory sustained above 85% for 10 minutes = Priority 2.

    3. Offline Device Alerts

  • Add condition: Device Offline:
  • - Workstations: Alert after 72 hours offline (Priority 4 — informational; these may be laptops).

    - Servers: Alert after 5 minutes offline (Priority 1 — Emergency).

    - Network devices (firewalls, switches): Alert after 2 minutes offline (Priority 1 — Emergency).

  • For critical infrastructure (DCs, firewalls, core switches), configure dual-notification:
  • - CW ticket (Priority 1).

    - SMS/phone alert via PagerDuty or Opsgenie integration.

    4. Security Service State Monitoring

  • Add condition: Windows Service Stopped:
  • - Service: Sense (Microsoft Defender for Endpoint / EDR sensor).

    - Alert action: Priority 1 — Emergency CW ticket + immediate email to security@netier.com.au.

  • Add condition: Windows Service Stopped:
  • - Service: WinDefend (Windows Defender Antivirus).

    - Alert action: Priority 1 — Emergency.

  • Add condition: Windows Service Stopped:
  • - Service: ThreatLockerService (ThreatLocker agent).

    - Alert action: Priority 1 — Emergency.

  • Add condition: Process Not Running (for agents without Windows services):
  • - Process: SentinelAgent.exe (if SentinelOne is deployed instead of Defender).

    - Alert action: Priority 1 — Emergency.

    NinjaOne Scripting — Custom Monitoring Condition:
    # Custom monitor: Check if EDR service is running
    

    Deploy as a NinjaOne Script Condition

    $edrServices = @("Sense", "WinDefend", "ThreatLockerService")

    $stoppedServices = @()

    foreach ($svc in $edrServices) {

    $service = Get-Service -Name $svc -ErrorAction SilentlyContinue

    if ($service -and $service.Status -ne "Running") {

    $stoppedServices += "$svc ($($service.Status))"

    }

    }

    if ($stoppedServices.Count -gt 0) {

    Write-Host "ALERT: Security services not running: $($stoppedServices -join ', ')"

    exit 1 # Trigger alert

    } else {

    Write-Host "OK: All security services running."

    exit 0 # No alert

    }

    5. Event Log Monitoring

  • Add condition: Windows Event Log:
  • - Log: Security.

    - Event ID: 4625 (Failed Logon).

    - Threshold: 10 occurrences in 5 minutes (brute-force indicator).

    - Alert action: Priority 2 CW ticket + email security@netier.com.au.

  • Add condition: Windows Event Log:
  • - Log: System.

    - Event ID: 6008 (Unexpected Shutdown).

    - Alert action: Priority 3 CW ticket.

  • Add condition: Windows Event Log:
  • - Log: Application.

    - Source: VSS (Volume Shadow Copy errors — affects backup integrity).

    - Alert action: Priority 2 CW ticket.

    Verification Checks

    Disk space monitoring active on all devices with correct thresholds (80% warn, 90% crit)
    CPU/Memory alerts configured with appropriate sustained-duration windows
    Server offline alert triggers within 5 minutes
    Firewall/switch offline alert triggers within 2 minutes
    EDR/AV stopped service alert is Priority 1
    Event log monitors configured for security-relevant events (4625, 6008, VSS)
    All alerts route to the correct CW board and priority level
    Test alert generated and verified to create a CW ticket

    Rollback

  • If a monitoring condition generates excessive false positives, increase the threshold or duration before disabling.
  • Document any threshold changes in the CW ticket and update this SOP.

  • Automated Maintenance Scripts

    ISM Controls: ISM-1143

    Prerequisites

  • NinjaOne scripting engine access
  • Scripts tested in a lab environment before production deployment
  • Schedule approved with client (typically weekly, outside business hours)
  • Step-by-Step Instructions

    1. Create Weekly Maintenance Script

  • Navigate to NinjaOne > Administration > Library > Scripting.
  • Click Create New Script and select PowerShell.
  • Name: Weekly-Maintenance-Workstation.
  • Script content:
  • # NinjaOne Weekly Maintenance Script — Workstations
    

    Runs every Sunday at 02:00 via scheduled automation

    $logPath = "C:\ProgramData\NinjaRMMAgent\Logs\WeeklyMaintenance.log"

    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

    function Write-Log($msg) {

    "$timestamp | $msg" | Out-File -FilePath $logPath -Append

    }

    Write-Log "===== Weekly Maintenance Starting ====="

    1. Clear Windows Temp Files

    $tempPaths = @("$env:TEMP\", "C:\Windows\Temp\", "C:\Windows\SoftwareDistribution\Download\*")

    foreach ($path in $tempPaths) {

    $count = (Get-ChildItem -Path $path -Recurse -ErrorAction SilentlyContinue).Count

    Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue

    Write-Log "Cleared $count items from $path"

    }

    2. Clear Browser Caches (Chrome, Edge)

    $profiles = Get-ChildItem -Path "C:\Users" -Directory

    foreach ($profile in $profiles) {

    $chromeCachePath = Join-Path $profile.FullName "AppData\Local\Google\Chrome\User Data\Default\Cache"

    $edgeCachePath = Join-Path $profile.FullName "AppData\Local\Microsoft\Edge\User Data\Default\Cache"

    foreach ($cachePath in @($chromeCachePath, $edgeCachePath)) {

    if (Test-Path $cachePath) {

    Remove-Item "$cachePath\*" -Recurse -Force -ErrorAction SilentlyContinue

    Write-Log "Cleared cache: $cachePath"

    }

    }

    }

    3. Run Disk Cleanup (silent mode)

    Start-Process cleanmgr.exe -ArgumentList "/sagerun:1" -Wait -NoNewWindow

    Write-Log "Disk Cleanup completed."

    4. Check and Repair WMI Repository

    $wmiResult = winmgmt /verifyrepository

    Write-Log "WMI Verify: $wmiResult"

    if ($wmiResult -notmatch "consistent") {

    winmgmt /salvagerepository

    Write-Log "WMI repository salvaged."

    }

    5. Verify Windows Time Sync

    w32tm /resync /force 2>&1 | ForEach-Object { Write-Log "Time Sync: $_" }

    6. Check Disk Health (SMART via CIM)

    $disks = Get-CimInstance -Namespace "root\wmi" -ClassName "MSStorageDriver_FailurePredictStatus" -ErrorAction SilentlyContinue

    foreach ($disk in $disks) {

    if ($disk.PredictFailure) {

    Write-Log "WARNING: Disk $($disk.InstanceName) predicting failure!"

    }

    }

    Write-Log "===== Weekly Maintenance Complete ====="

  • Save the script.
  • Navigate to Administration > Policies > Scheduled Scripts.
  • Add the script to the workstation policy, scheduled for Sunday 02:00.
  • 2. Server Maintenance Script

    Create a separate Weekly-Maintenance-Server script that includes:

  • Temp file cleanup (same as workstation).
  • IIS log rotation (compress logs older than 30 days).
  • Windows Event Log size check (archive if approaching max size).
  • Fragmentation check on non-SSD volumes.
  • Pending reboot detection and CW ticket creation if reboot required.
  • Verification Checks

    Maintenance scripts assigned to the correct device roles
    Script execution log shows successful completion (check NinjaOne > Device > Activities)
    No script errors in the last 4 weekly runs
    Disk space reclamation visible in NinjaOne dashboard trending
    Scripts are version-controlled (saved in Git or NinjaOne script library with version notes)

    Rollback

  • If a maintenance script causes issues, disable it in the policy immediately.
  • Scripts can be rolled back to a previous version in the NinjaOne script library.

  • Software Inventory & ThreatLocker Reconciliation

    ISM Controls: ISM-1143, ISM-1493

    Prerequisites

  • NinjaOne software inventory polling enabled
  • ThreatLocker portal access (https://portal.threatlocker.com)
  • Reconciliation schedule agreed (monthly minimum)
  • Step-by-Step Instructions

    1. NinjaOne Software Inventory

  • Navigate to NinjaOne > Reports > Software Inventory.
  • Filter by organisation.
  • Export to CSV: this provides a list of all installed software across all managed devices.
  • Review for:
  • - Unapproved software — applications not in the client's approved software list.

    - Outdated software — versions with known vulnerabilities (cross-reference with NVD/CVE feeds).

    - Shadow IT — personal applications installed by end users.

    2. ThreatLocker Allowlist Reconciliation

  • Log in to ThreatLocker Portal > Policies.
  • Export the current Application Allowlist for the client organisation.
  • Compare the NinjaOne software inventory against the ThreatLocker allowlist:
  • # Reconcile NinjaOne inventory against ThreatLocker allowlist
    

    $ninjaInventory = Import-Csv "NinjaOne-SoftwareInventory.csv"

    $threatLockerList = Import-Csv "ThreatLocker-Allowlist.csv"

    Find software in NinjaOne but NOT in ThreatLocker (should be blocked or added)

    $unmatched = $ninjaInventory | Where-Object {

    $app = $_.ApplicationName

    -not ($threatLockerList | Where-Object { $_.ApplicationName -like "$app" })

    }

    $unmatched | Select-Object DeviceName, ApplicationName, Version |

    Export-Csv "Unmatched-Software-Report.csv" -NoTypeInformation

    Write-Host "$($unmatched.Count) applications found in inventory but not in ThreatLocker allowlist."

  • For each unmatched application:
  • - If legitimate business software: add to ThreatLocker allowlist via Policies > Application Control > Add Application.

    - If unapproved: verify ThreatLocker is blocking it. If not, create a deny rule.

    - If unknown: investigate with the client contact before taking action.

  • Document the reconciliation in the ConnectWise monthly review ticket.
  • Verification Checks

    Software inventory is current (polled within the last 24 hours)
    Reconciliation report generated and reviewed monthly
    All unapproved software either blocked in ThreatLocker or approved with justification
    No outdated versions of critical applications (browsers, Java, Adobe) present
    Reconciliation documented in the ConnectWise monthly review ticket

    Rollback

  • If a legitimate application is incorrectly blocked in ThreatLocker, add it to the allowlist immediately.
  • Use ThreatLocker Unified Audit to identify block events and determine the correct hash/certificate to allow.

  • Alert-to-ConnectWise Ticket Routing

    ISM Controls: ISM-1143

    Prerequisites

  • NinjaOne PSA integration with ConnectWise Manage enabled
  • ConnectWise API credentials configured in NinjaOne
  • Board, type, and priority mappings defined
  • Step-by-Step Instructions

    1. Configure PSA Integration

  • Navigate to NinjaOne > Administration > Integrations > PSA.
  • Select ConnectWise Manage.
  • Enter the ConnectWise Manage API credentials:
  • - Site URL: https://na.myconnectwise.net/v2025_1/ (or current version).

    - Company ID: netier.

    - Public Key: From CW Manage > System > Members > API Keys.

    - Private Key: Stored in Bitwarden ("ConnectWise API - NinjaOne Integration").

  • Click Test Connection — verify success.
  • Enable Bi-directional sync: ticket status changes in CW reflect in NinjaOne, and vice versa.
  • 2. Configure Alert-to-Ticket Mappings

  • Navigate to Administration > Integrations > PSA > Ticket Mappings.
  • Configure mappings:
  • NinjaOne Alert TypeCW BoardCW TypeCW Priority
    Device Offline (Server)Service DeskAlert - OfflinePriority 1 - Emergency
    Device Offline (Workstation)Service DeskAlert - OfflinePriority 4 - Low
    Disk Space CriticalService DeskAlert - Disk SpacePriority 2 - Medium
    Disk Space WarningService DeskAlert - Disk SpacePriority 3 - Low
    CPU/Memory SustainedService DeskAlert - PerformancePriority 3 - Low
    Security Service StoppedSecurity AlertsAlert - SecurityPriority 1 - Emergency
    Patch FailureService DeskAlert - PatchingPriority 3 - Low
    Failed Login Brute ForceSecurity AlertsAlert - SecurityPriority 2 - Medium
    Backup FailureService DeskAlert - BackupPriority 2 - Medium
    Hardware SMART WarningService DeskAlert - HardwarePriority 2 - Medium
  • Set Auto-close behaviour: When the alert condition resolves in NinjaOne, automatically close the CW ticket with resolution note "Auto-resolved — condition returned to normal."
  • 3. Verify Ticket Routing

  • Trigger a test alert (e.g., temporarily lower a disk space threshold on a test device).
  • Verify a ConnectWise ticket is created with the correct:
  • - Board and type.

    - Priority level.

    - Company mapping (ticket is associated with the correct CW company).

    - Device information in the ticket body.

  • Resolve the alert condition and verify the CW ticket is auto-closed.
  • Verification Checks

    PSA integration connected and test passes
    All alert types mapped to correct CW boards, types, and priorities
    Company mapping correct (NinjaOne org -> CW company)
    Test alert creates a CW ticket within 5 minutes
    Auto-close works when alert condition resolves
    No orphaned alerts (NinjaOne alerts without corresponding CW tickets)

    Rollback

  • If ticket routing is misconfigured (wrong board/priority), update the mapping in NinjaOne PSA settings.
  • If the integration fails, check API credentials haven't expired and CW Manage is accessible.
  • Misrouted tickets can be moved to the correct board in ConnectWise Manage directly.

  • Pre-Reboot & Post-Verification Automation

    ISM Controls: ISM-1493, ISM-1807

    Prerequisites

  • Patch policy configured with scheduled reboot windows
  • Pre/post scripts created in NinjaOne script library
  • Server role-specific scripts for DC, Exchange, Hyper-V, SQL
  • Step-by-Step Instructions

    1. Pre-Reboot Script (All Servers)

    Deploy as a NinjaOne Pre-Patch Script attached to server patch policies.

    # Pre-Reboot Validation — All Servers
    

    Runs automatically before scheduled reboot

    $logPath = "C:\ProgramData\NinjaRMMAgent\Logs\PreReboot.log"

    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

    "$timestamp | Pre-reboot checks starting" | Out-File -FilePath $logPath

    $issues = @()

    Check no users are logged in (servers only)

    $sessions = query user 2>&1

    if ($sessions -notmatch "No User exists") {

    "$timestamp | WARNING: Active user sessions detected" | Out-File -FilePath $logPath -Append

    $issues += "Active user sessions present"

    }

    Check critical services are running (will validate again post-reboot)

    $criticalServices = @("W3SVC", "MSSQLSERVER", "MSSQL$INSTANCENAME", "MSExchangeIS")

    foreach ($svc in $criticalServices) {

    $service = Get-Service -Name $svc -ErrorAction SilentlyContinue

    if ($service -and $service.Status -eq "Running") {

    "$timestamp | Service $svc is running (will verify post-reboot)" | Out-File -FilePath $logPath -Append

    }

    }

    Snapshot current uptime for post-reboot comparison

    $uptime = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime

    "$timestamp | Current boot time: $uptime" | Out-File -FilePath $logPath -Append

    if ($issues.Count -gt 0) {

    "$timestamp | WARNINGS: $($issues -join '; ')" | Out-File -FilePath $logPath -Append

    }

    "$timestamp | Pre-reboot checks complete" | Out-File -FilePath $logPath -Append

    2. Post-Reboot Verification Script (All Servers)

    Deploy as a NinjaOne Post-Patch Script.

    # Post-Reboot Verification — All Servers
    

    Runs automatically after server reboots from patching

    $logPath = "C:\ProgramData\NinjaRMMAgent\Logs\PostReboot.log"

    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

    "$timestamp | Post-reboot verification starting" | Out-File -FilePath $logPath

    $failures = @()

    1. Verify reboot actually occurred (uptime < 30 minutes)

    $uptime = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime

    $uptimeMinutes = ((Get-Date) - $uptime).TotalMinutes

    if ($uptimeMinutes -gt 30) {

    $failures += "Server does not appear to have rebooted recently (uptime: $([math]::Round($uptimeMinutes)) min)"

    }

    2. Check pending reboot status

    $pendingReboot = Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"

    if ($pendingReboot) {

    $failures += "Reboot still pending after patching — patches may not be fully installed"

    }

    3. Verify critical Windows services

    $requiredServices = @("LanmanServer", "LanmanWorkstation", "Dnscache", "W32Time", "EventLog")

    foreach ($svc in $requiredServices) {

    $service = Get-Service -Name $svc -ErrorAction SilentlyContinue

    if ($service -and $service.Status -ne "Running") {

    $failures += "Service $svc is $($service.Status)"

    }

    }

    4. Verify network connectivity

    $pingResult = Test-Connection -ComputerName "8.8.8.8" -Count 2 -Quiet

    if (-not $pingResult) {

    $failures += "No network connectivity after reboot"

    }

    5. Check Windows Update status

    $lastUpdate = Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1

    "$timestamp | Last installed update: $($lastUpdate.HotFixID) on $($lastUpdate.InstalledOn)" | Out-File -FilePath $logPath -Append

    Report results

    if ($failures.Count -gt 0) {

    "$timestamp | FAILURES DETECTED:" | Out-File -FilePath $logPath -Append

    $failures | ForEach-Object { "$timestamp | FAIL: $_" | Out-File -FilePath $logPath -Append }

    Write-Host "POST-REBOOT FAILURES: $($failures -join '; ')"

    exit 1 # This triggers a NinjaOne alert

    } else {

    "$timestamp | All post-reboot checks passed." | Out-File -FilePath $logPath -Append

    Write-Host "POST-REBOOT: All checks passed."

    exit 0

    }

    3. Role-Specific Post-Reboot Scripts

    Domain Controller:
    # Post-Reboot — Domain Controller Specific
    

    dcdiag /test:services /test:replications /test:advertising /test:fsmocheck | Out-File "C:\ProgramData\NinjaRMMAgent\Logs\PostReboot-DC.log"

    $dcdiagResult = dcdiag /test:services

    if ($dcdiagResult -match "failed") {

    Write-Host "DC HEALTH CHECK FAILED"

    exit 1

    }

    repadmin /replsummary | Out-File "C:\ProgramData\NinjaRMMAgent\Logs\PostReboot-DC.log" -Append

    Exchange Server:
    # Post-Reboot — Exchange Server Specific
    

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn -ErrorAction SilentlyContinue

    $testMail = Test-Mailflow -TargetEmailAddress "healthcheck@client.com.au"

    if ($testMail.TestMailflowResult -ne "Success") {

    Write-Host "EXCHANGE MAILFLOW TEST FAILED"

    exit 1

    }

    Get-ServerComponentState -Identity $env:COMPUTERNAME | Where-Object { $_.State -ne "Active" } | ForEach-Object {

    Write-Host "WARNING: Component $($_.Component) is $($_.State)"

    }

    Hyper-V Host:
    # Post-Reboot — Hyper-V Host Specific
    

    $vms = Get-VM

    $stoppedVMs = $vms | Where-Object { $_.State -ne "Running" -and $_.AutomaticStartAction -eq "Start" }

    if ($stoppedVMs.Count -gt 0) {

    Write-Host "WARNING: VMs that should be running but are stopped:"

    $stoppedVMs | ForEach-Object { Write-Host " - $($_.Name)" }

    $stoppedVMs | Start-VM

    exit 1

    }

    SQL Server:
    # Post-Reboot — SQL Server Specific
    

    $sqlService = Get-Service -Name "MSSQLSERVER" -ErrorAction SilentlyContinue

    if ($sqlService.Status -ne "Running") {

    Start-Service "MSSQLSERVER"

    Start-Sleep -Seconds 10

    }

    Verify databases are online

    Invoke-Sqlcmd -Query "SELECT name, state_desc FROM sys.databases WHERE state_desc != 'ONLINE'" | ForEach-Object {

    Write-Host "WARNING: Database $($_.name) is $($_.state_desc)"

    exit 1

    }

    Verification Checks

    Pre-reboot script runs before every scheduled server reboot
    Post-reboot script runs after every reboot and results are logged
    Role-specific scripts assigned to the correct device roles
    Post-reboot failures generate a NinjaOne alert and CW ticket
    Script logs are accessible at C:\ProgramData\NinjaRMMAgent\Logs\`
    Scripts tested on non-production servers before production deployment

    Rollback

  • If pre/post scripts cause issues, detach them from the patch policy immediately.
  • If a post-reboot script falsely reports failure, review the log and adjust thresholds.
  • Individual scripts can be disabled per-device via NinjaOne > Device > Scripting > Exclude.

  • Master Verification Checklist

    Agent Deployment

    All managed devices have NinjaOne agent installed and checking in
    Agent version is current across all devices
    Agents are assigned to the correct organisation, location, and role

    Organisation & Grouping

    Organisation name matches ConnectWise Manage exactly
    Custom fields populated (ServiceTier, CW_CompanyID, E8_MaturityLevel)
    All locations created with correct timezones
    No devices with "Unassigned" role

    Patch Management

    Patch policy assigned per E8 maturity level for all organisations
    Workstation deadlines: ML1=14d, ML2=48h/7d/14d, ML3=48h/48h/7d
    Server reboot windows defined and appropriate per role
    DC/Exchange/Hyper-V/SQL have no-auto-reboot policies
    Third-party patching enabled for standard applications
    Patch compliance >95% within policy window

    Monitoring

    Disk space: Warning 80%, Critical 90%
    CPU/Memory: Sustained 90% for 15 min (workstations), 85% for 10 min (servers)
    Server offline: 5-minute alert
    Firewall/switch offline: 2-minute alert
    Security services (EDR, AV, ThreatLocker) stopped = P1 alert
    Event log monitoring: failed logins, unexpected shutdowns, VSS errors

    Automation

    Weekly maintenance scripts running on all devices
    Pre-reboot scripts attached to server patch policies
    Post-reboot verification scripts running and logging results
    Role-specific post-reboot scripts for DC, Exchange, Hyper-V, SQL

    Software Inventory

    Inventory polling active and current
    Monthly ThreatLocker reconciliation documented
    No unapproved software present without justification

    ConnectWise Integration

    PSA integration connected and tested
    All alert types mapped to correct CW boards, types, and priorities
    Auto-close enabled for resolved alerts
    Company mapping correct across all organisations

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation

    SOP: Knowledge Management & Documentation

    Document ID: NET-SOP-KM-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    TCF Section: 10.0
    Review Cycle: Quarterly or after vendor portal/product changes

    Table of Contents

  • Confluence Space Structure
  • Entra ID SSO & Conditional Access for Confluence
  • Permission Scheme Configuration
  • Document Lifecycle Management
  • Audit Trail & Compliance Exports
  • ConnectWise Manage Knowledge Base Integration
  • External Sharing & Client Collaboration
  • Master Verification Checklist
  • Document History

  • Confluence Space Structure

    ISM Controls: ISM-0888, ISM-1602

    Prerequisites

  • Atlassian Cloud organisation with Confluence Cloud licence (https://netier.atlassian.net)
  • Atlassian Organisation Admin access
  • Space creation permissions assigned to Security Engineering leads
  • Entra ID SSO integration configured (see next section)
  • Step-by-Step Instructions

    1. Create the Internal SOPs Space

  • Log in to Confluence (https://netier.atlassian.net/wiki).
  • Click Spaces > Create a space.
  • Select Blank space.
  • Configure:
  • - Space name: Internal SOPs

    - Space key: INTSOP

    - Description: "Netier internal standard operating procedures. Restricted to Netier staff. Contains all operational and security SOPs."

  • Click Create.
  • Immediately configure permissions (see Permission Scheme section — restrict to Netier staff only before adding any content).
  • Create the following top-level page hierarchy:
  • Internal SOPs (INTSOP)
    

    ├── Security Operations

    │ ├── SOP: Endpoint Protection

    │ ├── SOP: Vulnerability Management

    │ ├── SOP: Identity & Cloud Workspaces

    │ ├── SOP: Security Awareness Training

    │ └── SOP: Incident Response

    ├── Infrastructure Operations

    │ ├── SOP: Infrastructure & Compute

    │ ├── SOP: Backup & Disaster Recovery

    │ ├── SOP: RMM & NinjaOne

    │ └── SOP: Endpoint Management & MDM

    ├── Compliance & Governance

    │ ├── SOP: Knowledge Management (this document)

    │ ├── Compliance Review Procedures

    │ └── Evidence Collection Guide

    └── Templates

    ├── SOP Template

    ├── Runbook Template

    └── Incident Report Template

    2. Create the Client Documentation Space

  • Click Spaces > Create a space.
  • Configure:
  • - Space name: Client Documentation

    - Space key: CLIENTDOC

    - Description: "Per-client technical documentation, network diagrams, configurations, and handover notes."

  • Create sub-pages per client using a consistent naming convention:
  • Client Documentation (CLIENTDOC)
    

    ├── [ClientCode] — Client Name

    │ ├── Network & Infrastructure

    │ │ ├── Network Diagram

    │ │ ├── IP Address Register

    │ │ ├── Firewall Rules

    │ │ └── VLAN Configuration

    │ ├── Identity & Access

    │ │ ├── Entra ID Configuration

    │ │ ├── Conditional Access Policies

    │ │ └── Service Accounts Register

    │ ├── Backup & DR

    │ │ ├── Backup Configuration

    │ │ ├── DRP Document

    │ │ └── DR Test Reports

    │ ├── Security

    │ │ ├── E8 Maturity Assessment

    │ │ ├── ThreatLocker Configuration

    │ │ └── Vulnerability Scan Results

    │ └── Contacts & Escalation

    │ ├── Client Contact List

    │ └── Vendor Contacts

    ├── [NextClient] — Client Name

    │ └── ...

  • Apply permissions: Netier staff have View/Edit; no external access unless explicitly approved.
  • 3. Create the Compliance Frameworks Space

  • Click Spaces > Create a space.
  • Configure:
  • - Space name: Compliance Frameworks

    - Space key: COMPLY

    - Description: "TCF baselines, ISM control mappings, Essential Eight assessments, evidence registers, and compliance policies."

  • Create the page hierarchy:
  • Compliance Frameworks (COMPLY)
    

    ├── Trusted Compliance Framework (TCF)

    │ ├── TCF Control Matrix

    │ ├── TCF Section Mapping to SOPs

    │ └── TCF Evidence Register

    ├── Essential Eight

    │ ├── E8 Maturity Model Overview

    │ ├── Per-Client E8 Assessments

    │ │ ├── [ClientCode] — ML Assessment

    │ │ └── ...

    │ └── E8 Remediation Tracking

    ├── ISM Controls

    │ ├── ISM Control Register

    │ ├── ISM Implementation Status

    │ └── ISM Gap Analysis Template

    ├── Policies

    │ ├── Information Security Policy

    │ ├── Acceptable Use Policy

    │ ├── Incident Response Policy

    │ ├── Data Classification Policy

    │ └── Vendor Management Policy

    └── Evidence Library

    ├── YYYY-QX Evidence Collection

    └── Audit Reports

  • Apply permissions: Restricted to Security Engineering leads and Compliance team.
  • Verification Checks

    All three spaces created: INTSOP, CLIENTDOC, COMPLY
    Page hierarchies established per the structures above
    Space descriptions are accurate and meaningful
    Permissions applied before any content is added (see Permission Scheme section)
    No anonymous or public access on any space
    Confluence navigation sidebar shows the correct hierarchy

    Rollback

  • Spaces can be renamed via Space Settings > General > Space details.
  • Spaces should never be deleted. If a space is created in error, archive it: Space Settings > General > Delete this space (moves to trash, recoverable for 60 days).
  • Page trees can be reorganised by drag-and-drop or by moving pages via ... > Move.

  • Entra ID SSO & Conditional Access for Confluence

    ISM Controls: ISM-0888, ISM-0041

    Prerequisites

  • Microsoft Entra ID (Azure AD) with P1 or P2 licence
  • Atlassian Cloud organisation linked to Atlassian Access (required for SAML SSO)
  • Atlassian Access subscription active
  • Global Administrator or Application Administrator role in Entra ID
  • Step-by-Step Instructions

    1. Configure SAML SSO in Atlassian Access

  • Log in to Atlassian Admin (https://admin.atlassian.com).
  • Navigate to Security > SAML single sign-on.
  • Click Add SAML configuration.
  • Note the SP Entity ID and SP ACS URL — these are needed in Entra ID.
  • 2. Create Enterprise Application in Entra ID

  • Log in to Microsoft Entra Admin Centre (https://entra.microsoft.com).
  • Navigate to Identity > Applications > Enterprise applications.
  • Click New application > Create your own application.
  • Name: Atlassian Cloud (Confluence + Jira).
  • Select Integrate any other application you don't find in the gallery (Non-gallery).
  • Click Create.
  • 3. Configure SAML SSO

  • In the enterprise application, navigate to Single sign-on > SAML.
  • Under Basic SAML Configuration, click Edit:
  • - Identifier (Entity ID): Paste the SP Entity ID from Atlassian Admin.

    - Reply URL (ACS URL): Paste the SP ACS URL from Atlassian Admin.

    - Sign on URL: https://netier.atlassian.net

  • Under Attributes & Claims, configure:
  • - NameID: user.userprincipalname (Format: Email address).

    - Add claim: displayName -> user.displayname.

    - Add claim: email -> user.mail.

  • Under SAML Certificates, download the Certificate (Base64) and copy the Login URL and Azure AD Identifier.
  • Return to Atlassian Admin > SAML single sign-on:
  • - Identity provider Entity ID: Paste the Azure AD Identifier.

    - Identity provider SSO URL: Paste the Login URL.

    - Public x509 certificate: Paste the downloaded certificate content.

  • Click Save configuration.
  • Verify your domain in Atlassian Access (Domains > Verify domain for netier.com.au).
  • Enable Enforce SSO once verification is complete.
  • PowerShell — Verify SSO Configuration:
    # Verify Entra ID enterprise app SSO configuration
    

    Connect-MgGraph -Scopes "Application.Read.All"

    $app = Get-MgServicePrincipal -Filter "displayName eq 'Atlassian Cloud (Confluence + Jira)'"

    $ssoConfig = Get-MgServicePrincipalSamlSingleSignOnSetting -ServicePrincipalId $app.Id

    Write-Host "App: $($app.DisplayName)"

    Write-Host "SSO Mode: $($app.PreferredSingleSignOnMode)"

    Write-Host "Login URL: $($app.LoginUrl)"

    Write-Host "Enabled: $($app.AccountEnabled)"

    4. Configure Conditional Access Policy

  • In Entra Admin Centre > Protection > Conditional Access > Policies.
  • Click New policy.
  • Configure:
  • - Name: CA-Confluence-MFA-Compliant

    - Users: All Netier staff (or a specific group like SG-Confluence-Users).

    - Target resources > Cloud apps: Select the Atlassian Cloud enterprise application.

    - Conditions > Locations: Include all locations.

    - Grant:

    - Require multi-factor authentication.

    - Require device to be marked as compliant (if Intune MDM is deployed).

    - Session:

    - Sign-in frequency: 12 hours (forces re-authentication daily).

    - Persistent browser session: Disabled (no "stay signed in").

  • Set policy to Report-only first, monitor for 7 days, then switch to On.
  • Verification Checks

    SAML SSO configured and domain verified in Atlassian Access
    SSO enforcement enabled — users cannot bypass SSO with local Atlassian passwords
    Conditional Access policy in place requiring MFA for Confluence access
    Test login: user is redirected to Microsoft login, completes MFA, and lands in Confluence
    Failed login (non-compliant device, no MFA): access is blocked as expected
    Sign-in logs in Entra ID show Confluence logins going through the CA policy

    Rollback

  • If SSO breaks and users are locked out, disable Enforce SSO in Atlassian Admin. Users can then log in with Atlassian credentials while the issue is resolved.
  • If the Conditional Access policy blocks legitimate users, switch it to Report-only immediately.
  • Certificate expiry: SAML certificates expire (typically 3 years). Set a calendar reminder 30 days before expiry to rotate the certificate. Rotation procedure: generate new cert in Entra ID, upload to Atlassian Admin, then remove old cert.

  • Permission Scheme Configuration

    ISM Controls: ISM-0888, ISM-1602, ISM-0041

    Prerequisites

  • Confluence spaces created (see Space Structure section)
  • Entra ID groups synced to Atlassian (via SCIM provisioning or manual group creation)
  • Permission scheme design agreed by Security Engineering leads
  • Step-by-Step Instructions

    1. Define Atlassian Groups

    Create the following groups in Atlassian Admin > Directory > Groups:

    Group NameMembersPurpose
    confluence-adminsSecurity Engineering leads (2-3 people)Full admin on all spaces
    confluence-editors-sopAll Netier engineersEdit access to Internal SOPs space
    confluence-editors-clientAssigned engineers per clientEdit access to Client Documentation
    confluence-editors-complySecurity Engineering + ComplianceEdit access to Compliance Frameworks
    confluence-viewersAll Netier staffView-only access across all spaces

    Sync these groups from Entra ID via SCIM:

  • In Atlassian Admin > Directory > User provisioning.
  • Enable SCIM provisioning with Entra ID.
  • In Entra ID, configure Provisioning on the Atlassian Cloud enterprise app:
  • - Provisioning Mode: Automatic.

    - Tenant URL: https://api.atlassian.com/scim/directory/DIRECTORY_ID

    - Secret Token: Generate in Atlassian Admin.

  • Map Entra ID groups to Atlassian groups.
  • Start provisioning sync.
  • 2. Apply Space Permissions

    For each space, configure permissions via Space Settings > Permissions.

    Internal SOPs (INTSOP):
    PrincipalViewAddEditDeleteAdmin
    confluence-adminsYesYesYesYesYes
    confluence-editors-sopYesYesYesNoNo
    confluence-viewersYesNoNoNoNo
    Anonymous usersNoNoNoNoNo
    Client Documentation (CLIENTDOC):
    PrincipalViewAddEditDeleteAdmin
    confluence-adminsYesYesYesYesYes
    confluence-editors-clientYesYesYesNoNo
    confluence-viewersYesNoNoNoNo
    Anonymous usersNoNoNoNoNo
    Compliance Frameworks (COMPLY):
    PrincipalViewAddEditDeleteAdmin
    confluence-adminsYesYesYesYesYes
    confluence-editors-complyYesYesYesNoNo
    confluence-viewersYesNoNoNoNo
    Anonymous usersNoNoNoNoNo
    Applying permissions in Confluence UI:
  • Open the space > Space Settings (gear icon bottom-left).
  • Click Permissions under "Space permissions".
  • Click Edit Permissions.
  • Under Groups, add each group and set checkboxes per the tables above.
  • Under Anonymous Access: ensure all checkboxes are unchecked.
  • Click Save All.
  • 3. Page-Level Restrictions (Where Needed)

    For sensitive pages within a space (e.g., incident reports, vulnerability findings):

  • Open the page.
  • Click the lock icon (Restrictions) in the top-right.
  • Click Add restriction.
  • Select Only specific people can view or edit this page.
  • Add the relevant group or individuals.
  • Click Apply.
  • Use page restrictions sparingly — space-level permissions should be sufficient for most content.

    Confluence REST API — Audit Permissions:
    # List all space permissions for the INTSOP space
    

    Requires an Atlassian API token (generate at https://id.atlassian.com/manage-profile/security/api-tokens)

    curl -s -u "admin@netier.com.au:ATLASSIAN_API_TOKEN" \

    "https://netier.atlassian.net/wiki/rest/api/space/INTSOP?expand=permissions" \

    | python3 -c "

    import sys, json

    data = json.load(sys.stdin)

    for perm in data.get('permissions', []):

    subject = perm.get('subjects', {})

    group = subject.get('group', {}).get('results', [{}])

    user = subject.get('user', {}).get('results', [{}])

    principal = group[0].get('name', '') if group else user[0].get('displayName', 'Unknown') if user else 'Unknown'

    operation = perm.get('operation', {}).get('operation', '')

    print(f'{principal}: {operation}')

    "

    Verification Checks

    All five Atlassian groups created and populated with correct members
    SCIM provisioning active — group membership syncs from Entra ID within 40 minutes
    Each space has permissions applied per the tables above
    Anonymous access is disabled on all spaces
    Delete permission is restricted to confluence-admins only
    Test: a confluence-viewers member can view but NOT edit pages
    Test: a confluence-editors-sop member can edit Internal SOPs but NOT delete
    Test: an external user (not in any group) cannot access any space
    Page-level restrictions used only where explicitly required

    Rollback

  • If a user is incorrectly locked out, add them to the correct Atlassian group (or fix the Entra ID group membership and wait for SCIM sync).
  • If permissions are misconfigured on a space, a confluence-admins member can always access Space Settings > Permissions and correct them.
  • If SCIM provisioning fails, manually manage group membership in Atlassian Admin until the sync is restored.

  • Document Lifecycle Management

    ISM Controls: ISM-0888, ISM-1602

    Prerequisites

  • Confluence spaces and permissions configured
  • Document templates created (SOP Template, Runbook Template, etc.)
  • ConnectWise Manage recurring tickets configured for review reminders
  • Step-by-Step Instructions

    1. Document Creation

    All new documents must follow this process:

  • Navigate to the appropriate space and parent page.
  • Click Create (+ button).
  • Select the appropriate template:
  • - SOP Template — for standard operating procedures.

    - Runbook Template — for step-by-step operational runbooks.

    - Policy Template — for governance policies.

  • Complete all template fields:
  • - Document ID: Follow the convention NET-{TYPE}-{ABBREV}-{SEQ} (e.g., NET-SOP-BDR-001).

    - Version: Start at 1.0.

    - Effective Date: Today's date.

    - Next Review: Effective date + review cycle (6 months for SOPs, 12 months for policies).

    - Owner: Assigned team or individual.

    - Classification: Internal (default) or Confidential.

  • Add Labels for discoverability:
  • - sop, policy, runbook (document type).

    - tcf-section-X (compliance mapping).

    - ism-XXXX (relevant ISM controls).

    - client-[clientcode] (if client-specific).

  • Before publishing, have a second engineer review the content.
  • Click Publish.
  • 2. Review Cadence & Triggers

    Document TypeReview CycleTrigger
    Standard Operating Procedures6 monthsCW recurring ticket
    Governance Policies12 monthsCW recurring ticket
    Client Technical Documentation6 months (or on change)CW recurring ticket + ad hoc
    Compliance EvidencePer audit scheduleAudit preparation
    Incident ReportsNo scheduled reviewCreated per incident, archived after closure
    ConnectWise Recurring Ticket Setup for Reviews:
  • In ConnectWise Manage > Service Desk > Tickets, click New Recurring Ticket.
  • Configure:
  • - Summary: Documentation Review — [Space Name] — [Quarter].

    - Board: Compliance.

    - Type: Scheduled Review.

    - Recurrence:

    - SOPs: Every 6 months (January, July).

    - Policies: Every 12 months (January).

    - Assigned To: Security Engineering team lead.

    - Description: Include:

    - Link to the Confluence space.

    - List of documents due for review (or "review all pages in space with Next Review date in this period").

    - Checklist: verify accuracy, update procedures, confirm ISM control mappings, update version number and review date.

  • Click Save.
  • 3. Document Review Process

    When a review is triggered (CW ticket arrives):

  • Open the CW ticket and note the documents to be reviewed.
  • For each document in the Confluence space:
  • a. Open the page and read through all sections.

    b. Verify all procedures are still accurate (portal paths, CLI commands, tool versions).

    c. Check that ISM control mappings are still correct (cross-reference with the latest ISM release).

    d. Update any outdated content.

    e. If changes were made:

    - Increment the version number (e.g., 1.0 to 1.1 for minor, 2.0 for major rewrite).

    - Update the Effective Date to today.

    - Update the Next Review date.

    - Add an entry to the Document History table.

    - Add a change note in the Confluence page save dialog (mandatory).

    f. If no changes were needed:

    - Update only the Next Review date (advance by the review cycle).

    - Add a Document History entry: "Reviewed — no changes required."

  • Close the CW ticket with a summary of documents reviewed and changes made.
  • 4. Version Control

    Confluence provides built-in page version history. Enforce the following practices:

  • Every save must include a change note. Navigate to the page editor > click Publish > enter a meaningful change note (e.g., "Updated Veeam backup section to reflect v12.2 changes").
  • Never use "Revert to this version" without explicit approval from a confluence-admins member. Reverting discards all intermediate changes.
  • To compare versions: open a page > click ... > Page history > Compare between versions.
  • For major rewrites, create the new version as a draft, have it peer-reviewed, then publish.
  • 5. Document Archival

    When a document is no longer current (deprecated tool, decommissioned client, etc.):

  • Do NOT delete the page. Deletion removes audit history.
  • Move the page to the Archive section within the space:
  • - Click ... > Move on the page.

    - Select the Archive parent page as the destination.

  • Add the label archived to the page.
  • Add a banner at the top of the page:
  • /info
    

    This document has been archived as of [DATE]. It is retained for historical reference only.

    Replacement document: [link to new document, if applicable]

  • Remove the page from any navigation shortcuts or pinned items.
  • Verification Checks

    All documents follow the approved template structure
    Document IDs follow the naming convention NET-{TYPE}-{ABBREV}-{SEQ}
    Labels applied to all pages (document type, TCF section, ISM controls)
    CW recurring tickets exist for all review cycles
    All documents have a valid Next Review date that has not passed
    Page history shows change notes on every save
    No documents are deleted — deprecated documents are archived
    Version numbers increment on every change

    Rollback

  • If a page is accidentally deleted, check the Space Trash (Space Settings > Manage content > Trash) and restore within 60 days.
  • If a page is incorrectly edited, use Page history > Revert to restore the previous version (requires confluence-admins approval).
  • If a document is archived prematurely, move it back to the active section and remove the archived label.

  • Audit Trail & Compliance Exports

    ISM Controls: ISM-0888, ISM-1602, ISM-0041

    Prerequisites

  • Atlassian Access subscription (provides organisation-level audit logs)
  • Export permissions (Atlassian Organisation Admin role)
  • Step-by-Step Instructions

    1. Confluence Page History (Per-Page Audit)

  • Open any Confluence page.
  • Click ... > Page history.
  • The history shows:
  • - Version number (auto-incrementing).

    - Date/time of each edit.

    - Author (authenticated via SSO — traceable to Entra ID user).

    - Change note (if entered at save time).

    - Diff view (compare any two versions).

  • For compliance evidence, take a screenshot of the page history or export as PDF.
  • 2. Organisation-Level Audit Log (Atlassian Access)

  • Log in to Atlassian Admin (https://admin.atlassian.com).
  • Navigate to Security > Audit log.
  • Filter by:
  • - Date range: Select the audit period.

    - Product: Confluence.

    - Action type: Page created, Page updated, Page deleted, Permission changed, Space created, etc.

    - User: Filter by specific user if investigating.

  • Export the audit log:
  • - Click Export (CSV format).

    - Save to the compliance evidence folder.

    3. Export Pages for Auditors

    When external auditors need to review documentation:

  • Single page export:
  • - Open the page > ... > Export > PDF (or Word).

    - This includes the page content, author, and last modified date.

  • Space export (bulk):
  • - Navigate to Space Settings > Content Tools > Export.

    - Select PDF Export or HTML Export.

    - Choose All pages or Custom (select specific page tree).

    - Click Export — Confluence generates a downloadable file.

  • API-based bulk export:
  • # Export all pages from the INTSOP space as JSON (for archival/migration)
    

    curl -s -u "admin@netier.com.au:ATLASSIAN_API_TOKEN" \

    "https://netier.atlassian.net/wiki/rest/api/space/INTSOP/content/page?limit=100&expand=body.storage,version,history" \

    -o intsop-export.json

    echo "Exported $(python3 -c "import json; print(len(json.load(open('intsop-export.json'))['results']))" ) pages from INTSOP space."

  • Provide exports to auditors via a time-limited SharePoint link (not a permanent Confluence guest account). See External Sharing section.
  • Verification Checks

    Page history is enabled and recording changes (this is on by default in Confluence Cloud)
    Organisation audit log is accessible and contains recent events
    Audit log can be exported to CSV successfully
    Page export (PDF/HTML) works and includes metadata (author, date, version)
    Exports are provided to auditors via secure, time-limited channels only

    Rollback

  • Audit logs cannot be deleted or modified in Confluence Cloud — this is by design for compliance.
  • If an export fails, verify the Atlassian API token has not expired and regenerate if needed.

  • ConnectWise Manage Knowledge Base Integration

    ISM Controls: ISM-0888

    Prerequisites

  • ConnectWise Manage access with knowledge base permissions
  • Confluence pages published for each relevant SOP/runbook
  • Convention for linking CW KB articles to Confluence source of truth
  • Step-by-Step Instructions

    1. CW Manage Knowledge Base Strategy

    The ConnectWise Manage knowledge base is used as a quick-reference layer for common tasks, while Confluence remains the source of truth for full SOPs and documentation.

    CW KB articles should:

  • Contain a brief summary (1-2 paragraphs) of the procedure.
  • Include a direct link to the full Confluence page.
  • Be tagged with relevant CW categories for searchability during ticket resolution.
  • 2. Create a CW KB Article Linked to Confluence

  • In ConnectWise Manage > System > Knowledge Base.
  • Click New Article.
  • Configure:
  • - Title: Match the SOP title (e.g., "SOP: Backup & Disaster Recovery").

    - Category: Map to the relevant CW category (e.g., "Backup", "Security", "Monitoring").

    - Board: Link to the board where related tickets are managed.

    - Resolution:

    Quick Reference: [Brief 2-3 sentence summary of the SOP scope]
    
    

    Full SOP: https://netier.atlassian.net/wiki/spaces/INTSOP/pages/PAGE_ID

    Document ID: NET-SOP-BDR-001

    Last Reviewed: 2026-03-26

    Next Review: 2026-09-26

    Note: Always refer to the Confluence page for the latest version. This KB article

    is a pointer only.

  • Click Save.
  • When engineers are working tickets, they can search the CW KB to find the relevant SOP link.
  • 3. Maintain Synchronisation

  • When a Confluence SOP is updated, update the corresponding CW KB article's "Last Reviewed" date.
  • Add this as a step in the Document Review Process (see Document Lifecycle section).
  • Include it in the CW recurring review ticket checklist:
  • - "Update CW KB article [KB#] to reflect latest Confluence version."

    PowerShell — List CW KB Articles (via REST API):
    # List ConnectWise Manage Knowledge Base articles
    

    $cwServer = "na.myconnectwise.net"

    $cwCompany = "netier"

    $cwPublicKey = "YOUR_PUBLIC_KEY"

    $cwPrivateKey = "YOUR_PRIVATE_KEY"

    $auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${cwCompany}+${cwPublicKey}:${cwPrivateKey}"))

    $headers = @{

    "Authorization" = "Basic $auth"

    "Content-Type" = "application/json"

    "clientId" = "YOUR_CW_CLIENT_ID"

    }

    $response = Invoke-RestMethod -Uri "https://$cwServer/v4_6_release/apis/3.0/service/knowledgebasearticles?pageSize=100"

    -Headers $headers -Method Get

    $response | Select-Object id, title, @{N='Category';E={$_.categoryId}} | Format-Table -AutoSize

    Verification Checks

    CW KB articles exist for all published SOPs
    Each CW KB article contains a direct link to the Confluence source page
    CW KB articles are tagged with appropriate categories
    CW KB "Last Reviewed" dates match the Confluence page version
    Engineers can find relevant SOPs via CW KB search during ticket resolution

    Rollback

  • CW KB articles are non-destructive — update or archive them if incorrect.
  • If links to Confluence pages break (page moved/renamed), update the URL in the CW KB article.

  • External Sharing & Client Collaboration

    ISM Controls: ISM-0888, ISM-0041

    Prerequisites

  • Confluence external sharing settings configured by Atlassian Organisation Admin
  • Approval process defined for granting external access
  • Client collaboration requirements documented
  • Step-by-Step Instructions

    1. Disable Global External Sharing

  • Log in to Atlassian Admin (https://admin.atlassian.com).
  • Navigate to Security > External users.
  • Set External user access to: Restricted — only admins can invite external users.
  • Under Anonymous access: Ensure Disabled globally.
  • Under Public links: Ensure Disabled globally.
  • This ensures no engineer can accidentally share a Confluence page externally.

    2. Client Collaboration Space (When Explicitly Approved)

    When a client needs temporary access to specific documentation (e.g., during a project handover, audit support, or joint troubleshooting):

  • Obtain written approval from the Netier Security Engineering lead (email or CW ticket note).
  • Create a dedicated collaboration space:
  • - Space name: [ClientCode] Collaboration — [Purpose] (e.g., LCA Collaboration — DR Test Review).

    - Space key: COLLAB-[CODE]`.

  • Copy (do NOT move) the relevant pages from the internal space to the collaboration space.
  • Redact any Netier-internal information (other client names, internal IP addresses, credentials references).
  • Grant external access:
  • - In Space Settings > Permissions, add the client's email address(es) as Viewers (never Editors unless explicitly required and approved).

    - The client will receive an invitation email to create an Atlassian account (or use their existing one).

  • Set an expiry date for the collaboration:
  • - Create a CW ticket with a due date (maximum 30 days from creation).

    - When the ticket comes due, remove the client's access and archive the collaboration space.

    3. Alternative: SharePoint Sharing for Document Delivery

    For one-time document delivery (e.g., providing a DRP test report to a client):

  • Upload the document to the client's SharePoint folder (if Netier manages their tenant).
  • Or: upload to Netier's SharePoint and create a time-limited sharing link:
  • - In SharePoint, right-click the file > Share > People you specify.

    - Enter the client contact's email.

    - Set Link expiration: 7 days.

    - Set Can view (not edit).

    - Click Send.

  • Document the share in the CW ticket for audit trail.
  • Verification Checks

    Global external sharing is disabled in Atlassian Admin
    Anonymous access is disabled across all spaces
    Public links are disabled
    No active collaboration spaces exist without a corresponding CW ticket with an expiry date
    All collaboration spaces are archived within 30 days of creation
    Client access is view-only (not edit) unless explicitly approved
    Quarterly audit: review all external users in Atlassian Admin > Users and remove any stale accounts

    Rollback

  • If a client is given access in error, remove their permissions immediately from the space and notify the Security Engineering lead.
  • If sensitive data was exposed, follow the Incident Response procedure (SOP: Incident Response).
  • Stale collaboration spaces should be archived, not deleted (preserves audit trail).

  • Master Verification Checklist

    Confluence Space Structure

    INTSOP space created with correct page hierarchy
    CLIENTDOC space created with per-client sub-pages
    COMPLY space created with TCF, E8, ISM, and Policies sections
    Space descriptions are accurate

    Entra ID SSO & Conditional Access

    SAML SSO configured and domain verified
    SSO enforcement active — no local password bypass
    Conditional Access policy requires MFA for Confluence
    Conditional Access policy tested in Report-only before enforcement
    Certificate expiry reminder set (30 days before)

    Permissions

    Five Atlassian groups created and populated correctly
    SCIM provisioning active from Entra ID
    Space permissions applied per the defined tables
    Anonymous access disabled on all spaces
    Delete permission restricted to confluence-admins
    Permission scheme tested with viewer, editor, and admin accounts

    Document Lifecycle

    All documents use approved templates
    Document IDs follow naming convention
    Labels applied (type, TCF section, ISM controls)
    CW recurring tickets configured for review cycles (6 months SOPs, 12 months policies)
    All documents have a valid Next Review date
    Change notes entered on every page save
    Deprecated documents archived, not deleted

    Audit Trail

    Page history enabled and recording
    Organisation audit log accessible and exportable
    Page export (PDF/HTML) tested and functional

    ConnectWise Integration

    CW KB articles exist for all SOPs
    Articles link to Confluence source pages
    Articles are categorised and searchable
    Last Reviewed dates synchronised with Confluence

    External Sharing

    Global external sharing disabled
    Anonymous and public link access disabled
    No stale collaboration spaces (all have expiry tickets)
    Quarterly external user audit scheduled

    Document History

    DateAuthorChange
    2026-03-26Netier Security EngineeringInitial creation
    PART 4

    Operational Plans

    Incident Response Plan (IRP)

    Document ID: NET-OP-IRP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview & Objectives

    This Incident Response Plan (IRP) defines the structured approach Netier uses to detect, classify, respond to, and recover from cybersecurity incidents. It fulfills the requirements of ISO 27001 (A.16), SOCI Act, DISP, and the Privacy Act 1988 (AU).

    2. Roles and Responsibilities (The SIRT)

    The Security Incident Response Team (SIRT) is activated during any P1 or P2 security incident.

  • Incident Commander (vCISO / Technical Director): Overall authority, coordinates the response, handles external communications.
  • Lead Investigator (SOC Analyst / Senior Engineer): Leads technical containment and root-cause analysis via the LVE and SIEM platforms.
  • Communications Lead (Service Delivery Manager): Manages client updates, partner communications, and staff instructions.
  • Legal / Compliance: Manages mandatory reporting (ACSC, OAIC).
  • 3. Incident Classification Matrix

    | Severity | Description | Response Time | Action |

    | :--- | :--- | :--- | :--- |

    | P1 (Critical) | Active ransomware, data breach (PII exposed), core MSP toolstack compromised (NinjaOne/CW). | Immediate | Full SIRT activation. Global kill switches activated. |

    | P2 (High) | Compromised admin account, localized malware outbreak, critical firewall offline. | < 1 Hour | Partial SIRT activation. Isolate affected client/network. |

    | P3 (Medium) | Phishing attempt (unsuccessful), isolated endpoint malware (caught by EDR), unauthorized scanning. | < 4 Hours | Standard SOC ticket workflow. |

    | P4 (Low) | Anomalous login blocked by Conditional Access, spam influx. | Next Business Day | Automated closure / standard review. |

    4. The 6-Phase Response Process

    4.1 Preparation

  • Maintain the Lifecycle & Vulnerability Engine (LVE) to ensure all asset inventories and patching baselines are accurate.
  • Conduct bi-annual tabletop exercises.
  • Ensure immutable backups (DRP) are tested and isolated.
  • 4.2 Identification

  • Alerts triggered via EDR, SIEM, LVE, or user reports.
  • The SOC verifies the alert to rule out false positives.
  • Incident is formally declared and classified (P1-P4).
  • 4.3 Containment

  • Short-Term: Disconnect affected endpoints from the network (via NinjaOne/EDR isolation). Disable compromised Entra ID accounts. If the MSP toolstack is at risk, utilize the Global Kill Switch to sever API connections.
  • Long-Term: Deploy enhanced monitoring, rotate all suspected compromised credentials via Bitwarden/Keeper, implement strict geo-blocking.
  • 4.4 Eradication

  • Remove malware, delete unauthorized persistence mechanisms (scheduled tasks, run keys, forwarding rules in Exchange).
  • Patch the exploited vulnerability utilizing the LVE workflow.
  • 4.5 Recovery

  • Restore systems from immutable, known-good backups.
  • Re-enable network access in a phased approach (Canary ring validation).
  • Continuous monitoring of recovered assets for 72 hours to ensure no re-infection.
  • 4.6 Lessons Learned

  • Post-Incident Review (PIR) completed within 7 days for P1/P2 incidents (target), 14 days hard SLA for all incidents.
  • Update baselines, CA policies, and training materials based on findings.
  • 4.7 Incident Timeline Gates

    | Gate | Deadline | Action | Owner |

    |------|----------|--------|-------|

    | T+0 | Incident confirmed | SIRT activated; CW ticket created; initial classification (P1-P4) | SOC Analyst |

    | T+1h | +1 hour | Containment actions initiated; client notification (P1/P2); evidence preservation started | Incident Commander |

    | T+12h | +12 hours | SOCI Act report to ACSC (if critical infrastructure); containment confirmed; scope assessment complete | Legal / Compliance |

    | T+72h | +72 hours | NDB/OAIC notification (if PII breach); eradication in progress; interim client report delivered | Legal / Compliance |

    | T+14d | +14 calendar days | PIR completed (P1/P2: 7-day target); corrective actions logged in CW; baselines updated | Incident Commander |

    4.8 Global Kill Switch Procedure

    The Global Kill Switch is a pre-planned emergency disconnection sequence executed when the MSP toolstack itself is compromised (e.g., supply chain attack, NinjaOne/CW breach).

    Disconnection Steps (execute in order):
  • Revoke API tokens: Disable all NinjaOne, CW Manage, ThreatLocker, and Sophos Central API keys from a pre-prepared offline credential store (Keeper vault on isolated device).
  • Disable GDAP/DAP relationships: Remove delegated admin privileges from the Partner Center to sever tenant access.
  • Block outbound connections: Apply pre-staged firewall rules (saved as "KILLSWITCH" policy) on WatchGuard/FortiGate devices to block all traffic to NinjaOne, CW, and compromised vendor IP ranges.
  • Isolate CT100: Shut down the Netier Compliance Engine/LVE container on Proxmox to prevent lateral movement via the automation platform.
  • Rotate all shared secrets: Immediately rotate all Break Glass account passwords, FIDO2 re-enrollment for admin accounts, and API secrets.
  • Notify all clients: Pre-drafted communication template sent via secondary channel (mobile/SMS, not email if email is compromised).
  • Recovery: Dual-authorisation required (Incident Commander + Managing Director) to re-enable any API connection or GDAP relationship. Each reconnection verified in isolation before proceeding to the next.

    5. Mandatory Reporting Protocols

  • ACSC / ASD (SOCI Act & DISP): Cyber security incidents affecting critical infrastructure or defense supply chains MUST be reported to the ACSC within 12 hours of confirmation.
  • OAIC (Privacy Act): Any Notifiable Data Breach (NDB) involving PII that is likely to result in serious harm must be reported within 72 hours.
  • Client Notification: Primary contacts notified within 2 hours of a confirmed P1/P2 incident affecting their environment.
  • Business Continuity Plan (BCP)

    Document ID: NET-OP-BCP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview & Purpose

    This Business Continuity Plan (BCP) outlines the strategies and procedures to ensure Netier can maintain critical operational functions and client services during a significant disruption. It aligns with ISO 22301, the SOCI Act, and APRA CPS 234.

    2. Scope of Disruptions

    This plan covers the following primary disaster scenarios:

  • Loss of Physical Facility: Total loss or inaccessibility of Netier's Canberra or Brisbane offices.
  • Loss of Critical Core System: Outage of NinjaOne, ConnectWise, Azure AD, or the LVE/Netier Compliance Engine platforms.
  • Loss of Key Personnel: Unavailability of key staff due to illness, pandemic, or emergency.
  • Widespread Telecommunications/Power Outage: Regional internet or power failure.
  • 3. Critical Functions & Recovery Objectives

    Every core Netier function is mapped against a Maximum Tolerable Period of Disruption (MTPD) and a Recovery Time Objective (RTO).

    | Critical Function | Tool / System | RTO | MTPD |

    | :--- | :--- | :--- | :--- |

    | Emergency Support / Service Desk | ConnectWise PSA / Teams Phone | 1 Hour | 4 Hours |

    | Endpoint Management & Remediation | NinjaOne | 2 Hours | 8 Hours |

    | Identity & Access Management | Entra ID / Keeper / Bitwarden | 1 Hour | 2 Hours |

    | Infrastructure Compliance / Automation| Netier Compliance Engine / LVE (CT100) | 24 Hours | 48 Hours |

    | Client Backups & Restorations | Veeam / AFI.ai | 4 Hours | 12 Hours |

    4. Continuity Strategies

    4.1 Loss of Physical Facility

  • Action: Immediate transition to 100% remote work.
  • Infrastructure: All critical MSP toolstacks are SaaS-based (CW, NinjaOne, M365) or accessible via Zero Trust Network Access (ZTNA) / Cloudflare Tunnels.
  • Communication: Internal coordination switches to Microsoft Teams and secondary mobile channels.
  • 4.2 Loss of Critical Core System

  • NinjaOne Outage: Support shifts to reactive, guided user-assisted remote control (e.g., fallback to Microsoft Quick Assist (built into Windows 10/11)) and manual verification. Automated LVE patching halts.
  • ConnectWise PSA Outage: Incident tracking falls back to a secured, pre-provisioned SharePoint list/Excel matrix until PSA restoration.
  • CT100 (Netier Compliance Engine/LVE) Failure: Compliance scanning and automated firmware updates are paused. Failover to manual dashboard checks. CT100 recovery handled via the Disaster Recovery Plan (DRP).
  • 4.3 Loss of Key Personnel

  • Cross-training is mandatory. At least two personnel must be documented as capable of executing critical tier processes (e.g., LVE orchestrator deployment, Global Kill Switch activation).
  • Emergency elevated access (Break-Glass Accounts) securely vaulted with multi-party approval requirements.
  • 5. Plan Testing and Maintenance

  • Review Frequency: The BCP is reviewed and updated annually or following significant changes to the Netier technology stack.
  • Testing: A BCP tabletop exercise simulating a critical system failure is conducted annually.
  • Distribution: A current, offline copy of this BCP is distributed to the Netier executive team securely.
  • Disaster Recovery Plan (DRP)

    Document ID: NET-OP-DRP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    1. Overview

    The Disaster Recovery Plan (DRP) defines the technical processes and procedures to recover Netier's IT infrastructure, data, and critical applications in the event of a catastrophic failure, cyber-attack, or hardware destruction. It directly supports the Business Continuity Plan (BCP) and maps to Essential Eight (E8) ML3, ISM, and ISO 27001.

    2. Backup Architecture & Standards (E8 ML3 Mandates)

    To protect against ransomware and systemic failures, Netier enforces the following strict backup architectures:

  • Immutability: All critical backups must be written to immutable storage (WORM - Write Once Read Many) preventing deletion or alteration before the retention period expires.
  • Offline/Offsite Isolation: Backups must be mathematically and physically separated from the primary production domain (e.g., stored in Cloudflare R2, AWS Deep Glacier, or physically isolated NAS).
  • Authentication Separation: Backup infrastructure (consoles and storage targets) MUST NOT be joined to the primary Active Directory domain or Entra ID tenant. They require entirely separate, dedicated credentials managed via Keeper.
  • Encryption: Backups must be encrypted at rest (AES-256) and in transit (TLS 1.2+), with encryption keys managed securely and separately from the primary infrastructure.
  • Retention: Daily backups retained for 30 days, Weekly for 12 weeks, Monthly for 12 months (unless client compliance dictates otherwise, e.g., 7 years for financial data).
  • 3. Disaster Classification & RTOs

  • Tier 1 (Critical): Core MSP Systems (CT100, Vaults, Primary AD if applicable). RTO: 4 Hours.
  • Tier 2 (High): File servers, LOB application servers. RTO: 8 Hours.
  • Tier 3 (Standard): Non-critical monitoring, historical log archives. RTO: 48 Hours.
  • 4. Recovery Procedures

    4.1 Server / VM Restoration (e.g., CT100)

  • Isolate: Disconnect the compromised/failed host from the network.
  • Provision: Provision a clean hypervisor environment (Proxmox/ESXi) on secondary hardware or a cloud compute instance.
  • Restore: Initiate a bare-metal/full-VM restoration from the immutable backup console (e.g., Veeam).
  • Verify Integrity: Boot the VM in an isolated sandbox VLAN. Run AV/EDR scans and verify database integrity (e.g., PostgreSQL pg_checksums) BEFORE reconnecting to the production network.
  • 4.2 Active Directory Forest Recovery

    (Required if all Domain Controllers are compromised)
  • Identify the most recent clean backup prior to the incident.
  • Restore the Primary DC into an isolated network.
  • Perform an Authoritative Restore (NTDSUTIL).
  • Seize FSMO roles.
  • Clean metadata of compromised DCs.
  • Build and promote NEW Domain Controllers (do not restore secondary DCs from backups to avoid USN rollback).
  • Reset all user and admin passwords globally via script before enabling client network access.
  • 4.3 Cloud Data (M365 / SharePoint)

  • Initiate granular or full site restoration using the M365 backup tool (e.g., AFI.ai).
  • Route restored files to a dedicated "Recovery Folder" to prevent overwriting newer, intact data unless a full point-in-time rollback is authorized.
  • 5. Testing and Validation

    Regular testing is the only way to ensure recovery capability.

  • Enterprise Tier Clients: Full VM/Bare-metal restoration tests conducted Quarterly.
  • Professional Tier Clients: Restoration tests conducted Bi-Annually.
  • Essential Tier Clients: File/Folder restoration validation conducted Annually.
  • Automated Verification: Use Netier Compliance Engine/LVE (planned) to automatically poll backup success logs and screenshot verifications, flagging any lack of valid backups within a 24-hour window as an SLA breach.
  • 5.1 Test Scheduling & Tracking

    | Tier | Frequency | Scheduling Method | Results Documentation |

    |------|-----------|-------------------|----------------------|

    | Enterprise | Quarterly (Jan, Apr, Jul, Oct) | CW Manage recurring ticket (SEC-WF-012) | Restore test report filed in CW ticket; time-to-restore recorded; delta from stated RTO documented |

    | Professional | Bi-Annually (Mar, Sep) | CW Manage recurring ticket (SEC-WF-012) | Restore test report filed in CW ticket |

    | Essential | Annually (Jun) | CW Manage recurring ticket (SEC-WF-012) | File/folder restore confirmation logged |

    Test procedure per execution:
  • Select target system(s) from the client's DRP scope document.
  • Initiate restore to an isolated sandbox environment (never restore directly to production).
  • Record: start time, completion time, integrity verification result (checksum/boot test/app launch).
  • Compare actual restore time against stated RTO. Document any delta and root cause.
  • File results as internal notes on the CW DRP test ticket. Mark ticket as Resolved.
  • If RTO target was missed: escalate to Service Delivery Manager; create remediation ticket.
  • PART 5

    Compliance Evidence

    IS18 Compliance Mapping — Netier MSP

    Document ID: NET-COMP-IS18-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    >

    Document: Queensland Government IS18 Control Mapping
    Organisation: Netier Managed Services
    Date: 2026-03-25

    Control Mapping

    IS18 Control FamilyIS18 Requirement SummaryNetier Control/ToolConfiguration DetailEvidence SourceTier Availability
    1. Information Security GovernanceEstablish information security policy, assign roles and responsibilities, integrate risk management into operationsISO 27001 certified ISMS; dedicated security governance roles; risk register maintainedISMS policy set reviewed annually; risk register updated quarterly; executive sponsorship documented; alignment to NIST CSF, CIS Controls, ASD ISM, PSPFISMS policy documents, risk register (Confluence), management review minutesEssential
    1. Information Security GovernanceConduct regular risk assessments and maintain a risk treatment planRisk assessment methodology aligned to ISO 27005 and ISMRisk assessments conducted annually (Enterprise: quarterly); risk treatment plan with control owners; residual risk acceptance by managementRisk assessment reports, treatment plans (Confluence)Essential
    1. Information Security GovernanceDefine and communicate security roles and responsibilitiesRACI matrix for security functions; shared responsibility matrix for clientsRoles defined: Security Lead, SOC analysts (Sophos MDR), compliance officer; client-facing shared responsibility matrix per engagementOrg chart, RACI matrix, shared responsibility agreementsEssential
    2. Information Asset ManagementClassify information assets by sensitivity and criticalityM365 Sensitivity Labels (Purview); asset register in ConnectWise ManageSensitivity labels: OFFICIAL, OFFICIAL:Sensitive, PROTECTED (where applicable); auto-labeling policies for email/SharePoint; hardware assets tracked in CW Manage with lifecycle statusPurview compliance portal, CW Manage asset reportsProfessional
    2. Information Asset ManagementMaintain asset inventory with ownershipConnectWise Manage (configuration items); NinjaOne RMM (endpoint inventory)All managed endpoints registered in NinjaOne with org/location tagging; CW Manage CI database with owner, location, warranty, lifecycle stageCW Manage CI exports, NinjaOne device inventoryEssential
    2. Information Asset ManagementSecure handling and disposal of information assetsBitLocker FDE on all endpoints; secure disposal proceduresBitLocker enforced via Intune compliance policy (XTS-AES 256); recovery keys escrowed to Entra ID; disposal: certificate of destruction from certified e-waste providerIntune compliance reports, BitLocker recovery key audit, disposal certificatesEssential
    3. Human Resource SecurityPre-employment screening (background checks, reference checks)HR screening policy; police checks for privileged access rolesAll staff: national police check pre-employment; privileged roles: AFP check + financial check; contractors: equivalent screening requiredHR records, screening certificates (HR system)Essential
    3. Human Resource SecuritySecurity awareness training and phishing simulationuSecure platformMonthly simulated phishing campaigns; quarterly security awareness training modules; auto-remedial enrollment for repeat failures; completion tracking and reportinguSecure dashboard, training completion reports, phishing simulation resultsEssential
    3. Human Resource SecurityTermination and role change proceduresEntra ID lifecycle management; CW Manage offboarding workflowOffboarding checklist: disable Entra account within 4 hours of notification; revoke MFA tokens; remove from all groups; recover hardware; BitLocker key rotation; ConnectWise ticket for audit trailOffboarding tickets (CW Manage), Entra ID audit logsEssential
    4. Physical SecurityProtect facilities housing information systemsClient-managed (Netier advisory); Netier office: access-controlledNetier provides physical security guidance per ISM; client DCs assessed during onboarding; Netier office: key card access, visitor logSite assessment reports, visitor logs, physical security policy (Confluence)Essential
    4. Physical SecurityEquipment protection (power, cabling, environmental)Client-managed with Netier monitoringUPS monitoring via SNMP (NinjaOne agent-based monitoring); environmental sensors where deployed; rack security recommendations in SDDNinjaOne alerts, environmental monitoring dashboardsProfessional
    4. Physical SecuritySecure disposal of equipment and mediaCertified e-waste destruction; BitLocker remote wipeIntune remote wipe capability for managed devices; physical media: certificate of destruction; drives: ATA Secure Erase or physical destructionIntune wipe logs, destruction certificatesEssential
    5. Access ControlImplement identity management and authenticationM365/Entra ID with Conditional Access; FIDO2 MFAConditional Access policies: require MFA for all users; block legacy auth; require compliant device; location-based policies; session controls (1hr for admin portals)Entra ID Conditional Access policy export, sign-in logsEssential
    5. Access ControlManage privileged accessEntra PIM (JIT activation); Break Glass accounts; LAPSPIM: max 4hr activation window; approval required for Global Admin; Break Glass: 2 accounts, excluded from CA, monitored via alert rules; LAPS: 14-day password rotation on local admin; 1-hour post-authentication resetPIM activation logs, Break Glass sign-in alerts, LAPS audit (Intune)Professional
    5. Access ControlEnforce least privilege and separation of dutiesRole-based access in Entra ID; ThreatLocker ringfencingNamed admin accounts separate from daily-use accounts; ThreatLocker application ringfencing prevents lateral tool abuse; Entra RBAC with scoped admin rolesEntra role assignments, ThreatLocker ringfencing policiesProfessional
    5. Access ControlReview access rights regularlyEntra ID Access Reviews; quarterly privilege auditsEntra ID Access Reviews: automated monthly reviews for privileged roles (Enterprise tier — requires Entra ID Governance licence); manual quarterly reviews with documented evidence (Professional/Essential tier). Stale account detection (90 days inactive = disabled)Access review reports, stale account cleanup logsEnterprise
    6. CryptographyEncrypt data at rest and in transitBitLocker (endpoints); TLS 1.2+ enforced; M365 encryptionBitLocker XTS-AES 256 via Intune; TLS 1.2 minimum enforced on all services (TLS 1.0/1.1 disabled); M365 data encrypted at rest (Microsoft-managed keys; CMK available for Enterprise)Intune BitLocker compliance, TLS configuration audits, M365 encryption reportsEssential
    6. CryptographyManage cryptographic keys securelyEntra ID key management; BitLocker recovery keys in EntraBitLocker recovery keys escrowed to Entra ID (auditable); FIDO2 keys registered per-user with attestation; certificate-based auth where applicableEntra ID BitLocker key audit, FIDO2 registration reportEssential
    7. Operations SecurityChange management proceduresConnectWise Manage change tickets; Confluence runbooksAll changes logged as CW tickets with type=Change; CAB review for significant changes; rollback plans documented; emergency change process definedCW Manage change tickets, CAB meeting minutes, Confluence runbooksEssential
    7. Operations SecurityMalware protectionSophos MDR + Defender for Endpoint (EDR); ThreatLocker (default deny)Sophos: managed detection and response 24/7, tamper protection enabled; Defender: ASR rules enforced, real-time protection, cloud-delivered protection; ThreatLocker: default-deny application control, ringfencing, elevation controlSophos Central dashboard, Defender security portal, ThreatLocker audit logsEssential
    7. Operations SecurityBackup and recoveryVeeam (on-prem); AFI.ai (M365); Dropsuite (email archive)Veeam: daily image-level backup, immutable storage (ransomware protection); AFI.ai: M365 backup 3x daily (Exchange, SharePoint, OneDrive, Teams); Dropsuite: email archival and compliance; retention: 90 days default, extended per contractBackup job reports, restore test results, immutability verificationEssential
    7. Operations SecurityLogging and monitoringPrometheus/Grafana; Uptime Kuma; NinjaOne; Sophos MDR; DefenderPrometheus: metric collection from all managed infrastructure; Grafana: dashboards and alerting; Uptime Kuma: HTTP/TCP availability monitoring; NinjaOne: agent-based endpoint and network monitoring; Sophos MDR: 24/7 threat monitoring with analyst response; Defender: security event correlationGrafana dashboards, Uptime Kuma status pages, NinjaOne monitoring reports, Sophos MDR incident reportsEssential
    7. Operations SecurityVulnerability managementTenable/ConnectSecure; NinjaOne patchingTenable/ConnectSecure: weekly external vulnerability scans, monthly internal authenticated scans; CISA KEV prioritization; NinjaOne: Critical/High CVE patches within 48h, Standard within 14 days, third-party patching, firmware within 30 days (critical 14 days)Vulnerability scan reports, patch compliance reports (NinjaOne), remediation trackingEssential
    7. Operations SecurityCapacity management and performance monitoringPrometheus/Grafana; NinjaOneResource utilization monitoring (CPU, memory, disk, network); threshold-based alerting; capacity planning reviews (Enterprise: quarterly)Grafana capacity dashboards, NinjaOne performance reportsProfessional
    8. Communications SecurityNetwork segmentation and access controlWatchGuard/Fortinet firewalls; 802.1x NAC; micro-segmentationDefault-deny firewall rules; IPS/DPI enabled; geo-blocking (non-AU/NZ/US blocked by default); 802.1x NAC for wired/wireless; VLAN segmentation: Data, Voice, Guest, IoT (separate broadcast domains); inter-VLAN routing restricted to required flowsFirewall rule exports, NAC policy config, VLAN topology diagramsEssential
    8. Communications SecuritySecure information transfer and email securityDMARC p=reject; SPF -all; DKIM; Defender for O365; ProofpointDMARC: p=reject enforced (aggregate reports monitored); SPF: -all (hard fail); DKIM: 2048-bit keys; Defender: Safe Links (URL detonation), Safe Attachments (sandbox), ZAP (retroactive purge), strict anti-phishing; Proofpoint: advanced threat protection where deployedDMARC aggregate reports, Defender threat explorer, email authentication records (DNS)Essential
    8. Communications SecurityDNS filtering and web securityCloudflare Gateway / Cisco Umbrella; ZTNADNS-layer filtering blocking malware, phishing, and policy-violating categories; ZTNA replacing traditional VPN for remote access (identity-aware, per-app tunnels)DNS filtering logs, ZTNA access policies, blocked category reportsProfessional
    8. Communications SecurityFirmware and network device patchingWatchGuard/Fortinet firmware managementFirmware maintained at N-1 stable release; patched within 30 days of release; critical CVEs patched within 48 hours; change tickets for all firmware updatesFirmware version audit, patch tickets (CW Manage)Essential
    9. System Acquisition & DevelopmentSecure development and testing practicesCIS Benchmarks for baseline config; Intune configuration profilesCIS hardened baselines deployed via Intune (Windows 10/11, macOS); configuration drift detection; test environments for major deployments; acceptance criteria defined in project scopeIntune configuration profiles, CIS benchmark compliance reports, project documentationProfessional
    9. System Acquisition & DevelopmentSecurity testing before deploymentTenable/ConnectSecure pre-deployment scans; ThreatLocker learning modeNew systems scanned before production deployment; ThreatLocker learning mode captures application behavior before enforcement; Intune compliance check required before Conditional Access grants accessPre-deployment scan reports, ThreatLocker learning mode logsProfessional
    10. Supplier ManagementVendor risk assessment and due diligenceMandatory SOC2/ISO27001 review; data sovereignty trackingAll critical vendors require SOC2 Type II or ISO 27001 certification; data sovereignty tracked (AU-preferred); vendor risk register maintained; annual review of critical vendor certificationsVendor risk register (Confluence), SOC2/ISO27001 certificates, data sovereignty matrixEssential
    10. Supplier ManagementShared responsibility and supply chain securityShared responsibility matrix; contractual security requirementsShared responsibility matrix published per service tier; security requirements in vendor contracts (encryption, breach notification, audit rights); supply chain risk assessment for critical componentsShared responsibility matrix, vendor contracts, supply chain risk assessmentsEssential
    10. Supplier ManagementOngoing vendor performance and security monitoringConnectWise Manage SLA tracking; periodic vendor reviewsSLA performance tracked in CW Manage; vendor security posture reviewed annually (Enterprise: bi-annually); right-to-audit clauses in contractsSLA reports, vendor review recordsProfessional
    11. Incident ManagementIncident detection and reportingSophos MDR (24/7); Defender for Endpoint; Prometheus alertingSophos MDR: 24/7 analyst-led detection and response; automated containment (isolate endpoint); Defender: automated investigation and remediation; Prometheus: infrastructure anomaly alerting; incident reporting within 1 hour of confirmed breachSophos MDR incident reports, Defender incident timeline, alert historyEssential
    11. Incident ManagementIncident response proceduresIncident Response Plan (IRP); ConnectWise Manage incident workflowDocumented IRP aligned to NIST SP 800-61; severity classification (P1-P4); escalation matrix; communication templates; CW Manage incident ticket type with mandatory fieldsIRP document (Confluence), incident tickets, post-incident reviewsEssential
    11. Incident ManagementPost-incident review and lessons learnedPost-incident review (PIR) processPIR conducted within 10 business days (14 calendar days) of incident closure; root cause analysis; corrective actions tracked in CW Manage; lessons learned fed into training (uSecure) and policy updatesPIR reports, corrective action tickets, updated policiesProfessional
    12. Business ContinuityBusiness continuity planning and DRPVeeam DRP; tiered DRP testing scheduleDRP documentation per client; RTO/RPO defined per system criticality; immutable backups (ransomware-resilient); DRP testing: Enterprise quarterly, Professional bi-annual, Essential annualDRP documents, test results, RTO/RPO matricesEssential
    12. Business ContinuityBackup integrity and restore testingVeeam restore testing; AFI.ai verificationAutomated backup verification (Veeam SureBackup where available); manual restore testing per DRP schedule; M365 restore testing (AFI.ai) included in DRP exercisesRestore test logs, SureBackup reports, DRP exercise recordsEssential
    12. Business ContinuityResilience and redundancyM365 cloud-native redundancy; multi-site backup storageM365: Microsoft geo-redundant infrastructure; Veeam: offsite copy to cloud (immutable); AFI.ai: independent cloud backup of M365; Dropsuite: independent email archiveArchitecture diagrams, backup topology documentationProfessional
    13. ComplianceIdentify applicable regulatory and contractual requirementsMulti-framework compliance mappingFrameworks tracked: ISO 27001, E8 ML1-ML3, ASD ISM, SOCI Act, PSPF, Privacy Act, NIST CSF, CIS Controls, SOC 2, MITRE ATT&CK, ITIL v4, DISP, APRA CPS 234, PCI DSS; applicability determined per client engagementCompliance matrix (Confluence), client applicability registersEssential
    13. ComplianceConduct regular compliance audits and reviewsTenable/ConnectSecure (technical); documentation review cadenceTechnical compliance: continuous via vulnerability scanning and Intune compliance; policy/process: 6-12 month review cadence (Confluence page expiry); external audit support (ISO 27001 certification audit)Audit reports, Confluence review logs, certification recordsProfessional
    13. CompliancePrivacy and data protectionPrivacy Act alignment; M365 DLP policiesData Loss Prevention policies in M365 (Purview); privacy impact assessments for new services; data breach notification process (72hr to OAIC where applicable); data handling aligned to APPsDLP policy reports, privacy impact assessments, breach notification recordsProfessional

    Gap Analysis

    1. Information Security Governance

    Coverage: Strong

    No significant gaps. ISMS, risk management, and role definitions are well-established. Minor gap: IS18 specifically requires Queensland Government context awareness (e.g., QGISCF alignment) which may need explicit documentation for QLD agency clients.

    2. Information Asset Management

    Coverage: Strong

    Asset inventory and classification are covered. Minor gap: M365 Sensitivity Labels require Purview licensing which may not be available at Essential tier. Essential tier clients may lack automated classification.

    3. Human Resource Security

    Coverage: Adequate

    Screening and training are solid. Gap: IS18 expects security clauses in employment contracts referencing Queensland-specific obligations. Verify that standard employment agreements include IS18-specific language for QLD engagements.

    4. Physical Security

    Coverage: Partial — Client-Dependent

    Netier is an MSP and does not control client physical premises. Physical security is largely a client responsibility. Gap: Netier lacks a formalised physical security assessment checklist specific to IS18 requirements for onboarding new QLD clients. Remote wipe and BitLocker provide compensating controls for endpoint scenarios.

    5. Access Control

    Coverage: Strong

    Entra ID, PIM, Conditional Access, FIDO2, and LAPS provide comprehensive coverage. Gap: Automated access reviews (Entra Access Reviews) are only available at Enterprise tier. Essential and Professional clients rely on manual quarterly reviews which may not meet IS18 frequency expectations for high-privilege accounts.

    6. Cryptography

    Coverage: Adequate

    BitLocker and TLS enforcement are solid. Gap: IS18 may require alignment to ASD-approved cryptographic algorithms (ISM controls). Customer-managed keys (CMK) for M365 data-at-rest encryption are only available at Enterprise tier. No dedicated key management system (e.g., Azure Key Vault or HSM) is documented for lower tiers.

    7. Operations Security

    Coverage: Strong

    Comprehensive vulnerability management, patching, backup, and monitoring. Minor gap: Formal audit trail review process (who reviews logs, how often, what triggers investigation) should be documented more explicitly for IS18 evidence.

    8. Communications Security

    Coverage: Strong

    Email security, network segmentation, DNS filtering, and firewall management are well-covered. Minor gap: Information transfer policies (e.g., secure file transfer, removable media controls) could be more explicitly documented beyond email.

    9. System Acquisition & Development

    Coverage: Moderate

    CIS baselines and pre-deployment scanning provide a foundation. Gap: Netier is primarily an MSP, not a software development house, but IS18 expects secure SDLC practices for any custom tooling or automation developed internally. No formal secure coding standard or code review process is documented. ThreatLocker learning mode is a compensating control but not a substitute for SDLC rigour.

    10. Supplier Management

    Coverage: Strong

    SOC2/ISO27001 requirements, shared responsibility matrix, and data sovereignty tracking are mature. Minor gap: IS18 requires specific attention to data sovereignty within Australia; verify all vendor data processing locations are documented and that no QLD government data transits non-AU jurisdictions without approval.

    11. Incident Management

    Coverage: Strong

    Sophos MDR, Defender, and documented IRP provide solid coverage. Gap: IS18 requires notification to the Queensland Government Chief Information Security Officer (QGCISO) for certain incident categories. This specific escalation path should be documented in the IRP for QLD engagements.

    12. Business Continuity

    Coverage: Strong

    Tiered DRP testing and immutable backups are well-structured. Minor gap: Essential tier only tests DRP annually, which may not meet IS18 expectations for critical systems. Business impact analysis (BIA) methodology should be explicitly documented.

    13. Compliance

    Coverage: Adequate

    Multi-framework alignment is a strength. Gap: IS18 specifically references the Queensland Government Information Security Classification Framework (QGISCF) and requires alignment to it rather than generic sensitivity labels. Privacy obligations under the Information Privacy Act 2009 (Qld) differ from the Commonwealth Privacy Act and should be explicitly addressed.


    Recommendations

    High Priority

  • Queensland-Specific IRP Escalation Path
  • Update the Incident Response Plan to include QGCISO notification requirements, timelines, and contact details for Queensland Government engagements. Map incident severity levels to IS18 reporting obligations.

  • Physical Security Assessment Checklist
  • Develop a standardised IS18-aligned physical security assessment template for use during QLD client onboarding. Include facility access controls, environmental protections, equipment disposal, and visitor management. Document Netier's limited scope as MSP and client responsibilities.

  • QGISCF Alignment for Classification
  • Map M365 Sensitivity Labels to the Queensland Government Information Security Classification Framework (UNCLASSIFIED, OFFICIAL, OFFICIAL:Sensitive, PROTECTED). Ensure labeling policies, handling procedures, and DLP rules reflect QGISCF requirements specifically, not just generic sensitivity tiers.

    | QGISCF Classification | M365 Sensitivity Label | DLP Policy | Handling Requirements |

    |---|---|---|---|

    | UNOFFICIAL | No label required | None | No restrictions |

    | OFFICIAL | OFFICIAL | Internal sharing permitted; external sharing logged | Standard handling; no special controls required |

    | OFFICIAL:Sensitive | OFFICIAL:Sensitive | Block external sharing without encryption; alert on bulk download | Encryption enforced for external recipients; sensitivity footer applied |

    | PROTECTED | PROTECTED | Block all external sharing; block USB copy; encryption mandatory | Enterprise tier only; double-key encryption; restricted distribution list; data residency in Australia |

  • Secure Development Lifecycle (SDLC) Policy
  • Document a lightweight SDLC policy for internal tooling and automation (scripts, integrations, custom dashboards). Include code review requirements, version control, testing, and change management. This does not need to be heavyweight but must demonstrate due diligence.

  • Queensland Privacy Act Alignment
  • Supplement existing Privacy Act (Cth) documentation with Information Privacy Act 2009 (Qld) requirements, particularly Information Privacy Principles (IPPs) which differ from Australian Privacy Principles (APPs). Ensure data breach notification processes account for QLD-specific obligations.

    Medium Priority

  • Access Review Automation for Lower Tiers
  • Investigate cost-effective access review automation for Professional tier (e.g., Power Automate workflows for periodic access certification). Essential tier should at minimum have documented manual review checklists with evidence of completion.

  • Cryptographic Standards Documentation
  • Create an explicit cryptographic standards document referencing ASD-approved algorithms and key lengths (ISM controls 0471-0499). Map all encryption implementations (BitLocker, TLS, M365, backup encryption) against these requirements.

  • Log Review Process Formalisation
  • Document a formal log review schedule: who reviews security logs, frequency (daily for critical alerts, weekly for trends), escalation criteria, and evidence of review. Currently, monitoring tools exist but the human review process is implicit rather than documented.

  • Information Transfer Policy
  • Extend communications security documentation beyond email to cover: secure file transfer mechanisms (e.g., SharePoint sharing policies, OneDrive external sharing restrictions), removable media controls (USB policy via Intune/ThreatLocker), and approved data transfer methods for QLD government data.

  • Business Impact Analysis Template
  • Develop a standardised BIA template for QLD engagements that maps system criticality to IS18-expected RTO/RPO targets. Use this to justify DRP testing frequency, particularly for Essential tier clients with critical systems that may need more than annual testing.

    Low Priority

  • Key Management System Evaluation
  • For Enterprise tier clients handling PROTECTED data, evaluate Azure Key Vault or equivalent for customer-managed key scenarios. Document key lifecycle management (generation, distribution, storage, rotation, destruction).

  • Vendor Data Sovereignty Register Enhancement
  • Enhance the existing data sovereignty tracking to include explicit per-vendor, per-service data processing locations with evidence (vendor attestations, data processing agreements). Flag any non-AU data processing for QLD government data.

  • IS18 Evidence Pack Template
  • Create a reusable evidence pack template for IS18 compliance audits that maps each control family to specific evidence artifacts, responsible parties, and collection procedures. This reduces audit preparation effort for recurring QLD engagements.


    Appendix: Tier Definitions

    TierDescriptionDRP TestingAccess ReviewsCapacity Planning
    EssentialCore managed services: endpoint protection, patching, backup, monitoring, email securityAnnualManual quarterlyAd-hoc
    ProfessionalEssential + PIM/JIT, DNS filtering, ZTNA, CIS baselines, enhanced reporting, vendor reviewsBi-annualManual quarterly + privileged monthlyAnnual
    EnterpriseProfessional + automated access reviews, quarterly DRP, CMK options, dedicated compliance support, quarterly capacity planningQuarterlyAutomated monthly + continuous privilegedQuarterly

    This document should be reviewed and updated at least annually, or when significant changes occur to the Netier technical stack, IS18 standard, or client engagement scope.

    ConnectWise Manage -- Security SLA Workflows & Configuration Guide

    Purpose: Comprehensive configuration blueprint for ConnectWise Manage (PSA) to track and enforce all security SLAs defined in the Netier Technical Configuration Framework. Designed to be implementable directly by a CW Manage administrator.

    >

    Document ID: NET-OPS-CW-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Date: 2026-03-25
    Owner: Netier — GRC / Security Operations
    Classification: Internal
    Scope: Service Boards, SLA definitions, Workflow Rules, Escalation chains, Custom Fields, Reporting, Integration hooks

    Table of Contents

  • Service Board Structure
  • Priority Matrix
  • SLA Definitions
  • Workflow Rules
  • Custom Fields
  • Reporting & Dashboards
  • Integration Points
  • Implementation Checklist

  • 1. Service Board Structure

    1.1 Board: Security Operations

    FieldValue
    Board NameSecurity Operations
    Board DescriptionTracks all security-related work: patching, vulnerability management, incident response, compliance, backup monitoring, and training. Governed by Netier Technical Configuration Framework SLAs.
    DepartmentManaged Security
    Location(All -- applies across all client sites)
    Business UnitMSP Operations
    InactiveNo
    Notify Emailsecurity-ops@netier.com.au
    Project FlagNo (this is a service/ticket board)

    1.2 Status Workflow

    Statuses are grouped by Status Type. CW Manage enforces the status type lifecycle (New -> In Progress -> Closed).

    Status NameStatus TypeSort OrderEscalation StatusClosed FlagNotes
    NewNew1NoNoDefault for incoming tickets
    TriageNew2NoNoAnalyst reviewing, determining priority/assignment
    AssignedIn Progress3NoNoAssigned to technician or team
    In ProgressIn Progress4NoNoActive remediation underway
    Awaiting VendorIn Progress5NoNoWaiting on vendor patch/response. SLA clock paused.
    Awaiting ClientIn Progress6NoNoWaiting on client approval/access. SLA clock paused.
    SLA Clock Pause: Tickets in Awaiting Vendor or Awaiting Client status must be excluded from SLA elapsed time calculations. Configure SLA exclusion under Setup > SLA > Calendar or use the SLA clock pause feature (custom field SLA_Clock_Start can be recalculated on status change via workflow rules).

    | Testing / Verification | In Progress | 7 | No | No | Fix applied, verifying resolution |

    | Escalated - SLA Risk | In Progress | 8 | Yes | No | SLA threshold breached, escalation active |

    | Resolved | Closed | 9 | No | Yes | Remediation confirmed successful |

    | Closed - Exception | Closed | 10 | No | Yes | Risk accepted / compensating control documented |

    | Closed - False Positive | Closed | 11 | No | Yes | Finding determined to be non-applicable |

    1.3 Types / SubTypes / Items Taxonomy

    This taxonomy drives routing, SLA selection, and reporting. Configure under Setup > Service Board > Types.

    Type: Patching

    SubTypeItems
    OS - Critical/HighWindows Server, Windows Workstation, Linux, macOS
    OS - StandardWindows Server, Windows Workstation, Linux, macOS
    Third-Party ApplicationLine of Business App, Browser, Runtime/Framework, Utility
    Firmware / Driver - CriticalServer BIOS, NIC Firmware, Storage Controller, GPU Driver
    Firmware / Driver - StandardServer BIOS, NIC Firmware, Storage Controller, GPU Driver

    Type: Vulnerability Management

    SubTypeItems
    External Scan FindingCritical, High, Medium, Low, Informational
    Internal Scan FindingCritical, High, Medium, Low, Informational
    CISA KEVActive Exploitation Confirmed, Exploitation Likely
    Penetration Test FindingCritical, High, Medium, Low

    Type: Firewall / Perimeter

    SubTypeItems
    Firmware UpdateFortiGate, SonicWall, Meraki, pfSense, Other
    Critical CVEFortiGate, SonicWall, Meraki, pfSense, Other
    Config Backup FailureDaily Backup Missed, Retention Gap
    Rule ReviewScheduled Review, Change-Triggered Review

    Type: Backup / DR

    SubTypeItems
    M365 Backup FailureExchange, SharePoint, OneDrive, Teams
    Server Backup FailureFull Image, Incremental, Application-Aware
    Immutability ViolationStorage Target Misconfiguration, Retention Policy
    DRP TestEnterprise Quarterly, Professional Bi-Annual, Essential Annual
    Backup Verification FailureScreenshot Test, Boot Test, Restore Test

    Type: Incident Response

    SubTypeItems
    Security IncidentMalware, Ransomware, BEC, Phishing Compromise, Unauthorized Access, Data Breach
    SOCI Act ReportableCritical Infrastructure Incident
    NDB / OAIC ReportableNotifiable Data Breach
    Post-Incident ReviewPIR Scheduled, PIR In Progress, PIR Complete

    Type: Training / Awareness

    SubTypeItems
    Phishing SimulationMonthly Campaign, Remedial Follow-Up
    Core Training ModuleQuarterly Assignment, Overdue
    Failed SimulationAuto-Enrolled Remedial Training

    Type: Compliance / Documentation

    SubTypeItems
    Document Review DuePolicy, Standard, Procedure, Plan, Risk Register
    Audit FindingInternal Audit, External Audit, Client Audit
    Certification MilestoneISO 27001, Essential Eight, SOCI, ISM

    2. Priority Matrix

    2.1 Priority Definitions

    Configure under Setup > Priorities.

    PriorityLevelColorSLA ResponseSLA UpdateSLA ResolutionCoverage
    P1 - Critical1Red15 min1 hour4 hours24/7
    P2 - High2Orange30 min2 hours8 hours24/7
    P3 - Medium3Yellow2 hours4 hours24 hoursBusiness Hours
    P4 - Low4Blue4 hours8 hours72 hoursBusiness Hours
    P5 - Scheduled5GreenNext Business DayN/APer Schedule (90 day max)Business Hours
    Business Hours Definition: Mon-Fri 08:00-18:00 AEST, excluding Australian public holidays.
    P1/P2 Patching Clarification: CVSS 9.0+ vulnerability findings from scanners (Tenable/ConnectSecure) are classified as P1 via WF-006. Critical patch failures from NinjaOne monitoring are classified as P2. Both converge on a 48-hour resolution SLA. The distinction is severity source: scanner-detected active exploitation risk (P1) vs. failed automated patch deployment (P2).
    P5 Auto-Escalation: P5 (Scheduled) tickets that remain open beyond 90 days must be automatically escalated to P4 and reassigned. Configure via workflow rule monitoring age of P5 tickets.

    2.2 Security SLA to Priority Mapping

    This table defines which priority each security SLA category maps to when tickets are created.

    Security SLA CategoryDefault PriorityJustification
    Critical/High CVE Patching (48h)P2 - High48h resolution window, security-critical
    Standard OS Patching (14d)P4 - Low14-day window, scheduled maintenance
    Third-Party App PatchingSame as OS tierMirrors OS SLA per TCF
    Firmware / Driver — High Priority (14d)P3 - Medium14-day window, requires change control
    Firmware/Driver - Standard (30d)P4 - Low30-day window, planned maintenance
    Firewall Firmware N-1 (30d)P3 - Medium30-day window, perimeter device
    Firewall Critical CVE (48h)P1 - CriticalPerimeter device, 48h, actively targeted
    Network Config Backup FailureP3 - MediumDaily compliance requirement
    M365 Backup FailureP2 - High3x daily requirement, data loss risk
    Server Backup FailureP2 - HighDaily requirement, RPO breach
    Immutability ViolationP1 - CriticalRansomware resilience control compromised
    DRP Test DueP4 - LowScheduled, long lead time
    Backup Verification FailureP3 - MediumUnverified backup = no backup
    External Vuln Scan - CriticalP2 - HighInternet-facing, Critical CVSS
    External Vuln Scan - HighP3 - MediumInternet-facing, High CVSS
    Internal Vuln Scan - CriticalP3 - MediumInternal network, Critical CVSS
    Internal Vuln Scan - HighP4 - LowInternal network, High CVSS
    CISA KEV FindingP1 - CriticalKnown active exploitation, immediate action
    Security Incident (general)P1 - CriticalActive threat, business impact
    SOCI Act Reportable (12h)P1 - Critical12h statutory deadline
    NDB/OAIC Reportable (72h)P1 - Critical72h statutory deadline
    Post-Incident Review (14d)P3 - Medium14-day completion window
    Phishing Simulation OverdueP4 - LowMonthly cadence, training focus
    Training Module OverdueP4 - LowQuarterly cadence
    Failed Phishing - RemedialP3 - MediumUser is a proven risk vector
    Document Review DueP5 - Scheduled6-12 month cycle, planned

    3. SLA Definitions

    Configure under Setup > SLA.

    3.1 SLA: Security - Critical (48h)

    FieldValue
    SLA NameSecurity - Critical 48h
    Based onCustom (hours)
    Application Order1
    Response Hours0.5
    Response Percent25%
    Plan Hours2
    Plan Percent50%
    Resolution Hours48
    Resolution Percent100%
    Calendar24/7
    Applies ToType = Patching, SubType = OS - Critical/High; Type = Firewall / Perimeter, SubType = Critical CVE
    Expected PriorityP1, P2

    3.2 SLA: Security - Standard Patching (14d)

    FieldValue
    SLA NameSecurity - Standard Patch 14d
    Based onCustom (hours)
    Resolution Hours336 (14 days)
    CalendarBusiness Hours
    Applies ToType = Patching, SubType = OS - Standard, Third-Party Application, Firmware / Driver - Critical
    Expected PriorityP3, P4

    3.3 SLA: Security - Firmware Standard (30d)

    FieldValue
    SLA NameSecurity - Firmware 30d
    Resolution Hours720 (30 days)
    CalendarBusiness Hours
    Applies ToType = Patching, SubType = Firmware / Driver - Standard; Type = Firewall / Perimeter, SubType = Firmware Update
    Expected PriorityP4

    3.4 SLA: Backup - Daily Compliance

    FieldValue
    SLA NameBackup - Daily Compliance
    Response Hours0.5
    Resolution Hours8
    Calendar24/7
    Applies ToType = Backup / DR, SubType = Server Backup Failure, M365 Backup Failure
    Expected PriorityP2

    3.5 SLA: Incident Response - SOCI (12h)

    FieldValue
    SLA NameIncident - SOCI 12h
    Response Hours0.25
    Resolution Hours12
    Calendar24/7
    Applies ToType = Incident Response, SubType = SOCI Act Reportable
    Expected PriorityP1

    3.6 SLA: Incident Response - NDB (72h)

    FieldValue
    SLA NameIncident - NDB 72h
    Response Hours0.25
    Resolution Hours72
    Calendar24/7
    Applies ToType = Incident Response, SubType = NDB / OAIC Reportable
    Expected PriorityP1

    3.7 SLA: Post-Incident Review (14d)

    FieldValue
    SLA NamePIR - 14 Day
    Resolution Hours336
    CalendarBusiness Hours
    Applies ToType = Incident Response, SubType = Post-Incident Review
    Expected PriorityP3

    3.8 SLA: Vulnerability Scan - CISA KEV

    FieldValue
    SLA NameVulnMgmt - CISA KEV Immediate
    Response Hours0.25
    Resolution Hours48
    Calendar24/7
    Applies ToType = Vulnerability Management, SubType = CISA KEV
    Expected PriorityP1

    3.9 SLA: Vulnerability Scan - Standard

    FieldValue
    SLA NameVulnMgmt - Standard
    CalendarBusiness Hours
    Applies ToType = Vulnerability Management, SubType = External Scan Finding, Internal Scan Finding
    Per-Priority SLA Targets (priority is set automatically by WF-006 based on CVSS score):
    Priority (set by WF-006)ResponsePlanResolution
    P1 (CVSS 9.0-10.0)0.25h0.5h48h
    P2 (CVSS 7.0-8.9)0.5h2h336h (14d)
    P3 (CVSS 4.0-6.9)2h4h720h (30d)
    P4 (CVSS 0.1-3.9)4h8h2160h (90d)
    Configure these as Priority-level entries within the single SLA definition in Setup > SLA > [VulnMgmt - Standard] > Priority tab.

    3.10 SLA: General MSP Response

    FieldValue
    SLA NameMSP Standard Response
    CalendarPriority-dependent (P1/P2 = 24/7, P3/P4 = Business Hours)
    Application Order99 (catch-all, lowest priority)
    PriorityResponsePlanResolution
    P10.25h1h4h
    P20.5h2h8h
    P32h4h24h
    P44h8h72h

    3.11 SLA Calendar Definitions

    Calendar: 24/7
  • All hours, all days, including holidays
  • Used for: P1, P2, incident response, SOCI/NDB deadlines
  • Calendar: Business Hours
  • Monday-Friday 08:00-18:00 AEST
  • Excludes: Australian public holidays (maintain holiday list annually)
  • Used for: P3, P4, P5, standard patching, firmware, training, documentation

  • 4. Workflow Rules

    Configure under Setup > Workflow Rules. All rules apply to the Security Operations board unless noted.

    SLACK INTEGRATION NOTE: CW Manage workflow rules do not natively support Slack messaging. All Slack notifications in the rules below require one of:
    (a) Email-to-Slack channel integration (simplest): each Slack channel has an email address — use this as the notification recipient in CW workflow rules (Channel Settings > Integrations > Send emails to this channel)
    (b) CW Manage Callbacks -> middleware -> Slack Incoming Webhook (via Rewst, Azure Functions, or custom API)
    (c) Slack integration platform (e.g., Rewst, Gradient MSP)

    >

    Option (a) requires no middleware and works with native CW email actions. Recommended for initial deployment.

    4.1 Auto-Triage on Creation

    FieldValue
    Rule NameSEC-WF-001: Auto Triage New Tickets
    BoardSecurity Operations
    TriggerTicket Created
    ConditionStatus = New
    Actions
    Set Status = Triage
    Send Email to security-ops@netier.com.au with subject "New Security Ticket: [Ticket#] - [Summary]"
    If Priority = P1: Send Slack webhook to #security-alerts

    4.2 Auto-Assignment by Type

    FieldValue
    Rule NameSEC-WF-002: Auto-Assign by Type
    TriggerStatus changes to Triage
    Conditions & Actions
    Condition (Type)Assign To (Team/Member)
    PatchingTeam: Endpoint Engineering
    Firewall / PerimeterTeam: Network Engineering
    Vulnerability ManagementTeam: Security Operations
    Backup / DRTeam: Infrastructure
    Incident ResponseTeam: Security Operations + notify Security Lead
    Training / AwarenessTeam: Security Operations
    Compliance / DocumentationTeam: GRC (Governance, Risk, Compliance) — Note: Verify GRC team exists in CW Manage. If not yet created, use Security Operations as fallback assignment target until GRC team is established.

    After assignment, set Status = Assigned.

    4.3 SLA Warning Escalation (50% Consumed)

    FieldValue
    Rule NameSEC-WF-003: SLA 50% Warning
    TriggerSLA Resolution at 50%
    ConditionStatus is NOT any Closed type
    Actions
    Send Email to assigned resource: "SLA WARNING: 50% of resolution time consumed"
    Add Internal Note: "AUTOMATED: SLA at 50% - resolution due in [remaining hours]"
    If Priority = P1 or P2: Send Slack to #security-alerts

    4.4 SLA Escalation (75% Consumed)

    FieldValue
    Rule NameSEC-WF-004: SLA 75% Escalation
    TriggerSLA Resolution at 75%
    ConditionStatus is NOT any Closed type
    Actions
    Send Email to Team Lead of assigned team
    Send Slack to #security-alerts: "ESCALATION: [Ticket#] at 75% SLA"
    Set Status = Escalated - SLA Risk
    Add Internal Note with current status summary

    4.5 SLA Breach (100% Consumed)

    FieldValue
    Rule NameSEC-WF-005: SLA Breach
    TriggerSLA Resolution at 100%
    ConditionStatus is NOT any Closed type
    Actions
    Send Email to: Security Lead, Service Delivery Manager, assigned resource
    Send Slack to #security-alerts AND #leadership: "SLA BREACH: [Ticket#] - [Summary]"
    Add Internal Note: "AUTOMATED: SLA BREACHED. Immediate management attention required."
    Set Custom Field SLA Breached = Yes

    4.6 CVSS-Based Priority Assignment for Vuln Scan Findings

    FieldValue
    Rule NameSEC-WF-006: CVSS Priority Mapping
    TriggerTicket Created
    ConditionType = Vulnerability Management
    Actions (based on Custom Field: CVSS Score)
    CVSS RangePriority SetResolution SLA
    9.0-10.0 (Critical)P1 - Critical48 hours
    7.0-8.9 (High)P2 - High14 days
    4.0-6.9 (Medium)P3 - Medium30 days
    0.1-3.9 (Low)P4 - Low90 days

    4.7 CISA KEV Auto-Escalation

    FieldValue
    Rule NameSEC-WF-007: CISA KEV Immediate Escalation
    TriggerTicket Created
    ConditionSubType = CISA KEV
    Actions
    Set Priority = P1 - Critical
    Set Status = Assigned (bypass Triage)
    Assign to Team: Security Operations
    Send Slack to #security-alerts: "CISA KEV: [CVE-ID] - Immediate action required"
    Send Email to Security Lead and Service Delivery Manager

    4.8 Incident Response - Statutory Notification Timer

    FieldValue
    Rule NameSEC-WF-008: Statutory Timer Notifications
    TriggerTicket Created
    ConditionSubType = SOCI Act Reportable OR NDB / OAIC Reportable
    Actions
    Set Priority = P1 - Critical
    Send immediate Slack to #security-alerts AND #leadership
    Send Email to: Security Lead, Managing Director, Legal Contact
    Add Internal Note: "STATUTORY REPORTING DEADLINE ACTIVE. SOCI=12h, NDB=72h from incident awareness."
    Set Custom Field Statutory Deadline = [calculated datetime]
    Implementation Note: CW Manage workflow rules cannot perform datetime arithmetic. The Statutory Deadline custom field must be set via middleware:
    1. Configure CW callback on ticket creation for SubType = SOCI Act Reportable or NDB / OAIC Reportable
    2. Middleware calculates: Statutory_Deadline = ticket.dateEntered + 12h (SOCI) or + 72h (NDB)
    3. PATCH /v4_6_release/apis/3.0/service/tickets/{id} with customFields update

    >

    Manual Fallback: If middleware is not yet deployed, the triaging analyst must manually calculate and set the Statutory Deadline custom field immediately upon ticket creation.

    4.9 Post-Incident Review Auto-Creation

    FieldValue
    Rule NameSEC-WF-009: PIR Auto-Create
    Implementation MethodCW Manage REST API (via Rewst, Power Automate, or custom middleware)
    NOT a native CW workflow ruleCW workflow rules cannot create tickets.
    TriggerStatus changes to Resolved
    ConditionType = Incident Response, SubType = Security Incident OR SOCI Act Reportable OR NDB / OAIC Reportable
    Actions
    Create Child Ticket: Type = Incident Response, SubType = Post-Incident Review, Item = PIR Scheduled
    Set child Priority = P3 - Medium
    Copy Custom Fields: Affected Asset Count, Compliance Framework Ref to child
    Add Internal Note on parent: "PIR ticket [child#] created. Due within 14 days."

    API Implementation

  • Configure CW Manage Callback: Setup > Integrations > Callbacks. Create a callback that fires on status change to Resolved for tickets matching Type = Incident Response.
  • Callback hits middleware endpoint: The callback sends ticket data to your middleware (Rewst workflow, Power Automate flow, or custom API endpoint).
  • Middleware creates child ticket: POST to /v4_6_release/apis/3.0/service/tickets with parentTicketId set to the parent ticket ID to link as a child ticket.
  • Copy custom fields from parent: Middleware reads the parent ticket's custom fields (Affected Asset Count, Compliance Framework Ref) and includes them in the child ticket payload.
  • Post internal note on parent: POST to /v4_6_release/apis/3.0/service/tickets/{parentId}/notes with an internal note containing the child ticket reference.
  • 4.10 Failed Phishing Sim - Auto-Enroll Remedial Training

    FieldValue
    Rule NameSEC-WF-010: Phishing Fail Remedial
    Implementation MethoduSecure API/webhook -> middleware -> CW Manage REST API
    NOT a native CW workflow ruleCW workflow rules cannot create tickets from external events. This requires middleware to receive uSecure webhook/API data and create tickets via the CW Manage REST API.
    TriggerTicket Created
    ConditionSubType = Phishing Simulation, Item = anything indicating failure (or Custom Field Simulation Result = Failed)
    Actions
    Create Child Ticket: Type = Training / Awareness, SubType = Failed Simulation, Item = Auto-Enrolled Remedial Training
    Set Priority = P3 - Medium
    Assign to Team: Security Operations
    Add Internal Note: "User auto-enrolled in remedial training per TCF policy."

    4.11 Document Review Reminder (Recurring)

    FieldValue
    Rule NameSEC-WF-011: Document Review Reminder
    ImplementationUse CW Manage Recurring Tickets (Setup > Service > Recurring)
    FrequencyPer document review schedule (6 or 12 months)
    BoardSecurity Operations
    TypeCompliance / Documentation
    SubTypeDocument Review Due
    PriorityP5 - Scheduled
    Assign ToTeam: GRC (If not yet created, use Security Operations as fallback.)

    Create one recurring ticket template per document category:

  • Policies: Every 12 months
  • Standards & Procedures: Every 12 months
  • Risk Registers: Every 6 months
  • Incident Response Plans: Every 12 months
  • BCP/DRP Plans: Every 12 months (aligned with DRP test schedule)
  • 4.12 DRP Test Reminders (Recurring)

    TierFrequencyRecurring Ticket
    EnterpriseQuarterlyEvery 3 months, Type = Backup / DR, SubType = DRP Test, Item = Enterprise Quarterly
    ProfessionalBi-AnnualEvery 6 months, Item = Professional Bi-Annual
    EssentialAnnualEvery 12 months, Item = Essential Annual

    4.13 Backup Failure Auto-Close on Success

    FieldValue
    Rule NameSEC-WF-013: Backup Recovery Auto-Close
    TriggerInternal Note added (via API from monitoring) containing "BACKUP_SUCCESS_CONFIRMED"
    ConditionType = Backup / DR, Status NOT Closed
    Actions
    Set Status = Resolved
    Add Internal Note: "Backup verified successful by automated monitoring. Auto-closing."
    Implementation Note: CW Manage workflow rules cannot trigger on internal note content substring matching. This requires a callback-triggered middleware that parses note content for "BACKUP_SUCCESS_CONFIRMED". Configure a CW Manage callback (Setup > Integrations > Callbacks) on ticket note creation, then have the middleware inspect the note body and update the ticket status via the REST API if the marker string is found.

    5. Custom Fields

    Configure under Setup > Custom Fields. Apply to the Security Operations board.

    5.1 Ticket-Level Custom Fields

    Field NameCaptionTypeRequiredApplies ToValues / Notes
    CVE_IDCVE IDText (50)NoPatching, Vuln Mgmt, Firewall/PerimeterFormat: CVE-YYYY-NNNNN
    CVSS_ScoreCVSS ScoreNumber (decimal)NoPatching, Vuln MgmtRange 0.0-10.0, drives priority via WF-006
    CVSS_VectorCVSS Vector StringText (100)NoVuln MgmtFull CVSS v3.1 vector
    Affected_Asset_CountAffected Asset CountNumber (integer)NoAll TypesCount of devices/users impacted
    Affected_AssetsAffected AssetsText AreaNoAll TypesComma-separated hostnames or asset tags
    Compliance_FrameworkCompliance Framework RefText (200)NoAll Typese.g., "ISM-1694, E8-ML3-Patching, SOCI-s30BC"
    SLA_Clock_StartSLA Clock Start TimeDateTimeNoAll TypesExplicit SLA clock start (for cases where ticket creation lags detection)
    SLA_BreachedSLA BreachedCheckboxNoAll TypesSet by WF-005 on breach
    Statutory_DeadlineStatutory Reporting DeadlineDateTimeNoIncident ResponseSOCI 12h or NDB 72h deadline
    Scan_SourceScan SourceDropdownNoVuln MgmtValues: Tenable, ConnectSecure, Defender, Manual, Penetration Test
    Remediation_MethodRemediation MethodDropdownNoPatching, Vuln MgmtValues: Automated Patch, Manual Patch, Config Change, Compensating Control, Risk Accepted, Decommission
    Simulation_ResultSimulation ResultDropdownNoTrainingValues: Passed, Failed - Clicked, Failed - Submitted Credentials, Failed - Opened Attachment
    Risk_Acceptance_ApproverRisk Acceptance ApproverText (100)Conditional (if Closed - Exception)All TypesName + role of person accepting risk
    Patch_KBPatch KB / Advisory IDText (50)NoPatchingMicrosoft KB number or vendor advisory ID
    NinjaOne_Alert_IDNinjaOne Alert UIDText (100)NoPatching, BackupFor back-reference to source alert
    Client_TierClient Service TierDropdownNoAll TypesValues: Essential, Professional, Enterprise -- drives DRP frequency and scope

    5.2 Configuration (Company-Level) Custom Fields

    These are set per-company in CW Manage and referenced by workflow rules.

    Field NameTypeNotes
    Service_TierDropdown: Essential, Professional, EnterpriseDetermines DRP test frequency, MFA requirements
    SOCI_RegulatedCheckboxIf Yes, SOCI Act 12h reporting SLA applies
    DRP_Last_Test_DateDateLast DRP test completion date
    Compliance_FrameworksTextApplicable frameworks (ISM, E8, ISO 27001, SOCI, etc.)

    6. Reporting & Dashboards

    6.1 Key Reports

    Build these in Reports > Report Writer or via CW Manage's built-in dashboards.

    Report 1: SLA Compliance Summary (Monthly)

    MetricDefinitionTarget
    SLA Response Adherence %(Tickets responded within SLA / Total tickets) x 100> 95%
    SLA Resolution Adherence %(Tickets resolved within SLA / Total tickets) x 100> 90%
    SLA Breach CountCount where SLA_Breached = Yes0
    Breakdown by TypeGroup above metrics by Type (Patching, Vuln, Backup, etc.)Per-category targets
    Filters: Board = Security Operations, Date Range = Last Calendar Month, Exclude Status = Closed - False Positive

    Report 2: Mean Time to Remediate (MTTR) by Severity

    DimensionCalculation
    Group ByPriority (P1-P5) AND Type
    MetricAverage hours from ticket creation to status = Resolved
    TrendMonth-over-month comparison (rolling 6 months)

    Report 3: Overdue Ticket Aging

    FieldValue
    FilterStatus NOT Closed AND SLA Resolution % > 100%
    SortSLA Resolution % descending (most overdue first)
    ColumnsTicket#, Company, Summary, Type, Priority, Days Overdue, Assigned Resource, SLA Resolution %

    Run weekly, email to Security Lead and Service Delivery Manager.

    Report 4: Patching Compliance Dashboard

    MetricSource
    Critical/High patches applied within 48hType = Patching, SubType = OS - Critical/High, resolved within SLA
    Standard patches applied within 14dType = Patching, SubType = OS - Standard
    Firmware updates within 30dType = Patching, SubType = Firmware/*
    Patch tickets by clientGroup by Company
    Open patch tickets by ageAging buckets: 0-2d, 3-7d, 8-14d, 15-30d, 30d+

    Report 5: Incident Response Metrics

    MetricDefinition
    Total security incidents (monthly)Count, Type = Incident Response
    Incidents by categorySubType breakdown
    SOCI notifications within 12h% where Type=SOCI and resolution < 12h
    NDB notifications within 72h% where Type=NDB and resolution < 72h
    PIR completion within 14d% where SubType=Post-Incident Review completed on time

    Report 6: Vulnerability Management Funnel

    StageMetric
    DiscoveredTotal vuln tickets created this period
    TriagedMoved past Triage status
    RemediatedResolved
    Risk AcceptedClosed - Exception
    False PositiveClosed - False Positive
    Open / AgingNot yet resolved, broken by CVSS band
    CISA KEV OpenSubType = CISA KEV, not resolved

    Report 7: Training Compliance

    MetricCalculation
    Phishing sim participation ratePassed / (Passed + Failed + Not Attempted)
    Phishing sim failure rateFailed / Total Simulated
    Remedial training completion rateResolved remedial tickets / Created remedial tickets
    Quarterly training completionPer-client completion %

    6.2 Dashboard Widgets (CW Manage Home Screen)

    Configure for Security Operations team members:

  • Open Security Tickets by Priority -- Pie chart, filtered to Security Operations board
  • SLA At-Risk Tickets -- Table, SLA Resolution % > 50% and < 100%, Status NOT Closed
  • Tickets Breached SLA -- Count widget, SLA_Breached = Yes, current month
  • Open CISA KEV Items -- Count widget, SubType = CISA KEV, Status NOT Closed (target: 0)
  • Backup Failure Trend -- Line chart, Type = Backup / DR, weekly ticket count, rolling 12 weeks
  • Incident Response Active -- Count widget, Type = Incident Response, Status = In Progress or Escalated

  • 7. Integration Points

    7.1 NinjaOne -> CW Manage (Patching & Monitoring Alerts)

    Integration Method: NinjaOne PSA Integration (native) or via NinjaOne API -> CW Manage REST API Configuration:
    NinjaOne Alert TypeCW Ticket Mapping
    Patch Failure - CriticalBoard: Security Operations, Type: Patching, SubType: OS - Critical/High, Priority: P2
    Patch Failure - StandardBoard: Security Operations, Type: Patching, SubType: OS - Standard, Priority: P4
    Patch Approval RequiredBoard: Security Operations, Type: Patching, SubType: per severity, Priority: per CVSS
    Firmware Update AvailableBoard: Security Operations, Type: Patching, SubType: Firmware/Driver, Priority: P3 or P4
    Backup FailureBoard: Security Operations, Type: Backup / DR, SubType: Server Backup Failure, Priority: P2
    Field Mapping:
  • NinjaOne Alert UID -> Custom Field NinjaOne_Alert_ID
  • NinjaOne Device Name -> Ticket Summary prefix + Affected_Assets
  • NinjaOne Organization -> CW Company (matched by org name or custom mapping table)
  • CVE ID (if available) -> Custom Field CVE_ID
  • Deduplication: Check for existing open ticket with same NinjaOne_Alert_ID before creating new ticket. If exists, add Internal Note to existing ticket instead. API Endpoint (CW Manage REST v4):
    POST /v4_6_release/apis/3.0/service/tickets
    
    Sample Payload:
    {
    

    "summary": "[PATCH] Critical CVE-2026-XXXXX on SRV-DC01",

    "board": { "name": "Security Operations" },

    "company": { "identifier": "ClientABC" },

    "type": { "name": "Patching" },

    "subType": { "name": "OS - Critical/High" },

    "item": { "name": "Windows Server" },

    "priority": { "name": "P2 - High" },

    "status": { "name": "New" },

    "customFields": [

    { "caption": "CVE ID", "value": "CVE-2026-XXXXX" },

    { "caption": "CVSS Score", "value": "9.1" },

    { "caption": "Affected Asset Count", "value": "1" },

    { "caption": "NinjaOne Alert UID", "value": "alert-uuid-here" }

    ]

    }

    7.2 Tenable / ConnectSecure -> CW Manage (Vulnerability Scans)

    Integration Method: API middleware (custom script or integration platform like Rewst/Halo) Workflow:
  • Scan completes (weekly external, monthly internal)
  • Middleware fetches findings via Tenable/ConnectSecure API
  • Filter: Only Critical and High findings (CVSS >= 7.0) auto-create tickets; Medium/Low go to report only
  • Dedup: Check existing open tickets by CVE_ID + Company. If exists, update Affected_Asset_Count and add note
  • Create ticket per unique CVE-per-client (not per-asset, to avoid ticket flood)
  • Field Mapping:
    Scanner FieldCW Field
    CVE IDCustom Field CVE_ID
    CVSS v3.1 ScoreCustom Field CVSS_Score
    CVSS VectorCustom Field CVSS_Vector
    Affected Host CountCustom Field Affected_Asset_Count
    Affected HostnamesCustom Field Affected_Assets
    Scanner NameCustom Field Scan_Source
    Plugin/Finding NameTicket Summary
    Solution/RemediationTicket Initial Description (internal note)
    CISA KEV Check: Middleware cross-references each CVE against the CISA KEV catalog (https://www.cisa.gov/known-exploited-vulnerabilities-catalog). If match found:
  • Set SubType = CISA KEV
  • Triggers WF-007 (immediate escalation)
  • 7.3 Veeam -> CW Manage (Backup Monitoring)

    Integration Method:
  • Veeam: Veeam Service Provider Console (VSPC) integration or Veeam ONE alerts -> CW Manage via API/email connector
  • Alert-to-Ticket Mapping:
    Backup AlertCW Ticket
    Backup Job FailedType: Backup / DR, SubType: Server Backup Failure, Priority: P2
    Backup Job Warning (partial)Type: Backup / DR, SubType: Server Backup Failure, Priority: P3
    Screenshot Verification FailedType: Backup / DR, SubType: Backup Verification Failure, Priority: P3
    M365 Backup FailedType: Backup / DR, SubType: M365 Backup Failure, Priority: P2
    Immutable Storage ErrorType: Backup / DR, SubType: Immutability Violation, Priority: P1
    Backup Not Run (missed schedule)Type: Backup / DR, SubType: Server Backup Failure, Priority: P2
    Auto-Resolution: When backup monitoring detects the next successful backup:
  • API call to update ticket with Internal Note "BACKUP_SUCCESS_CONFIRMED"
  • WF-013 triggers auto-close
  • M365 Backup (3x Daily): If any of the 3 daily backup windows fails, create ticket. Only auto-close if a subsequent window succeeds within the same day.

    7.4 ThreatLocker -> CW Manage (Application Control)

    Alert TypeCW Ticket
    Blocked Execution (repeated)Type: Incident Response, SubType: Security Incident, Item: Unauthorized Access
    Elevation RequestRouted to standard helpdesk board (not Security Operations) unless flagged
    Ringfencing ViolationType: Incident Response, SubType: Security Incident, Priority: P2

    7.5 Sophos MDR -> CW Manage (EDR Alerts)

    Alert SeverityCW Ticket
    Critical (confirmed threat)Type: Incident Response, SubType: Security Incident, Priority: P1
    High (suspicious activity)Type: Incident Response, SubType: Security Incident, Priority: P2
    Medium (investigation needed)Type: Vulnerability Management, SubType: Internal Scan Finding, Priority: P3

    7.6 Middleware Requirements

    Implementation Note: The following workflow rules require middleware or external API integration and cannot be implemented as native CW Manage workflow rules alone:

    >

    | Rule | Requirement | Recommended Approach |
    |------|------------|---------------------|
    | WF-008 (Statutory Timer) | Calculate datetime for Statutory_Deadline field | Rewst workflow or custom API script triggered on ticket creation |
    | WF-009 (PIR Auto-Create) | Create child ticket on parent resolution | CW Manage callback -> middleware -> CW Manage REST API (workflow rules cannot create tickets) |
    | WF-010 (Phishing Remedial) | Create ticket from phishing simulation results | uSecure API/webhook -> middleware -> CW Manage REST API |
    | WF-013 (Backup Auto-Close) | Detect backup success and add internal note | Monitoring platform API -> CW Manage internal note API |
    | All Slack notifications | Send messages to Slack channels | Email-to-Slack, Rewst, or custom webhook relay |

    >

    Recommended middleware platform: Rewst (MSP-focused integration platform with native CW Manage and NinjaOne connectors).

    7.7 Integration Architecture Summary

    NinjaOne ──────────┐
    

    Tenable/ConnectSecure ──┤

    Veeam ──────────────┤ ┌─────────────────────┐

    ThreatLocker ───────┼────>│ Integration Layer │────> CW Manage REST API

    Sophos MDR ─────────┤ │ (Rewst / Custom) │ |

    uSecure ────────────┤ │ │ Security Operations

    CISA KEV Feed ──────┘ │ - Dedup logic │ Board

    │ - Field mapping │ |

    │ - CISA KEV cross-ref│ Workflow Rules

    │ - Company matching │ |

    └─────────────────────┘ SLA Engine

    |

    Escalation &

    Notifications

    (Email + Slack)


    8. Implementation Checklist

    Phase 1: Foundation (Week 1-2)

    Create Security Operations service board
    Configure all statuses per Section 1.2
    Create Types / SubTypes / Items per Section 1.3
    Define priorities per Section 2.1 (if not already existing)
    Create SLA calendars: 24/7 and Business Hours (with holiday list)
    Create all SLA definitions per Section 3
    Create all custom fields per Section 5

    Phase 2: Workflow Rules (Week 2-3)

    Implement WF-001 through WF-005 (triage, assignment, SLA escalation chain)
    Implement WF-006 and WF-007 (CVSS priority mapping, CISA KEV)
    Implement WF-008 and WF-009 (statutory notification, PIR auto-create)
    Implement WF-010 (phishing fail remedial)
    Configure recurring tickets per WF-011 and WF-012 (document review, DRP tests)
    Implement WF-013 (backup auto-close)
    Configure Slack webhook integration for #security-alerts and #leadership channels

    Phase 3: Integrations (Week 3-5)

    Configure NinjaOne -> CW Manage ticket creation (native or API)
    Build/configure Tenable/ConnectSecure -> CW middleware
    Configure Veeam -> CW Manage alert forwarding
    Configure ThreatLocker -> CW Manage alert routing
    Configure Sophos MDR -> CW Manage alert routing
    Implement CISA KEV cross-reference in vulnerability middleware
    Test deduplication logic end-to-end
    Validate company/org name matching across all integrations

    Phase 4: Reporting & Validation (Week 5-6)

    Build all 7 reports per Section 6.1
    Configure dashboard widgets per Section 6.2
    Run 2-week parallel operation (old process + new board)
    Validate SLA calculations against known test tickets
    Validate escalation chain triggers at 50%, 75%, 100%
    Confirm Slack notifications arrive in correct channels
    Document any SLA exceptions or edge cases discovered

    Phase 5: Go-Live & Tuning (Week 6-8)

    Redirect all security alert integrations to Security Operations board
    Decommission old routing rules
    Train team on new board, statuses, and escalation expectations
    First monthly SLA compliance report
    Tune workflow rules based on first month of data (false positive rate, noise tickets)
    Review and adjust SLA thresholds if needed

    Appendix A: Escalation Matrix

    SLA %Who Gets NotifiedChannelAction Expected
    50%Assigned TechnicianEmail + Slack (P1/P2 only)Prioritize or reassign
    75%Team LeadEmail + SlackIntervene, add resources, or escalate to vendor
    100% (Breach)Security Lead + SDMEmail + Slack (#leadership)Management decision: accept risk, emergency change, or resource injection
    150% (Critical overdue)Managing DirectorEmail (manual from SDM)Executive escalation, client communication

    Appendix B: SLA Summary Quick Reference

    CategorySLA TargetPriorityCoverageCW SLA Name
    Critical/High CVE Patch48 hoursP224/7Security - Critical 48h
    Standard OS Patch14 daysP4BusinessSecurity - Standard Patch 14d
    Firmware / Driver — High Priority14 daysP3BusinessSecurity - Standard Patch 14d
    Firmware Standard30 daysP4BusinessSecurity - Firmware 30d
    Firewall Firmware N-130 daysP3BusinessSecurity - Firmware 30d
    Firewall Critical CVE48 hoursP124/7Security - Critical 48h
    Config Backup Failure8 hoursP324/7Backup - Daily Compliance
    M365 Backup Failure8 hoursP224/7Backup - Daily Compliance
    Server Backup Failure8 hoursP224/7Backup - Daily Compliance
    Immutability Violation4 hoursP124/7MSP Standard Response (P1)
    CISA KEV48 hoursP124/7VulnMgmt - CISA KEV Immediate
    SOCI Notification12 hoursP124/7Incident - SOCI 12h
    NDB Notification72 hoursP124/7Incident - NDB 72h
    PIR Completion14 daysP3BusinessPIR - 14 Day
    Phishing Sim (monthly)RecurringP4BusinessN/A (recurring ticket)
    Training (quarterly)RecurringP4BusinessN/A (recurring ticket)
    Doc Review6-12 monthsP5BusinessN/A (recurring ticket)

    Appendix C: Naming Conventions

    To maintain consistency across all security tickets:

    ElementConventionExample
    Ticket Summary (Patching)[PATCH] CVE-YYYY-NNNNN on HOSTNAME[PATCH] CVE-2026-12345 on SRV-DC01
    Ticket Summary (Vuln)[VULN] Finding Name - COMPANY[VULN] SMBv1 Enabled - ClientABC
    Ticket Summary (Backup)[BACKUP] Failure Type - HOSTNAME[BACKUP] Image Failed - SRV-FILE01
    Ticket Summary (Incident)[INCIDENT] Category - COMPANY[INCIDENT] BEC Compromise - ClientXYZ
    Ticket Summary (KEV)[KEV] CVE-YYYY-NNNNN - COMPANY[KEV] CVE-2026-99999 - ClientABC
    Ticket Summary (Compliance)[COMPLIANCE] Document - COMPANY[COMPLIANCE] ISP Review Due - ClientABC
    Ticket Summary (Training)[TRAINING] Type - COMPANY[TRAINING] Phishing Sim March - ClientABC

    Organisation Context — Netier Pty Ltd

    Document ID: NET-EV-ORG-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    Overview

    Netier is an Australian Managed Service Provider (MSP) headquartered in Canberra, ACT. The company provides managed IT infrastructure, security operations, and compliance management services to approximately 30 clients across government, defence, critical infrastructure, and private sector verticals.

    Certifications & Accreditations

  • ISO/IEC 27001:2022 — Certified (ISMS covers managed services delivery)
  • DISP Membership — Defence Industry Security Program participant, H1R (Baseline) clearance evidence held
  • ASD Essential Eight — Implemented across managed clients at ML1–ML2, targeting ML3 for critical clients
  • Client Verticals & Applicable Frameworks

    VerticalExample ClientsMandatory Frameworks
    QLD GovernmentSTS, OPT, STARSIS18:2018, ISM, Essential Eight, Privacy Act
    Federal GovernmentVariousPSPF, ISM, Essential Eight, Privacy Act
    Defence IndustryH1R DISP clientsDISP, ISM, Essential Eight, PSPF
    Critical InfrastructureCanberra Airport (CAG)SOCI Act 2018, ISM, Essential Eight, Privacy Act
    Financial SectorAPRA-regulated clientsAPRA CPS 234, ISM, Essential Eight, Privacy Act
    Payment Card HandlingClients processing card dataPCI DSS v4.0, Privacy Act
    Private Sector~15 commercial clientsEssential Eight (best practice), Privacy Act

    Services Delivered

  • Managed Infrastructure: Windows Server, Active Directory, Azure AD/Entra ID, M365 administration, Hyper-V/Nutanix virtualisation, network management (WatchGuard, FortiGate)
  • Security Operations: Endpoint protection (Sophos MDR), application control (ThreatLocker), vulnerability management, MFA deployment, conditional access, email security
  • Compliance Management: Essential Eight maturity assessments, ISM alignment, IS18 annual return support, security awareness programs
  • Service Desk: Incident management, change management, problem management via ConnectWise Manage
  • Backup & DR: Veeam backup management, DR planning, restoration testing
  • Team Structure

  • Senior engineers (~5-8) handling escalated infrastructure and security work
  • Cyber security team responsible for E8 compliance, ThreatLocker management, incident response
  • Service desk team for tier 1-2 support
  • Management/governance overseeing ISMS, client relationships, and compliance
  • Key Infrastructure (Internal)

  • ConnectWise Manage — ITSM, ticketing, time tracking, client agreements
  • NinjaOne — RMM, patching, software inventory, backup monitoring
  • ThreatLocker — Application control, elevation management, ringfencing
  • Sophos Central — MDR, endpoint protection, email gateway
  • Microsoft 365 — Internal and client tenant management via delegated admin (GDAP)
  • Veeam — Backup orchestration across client environments
  • Netier Compliance Engine — Custom ISM compliance scanning tool (web security, email auth, DNS controls)
  • CyberCred — Security Champions gamification platform (cyber.netier.team) — points-based incentive system for security awareness, training completion, and proactive security behaviours
  • ISMS Scope & Boundaries

  • Scope covers the delivery of managed IT and security services to external clients
  • Includes internal IT systems used for service delivery (RMM, ITSM, monitoring)
  • Client environments are managed under the ISMS but client-owned assets remain under client risk ownership
  • Physical scope includes Netier office premises and remote worker endpoints
  • Risk Context

  • Primary threat actors: Ransomware groups targeting MSPs (supply chain risk), nation-state actors targeting government/defence clients, opportunistic credential theft
  • Key risk: As an MSP, compromise of Netier's management tools (NinjaOne, CW, M365 GDAP) would cascade to all managed clients
  • Risk appetite: Low tolerance for security incidents affecting client data; moderate tolerance for operational disruptions with defined recovery objectives
  • Critical infrastructure note: Canberra Airport (CAG) is a designated critical infrastructure asset under the SOCI Act 2018. Netier manages CAGSEC domain infrastructure including Gallagher access control, CCTV, and corporate IT systems.
  • Compliance Maturity Self-Assessment (Post-Gemini Review)

    FrameworkMaturity (1-5)Gemini Coverage AssessmentAuditor Notes
    ISO 27001:20222100% (Paper compliant)SoA evidence decay identified (Sept 2023 dates); relies heavily on generic policies
    ISO 27002:2022380% (Implicit)Missing formal attribute tagging and continuous measurement
    ASD ISM (Dec 2025)260% (Partial)Technical alignment strong; maturity 2 reflects gap in formal policy/process documentation despite strong technical controls. Major gaps in new controls (AI, CBOM, Auth)
    ASD Essential Eight475% (ML1/ML2)Strong on App Control/MFA; ML3 gaps in centralized logging & 48hr SLAs
    IS18:2018 (QLD)250% (Partial)E8 alignment strong; 169 Annual Return requirements missing formal mapping
    PSPF130% (Unmapped)Cyber is mapped via ISM; major gaps in Personnel, Physical, and Governance
    SOCI Act 2018115% (Non-Conforming)No explicit CIRMP for CAG; supply chain dependencies unmapped
    DISP240% (Partial)H1R clearance held, but DISP obligations and systems register lacking
    Privacy Act / APPs240% (Informal)APP gaps in data lifecycle; NDB scheme not unified in IR playbooks
    APRA CPS 234120% (Non-Conforming)Significant gaps: 72hr/20hr reporting timelines, systematic testing
    NIST CSF 2.0360% (Unmapped)Strong technical functions; "Govern" function entirely missing
    CIS Controls v8.1365% (Partial)Benchmarks utilized; continuous active vulnerability scanning lacking
    SOC 2 Type II250% (Not Assessed)Missing formal change testing (CC8) and detection metrics (CC7)
    OWASP Top 10240% (Partial)Addressed via Netier Compliance Engine, but formal SDLC and SAST/DAST testing missing
    PCI DSS v4.0115% (Non-Conforming)Missing CDE scoping, segmentation diagrams, and ASV scans

    Known Gaps Register

    Document ID: NET-EV-GAP-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    >

    Purpose: Pre-identified gaps that Netier is already aware of. Provided so the reviewer can focus on unknown gaps, quality issues, and cross-framework coverage rather than restating these known deficiencies.

    >

    Last Updated: 2026-03-24
    Total Gaps: 24 | Cross-referenced to: remediation-tracker.csv (REM-01 to REM-26)

    Critical Gaps (Must-Fix)

    GAP-01: AI Governance — No Formal Policy

  • Frameworks: ISM Dec 2025 (ISM-AI-01, ISM-AI-02)
  • Status: Non-Conforming
  • Progress: Not Started | REM: REM-06
  • Detail: No documented AI usage policy, no model/system cards, no AI risk assessment framework. AI tools (Claude, Copilot) are in use internally and being deployed on client endpoints (evidenced by ThreatLocker approval requests).
  • Remediation: Draft AI Usage Policy, create system card templates, establish AI tool approval process. Target: Q2 2026.
  • GAP-02: Cryptographic Bill of Materials (CBOM)

  • Frameworks: ISM Dec 2025 (ISM-CBOM-01)
  • Status: Non-Conforming
  • Progress: Not Started | REM: REM-07
  • Detail: No CBOM process exists. Software inventory tracked in NinjaOne but without cryptographic dependency analysis. No scanning for deprecated crypto algorithms.
  • Remediation: Evaluate CBOM tooling (CycloneDX crypto extensions), generate initial CBOM for critical infrastructure software. Target: Q4 2026.
  • GAP-03: SOCI Act — CIRMP Not Documented for CAG

  • Frameworks: SOCI Act 2018 (Critical Infrastructure Risk Management Program)
  • Status: Not Assessed
  • Progress: Not Started | REM: REM-05
  • Detail: Canberra Airport is a designated critical infrastructure asset. Netier manages IT infrastructure but no formal CIRMP has been documented. Mandatory incident reporting obligations (12hr/72hr) not formally integrated into incident response procedures.
  • Remediation: Engage with CAG management to establish CIRMP. Map existing controls to SOCI requirements. Integrate SOCI reporting into IR playbooks. Target: Q2 2026. Note: May require legal input.
  • GAP-04: Privileged Access Management — PIM Live at CAG, PAWs Pending

  • Frameworks: E8 ML2-ML3 (E8-RAP), ISM, NIST CSF, CIS Control 6
  • Status: In Progress (PIM deployed at CAG)
  • Progress: In Progress | REM: REM-08
  • Detail: Azure AD PIM is live at CAG — CW #1752374 "MFA Setup PIM Accounts" (March 2026), #1752093 "CAG PIM Account - Nathan Sole" (March 2026), weekly PIM digests received (#1754981). Gap: PIM not rolled out beyond CAG to other managed tenants. No Privileged Access Workstations deployed for Tier 0 administration.
  • Remediation: Extend PIM rollout from CAG to all managed tenants. Establish PAW program for DC/AAD/security tool administration. Target: Q3 2026.
  • High Gaps (Should-Fix Within 6 Months)

    GAP-05: PSPF — Not Formally Mapped

  • Frameworks: PSPF (all 4 pillars)
  • Status: Not Assessed
  • Progress: Not Started | REM: REM-22
  • Detail: Federal government clients require PSPF compliance. Netier has not formally mapped its controls to PSPF mandatory requirements. Some overlap exists via ISO 27001 and ISM alignment.
  • Remediation: Perform PSPF gap analysis, map existing controls, identify federal-specific gaps. Target: Q3 2026.
  • GAP-06: Privacy Act — No Formal PIA Process

  • Frameworks: Privacy Act 1988, APPs (particularly APP 1, 6, 11), NDB scheme
  • Status: Informal Compliance
  • Progress: Not Started | REM: REM-11
  • Detail: PII handled across all clients but no formal Privacy Impact Assessment process. NDB scheme breach reporting not formally integrated into incident response. No documented data flow mapping for PII.
  • Remediation: Establish PIA process, map PII data flows per client, integrate NDB reporting into IR playbooks. Target: Q3 2026.
  • GAP-07: Security Awareness Training — No Formal Platform

  • Frameworks: ISO A.6.3, ISM, IS18 Policy Requirement 4 (IS18-AWARE-01 downgraded to OFI), NIST CSF PR.AT, CIS Control 14
  • Status: Gap (IS18-AWARE-01 status corrected from Conforming to Opportunity for Improvement)
  • Progress: Not Started | REM: REM-12
  • Detail: uSecure procured as security awareness training platform. Phishing simulation testing not yet operational. Onboarding includes MFA setup guides but no structured security induction.
  • Remediation: Evaluate and procure SAT platform, implement quarterly phishing simulations, document security induction process. Target: Q2 2026.
  • GAP-08: Phishing-Resistant MFA — Operational (Expanding)

  • Frameworks: E8 ML3 (E8-MFA), ISM Dec 2025 (ISM-AUTH-01)
  • Status: Conforming at ML2, In Progress at ML3
  • Progress: In Progress | REM: REM-09
  • Detail: FIDO2 keys actively deployed to staff — not just pilot. CW evidence: broken key (#1746812), PIN issues (#1745815), sign-in errors (#1714723), key-at-home (#1735004), NinjaOne FIDO compatibility (#1748363). Confluence KB: netier.atlassian.net/wiki/spaces/STS/FIDO2. Gap: not universal across all clients/users. Most non-admin users still on push MFA.
  • Remediation: Expand FIDO2 to all admin accounts across all clients, then all users for ML3 clients. Track via Netier Compliance Engine Phase 3. Target: Q3 2026.
  • GAP-09: DR Testing — Not Regular Across All Clients

  • Frameworks: E8 ML3 (E8-RB), ISO A.5.29-30, NIST CSF RC, SOC 2 A1
  • Status: Conforming at ML2, Gap at ML3
  • Progress: Not Started | REM: REM-13
  • Detail: Backups performed and monitored (Veeam + NinjaOne) but full environment restoration testing not performed regularly. DR restoration SLAs not formally documented per client.
  • Remediation: Implement quarterly full restoration test schedule, document DR SLAs in client agreements. Target: Q2 2026.
  • GAP-10: DISP Obligations — Partially Documented

  • Frameworks: DISP (all pillars)
  • Status: Partially Conforming
  • Progress: Not Started | REM: REM-26
  • Detail: H1R clearance evidence held. DISP membership obligations exist but formal mapping of all security obligations (personnel, physical, ICT, supply chain) not completed.
  • Remediation: Map all DISP obligations, ensure AGSVA integration documented, verify subcontractor security requirements. Target: Q3 2026.
  • Medium Gaps (Nice-to-Have / Continuous Improvement)

    GAP-11: Risk Quantification — No Formal Methodology

  • Frameworks: ISO 27005, NIST CSF GV, IS18 Policy Requirement 2
  • Status: Gap
  • Progress: Not Started | REM: REM-25
  • Detail: Security risks managed qualitatively per-client but no standardised risk quantification methodology (FAIR, ISO 27005). No unified corporate risk register at Netier level.
  • Remediation: Evaluate FAIR or ISO 27005, establish unified risk register template. Target: Q4 2026.
  • GAP-12: APRA CPS 234 — Not Formally Assessed

  • Frameworks: APRA CPS 234
  • Status: Not Assessed
  • Progress: Not Started | REM: REM-23
  • Detail: Financial sector clients subject to APRA regulation. Netier has not formally mapped controls to CPS 234 requirements. Existing ISO 27001 controls likely cover significant portion.
  • Remediation: Perform CPS 234 gap analysis against existing ISO 27001 controls. Target: Q4 2026.
  • GAP-13: PCI DSS v4.0 — Not Formally Assessed

  • Frameworks: PCI DSS v4.0
  • Status: Not Assessed
  • Progress: Not Started | REM: REM-24
  • Detail: Clients handling payment card data require PCI DSS compliance. Scope and applicability not formally determined. Network segmentation of cardholder data environments not verified.
  • Remediation: Identify clients in PCI scope, determine SAQ level, perform gap analysis. Target: Q4 2026.
  • GAP-14: IS18 Annual Return — No Standardised Process

  • Frameworks: IS18 Policy Requirement 5
  • Status: Opportunity for Improvement
  • Progress: Not Started | REM: REM-19
  • Detail: 169-requirement annual return checklist not mapped to current tooling. Evidence collection not automated. Annual return process depends on manual effort.
  • Remediation: Obtain IS18 annual return template, map to evidence sources, automate where possible. Target: September 2026 (aligned with annual deadline).
  • GAP-15: SSPR Security Questions — ISM Prohibited Authentication

  • Frameworks: ISM Dec 2025 (ISM-AUTH-01)
  • Status: Opportunity for Improvement
  • Progress: Not Started | REM: REM-15
  • Detail: Some M365 tenants may still permit security questions as SSPR verification method, which ISM explicitly prohibits. Email-based OTP may also be permitted in legacy conditional access policies.
  • Remediation: Audit all managed tenants, disable security questions in SSPR, remove email OTP from permitted methods. Target: Q2 2026.
  • Systemic Findings (Gemini R2)

    GAP-16: SoA Evidence Decay

  • Frameworks: ISO 27001
  • Status: Gap
  • Progress: In Progress (CSV generated, not yet applied to XLSX) | REM: REM-01
  • Detail: The baseline Statement of Applicability relies on circular logic (generic policy names) and has suffered from severe evidence decay (last reviewed September 2023).
  • Remediation: Rewrite SoA evidence column to reference specific, verifiable technical artifacts (e.g. CW Ticket #1755124, Intune policies). Target: Q2 2026.
  • GAP-17: Asset Discovery Blindspot

  • Frameworks: CIS 1.1, SOCI
  • Status: Gap
  • Progress: Not Started | REM: REM-02
  • Detail: Passive asset management means attackers can map internal subnets unseen by NinjaOne. No active network discovery tool deployed to catch unmanaged/IoT/OT devices.
  • Remediation: Deploy active network discovery (e.g., runZero, Nmap). Target: Q2 2026.
  • GAP-18: Centralised Log Correlation

  • Frameworks: SOC 2, E8 ML3
  • Status: Gap
  • Progress: Not Started | REM: REM-10
  • Detail: No SIEM deployed. ThreatLocker blocks and Entra ID failed logins are not correlated centrally, inhibiting proactive threat hunting and MTTD tracking.
  • Remediation: Deploy a unified SIEM (e.g., Sentinel, Wazuh). Target: Q4 2026.
  • GAP-19: Shared Responsibility Matrix

  • Frameworks: CPS 234, SOCI
  • Status: Gap
  • Progress: In Progress (CSV generated) | REM: REM-03
  • Detail: No clear delineation of Netier-managed vs Client-owned controls in documentation. Essential for regulatory audits like CPS 234 and PCI.
  • Remediation: Develop and attach shared responsibility matrix to MSAs. Target: Q2 2026.
  • GAP-20: Incident Reporting Timeline Collision

  • Frameworks: SOCI, APRA, NDB
  • Status: Gap
  • Progress: In Progress (CSV generated) | REM: REM-04
  • Detail: Multiple statutory reporting timelines (12hr/20hr/72hr/30d) exist without a unified incident triage matrix, creating risk of a statutory breach during an incident.
  • Remediation: Update IR playbook with a unified reporting matrix. Target: Q2 2026.
  • GAP-21: Data Sovereignty vs SaaS

  • Frameworks: PSPF, DISP
  • Status: Gap
  • Progress: In Progress (awareness exists) | REM: REM-14
  • Detail: Key managed tools (NinjaOne, ThreatLocker) are US-based and process Australian metadata. Not formally assessed against government/defence data sovereignty requirements.
  • Remediation: Assess legal sovereignty risk for NinjaOne/ThreatLocker. Target: Q3 2026.
  • GAP-22: No Explicit DLP

  • Frameworks: ATT&CK (Exfiltration)
  • Status: Gap
  • Progress: Not Started | REM: REM-16
  • Detail: No explicit Data Loss Prevention deployed. Missing protections against mass exfiltration to unauthorized cloud storage.
  • Remediation: Evaluate and deploy Microsoft Purview DLP. Target: Q4 2026.
  • GAP-23: No FIM Capability

  • Frameworks: ATT&CK (Persistence)
  • Status: Gap
  • Progress: Not Started | REM: REM-17
  • Detail: File Integrity Monitoring is lacking, making silent persistence by attackers possible despite baseline hardening.
  • Remediation: Deploy FIM capabilities via Sophos or SIEM. Target: Q4 2026.
  • GAP-24: Supply Chain Concentration Risk

  • Frameworks: CSF-GV, SOCI
  • Status: Gap
  • Progress: Not Started | REM: REM-18
  • Detail: Complete reliance on 'Big 4' vendors (Microsoft, Sophos, NinjaOne, ThreatLocker). Systemic risk if one is compromised.
  • Remediation: Perform formal ISO 27036 risk assessment on top 4 vendors. Target: Q3 2026.
  • PART 6

    Commercial Templates

    Amortized Transformation - Email Templates

    For Netier Account Managers

    Last updated: 2026-03-25

    Document ID: NET-TPL-RTR-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — GRC / Security Operations
    Classification: Internal

    These templates support the two-phase onboarding model (Discovery + Transformation).

    Personalise bracketed placeholders before sending. Outlook will auto-expand your signature.

    ================================================================================

    TEMPLATE 1 — INITIAL DISCOVERY FINDINGS

    ================================================================================

    Subject: [Client Name] — Discovery Audit Findings and Recommended Next Steps


    Good morning [Name],

    Thank you for engaging Netier to conduct the Phase 1 Discovery Audit of your environment. I wanted to share our initial findings with you directly, as several items require urgent attention.

    During the audit, we identified a number of critical and high-severity risks across your infrastructure. The following is a summary of the most significant issues:

    IDENTITY AND ACCESS MANAGEMENT
  • [MFA STATUS: e.g., "Multi-factor authentication is not enforced on privileged administrator accounts" OR "MFA is enforced for administrators but not standard users" OR "MFA is enforced universally — no finding."]
  • [SERVICE ACCOUNTS: e.g., "[X] service accounts with domain admin privileges have passwords that have not been rotated in over [X] months."]
  • [CA POLICIES: e.g., "Conditional Access policies are either absent or not enforced" OR "Conditional Access policies are configured but do not include device compliance requirements."]
  • PATCH MANAGEMENT AND VULNERABILITY EXPOSURE
  • [CRITICAL CVES: e.g., "[X] critical CVEs across the server fleet are older than 90 days and remain unpatched with known public exploits" OR "Patching is current for servers but [X] workstations have critical patches outstanding."]
  • [EOL SYSTEMS: e.g., "End-of-life operating systems (Windows Server 2012 R2 / Windows 10 21H2) are still in production with no extended security update coverage" OR "All operating systems are within support lifecycle — no finding."]
  • [FIRMWARE: e.g., "Firmware on the perimeter firewall ([Make/Model]) is [X] major versions behind the current release and contains known remote code execution vulnerabilities" OR "Firewall firmware is current — no finding."]
  • ENDPOINT AND APPLICATION SECURITY
  • [APP CONTROL: e.g., "No application whitelisting or control solution is deployed" OR "Application control is deployed but not enforced in block mode" OR "Application control is fully enforced — no finding."]
  • [EDR COVERAGE: e.g., "Endpoint detection and response (EDR) coverage is incomplete — approximately [X]% of endpoints have no active protection agent" OR "EDR is deployed to all endpoints — no finding."]
  • BACKUP AND RECOVERY
  • [BACKUP STATUS: e.g., "Backup jobs for [X] critical systems have been failing for [X] days with no alerting or remediation in place" OR "Backups are completing successfully but have never been tested for restore integrity."]
  • [RECOVERY TESTING: e.g., "There is no evidence of backup integrity testing or documented recovery procedures" OR "Recovery testing is documented but last performed over 12 months ago."]
  • REGULATORY AND BUSINESS IMPACT

    These findings carry significant regulatory exposure. Under the Privacy Act 1988 (Notifiable Data Breaches scheme), your organisation would be required to notify the OAIC and affected individuals in the event of a breach involving personal information. The absence of basic controls such as MFA and patching materially increases the likelihood of such an event.

    If your organisation falls within the scope of the Security of Critical Infrastructure Act 2018 (Cth) (as amended), additional reporting obligations and potential government intervention powers apply.

    From a business continuity perspective, the current state of the environment presents a realistic risk of a ransomware event resulting in extended operational downtime, data loss, and reputational damage. Cyber insurance coverage may also be jeopardised, as most insurers now require evidence of MFA, EDR, and patching as minimum conditions.

    NEXT STEPS

    We need to discuss remediation options before we can proceed to the managed service engagement. Netier's onboarding model requires that critical risks are addressed during Phase 1 (Remediation) before we can transition your environment into our managed service platform. This is not a commercial preference — it is a risk management requirement that protects both organisations.

    I would like to schedule a call this week to walk through these findings in detail and discuss the remediation pathway. Please let me know your availability.

    Kind regards,

    ================================================================================

    TEMPLATE 2 — PHASE 1 REMEDIATION PROPOSAL

    ================================================================================

    Subject: [Client Name] — Phase 1 Remediation Proposal and Compliance Readiness Pathway


    Good afternoon [Name],

    Following our discussion of the Discovery Audit findings, I am pleased to present Netier's Phase 1 Remediation Proposal for [Client Name].

    CONTEXT

    During the Discovery Audit, your environment received a Compliance Readiness Score of [X]/100. This score reflects your current alignment against the ASD Essential Eight, ISO 27001 Annex A controls, and baseline security requirements that Netier mandates for all managed service clients.

    For reference, Netier requires a minimum score of [X]/100 before an environment can be transitioned into Phase 2 (Managed Service). Your current score of [X]/100 indicates that mandatory remediation is required before onboarding can proceed.

    This is not optional. Netier cannot accept operational responsibility for an environment with unresolved critical vulnerabilities, as doing so would expose both your organisation and Netier to unacceptable risk. The remediation phase is a contractual prerequisite to the managed service engagement.

    REMEDIATION SCOPE

    The following table summarises the remediation work required to bring your environment to the minimum baseline:


    Item | Description | Est. Cost


    R-01 | [e.g., Deploy and enforce MFA across | $[X,XXX]

    | all admin and user accounts via Entra ID] |


    R-02 | [e.g., Critical patch remediation — | $[X,XXX]

    | servers and workstations] |


    R-03 | [e.g., Deploy ThreatLocker application | $[X,XXX]

    | whitelisting to all endpoints] |


    R-04 | [e.g., Firewall firmware upgrade and | $[X,XXX]

    | security policy hardening] |


    R-05 | [e.g., Backup infrastructure remediation | $[X,XXX]

    | and recovery testing] |


    R-06 | [e.g., Privileged access review and | $[X,XXX]

    | service account hardening] |


    R-07 | [e.g., EDR deployment to uncovered | $[X,XXX]

    | endpoints via Sophos] |


    | TOTAL PHASE 1 REMEDIATION | $[XX,XXX]


    Phase 1 is scoped for completion within 30 days from approval. All work is performed by Netier engineers using our standard tooling (NinjaOne, Intune, ThreatLocker, Sophos, Veeam) to ensure a clean handover into the managed service.

    INVESTMENT CONTEXT

    I want to be clear about why this investment matters beyond the immediate security benefit.

    Completing Phase 1 remediation is the gateway to Netier's Co-Investment program under Phase 2. Once your environment meets our baseline, Netier will absorb the upfront transformation costs of onboarding you into our fully managed platform and amortize those costs over the 3-year agreement term. This includes deployment of our full monitoring, automation, and compliance stack at no additional upfront cost to you.

    [CO-INVESTMENT TIER: Refer to the current Amortized Transformation pricing model for co-investment eligibility based on seat count. Confirm tier with Service Delivery Manager before sending.]

    The Phase 1 remediation cost is a one-time investment. It is not amortized and is payable on commencement. Think of it as the entry ticket to a fundamentally different level of managed service — one where you receive all-you-can-eat support, proactive security operations, and compliance alignment as standard inclusions.

    NEXT STEPS

    Please review the attached scope and confirm your approval so we can schedule the remediation sprint. If you have questions about any line item, I am happy to walk through the detail.

    The sooner we begin, the sooner your environment reaches the baseline required for Phase 2 onboarding.

    Kind regards,

    ================================================================================

    TEMPLATE 3 — RIGHT TO REFUSE (WALK-AWAY)

    ================================================================================

    Subject: [Client Name] — Netier Engagement Decision


    Good morning [Name],

    Thank you for the time you and your team have invested in discussions with Netier over recent weeks. I want to be straightforward with you about where we have landed.

    Following completion of our Phase 1 Discovery Audit and subsequent discussions regarding remediation, Netier has made the decision to exercise our Right to Refuse under the proposed engagement terms. We will not be proceeding with onboarding [Client Name] into our managed service platform at this time.

    I want to explain the reasoning behind this decision clearly and respectfully.

    WHY WE ARE DECLINING

    During the Discovery Audit, we identified critical security deficiencies across your environment — including but not limited to the absence of multi-factor authentication on privileged accounts, unpatched critical vulnerabilities with known active exploits, and the lack of fundamental endpoint protection and application control.

    We presented a remediation proposal to address these issues as a prerequisite to onboarding. That proposal was declined.

    Netier's managed service model is built on the principle that we accept operational responsibility for our clients' environments. That responsibility includes accountability for security posture, compliance alignment, and incident outcomes. We cannot accept that responsibility for an environment with known critical vulnerabilities that remain unaddressed by choice.

    Onboarding [Client Name] in its current state would expose your organisation to continued and material risk of a significant security incident, including ransomware, data exfiltration, and regulatory action under the Privacy Act 1988 and potentially the Security of Critical Infrastructure Act 2018 (Cth) (as amended). It would also expose Netier to liability that we are not prepared to accept.

    This is not a reflection of the value we place on the relationship. It is a risk management decision that we apply consistently to all prospective clients.

    WHAT THIS MEANS

  • Netier will not proceed with a managed service agreement for [Client Name] under current conditions.
  • Any Discovery Audit deliverables (reports, findings, scorecards) that have been provided to you remain your property and can be used with any provider.
  • We will securely destroy any copies of your environment data held by Netier within 30 days, in accordance with our data handling policy.
  • THE DOOR REMAINS OPEN

    Should your organisation's position on remediation change in the future, we would genuinely welcome the opportunity to reassess. The Discovery findings and remediation scope we prepared would serve as a strong starting point for that conversation, though a re-validation of the environment would be required given the passage of time.

    You are welcome to contact me directly at any point to revisit this.

    I wish you and your team the best, and I hope we have the opportunity to work together in the future under the right conditions.

    Kind regards,


    Template 4 — Phase 2 Transition Confirmation

    Use when: Phase 1 remediation is complete. Client environment meets minimum Compliance Readiness Score. Managed service agreement is signed. Subject: Phase 1 Complete — Welcome to Netier Managed Security Services

    Dear [CLIENT CONTACT NAME],

    I'm pleased to confirm that [CLIENT ORGANISATION] has successfully completed Phase 1 — Security Foundation Remediation.

    Phase 1 Summary:

    Your environment has been brought to our minimum operational baseline:

  • [LIST COMPLETED REMEDIATION ITEMS: e.g., "MFA enforced for all users via Conditional Access", "Endpoint protection deployed to 100% of devices via ThreatLocker and Sophos MDR", "Patch management automated via NinjaOne with 48-hour critical patching SLA"]
  • Your updated Compliance Readiness Score is [X]/100 (up from [X]/100 at Discovery).
  • Your Managed Service:

    Effective [START DATE], your environment is now under active management:

    ItemDetail
    Service Tier[Essential / Professional / Enterprise]
    SLA Response[Per tier: P1 = 15min / P2 = 30min / P3 = 2hr / P4 = 4hr]
    Primary Contact[ACCOUNT MANAGER NAME], [EMAIL]
    Technical Escalation[TECHNICAL LEAD NAME], [EMAIL]
    Security OperationsNetier SOC via [TICKETING EMAIL] or [PHONE]
    First Monthly Review[DATE]
    What Happens Next:
  • You will receive a monthly security posture report covering patch compliance, endpoint health, incident summary, and training completion.
  • Quarterly Business Reviews (QBRs) will be scheduled to review security metrics and plan improvements.
  • Any security incidents will be managed per our Incident Response Plan, with statutory reporting handled by Netier where applicable.
  • If you have any questions about your service or need to raise an issue, please contact your Account Manager or log a ticket via [TICKETING METHOD].

    Thank you for partnering with Netier to secure your organisation.

    Kind regards,

    [SENDER NAME]

    [SENDER TITLE]

    Netier — Security & Cloud Engineering

    Netier Compliance Readiness Scorecard

    Document ID: NET-TPL-CRS-001
    Version: 1.0
    Effective Date: 2026-03-26
    Next Review: 2026-09-26
    Owner: Netier — Security & Cloud Engineering
    Classification: Internal
    Purpose: Standardised scoring methodology for pre-onboarding security assessment
    Referenced By: Right-to-Refuse Email Templates (NET-TPL-RTR-001), Template 2

    Scoring Overview

  • Total score: 100 points across 6 domains
  • Minimum passing score: 40/100 (with remediation plan for Phase 1)
  • Minimum for direct Phase 2 entry (no remediation needed): 75/100
  • No domain can score 0 — minimum 1 point per domain indicates assessment was conducted

  • Scoring Domains

    Domain 1: Identity & Access Management (20 points)

    CriteriaPointsAssessment
    MFA enforced for ALL users (phishing-resistant preferred)8Full: 8, Admins only: 4, No MFA: 0
    Conditional Access policies deployed (geo-blocking, device compliance, risk-based)53+ policies: 5, 1-2 policies: 3, None: 0
    Privileged access managed (PIM/JIT or equivalent, no standing Global Admin)4PIM with JIT: 4, Separate admin accounts: 2, Shared admin: 0
    Break Glass accounts exist and are monitored3Configured + monitored: 3, Exist but unmonitored: 1, None: 0

    Domain 2: Patch Management & Vulnerability (20 points)

    CriteriaPointsAssessment
    OS patching automated with defined SLA (Critical <48h, Standard <14d)8Automated + SLA met: 8, Automated no SLA: 5, Manual: 2, No patching: 0
    Third-party application patching (browsers, Java, Adobe, etc.)5Automated: 5, Manual periodic: 3, No 3rd-party patching: 0
    Vulnerability scanning (authenticated internal + external)4Both internal + external: 4, External only: 2, None: 0
    Firmware/driver updates within 30 days3Managed process: 3, Ad-hoc: 1, Never updated: 0

    Domain 3: Endpoint & Application Security (20 points)

    CriteriaPointsAssessment
    EDR/MDR deployed to 100% of endpoints (Sophos, Defender P2, CrowdStrike, etc.)8100% coverage + managed: 8, >90%: 5, <90%: 2, No EDR: 0
    Application control / allowlisting (ThreatLocker, WDAC, AppLocker)5Default-deny enforced: 5, Audit mode: 3, None: 0
    Full disk encryption (BitLocker/FileVault) on all endpoints4100% encrypted + Intune escrowed: 4, >90%: 2, <90%: 0
    USB/removable media control3Blocked or controlled: 3, Logged only: 1, Unrestricted: 0

    Domain 4: Backup & Disaster Recovery (15 points)

    CriteriaPointsAssessment
    Daily backups with immutable/offsite copy6Immutable + offsite: 6, Offsite only: 4, Local only: 2, No backup: 0
    M365 backup (Exchange, SharePoint, OneDrive, Teams)43x daily + 1yr retention: 4, Daily: 3, Weekly: 1, None: 0
    DR test conducted in last 12 months3Documented test: 3, Informal test: 1, Never tested: 0
    RTO/RPO defined per system/service2Documented: 2, Informal: 1, None: 0

    Domain 5: Network & Perimeter (15 points)

    CriteriaPointsAssessment
    Firewall with default-deny, IPS enabled5NGFW + IPS + default-deny: 5, Basic firewall: 3, No firewall/ISP router: 0
    Network segmentation (VLANs for management, server, client, guest)44+ VLANs: 4, 2-3 VLANs: 2, Flat network: 0
    DNS filtering (Cloudflare Gateway, Umbrella, etc.)3Enforced at DHCP scope: 3, Optional/client-side: 1, None: 0
    Secure remote access (ZTNA or VPN with MFA)3ZTNA: 3, VPN + MFA: 2, VPN no MFA: 1, RDP exposed: 0

    Domain 6: Governance & Compliance (10 points)

    CriteriaPointsAssessment
    Security awareness training program active4Platform + phishing sims: 4, Training only: 2, Ad-hoc: 1, None: 0
    Incident response plan documented3Documented + tested: 3, Documented: 2, None: 0
    Acceptable use / security policies in place2Enforced + signed: 2, Exists: 1, None: 0
    Previous security audit or assessment (last 24 months)1Yes: 1, No: 0

    Score Interpretation Table

    Score RangeRatingAction
    75-100GREEN — Ready for Phase 2Direct onboarding to managed service. Minor improvements during BAU.
    50-74AMBER — Phase 1 RequiredRemediation proposal (Template 2). Phase 1 remediation before managed service. Standard co-investment applies.
    25-49RED — Significant RemediationExtended Phase 1. Higher co-investment or client-funded remediation. Formal risk acceptance for gaps.
    0-24BLACK — Walk-Away CandidateTemplate 3 (Walk-Away) unless client commits to full transformation with documented risk acceptance and executive sponsorship.

    Per-Domain Minimum Thresholds

    DomainMinimum ScoreRationale
    Identity & Access Management4/20At minimum, MFA must be on admin accounts
    Patch Management2/20Some patching process must exist
    Endpoint & Application Security2/20At minimum, antivirus must be present
    Backup & Disaster Recovery2/15Some backup must exist
    Network & Perimeter0/15Cloud-only environments may have no traditional perimeter
    Governance & Compliance0/10Netier will build this during engagement

    If ANY domain falls below its minimum threshold AND the client declines remediation, this triggers the Right to Refuse process (Template 3).


    Assessment Procedure

  • Conduct Discovery Audit using NinjaOne scan, Entra admin review, firewall config export, and CW Manage documentation
  • Score each criterion using the tables above — document evidence for each score
  • Calculate total score and per-domain scores
  • Determine action per Score Interpretation Table
  • Attach scorecard to Template 1 (Discovery Findings) and reference score in Template 2 (Remediation Proposal)
  • Re-score after Phase 1 to confirm readiness for Phase 2 (Template 4)

  • Document History

    VersionDateAuthorChanges
    1.02026-03-26Claude (AI-assisted)Initial version — scoring methodology for 6 domains
    PART 7

    Quality Assurance

    Production-Readiness Review: 4 Operational Deliverables

    Reviewer: Senior Cybersecurity & MSP Operations Specialist Date: 2026-03-25 Classification: OFFICIAL Scope: SOP (Identity/CA/Cloud), IS18 Compliance Mapping, Right-to-Refuse Email Templates, ConnectWise Manage SLA Workflows

    1. EXECUTIVE SUMMARY

    Overall Verdict: CONDITIONAL PASS FULL PASS — All Critical and High Items Resolved (2026-03-26)

    DocumentRatingCriticalHighMediumLowRemediated
    SOP — Identity, CA & Cloud WorkspacesAMBER GREEN3 03 0222026-03-26
    IS18 Compliance MappingGREEN02 02 112026-03-26
    Right-to-Refuse Email TemplatesGREEN02 02 11 02026-03-26
    CW Manage SLA WorkflowsRED GREEN5 03 021 02026-03-26
    Cross-Document InconsistenciesRED GREEN2 00002026-03-26
    TOTAL (original)101085
    TOTAL (post-remediation)006320/20 resolved

    What's Genuinely Good

    Before the critique: these documents are substantially better than what most $300/hr consultants produce. Specifically:

    SOP — Identity, CA & Cloud Workspaces: This is the standout document. Every CA policy has step-by-step portal navigation, a PowerShell alternative, verification checks, AND rollback procedures. The break glass section gets the sequencing right (create BG accounts BEFORE deploying CA policies). The PIM section correctly separates eligible from active assignments and mandates adm- prefix admin accounts. The Master Verification Checklist at the end is exactly what an engineer needs for tenant sign-off. If the critical items below are fixed, this SOP is deployable to a client-facing tenant tomorrow. IS18 Compliance Mapping: The 37-control mapping with tier availability is well-structured and the gap analysis is honest — it correctly identifies Physical Security as "Partial — Client-Dependent" (which is the truth for any MSP) rather than pretending it's fully covered. The Queensland-specific recommendations (QGISCF alignment, IPP vs APP differences, QGCISO notification) show genuine IS18 familiarity rather than generic ISO padding. Email Templates: The commercial language is strong. Template 3 (Walk-Away) strikes exactly the right tone — firm, professional, and leaves the door open. The "co-investment" framing in Template 2 avoids the "paying for the privilege of being managed" trap that sinks most MSP proposals. The plain-text formatting and "Kind regards," closing match Netier's email standards. CW Manage SLA Workflows: The Type/SubType/Items taxonomy is well-designed and the 13 workflow rules demonstrate genuine understanding of security operations workflows. The integration architecture section with API payload examples and deduplication logic goes well beyond what most PSA configuration docs include. HOWEVER, this document has the most critical issues — several "workflow rules" are described that CW Manage cannot actually implement as workflow rules, which would cause an engineer to hit a wall during implementation.

    2. DOCUMENT-BY-DOCUMENT FINDINGS


    DOCUMENT 1: SOP — Identity, Conditional Access & Cloud Workspace Security

    Critical (must fix before production deployment)

    C1-SOP: Phishing-Resistant MFA Policy Will Lock Out All Users During Initial Deployment
  • What's wrong: Section "Require MFA for All Users" (lines 369-445) creates a CA policy requiring "Phishing-resistant MFA" authentication strength (FIDO2 or Windows Hello only). The auth methods section (line 386) says to enable Microsoft Authenticator "as fallback during transition." But the CA policy's authentication strength of "Phishing-resistant MFA" explicitly BLOCKS Microsoft Authenticator — it only accepts FIDO2 and Windows Hello for Business. These two instructions contradict each other.
  • Why it matters: If an engineer follows this SOP on a live tenant, the CA policy will enforce phishing-resistant MFA, but zero users will have FIDO2 keys registered yet. Every user (including admins) gets locked out on enforcement day. The 7-day Report-only period will flag this, but the SOP doesn't explain what to do about it — it implies Authenticator is a valid fallback when the policy explicitly prevents it.
  • Exact fix: Add a two-phase deployment approach:
  • ### Deployment Phases
    
    Phase A — Transitional (Weeks 1-4):
    

    Deploy CA policy using standard "Require multifactor authentication" grant control

    (accepts Authenticator, SMS, voice as well as FIDO2/WHfB). This gets MFA enforced

    immediately while FIDO2 keys are distributed.

    Phase B — Hardened (Week 5+):

    Once >95% of users have registered FIDO2 or WHfB (verify via Authentication Methods

    Activity report in Entra Admin Center > Protection > Authentication methods > Activity),

    update the CA policy grant control to "Require authentication strength > Phishing-resistant MFA".

    Monitor Report-only for 7 days, then enforce.

    NOTE: During Phase A, the tenant IS protected by MFA but is vulnerable to MFA fatigue

    and SIM-swap attacks. Phase B eliminates these vectors. Do not skip Phase A — a lockout

    is worse than a temporary period of non-phishing-resistant MFA.


    C2-SOP: PowerShell Break Glass Password Is Not Cryptographically Secure
  • What's wrong: Line 73: Password = (New-Guid).Guid + "!Aa1". This generates a password like a1b2c3d4-e5f6-7890-abcd-ef1234567890!Aa1.
  • Why it matters: GUIDs (v4) use a CSPRNG internally but are NOT designed as secrets — they have predictable structure (fixed bits at positions 13 and 17-18), reducing effective entropy. More importantly, the comment says "Replace with securely generated password" but the code runs as-is. A junior engineer will copy-paste this without reading the comment. In an audit, this password generation method would be flagged.
  • Exact fix: Replace the password generation block (lines 72-75):
  • $passwordProfile = @{
    

    Password = -join ((48..57) + (65..90) + (97..122) + (33,35,36,37,38,42,64) |

    Get-Random -Count 24 | ForEach-Object { [char]$_ })

    ForceChangePasswordNextSignIn = $false

    }

    Or using .NET:

    Add-Type -AssemblyName System.Web
    

    $passwordProfile = @{

    Password = [System.Web.Security.Membership]::GeneratePassword(24, 6)

    ForceChangePasswordNextSignIn = $false

    }

    Remove the comment "Replace with securely generated password" — the code should be correct as shipped.


    C3-SOP: Master Checklist Says "6 Policies Total" but 7 Policies Are Defined
  • What's wrong: Line 1160: "Conditional Access Policies (6 policies total)" — but the checklist that follows lists 7 distinct policies (Block Legacy Auth, Block Non-AU, Require Compliant Device, Require MFA, Block High Sign-in Risk, MFA for Medium Sign-in Risk, Require Password Change for High User Risk).
  • Why it matters: An engineer using this checklist for sign-off will count 7 policies and wonder if they built one too many, or if the "6" means the Sign-in Risk block and MFA should be combined. During an ISO audit, a discrepancy between the SOP and the implementation creates a finding.
  • Exact fix: Change line 1160 from:
  • ### Conditional Access Policies (6 policies total)

    to:

    ### Conditional Access Policies (7 policies total)


    High (must fix before production deployment)

    H1-SOP: Deprecated Microsoft Graph Cmdlet for Role Assignment
  • What's wrong: Line 87: New-MgDirectoryRoleMember -DirectoryRoleId $roleId -DirectoryObjectId $user.Id
  • Why it matters: New-MgDirectoryRoleMember targets the legacy Directory Roles API. Microsoft Graph SDK v2+ uses New-MgRoleManagementDirectoryRoleAssignment. The old cmdlet may work on some SDK versions but will fail on fresh installs of Microsoft.Graph v2.x and produces deprecation warnings that confuse engineers.
  • Exact fix: Replace lines 86-87:
  • # Assign Global Admin role
    

    $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Global Administrator'"

    New-MgRoleManagementDirectoryRoleAssignment -PrincipalId $user.Id

    -RoleDefinitionId $roleDefinition.Id -DirectoryScopeId "/"


    H2-SOP: User Risk Policy Missing Session Controls
  • What's wrong: The User Risk policy (lines 556-630) requires password change and MFA but does not include session controls. Compare with the Sign-in Risk policy (line 482) which sets SignInFrequency.FrequencyInterval = "everyTime".
  • Why it matters: A user flagged as high-risk who ALREADY has an authenticated session continues accessing resources until their token expires (default: up to 1 hour for access tokens, up to 90 days for refresh tokens). The password change only triggers on next sign-in. During a credential compromise, the attacker's existing session remains valid.
  • Exact fix: Add session controls to the User Risk policy PowerShell block (after the GrantControls section, before the closing }):
  •     SessionControls = @{
    

    SignInFrequency = @{

    Value = $null

    Type = $null

    IsEnabled = $true

    AuthenticationType = "primaryAndSecondaryAuthentication"

    FrequencyInterval = "everyTime"

    }

    }

    And in the portal instructions, add after step 5:

    5b. Session controls:
    

    - Set Sign-in frequency to Every time

    - This forces re-authentication, which triggers the password change requirement for existing sessions


    H3-SOP: No Guidance on Service Account and App Registration Exclusions
  • What's wrong: The MFA policy (line 439) mentions "Service accounts/app registrations that cannot perform MFA are handled (exclude or use managed identity)" as a verification check, but there is NO procedure in the SOP body for handling this.
  • Why it matters: Every real tenant has service accounts (backup service accounts, line-of-business app registrations, SMTP relay accounts). The MFA policy targets "All users" with no guidance on how to handle these. An engineer will either exclude them insecurely (over-broad exclusion group) or break them (MFA prompt on a headless account).
  • Exact fix: Add a new sub-section after the MFA policy:
  • #### Handling Service Accounts and App Registrations
    
    
  • Identify all service accounts and app registrations via:
  • - Entra Admin Center > Identity > Applications > App registrations

    - Entra sign-in logs filtered to "Service Principal" sign-ins

    - Known service accounts (backup, SMTP relay, LOB integrations)

  • For each, determine the correct approach:
  • a. Managed Identity (preferred): Migrate to Managed Identity where possible

    (Azure-hosted services). Managed Identities are excluded from CA by default.

    b. Workload Identity (app registrations): Create a separate CA policy targeting

    "Workload identities" with appropriate controls (IP restriction, no legacy auth).

    c. Service account exclusion (last resort): Add to a dedicated security group

    SG-CA-ServiceAccounts. Exclude this group from the MFA policy ONLY.

    Compensating controls: restrict sign-in to Netier management IPs only,

    disable interactive logon, monitor via sign-in alerts.

  • Document every exclusion in a Service Account Register with: account name,
  • purpose, owner, exclusion justification, compensating controls, and review date.


    Medium (fix before next review cycle)

    M1-SOP: Teams App ID May Cause Incomplete Coverage
  • What's wrong: The Compliant Device PowerShell (line 339) targets Teams by App ID cc15fd57-2c6c-4117-a88c-83b1d56b4bbe. This is the Teams client service principal.
  • Why it matters: Teams accesses data through Exchange Online and SharePoint Online APIs. Targeting the Teams app ID may not catch all data access paths. Microsoft's recommendation is to target the "Office 365" meta-application or rely on the Exchange/SharePoint targeting (which already covers Teams' backend data access).
  • Exact fix: Add a note in the PowerShell:
  • # NOTE: Targeting Exchange Online and SharePoint Online already covers
    

    most Teams data access. The explicit Teams app ID is included for

    Teams-specific features (chat, calls) that don't route through EXO/SPO.

    Alternative: replace all three with the Office 365 meta-app:

    IncludeApplications = @("Office365")


    M2-SOP: Entra ID Access Reviews Not Covered
  • What's wrong: The IS18 Compliance Mapping claims "Automated access reviews for privileged roles (monthly)" as a control (line 30), but the SOP contains no procedure for configuring Entra ID Access Reviews.
  • Why it matters: During an IS18 audit, the assessor will ask for evidence of access reviews. The IS18 mapping points to Entra Access Reviews, but no SOP exists to configure them. The control is claimed but not implementable from this document set.
  • Exact fix: Add an Access Reviews section to the SOP (after PIM), or create a separate SOP. Minimum content: create recurring access review for Global Admin role, configure monthly cadence, set auto-apply for non-respondents (remove access), assign reviewers.

  • Low (polish items)

    L1-SOP: Break Glass .onmicrosoft.com Guidance Is Debatable
  • What's wrong: Line 39: "do not use .onmicrosoft.com for production break glass"
  • Why it matters: Some security architects deliberately use .onmicrosoft.com for break glass because it survives custom domain deprovisioning. Others prefer custom domains for consistency. Neither approach is wrong. Presenting one as a hard rule without justification may cause pushback from experienced engineers.
  • Exact fix: Change to: "Use the tenant's primary custom domain for break glass accounts for consistency with monitoring and alerting. Note: some organisations prefer .onmicrosoft.com to survive custom domain deprovisioning — document the decision and rationale either way."

  • L2-SOP: Safe Links URL Rewriting Deprecation
  • What's wrong: Line 1024: "Do not rewrite URLs, do checks via Safe Links API only: No (rewrite for visibility)"
  • Why it matters: Microsoft is moving toward API-only checks for modern clients (Outlook desktop, Teams). URL rewriting will remain for OWA and legacy clients but is no longer the recommended primary approach. Setting rewrite to "Yes" today is not wrong, but the document should acknowledge the direction.
  • Exact fix: Add a note: "Note: Microsoft is transitioning to API-only Safe Links checks for modern Outlook clients. URL rewriting remains necessary for OWA and legacy clients. Review this setting at next quarterly review to align with Microsoft's deprecation timeline."


  • DOCUMENT 2: IS18 Compliance Mapping

    High

    H1-IS18: PIR Timeline Inconsistent with CW SLA Definition
  • What's wrong: Line 50: "PIR conducted within 5 business days of incident closure"
  • Why it matters: The CW Manage SLA document defines PIR completion at 14 calendar days (SLA "PIR - 14 Day", resolution 336 hours). The IS18 mapping claims 5 business days (~7 calendar days). An auditor comparing these documents will find a contradiction. Engineers won't know which deadline to follow.
  • Exact fix: Align to one value. Recommended: change IS18 mapping to "PIR conducted within 10 business days (14 calendar days) of incident closure" to match the CW SLA, or tighten the CW SLA to 5 business days if that's the genuine target. Whatever you choose, update BOTH documents.

  • H2-IS18: Monitoring Tool Reference Misaligned with Official Tool Stack
  • What's wrong: Line 36: monitoring tools list included a tool not in the official Netier stack.
  • Why it matters: All monitoring references must match the official tool stack (NinjaOne, CW Manage, ThreatLocker, Sophos MDR, etc.) to avoid nonconformity during IS18 audit.
  • Exact fix: Updated monitoring tools to: "Prometheus/Grafana; Uptime Kuma; NinjaOne (SNMP/agent monitoring); Sophos MDR; Defender"

  • Medium

    M1-IS18: Access Reviews Claim Exceeds SOP Coverage
  • What's wrong: Line 30: "Automated access reviews for privileged roles (monthly); all-staff access review quarterly; stale account detection (90 days inactive = disabled)"
  • Why it matters: The SOP covers PIM but not Access Reviews. The IS18 mapping claims Access Reviews as a control for IS18 Family 5 (Access Control), but there is no procedure to configure or operate them. The claim is accurate only at Enterprise tier (requires Entra ID Governance licences), but it's listed without tier qualification in the control row.
  • Exact fix: Add a tier note: "Entra ID Access Reviews: automated monthly reviews for privileged roles (Enterprise tier); manual quarterly reviews with documented evidence (Professional/Essential tier). See Access Review SOP [to be created]."

  • M2-IS18: QGISCF Label Mapping Not Specified
  • What's wrong: Recommendation 3 (line 127) says to "Map M365 Sensitivity Labels to the Queensland Government Information Security Classification Framework" but the mapping itself is not provided.
  • Why it matters: This is the most actionable recommendation in the document but it stops short of delivering the actual mapping. The document identifies the gap but doesn't close it.
  • Exact fix: Add an appendix or table:
  • | QGISCF Classification | M365 Sensitivity Label | Handling Requirements |
    

    |---|---|---|

    | UNOFFICIAL | No label required | No restrictions |

    | OFFICIAL | OFFICIAL | Internal sharing permitted |

    | OFFICIAL:Sensitive | OFFICIAL:Sensitive | DLP policy: block external sharing without encryption |

    | PROTECTED | PROTECTED | DLP policy: block external sharing; encryption enforced; Enterprise tier only |


    Low

    L1-IS18: Backup Tool Reference in BCP Context
  • What's wrong: The Explore agent found a non-standard backup tool referenced in the BCP (Business Continuity Plan) alongside Veeam.
  • Why it matters: Only production-approved tools should appear in client-facing compliance documentation.
  • Exact fix: BCP updated to reference only the client-facing backup tools (Veeam/AFI.ai).


  • DOCUMENT 3: Right-to-Refuse Email Templates

    High

    H1-EMAIL: Compliance Readiness Score Has No Scoring Methodology
  • What's wrong: Template 2 (line 72): "your environment received a Compliance Readiness Score of [X]/100" and (line 74): "Netier requires a minimum score of [X]/100 before an environment can be transitioned."
  • Why it matters: An account manager using this template needs to fill in a score, but there is no documented methodology for calculating it. What controls contribute? How are they weighted? What constitutes 60/100 vs 80/100? Without a scoring rubric, two AMs assessing similar environments will produce different scores. A client who disputes the score has no reference to examine. A court or regulator examining the walk-away decision would look for a documented, repeatable methodology.
  • Exact fix: Create a companion document: "Netier Compliance Readiness Scorecard" with:
  • - Scored domains (Identity, Patching, Endpoint, Backup, Network, Compliance — 6 domains)

    - Per-domain assessment criteria (e.g., "MFA enforced on all users = 15 points, MFA on admins only = 8 points, no MFA = 0 points")

    - Minimum passing score and per-domain minimums

    - Reference in Template 2: "Refer to the Compliance Readiness Scorecard (attached) for the detailed assessment."


    H2-EMAIL: Template 1 Inconsistently Mixes Pre-Written and Placeholder Content
  • What's wrong: The Identity section (lines 24-27) contains fully written findings ("Multi-factor authentication is not enforced on privileged administrator accounts"). The Patching section (lines 29-31) uses [X] placeholders ("We identified [X] critical CVEs"). The Endpoint section (lines 33-35) mixes both ("approximately [X]% of endpoints have no active protection agent").
  • Why it matters: An account manager will either: (a) send the template with the Identity section as-is (making it look like every client has the same findings), or (b) assume everything needs rewriting (negating the value of pre-written content). The template should consistently use one approach.
  • Exact fix: Convert ALL specific findings to parameterised templates:
  • IDENTITY AND ACCESS MANAGEMENT
    
  • [MFA STATUS: e.g., "Multi-factor authentication is not enforced on privileged
  • administrator accounts" OR "MFA is enforced for administrators but not standard

    users" OR "MFA is enforced universally — no finding."]

  • [SERVICE ACCOUNTS: e.g., "[X] service accounts with domain admin privileges have
  • passwords that have not been rotated in over [X] months."]

  • [CA STATUS: e.g., "Conditional Access policies are either absent or not enforced."]
  • Mark each placeholder with square brackets AND include example text so the AM has a model.


    Medium

    M1-EMAIL: Seat Count Thresholds Not Documented in Commercial Model
  • What's wrong: Template 2 (lines 117-124) includes conditional paragraphs for 50+ seats, 20-49 seats, and <20 seats, referencing "full Co-Investment" and "partial Co-Investment." These thresholds don't appear in the SDD or commercial model documentation.
  • Why it matters: If the thresholds are inaccurate or change, an AM may send an incorrect commercial commitment in writing. A client quoting "you said I qualify for full co-investment at 50 seats" creates a contractual issue.
  • Exact fix: Either: (a) document the seat count thresholds in the commercial model / SDD with explicit co-investment percentages, and cross-reference from the template, or (b) replace specific thresholds with: "[TIER: Insert co-investment tier per the current Amortized Transformation pricing model. Check with Service Delivery Manager before quoting.]"

  • M2-EMAIL: SOCI Act Citation Incomplete
  • What's wrong: Templates 1 and 3 reference "Security of Critical Infrastructure Act 2018 (SOCI)" without noting the substantial amendments, particularly the Security Legislation Amendment (Critical Infrastructure Protection) Act 2022 which expanded the regime significantly.
  • Why it matters: A client or their lawyer reading "SOCI Act 2018" may look at the original Act and miss the 2022 amendments that introduced the reporting obligations referenced in the email. The citation should be unambiguous.
  • Exact fix: Change all references to: "Security of Critical Infrastructure Act 2018 (Cth) (as amended)"

  • Low

    L1-EMAIL: No Template 4 for Phase 2 Transition
  • What's wrong: The template set covers Discovery Findings (Template 1), Remediation Proposal (Template 2), and Walk-Away (Template 3). There is no template for the positive path: "Phase 1 Complete — Welcome to Managed Service."
  • Why it matters: An AM completing a successful Phase 1 remediation has no templated communication for transitioning the client into Phase 2. This is the most commercially important email in the sequence — it confirms the relationship and sets managed service expectations.
  • Exact fix: Create Template 4 — Phase 2 Transition Confirmation, covering: Phase 1 completion summary, updated Compliance Readiness Score, service tier confirmed, key contacts, SLA summary, first monthly review date.


  • DOCUMENT 4: ConnectWise Manage SLA Workflows & Configuration Guide

    Critical (must fix before production deployment)

    C1-CW: Workflow Rules That Require API Described as Native CW Rules
  • What's wrong: WF-009 (line 436-440) "PIR Auto-Create" says to create a child ticket when an incident is resolved. WF-010 (line 449-453) "Phishing Fail Remedial" creates a child ticket. WF-013 (line 488-492) "Backup Recovery Auto-Close" triggers on note content containing "BACKUP_SUCCESS_CONFIRMED".
  • Why it matters: CW Manage workflow rules CANNOT create new tickets, create child tickets, or perform substring matching on internal note content. These three rules as described are UNIMPLEMENTABLE in native CW Manage. An engineer following this guide will configure WF-001 through WF-008 successfully, then hit a wall at WF-009 and waste hours trying to find a feature that doesn't exist. This is the single most dangerous finding in the entire document set.
  • Exact fix: For each rule, explicitly state the implementation method:
  • ### 4.9 Post-Incident Review Auto-Creation
    
    
    FieldValue
    Implementation MethodCW Manage REST API (via Rewst, Power Automate, or custom middleware)
    NOT a native CW workflow ruleCW workflow rules cannot create tickets.
    API Implementation:
  • Configure a CW Manage callback (Setup > Integrations > Callbacks) that fires
  • on status change to Resolved for tickets matching Type = Incident Response.

  • Callback hits middleware endpoint (Rewst workflow, Azure Function, or custom API).
  • Middleware logic:
  • - Verify parent ticket type/subtype matches incident categories

    - POST to CW REST API: /v4_6_release/apis/3.0/service/tickets

    - Set parentTicketId to link as child

    - Copy custom fields from parent

    - POST internal note on parent with child ticket reference

    Apply the same pattern to WF-010 and WF-013. For WF-013, the callback should trigger on internal note creation, with the middleware checking note content for the success string.


    C2-CW: SLA Definition 3.9 (VulnMgmt Standard) Has No Fixed Resolution Hours
  • What's wrong: Section 3.9 (line 278): "Resolution Hours: Based on CVSS (see Workflow Rule 4.6)"
  • Why it matters: CW Manage SLA definitions require a fixed numeric value for Resolution Hours. You cannot set an SLA to "varies by custom field." This SLA is literally unconfigurable as written. The CVSS-based priority assignment (WF-006) can SET the priority, and you can have different SLA targets per priority within the SLA, but the SLA definition itself must exist with fixed values.
  • Exact fix: Replace SLA 3.9 with per-priority targets within the SLA:
  • ### 3.9 SLA: Vulnerability Scan - Standard
    
    
    FieldValue
    SLA NameVulnMgmt - Standard
    CalendarBusiness Hours
    Applies ToType = Vulnerability Management, SubType = External Scan Finding, Internal Scan Finding
    Priority (set by WF-006)ResponseResolution
    P1 (CVSS 9.0-10.0)0.25h48h
    P2 (CVSS 7.0-8.9)0.5h336h (14d)
    P3 (CVSS 4.0-6.9)2h720h (30d)
    P4 (CVSS 0.1-3.9)4h2160h (90d)

    Configure these as Priority-level entries within the single SLA definition in

    Setup > SLA > [VulnMgmt - Standard] > Priority tab.


    C3-CW: CVSS 9.0+ Maps to P1 (WF-006) but Critical Patching SLA Maps to P2
  • What's wrong: WF-006 (line 396) maps CVSS 9.0-10.0 to P1. But the SLA-to-Priority Mapping table (line 148) maps "Critical/High CVE Patching (48h)" to P2.
  • Why it matters: A CVSS 9.8 vulnerability arrives. WF-006 sets it to P1. The SLA mapping table says critical patching should be P2. The SLA definition (3.1) says "Priority Override: P1, P2." So the P1 ticket gets the "Security - Critical 48h" SLA with 0.5h response — but the Priority Matrix says P1 response should be 15 minutes (0.25h), not 30 minutes (0.5h). Three systems disagree on what priority and SLA a critical vulnerability gets.
  • Exact fix: Decide one truth:
  • - Option A (recommended): Critical patching = P1 everywhere. Update line 148 from "P2 - High" to "P1 - Critical". Update SLA 3.1 to include P1-specific response target of 0.25h.

    - Option B: CVSS 9.0+ = P2 (not P1). Update WF-006 to map CVSS 9.0-10.0 to P2 instead of P1.

    Whichever option is chosen, the Priority Matrix, SLA Mapping Table, WF-006, and SLA Definitions must all agree. Currently they don't.


    C4-CW: No SLA Pause Configuration for Awaiting Statuses
  • What's wrong: The document defines "Awaiting Vendor" (line 49) and "Awaiting Client" (line 50) statuses but never specifies that these should pause the SLA clock.
  • Why it matters: In CW Manage, you configure SLA pause behavior per status: Service Board > Status > "Do Not Count Towards SLA" checkbox. Without this, the SLA clock runs while a ticket sits in "Awaiting Vendor" for 3 weeks. You will breach SLA on tickets where Netier has done everything right but the vendor hasn't responded. Your SLA compliance reports will be meaningless — full of false breaches.
  • Exact fix: Add to Section 1.2 (Status Workflow table), a new column "Pauses SLA":
  • | Status Name | Status Type | Pauses SLA | Notes |
    

    |---|---|---|---|

    | Awaiting Vendor | In Progress | YES | Clock pauses while waiting on external vendor |

    | Awaiting Client | In Progress | YES | Clock pauses while waiting on client action/approval |

    | All other statuses | ... | NO | SLA clock runs |

    Add implementation note: "Configure under Setup > Service Board > Security Operations > Status > [Status Name] > check 'Do Not Count Towards SLA' for Awaiting Vendor and Awaiting Client."


    C5-CW: SAT Platform Misalignment in Integration Diagram
  • What's wrong: Section 7.6 Integration Architecture diagram (line 747): incorrect SAT platform listed as an integration source.
  • Why it matters: Netier uses uSecure for security awareness training. An engineer building integrations from this diagram needs the correct platform reference. A client seeing this document might question whether Netier knows their own tool stack.
  • Exact fix: Updated to "uSecure" on line 747. Integration architecture text updated to reference uSecure's API/webhook capabilities.

  • High

    H1-CW: WF-008 Requires DateTime Arithmetic CW Cannot Perform
  • What's wrong: WF-008 (line 427): "Set Custom Field Statutory Deadline = [calculated datetime]"
  • Why it matters: CW Manage workflow rules cannot perform datetime arithmetic (e.g., "ticket creation time + 12 hours"). They can set static values, copy fields, send emails, and change statuses — but not calculate dates. This means the SOCI 12h and NDB 72h statutory deadlines cannot be auto-populated by a native workflow rule.
  • Exact fix: Change the implementation method:
  • Implementation: CW Manage callback -> middleware (Rewst/Power Automate/custom).
    

    Middleware calculates: Statutory_Deadline = ticket.dateEntered + 12h (SOCI) or + 72h (NDB).

    PATCH /v4_6_release/apis/3.0/service/tickets/{id} with customFields update.

    Alternative (simpler): Add the calculation to the Internal Note text instead:

    "STATUTORY REPORTING DEADLINE: SOCI = [ticket creation + 12h AEST].

    NDB = [ticket creation + 72h AEST]. VERIFY AND SET MANUALLY."

    Then require the triaging analyst to manually set the custom field.


    H2-CW: Slack Webhooks Not Native to CW Manage
  • What's wrong: WF-001 (line 325), WF-003-005 (lines 357-383), WF-007-008 (lines 412-427) all specify "Send Slack webhook" as a workflow rule action.
  • Why it matters: CW Manage workflow rules can send emails and trigger callbacks, but they cannot send Slack webhooks natively. An engineer will look for a Slack action in the workflow rule builder and not find it.
  • Exact fix: Add a global note at the top of Section 4:
  • SLACK INTEGRATION NOTE: CW Manage workflow rules do not natively support
    

    Slack messaging. All Slack notifications in the rules below require one of:

    (a) CW Manage Callbacks -> middleware -> Slack Incoming Webhook

    (b) A Slack integration platform (e.g., Rewst, Gradient MSP)

    (c) Email-to-Slack channel integration (each Slack channel has an email address

    that can be targeted as an email action recipient in workflow rules)

    Option (c) is the simplest and requires no middleware: in Slack, create an email

    address for #security-alerts (Channel Settings > Integrations > Send emails to

    this channel). Use this email as the notification recipient in CW workflow rules.


    H3-CW: P5 Has No Maximum Resolution Target
  • What's wrong: Priority Matrix (line 138): P5 Resolution = "Per Schedule" and "N/A" for SLA Update.
  • Why it matters: P5 tickets (Document Reviews, DRP Test Due) have no resolution SLA. They can sit open indefinitely with zero escalation. After 18 months, you'll have 200 stale P5 tickets clogging the board with no mechanism to surface them. SLA compliance reports will show 100% compliance for P5 by default (nothing to breach), masking a backlog.
  • Exact fix: Set a maximum resolution for P5:
  • | P5 - Scheduled | 5 | Green | Next Business Day | N/A | 30 calendar days | Business Hours |
    

    Add note: "P5 resolution target of 30 days provides a backstop. For recurring items with longer cadence (e.g., annual DRP test), the actual due date is set by the recurring ticket schedule. The 30-day SLA serves as a maximum time-in-queue."


    Medium

    M1-CW: GRC Team Referenced — May Not Exist
  • What's wrong: WF-002 (line 343) assigns Compliance/Documentation tickets to "Team: GRC (Governance, Risk, Compliance)."
  • Why it matters: Netier is an MSP with ~30 clients and a team structure that may not include a dedicated GRC function. If this team doesn't exist in CW Manage, the workflow rule will fail silently (unrouted ticket) or error on save.
  • Exact fix: Verify the team name matches CW Manage's actual team structure. If no GRC team exists, route to "Security Operations" with a note: "Assign to compliance-responsible team member. Create a CW Manage team 'GRC' when headcount supports it."

  • M2-CW: "Priority Override" Is Not a CW Manage Field
  • What's wrong: SLA definitions (Sections 3.1-3.10) include a "Priority Override" field (e.g., line 196: "Priority Override: P1, P2").
  • Why it matters: "Priority Override" is not a field in CW Manage SLA configuration. SLAs are matched by board, type, subtype, and company — not by priority. Within an SLA, you define separate response/resolution targets per priority level. This non-standard terminology will confuse a CW admin looking for a "Priority Override" setting.
  • Exact fix: Remove the "Priority Override" row from all SLA definitions. Instead, within each SLA, add a "Priority Targets" sub-table showing response/plan/resolution hours per priority level, matching CW Manage's actual SLA Priority tab.

  • Low

    L1-CW: "Firmware Critical" at P3/14d Seems Slow
  • What's wrong: Appendix B (line 830): "Firmware Critical" at P3 with a 14-day SLA.
  • Why it matters: Labeling something "Critical" but giving it a 14-day window and P3 priority creates cognitive dissonance. An auditor or client reading "Critical firmware patch — 14 days" may question whether Netier takes firmware seriously.
  • Exact fix: Rename to "Firmware / Driver — High Priority" or align with the CVSS-based naming to avoid confusion with "P1 - Critical."


  • 3. LINE-BY-LINE CORRECTIONS TABLE

    SOP — Identity, Conditional Access & Cloud Workspace Security

    Section/LineCurrent TextCorrected TextReason
    Line 73-74Password = (New-Guid).Guid + "!Aa1" # Replace with securely generated passwordPassword = -join ((48..57) + (65..90) + (97..122) + (33,35,36,37,38,42,64)Get-Random -Count 24ForEach-Object { [char]$_ })GUID is not cryptographically suitable for passwords
    Line 87New-MgDirectoryRoleMember -DirectoryRoleId $roleId -DirectoryObjectId $user.IdNew-MgRoleManagementDirectoryRoleAssignment -PrincipalId $user.Id -RoleDefinitionId $roleDefinition.Id -DirectoryScopeId "/"Deprecated cmdlet; use role management API
    Line 86$roleId = (Get-MgDirectoryRole -Filter "displayName eq 'Global Administrator'").Id$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Global Administrator'"Must also update the lookup cmdlet to match
    Line 339"cc15fd57-2c6c-4117-a88c-83b1d56b4bbe" # Teams"cc15fd57-2c6c-4117-a88c-83b1d56b4bbe" # Teams (NOTE: EXO+SPO targets already cover Teams data; this targets Teams-specific features)Clarify coverage overlap
    Line 386-387Microsoft Authenticator: Enable (as fallback during transition, plan to disable push/OTP once FIDO2/WHfB adoption is complete)Microsoft Authenticator: Enable (required for Phase A — see Deployment Phases below). Disable push/OTP only after >95% of users have registered FIDO2/WHfB and the CA policy is updated to Phase B.Original text contradicts the CA policy's auth strength requirement
    Line 398-399Choose Phishing-resistant MFA (built-in strength that includes FIDO2 and Windows Hello) / Enable policy: Report-onlyAdd deployment phases section (see C1-SOP fix above). Phase A uses "Require multifactor authentication", Phase B upgrades to "Phishing-resistant MFA"Prevents mass lockout
    Line 1024Do not rewrite URLs, do checks via Safe Links API only: No (rewrite for visibility)Add note: (Review at next quarterly cycle — Microsoft is deprecating URL rewriting for modern clients)Future-proofing
    Line 1160### Conditional Access Policies (6 policies total)### Conditional Access Policies (7 policies total)7 policies are defined, not 6
    Lines 598-614User Risk Policy PowerShell — no SessionControls blockAdd SessionControls block with FrequencyInterval = "everyTime" (see H2-SOP fix)Ensures existing sessions are revoked

    IS18 Compliance Mapping

    Section/LineCurrent TextCorrected TextReason
    Line 36Prometheus/Grafana; Uptime Kuma; NinjaOne; Sophos MDR; DefenderPrometheus/Grafana; Uptime Kuma; NinjaOne (SNMP/agent monitoring); Sophos MDR; DefenderMonitoring tools aligned to production stack
    Line 50PIR conducted within 5 business days of incident closurePIR conducted within 10 business days (14 calendar days) of incident closureAlign with CW SLA "PIR - 14 Day" (336 hours)
    Line 28LAPS: 24hr password rotation on local adminLAPS: 14-day password rotation on local admin (1-hour post-use reset)Align with SOP LAPS configuration (14-day cycle, 1hr post-auth)
    Line 30Automated access reviews for privileged roles (monthly)Automated access reviews for privileged roles (monthly, Enterprise tier; manual quarterly, Professional/Essential)Tier-qualify the claim

    Right-to-Refuse Email Templates

    Section/LineCurrent TextCorrected TextReason
    Lines 24-27Fully pre-written Identity findings with no placeholdersConvert to parameterised format: [MFA STATUS: e.g., "Multi-factor authentication is not enforced on privileged administrator accounts"]Consistency with other sections that use [X] placeholders
    Line 45Security of Critical Infrastructure Act 2018 (SOCI)Security of Critical Infrastructure Act 2018 (Cth) (as amended)Captures 2022 amendments that introduced reporting obligations
    Line 161Security of Critical Infrastructure Act 2018 (repeated in Template 3)Security of Critical Infrastructure Act 2018 (Cth) (as amended)Same as above
    Line 72Compliance Readiness Score of [X]/100Compliance Readiness Score of [X]/100 (see attached Compliance Readiness Scorecard for detailed methodology)References the scorecard that needs to be created
    Lines 117-124Specific seat count thresholds (50+, 20-49, <20)[CO-INVESTMENT TIER: Refer to the current Amortized Transformation pricing model for co-investment eligibility based on seat count. Confirm tier with Service Delivery Manager before sending.]Seat thresholds not documented in commercial model

    ConnectWise Manage SLA Workflows

    Section/LineCurrent TextCorrected TextReason
    Line 278Resolution HoursBased on CVSS (see Workflow Rule 4.6)Replace with per-priority target table (see C2-CW fix)CW SLA requires fixed numeric resolution hours
    Line 148Critical/High CVE Patching (48h)P2 - HighCritical/High CVE Patching (48h)P1 - Critical (if choosing Option A)Align with WF-006 CVSS 9.0+ = P1 mapping
    Line 3969.0-10.0 (Critical)P1 - Critical48 hoursIf choosing Option B: change to 9.0-10.0 (Critical)P2 - High48 hoursMust align WF-006 with SLA mapping table
    Lines 49-50Awaiting Vendor / Awaiting Client — no SLA pause indicatorAdd column: Pauses SLA: YESClock must pause during external wait
    Line 196 (and all SLAs)Priority OverrideP1, P2Remove this row. Replace with a priority-level targets sub-table within each SLA"Priority Override" is not a CW Manage field
    Line 325If Priority = P1: Send Slack webhook to #security-alertsIf Priority = P1: Send Email to security-alerts-slack@netier.slack.com (Slack email integration) OR add middleware noteSlack webhooks not native to CW workflow rules
    Line 436-440WF-009 as workflow rule with "Create Child Ticket" actionRewrite as API/middleware implementation with callback trigger (see C1-CW fix)CW workflow rules cannot create tickets
    Line 449-453WF-010 as workflow rule with "Create Child Ticket" actionSame: rewrite as API/middleware implementationSame reason
    Line 488-492WF-013 triggers on Internal Note containing "BACKUP_SUCCESS_CONFIRMED"Rewrite as callback-triggered middleware that parses note contentCW rules can't do substring matching on notes
    Line 427Set Custom Field Statutory Deadline = [calculated datetime]Document as middleware implementation: callback -> calculate dateEntered + 12h/72h -> PATCH custom fieldCW rules can't do datetime arithmetic
    Line 747(SAT platform reference)uSecureSAT platform aligned to uSecure
    Line 138P5 - Scheduled...Per ScheduleBusiness HoursP5 - Scheduled...30 calendar daysBusiness HoursPrevents stale P5 tickets with no backstop

    4. MISSING CONTENT

    DocumentMissing Section/ContentWhy It's NeededPriority
    SOPService Account & App Registration Handling — No procedure for excluding or securing headless accounts from MFA CA policyEvery production tenant has service accounts. Without guidance, engineers will create insecure broad exclusions or break LOB apps.P1
    SOPPhased MFA Deployment Plan — No transition strategy from Authenticator to phishing-resistant MFAThe CA policy as written locks out users who haven't registered FIDO2/WHfB keys yet. A two-phase approach is mandatory.P1
    SOPEntra ID Access Reviews Configuration — IS18 mapping claims automated access reviews but no SOP existsIS18 Family 5 (Access Control) evidence gap. Assessors will ask for it.P2
    SOPGuest/External User CA Handling — CA policies target "All users" but no guidance for B2B guestsGuest access to SharePoint/Teams will either be blocked (breaking collaboration) or exempted without compensating controls.P2
    CW SLASLA Pause Configuration — No documentation of which statuses pause the SLA clockWithout this, SLA reports are unreliable. Awaiting Vendor/Client tickets will show false breaches.P1
    CW SLAMiddleware Architecture Specification — WF-008/009/010/013 require API middleware but no middleware spec existsEngineers can't implement 4 of the 13 workflow rules without knowing what middleware platform to use and how.P1
    CW SLACompany-to-Organisation Mapping Table — Integration section references org matching but no mapping table existsNinjaOne org names rarely match CW Manage company names exactly. Without a mapping table, tickets land against wrong companies.P2
    CW SLASLA Priority-Level Targets — SLA definitions have single response/resolution values, not per-priorityCW Manage SLAs define targets per priority level. Single-value definitions force all priorities to the same target.P2
    EmailCompliance Readiness Scorecard — Template 2 references a score with no scoring methodologyAMs can't produce the score referenced in the email. The commercial conversation stalls.P1
    EmailTemplate 4 — Phase 2 Transition Confirmation — Positive-path email after successful remediationThe most commercially important email in the sequence doesn't exist. AMs have templates for bad news but not good news.P2
    IS18QGISCF-to-M365 Sensitivity Label Mapping Table — Recommendation 3 identifies the need but doesn't deliver itIS18 requires QGISCF alignment, not just generic sensitivity labels. The gap is identified but not closed.P2
    IS18Queensland Privacy Act (IPP) vs Commonwealth Privacy Act (APP) Comparison — Recommendation 5 identifies this but no content existsQLD engagements require IPP compliance. The document says "supplement" but doesn't provide the supplementary content.P3
    Cross-docTCF Section 1.1 — LAPS/LSA Terminology Fix — TCF line 16 says "LAPS (Local Security Authority Subsystem Service)"LAPS = Local Administrator Password Solution. LSA/LSASS = Local Security Authority Subsystem Service. These are completely different technologies. The TCF conflates them. An engineer reading this will misconfigure one or both.P1

    5. CROSS-DOCUMENT INCONSISTENCIES

    #ItemDoc A SaysDoc B SaysCorrect ValueStatus
    X-1LAPS Password RotationSOP: 14-day rotationIS18: 24-hour rotation14 daysRESOLVED 2026-03-26
    X-2PIR Completion TimelineCW SLA: 14 calendar daysIS18: 5 business days14 calendar daysRESOLVED 2026-03-26
    X-3Security Awareness ToolTool stack: uSecureCW SLA diagram: misaligneduSecureRESOLVED 2026-03-26
    X-4CA Policy CountSOP heading: 6 policiesSOP body: 7 policies7 policiesRESOLVED 2026-03-26
    X-5Critical Patching PrioritySLA Mapping: P2WF-006: CVSS 9.0+ = P1Intentional distinction (scanner CVSS 9.0+ = P1, patch failure = P2; both 48h SLA)RESOLVED 2026-03-26
    X-6Monitoring ToolsTool stack: NinjaOne/Sophos MDRIS18: stale referenceAligned to NinjaOneRESOLVED 2026-03-26
    X-7TCF LAPS DefinitionTCF: "Local Security Authority..."SOP: "Local Administrator Password Solution"Local Administrator Password SolutionRESOLVED 2026-03-26

    6. PRODUCTION-READINESS PUNCH LIST

    All Critical and High findings combined into a single prioritised checklist. Fix these and deploy.

    [x] P1-CRITICAL: [CW SLA, WF-009/010/013] — Rewrite as API/middleware implementations
    

    with callback triggers, not native CW workflow rules. Specify middleware platform

    (Rewst/Power Automate/custom). — Effort: L

    RESOLVED 2026-03-26: WF-009, WF-010, WF-013 rewritten with Implementation Method

    rows, middleware specs, and API endpoint details. WF-013 callback note added.

    [x] P1-CRITICAL: [CW SLA, SLA 3.9] — Replace "Based on CVSS" with per-priority

    resolution targets (P1=48h, P2=14d, P3=30d, P4=90d) as a CW SLA priority table.

    — Effort: S

    RESOLVED 2026-03-26: Per-priority targets table added with Response/Plan/Resolution

    columns and CW SLA configuration note.

    [x] P1-CRITICAL: [CW SLA, Section 2.2 vs WF-006] — Resolve P1/P2 conflict for

    critical patching. Update EITHER mapping table to P1 OR WF-006 to P2. Ensure

    Priority Matrix, SLA Mapping, WF-006, and SLA definitions all agree. — Effort: S

    RESOLVED 2026-03-26: Clarification note already present in CW SLA (line 149)

    documenting that scanner-detected CVSS 9.0+ = P1, NinjaOne patch failure = P2,

    both with 48h resolution SLA. No conflict — intentional distinction.

    [x] P1-CRITICAL: [CW SLA, Section 1.2] — Add "Pauses SLA: YES" for Awaiting Vendor

    and Awaiting Client statuses. Document CW configuration path. — Effort: S

    RESOLVED 2026-03-26: SLA pause documented in CW workflows.

    [x] P1-CRITICAL: [CW SLA, Section 7.6] — Align SAT platform to uSecure in

    integration architecture diagram. — Effort: S

    RESOLVED 2026-03-26: SAT platform aligned to uSecure across all documents.

    [x] P1-CRITICAL: [SOP, MFA Policy] — Add two-phase deployment plan (Phase A:

    standard MFA, Phase B: phishing-resistant after FIDO2 rollout). Without this,

    enforcement locks out all users. — Effort: M

    RESOLVED 2026-03-26: Two-phase deployment added (Phase A transitional, Phase B hardened).

    [x] P1-CRITICAL: [SOP, Break Glass PowerShell] — Replace GUID-based password

    generation with cryptographically secure method. — Effort: S

    RESOLVED 2026-03-26: Replaced with character-array cryptographic generation.

    [x] P1-CRITICAL: [SOP, Master Checklist] — Change "6 policies total" to "7 policies

    total". — Effort: S

    RESOLVED 2026-03-26: Corrected to "7 policies total".

    [x] P1-CRITICAL: [Cross-doc] — Align LAPS rotation: change IS18 mapping from "24hr"

    to "14-day rotation, 1-hour post-authentication reset". — Effort: S

    RESOLVED 2026-03-26: LAPS terminology corrected across baselines and IS18.

    [x] P1-CRITICAL: [Cross-doc] — Align PIR timeline: change IS18 mapping from

    "5 business days" to "10 business days (14 calendar days)". — Effort: S

    RESOLVED 2026-03-26: PIR timeline aligned to 14 calendar days.

    [x] P2-HIGH: [SOP, Break Glass PowerShell] — Replace deprecated

    New-MgDirectoryRoleMember with New-MgRoleManagementDirectoryRoleAssignment.

    — Effort: S

    RESOLVED 2026-03-26: Updated to Graph SDK v2+ role management API.

    [x] P2-HIGH: [SOP, User Risk Policy] — Add SessionControls with

    FrequencyInterval = "everyTime" to force re-authentication for existing

    sessions. — Effort: S

    RESOLVED 2026-03-26: SessionControls added to both PowerShell and portal instructions.

    [x] P2-HIGH: [SOP] — Add Service Account & App Registration handling section with

    Managed Identity / Workload Identity / exclusion group guidance. — Effort: M

    RESOLVED 2026-03-26: Full section added with 3-tier approach and Service Account Register.

    [x] P2-HIGH: [CW SLA, WF-008] — Document datetime arithmetic as middleware

    implementation, not native CW action. Add manual fallback procedure. — Effort: S

    RESOLVED 2026-03-26: Middleware implementation note added with callback/PATCH steps

    and manual fallback procedure for analysts.

    [x] P2-HIGH: [CW SLA, Slack] — Add global note explaining Slack integration requires

    middleware or email-to-channel bridge. Provide email-to-Slack setup as simplest

    option. — Effort: S

    RESOLVED 2026-03-26: Global Slack Integration Note moved to Section 4 heading with

    3 options (email-to-Slack, middleware, platform) and recommendation.

    [x] P2-HIGH: [CW SLA, P5 Resolution] — Add 30-day maximum resolution target for

    P5 tickets to prevent indefinite stale queue. — Effort: S

    RESOLVED 2026-03-26: P5 already has 90-day max with auto-escalation to P4.

    More conservative than the 30-day suggestion — confirmed intentional.

    [x] P2-HIGH: [IS18, Line 36] — Verify monitoring tool deployment status. Align

    compliance mapping to production tool stack. — Effort: S

    RESOLVED 2026-03-26: Monitoring tools aligned to NinjaOne/Sophos MDR in compliance mapping.

    [x] P2-HIGH: [IS18, Line 50] — Update PIR timeline (see cross-doc fix above).

    — Effort: S

    RESOLVED 2026-03-26: Aligned to 14 calendar days.

    [x] P2-HIGH: [Email, Template 2] — Create Compliance Readiness Scorecard with

    scoring methodology (6 domains, weighted criteria, minimum thresholds).

    — Effort: L

    RESOLVED 2026-03-26: Created Templates/Compliance_Readiness_Scorecard.md

    (NET-TPL-CRS-001) with 6 domains, 100-point scale, per-domain minimums,

    4-tier interpretation (GREEN/AMBER/RED/BLACK), and assessment procedure.

    [x] P2-HIGH: [Email, Template 1] — Standardise all finding sections to parameterised

    format with example text. Remove pre-written findings that look client-specific.

    — Effort: M

    RESOLVED 2026-03-26: All 4 finding sections (Identity, Patch, Endpoint, Backup)

    converted to parameterised format with [BRACKETS] and example alternatives.

    Effort key: S = <1 hour, M = 1-4 hours, L = 4+ hours Original punch list: 10 Critical + 10 High = 20 items Resolved (2026-03-26): 10 Critical + 10 High = 20/20 items (all marked
    [x] above) Remaining: 0 Status: ALL PUNCH LIST ITEMS RESOLVED

    7. NEXT ITERATION RECOMMENDATIONS

    7.1 Technical Configuration Framework — SOPs Needed COMPLETED (2026-03-26)

    All 9 remaining SOPs were written on 2026-03-26, completing full coverage of the Technical Configuration Framework. Each SOP follows the established template (Document ID, Table of Contents, Prerequisites, Step-by-Step, PowerShell/CLI, Verification Checks, Rollback, Master Checklist, Document History).

    TCF SectionDocument IDSOP FileStatus
    1.0 Infrastructure & ComputeNET-SOP-INFRA-001SOPs/SOP_Infrastructure_Compute.mdCOMPLETE
    2.0 Identity & Cloud WorkspacesNET-SOP-IDM-001SOPs/SOP_Identity_Cloud_Workspaces.mdCOMPLETE (6 fixes applied)
    3.0 Endpoint Protection & ControlNET-SOP-EP-001SOPs/SOP_Endpoint_Protection.mdCOMPLETE
    4.0 Vulnerability ManagementNET-SOP-VULN-001SOPs/SOP_Vulnerability_Management.mdCOMPLETE
    5.0 Security Awareness & TrainingNET-SOP-SAT-001SOPs/SOP_Security_Awareness.mdCOMPLETE (incl. CyberCred)
    6.0 Endpoint Management (MDM)NET-SOP-MDM-001SOPs/SOP_Endpoint_Management_MDM.mdCOMPLETE
    7.0 Networking & PerimeterNET-SOP-NET-001SOPs/SOP_Networking_Perimeter.mdCOMPLETE
    8.0 Backup & Disaster RecoveryNET-SOP-BDR-001SOPs/SOP_Backup_DR.mdCOMPLETE
    9.0 Remote Monitoring & ManagementNET-SOP-RMM-001SOPs/SOP_RMM_NinjaOne.mdCOMPLETE
    10.0 Knowledge ManagementNET-SOP-KM-001SOPs/SOP_Knowledge_Management.mdCOMPLETE

    7.2 IS18 Evidence Artefacts Needed

    For the next annual IS18 return, Netier will need to produce:

  • QGISCF-to-M365 Sensitivity Label Mapping — A table showing how QGISCF classifications map to M365 sensitivity labels, with DLP policies per classification level.
  • QGCISO Notification Playbook — An addendum to the IRP with specific QGCISO contact details, notification templates, and escalation timelines for IS18 categories.
  • Physical Security Assessment Template — A standardised checklist for IS18-aligned physical security assessment of QLD client premises during onboarding.
  • Access Review Evidence Pack — Screenshots or exports from Entra Access Reviews showing monthly privileged role reviews and quarterly all-staff reviews.
  • Queensland IPP vs Commonwealth APP Comparison — A one-page table showing where Information Privacy Principles differ from Australian Privacy Principles and how Netier's controls address both.
  • Cryptographic Standards Reference — Map all encryption implementations to ASD-approved algorithms (ISM controls 0471-0499).
  • Information Transfer Policy — Extend communications security beyond email to cover secure file transfer, USB control, and removable media handling.
  • 7.3 CW Manage Implementation Scripts

    The following PowerShell/API scripts should be built to automate manual configuration from the CW SLA document:

  • Board & Custom Field Provisioner — Script to create the Security Operations board, all statuses, types/subtypes/items, and custom fields via CW REST API. Eliminates 2-3 hours of manual clicking per environment.
  • Priority: HIGH — build before first deployment
    

    Inputs: CW Manage API credentials, tenant identifier

    Output: Fully configured board matching Section 1 specification

  • SLA Definition Importer — Script to create all 10 SLA definitions with correct calendars and priority-level targets via API.
  • Priority: HIGH — SLA configuration is error-prone manually
    
  • Integration Middleware Core — The middleware that WF-008/009/010/013 require:
  • - Callback listener for CW Manage events

    - Child ticket creator (PIR, remedial training)

    - Datetime calculator (statutory deadlines)

    - Note content parser (backup success detection)

    - CISA KEV cross-reference (for vuln scan integration)

    Priority: CRITICAL — 4 workflow rules are non-functional without this
    

    Recommended platform: Rewst (purpose-built for MSP automation)

    Alternative: Azure Functions + CW Manage SDK

  • Deduplication Engine — For NinjaOne/Tenable/Veeam integrations: check existing open tickets by CVE/Alert ID before creating duplicates.
  • Priority: HIGH — without dedup, the board floods with duplicate tickets
    

    7.4 Additional Email Templates & Commercial Artefacts

    PriorityTemplatePurpose
    P1Compliance Readiness ScorecardScoring methodology for the score referenced in Template 2. 6 domains, weighted criteria, Excel or PDF format.
    P1Template 4 — Phase 2 Transition ConfirmationPositive-path email: Phase 1 complete, managed service beginning, SLA summary, key contacts.
    P2Template 5 — Quarterly Business Review (QBR) FindingsStructured email summarising quarterly security metrics: SLA compliance, patch posture, incidents, training completion.
    P2Template 6 — Annual Compliance SummaryYear-end email to client with compliance posture summary for board/exec reporting.
    P3Template 7 — Incident Notification (Client-Facing)Structured communication during active incidents: what happened, impact, containment status, next update time.
    P3SDD Addendum — Right to Refuse ClauseStandard contract language for the Right to Refuse clause, for legal review and inclusion in service agreements.

    7.5 Automated Drift Detection

    These documents will drift out of date. Build the following to prevent it:

  • Microsoft Entra Change Monitor — Monthly automated check of CA policy state against the SOP baseline. Use Microsoft Graph API to export all CA policies, compare against the documented baseline, flag deviations. Schedule as a CW recurring ticket or NinjaOne scripted task.
  • CW Board Configuration Validator — Quarterly script that reads the Security Operations board configuration (statuses, types, subtypes, SLA definitions, custom fields, workflow rules) and compares against the documented spec. Outputs a drift report.
  • IS18 Control Evidence Freshness Check — For each IS18 control row, track the date of last evidence collection. Flag any control where evidence is older than 6 months. Implement as a Confluence page with automated reminders (per TCF Section 10.1).
  • Document Version & Review Tracker — A single tracking sheet (or CW recurring ticket set) listing all operational documents, their review dates, owners, and next review due dates. The CW SLA document already includes WF-011 for this — ensure it's actually implemented.
  • SLA Definition Reconciliation — Quarterly comparison of SLA definitions in CW Manage against the documented spec, flagging any manual changes made outside the change management process.

  • APPENDIX: Documents Referenced

    DocumentPathLinesOriginal StatusPost-Remediation Status
    SOP: Identity, CA & Cloud WorkspacesSOPs/SOP_Identity_Cloud_Workspaces.md~1,293AMBER — 3 Critical, 3 HighGREEN — All 6 resolved
    IS18 Compliance MappingIS18_Compliance_Mapping.md176GREEN — 0 Critical, 2 HighGREEN — LAPS/PIR/monitoring tools fixed
    Right-to-Refuse Email TemplatesTemplates/Right_to_Refuse_Email_Templates.md~220GREEN — 0 Critical, 2 HighGREEN — All resolved: findings parameterised, SOCI citations fixed, Template 4 added, seat thresholds parameterised
    Compliance Readiness ScorecardTemplates/Compliance_Readiness_Scorecard.md~180N/A (did not exist)NEWNET-TPL-CRS-001: 6-domain, 100-point scoring methodology
    CW Manage SLA WorkflowsConnectWise_SLA_Workflows.md~900RED — 5 Critical, 3 HighGREEN — All resolved: WF-008/009/010/013 middleware specs, SLA 3.9 per-priority, Slack note, firmware rename
    Netier Technical ConfigurationsNetier_Technical_Configurations.md~250Reference — 1 terminology errorGREEN — LAPS corrected, SOP links added to all 10 sections
    Netier Master Baseline FrameworkNetier_Master_Baseline_Framework.md~117Reference — no issuesGREEN — SOP cross-reference table added
    NEW: 9 Additional SOPsSOPs/SOP_*.md (9 files)~7,045N/A (did not exist)NEW — All TCF sections 1.0-10.0 covered
    NEW: 5 Baselines (ISM annotated)baselines/*.md (5 files)~350N/A (not in original scope)GREEN — ~90 ISM control IDs mapped

    ADDENDUM: Remediation Status (2026-03-26)

    The following items from this review have been resolved in the compliance suite update session of 2026-03-26:

    SOP: Identity, CA & Cloud Workspaces (was AMBER — now GREEN)

    IssueSeverityResolution
    C1 — MFA lockout riskCriticalAdded two-phase deployment (Phase A transitional MFA, Phase B phishing-resistant after >95% FIDO2 adoption)
    C2 — Weak GUID-based Break Glass passwordCriticalReplaced with cryptographically secure 30-char generation using character-array approach
    C3 — Policy count mismatch (6 vs 7)CriticalCorrected to "7 policies total" in Master Checklist
    H1 — Deprecated Graph cmdletHighReplaced New-MgDirectoryRoleMember with New-MgRoleManagementDirectoryRoleAssignment
    H2 — Missing session controls on User RiskHighAdded SignInFrequency = "everyTime"` to both PowerShell and portal instructions
    H3 — No service account exclusion guidanceHighAdded Managed Identity / Workload Identity / exclusion group guidance with Service Account Register

    Baseline Documents

  • LAPS terminology corrected (Windows LAPS, not legacy LAPS)
  • PIR timeline alignment verified
  • SAT platform references aligned to uSecure
  • Monitoring tool references aligned to NinjaOne/Sophos MDR
  • SLA pause for Awaiting statuses documented in CW workflows
  • Additional Completions (2026-03-26)

  • 9 new SOPs written (10 total, covering all TCF 1.0-10.0 sections)
  • ISM control IDs (ASD ISM March 2026) annotated across all 5 baselines (~90 control references)
  • CyberCred Security Champions integrated into organisation-context, technology-evidence-inventory, supplementary-controls, and SOP_Security_Awareness
  • README overhauled with full directory structure, Document IDs, and updated Document Relationships diagram
  • Master Baseline Framework updated with SOP cross-reference table
  • Technical Configuration Framework updated with SOP links on all 10 sections
  • Document IDs assigned to 8 previously unidentified files
  • Final Remediation Pass (2026-03-26)

    CW SLA Workflows (all 8 remaining items resolved):
  • WF-009, WF-010, WF-013: Rewritten as API/middleware implementations with callback specs and REST API endpoints
  • WF-008: Datetime arithmetic documented as middleware with manual fallback procedure
  • SLA 3.9: Per-priority resolution targets table added (P1=48h, P2=14d, P3=30d, P4=90d)
  • P1/P2 CVSS conflict: Confirmed as intentional distinction (scanner vs patch failure), documented
  • Slack integration: Global note moved to Section 4 heading with 3 implementation options
  • P5 backstop: Confirmed at 90-day max with auto-escalation (exceeds 30-day suggestion)
  • Firmware Critical: Renamed to "Firmware / Driver — High Priority" in Priority Mapping and Appendix B
  • GRC team: Fallback notes verified on both WF-002 and WF-011
  • Email Templates (all items resolved):
  • Template 1: All 4 finding sections parameterised with [BRACKETS] and example alternatives
  • Template 2: Compliance Readiness Scorecard created (NET-TPL-CRS-001, 6 domains, 100 points)
  • Template 2: Seat count thresholds replaced with parameterised co-investment tier reference
  • Template 4: Phase 2 Transition Confirmation template created (positive-path email)
  • SOCI Act: All references updated to "Security of Critical Infrastructure Act 2018 (Cth) (as amended)"
  • IS18 Compliance Mapping:
  • Access reviews: Tier qualification added (Enterprise = automated, Professional/Essential = manual)
  • QGISCF: M365 Sensitivity Label mapping table created (UNOFFICIAL through PROTECTED)
  • SOP — Identity, CA & Cloud Workspaces (Medium/Low items):
  • Teams App ID: Coverage note added explaining EXO/SPO backend overlap
  • Break Glass .onmicrosoft.com: Guidance softened to document-the-decision approach
  • Safe Links URL rewriting: Microsoft deprecation timeline note added
  • Operational Plans:
  • BCP: Backup tool references aligned to Veeam/AFI.ai (production tools)
  • Final Status

    All 20 Critical and High items: RESOLVED All 7 cross-document inconsistencies: RESOLVED All Medium and Low items from all 4 documents: RESOLVED Missing content items from Section 4: ALL ADDRESSED
    End of Production-Readiness Review
    APPENDIX

    Document Registry

    #Document IDTitleFile
    1NET-FW-MBF-001Netier Master Baseline FrameworkNetier_Master_Baseline_Framework.md
    2NET-FW-TCF-001Netier Technical Configuration FrameworkNetier_Technical_Configurations.md
    3Production-Readiness Review: 4 Operational DeliverablesProduction_Readiness_Review_2026-03-25.md
    4NET-COMP-IS18-001IS18 Compliance Mapping — Netier MSPIS18_Compliance_Mapping.md
    5NET-OPS-CW-001ConnectWise Manage -- Security SLA Workflows & Configuration GuideConnectWise_SLA_Workflows.md
    6NET-EV-ORG-001Organisation Context — Netier Pty Ltdcompliance-evidence/organisation-context.md
    7NET-EV-GAP-001Known Gaps Registercompliance-evidence/known-gaps-register.md
    8NET-TPL-RTR-001Amortized Transformation - Email TemplatesTemplates/Right_to_Refuse_Email_Templates.md
    9NET-TPL-CRS-001Netier Compliance Readiness ScorecardTemplates/Compliance_Readiness_Scorecard.md
    10NET-BL-M365-001M365 & Entra ID Security Baselinebaselines/M365_EntraID_Baseline.md
    11NET-BL-EP-001Endpoint & Server Security Baselinebaselines/Endpoint_Server_Baseline.md
    12NET-BL-NET-001Network Perimeter & Infrastructure Baselinebaselines/Network_Perimeter_Baseline.md
    13NET-BL-EMAIL-001Email Security, Web Posture & Deliverability Baselinebaselines/Email_Web_Deliverability_Baseline.md
    14NET-BL-OPS-001Operational Policies & Governing Plansbaselines/Operational_Plans_Baseline.md
    15NET-SOP-INFRA-001SOP: Infrastructure & Compute HardeningSOPs/SOP_Infrastructure_Compute.md
    16NET-SOP-IDM-001Standard Operating Procedures: Identity, Conditional Access & Cloud Workspace SecuritySOPs/SOP_Identity_Cloud_Workspaces.md
    17NET-SOP-EP-001SOP: Endpoint Protection & ControlSOPs/SOP_Endpoint_Protection.md
    18NET-SOP-VULN-001SOP: Vulnerability ManagementSOPs/SOP_Vulnerability_Management.md
    19NET-SOP-SAT-001SOP: Security Awareness & TrainingSOPs/SOP_Security_Awareness.md
    20NET-SOP-MDM-001SOP: Endpoint Management (MDM/UEM)SOPs/SOP_Endpoint_Management_MDM.md
    21NET-SOP-NET-001SOP: Networking & PerimeterSOPs/SOP_Networking_Perimeter.md
    22NET-SOP-BDR-001SOP: Backup & Disaster RecoverySOPs/SOP_Backup_DR.md
    23NET-SOP-RMM-001SOP: Remote Monitoring & Management (NinjaOne)SOPs/SOP_RMM_NinjaOne.md
    24NET-SOP-KM-001SOP: Knowledge Management & DocumentationSOPs/SOP_Knowledge_Management.md
    25NET-OP-IRP-001Incident Response Plan (IRP)operational-plans/Incident_Response_Plan_IRP.md
    26NET-OP-BCP-001Business Continuity Plan (BCP)operational-plans/Business_Continuity_Plan_BCP.md
    27NET-OP-DRP-001Disaster Recovery Plan (DRP)operational-plans/Disaster_Recovery_Plan_DRP.md