rfc-4807

IPsec Security Policy Database Configuration MIB

M. Baer, R. Charlet, W. Hardaker, R. Story, C. Wang
date2007-03 streamIETF wgnon working group statusPROPOSED STANDARD pages71 canonicalhttps://www.rfc-editor.org/rfc/rfc4807 doi10.17487/RFC4807 errataview
This document defines a Structure of Management Information Version 2 (SMIv2) Management Information Base (MIB) module for configuring the security policy database of a device implementing the IPsec protocol. The policy-based packet filtering and the corresponding execution of actions described in this document are of a more general nature than for IPsec configuration alone, such as for configuration of a firewall. This MIB module is designed to be extensible with other enterprise or standards-based defined packet filters and actions. [STANDARDS-TRACK]

Extracted elements (30)

design-rationale §4

Filters are implemented via a compound object (spdCompoundFilterTable + spdSubfiltersTable) rather than the IPCP's fixed condition/filter pairing. This provides greater flexibility for complex multi-criteria filters without IPCP's structural constraints and allows recursive nesting with no inherent depth limit.

ipsec, security

design-rationale §5

IPsec- and IKE-specific actions are intentionally excluded from this base MIB and defined in companion documents (IPsec-ACTION and IKE-ACTION MIBs). This makes the base SPD MIB a general-purpose, extensible policy engine; companion action MIBs may impose additional constraints on objects in this MIB.

ipsec, security

design-rationale §4

Policy tables use generic names (without 'SA', 'IPsec' prefixes) because packet classification and filter-to-action matching is more general than IPsec alone. The same tables can be reused for firewall configuration or other packet-transforming actions, avoiding protocol-specific lock-in.

ipsec, security

design-rationale §6

The spdIpsoHeadFiltProtectionAuth enumeration uses 0 for genser, violating the SMIv2 convention of avoiding 0 in enumerated lists. This is intentional to preserve consistency with the authoritative RFC 1108 enumeration values.

ipsec, snmp

interoperability-note §1

This MIB is based on the IPsec model from RFC 2401, not RFC 4301 (which updated RFC 2401). Devices implementing RFC 4301 may encounter model differences when using this MIB for SPD configuration.

ipsec, security

normative-requirement §6 MUST

During packet processing, if spdGroupContFilter, spdRuleDefFilter, spdSubFiltSubfilter, or spdRuleDefAction references a non-existent or non-supported object, the packet MUST be dropped.

ipsec, security

normative-requirement §5 SHALL

If an endpoint has been configured with a policy group and no rule within that group matches a packet, the default action SHALL be to drop the packet.

ipsec, security

normative-requirement §5 MUST

If no policy group has been assigned to an endpoint, the group specified by spdIngressPolicyGroupName MUST be used for inbound traffic and spdEgressPolicyGroupName MUST be used for outbound traffic through that endpoint.

ipsec, security

normative-requirement §6 MUST

In the SpdTimePeriod textual convention, the end date and time MUST be subsequent to the start date and time; setting the end earlier than or equal to the start SHOULD result in a wrongValue error.

ipsec

normative-requirement §6 MUST NOT

Objects with SpdAdminStatus set to disabled MUST NOT be used by the packet processing engine. If a rule's spdRuleDefAdminStatus is disabled, processing MUST continue as if the rule's filter had effectively failed.

ipsec, security

normative-requirement §6 MUST

Rows within a policy group MUST be processed in ascending order of spdGroupContPriority. If an action executes as a result of processing a row, processing of further rows in that group MUST stop.

ipsec, security

normative-requirement §6 MUST NOT

spdGroupContRowStatus MUST NOT be set to active until the row referenced by spdGroupContComponentName exists and is active. It MUST remain active unless no active spdEndpointToGroupTable row references its group or at least one other active row shares its spdGroupContName.

ipsec, snmp

normative-requirement §6 MUST

Sub-actions within a spdCompoundActionTable row MUST execute in series in ascending spdSubActPriority order. spdCompActExecutionStrategy governs whether to run all sub-actions (doAll), stop on first success (doUntilSuccess), or stop on first failure (doUntilFailure).

ipsec

normative-requirement §6 MUST

The spdIngressPolicyGroupName and spdEgressPolicyGroupName objects MUST be persistent across system reboots.

ipsec, snmp

normative-requirement §6 MUST

When a VariablePointer filter or action column is set to reference a non-existent row in a supported table, the inconsistentName exception MUST be returned; if the pointed-to table is unsupported entirely, an inconsistentValue exception MUST be returned.

ipsec, snmp

protocol-element §6

spdCompoundActionTable (indexed by spdCompActName) combined with spdSubactionsTable (indexed by spdCompActName, spdSubActPriority) allows multiple ordered actions per rule. spdCompActExecutionStrategy controls execution: doAll(1), doUntilSuccess(2, default), or doUntilFailure(3).

ipsec, snmp

protocol-element §6

spdCompoundFilterTable (indexed by spdCompFiltName) combined with spdSubfiltersTable (indexed by spdCompFiltName, spdSubFiltPriority) defines recursive boolean composite filters. spdCompFiltLogicType (AND/OR) determines evaluation semantics; each sub-filter may itself be a compound filter.

ipsec, security, snmp

protocol-element §6

spdEndpointToGroupTable maps a policy group name (spdEndGroupName) to a specific interface (spdEndGroupInterface, indexed from IF-MIB ifIndex) and direction (spdEndGroupDirection: inbound or outbound), providing per-interface per-direction SPD assignment.

ipsec, security, snmp

protocol-element §6

spdGroupContentsTable defines ordered policy groups where each row (indexed by spdGroupContName, spdGroupContPriority) references either a rule (spdRuleDefinitionTable) or a sub-group, as indicated by spdGroupContComponentType. An optional per-row spdGroupContFilter pre-screens the component.

ipsec, security, snmp

protocol-element §6

spdIpOffsetFilterTable matches packets by comparing an administrator-specified OCTET STRING (spdIpOffFiltValue, SIZE 1..1024) against bytes at a byte offset (spdIpOffFiltOffset, 0..65535) from the front of the IP packet, using one of six comparison operators: equal, notEqual, arithmeticLess, arithmeticGreaterOrEqual, arithmeticGreater, arithmeticLessOrEqual.

ipsec, security, snmp

protocol-element §6

spdIpsoHeaderFilterTable filters packets on IPSO (RFC 1108) security headers. spdIpsoHeadFiltType bits select which fields to check: classificationLevel (topSecret=61, secret=90, confidential=150, unclassified=171) and/or protectionAuthority (genser=0, siopesi=1, sci=2, nsa=3, doe=4).

ipsec, security, snmp

protocol-element §6

spdRuleDefinitionTable binds a filter (spdRuleDefFilter, a VariablePointer) to an action (spdRuleDefAction, a VariablePointer) by name. The filter result may be negated via spdRuleDefFilterNegated (TruthValue) and the rule enabled or disabled via spdRuleDefAdminStatus (SpdAdminStatus).

ipsec, security, snmp

protocol-element §6

spdTimeFilterTable enables time-based policy activation. Each row logically ANDs five conditions: spdTimeFiltPeriod (date range), spdTimeFiltMonthOfYearMask (12-bit BITS), spdTimeFiltDayOfMonthMask (64-bit octet string), spdTimeFiltDayOfWeekMask (7-bit BITS), and spdTimeFiltTimeOfDayMask (SpdTimePeriod).

ipsec, snmp

protocol-element §6

spdTrueFilter is a read-only Integer32(1) scalar that always evaluates true, serving as a pass-all default filter. spdTrueFilterInstance (OID spdTrueFilter.0) is the canonical VariablePointer value used when no filtering is desired.

ipsec, snmp

registry §8

IANA assigned the IPSEC-SPD-MIB module the OID { mib-2 153 }, establishing the root of the spdMIB object tree. Sub-trees include spdConfigObjects (153.1), spdNotificationObjects (153.2), spdConformanceObjects (153.3), and spdActions (153.4).

ipsec, snmp, registry

security-consideration §7.2

Because this MIB directly controls which traffic receives IPsec protection, unauthorized write access can cause traffic to bypass security entirely. SNMPv3 with authentication (authNoPriv minimum) is required to protect against unauthenticated modifications to SPD policy.

ipsec, security, snmp

security-consideration §7.4

Bootstrapping SPD configuration via SNMPv3 requires that SNMPv3 credentials be pre-provisioned before this MIB is usable. Operating with a default-drop SPD until SNMPv3 credentials are in place prevents policy exposure during initial provisioning.

ipsec, security, snmp

security-consideration §7.3

SPD configuration may reveal sensitive network topology, classification levels, or protection authorities. SNMPv3 with privacy (authPriv) SHOULD be used to prevent involuntary disclosure of policy contents to passive observers.

ipsec, security, snmp, privacy

wire-format §6

spdTimeFiltDayOfMonthMask is an 8-octet (64-bit) OCTET STRING: bits 0-30 represent days 1-31 counted from the start of the month; bits 31-61 represent days 1-31 counted from the end of the month; bits 62-63 MUST be zero. Bits for non-existent days (e.g., day 29-31 in February) are ignored.

ipsec, snmp

wire-format §6

SpdTimePeriod is a UTF-8 OCTET STRING (SIZE 0..31) encoding a time range as 'yyyymmddThhmmss/yyyymmddThhmmss', where 'T' separates date from time and '/' separates start from end. The start may be replaced with 'THISANDPRIOR' and the end with 'THISANDFUTURE'.

ipsec, snmp