RFC 3585
IPsec Configuration Policy Information Model
IPsec Configuration Policy Information Model ๐
okay bestie, this is RFC 3585 and it's giving policy modeling ๐งโจ. It was written by J. Jason (Intel Corporation), L. Rafalow (IBM), and E. Vyncke (Cisco Systems) in August 2003. It's a Standards Track document, so it's an official Internet standards-track protocol spec. The title block doesn't list any RFC it obsoletes or updates, so it stands on its own ๐ .
Status of This Memo ๐
this doc specifies an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐ซถ. for the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). distribution of this memo is unlimited, so share it with everyone ๐.
Copyright Notice ยฉ
Copyright (C) The Internet Society (2003). All Rights Reserved. ๐
Abstract ๐ฆ
okay so this document presents an object-oriented information model of IP Security (IPsec) policy. the goal is to help everyone agree on what IPsec policy contains and what it means, and to make it easy to derive task-specific versions of that policy, like a storage schema, distribution formats, and policy specification languages used to configure IPsec-enabled endpoints ๐ฅ. the model covers the configuration parameters defined by IPsec, and it also covers the parameters used by the Internet Key Exchange protocol (IKE). other key exchange protocols could easily be added with a simple extension, and because the model is object-oriented, more extensions can be added easily too ๐.
this information model is based on the core policy classes from the Policy Core Information Model (PCIM) and the Policy Core Information Model Extensions (PCIMe) ๐.
Table of Contents ๐๏ธ
1. Introduction.................................................. 3
2. UML Conventions............................................... 4
3. IPsec Policy Model Inheritance Hierarchy...................... 6
4. Policy Classes................................................ 11
4.1. The Class SARule........................................ 13
4.2. The Class IKERule....................................... 17
4.3. The Class IPsecRule..................................... 18
4.4. The Association Class IPsecPolicyForEndpoint............ 18
4.5. The Association Class IPsecPolicyForSystem.............. 19
4.6. The Aggregation Class SAConditionInRule................. 19
4.7. The Aggregation Class PolicyActionInSARule.............. 20
5. Condition and Filter Classes.................................. 22
5.1. The Class SACondition................................... 23
5.2. The Class IPHeadersFilter............................... 23
5.3. The Class CredentialFilterEntry......................... 23
5.4. The Class IPSOFilterEntry............................... 25
5.5. The Class PeerIDPayloadFilterEntry...................... 26
5.6. The Association Class FilterOfSACondition............... 28
5.7. The Association Class AcceptCredentialFrom.............. 29
6. Action Classes................................................ 30
6.1. The Class SAAction...................................... 32
6.2. The Class SAStaticAction................................ 33
6.3. The Class IPsecBypassAction............................. 34
6.4. The Class IPsecDiscardAction............................ 34
6.5. The Class IKERejectAction............................... 35
6.6. The Class PreconfiguredSAAction......................... 35
6.7. The Class PreconfiguredTransportAction.................. 36
6.8. The Class PreconfiguredTunnelAction..................... 37
6.9. The Class SANegotiationAction........................... 37
6.10. The Class IKENegotiationAction.......................... 38
6.11. The Class IPsecAction................................... 39
6.12. The Class IPsecTransportAction.......................... 41
6.13. The Class IPsecTunnelAction............................. 42
6.14. The Class IKEAction..................................... 42
6.15. The Class PeerGateway................................... 44
6.16. The Association Class PeerGatewayForTunnel.............. 45
6.17. The Aggregation Class ContainedProposal................. 46
6.18. The Association Class HostedPeerGatewayInformation...... 47
6.19. The Association Class TransformOfPreconfiguredAction.... 48
6.20 The Association Class PeerGatewayForPreconfiguredTunnel. 49
7. Proposal and Transform Classes................................ 50
7.1. The Abstract Class SAProposal........................... 50
7.2. The Class IKEProposal................................... 51
7.3. The Class IPsecProposal................................. 54
7.4. The Abstract Class SATransform.......................... 54
7.5. The Class AHTransform................................... 56
7.6. The Class ESPTransform.................................. 57
7.7. The Class IPCOMPTransform............................... 59
7.8. The Association Class SAProposalInSystem................ 60
7.9. The Aggregation Class ContainedTransform................ 60
7.10. The Association Class SATransformInSystem............... 62
8. IKE Service and Identity Classes.............................. 63
8.1. The Class IKEService.................................... 64
8.2. The Class PeerIdentityTable............................. 64
8.3. The Class PeerIdentityEntry............................. 65
8.4. The Class AutostartIKEConfiguration..................... 66
8.5. The Class AutostartIKESetting........................... 67
8.6. The Class IKEIdentity................................... 69
8.7. The Association Class HostedPeerIdentityTable........... 71
8.8. The Aggregation Class PeerIdentityMember................ 71
8.9. The Association Class IKEServicePeerGateway............. 72
8.10. The Association Class IKEServicePeerIdentityTable....... 73
8.11. The Association Class IKEAutostartSetting............... 73
8.12. The Aggregation Class AutostartIKESettingContext........ 74
8.13. The Association Class IKEServiceForEndpoint............. 75
8.14. The Association Class IKEAutostartConfiguration......... 76
8.15. The Association Class IKEUsesCredentialManagementService 77
8.16. The Association Class EndpointHasLocalIKEIdentity....... 77
8.17. The Association Class CollectionHasLocalIKEIdentity..... 78
8.18. The Association Class IKEIdentitysCredential............ 79
9. Implementation Requirements................................... 79
10. Security Considerations....................................... 84
11. Intellectual Property Statement............................... 84
12. References ................................................... 85
12.1. Normative References.................................... 85
12.2. Informative References.................................. 86
13. Disclaimer.................................................... 86
14. Acknowledgments............................................... 86
15. Authors' Addresses............................................ 87
16. Full Copyright Statement...................................... 88
1. Introduction โจ
okay so IPsec policy can take a bunch of different forms as it moves from storage, to distribution, to the places where decisions get made ๐ง. at each step it needs to be represented in whatever way is most convenient for the task at hand. for example, the policy could exist as, but is not limited to:
- A Lightweight Directory Access Protocol (LDAP) [LDAP] schema in a directory. ๐
- An on-the-wire representation over a transport protocol like the Common Object Policy Service (COPS) [COPS, COPSPR]. ๐ฐ๏ธ
- A text-based policy specification language suitable for editing by an administrator. โ๏ธ
- An Extensible Markup Language (XML) document. ๐
each of these task-specific representations should be derived from a canonical representation that precisely specifies the content and semantics of the IPsec policy. this document captures that idea and introduces a task-independent canonical representation for IPsec policies ๐.
this document focuses mainly on the existing protocols [COMP, ESP, AH, DOI, IKE]. the model can easily be extended if needed, thanks to its object-oriented nature ๐ธ.
this document is organized as follows:
- Section 2 gives a quick intro to the Unified Modeling Language (UML) graphical notation conventions used in this document. ๐จ
- Section 3 gives the inheritance hierarchy that shows where the IPsec policy classes fit into the policy class hierarchy already defined by the Policy Core Information Model (PCIM) and Policy Core Information Model Extensions (PCIMe). ๐ณ
- Sections 4 through 8 describe the classes that make up the IPsec policy model. ๐งฉ
- Section 9 presents the implementation requirements for the classes in the model (i.e., the MUST/MAY/SHOULD status). โ
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [KEYWORDS]. ๐ฅ
2. UML Conventions โจ
okay so the author picked a UML static class diagram as the main way to show the IPsec policy model, bc UML gives you a graphical, task-independent way to model systems ๐ง a full treatise on UML's graphical notation is beyond this doc (not me going down that rabbit hole ๐), but since the class diagrams here are drawn in ASCII, here's the lowdown on the notation used in this doc:
- Boxes represent classes, with class names in brackets (
[]) representing an abstract class. ๐ - A line that terminates with an arrow (
<,>,^,v) denotes inheritance. The arrow always points to the parent class. Inheritance can also be called generalization or specialization (depending upon the reference point). A base class is a generalization of a derived class, and a derived class is a specialization of a base class. ๐ฆ - Associations are used to model a relationship between two classes. Classes that share an association are connected using a line. A special kind of association is also used: an aggregation. An aggregation models a whole-part relationship between two classes. Associations, and therefore aggregations, are also modeled as classes. ๐
- A line that begins with an
"o"denotes aggregation. Aggregation denotes containment in which the contained class and the containing class have independent lifetimes. ๐ธ - At each end of a line representing an association appears a cardinality (i.e., each association has 2 cardinalities). Cardinalities indicate the constraints on the number of object instances in a set of relationships. The cardinality on a given end of an association indicates the number of different object instances of that class that may be associated with a single object instance of the class on the other end of the association. The cardinality may be:
- a range in the form
"lower bound..upper bound"indicating the minimum and maximum number of objects. - a number that indicates the exact number of objects.
- an asterisk (
*) indicating any number of objects, including zero. An asterisk is shorthand for0..n. - the letter
nindicating from 1 to many. The letternis shorthand for1..n. ๐
- a range in the form
- A class that has an association may have a
"w"next to the line representing the association. This is called a weak association and is discussed in [PCIM]. ๐
It should be noted that the UML static class diagram presented is a conceptual view of IPsec policy designed to aid in understanding. It does not necessarily get translated class for class into another representation. For example, an LDAP implementation may flatten out the representation to fewer classes (because of the inefficiency of following references). So the diagrams are a mental model, not a blueprint you copy line by line ๐
3. IPsec Policy Model Inheritance Hierarchy
Like PCIM and PCIMe, the IPsec Configuration Policy Model derives from and uses classes defined in the DMTF [DMTF] Common Information Model (CIM). Here's the inheritance hierarchy for the IPsec Policy Model classes and how they slot into PCIM, PCIMe and the other DMTF models (see Appendices for descriptions of classes that are not being introduced as part of IPsec model). CIM classes that aren't used as a superclass to derive new classes, and are only used as references, aren't included in this tree, but you can find them in the appropriate DMTF document: Core Model [CIMCORE], User Model [CIMUSER] or Network Model [CIMNETWORK]. Main character energy for the classes that actually do the work ๐
ManagedElement (DMTF Core Model)
|
+--Collection (DMTF Core Model)
| |
| +--PeerIdentityTable
|
+--ManagedSystemElement (DMTF Core Model)
| |
| +--LogicalElement (DMTF Core Model)
| |
| +--FilterEntryBase (DMTF Network Model)
| | |
| | +--CredentialFilterEntry
| | |
| | +--IPHeadersFilter (PCIMe)
| | |
| | +--IPSOFilterEntry
| | |
| | +--PeerIDPayloadFilterEntry
| |
| +--PeerGateway
| |
| +--PeerIdentityEntry
| |
| +--Service (DMTF Core Model)
| |
| +--IKEService
|
+--OrganizationalEntity (DMTF User Model)
| |
| +--UserEntity (DMTF User Model)
| |
| +--UsersAccess (DMTF User Model)
| |
| +--IKEIdentity
|
+--Policy (PCIM)
| |
| +--PolicyAction (PCIM)
| | |
| | +--CompoundPolicyAction (PCIMe)
| | |
| | +--SAAction
| | |
| | +--SANegotiationAction
| | | |
| | | +--IKENegotiationAction
| | | |
| | | +--IKEAction
| | | |
| | | +--IPsecAction
| | | |
| | | +--IPsecTransportAction
| | | |
| | | +--IPsecTunnelAction
| | |
| | +--SAStaticAction
| | |
| | +--IKERejectAction
| | |
| | +--IPsecBypassAction
| | |
| | +--IPsecDiscardAction
| | |
| | +--PreconfiguredSAAction
| | |
| | +--PreconfiguredTransportAction
| | |
| | +--PreconfiguredTunnelAction
| |
| +--PolicyCondition (PCIM)
| | |
| | +--SACondition
| |
| +--PolicySet (PCIMe)
| | |
| | +--PolicyGroup (PCIM & PCIMe)
| | |
| | +--PolicyRule (PCIM & PCIMe)
| | |
| | +--SARule
| | |
| | +--IKERule
| | |
| | +--IPsecRule
| |
| +--SAProposal
| | |
| | +--IKEProposal
| | |
| | +--IPsecProposal
| |
| +--SATransform
| |
| +--AHTransform
| |
| +--ESPTransform
| |
| +--IPCOMPTransform
|
+--Setting (DMTF Core Model)
| |
| +--SystemSetting (DMTF Core Model)
| |
| +--AutostartIKESetting
|
+--SystemConfiguration (DMTF Core Model)
|
+--AutostartIKEConfiguration
The following tree represents the inheritance hierarchy of the IPsec policy model association classes and how they fit into PCIM and the other DMTF models (see Appendices for description of association classes that are not being introduced as part of IPsec model). The association classes get their own little family tree too, so no class gets left out of the group chat ๐ซถ
Dependency (DMTF Core Model)
|
+--AcceptCredentialsFrom
|
+--ElementAsUser (DMTF User Model)
| |
| +--EndpointHasLocalIKEIdentity
| |
| +--CollectionHasLocalIKEIdentity
|
+--FilterOfSACondition
|
+--HostedPeerGatewayInformation
|
+--HostedPeerIdentityTable
|
+--IKEAutostartConfiguration
|
+--IKEServiceForEndpoint
|
+--IKEServicePeerGateway
|
+--IKEServicePeerIdentityTable
|
+--IKEUsesCredentialManagementService
|
+--IPsecPolicyForEndpoint
|
+--IPsecPolicyForSystem
|
+--PeerGatewayForPreconfiguredTunnel
|
+--PeerGatewayForTunnel
|
+--PolicyInSystem (PCIM)
| |
| +--SAProposalInSystem
| |
| +--SATransformInSystem
|
+--TransformOfPreconfiguredAction
|
+--UsersCredential (DMTF User Model)
|
+--IKEIdentitysCredential
ElementSetting (DMTF Core Model)
|
+--IKEAutostartSetting
MemberOfCollection (DMTF Core Model)
|
+--PeerIdentityMember
PolicyComponent (PCIM)
|
+--ContainedProposal
|
+--ContainedTransform
|
+--PolicyActionStructure (PCIMe)
| |
| +--PolicyActionInPolicyRule (PCIM & PCIMe)
| |
| +--PolicyActionInSARule
|
+--PolicyConditionStructure (PCIMe)
| |
| +--PolicyConditionInPolicyRule (PCIM & PCIMe)
| |
| +--SAConditionInRule
|
+--PolicySetComponent (PCIMe)
SystemSettingContext (DMTF Core Model)
|
+--AutostartIKESettingContext
4. Policy Classes โจ
okay so the IPsec policy classes are basically the whole collection of policies living on a system ๐ the set of stuff a box is actually enforcing. here's the big picture diagram, bestie ๐ฆ
+--------------+
| [PolicySet] |*
| ([PCIME]) |o--+
+--------------+ |
^ *| |(a)
| +------+
+--------------------------+
| |
+-------------+ +--------------+
| PolicyGroup |0..1 | PolicyRule |*
| ([PCIM]) |-----+ | ([PCIM]) |o--+
+-------------+ | +--------------+ |(d)
0..1| | ^ |
|(b) | | |*
*| | | +---------------------------+
+--------------------+ |(c) | | PolicyTimePeriodCondition |
| IPProtocolEndpoint | | | | ([PCIM]) |
| ([CIMNETWORK]) | | | +---------------------------+
+--------------------+ | |
+------------+ | *+----------+*
| System |----+ +-o| SARule |o-------+
| ([CIMCORE])|* | +----------+ |(f)
+------------+ | ^ |
(e)| | |n
+-------------+n | | +--------------+
| SACondition |--------+ | |[PolicyAction]|
+-------------+ | | ([PCIM]) |
| +--------------+
| *| ^
| |(g) |
| | +-------+
| *o | |
| +----------------------+ |
| | CompoundPolicyAction | |
| | ([PCIME]) | |
| +----------------------+ |
| |
+---------+----+ +---------+
| | |
+---------+ +-----------+ +----------+
| IKERule | | IPsecRule | | SAAction |
+---------+ +-----------+ +----------+
(a) PolicySetComponent ([PCIME])
(b) IPsecPolicyForEndpoint
(c) IPsecPolicyForSystem
(d) PolicyRuleValidityPeriod ([PCIM])
(e) SAConditionInRule
(f) PolicyActionInSARule
(g) PolicyActionInPolicyAction ([PCIME])
so a PolicyGroup is the set of policies used on an interface ๐ธ it SHOULD be tied either straight to the IPProtocolEndpoint instance that represents that interface (through the IPsecPolicyForEndpoint association), or indirectly (through the IPsecPolicyForSystem association) to the System hosting the interface ๐
the IKE and IPsec rules are what build or negotiate the IPsec Security Association Database (SADB) ๐ง the IPsec rules are the Security Policy Database. the SADB itself isn't modeled in this document, bestie, so we're skipping it ๐
here's how the IKE and IPsec rules behave (also check section 6 for actions):
- an egress unprotected packet gets checked against the IPsec rules first ๐ if it matches, the SADB gets checked. if there's no matching IPsec SA in the SADB, and the IPsec rule says IKE negotiation is required, the matching IKE rules kick in. then the negotiated or preconfigured SA gets installed in the SADB โจ
- an ingress unprotected packet also hits the IPsec rules first ๐ on a match, the SADB gets checked for a matching IPsec SA. if there's no matching IPsec SA but a preconfigured SA exists, that preconfigured SA gets installed in the IPsec SADB. this behavior should only apply to bypass and discard actions ๐ฅบ
- an ingress protected packet hits the IPsec rules first too ๐ซถ on a match, the SADB gets checked for a matching IPsec SA. if there's no match but a preconfigured SA exists, it gets installed in the IPsec SADB. (no bypass/discard restriction on this one, fr)
- an ingress IKE negotiation packet that isn't part of an existing IKE SA gets checked against the IKE rules ๐ฆ the SACondition for the IKERule will usually be a PeerIDPayloadFilterEntry (typically for an aggressive mode IKE negotiation) or an IPHeadersFilter. then the negotiated SA gets installed in the SADB ๐
and when an IPsec rule requires an IKE negotiation to get started, the set of IKE rules is checked ๐ that check is based on the outgoing IKE packet, using IPHeadersFilter entries (typically using the HdrDstAddress property) ๐
4.1. The Class SARule
the class SARule is the base class for IKERule and IPsecRule ๐ even though the class is concrete, it MUST not be instantiated ๐ โโ๏ธ it's basically a shared connection point for associations to conditions and actions for both kinds of rules. because it derives from PolicyRule, an SARule (and so an IKERule and IPsecRule too) also gets the PolicyRuleValidityPeriod association ๐
every SARule in a valid PolicyGroup MUST have a unique priority number in PolicySetComponent.Priority ๐ฅ here's the class definition, bestie:
NAME SARule
DESCRIPTION A base class for IKERule and IPsecRule.
DERIVED FROM PolicyRule (see [PCIM] & [PCIME])
ABSTRACT FALSE
PROPERTIES PolicyRuleName (from PolicyRule)
Enabled (from PolicyRule)
ConditionListType (from PolicyRule)
RuleUsage (from PolicyRule)
Mandatory (from PolicyRule)
SequencedActions (from PolicyRule)
ExecutionStrategy (from PolicyRule)
PolicyRoles (from PolicySet)
PolicyDecisionStrategy (from PolicySet)
LimitNegotiation
4.1.1. The Properties PolicyRuleName, Enabled, ConditionListType,
RuleUsage, Mandatory, SequencedActions, PolicyRoles, and PolicyDecisionStrategy
for what these properties mean, see [PCIM] and [PCIME] ๐ธ and in SARule subclass instances:
- if the property Mandatory exists, it MUST be set to "true" ๐
- if the property SequencedActions exists, it MUST be set to "mandatory" ๐ซถ
- the property PolicyRoles is not used in the device-level model ๐
- if the property PolicyDecisionStrategy exists, it must be set to "FirstMatching" โจ
that's the end of part 3, bestie ๐ keep reading, there's more coming!
4.1.2. The Property ExecutionStrategy โจ
okay so the ExecutionStrategy properties (in the PolicyRule subclasses AND in the CompoundPolicyAction class ๐ ) decide how the actions inside them get run. it's basically the game plan for the sequenced actions that a rule or compound action bundles together ๐ for actions in a rule, the PolicyActionInSARule aggregation lines them up into an ordered set. for a compound action, it's PolicyActionInPolicyAction collecting them into an ordered subset ๐ฆ
there are three execution strategies: "Do Until Success", "Do All", and "Do Until Failure" ๐
"Do Until Success" runs the actions in the ActionOrder given by the aggregation instances, until one single action succeeds ๐ these actions can be evaluated first to see if they're appropriate to run, so it's not just blindly trying each one until something works ๐ง for an initiator, they get tried in ActionOrder until the list runs out or one completes successfully. for example, an IKE initiator might have several IKEActions for the same SACondition. the initiator tries all of them in the order defined by ActionOrder, i.e., it might try a few phase 1 negotiations with different modes (main mode, then aggressive mode) and/or with multiple IKE peers ๐ฅ for a responder, when there's more than one action in the rule with the "do until success" condition clause, that gives you alternative actions depending on the proposals it receives. for example, the same IKERule can be used to handle aggressive mode and main mode negotiations with different actions. the responder uses the first appropriate action in the list ๐
"Do All" causes all the actions in the aggregated set to run according to their defined order. the execution keeps going regardless of failures ๐ช
"Do Until Failure" runs all the actions in a predefined order until the first failure in an action instance ๐ heads up: if all of the actions are successful, then the aggregated result is a failure ๐ this strategy is inherited from [PCIME] and is not expected to be of any use for IPsec configuration ๐ฅฒ
for example, in a nested SAs case, the actions of an initiator's rule might be structured like this:
IPsecRule.ExecutionStrategy='Do All'
|
+---1--- IPsecTunnelAction // set up SA from host to gateway
|
+---2--- IPsecTransportAction // set up SA from host through
// tunnel to remote host
another example, showing a rule with fallback actions, might look like this:
IPsecRule.ExecutionStrategy='Do Until Success'
|
+---6--- IPsecTransportAction // negotiate SA with peer
|
+---9--- IPsecBypassAction // but if you must, allow in the clear
the CompoundPolicyAction class (see [PCIME]) can be used when building the actions of IKE and IPsec rules, especially when those rules specify both multiple actions and fallback actions ๐งฉ its ExecutionStrategy property works together with the one in the PolicyRule ๐ค
for example, in nesting SAs with a fallback security gateway, the actions of a rule might be structured like this:
IPsecRule.ExecutionStrategy='Do All'
|
+---1--- CompoundPolicyAction.ExecutionStrategy='Do Until Success'
| |
| +---1--- IPsecTunnelAction // set up SA from host to
| | // gateway1
| |
| +---2--- IPsecTunnelAction // or set up SA to gateway2
|
+---2--- IPsecTransportAction // then set up SA from host
// through tunnel to remote
// host
with "Do All", a couple of actions can succeed before a later one fails ๐ญ in that case, some IKE or IPsec actions may already have created SAs. even if the net effect of the aggregated actions is a failure, those created SAs MAY be kept or MAY be deleted ๐ซถ
with "Do All", the IPsec selectors used during IPsec SA negotiation work like this:
- for the last IPsecAction of the aggregation (i.e., usually the innermost IPsec SA): this is the combination of the IPHeadersFilter class and of the Granularity property of the IPsecAction.
- for all the other IPsecActions of the aggregation: the selector is the source IP address, which is the local IP address, and the destination IP address is the PeerGateway IP address of the following IPsecAction in the "Do All" aggregation. NB: the granularity is IP address to IP address. ๐
if that behavior isn't what you want, the alternative is to define several SARules, one for each IPsec SA to be built. that way you can define specific IPsec selectors for every IPsecAction ๐ฏ
4.1.3. The Property LimitNegotiation ๐ฆ
the LimitNegotiation property gets used when processing either an IKE or an IPsec rule ๐ซ
before moving on with a phase 1 negotiation, this property gets checked to see whether the negotiation role of the rule matches the one defined for the negotiation being undertaken (e.g., Initiator, Responder, or Both). if that check fails (e.g., the current role is IKE responder, but the rule specifies IKE initiator), then the IKE negotiation gets stopped ๐ note that this only applies to new IKE phase 1 negotiations. it has no effect on renegotiation or refresh operations with peers that already have an established SA ๐ธ
before moving on with a phase 2 negotiation, the LimitNegotiation property of the IPsecRule is checked first, to see if the negotiation role indicated for the rule matches the current negotiation (Initiator, Responder, or Either). this limit only applies to new phase 2 negotiations ๐ โโ๏ธ it gets ignored when someone tries to refresh an expiring SA, since either side can start a refresh operation ๐ the IKE system can tell that a negotiation is a refresh by checking whether the selector information matches an existing SA. if LimitNegotiation doesn't match and the selector corresponds to a new SA, the negotiation gets stopped ๐ซ
the property is defined as follows:
NAME LimitNegotiation
DESCRIPTION Limits the role to be undertaken during negotiation.
SYNTAX unsigned 16-bit integer
VALUE 1 - initiator-only
2 - responder-only
3 - both
4.2. The Class IKERule ๐
the class IKERule links Conditions and Actions for IKE phase 1 negotiations ๐ง its class definition looks like this:
NAME IKERule
DESCRIPTION Associates Conditions and Actions for IKE phase 1
negotiations.
DERIVED FROM SARule
ABSTRACT FALSE
PROPERTIES same as SARule, plus
IdentityContexts
4.2.1. The Property IdentityContexts ๐ชช
the IKE service of a security endpoint can have multiple identities for use in different situations ๐ the combination of the interface (represented by the IPProtocolEndpoint or by a collection of IPProtocolEndpoints), the identity type (as specified in the IKEAction), and the IdentityContexts together specify a unique identity ๐
the IdentityContexts property specifies the context used to select the relevant IKE identity for the further IKEAction. a context can be a VPN name or some other identifier that picks the right identity for use on the protected IPProtocolEndpoint (or collection of IPProtocolEndpoints) โจ
IdentityContexts is an array of strings. the multiple values in the array are logically ORed together when IdentityContexts is evaluated ๐ each value in the array can itself be a composition of multiple context names. so a single value can be one context name (e.g., "CompanyXVPN"), or a combination of contexts. when an array value is a composition, the individual values are logically ANDed together for evaluation, and the syntax is:
<ContextName>[&&<ContextName>]*
the individual context names appear in alphabetical order (according to the collating sequence for UCS-2). so, for example, the values "CompanyXVPN", "CompanyYVPN&&TopSecret", and "CompanyZVPN&&Confidential" mean that, for the appropriate IPProtocolEndpoint and IdentityType, the contexts match if the identity specifies "CompanyXVPN", "CompanyYVPN&&TopSecret", or "CompanyZVPN&&Confidential" ๐ต๏ธโโ๏ธ
the property is defined as follows:
NAME IdentityContexts
DESCRIPTION Specifies the context in which to select the IKE
identity.
SYNTAX string array
4.3. The Class IPsecRule ๐ท
the class IPsecRule links Conditions and Actions for IKE phase 2 negotiations for the IPsec DOI ๐ its class definition is:
NAME IPsecRule
DESCRIPTION Associates Conditions and Actions for IKE phase 2
negotiations for the IPsec DOI.
DERIVED FROM SARule
ABSTRACT FALSE
PROPERTIES same as SARule
4.4. The Association Class IPsecPolicyForEndpoint ๐
the class IPsecPolicyForEndpoint associates a PolicyGroup with a specific network interface ๐ฆ if an IPProtocolEndpoint of a system doesn't have an IPsecPolicyForEndpoint-associated PolicyGroup, then the IPsecPolicyForSystem-associated PolicyGroup gets used for that endpoint ๐ซถ its class definition is:
NAME IPsecPolicyForEndpoint
DESCRIPTION Associates a policy group to a network interface.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent[ref IPProtocolEndpoint[0..n]]
Dependent[ref PolicyGroup[0..1]]
4.4.1. The Reference Antecedent ๐
the Antecedent property is inherited from Dependency, and it's overridden to refer to an IPProtocolEndpoint instance. the [0..n] cardinality means a PolicyGroup instance can be associated with zero or more IPProtocolEndpoint instances ๐
4.4.2. The Reference Dependent ๐
the Dependent property is inherited from Dependency, and it's overridden to refer to a PolicyGroup instance. the [0..1] cardinality means an IPProtocolEndpoint instance can have an association to at most one PolicyGroup instance ๐
4.5. The Association Class IPsecPolicyForSystem ๐ฅ๏ธ
the class IPsecPolicyForSystem associates a PolicyGroup with a specific system ๐ if an IPProtocolEndpoint of a system doesn't have an IPsecPolicyForEndpoint-associated PolicyGroup, then the IPsecPolicyForSystem-associated PolicyGroup gets used for that endpoint ๐ง its class definition is:
NAME IPsecPolicyForSystem
DESCRIPTION Default policy group for a system.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent[ref System[0..n]]
Dependent[ref PolicyGroup[0..1]]
4.5.1. The Reference Antecedent ๐บ
the Antecedent property is inherited from Dependency, and it's overridden to refer to a System instance. the [0..n] cardinality means a PolicyGroup instance can have an association to zero or more System instances ๐
4.5.2. The Reference Dependent ๐ฆ
the Dependent property is inherited from Dependency, and it's overridden to refer to a PolicyGroup instance. the [0..1] cardinality means a System instance can have an association to at most one PolicyGroup instance ๐
4.6. The Aggregation Class SAConditionInRule โจ
Okay bestie, SAConditionInRule is the aggregation that links an SARule to the SACondition instance(s) that trigger it. ๐ Here's the class definition:
NAME SAConditionInRule
DESCRIPTION Associates an SARule with the SACondition instance(s)
that trigger(s) it.
DERIVED FROM PolicyConditionInPolicyRule (see [PCIM] & [PCIME])
ABSTRACT FALSE
PROPERTIES GroupNumber (from PolicyConditionInPolicyRule)
ConditionNegated (from PolicyConditionInPolicyRule)
GroupComponent [ref SARule [0..n]]
PartComponent [ref SACondition [1..n]]
4.6.1. The Properties GroupNumber and ConditionNegated ๐
For the details on these two, go check [PCIM]. It's got everything you need. ๐ธ
4.6.2. The Reference GroupComponent ๐ฆ
The property GroupComponent is inherited from PolicyConditionInPolicyRule, and it's overridden so it refers to an SARule instance. The [0..n] cardinality means an SACondition instance can be contained in zero or more SARule instances, so it's giving flexible ๐
4.6.3. The Reference PartComponent ๐ง
The property PartComponent is inherited from PolicyConditionInPolicyRule too, but this time it's overridden to refer to an SACondition instance. The [1..n] cardinality is where it gets strict: an SARule instance MUST contain at least one SACondition instance. No empty rules allowed, periodt ๐ฅ
4.7. The Aggregation Class PolicyActionInSARule ๐
The PolicyActionInSARule class associates an SARule with one or more PolicyAction instances. Whenever an SARule is being used, the contained actions MUST be either subclasses of SAAction or instances of CompoundPolicyAction. For an IKERule, the contained actions MUST be related to phase 1 processing, i.e., IKEAction or IKERejectAction. Similarly, for an IPsecRule, contained actions MUST be related to phase 2 or preconfigured SA processing, e.g., IPsecTransportAction, IPsecBypassAction, etc. The class definition for PolicyActionInSARule is as follows:
NAME PolicyActionInSARule
DESCRIPTION Associates an SARule with its PolicyAction(s).
DERIVED FROM PolicyActionInPolicyRule (see [PCIM] & [PCIME])
ABSTRACT FALSE
PROPERTIES GroupComponent [ref SARule [0..n]]
PartComponent [ref PolicyAction [1..n]]
ActionOrder (from PolicyActionInPolicyRule)
4.7.1. The Reference GroupComponent ๐
The property GroupComponent is inherited from PolicyActionInPolicyRule and is overridden to refer to an SARule instance. The [0..n] cardinality indicates that an SAAction instance may be contained in zero or more SARule instances.
4.7.2. The Reference PartComponent ๐
The property PartComponent is inherited from PolicyActionInPolicyRule and is overridden to refer to an SAAction or CompoundPolicyAction instance. The [1..n] cardinality is the strict part again: an SARule instance MUST contain at least one SAAction or CompoundPolicyAction instance. โจ
4.7.3. The Property ActionOrder ๐ซถ
The property ActionOrder is inherited from the superclass PolicyActionInPolicyRule. It specifies the relative position of this PolicyAction in the sequence of actions associated with a PolicyRule. The ActionOrder MUST be unique so the order is deterministic. On top of that, the actions in an SARule are executed as follows. See section 4.2.2, ExecutionStrategy, for a discussion on the use of the ActionOrder property.
The property is defined as follows:
NAME ActionOrder
DESCRIPTION Specifies the order of actions.
SYNTAX unsigned 16-bit integer
VALUE Any value between 1 and 2^16-1 inclusive. Lower
values have higher precedence (i.e., 1 is the
highest precedence). The merging order of two
SAActions with the same precedence is undefined.
5. Condition and Filter Classes ๐
The IPsec condition and filter classes are used to build the "if" part of the IKE and IPsec rules. Here's the big picture:
*+-------------+
+--------------------| SACondition |
| +-------------+
| * |
| |(a)
| 1 |
| +---------------+
| | FilterList |
| |([CIMNETWORK]) |
| +---------------+
| 1 o
|(b) |(c)
| * |
| +-----------------+
| | FilterEntryBase |
| | ([CIMNETWORK]) |
| +-----------------+
| ^
| |
| +-----------------+ | +-----------------------+
| | IPHeadersFilter |----+----| CredentialFilterEntry |
| | ([PCIME]) | | +-----------------------+
| +-----------------+ |
| |
| +-----------------+ | +--------------------------+
| | IPSOFilterEntry |----+----| PeerIDPayloadFilterEntry |
| +-----------------+ +--------------------------+
|
| *+-----------------------------+
+------------| CredentialManagementService |
| ([CIMUSER]) |
+-----------------------------+
(a) FilterOfSACondition
(b) AcceptCredentialsFrom
(c) EntriesInFilterList (see [CIMNETWORK])
5.1. The Class SACondition ๐
SACondition is the class that defines the conditions of rules for IKE and IPsec negotiations. Conditions are tied to policy rules through the SAConditionInRule aggregation. It works as an anchor point for hooking various filters up to policy rules via the FilterOfSACondition association. It also decides whether Credentials can be accepted for a particular policy rule, through the AcceptCredentialsFrom association.
Associated objects stand for the parts of the condition that might or might not apply at a given rule evaluation. For example, an AcceptCredentialsFrom evaluation only happens when there's a credential to check against the list of trusted credential management services. Likewise, a PeerIDPayloadFilterEntry only gets evaluated when there's an IDPayload value to compare with the filter. Condition components with no matching values to evaluate are treated as TRUE, unless the protocol has finished without giving the required information. ๐ซ
The class definition for SACondition is as follows:
NAME SACondition
DESCRIPTION Defines the preconditions for IKE and IPsec
negotiations.
DERIVED FROM PolicyCondition (see [PCIM])
ABSTRACT FALSE
PROPERTIES PolicyConditionName (from PolicyCondition)
5.2. The Class IPHeadersFilter ๐ธ
The class IPHeadersFilter is defined in [PCIME], with the following note:
- To specify 5-tuple filters that apply symmetrically (i.e., they match traffic in both directions of the same flows, which is pretty typical for SPD entries for ingress and egress traffic), the Direction property of the FilterList SHOULD be set to "Mirrored". ๐ฆ
5.3. The Class CredentialFilterEntry ๐
CredentialFilterEntry defines an equivalence class that matches credentials of IKE peers. Each CredentialFilterEntry has a MatchFieldName, which gets interpreted according to the CredentialManagementService(s) associated with the SACondition (AcceptCredentialsFrom).
These credentials can be X.509 certificates, Kerberos tickets, or other types of credentials obtained during the Phase 1 exchange.
Note: this filter entry will probably be checked while the IKE negotiation takes place. If the check fails, then the IKE negotiation MUST be stopped, and the result of the IKEAction which triggered this negotiation is a failure. ๐จ
The class definition for CredentialFilterEntry is as follows:
NAME CredentialFilterEntry
DESCRIPTION Specifies a match filter based on the IKE
credentials.
DERIVED FROM FilterEntryBase (see [CIMNETWORK])
ABSTRACT FALSE
PROPERTIES Name (from FilterEntryBase)
IsNegated (from FilterEntryBase)
MatchFieldName
MatchFieldValue
CredentialType
5.3.1. The Property MatchFieldName ๐
The property MatchFieldName specifies the sub-part of the credential to match against MatchFieldValue. The property is defined as follows:
NAME MatchFieldName
DESCRIPTION Specifies which sub-part of the credential to match.
SYNTAX string
VALUE This is the string representation of a X.509
certificate attribute, e.g.:
- "serialNumber"
- "signatureAlgorithm"
- "issuerName"
- "subjectName"
- "subjectAltName"
- ...
5.3.2. The Property MatchFieldValue ๐
The property MatchFieldValue specifies the value to compare with the MatchFieldName in a credential, to figure out whether the credential matches this filter entry. The property is defined as follows:
NAME MatchFieldValue
DESCRIPTION Specifies the value to be matched by the
MatchFieldName.
SYNTAX string
VALUE NB: If the CredentialFilterEntry corresponds to a
DistinguishedName, this value in the CIM class is
represented by an ordinary string value. However, an
implementation must convert this string to a DER-
encoded string before matching against the values
extracted from credentials at runtime.
A wildcard mechanism may be used for MatchFieldNames that contain character strings. The MatchFieldValue may contain a wildcard character, *, in the pattern match specification. For example, if the MatchFieldName is "subjectName", then a MatchFieldValue of "cn=*,ou=engineering,o=foo,c=be" will successfully match a certificate whose subject attribute is "cn=Jane Doe,ou=engineering,o=foo,c=be". The wildcard character can stand in for 0 or more characters, as they would be displayed to the user (i.e., a wildcard pattern match operates on displayable character boundaries). โจ
5.3.3. The Property CredentialType ๐
The property CredentialType specifies the particular type of credential being matched. The property is defined as follows:
NAME CredentialType
DESCRIPTION Defines the type of IKE credentials.
SYNTAX unsigned 16-bit integer
VALUE 1 - X.509 Certificate
2 - Kerberos Ticket
5.4. The Class IPSOFilterEntry ๐ง
The class IPSOFilterEntry is used to match traffic based on the IP Security Options [IPSO] header values (ClassificationLevel and ProtectionAuthority) as defined in RFC 1108. This kind of filter entry is used to adjust the IPsec encryption level according to the IPSO classification of the traffic (e.g., secret, confidential, restricted, etc.). The class definition for IPSOFilterEntry is as follows:
NAME IPSOFilterEntry
DESCRIPTION Specifies the a match filter based on IP Security
Options.
DERIVED FROM FilterEntryBase (see [CIMNETWORK])
ABSTRACT FALSE
PROPERTIES Name (from FilterEntryBase)
IsNegated (from FilterEntryBase)
MatchConditionType
MatchConditionValue
5.4.1. The Property MatchConditionType
okay so MatchConditionType is the knob that picks which IPSO header field we're checking ๐
it's either the traffic classification level or the protection authority. pick your field, bestie ๐
NAME MatchConditionType
DESCRIPTION Specifies the IPSO header field to be matched.
SYNTAX unsigned 16-bit integer
VALUE 1 - ClassificationLevel
2 - ProtectionAuthority
5.4.2. The Property MatchConditionValue
and this one is the actual value we match against once we've picked the field ๐ฆ MatchConditionValue is the thing the header has to line up with
NAME MatchConditionValue
DESCRIPTION Specifies the value of the IPSO header field to be
matched against.
SYNTAX unsigned 16-bit integer
VALUE The values MUST be one of values listed in RFC 1108
(or any further IANA Assigned Numbers document).
Some examples for ClassificationLevel are:
61 - TopSecret
90 - Secret
150 - Confidential
171 - Unclassified
For ProtectionAuthority, some examples are:
0 - GENSER
1 - SIOP-ESI
2 - SCI
3 - NSA
4 - DOE
5.5. The Class PeerIDPayloadFilterEntry
the class PeerIDPayloadFilterEntry is the filter that matches ID payload values from the IKE exchange ๐ฅ it lets you write things like "*@example.com" or "192.0.2.0/24" and actually get a match, which is so iconic
โ ๏ธ tea time: this filter only applies to IKERules when acting as a responder ๐ and it can be applied right away for aggressive mode, but for main mode the application has to wait
here's how the class is set up ๐ธ
NAME PeerIDPayloadFilterEntry
DESCRIPTION Specifies a match filter based on IKE identity.
DERIVED FROM FilterEntryBase (see [CIMNETWORK])
ABSTRACT FALSE
PROPERTIES Name (from FilterEntryBase)
IsNegated (from FilterEntryBase)
MatchIdentityType
MatchIdentityValue
5.5.1. The Property MatchIdentityType
MatchIdentityType says what kind of identity the peer sent in its ID payload. it's the type tag, so it's giving "label on the box" energy ๐ฆ
NAME MatchIdentityType
DESCRIPTION Specifies the ID payload type.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
5.5.2. The Property MatchIdentityValue
and MatchIdentityValue is the filter value we compare against the ID payload, like "*@example.com" ๐
NAME MatchIdentityValue
DESCRIPTION Specifies the ID payload value.
SYNTAX string
VALUE NB: The syntax may need to be converted for
comparison. If the PeerIDPayloadFilterEntry type is
a DistinguishedName, the name in the
MatchIdentityValue property is represented by an
ordinary string value, but this value must be
converted into a DER-encoded string before matching
against the values extracted from IKE ID payloads at
runtime. The same applies to IPv4 & IPv6 addresses.
okay now the wildcards, and they're honestly so fun ๐ different ID payload types get different wildcard styles:
"*@example.com"will match a user FQDN ID payload of"JDOE@EXAMPLE.COM"."*.example.com"will match a FQDN ID payload of"WWW.EXAMPLE.COM"."cn=*,ou=engineering,o=company,c=us"will match a DER DN ID payload of"cn=John Doe,ou=engineering,o=company,c=us"."193.190.125.0/24"will match an IPv4 address ID payload of193.190.125.10."193.190.125.*"will also match an IPv4 address ID payload of193.190.125.10.
the big rule here is that the wildcard mechanisms above MUST be supported for every ID payload the local IKE entity supports ๐ซถ and the '*' character stands in for 0 or more instances of any character, as limited by whatever type MatchIdentityType says ๐
5.6. The Association Class FilterOfSACondition
FilterOfSACondition is the matchmaker ๐ it links an SACondition to the FilterList filters that make the condition up
NAME FilterOfSACondition
DESCRIPTION Associates a condition with the filter list that
makes up the individual condition elements.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref FilterList[1..1]]
Dependent [ref SACondition[0..n]]
5.6.1. The Reference Antecedent
Antecedent comes from Dependency but gets overridden so it points at a FilterList instance ๐ the [1..1] means every SACondition instance MUST be tied to one and only one FilterList instance, no more, no less ๐
5.6.2. The Reference Dependent
Dependent also comes from Dependency and gets overridden so it points at an SACondition instance ๐ฆ the [0..n] means a FilterList instance may be linked to zero or more SACondition instances, so it can be a total loner or hang with a whole crew ๐ง
5.7. The Association Class AcceptCredentialFrom
AcceptCredentialFrom is the guest list for credential services ๐ธ it says which credential management services (like a CertificateAuthority or a Kerberos service) are trusted to certify peer credentials
the whole point is to make sure the credential getting matched in the CredentialFilterEntry is actually valid and came from an approved CredentialManagementService ๐ so if a CredentialManagementService is listed and a matching CredentialFilterEntry is used, but the peer's credential isn't certified by that service (or any service in its trust hierarchy), then the CredentialFilterEntry is deemed not to match ๐
and here's a fun twist: if a credential IS certified by a service in the AcceptCredentialsFrom list but there's no CredentialFilterEntry at all, that counts the same as a CredentialFilterEntry that matches every credential from those services โจ
the class definition goes like this ๐
NAME AcceptCredentialFrom
DESCRIPTION Associates a condition with the credential management
services to be trusted.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref CredentialManagementService[0..n]]
Dependent [ref SACondition[0..n]]
5.7.1. The Reference Antecedent
Antecedent is inherited from Dependency and overridden to point at a CredentialManagementService instance ๐
the [0..n] means an SACondition instance may be linked to zero or more CredentialManagementService instances
5.7.2. The Reference Dependent
Dependent is inherited from Dependency and overridden to point at an SACondition instance ๐ซถ the [0..n] means a CredentialManagementService instance may be linked to zero or more SACondition instances
6. Action Classes โก
okay the action classes are where the drama happens ๐ฅ they model the different things an IPsec device can do when its condition gets a match
+----------+
| SAAction |
+----------+
^
|
+-----------+--------------+
| |
| +---------------------+
| | SaNegotiationAction |
| +---------------------+
| ^
| |
+----------------+ +----------------------+*
| SAStaticAction | | IKENegotiationAction |o----+
+----------------+ +----------------------+ |
^ ^ |
| | |
| +-----------+-------+ |
| | | |
+-------------------+ | +-------------+ +-----------+ |
| IPsecBypassAction |---+ | IPsecAction | | IKEAction | |
+-------------------+ | +-------------+ +-----------+ |
| ^ |
+--------------------+ | | +----------------------+ |
| IPsecDiscardAction |---+ +----| IPsecTransportAction | |
+--------------------+ | | +----------------------+ |
| | |
+-----------------+ | | +-------------------+ |
| IKERejectAction |---+ +----| IPsecTunnelAction | |
+-----------------+ | +-------------------+ |
| *| |
| +--------------+ |
| | |
+-----------------------+ | | +--------------+n |
| PreconfiguredSAAction |---+ |(a) | [SAProposal] |-------+
+-----------------------+ | +--------------+ (b)
*| ^ |
| | | *+-------------+
| | +-------| PeerGateway |
| | +-------------+
| | +-----------------------------+ |0..1 *w|
| +--| PreconfiguredTransportAction| | |(c)
| | +-----------------------------+ | 1|
| | | +--------------+
| | +---------------------------+ * | | System |
| +--| PreconfiguredTunnelAction |-----+ | ([CIMCORE]) |
| +---------------------------+ (e) +--------------+
|
| 2..6+---------------+
+-------| [SATransform] |
(d) +---------------+
(a) PeerGatewayForTunnel
(b) ContainedProposal
(c) HostedPeerGatewayInformation
(d) TransformOfPreconfiguredAction
(e) PeerGatewayForPreconfiguredTunnel
6.1. The Class SAAction
SAAction is abstract, so it's the base class you never make directly ๐ it's the parent for both IKE and IPsec actions, and it's used to bundle different kinds of actions up into IKE and IPsec rules ๐ง here's the definition
NAME SAAction
DESCRIPTION The base class for IKE and IPsec actions.
DERIVED FROM PolicyAction (see [PCIM])
ABSTRACT TRUE
PROPERTIES PolicyActionName (from PolicyAction)
DoActionLogging
DoPacketLogging
6.1.1. The Property DoActionLogging โจ
okay so DoActionLogging is the bool that decides whether a log message gets generated when the action runs ๐ For SANegotiationActions, it means logging a message when the negotiation is attempted, with the success or failure result. It also applies to SAStaticActions, but only PreconfiguredSAActions, where it means logging a message when the preconfigured SA is actually installed in the SADB ๐
NAME DoActionLogging
DESCRIPTION Specifies the whether to log when the action is
performed.
SYNTAX boolean
VALUE true - a log message is to be generated when action
is performed.
false - no log message is to be generated when action
is performed.
6.1.2. The Property DoPacketLogging ๐
DoPacketLogging is giving "log when the SA actually touches a packet" ๐ It decides whether a log message gets generated when the resulting security association is used to process the packet. If a SANegotiationAction runs successfully and creates one or several SAs, or if a PreconfiguredSAAction executes, the DoPacketLogging value SHOULD be propagated to an optional field of the SADB ๐ซถ That optional field should be used to decide whether a log message is generated when the SA processes a packet. For SAStaticActions, a log message is generated when IPsecBypassAction, IPsecDiscardAction, or IKERejectAction runs ๐ฅ
NAME DoPacketLogging
DESCRIPTION Specifies whether to log when the resulting
security association is used to process the packet.
SYNTAX boolean
VALUE true - a log message is to be generated when the
resulting security association is used to process the
packet.
false - no log message is to be generated.
6.2. The Class SAStaticAction ๐ธ
SAStaticAction is abstract, and it's the base class for IKE and IPsec actions that don't need any negotiation ๐ฆ Here's the class definition:
NAME SAStaticAction
DESCRIPTION The base class for IKE and IPsec actions that do not
require any negotiation.
DERIVED FROM SAAction
ABSTRACT TRUE
PROPERTIES LifetimeSeconds
6.2.1. The Property LifetimeSeconds โณ
LifetimeSeconds is how long the security association derived from this action should be used โฐ Defined like this:
NAME LifetimeSeconds
DESCRIPTION Specifies the amount of time (in seconds) that a
security association derived from this action should
be used.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there is not a
lifetime associated with this action (i.e., infinite
lifetime). A non-zero value is typically used in
conjunction with alternate SAActions performed when
there is a negotiation failure of some sort.
Note: if the referenced SAStaticAction object is a PreconfiguredSAAction associated to several SATransforms, then the actual lifetime of the preconfigured SA is the lesser of this LifetimeSeconds value and the MaxLifetimeSeconds value of the associated SATransform. If the LifetimeSeconds value is zero, then there is no lifetime associated to this SA ๐
Note: while some SA negotiation protocols [IKE] can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient ๐ง
It is expected that most SAStaticAction instances will have their LifetimeSeconds properties set to zero, meaning the resulting SA never expires ๐
6.3. The Class IPsecBypassAction ๐
IPsecBypassAction is used when packets are allowed to be processed without IPsec encapsulation applied. That's the same as saying packets are allowed to flow in the clear ๐๏ธ Class definition:
NAME IPsecBypassAction
DESCRIPTION Specifies that packets are to be allowed to pass in
the clear.
DERIVED FROM SAStaticAction
ABSTRACT FALSE
6.4. The Class IPsecDiscardAction ๐ซ
IPsecDiscardAction is used when packets are to be discarded, which is the same as saying packets are to be denied ๐ โโ๏ธ Class definition:
NAME IPsecDiscardAction
DESCRIPTION Specifies that packets are to be discarded.
DERIVED FROM SAStaticAction
ABSTRACT FALSE
6.5. The Class IKERejectAction ๐
IKERejectAction is used to prevent an IKE negotiation from being attempted with the peer(s) ๐งฑ The main use of this class is to prevent some denial of service attacks when acting as IKE responder ๐ญ It goes beyond a plain discard of UDP/500 IKE packets because the SACondition can be based on a specific PeerIDPayloadFilterEntry (when aggressive mode is used) ๐
Class definition:
NAME IKERejectAction
DESCRIPTION Specifies that an IKE negotiation should not even be
attempted or continued.
DERIVED FROM SAStaticAction
ABSTRACT FALSE
6.6. The Class PreconfiguredSAAction ๐
PreconfiguredSAAction is used to create a security association using preconfigured, hard-wired algorithms and keys ๐๏ธ
Notes:
- the SPI for a PreconfiguredSAAction is contained in the association, TransformOfPreconfiguredAction;
- the session key (if applicable) is contained in an instance of the class SharedSecret (see [CIMUSER]). The session key is stored in the property
Secret. The propertyprotocolcontains either"ESP-encrypt","ESP-auth"or"AH". The propertyalgorithmcontains the algorithm used to protect the secret (it can be"PLAINTEXT"if the IPsec entity has no secret storage). The value of propertyRemoteIDis the concatenation of the remote IPsec peer IP address in dotted decimal, the character"/","IN"(respectively"OUT") for an inbound SA (respectively outbound SA), the character"/", and the hexadecimal representation of the SPI.
Although the class is concrete, it MUST not be instantiated ๐จ Here's the class definition:
NAME PreconfiguredSAAction
DESCRIPTION Specifies preconfigured algorithm and keying
information for creation of a security association.
DERIVED FROM SAStaticAction
ABSTRACT TRUE
PROPERTIES LifetimeKilobytes
6.6.1. The Property LifetimeKilobytes ๐
LifetimeKilobytes is a traffic limit in kilobytes that can be consumed before the SA gets deleted ๐๏ธ Defined as:
NAME LifetimeKilobytes
DESCRIPTION Specifies the SA lifetime in kilobytes.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there is not a
lifetime associated with this action (i.e., infinite
lifetime). A non-zero value is used to indicate that
after this number of kilobytes has been consumed the
SA must be deleted from the SADB.
Note: the actual lifetime of the preconfigured SA is the lesser of this LifetimeKilobytes value and the MaxLifetimeSeconds value of the associated SATransform. If the LifetimeKilobytes value is zero, then there is no lifetime associated with this action.
Note: while some SA negotiation protocols [IKE] can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient.
It is expected that most PreconfiguredSAAction instances will have their LifetimeKilobyte properties set to zero, meaning the resulting SA never expires ๐ท
6.7. The Class PreconfiguredTransportAction ๐
PreconfiguredTransportAction is used to create an IPsec transport-mode security association using preconfigured, hard-wired algorithms and keys ๐งฆ Class definition:
NAME PreconfiguredTransportAction
DESCRIPTION Specifies preconfigured algorithm and keying
information for creation of an IPsec transport
security association.
DERIVED FROM PreconfiguredSAAction
ABSTRACT FALSE
6.8. The Class PreconfiguredTunnelAction ๐
PreconfiguredTunnelAction is used to create an IPsec tunnel-mode security association using preconfigured, hard-wired algorithms and keys ๐ง The class definition for PreconfiguredSAAction is as follows:
NAME PreconfiguredTunnelAction
DESCRIPTION Specifies preconfigured algorithm and keying
information for creation of an IPsec tunnel-mode
security association.
DERIVED FROM PreconfiguredSAAction
ABSTRACT FALSE
PROPERTIES DFHandling
6.8.1. The Property DFHandling ๐ณ๏ธ
DFHandling says how the Don't Fragment (DF) bit of the internal IP header gets handled during IPsec processing ๐ช Defined as:
NAME DFHandling
DESCRIPTION Specifies the processing of the DF bit.
SYNTAX unsigned 16-bit integer
VALUE 1 - Copy the DF bit from the internal IP header to
the external IP header.
2 - Set the DF bit of the external IP header to 1.
3 - Clear the DF bit of the external IP header to 0.
6.9. The Class SANegotiationAction ๐ค
SANegotiationAction specifies an action that requests security policy negotiation ๐ฌ
This is an abstract class. Right now, only one security policy negotiation protocol action is subclassed from SANegotiationAction: the IKENegotiationAction class. It's still expected that other security policy negotiation protocols will exist, and their negotiation actions would be modeled as subclasses of SANegotiationAction ๐
NAME SANegotiationAction
DESCRIPTION Specifies a negotiation action.
DERIVED FROM SAAction
ABSTRACT TRUE
6.10. The Class IKENegotiationAction ๐
IKENegotiationAction is abstract and serves as the base class for IKE and IPsec actions that result in an IKE negotiation ๐ซง It specifies the parameters that are common to IKE phase 1 and IKE phase 2 IPsec DOI negotiations. Class definition:
NAME IKENegotiationAction
DESCRIPTION A base class for IKE and IPsec actions that specifies
the parameters that are common for IKE phase 1 and
IKE phase 2 IPsec DOI negotiations.
DERIVED FROM SANegotiationAction
ABSTRACT TRUE
PROPERTIES MinLifetimeSeconds
MinLifetimeKilobytes
IdleDurationSeconds
6.10.1. The Property MinLifetimeSeconds โจ
okay so MinLifetimeSeconds is the floor for how many seconds a lifetime can be before we accept it from the peer ๐ก๏ธ. Why does it matter? A sneaky peer could ask for an arbitrarily tiny lifetime, which forces renegotiations with super expensive Diffie-Hellman operations over and over. That's a denial of service attack, and it is NOT it, bestie ๐ โโ๏ธ๐
NAME MinLifetimeSeconds
DESCRIPTION Specifies the minimum seconds acceptable in a
lifetime.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there is no minimum
value. A non-zero value specifies the minimum
seconds lifetime.
Note: ngl, IKE can negotiate the lifetime as an arbitrary length field, but the authors have assumed that a 64-bit integer will be sufficient ๐คทโโ๏ธ
6.10.2. The Property MinLifetimeKilobytes ๐ฆ
MinLifetimeKilobytes is the kilobytes version of the same idea: it sets the minimum kilobytes of a lifetime that will be accepted from the peer ๐ . It's there to stop the same denial of service move, where the peer asks for a ridiculously low lifetime and makes you redo those pricey Diffie-Hellman operations.
Here's the tea ๐ต: there has been a LOT of debate about whether kilobyte lifetimes even make sense for IKE phase 1 security associations. So it's likely that this property will only apply to the sub-class IPsecAction. Iconic plot twist ๐ญ
NAME MinLifetimeKilobytes
DESCRIPTION Specifies the minimum kilobytes acceptable in a
lifetime.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there is no minimum
value. A non-zero value specifies the minimum
kilobytes lifetime.
Note: While IKE can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient ๐ธ
6.10.3. The Property IdleDurationSeconds ๐ง
IdleDurationSeconds tracks how many seconds a security association can sit idle (aka no traffic protected by it) before it gets deleted ๐๏ธ Idle means nobody is using it, and it's getting cleaned up. Main character energy for SAs that actually get used โจ
NAME IdleDurationSeconds
DESCRIPTION Specifies how long, in seconds, a security
association may remain unused before it is deleted.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that idle detection should
not be used for the security association (only the
seconds and kilobyte lifetimes will be used). Any
non-zero value indicates the number of seconds the
security association may remain unused.
So a value of zero means idle detection is off for that SA, and only the seconds and kilobyte lifetimes do the work ๐ซถ Any non-zero value is the number of seconds the SA may stay unused.
6.11. The Class IPsecAction ๐
okay the IPsecAction class is the base class for IPsec transport and tunnel actions ๐ It sets the parameters used for an IKE phase 2 IPsec DOI negotiation. Basically, it's the template that the transport and tunnel vibes are built on.
NAME IPsecAction
DESCRIPTION A base class for IPsec transport and tunnel actions
that specifies the parameters for IKE phase 2 IPsec
DOI negotiations.
DERIVED FROM IKENegotiationAction
ABSTRACT TRUE
PROPERTIES UsePFS
UseIKEGroup
GroupId
Granularity
VendorID
6.11.1. The Property UsePFS ๐
UsePFS decides whether or not perfect forward secrecy should be used when refreshing keys ๐ It's a yes or no switch, and it's giving very on/off energy.
NAME UsePFS
DESCRIPTION Specifies the whether or not to use PFS when
refreshing keys.
SYNTAX boolean
VALUE A value of true indicates that PFS should be used. A
value of false indicates that PFS should not be used.
6.11.2. The Property UseIKEGroup ๐
UseIKEGroup says whether or not phase 2 should use the same key exchange group that phase 1 used ๐ฏโโ๏ธ Fun detail: UseIKEGroup gets ignored completely if UsePFS is false. Nothing to see here, bestie ๐
NAME UseIKEGroup
DESCRIPTION Specifies whether or not to use the same GroupId for
phase 2 as was used in phase 1. If UsePFS is false,
then UseIKEGroup is ignored.
SYNTAX boolean
VALUE A value of true indicates that the phase 2 GroupId
should be the same as phase 1. A value of false
indicates that the property GroupId will contain the
key exchange group to use for phase 2.
6.11.3. The Property GroupId ๐
GroupId names the key exchange group to use for phase 2 ๐งฉ It only actually matters when UsePFS is true AND UseIKEGroup is false. It gets ignored if (1) UsePFS is false, or (2) UsePFS is true and UseIKEGroup is true. Too many conditions, I know, but that's the vibe ๐ญ
If the GroupID number is from the vendor-specific range (32768-65535), then the property VendorID qualifies the group number ๐ท๏ธ
NAME GroupId
DESCRIPTION Specifies the key exchange group to use for phase 2
when the property UsePFS is true and the property
UseIKEGroup is false.
SYNTAX unsigned 16-bit integer
VALUE Consult [IKE] for valid values.
6.11.4. The Property Granularity ๐
Granularity tells us how the selector for the security association should be derived from the traffic that triggered the negotiation ๐ต๏ธโโ๏ธ Basically, how specific do we get when we're building the selector? There are four levels, and they're all very different.
NAME Granularity
DESCRIPTION Specifies how the proposed selector for the
security association will be created.
SYNTAX unsigned 16-bit integer
VALUE 1 - subnet: the source and destination subnet masks
of the filter entry are used.
2 - address: only the source and destination IP
addresses of the triggering packet are used.
3 - protocol: the source and destination IP addresses
and the IP protocol of the triggering packet are
used.
4 - port: the source and destination IP addresses and
the IP protocol and the source and destination layer
4 ports of the triggering packet are used.
So here's the breakdown ๐: 1 goes by subnet masks from the filter entry, 2 looks only at the source and destination IP addresses, 3 adds the IP protocol, and 4 goes all the way down to the layer 4 ports too ๐ฅ
6.11.5. The Property VendorID ๐ณ๏ธโ๐
VendorID works together with GroupID (when that GroupID is in the vendor-specific range) to identify the key exchange group ๐ค It gets ignored unless UsePFS is true, UseIKEGroup is false, AND GroupID is in the vendor-specific range (32768-65535). Lots of ANDs, lots of rules, very specific girlboss energy ๐
NAME VendorID
DESCRIPTION Specifies the IKE Vendor ID.
SYNTAX string
6.12. The Class IPsecTransportAction ๐
The IPsecTransportAction class is a subclass of IPsecAction, and it's used to specify use of an IPsec transport-mode security association ๐ฆ It's the transport-mode lane, sis.
NAME IPsecTransportAction
DESCRIPTION Specifies that an IPsec transport-mode security
association should be negotiated.
DERIVED FROM IPsecAction
ABSTRACT FALSE
6.13. The Class IPsecTunnelAction ๐ท
The IPsecTunnelAction class is also a subclass of IPsecAction ๐ซง This one is used to specify use of an IPsec tunnel-mode security association. Tunnel-mode girlies, this one's for you ๐
NAME IPsecTunnelAction
DESCRIPTION Specifies that an IPsec tunnel-mode security
association should be negotiated.
DERIVED FROM IPsecAction
ABSTRACT FALSE
PROPERTIES DFHandling
6.13.1. The Property DFHandling ๐
DFHandling specifies how the tunnel should manage the Don't Fragment (DF) bit ๐ฆ It's the tunnel's rule for what happens to that bit.
NAME DFHandling
DESCRIPTION Specifies how to process the DF bit.
SYNTAX unsigned 16-bit integer
VALUE 1 - Copy the DF bit from the internal IP header to
the external IP header.
2 - Set the DF bit of the external IP header to 1.
3 - Clear the DF bit of the external IP header to 0.
So there are three options ๐: 1 copies the DF bit from the internal IP header to the external one, 2 sets the external DF bit to 1, and 3 clears the external DF bit to 0 ๐
6.14. The Class IKEAction ๐
The IKEAction class specifies the parameters that are to be used for IKE phase 1 negotiation ๐ธ This is the phase 1 setup, the glow-up before the main event.
NAME IKEAction
DESCRIPTION Specifies the IKE phase 1 negotiation parameters.
DERIVED FROM IKENegotiationAction
ABSTRACT FALSE
PROPERTIES ExchangeMode
UseIKEIdentityType
VendorID
AggressiveModeGroupId
6.14.1. The Property ExchangeMode ๐ง
ExchangeMode specifies which IKE mode should be used for IKE phase 1 negotiations ๐ถ Three options exist: base mode, main mode, and aggressive mode, and each one has its own number.
NAME ExchangeMode
DESCRIPTION Specifies the IKE negotiation mode for phase 1.
SYNTAX unsigned 16-bit integer
VALUE 1 - base mode
2 - main mode
4 - aggressive mode
Yes, the numbers skip 3. Don't ask me why, it's giving mystery ๐
6.14.2. The Property UseIKEIdentityType ๐ชช
UseIKEIdentityType specifies what IKE identity type should be used when negotiating with the peer ๐คณ This info gets used together with the IKE identities available on the system and the IdentityContexts of the matching IKERule. Teamwork makes the dream work ๐
NAME UseIKEIdentityType
DESCRIPTION Specifies the IKE identity to use during negotiation.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
6.14.3. The Property VendorID ๐ท๏ธ
VendorID specifies the value to be used in the Vendor ID payload ๐ฌ Here's the fun part: NULL means the Vendor ID payload is neither generated nor accepted, but a non-NULL value means it WILL be generated when you're the initiator, or EXPECTED when you're the responder ๐ฅฐ
NAME VendorID
DESCRIPTION Vendor ID Payload.
SYNTAX string
VALUE A value of NULL means that Vendor ID payload will be
neither generated nor accepted. A non-NULL value
means that a Vendor ID payload will be generated
(when acting as an initiator) or is expected (when
acting as a responder).
6.14.4. The Property AggressiveModeGroupId ๐
AggressiveModeGroupId specifies which group ID is used in the first packets of the phase 1 negotiation ๐ช It gets ignored unless ExchangeMode is set to 4 (aggressive mode). And if the AggressiveModeGroupID number is from the vendor-specific range (32768-65535), then VendorID is the one that qualifies the group number ๐ซถ
NAME AggressiveModeGroupId
DESCRIPTION Specifies the group ID to be used for aggressive
mode.
SYNTAX unsigned 16-bit integer
6.15. The Class PeerGateway ๐
The PeerGateway class specifies the security gateway that the IKE services negotiate with ๐ค It's the peer you're actually talking to, so it's a big deal.
NAME PeerGateway
DESCRIPTION Specifies the security gateway with which to
negotiate.
DERIVED FROM LogicalElement (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Name
PeerIdentityType
PeerIdentity
Note: The class PeerIdentityEntry contains more information about the peer (namely its IP address) ๐
6.15.1. The Property Name โจ
okay so Name is just the user-friendly label for this security gateway ๐ like, the nickname you'd actually recognise on a dashboard. here's the definition:
NAME Name
DESCRIPTION Specifies a user-friendly name for this security
gateway.
SYNTAX string
6.15.2. The Property PeerIdentityType ๐ฆ
PeerIdentityType tells you the IKE identity type of the security gateway, so the other side knows what kind of ID it's looking at ๐ซถ the actual valid values aren't listed here. you have to go check [DOI] for those, so bookmark that bestie ๐
NAME PeerIdentityType
DESCRIPTION Specifies the IKE identity type of the security
gateway.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
6.15.3. The Property PeerIdentity ๐ธ
PeerIdentity is the IKE identity value of the security gateway, the actual thing that goes in there. now the tea: the way it's stored in your task-specific mapping of the information model might be different from what goes on the wire, so you may need a conversion from the stored PeerIdentity string to the real value used in the ID payload. the classic example is an IP address. it's stored as a dotted decimal string, but it has to become 4 bytes. it's giving translation layer energy ๐ง
NAME PeerIdentity
DESCRIPTION Specifies the IKE identity value of the security
gateway.
SYNTAX string
6.16. The Association Class PeerGatewayForTunnel ๐
okay this one is the matchmaker ๐ PeerGatewayForTunnel links IPsecTunnelActions up with an ordered list of PeerGateways, so the order actually matters. here's the class definition:
NAME PeerGatewayForTunnel
DESCRIPTION Associates IPsecTunnelActions with an ordered list of
PeerGateways.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref PeerGateway[0..n]]
Dependent [ref IPsecTunnelAction[0..n]]
SequenceNumber
6.16.1. The Reference Antecedent ๐
the Antecedent is inherited from Dependency, but it gets overridden so it points at a PeerGateway instance. the [0..n] cardinality means an IPsecTunnelAction instance can be linked to zero or more PeerGateway instances.
Note: the cardinality 0 has a very specific meaning, so pay attention ๐
- when the IKE service acts as a responder, this means that the IKE service will accept phase 1 negotiation with any other security gateway;
- when the IKE service acts as an initiator, this means that the IKE service will use the destination IP address (of the IP packets which triggered the SARule) as the IP address of the peer IKE entity.
6.16.2. The Reference Dependent ๐ง
the Dependent is also inherited from Dependency and is overridden to point at an IPsecTunnelAction instance. the [0..n] cardinality means a PeerGateway instance can be linked to zero or more IPsecTunnelAction instances. so it's a two-way friendship, no pressure ๐
6.16.3. The Property SequenceNumber ๐ฅ
SequenceNumber sets the order used when evaluating PeerGateway instances for a given IPsecTunnelAction. first in line gets checked first ๐โโ๏ธ
NAME SequenceNumber
DESCRIPTION Specifies the order of evaluation for PeerGateways.
SYNTAX unsigned 16-bit integer
VALUE Lower values are evaluated first.
6.17. The Aggregation Class ContainedProposal ๐
the ContainedProposal class is the proposal bundle. it links an ordered list of SAProposals to the IKENegotiationAction that aggregates it. the type rules are super strict and I am obsessed ๐ญ if the IKENegotiationAction is an IKEAction, the SAProposal objects must be IKEProposal(s). if it's an IPsecTransportAction or an IPsecTunnelAction, the SAProposal objects must be IPsecProposal(s). here's the definition:
NAME ContainedProposal
DESCRIPTION Associates an ordered list of SAProposals with an
IKENegotiationAction.
DERIVED FROM PolicyComponent (see [PCIM])
ABSTRACT FALSE
PROPERTIES GroupComponent[ref IKENegotiationAction[0..n]]
PartComponent[ref SAProposal[1..n]]
SequenceNumber
6.17.1. The Reference GroupComponent ๐
- the GroupComponent is inherited from PolicyComponent and gets overridden to point at an IKENegotiationAction instance. the [0..n] cardinality means an SAProposal instance can be associated with zero or more IKENegotiationAction instances.
6.17.2. The Reference PartComponent ๐ซถ
the PartComponent is inherited from PolicyComponent and is overridden to point at an SAProposal instance. the [1..n] cardinality is the strict part ๐จ an IKENegotiationAction instance MUST be associated with at least one SAProposal instance. no empty bundles allowed, periodt.
6.17.3. The Property SequenceNumber ๐
SequenceNumber here sets the order of preference for the SAProposals.
NAME SequenceNumber
DESCRIPTION Specifies the preference order for the SAProposals.
SYNTAX unsigned 16-bit integer
VALUE Lower-valued proposals are preferred over proposals
with higher values. For ContainedProposals that
reference the same IKENegotiationAction,
SequenceNumber values must be unique.
6.18. The Association Class HostedPeerGatewayInformation ๐ธ
this one is a weak association ๐ฅบ HostedPeerGatewayInformation loosely links a PeerGateway with a System. here's the class definition:
NAME HostedPeerGatewayInformation
DESCRIPTION Weakly associates a PeerGateway with a System.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref System[1..1]]
Dependent [ref PeerGateway[0..n] [weak]]
6.18.1. The Reference Antecedent ๐
the Antecedent is inherited from Dependency and is overridden to point at a System instance. the [1..1] cardinality means a PeerGateway instance MUST be associated with one and only one System instance. one host, no sharing the spotlight โจ
6.18.2. The Reference Dependent ๐ฆ
the Dependent is inherited from Dependency and is overridden to point at a PeerGateway instance. the [0..n] cardinality means a System instance can be associated with zero or more PeerGateway instances.
6.19. The Association Class TransformOfPreconfiguredAction ๐ง
TransformOfPreconfiguredAction ties a PreconfiguredSAAction to two, four or six SATransforms, which get applied to the inbound and outbound traffic. the order those transforms get applied in is implicitly defined in [IPSEC], so go read that if you're curious ๐ here's the definition:
NAME TransformOfPreconfiguredAction
DESCRIPTION Associates a PreconfiguredSAAction with from one to
three SATransforms.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent[ref SATransform[2..6]]
Dependent[ref PreconfiguredSAAction[0..n]]
SPI
Direction
6.19.1. The Reference Antecedent ๐
the Antecedent is inherited from Dependency and is overridden to point at an SATransform instance. the [2..6] cardinality means a PreconfiguredSAAction instance can be associated with two to six SATransform instances.
6.19.2. The Reference Dependent ๐
the Dependent is inherited from Dependency and is overridden to point at a PreconfiguredSAAction instance. the [0..n] cardinality means an SATransform instance can be associated with zero or more PreconfiguredSAAction instances.
6.19.3. The Property SPI ๐ฅ
SPI is the SPI the pre-configured action uses for the associated transform.
NAME SPI
DESCRIPTION Specifies the SPI to be used with the SATransform.
SYNTAX unsigned 32-bit integer
6.19.4. The Property Direction ๐
Direction says whether the SPI property is for inbound or outbound traffic. two options, pick your side ๐
NAME Direction
DESCRIPTION Specifies whether the SA is for inbound or outbound
traffic.
SYNTAX unsigned 8-bit integer
VALUE 1 - this SA is for inbound traffic
2 - this SA is for outbound traffic
6.20 The Association Class PeerGatewayForPreconfiguredTunnel ๐
PeerGatewayForPreconfiguredTunnel associates zero or one PeerGateways with multiple PreconfiguredTunnelActions. it's a little bit of a situationship ๐ here's the definition:
NAME PeerGatewayForPreconfiguredTunnel
DESCRIPTION Associates a PeerGateway with multiple
PreconfiguredTunnelActions.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent[ref PeerGateway[0..1]]
Dependent[ref PreconfiguredTunnelAction[0..n]]
6.20.1. The Reference Antecedent ๐ง
the Antecedent is inherited from Dependency and is overridden to point at a PeerGateway instance. the [0..1] cardinality means a PreconfiguredTunnelAction instance can be associated with one PeerGteway instance.
6.20.2. The Reference Dependent ๐ธ
the Dependent is inherited from Dependency and is overridden to point at a PreconfiguredTunnelAction instance. the [0..n] cardinality means a PeerGateway instance can be associated with zero or more PreconfiguredSAAction instances.
7. Proposal and Transform Classes โจ
okay this section is the menu ๐ฝ๏ธ the proposal and transform classes model the proposal settings an IPsec device uses during IKE phase 1 and 2 negotiations. here's the big picture:
+--------------+*w 1+--------------+
| [SAProposal] |--------| System |
+--------------+ (a) | ([CIMCORE]) |
^ +--------------+
| |1
+----------------------+ |
| | |
+-------------+ +---------------+ |
| IKEProposal | | IPsecProposal | |
+-------------+ +---------------+ |
*o |
|(b) |(c)
n| |
+---------------+*w |
| [SATransform] |----+
+---------------+
^
|
+--------------------+-----------+---------+
| | |
+-------------+ +--------------+ +----------------+
| AHTransform | | ESPTransform | |IPCOMPTransform |
+-------------+ +--------------+ +----------------+
(a) SAProposalInSystem
(b) ContainedTransform
(c) SATransformInSystem
7.1. The Abstract Class SAProposal ๐
the abstract SAProposal class is the base class for the IKE and IPsec proposal classes ๐ซถ it holds the parameters both proposal types have in common. here's the class definition:
NAME SAProposal
DESCRIPTION Specifies the common proposal parameters for IKE and
IPsec security association negotiation.
DERIVED FROM Policy ([PCIM])
ABSTRACT TRUE
PROPERTIES Name
7.1.1. The Property Name
okay so the property Name is basically the user-friendly name for the SAProposal ๐ it's the label that makes a proposal easy to recognise, and here's how it's defined:
NAME Name
DESCRIPTION Specifies a user-friendly name for this proposal.
SYNTAX string
7.2. The Class IKEProposal
the IKEProposal class is where the magic happens ๐ฆ it holds the proposal parameters you need to drive an IKE security association negotiation. here's the class definition:
NAME IKEProposal
DESCRIPTION Specifies the proposal parameters for IKE security
association negotiation.
DERIVED FROM SAProposal
ABSTRACT FALSE
PROPERTIES CipherAlgorithm
HashAlgorithm
PRFAlgorithm
GroupId
AuthenticationMethod
MaxLifetimeSeconds
MaxLifetimeKilobytes
VendorID
7.2.1. The Property CipherAlgorithm
the property CipherAlgorithm is how you specify the proposed phase 1 security association encryption algorithm ๐ bestie, the definition:
NAME CipherAlgorithm
DESCRIPTION Specifies the proposed encryption algorithm for the
phase 1 security association.
SYNTAX unsigned 16-bit integer
VALUE Consult [IKE] for valid values.
7.2.2. The Property HashAlgorithm
the property HashAlgorithm specifies the proposed phase 1 security association hash algorithm โจ it's giving integrity check vibes. here's the definition:
NAME HashAlgorithm
DESCRIPTION Specifies the proposed hash algorithm for the phase 1
security association.
SYNTAX unsigned 16-bit integer
VALUE Consult [IKE] for valid values.
7.2.3. The Property PRFAlgorithm
the property PRFAlgorithm specifies the proposed phase 1 security association pseudo-random function ๐ธ this one's a little bit of a plot twist, because there are none defined in [IKE] right now ๐ if [IKE, DOI] get extended, though, their values are the ones to use. the definition:
NAME PRFAlgorithm
DESCRIPTION Specifies the proposed pseudo-random function for the
phase 1 security association.
SYNTAX unsigned 16-bit integer
VALUE Currently none defined in [IKE], if [IKE, DOI] are
extended, then the values of [IKE, DOI] are to be
used for values of PRFAlgorithm.
7.2.4. The Property GroupId
the property GroupId specifies the proposed phase 1 security association key exchange group ๐ slay, but there's a twist: this property is ignored for all aggressive mode exchanges ๐ and if the GroupID number is from the vendor-specific range (32768-65535), the property VendorID qualifies the group number. the definition:
NAME GroupId
DESCRIPTION Specifies the proposed key exchange group for the
phase 1 security association.
SYNTAX unsigned 16-bit integer
VALUE Consult [IKE] for valid values.
๐ Note: The value of this property is to be ignored in aggressive mode.
7.2.5. The Property AuthenticationMethod
the property AuthenticationMethod specifies the proposed phase 1 authentication method ๐ this one is lowkey iconic because a value of 0 is a special case. it means this proposal should be repeated once for each authentication method that matches the credentials installed on the machine ๐ซถ so if the system has a pre-shared key and a certificate, your proposal list could include a pre-shared key proposal plus proposals for any of the public-key authentication methods. the definition:
NAME AuthenticationMethod
DESCRIPTION Specifies the proposed authentication method for the
phase 1 security association.
SYNTAX unsigned 16-bit integer
VALUE 0 - a special value that indicates that this
particular proposal should be repeated once for each
authentication method that corresponds to the
credentials installed on the machine. For example,
if the system has a pre-shared key and a certificate,
a proposal list could be constructed that includes a
proposal that specifies a pre-shared key and
proposals for any of the public-key authentication
methods. Consult [IKE] for valid values.
7.2.6. The Property MaxLifetimeSeconds
the property MaxLifetimeSeconds specifies the proposed maximum time, in seconds, that a security association stays valid after it's created โณ a value of zero means the default of 8 hours gets used, and any non-zero value is the maximum seconds lifetime. the definition:
NAME MaxLifetimeSeconds
DESCRIPTION Specifies the proposed maximum time that a
security association will remain valid.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that the default of 8
hours be used. A non-zero value indicates the
maximum seconds lifetime.
๐ Note: While IKE can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient.
7.2.7. The Property MaxLifetimeKilobytes
the property MaxLifetimeKilobytes is the proposed maximum kilobyte lifetime a security association stays valid after its creation ๐ฆ a value of zero means there should be no maximum kilobyte lifetime, and a non-zero value is the kilobyte lifetime you want. the definition:
NAME MaxLifetimeKilobytes
DESCRIPTION Specifies the proposed maximum kilobyte lifetime
that a security association will remain valid.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there should be no
maximum kilobyte lifetime. A non-zero value
specifies the desired kilobyte lifetime.
๐ Note: While IKE can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient.
7.2.8. The Property VendorID
the property VendorID further qualifies the key exchange group ๐ท๏ธ and it's only looked at when the exchange is not in aggressive mode and the GroupID is in the vendor-specific range. so it's very much a "only if" kind of property ๐ the definition:
NAME VendorID
DESCRIPTION Specifies the Vendor ID to further qualify the key
exchange group.
SYNTAX string
7.3. The Class IPsecProposal
the IPsecProposal class adds no new properties ๐ฟ it just inherits the proposal properties from SAProposal, and it aggregates the security association transforms needed to build an IPsec proposal (see the aggregation class ContainedTransform). here's the class definition:
NAME IPsecProposal
DESCRIPTION Specifies the proposal parameters for IPsec security
association negotiation.
DERIVED FROM SAProposal
ABSTRACT FALSE
7.4. The Abstract Class SATransform
the abstract class SATransform is the base class for the IPsec transforms ๐ง these can be used to compose an IPsec proposal or to be used as a pre-configured action. it's abstract, so you never make one directly. here's the class definition:
NAME SATransform
DESCRIPTION Base class for the different IPsec transforms.
ABSTRACT TRUE
PROPERTIES CommonName (from Policy)
VendorID
MaxLifetimeSeconds
MaxLifetimeKilobytes
7.4.1. The Property CommonName
the property CommonName is inherited from Policy [PCIM] and it's the user-friendly name for the SATransform ๐ the definition:
NAME CommonName
DESCRIPTION Specifies a user-friendly name for this Policy-
related object.
SYNTAX string
7.4.2. The Property VendorID
the property VendorID specifies the vendor ID for vendor-defined transforms ๐ and an empty VendorID string means the transform is a standard one. the definition:
NAME VendorID
DESCRIPTION Specifies the vendor ID for vendor-defined
transforms.
SYNTAX string
VALUE An empty VendorID string indicates that the transform
is a standard one.
7.4.3. The Property MaxLifetimeSeconds
the property MaxLifetimeSeconds is the same vibe as the one in 7.2.6 โณ it specifies the proposed maximum time, in seconds, that a security association stays valid after its creation. zero means the default of 8 hours gets used, and a non-zero value is the maximum seconds lifetime. the definition:
NAME MaxLifetimeSeconds
DESCRIPTION Specifies the proposed maximum time that a
security association will remain valid.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that the default of 8 hours
be used. A non-zero value indicates the maximum
seconds lifetime.
๐ Note: While IKE can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient.
7.4.4. The Property MaxLifetimeKilobytes
the property MaxLifetimeKilobytes is the proposed maximum kilobyte lifetime a security association stays valid after its creation ๐ zero means there should be no maximum kilobyte lifetime, and a non-zero value is the desired kilobyte lifetime. the definition:
NAME MaxLifetimeKilobytes
DESCRIPTION Specifies the proposed maximum kilobyte lifetime
that a security association will remain valid.
SYNTAX unsigned 64-bit integer
VALUE A value of zero indicates that there should be no
maximum kilobyte lifetime. A non-zero value
specifies the desired kilobyte lifetime.
๐ Note: While IKE can negotiate the lifetime as an arbitrary length field, the authors have assumed that a 64-bit integer will be sufficient.
7.5. The Class AHTransform
the class AHTransform specifies the AH algorithm to propose during IPsec security association negotiation ๐ฆ this is the one for the Authentication Header side of things. the definition:
NAME AHTransform
DESCRIPTION Specifies the proposed AH algorithm.
ABSTRACT FALSE
PROPERTIES AHTransformId
UseReplayPrevention
ReplayPreventionWindowSize
7.5.1. The Property AHTransformId
the property AHTransformId specifies the transform ID of the AH algorithm ๐ the definition:
NAME AHTransformId
DESCRIPTION Specifies the transform ID of the AH algorithm.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
7.5.2. The Property UseReplayPrevention
the property UseReplayPrevention says whether replay prevention detection is to be used ๐ก๏ธ true means it's enabled, false means it's disabled. no drama. the definition:
NAME UseReplayPrevention
DESCRIPTION Specifies whether to enable replay prevention
detection.
SYNTAX boolean
VALUE true - replay prevention detection is enabled.
false - replay prevention detection is disabled.
7.5.3. The Property ReplayPreventionWindowSize
the property ReplayPreventionWindowSize specifies, in bits, the length of the sliding window used by the replay prevention detection mechanism ๐ช the value doesn't mean anything if UseReplayPrevention is false, and it's assumed the window size will be power of 2. the definition:
NAME ReplayPreventionWindowSize
DESCRIPTION Specifies the length of the window used by the replay
prevention detection mechanism.
SYNTAX unsigned 32-bit integer
7.6. The Class ESPTransform
the class ESPTransform specifies the ESP algorithms to propose during IPsec security association negotiation ๐ฅ and it's the other big transform class, so pay attention. the definition:
NAME ESPTransform
DESCRIPTION Specifies the proposed ESP algorithms.
ABSTRACT FALSE
PROPERTIES IntegrityTransformId
CipherTransformId
CipherKeyLength
CipherKeyRounds
UseReplayPrevention
ReplayPreventionWindowSize
7.6.1. The Property IntegrityTransformId
okay so this property is where you put the transform ID of the ESP integrity algorithm ๐ it's giving very specific energy, and the definition is right here:
NAME IntegrityTransformId
DESCRIPTION Specifies the transform ID of the ESP integrity
algorithm.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
7.6.2. The Property CipherTransformId
bestie, this one is the sister of the last property ๐ it names the transform ID for the ESP encryption algorithm, and it's the same shape: an unsigned 16-bit integer, and you go check [DOI] for the valid values ๐ธ
NAME CipherTransformId
DESCRIPTION Specifies the transform ID of the ESP encryption
algorithm.
SYNTAX unsigned 16-bit integer
VALUE Consult [DOI] for valid values.
7.6.3. The Property CipherKeyLength
so the key length lives here, measured in bits ๐ and honestly the fun twist is that for encryption algorithms that use a fixed-length keys, this value just gets ignored. no cap, that's a whole vibe check ๐
NAME CipherKeyLength
DESCRIPTION Specifies the ESP encryption key length in bits.
SYNTAX unsigned 16-bit integer
7.6.4. The Property CipherKeyRounds
this one is about the number of key rounds for the ESP encryption algorithm ๐ same energy as the last one: if the algorithm uses a fixed number of key rounds, this value is ignored. and the VALUE line is literally the tea: right now, key rounds aren't defined for any ESP encryption algorithms ๐
NAME CipherKeyRounds
DESCRIPTION Specifies the number of key rounds for the ESP
encryption algorithm.
SYNTAX unsigned 16-bit integer
VALUE Currently, key rounds are not defined for any ESP
encryption algorithms.
7.6.5. The Property UseReplayPrevention
this is the on-off switch for replay prevention detection ๐ฆ it's a boolean, so it's either true (enabled) or false (disabled). simple, iconic, no notes ๐ฆ
NAME UseReplayPrevention
DESCRIPTION Specifies whether to enable replay prevention
detection.
SYNTAX boolean
VALUE true - replay prevention detection is enabled.
false - replay prevention detection is disabled.
7.6.6. The Property ReplayPreventionWindowSize
okay so this one measures, in bits, the length of the sliding window that the replay prevention detection mechanism uses ๐ช but here's the plot twist: if UseReplayPrevention is false, this value is meaningless, so don't even look at it ๐ also, it's assumed the window size will be a power of 2, which is very on-brand for it ๐ง
NAME ReplayPreventionWindowSize
DESCRIPTION Specifies the length of the window used by the replay
prevention detection mechanism.
SYNTAX unsigned 32-bit integer
7.7. The Class IPCOMPTransform
this class is how you propose the IP compression (IPCOMP) algorithm while IPsec security associations are being negotiated ๐๏ธ it's a whole little package, so here's its definition:
NAME IPCOMPTransform
DESCRIPTION Specifies the proposed IPCOMP algorithm.
ABSTRACT FALSE
PROPERTIES Algorithm
DictionarySize
PrivateAlgorithm
7.7.1. The Property Algorithm
this property holds the transform ID of the IPCOMP compression algorithm ๐ฏ and if the value is 1, that means OUI: a vendor-specific algorithm gets used, and it's spelled out in the PrivateAlgorithm property. for any other values, go check [DOI] ๐
NAME Algorithm
DESCRIPTION Specifies the transform ID of the IPCOMP compression
algorithm.
SYNTAX unsigned 16-bit integer
VALUE 1 - OUI: a vendor specific algorithm is used and
specified in the property PrivateAlgorithm. Consult
[DOI] for other valid values.
7.7.2. The Property DictionarySize
this one is the log2 maximum size of the dictionary for the compression algorithm ๐ if the compression algorithm has pre-defined dictionary sizes, this value gets ignored, so no stress there ๐ซถ
NAME DictionarySize
DESCRIPTION Specifies the log2 maximum size of the dictionary.
SYNTAX unsigned 16-bit integer
7.7.3. The Property PrivateAlgorithm
this is the place for a private, vendor-specific compression algorithm ๐ต๏ธโโ๏ธ and it's only used when the Algorithm property is 1 (OUI), so it's kind of the VIP guest of the group ๐
NAME PrivateAlgorithm
DESCRIPTION Specifies a private vendor-specific compression
algorithm.
SYNTAX unsigned 32-bit integer
7.8. The Association Class SAProposalInSystem
this association class weakly links SAProposals to a System ๐ it's derived from PolicyInSystem (see [PCIM]), and the definition goes like this:
NAME SAProposalInSystem
DESCRIPTION Weakly associates SAProposals with a System.
DERIVED FROM PolicyInSystem (see [PCIM])
ABSTRACT FALSE
PROPERTIES Antecedent[ref System [1..1]]
Dependent[ref SAProposal[0..n] [weak]]
7.8.1. The Reference Antecedent
the Antecedent property is inherited from PolicyInSystem, but it gets overridden so it points at a System instance ๐ the [1..1] cardinality means an SAProposal instance MUST be associated with one and only one System instance. strict, but iconic ๐
7.8.2. The Reference Dependent
the Dependent property is also inherited from PolicyInSystem, and it gets overridden so it points at an SAProposal instance ๐ the [0..n] cardinality means a System instance may be associated with zero or more SAProposal instances, so it's flexible and chill โจ
7.9. The Aggregation Class ContainedTransform
this aggregation class is the one that ties an IPsecProposal to the set of SATransforms that make up the proposal ๐งฉ here's the vibe: if there are multiple transforms of the same type in a proposal, they get logically ORed, and the order of preference is set by the SequenceNumber property. but transforms of different types are logically ANDed ๐ค
here's a little example, bestie, with an ordered proposal list like this:
ESP = { (HMAC-MD5, 3DES), (HMAC-MD5, DES) }
AH = { MD5, SHA-1 }
then the one sending the proposal would want the other side to pick one from the ESP transform (preferably (HMAC-MD5, 3DES)) list AND one from the AH transform list (preferably MD5) ๐ that's the whole ANDed-but-ORed dance right there
the class definition is:
NAME ContainedTransform
DESCRIPTION Associates an IPsecProposal with the set of
SATransforms that make up the proposal.
DERIVED FROM PolicyComponent (see [PCIM])
ABSTRACT FALSE
PROPERTIES GroupComponent[ref IPsecProposal[0..n]]
PartComponent[ref SATransform[1..n]]
SequenceNumber
7.9.1. The Reference GroupComponent
the GroupComponent property is inherited from PolicyComponent, and it's overridden so it refers to an IPsecProposal instance ๐ the [0..n] cardinality says an SATransform instance may be associated with zero or more IPsecProposal instances
7.9.2. The Reference PartComponent
the PartComponent property is inherited from PolicyComponent too, and it gets overridden to refer to an SATransform instance ๐ง the [1..n] cardinality means an IPsecProposal instance MUST be associated with at least one SATransform instance. so every proposal needs at least one transform, periodt ๐
7.9.3. The Property SequenceNumber
this property sets the order of preference for SATransforms of the same type ๐ฅ here's how it's defined:
NAME SequenceNumber
DESCRIPTION Specifies the preference order for the SATransforms
of the same type.
SYNTAX unsigned 16-bit integer
VALUE Lower-valued transforms are preferred over transforms
of the same type with higher values. For
ContainedTransforms that reference the same
IPsecProposal, SequenceNumber values must be unique.
7.10. The Association Class SATransformInSystem
this association class weakly links SATransforms to a System ๐ฆข it's derived from PolicyInSystem (see [PCIM]), and here's the definition:
NAME SATransformInSystem
DESCRIPTION Weakly associates SATransforms with a System.
DERIVED FROM PolicyInSystem (see [PCIM])
ABSTRACT FALSE
PROPERTIES Antecedent[ref System[1..1]]
Dependent[ref SATransform[0..n] [weak]]
7.10.1. The Reference Antecedent
the Antecedent property is inherited from PolicyInSystem and overridden to refer to a System instance ๐ท the [1..1] cardinality indicates that an SATransform instance MUST be associated with one and only one System instance. rules are rules, bestie ๐
7.10.2. The Reference Dependent
the Dependent property is inherited from PolicyInSystem and overridden to refer to an SATransform instance ๐ the [0..n] cardinality means a System instance may be associated with zero or more SATransform instances, so there's room for lots of transforms ๐ซง
8. IKE Service and Identity Classes โจ
okay so this is where the IKE stuff lives, and honestly it's giving main character energy ๐ here's the big picture diagram ๐ฆ
+--------------+ +-------------------+
| System | | PeerIdentityEntry |
| ([CIMCORE]) | +-------------------+
+--------------+ |*w
1| (a) (b) |
+---+ +------------+
| |
|*w 1 o
+-------------+ +-------------------+ +---------------------+
| PeerGateway | | PeerIdentityTable | | AutostartIKESetting |
+-------------+ +-------------------+ +---------------------+
*| *| *| *|
+----------------------+ |(d) +----------+ |
(c) *| *| *| (e) |
*+------------+* |(f)
+-----------------| IKEService |-----+ |
| (g) +------------+ |(h) |
0..1| *| *| *o
+--------------------+ | +---------------------------+
| IPProtocolEndpoint | | | AutostartIKEConfiguration |
| ([CIMNETWORK]) | (i)| +---------------------------+
+--------------------+ |
0..1| |
|(j) +----------------+
*| |*
+-------------+* (k) +------------+ +-----------------------------+
| IKEIdentity |-------| Collection | | CredentialManagementService |
+-------------+ 0..1| ([CIMCORE])| | ([CIMUSER]) |
*| +------------+ +-----------------------------+
|(l)
*|
+--------------+
| Credential |
| ([CIMUSER]) |
+--------------+
(a) HostedPeerIdentityTable
(b) PeerIdentityMember
(c) IKEServicePeerGateway
(d) IKEServicePeerIdentityTable
(e) IKEAutostartSetting
(f) AutostartIKESettingContext
(g) IKEServiceForEndpoint
(h) IKEAutostartConfiguration
(i) IKEUsesCredentialManagementService
(j) EndpointHasLocalIKEIdentity
(k) CollectionHasLocalIKEIdentity
(l) IKEIdentitysCredential
so this part of the model has the extra info you need to actually apply the policy ๐ The IKEService class MAY be used to represent the IKE negotiation function in a system. The IKEService uses the various tables that hold info about IKE peers, plus the config for security associations that get started automatically. The info in PeerGateway, PeerIdentityTable and the related classes is necessary to fully specify the policies. no cap, you need all of it ๐ซถ
An interface (shown as an IPProtocolEndpoint) has an IKEService that provides the negotiation services for that interface. That service MAY also have a list of security associations that get automatically started when the IKE service is initialized. ๐ธ
The IKEService also has a set of identities it may use in negotiations with its peers. Those identities are associated with the interfaces (or collections of interfaces). iykyk ๐ง
8.1. The Class IKEService
the class IKEService represents the IKE negotiation function ๐ an instance of this service may provide that negotiation for one or more interfaces (represented by the IPProtocolEndpoint class) of a System. there can be multiple IKE services on a System, but only one per interface. here's the definition ๐
NAME IKEService
DESCRIPTION IKEService is used to represent the IKE negotiation
function.
DERIVED FROM Service (see [CIMCORE])
ABSTRACT FALSE
8.2. The Class PeerIdentityTable
the class PeerIdentityTable aggregates the table entries that map identities to their addresses. so cute, it's like a little address book for peers ๐
NAME PeerIdentityTable
DESCRIPTION PeerIdentityTable aggregates PeerIdentityEntry
instances to provide a table of identity-address
mappings.
DERIVED FROM Collection (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Name
8.2.1. The Property Name
the property Name uniquely identifies the table โจ
NAME Name
DESCRIPTION Name uniquely identifies the table.
SYNTAX string
8.3. The Class PeerIdentityEntry
the class PeerIdentityEntry specifies the mapping between a peer's identity and its IP address ๐ฆ here's the class definition:
NAME PeerIdentityEntry
DESCRIPTION PeerIdentityEntry provides a mapping between a peer's
identity and address.
DERIVED FROM LogicalElement (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES PeerIdentity
PeerIdentityType
PeerAddress
PeerAddressType
ok the pre-shared key for this peer (if there is one) lives in an instance of the class SharedSecret (see [CIMUSER]) ๐ฅ the key goes in the property Secret, and the property protocol contains "IKE". the property algorithm holds the algorithm used to protect the secret. it can be "PLAINTEXT" if the IPsec entity has no secret storage ๐ and the value of property RemoteID must match the PeerIdentity property of the PeerIdentityEntry instance describing the IKE peer. bestie, don't skip that one ๐
8.3.1. The Property PeerIdentity
the property PeerIdentity holds a string encoding of the Identity payload for the IKE peer ๐
NAME PeerIdentity
DESCRIPTION The PeerIdentity is the ID payload of a peer.
SYNTAX string
8.3.2. The Property PeerIdentityType
PeerIdentityType is an enumeration that says what type the PeerIdentity is ๐ the enumeration values are specified in [DOI] section 4.6.2.1.
NAME PeerIdentityType
DESCRIPTION PeerIdentityType is the type of the ID payload of a
peer.
SYNTAX unsigned 16-bit integer
VALUE The enumeration values are specified in [DOI] section
4.6.2.1.
8.3.3. The Property PeerAddress
PeerAddress is the string representation of the peer's IP address, formatted according to the convention named in the PeerAddressType property (e.g., dotted decimal notation) ๐ธ
NAME PeerAddress
DESCRIPTION PeerAddress is the address of the peer with the ID
payload.
SYNTAX string
VALUE String representation of an IPv4 or IPv6 address.
8.3.4. The Property PeerAddressType
PeerAddressType says what format the PeerAddress value is in ๐
NAME PeerAddressType
DESCRIPTION PeerAddressType is the type of address in
PeerAddress.
SYNTAX unsigned 16-bit integer
VALUE 0 - Unknown
1 - IPv4
2 - IPv6
8.4. The Class AutostartIKEConfiguration
the class AutostartIKEConfiguration groups AutostartIKESetting instances into configuration sets ๐ง when applied, the settings make an IKE service start the Security Associations automatically (by negotiating or by setting them statically, whichever fits) โญ
NAME AutostartIKEConfiguration
DESCRIPTION A configuration set of AutostartIKESetting instances
to be automatically started by the IKE service.
DERIVED FROM SystemConfiguration (see [CIMCORE])
ABSTRACT FALSE
8.5. The Class AutostartIKESetting
the class AutostartIKESetting is used to automatically start IKE negotiations with peers (or statically create an SA), as laid out in its properties ๐ฆ actions get kicked off based on whichever policy matches the setting parameters. here's the definition:
NAME AutostartIKESetting
DESCRIPTION AutostartIKESetting is used to automatically initiate
IKE negotiations with peers or statically create an
SA.
DERIVED FROM SystemSetting (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Phase1Only
AddressType
SourceAddress
SourcePort
DestinationAddress
DestinationPort
Protocol
8.5.1. The Property Phase1Only
Phase1Only limits the IKE negotiation to phase 1 SA establishment only ๐ฅ when it's set to False, both phase 1 and phase 2 SAs get negotiated.
NAME Phase1Only
DESCRIPTION Used to indicate whether a phase 1 only or both phase
1 and phase 2 security associations should attempt
establishment.
SYNTAX boolean
VALUE true - attempt to establish a phase 1 security
association
false - attempt to establish phase 1 and phase 2
security associations
8.5.2. The Property AddressType
AddressType says what type of addresses are in the SourceAddress and DestinationAddress properties ๐
NAME AddressType
DESCRIPTION AddressType is the type of address in SourceAddress
and DestinationAddress properties.
SYNTAX unsigned 16-bit integer
VALUE 0 - Unknown
1 - IPv4
2 - IPv6
8.5.3. The Property SourceAddress
SourceAddress is the dotted-decimal or colon-decimal formatted IP address used as the source address. it's compared with policy filter entries and used in any phase 2 negotiations ๐ซถ
NAME SourceAddress
DESCRIPTION The source address to compare with the filters to
determine the appropriate policy rule.
SYNTAX string
VALUE dotted-decimal or colon-decimal formatted IP address
8.5.4. The Property SourcePort
SourcePort is the port number used as the source port ๐ it's compared with policy filter entries and is used in any phase 2 negotiations.
NAME SourcePort
DESCRIPTION The source port to compare with the filters to
determine the appropriate policy rule.
SYNTAX unsigned 16-bit integer
8.5.5. The Property DestinationAddress
DestinationAddress is the dotted-decimal or colon-decimal formatted IP address used as the destination address. same deal as the source: it's compared with policy filter entries and used in any phase 2 negotiations ๐
NAME DestinationAddress
DESCRIPTION The destination address to compare with the filters
to determine the appropriate policy rule.
SYNTAX string
VALUE dotted-decimal or colon-decimal formatted IP address
8.5.6. The Property DestinationPort โจ
okay so DestinationPort is the port number used as the destination port when you're comparing policy filter entries ๐ฏ and it also shows up in any phase 2 negotiations. Here's how it's defined ๐
NAME DestinationPort
DESCRIPTION The destination port to compare with the filters to
determine the appropriate policy rule.
SYNTAX unsigned 16-bit integer
8.5.7. The Property Protocol ๐ธ
the Protocol property is the protocol number you compare against policy filter entries, and it gets used in any phase 2 negotiations too ๐ซถ the definition:
NAME Protocol
DESCRIPTION The protocol number used in comparing policy
filter entries.
SYNTAX unsigned 8-bit integer
8.6. The Class IKEIdentity ๐ฆ
the class IKEIdentity is how we represent the identities that can be used for an IPProtocolEndpoint (or a collection of IPProtocolEndpoints) to identify the IKE Service in IKE phase 1 negotiations ๐ง it's giving main character energy. The policy IKEAction.UseIKEIdentityType picks which of the available identity types to use in a negotiation exchange, and IKERule.IdentityContexts holds the match values that get used, along with the local address, to pick the right identity ๐ The ElementID property value (defined in the parent class, UsersAccess) should be that of either the IPProtocolEndpoint or the Collection of endpoints, whichever fits. Here's the class definition:
NAME IKEIdentity
DESCRIPTION IKEIdentity is used to represent the identities that
may be used for an IPProtocolEndpoint (or collection
of IPProtocolEndpoints) to identify the IKE Service
in IKE phase 1 negotiations.
DERIVED FROM UsersAccess (see [CIMUSER])
ABSTRACT FALSE
PROPERTIES IdentityType
IdentityValue
IdentityContexts
8.6.1. The Property IdentityType ๐
IdentityType is an enumeration that tells you what kind of thing the IdentityValue is ๐ Here's the definition. The enumeration values live in [DOI] section 4.6.2.1, so go check there ๐
NAME IdentityType
DESCRIPTION IdentityType is the type of the IdentityValue.
SYNTAX unsigned 16-bit integer
VALUE The enumeration values are specified in [DOI] section
4.6.2.1.
8.6.2. The Property IdentityValue ๐
IdentityValue holds a string encoding of the Identity payload ๐ okay this part is so cute: for IKEIdentity instances that are address types (IPv4 or IPv6 addresses), the IdentityValue string MAY be omitted. When it's left out, the associated IPProtocolEndpoint (or the right member of the Collection of endpoints) gets used as the identity value instead ๐ซถ
NAME IdentityValue
DESCRIPTION IdentityValue contains a string encoding of the
Identity payload.
SYNTAX string
8.6.3. The Property IdentityContexts ๐ง
the IdentityContexts property limits how IKEIdentity instances get used, so they match whatever is specified in IKERule.IdentityContexts โจ These are formatted as policy roles and role combinations [PCIM] & [PCIME]. Each value stands for one context or one combination of contexts. Since it's multi-valued, you can attach more than one context or combination to a single IKEIdentity ๐ Each value is a string that looks like this:
<ContextName>[&&<ContextName>]*
the individual context names show up in alphabetical order (according to the collating sequence for UCS-2), so you always get the same ordering ๐ฅ If one or more values in the IKERule.IdentityContexts array match one or more IKEIdentity.IdentityContexts, then the identity's context matches. Basically, each value in the IdentityContext array is an ORed condition ๐ Together with the address of the IPProtocolEndpoint and IKEAction.UseIKEIdentityType, there SHOULD be exactly one IKEIdentity ๐ฏ Here's the definition:
NAME IdentityContexts
DESCRIPTION The IKE service of a security endpoint may have
multiple identities for use in different situations.
The combination of the interface (represented by
the IPProtocolEndpoint), the identity type (as
specified in the IKEAction) and the IdentityContexts
selects a unique identity.
SYNTAX string array
VALUE string of the form <ContextName>[&&<ContextName>]*
8.7. The Association Class HostedPeerIdentityTable ๐
the class HostedPeerIdentityTable is the name scoping relationship for PeerIdentityTable entries in a System ๐ง the PeerIdentityTable is weak to the System, and here's the class definition:
NAME HostedPeerIdentityTable
DESCRIPTION The PeerIdentityTable instances are weak (name scoped
by) the owning System.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref System[1..1]]
Dependent [ref PeerIdentityTable[0..n] [weak]]
8.7.1. The Reference Antecedent ๐
Antecedent is inherited from Dependency, and it's overridden so it refers to a System instance. The [1..1] cardinality says a PeerIdentityTable instance MUST be associated in a weak relationship with one and only one System instance. no exceptions bestie ๐ญ
8.7.2. The Reference Dependent ๐ธ
Dependent is inherited from Dependency, and it's overridden so it refers to a PeerIdentityTable instance. The [0..n] cardinality means a System instance may be associated with zero or more PeerIdentityTable instances ๐ฆ
8.8. The Aggregation Class PeerIdentityMember ๐
the class PeerIdentityMember aggregates PeerIdentityEntry instances into a PeerIdentityTable. This is a weak aggregation ๐ซถ here's the definition:
NAME PeerIdentityMember
DESCRIPTION PeerIdentityMember aggregates PeerIdentityEntry
instances into a PeerIdentityTable.
DERIVED FROM MemberOfCollection (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Collection [ref PeerIdentityTable[1..1]]
Member [ref PeerIdentityEntry [0..n] [weak]]
8.8.1. The Reference Collection โจ
Collection is inherited from MemberOfCollection and overridden to refer to a PeerIdentityTable instance. The [1..1] cardinality says a PeerIdentityEntry instance MUST be associated with one and only one PeerIdentityTable instance. In other words, PeerIdentityEntry instances are not shared across PeerIdentityTables ๐ โโ๏ธ
8.8.2. The Reference Member ๐
Member is inherited from MemberOfCollection and overridden to refer to a PeerIdentityEntry instance. The [0..n] cardinality means a PeerIdentityTable instance may be associated with zero or more PeerIdentityEntry instances ๐
8.9. The Association Class IKEServicePeerGateway ๐
the class IKEServicePeerGateway is the association between an IKEService and the list of PeerGateway instances it uses when negotiating with security gateways. Here's the class definition:
NAME IKEServicePeerGateway
DESCRIPTION Associates an IKEService and the list of PeerGateway
instances that it uses in negotiating with security
gateways.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref PeerGateway[0..n]]
Dependent [ref IKEService[0..n]]
8.9.1. The Reference Antecedent ๐ฆ
Antecedent is inherited from Dependency and overridden to refer to a PeerGateway instance. The [0..n] cardinality means an IKEService instance may be associated with zero or more PeerGateway instances ๐
8.9.2. The Reference Dependent ๐
Dependent is inherited from Dependency and overridden to refer to an IKEService instance. The [0..n] cardinality means a PeerGateway instance may be associated with zero or more IKEService instances ๐ซถ
8.10. The Association Class IKEServicePeerIdentityTable โญ
the class IKEServicePeerIdentityTable is the relationship between an IKEService and a PeerIdentityTable that it uses to map between addresses and identities as required ๐ง Here's the class definition:
NAME IKEServicePeerIdentityTable
DESCRIPTION IKEServicePeerIdentityTable provides the relationship
between an IKEService and a PeerIdentityTable that it
uses.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref PeerIdentityTable[0..n]]
Dependent [ref IKEService[0..n]]
8.10.1. The Reference Antecedent ๐ธ
Antecedent is inherited from Dependency and overridden to refer to a PeerIdentityTable instance. The [0..n] cardinality means an IKEService instance may be associated with zero or more PeerIdentityTable instances ๐
8.10.2. The Reference Dependent ๐
Dependent is inherited from Dependency and overridden to refer to an IKEService instance. The [0..n] cardinality means a PeerIdentityTable instance may be associated with zero or more IKEService instances ๐
8.11. The Association Class IKEAutostartSetting ๐ฅ
the class IKEAutostartSetting associates an AutostartIKESetting with an IKEService that may use it to automatically start an IKE negotiation or create a static SA ๐ฆ Here's the class definition:
NAME IKEAutostartSetting
DESCRIPTION Associates a AutostartIKESetting with an IKEService.
DERIVED FROM ElementSetting (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Element [ref IKEService[0..n]]
Setting [ref AutostartIKESetting[0..n]]
8.11.1. The Reference Element ๐
Element is inherited from ElementSetting and overridden to refer to an IKEService instance. The [0..n] cardinality means an AutostartIKESetting instance may be associated with zero or more IKEService instances ๐ซถ
8.11.2. The Reference Setting ๐ง
Setting is inherited from ElementSetting and overridden to refer to an AutostartIKESetting instance. The [0..n] cardinality means an IKEService instance may be associated with zero or more AutostartIKESetting instances ๐
8.12. The Aggregation Class AutostartIKESettingContext ๐
the class AutostartIKESettingContext aggregates the settings used to automatically start negotiations or create a static SA into a configuration set ๐ Here's the definition:
NAME AutostartIKESettingContext
DESCRIPTION AutostartIKESettingContext aggregates the
AutostartIKESetting instances into a configuration
set.
DERIVED FROM SystemSettingContext (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Context [ref AutostartIKEConfiguration [0..n]]
Setting [ref AutostartIKESetting [0..n]]
SequenceNumber
8.12.1. The Reference Context ๐
Context is inherited from SystemSettingContext and overridden to refer to an AutostartIKEConfiguration instance. The [0..n] cardinality means an AutostartIKESetting instance may be associated with zero or more AutostartIKEConfiguration instances. Translation: a setting can live in multiple configuration sets โจ๐ฆ
8.12.2. The Reference Setting โจ
okay so Setting is inherited from SystemSettingContext, but it gets overridden to point at an AutostartIKESetting instance ๐ the [0..n] cardinality means an AutostartIKEConfiguration can be linked to zero or more AutostartIKESetting instances. so it's giving flexible, bestie ๐
8.12.3. The Property SequenceNumber ๐โโ๏ธ
SequenceNumber is the ordering for when negotiations start or a static SA gets created. a value of zero means order is NOT a thing, and those settings can run in parallel with everything else ๐ง every other setting in the configuration runs in sequence, going from lower values to higher ones. sequence numbers don't have to be unique in an AutostartIKEConfiguration, and order doesn't matter for settings that share the same number. here's how the property is defined:
NAME SequenceNumber
DESCRIPTION The sequence in which the settings are applied
within a configuration set.
SYNTAX unsigned 16-bit integer
8.13. The Association Class IKEServiceForEndpoint ๐ฆ
this one is the association that shows which IKE service, if any, provides IKE negotiation services for which network interfaces. the class is defined like this:
NAME IKEServiceForEndpoint
DESCRIPTION Associates an IPProtocolEndpoint with an IKEService
that provides negotiation services for the endpoint.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref IKEService[0..1]]
Dependent [ref IPProtocolEndpoint[0..n]]
8.13.1. The Reference Antecedent ๐ธ
Antecedent is inherited from Dependency, but it's overridden to refer to an IKEService instance. the [0..1] cardinality means an IPProtocolEndpoint instance MUST be associated with at most one IKEService instance. no exceptions, periodt ๐
8.13.2. The Reference Dependent ๐ซถ
Dependent is inherited from Dependency and overridden to refer to an IPProtocolEndpoint that is associated with at most one IKEService. the [0..n] cardinality means an IKEService instance may be associated with zero or more IPProtocolEndpoint instances ๐
8.14. The Association Class IKEAutostartConfiguration ๐
IKEAutostartConfiguration is the relationship between an IKEService and a configuration set it uses to automatically start a bunch of SAs. the class definition looks like this:
NAME IKEAutostartConfiguration
DESCRIPTION IKEAutostartConfiguration provides the relationship
between an IKEService and an
AutostartIKEConfiguration that it uses to
automatically start a set of SAs.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref AutostartIKEConfiguration [0..n]]
Dependent [ref IKEService [0..n]]
Active
8.14.1. The Reference Antecedent ๐
Antecedent is inherited from Dependency and overridden to refer to an AutostartIKEConfiguration instance. the [0..n] cardinality means an IKEService instance may be associated with zero or more AutostartIKEConfiguration instances. โจ
8.14.2. The Reference Dependent ๐
Dependent is inherited from Dependency and overridden to refer to an IKEService instance. the [0..n] cardinality means an AutostartIKEConfiguration instance may be associated with zero or more IKEService instances ๐
8.14.3. The Property Active ๐
Active tells you whether the AutostartIKEConfiguration set is currently active for the associated IKEService. so at boot time, the active configuration is what gets used to automatically start IKE negotiations and create static SAs. the property is defined like this:
NAME Active
DESCRIPTION Active indicates whether the
AutostartIKEConfiguration set is currently active for
the associated IKEService.
SYNTAX boolean
VALUE true - AutostartIKEConfiguration is currently active
for associated IKEService.
false - AutostartIKEConfiguration is currently
inactive for associated IKEService.
8.15. The Association Class IKEUsesCredentialManagementService ๐
this class defines the set of CredentialManagementService(s) that are trusted sources of credentials for IKE phase 1 negotiations. the definition goes:
NAME IKEUsesCredentialManagementService
DESCRIPTION Associates the set of CredentialManagementService(s)
that are trusted by the IKEService as sources of
credentials used in IKE phase 1 negotiations.
DERIVED FROM Dependency (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref CredentialManagementService [0..n]]
Dependent [ref IKEService [0..n]]
8.15.1. The Reference Antecedent ๐ง
Antecedent is inherited from Dependency and overridden to refer to a CredentialManagementService instance. the [0..n] cardinality means an IKEService instance may be associated with zero or more CredentialManagementService instances ๐
8.15.2. The Reference Dependent ๐ฆ
Dependent is inherited from Dependency and overridden to refer to an IKEService instance. the [0..n] cardinality means a CredentialManagementService instance may be associated with zero or more IKEService instances โจ
8.16. The Association Class EndpointHasLocalIKEIdentity ๐ชช
EndpointHasLocalIKEIdentity links an IPProtocolEndpoint to a set of IKEIdentity instances that can be used when negotiating security associations on the endpoint. an IKEIdentity MUST be associated with either an IPProtocolEndpoint using this association, or with a collection of IKEIdentity instances using the CollectionHasLocalIKEIdentity association. the class definition is:
NAME EndpointHasLocalIKEIdentity
DESCRIPTION EndpointHasLocalIKEIdentity associates an
IPProtocolEndpoint with a set of IKEIdentity
instances.
DERIVED FROM ElementAsUser (see [CIMUSER])
ABSTRACT FALSE
PROPERTIES Antecedent [ref IPProtocolEndpoint [0..1]]
Dependent [ref IKEIdentity [0..n]]
8.16.1. The Reference Antecedent ๐
Antecedent is inherited from ElementAsUser and overridden to refer to an IPProtocolEndpoint instance. the [0..1] cardinality means an IKEIdentity instance MUST be associated with at most one IPProtocolEndpoint instance. one endpoint, one identity, main character energy ๐
8.16.2. The Reference Dependent ๐
Dependent is inherited from ElementAsUser and overridden to refer to an IKEIdentity instance. the [0..n] cardinality means an IPProtocolEndpoint instance may be associated with zero or more IKEIdentity instances ๐ธ
8.17. The Association Class CollectionHasLocalIKEIdentity ๐ง
CollectionHasLocalIKEIdentity links a Collection of IPProtocolEndpoint instances to a set of IKEIdentity instances that can be used when negotiating SAs for the endpoints in that collection. an IKEIdentity MUST be associated with either an IPProtocolEndpoint using the EndpointHasLocalIKEIdentity association, or with a collection of IKEIdentity instances using this association. the class definition goes like this:
NAME CollectionHasLocalIKEIdentity
DESCRIPTION CollectionHasLocalIKEIdentity associates a collection
of IPProtocolEndpoint instances with a set of
IKEIdentity instances.
DERIVED FROM ElementAsUser (see [CIMUSER])
ABSTRACT FALSE
PROPERTIES Antecedent [ref Collection [0..1]]
Dependent [ref IKEIdentity [0..n]]
8.17.1. The Reference Antecedent ๐ซถ
Antecedent is inherited from ElementAsUser and overridden to refer to a Collection instance. the [0..1] cardinality means an IKEIdentity instance MUST be associated with at most one Collection instance. โจ
8.17.2. The Reference Dependent ๐
Dependent is inherited from ElementAsUser and overridden to refer to an IKEIdentity instance. the [0..n] cardinality means a Collection instance may be associated with zero or more IKEIdentity instances ๐ฆ
8.18. The Association Class IKEIdentitysCredential ๐
IKEIdentitysCredential is an association that ties a set of credentials to their matching local IKE Identities. the class definition is:
NAME IKEIdentitysCredential
DESCRIPTION IKEIdentitysCredential associates a set of
credentials to their corresponding local IKEIdentity.
DERIVED FROM UsersCredential (see [CIMCORE])
ABSTRACT FALSE
PROPERTIES Antecedent [ref Credential [0..n]]
Dependent [ref IKEIdentity [0..n]]
8.18.1. The Reference Antecedent ๐
Antecedent is inherited from UsersCredential and overridden to refer to a Credential instance. the [0..n] cardinality means the IKEIdentity instance may be associated with zero or more Credential instances ๐
8.18.2. The Reference Dependent ๐ง
Dependent is inherited from UsersCredential and overridden to refer to an IKEIdentity instance. the [0..n] cardinality means a Credential instance may be associated with zero or more IKEIdentity instances ๐
9. Implementation Requirements ๐
okay this bit is the big one! the following table is where you find out which classes, properties, associations and aggregations MUST or SHOULD or MAY be implemented ๐ฅ
4. Policy Classes ๐
okay bestie, the policy classes are the whole main character crew ๐ section 4 is where the rules live, so let's go โจ
4.1. The Class SARule ๐
Level: MUST. Section 4.1 is the SARule class, and it's giving headliner energy ๐
4.1.1. The Property PolicyRuleName ๐ฆ
Level: MAY. Section 4.1.1 is the PolicyRuleName property, a cute little name tag ๐
4.1.1. The Property Enabled ๐
Level: MUST. Section 4.1.1 is the Enabled property, the on-off switch ๐ฅ
4.1.1. The Property ConditionListType ๐ธ
Level: MUST. Section 4.1.1 is the ConditionListType property, so the list type is a whole thing โจ
4.1.1. The Property RuleUsage ๐ง
Level: MAY. Section 4.1.1 is the RuleUsage property, the vibe check for the rule ๐
4.1.1. The Property Mandatory ๐
Level: MAY. Section 4.1.1 is the Mandatory property, very serious energy, no cap ๐ญ
4.1.1. The Property SequencedActions ๐
Level: MUST. Section 4.1.1 is the SequencedActions property, the order of operations is everything ๐
4.1.1. The Property PolicyRoles ๐ฆ
Level: MAY. Section 4.1.1 is the PolicyRoles property, bestie's roles era ๐ซถ
4.1.1. The Property PolicyDecisionStrategy ๐ซ
Level: MAY. Section 4.1.1 is the PolicyDecisionStrategy property, the decision-making moment ๐ง
4.1.2 The Property ExecutionStrategy ๐ฅ
Level: MUST. Section 4.1.2 is the ExecutionStrategy property, it's literally how things get done ๐
4.1.3 The Property LimitNegotiation ๐ธ
Level: MAY. Section 4.1.3 is the LimitNegotiation property, a little negotiation drama ๐
4.2. The Class IKERule ๐ฆ
Level: MUST. Section 4.2 is the IKERule class, a whole IKE moment ๐
4.2.1. The Property IdentityContexts โจ
Level: MAY. Section 4.2.1 is the IdentityContexts property, contexts are everything ๐
4.3. The Class IPsecRule ๐
Level: MUST. Section 4.3 is the IPsecRule class, the IPsec main character ๐
4.4. The Association Class IPsecPolicyForEndpoint ๐ง
Level: MAY. Section 4.4 is the association class for IPsec policy on endpoints, it's giving connection ๐ซถ
4.4.1. The Reference Antecedent ๐ธ
Level: MUST. Section 4.4.1 is the Reference Antecedent, the "from" side of the link ๐
4.4.2. The Reference Dependent ๐
Level: MUST. Section 4.4.2 is the Reference Dependent, the "to" side of the link ๐
4.5. The Association Class IPsecPolicyForSystem ๐ฆ
Level: MAY. Section 4.5 is the association class for IPsec policy on systems, system-wide slay ๐
4.5.1. The Reference Antecedent โจ
Level: MUST. Section 4.5.1 is the Reference Antecedent, the source of the link ๐ฅ
4.5.2. The Reference Dependent ๐ซ
Level: MUST. Section 4.5.2 is the Reference Dependent, the target of the link ๐
4.6. The Aggregation Class SAConditionInRule ๐
Level: MUST. Section 4.6 is the SAConditionInRule aggregation, a whole group chat of conditions ๐ซถ
4.6.1. The Property GroupNumber ๐ธ
Level: SHOULD. Section 4.6.1 is the GroupNumber property, numbering the group ๐
4.6.1. The Property ConditionNegated ๐ง
Level: SHOULD. Section 4.6.1 is the ConditionNegated property, the opposite energy ๐
4.6.2. The Reference GroupComponent ๐ฆ
Level: MUST. Section 4.6.2 is the GroupComponent reference, the whole group ๐
4.6.3. The Reference PartComponent ๐
Level: MUST. Section 4.6.3 is the PartComponent reference, the individual part ๐
4.7. The Aggregation Class PolicyActionInSARule ๐
Level: MUST. Section 4.7 is the PolicyActionInSARule aggregation, the actions squad ๐
4.7.1. The Reference GroupComponent ๐ฅ
Level: MUST. Section 4.7.1 is the GroupComponent reference for the actions ๐
4.7.2. The Reference PartComponent โจ
Level: MUST. Section 4.7.2 is the PartComponent reference for the actions ๐ธ
4.7.3. The Property ActionOrder ๐ซถ
Level: SHOULD. Section 4.7.3 is the ActionOrder property, bestie keeps the order ๐
5. Condition and Filter Classes โจ
okay so this part is all about conditions and filters, and they are seriously iconic ๐ section 5 is where the matching happens ๐ฆ
5.1. The Class SACondition ๐ธ
Level: MUST. Section 5.1 is the SACondition class, the condition that starts it all ๐
5.2 The Class IPHeadersFilter ๐ง
Level: SHOULD. Section 5.2 is the IPHeadersFilter class, the IP header check ๐
5.3. The Class CredentialFilterEntry ๐
Level: MAY. Section 5.3 is the CredentialFilterEntry class, credentials, but make it cute ๐
5.3.1. The Property MatchFieldName ๐ซ
Level: MUST. Section 5.3.1 is the MatchFieldName property, the field name to match ๐ฅ
5.3.2. The Property MatchFieldValue ๐ธ
Level: MUST. Section 5.3.2 is the MatchFieldValue property, the value to match ๐
5.3.3. The Property CredentialType ๐ฆ
Level: MUST. Section 5.3.3 is the CredentialType property, the type of credential ๐ซถ
5.4. The Class IPSOFilterEntry ๐
Level: MAY. Section 5.4 is the IPSOFilterEntry class, a filter entry with main character energy โจ
5.4.1. The Property MatchConditionType ๐
Level: MUST. Section 5.4.1 is the MatchConditionType property, the kind of condition ๐
5.4.2. The Property MatchConditionValue ๐
Level: MUST. Section 5.4.2 is the MatchConditionValue property, the value of the condition ๐
5.5. The Class PeerIDPayloadFilterEntry ๐
Level: MAY. Section 5.5 is the PeerIDPayloadFilterEntry class, peer ID energy ๐ง
5.5.1. The Property MatchIdentityType ๐ฅ
Level: MUST. Section 5.5.1 is the MatchIdentityType property, the identity type ๐
5.5.2. The Property MatchIdentityValue ๐ธ
Level: MUST. Section 5.5.2 is the MatchIdentityValue property, the identity value ๐ซถ
5.6. The Association Class FilterOfSACondition ๐ซ
Level: SHOULD. Section 5.6 is the association class for the filter of an SACondition, bestie's link ๐ฆ
5.6.1. The Reference Antecedent ๐
Level: MUST. Section 5.6.1 is the Reference Antecedent, the "from" side ๐
5.6.2. The Reference Dependent ๐
Level: MUST. Section 5.6.2 is the Reference Dependent, the "to" side ๐
5.7. The Association Class AcceptCredentialFrom ๐
Level: MAY. Section 5.7 is the association class for accepting credentials from somewhere, the trust era ๐ฅ
5.7.1. The Reference Antecedent โจ
Level: MUST. Section 5.7.1 is the Reference Antecedent, the source ๐ธ
5.7.2. The Reference Dependent ๐
Level: MUST. Section 5.7.2 is the Reference Dependent, the target ๐ซถ
6. Action Classes ๐
okay bestie, actions are where things actually happen, and section 6 is a whole parade ๐ let's see who's doing what ๐
6.1. The Class SAAction ๐
Level: MUST. Section 6.1 is the SAAction class, the base action ๐
6.1.1. The Property DoActionLogging ๐ง
Level: MAY. Section 6.1.1 is the DoActionLogging property, logging the action ๐
6.1.2. The Property DoPacketLogging ๐ธ
Level: MAY. Section 6.1.2 is the DoPacketLogging property, logging the packets ๐ฆ
6.2. The Class SAStaticAction ๐ฅ
Level: MUST. Section 6.2 is the SAStaticAction class, the static one ๐
6.2.1. The Property LifetimeSeconds ๐
Level: MUST. Section 6.2.1 is the LifetimeSeconds property, measured in seconds โฑ๏ธ
6.3. The Class IPsecBypassAction ๐ซ
Level: SHOULD. Section 6.3 is the IPsecBypassAction class, the bypass moment ๐
6.4. The Class IPsecDiscardAction ๐
Level: SHOULD. Section 6.4 is the IPsecDiscardAction class, the discard era ๐๏ธ
6.5. The Class IKERejectAction ๐ซถ
Level: MAY. Section 6.5 is the IKERejectAction class, the reject energy ๐
6.6. The Class PreconfiguredSAAction ๐
Level: MUST. Section 6.6 is the PreconfiguredSAAction class, pre-set and ready ๐
6.6.1. The Property LifetimeKilobytes ๐
Level: MUST. Section 6.6.1 is the LifetimeKilobytes property, measured in kilobytes ๐ง
6.7. The Class PreconfiguredTransportAction โจ
Level: MUST. Section 6.7 is the PreconfiguredTransportAction class, transport vibes ๐
6.8. The Class PreconfiguredTunnelAction ๐ฆ
Level: MUST. Section 6.8 is the PreconfiguredTunnelAction class, tunnel vibes ๐ธ
6.8.1. The Property DFHandling ๐
Level: MUST. Section 6.8.1 is the DFHandling property, handle with care ๐ซถ
6.9. The Class SANegotiationAction ๐
Level: MUST. Section 6.9 is the SANegotiationAction class, the negotiation glow-up ๐ค
6.10. The Class IKENegotiationAction ๐ฅ
Level: MUST. Section 6.10 is the IKENegotiationAction class, the IKE negotiation ๐ฌ
6.10.1. The Property MinLifetimeSeconds ๐
Level: MAY. Section 6.10.1 is the MinLifetimeSeconds property, the minimum in seconds โฑ๏ธ
6.10.2. The Property MinLifetimeKilobytes ๐
Level: MAY. Section 6.10.2 is the MinLifetimeKilobytes property, the minimum in kilobytes ๐ง
6.10.3. The Property IdleDurationSeconds ๐
Level: MAY. Section 6.10.3 is the IdleDurationSeconds property, how long the idle lasts ๐ด
6.11. The Class IPsecAction ๐ง
Level: MUST. Section 6.11 is the IPsecAction class, the IPsec action ๐
6.11.1. The Property UsePFS ๐ธ
Level: MUST. Section 6.11.1 is the UsePFS property, the PFS choice ๐
6.11.2. The Property UseIKEGroup ๐ฆ
Level: MAY. Section 6.11.2 is the UseIKEGroup property, the group choice ๐ฅ
6.11.3. The Property GroupId ๐ซ
Level: MUST. Section 6.11.3 is the GroupId property, the group's ID ๐ชช
6.11.4. The Property Granularity ๐
Level: SHOULD. Section 6.11.4 is the Granularity property, how fine-grained ๐
6.11.5. The Property VendorID ๐
Level: MAY. Section 6.11.5 is the VendorID property, the vendor's ID ๐ท๏ธ
6.12. The Class IPsecTransportAction ๐
Level: MUST. Section 6.12 is the IPsecTransportAction class, transport mode energy ๐
6.13. The Class IPsecTunnelAction ๐ธ
Level: MUST. Section 6.13 is the IPsecTunnelAction class, tunnel mode energy ๐
6.13.1. The Property DFHandling ๐ฅ
Level: MUST. Section 6.13.1 is the DFHandling property, once again, handle with care ๐ซถ
6.14. The Class IKEAction ๐
Level: MUST. Section 6.14 is the IKEAction class, the IKE action ๐ฌ
6.14.1. The Property ExchangeMode ๐ฆ
Level: MUST. Section 6.14.1 is the ExchangeMode property, the exchange style ๐
6.14.2. The Property UseIKEIdentityType ๐
Level: MUST. Section 6.14.2 is the UseIKEIdentityType property, the identity type choice ๐ชช
6.14.3. The Property VendorID ๐
Level: MAY. Section 6.14.3 is the VendorID property, vendor vibes ๐ท๏ธ
6.14.4. The Property AggressiveModeGroupId ๐
Level: MAY. Section 6.14.4 is the AggressiveModeGroupId property, the aggressive group ๐ช
6.15. The Class PeerGateway ๐
Level: MUST. Section 6.15 is the PeerGateway class, the peer's front door ๐ช
6.15.1. The Property Name ๐
Level: SHOULD. Section 6.15.1 is the Name property, the peer's name ๐ท๏ธ
6.15.2. The Property PeerIdentityType ๐
Level: MUST. Section 6.15.2 is the PeerIdentityType property, the peer's identity type ๐ชช
6.15.3. The Property PeerIdentity ๐ธ
Level: MUST. Section 6.15.3 is the PeerIdentity property, the peer's identity ๐ซถ
6.16. The Association Class PeerGatewayForTunnel ๐ง
Level: MUST. Section 6.16 is the association class linking a peer gateway to a tunnel ๐
6.16.1. The Reference Antecedent ๐ฆ
Level: MUST. Section 6.16.1 is the Reference Antecedent, the "from" side ๐
6.16.2. The Reference Dependent ๐ซ
Level: MUST. Section 6.16.2 is the Reference Dependent, the "to" side ๐
6.16.3. The Property SequenceNumber ๐
Level: SHOULD. Section 6.16.3 is the SequenceNumber property, the order number ๐ข
6.17. The Aggregation Class ContainedProposal ๐
Level: MUST. Section 6.17 is the ContainedProposal aggregation, a proposal group chat ๐ฌ
6.17.1. The Reference GroupComponent ๐
Level: MUST. Section 6.17.1 is the GroupComponent reference for the proposal ๐ธ
6.17.2. The Reference PartComponent ๐ฅ
Level: MUST. Section 6.17.2 is the PartComponent reference for the proposal ๐ซถ
6.17.3. The Property SequenceNumber โจ
Level: MUST. Section 6.17.3 is the SequenceNumber property, the proposal's order ๐ข
6.18. The Association Class HostedPeerGatewayInformation ๐
Level: MAY. Section 6.18 is the association class for the hosted peer gateway info ๐
6.18.1. The Reference Antecedent ๐
Level: MUST. Section 6.18.1 is the Reference Antecedent, the source ๐ธ
6.18.2. The Reference Dependent ๐
Level: MUST. Section 6.18.2 is the Reference Dependent, the target ๐ซถ
6.19. The Association Class TransformOfPreconfiguredAction ๐ฆ
Level: MUST. Section 6.19 is the association class for a transform of a preconfigured action ๐
6.19.1. The Reference Antecedent ๐ซ
Level: MUST. Section 6.19.1 is the Reference Antecedent, the "from" side ๐
6.19.2. The Reference Dependent ๐
Level: MUST. Section 6.19.2 is the Reference Dependent, the "to" side ๐
6.19.3. The Property SPI ๐ข
Level: MUST. Section 6.19.3 is the SPI property, the security parameter index ๐ก๏ธ
6.19.4. The Property Direction โก๏ธ
Level: MUST. Section 6.19.4 is the Direction property, which way the traffic goes ๐งญ
6.20. The Association Class PeerGatewayForPreconfiguredTunnel ๐
Level: MUST. Section 6.20 is the association class linking a peer gateway to a preconfigured tunnel ๐
6.20.1. The Reference Antecedent ๐
Level: MUST. Section 6.20.1 is the Reference Antecedent, the source ๐ธ
6.20.2. The Reference Dependent ๐
Level: MUST. Section 6.20.2 is the Reference Dependent, the target ๐ซถ
7. Proposal and Transform Classes ๐ธ
okay so proposals and transforms are the algorithm squad, and section 7 is giving nerd-core glam ๐คโจ
7.1. The Abstract Class SAProposal ๐
Level: MUST. Section 7.1 is the abstract SAProposal class, the base proposal ๐
7.1.1. The Property Name ๐
Level: SHOULD. Section 7.1.1 is the Name property, the proposal's name ๐ท๏ธ
7.2 The Class IKEProposal ๐ฆ
Level: MUST. Section 7.2 is the IKEProposal class, the IKE proposal ๐ฌ
7.2.1. The Property CipherAlgorithm ๐
Level: MUST. Section 7.2.1 is the CipherAlgorithm property, the cipher choice ๐
7.2.2. The Property HashAlgorithm ๐
Level: MUST. Section 7.2.2 is the HashAlgorithm property, the hash choice #๏ธโฃ
7.2.3. The Property PRFAlgorithm ๐ซ
Level: MAY. Section 7.2.3 is the PRFAlgorithm property, the PRF choice ๐ฒ
7.2.4. The Property GroupId ๐
Level: MUST. Section 7.2.4 is the GroupId property, the group's ID ๐ชช
7.2.5. The Property AuthenticationMethod ๐
Level: MUST. Section 7.2.5 is the AuthenticationMethod property, how they prove it's them ๐
7.2.6. The Property MaxLifetimeSeconds ๐ฅ
Level: MUST. Section 7.2.6 is the MaxLifetimeSeconds property, the max in seconds โฑ๏ธ
7.2.7. The Property MaxLifetimeKilobytes โจ
Level: MUST. Section 7.2.7 is the MaxLifetimeKilobytes property, the max in kilobytes ๐ง
7.2.8. The Property VendorID ๐ธ
Level: MAY. Section 7.2.8 is the VendorID property, vendor vibes ๐ท๏ธ
7.3. The Class IPsecProposal ๐
Level: MUST. Section 7.3 is the IPsecProposal class, the IPsec proposal ๐
7.4. The Abstract Class SATransform ๐ฆ
Level: MUST. Section 7.4 is the abstract SATransform class, the base transform ๐
7.4.1. The Property TransformName ๐ซถ
Level: SHOULD. Section 7.4.1 is the TransformName property, the transform's name ๐ท๏ธ
7.4.2. The Property VendorID ๐
Level: MAY. Section 7.4.2 is the VendorID property, vendor energy ๐ท๏ธ
7.4.3. The Property MaxLifetimeSeconds ๐
Level: MUST. Section 7.4.3 is the MaxLifetimeSeconds property, the max in seconds โฑ๏ธ
7.4.4. The Property MaxLifetimeKilobytes ๐
Level: MUST. Section 7.4.4 is the MaxLifetimeKilobytes property, the max in kilobytes ๐ง
7.5. The Class AHTransform ๐
Level: MUST. Section 7.5 is the AHTransform class, the AH transform ๐ก๏ธ
7.5.1. The Property AHTransformId ๐
Level: MUST. Section 7.5.1 is the AHTransformId property, the AH ID ๐ชช
7.5.2. The Property UseReplayPrevention ๐ฅ
Level: MAY. Section 7.5.2 is the UseReplayPrevention property, the anti-replay choice ๐
7.5.3. The Property ReplayPreventionWindowSize ๐ซ
Level: MAY. Section 7.5.3 is the ReplayPreventionWindowSize property, the window size ๐ช
7.6. The Class ESPTransform ๐ธ
Level: MUST. Section 7.6 is the ESPTransform class, the ESP transform ๐
7.6.1. The Property IntegrityTransformId ๐ฆ
Level: MUST. Section 7.6.1 is the IntegrityTransformId property, the integrity ID โ
7.6.2. The Property CipherTransformId ๐
Level: MUST. Section 7.6.2 is the CipherTransformId property, the cipher ID ๐
7.6.3. The Property CipherKeyLength ๐
Level: MAY. Section 7.6.3 is the CipherKeyLength property, the key length ๐๏ธ
7.6.4. The Property CipherKeyRounds ๐
Level: MAY. Section 7.6.4 is the CipherKeyRounds property, the rounds ๐
7.6.5. The Property UseReplayPrevention ๐
Level: MAY. Section 7.6.5 is the UseReplayPrevention property, anti-replay again ๐
7.6.6. The Property ReplayPreventionWindowSize ๐ซถ
Level: MAY. Section 7.6.6 is the ReplayPreventionWindowSize property, the window again ๐ช
7.7. The Class IPCOMPTransform ๐
Level: MAY. Section 7.7 is the IPCOMPTransform class, the compression transform ๐๏ธ
7.7.1. The Property Algorithm ๐
Level: MUST. Section 7.7.1 is the Algorithm property, the algorithm choice ๐งฎ
7.7.2. The Property DictionarySize ๐ฅ
Level: MAY. Section 7.7.2 is the DictionarySize property, the dictionary size ๐
7.7.3. The Property PrivateAlgorithm โจ
Level: MAY. Section 7.7.3 is the PrivateAlgorithm property, the private algorithm ๐คซ
7.8. The Association Class SAProposalInSystem ๐ธ
Level: MAY. Section 7.8 is the association class for an SA proposal in a system ๐
7.8.1. The Reference Antecedent ๐ฆ
Level: MUST. Section 7.8.1 is the Reference Antecedent, the "from" side ๐
7.8.2. The Reference Dependent ๐
Level: MUST. Section 7.8.2 is the Reference Dependent, the "to" side ๐
7.9. The Aggregation Class ContainedTransform ๐
Level: MUST. Section 7.9 is the ContainedTransform aggregation, the transform group chat ๐ฌ
7.9.1. The Reference GroupComponent ๐
Level: MUST. Section 7.9.1 is the GroupComponent reference for the transform ๐ธ
7.9.2. The Reference PartComponent ๐
Level: MUST. Section 7.9.2 is the PartComponent reference for the transform ๐ซถ
7.9.3. The Property SequenceNumber ๐ฅ
Level: MUST. Section 7.9.3 is the SequenceNumber property, the transform's order ๐ข
7.10. The Association Class SATransformInSystem ๐ซ
Level: MAY. Section 7.10 is the association class for an SA transform in a system ๐
7.10.1. The Reference Antecedent ๐
Level: MUST. Section 7.10.1 is the Reference Antecedent, the source ๐ธ
7.10.2. The Reference Dependent ๐
Level: MUST. Section 7.10.2 is the Reference Dependent, the target ๐ซถ
8. IKE Service and Identity Classes ๐ซถ
okay bestie, the IKE service and identity classes are the final boss of this section, and they are absolutely iconic ๐๐
8.1. The Class IKEService ๐ฆ
Level: MAY. Section 8.1 is the IKEService class, the service itself ๐๏ธ
8.2. The Class PeerIdentityTable ๐
Level: MAY. Section 8.2 is the PeerIdentityTable class, the table of peers ๐
8.3.1. The Property Name ๐
Level: SHOULD. Section 8.3.1 is the Name property, the table entry's name ๐ท๏ธ
8.3. The Class PeerIdentityEntry ๐
Level: MAY. Section 8.3 is the PeerIdentityEntry class, one peer's entry ๐งพ
8.3.1. The Property PeerIdentity ๐ฅ
Level: SHOULD. Section 8.3.1 is the PeerIdentity property, the peer's identity ๐ชช
8.3.2. The Property PeerIdentityType ๐
Level: SHOULD. Section 8.3.2 is the PeerIdentityType property, the identity type ๐ชช
8.3.3. The Property PeerAddress ๐ซ
Level: SHOULD. Section 8.3.3 is the PeerAddress property, where the peer lives ๐
8.3.4. The Property PeerAddressType ๐ธ
Level: SHOULD. Section 8.3.4 is the PeerAddressType property, the address type ๐
8.4. The Class AutostartIKEConfiguration ๐
Level: MAY. Section 8.4 is the AutostartIKEConfiguration class, the autostart setup ๐
8.5. The Class AutostartIKESetting ๐ซถ
Level: MAY. Section 8.5 is the AutostartIKESetting class, the autostart settings โ๏ธ
8.5.1. The Property Phase1Only ๐
Level: MAY. Section 8.5.1 is the Phase1Only property, phase one only 1๏ธโฃ
8.5.2. The Property AddressType ๐
Level: SHOULD. Section 8.5.2 is the AddressType property, the address type ๐
8.5.3. The Property SourceAddress ๐
Level: MUST. Section 8.5.3 is the SourceAddress property, where it comes from ๐ค
8.5.4. The Property SourcePort ๐
Level: MUST. Section 8.5.4 is the SourcePort property, the source port ๐ช
8.5.5. The Property DestinationAddress ๐ฅ
Level: MUST. Section 8.5.5 is the DestinationAddress property, where it's going ๐ฅ
8.5.6. The Property DestinationPort โจ
Level: MUST. Section 8.5.6 is the DestinationPort property, the destination port ๐ช
8.5.7. The Property Protocol ๐ธ
Level: MUST. Section 8.5.7 is the Protocol property, the protocol choice ๐ก
8.6. The Class IKEIdentity ๐ฆ
Level: MAY. Section 8.6 is the IKEIdentity class, the IKE identity ๐ชช
8.6.1. The Property IdentityType ๐ซ
Level: MUST. Section 8.6.1 is the IdentityType property, the identity type ๐ชช
8.6.2. The Property IdentityValue ๐
Level: MUST. Section 8.6.2 is the IdentityValue property, the identity value ๐งพ
8.6.3. The Property IdentityContexts ๐
Level: MAY. Section 8.6.3 is the IdentityContexts property, the contexts again ๐
8.7.1. The Reference Antecedent................................MUST
8.7.2. The Reference Dependent.................................MUST
8.8. The Aggregation Class PeerIdentityMember...................MAY
8.8.1. The Reference Collection................................MUST
8.8.2. The Reference Member....................................MUST
8.9. The Association Class IKEServicePeerGateway................MAY
8.9.1. The Reference Antecedent................................MUST
8.9.2. The Reference Dependent.................................MUST
8.10. The Association Class IKEServicePeerIdentityTable.........MAY
8.10.1. The Reference Antecedent...............................MUST
8.10.2. The Reference Dependent................................MUST
8.11. The Association Class IKEAutostartSetting.................MAY
8.11.1. The Reference Element..................................MUST
8.11.2. The Reference Setting..................................MUST
8.12. The Aggregation Class AutostartIKESettingContext..........MAY
8.12.1. The Reference Context..................................MUST
8.12.2. The Reference Setting..................................MUST
8.12.3. The Property SequenceNumber..........................SHOULD
8.13. The Association Class IKEServiceForEndpoint...............MAY
8.13.1. The Reference Antecedent...............................MUST
8.13.2. The Reference Dependent................................MUST
8.14. The Association Class IKEAutostartConfiguration...........MAY
8.14.1. The Reference Antecedent...............................MUST
8.14.2. The Reference Dependent................................MUST
8.14.3. The Property Active..................................SHOULD
8.15. The Association Class IKEUsesCredentialManagementService..MAY
8.15.1. The Reference Antecedent...............................MUST
8.15.2. The Reference Dependent................................MUST
8.16. The Association Class EndpointHasLocalIKEIdentity.........MAY
8.16.1. The Reference Antecedent...............................MUST
8.16.2. The Reference Dependent................................MUST
8.17. The Association Class CollectionHasLocalIKEIdentity.......MAY
8.17.1. The Reference Antecedent...............................MUST
8.17.2. The Reference Dependent................................MUST
8.18. The Association Class IKEIdentitysCredential..............MAY
8.18.1. The Reference Antecedent...............................MUST
8.18.2. The Reference Dependent................................MUST
10. Security Considerations ๐
Okay bestie, this section is dead serious ๐๐. This document only describes an information model for IPsec policy. It does not detail security requirements for storage or delivery of said information.
Physical models derived from this information model MUST implement the relevant security for storage and delivery. Most of the classes (e.g., IpHeadersFilter, SAAction,...) MUST at least provided the integrity service. Other pieces of information MUST also receive the confidentiality service (e.g., SharedSecret as described in the classes PeerIdentityEntry and PreconfiguredSAAction). ๐ซถ
11. Intellectual Property Statement ๐
The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also does not represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11.
Copies of claims of rights made available for publication, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director. ๐
12. References ๐
12.1. Normative References
[COMP]Shacham, A., Monsour, B., Pereira, R. and M. Thomas, "IP Payload Compression Protocol (IPComp)", RFC 3173, September 2001.[ESP]Kent, S. and R. Atkinson, "IP Encapsulating Security Payload (ESP)", RFC 2406, November 1998.[AH]Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402, November 1998.[DOI]Piper, D., "The Internet IP Security Domain of Interpretation for ISAKMP", RFC 2407, November 1998.[IKE]Harkins, D. and D. Carrel, "The Internet Key Exchange (IKE)", RFC 2409, November 1998.[PCIM]Moore, B., Ellesson, E., Strassner, J. and A. Westerinen, "Policy Core Information Model -- Version 1 Specification", RFC 3060, February 2001.[PCIME]Moore, B., Editor, "Policy Core Information Model (PCIM) Extensions", RFC 3460, January 2003.[KEYWORDS]Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[CIMCORE]DMTF Common Information Model - Core Model v2.5 which can be found athttp://www.dmtf.org/standards/CIM_Schema25/CIM_Core25.mof[CIMUSER]DMTF Common Information Model - User-Security Model v2.5 which can be found athttp://www.dmtf.org/standards/CIM_Schema25/CIM_User25.mof[CIMNETWORK]DMTF Common Information Model - Network Model v2.5 which can be found athttp://www.dmtf.org/standards/CIM_Schema25/CIM_Network25.mof[IPSO]Kent, S., "U.S. Department of Defense Security Options for the Internet Protocol", RFC 1108, November 1991.[IPSEC]Kent, S. and R. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998.
12.2. Informative References
[LDAP]Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997.[COPS]Durham, D., Ed., Boyle, J., Cohen, R., Herzog, S., Rajan, R. and A. Sastry, "The COPS (Common Open Policy Service) Protocol", RFC 2748, January 2000.[COPSPR]Chan, K., Seligson, J., Durham, D., Gai, S., McCloghrie, K., Herzog, S., Reichmeyer, R., Yavatkar, R. and A. Smith, "COPS Usage for Policy Provisioning (COPS-PR)", RFC 3084, March 2001.[DMTF]Distributed Management Task Force,http://www.dmtf.org/
13. Disclaimer ๐ โโ๏ธ
The views and specification herein are those of the authors and are not necessarily those of their employer. The authors and their employer specifically disclaim responsibility for any problems arising from correct or incorrect implementation or use of this specification.
14. Acknowledgments ๐ธ
The authors would like to thank Mike Jeronimo, Ylian Saint-Hilaire, Vic Lortz, William Dixon, Man Li, Wes Hardaker and Ricky Charlet for their contributions to this IPsec policy model. ๐ซถ
Additionally, this document would not have been possible without the preceding IPsec schema documents. For that, thanks go out to Rob Adams, Partha Bhattacharya, William Dixon, Roy Pereira, and Raju Rajan. ๐
15. Authors' Addresses ๐ฆ
Jamie Jason
Intel Corporation
MS JF3-206
2111 NE 25th Ave.
Hillsboro, OR 97124
EMail: jamie.jason@intel.com
Lee Rafalow
IBM Corporation, BRQA/502
4205 So. Miami Blvd.
Research Triangle Park, NC 27709
EMail: rafalow@watson.ibm.com
Eric Vyncke
Cisco Systems
7 De Kleetlaan
B-1831 Diegem
Belgium
EMail: evyncke@cisco.com
16. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. โจ
๐ฆ where this page comes from
- ietf: rfc3585 2003-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms