draft-ietf-i2nsf-consumer-facing-interface-dm-13.txt | draft-ietf-i2nsf-consumer-facing-interface-dm-14.txt | |||
---|---|---|---|---|
I2NSF Working Group J. Jeong, Ed. | I2NSF Working Group J. Jeong, Ed. | |||
Internet-Draft C. Chung | Internet-Draft C. Chung | |||
Intended status: Standards Track Sungkyunkwan University | Intended status: Standards Track Sungkyunkwan University | |||
Expires: September 9, 2021 T. Ahn | Expires: 22 February 2022 T. Ahn | |||
Korea Telecom | Korea Telecom | |||
R. Kumar | R. Kumar | |||
Juniper Networks | Juniper Networks | |||
S. Hares | S. Hares | |||
Huawei | Huawei | |||
March 8, 2021 | 21 August 2021 | |||
I2NSF Consumer-Facing Interface YANG Data Model | I2NSF Consumer-Facing Interface YANG Data Model | |||
draft-ietf-i2nsf-consumer-facing-interface-dm-13 | draft-ietf-i2nsf-consumer-facing-interface-dm-14 | |||
Abstract | Abstract | |||
This document describes an information model and a YANG data model | This document describes an information model and a YANG data model | |||
for the Consumer-Facing Interface between an Interface to Network | for the Consumer-Facing Interface between an Interface to Network | |||
Security Functions (I2NSF) User and Security Controller in an I2NSF | Security Functions (I2NSF) User and Security Controller in an I2NSF | |||
system in a Network Functions Virtualization (NFV) environment. The | system in a Network Functions Virtualization (NFV) environment. The | |||
information model defines various types of managed objects and the | information model defines various types of managed objects and the | |||
relationship among them needed to build the interface. The | relationship among them needed to build the interface. The | |||
information model is based on the "Event-Condition-Action" (ECA) | information model is based on the "Event-Condition-Action" (ECA) | |||
policy model defined by a capability information model for I2NSF | policy model defined by a capability information model for I2NSF, and | |||
[I-D.ietf-i2nsf-capability], and the data model is defined for | the data model is defined for enabling different users of a given | |||
enabling different users of a given I2NSF system to define, manage, | I2NSF system to define, manage, and monitor security policies for | |||
and monitor security policies for specific flows within an | specific flows within an administrative domain. | |||
administrative domain. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 9, 2021. | This Internet-Draft will expire on 22 February 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Information Model for Policy . . . . . . . . . . . . . . . . 5 | 3. Information Model for Policy . . . . . . . . . . . . . . . . 5 | |||
3.1. Event Sub-model . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Event Sub-model . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2. Condition Sub-model . . . . . . . . . . . . . . . . . . . 7 | 3.2. Condition Sub-model . . . . . . . . . . . . . . . . . . . 8 | |||
3.3. Action Sub-model . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Action Sub-model . . . . . . . . . . . . . . . . . . . . 10 | |||
4. Information Model for Policy Endpoint Groups . . . . . . . . 10 | 4. Information Model for Policy Endpoint Groups . . . . . . . . 11 | |||
4.1. User Group . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1. User Group . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.2. Device Group . . . . . . . . . . . . . . . . . . . . . . 12 | 4.2. Device Group . . . . . . . . . . . . . . . . . . . . . . 13 | |||
4.3. Location Group . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Location Group . . . . . . . . . . . . . . . . . . . . . 14 | |||
5. Information Model for Threat Prevention . . . . . . . . . . . 14 | 4.4. URL Group . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
5.1. Threat Feed . . . . . . . . . . . . . . . . . . . . . . . 14 | 5. Information Model for Threat Prevention . . . . . . . . . . . 15 | |||
5.2. Payload Content . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. Threat Feed . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.2. Payload Content . . . . . . . . . . . . . . . . . . . . . 16 | ||||
6. Network Configuration Access Control Model (NACM) for I2NSF | 6. Network Configuration Access Control Model (NACM) for I2NSF | |||
Consumer-Facing Interface . . . . . . . . . . . . . . . . . . 16 | Consumer-Facing Interface . . . . . . . . . . . . . . . . 17 | |||
7. YANG Data Model of Consumer-Facing Interface . . . . . . . . 18 | 7. YANG Data Model of Consumer-Facing Interface . . . . . . . . 19 | |||
7.1. YANG Module of Consumer-Facing Interface . . . . . . . . 18 | 7.1. YANG Module of Consumer-Facing Interface . . . . . . . . 19 | |||
8. XML Configuration Examples of High-Level Security Policy | 8. XML Configuration Examples of High-Level Security Policy | |||
Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | Rules . . . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
8.1. Database Registration: Information of Positions and | 8.1. Database Registration: Information of Positions and Devices | |||
Devices (Endpoint Group) . . . . . . . . . . . . . . . . 41 | (Endpoint Group) . . . . . . . . . . . . . . . . . . . . 46 | |||
8.2. Scenario 1: Block SNS Access during Business Hours . . . 43 | 8.2. Scenario 1: Block SNS Access during Business Hours . . . 48 | |||
8.3. Scenario 2: Block Malicious VoIP/VoLTE Packets Coming to | 8.3. Scenario 2: Block Malicious VoIP/VoLTE Packets Coming to a | |||
a Company . . . . . . . . . . . . . . . . . . . . . . . . 45 | Company . . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
8.4. Scenario 3: Mitigate HTTP and HTTPS Flood Attacks on a | 8.4. Scenario 3: Mitigate HTTP and HTTPS Flood Attacks on a | |||
Company Web Server . . . . . . . . . . . . . . . . . . . 47 | Company Web Server . . . . . . . . . . . . . . . . . . . 51 | |||
9. XML Configuration Example of a User Group's Access Control | 9. XML Configuration Example of a User Group's Access Control for | |||
for I2NSF Consumer-Facing Interface . . . . . . . . . . . . . 48 | I2NSF Consumer-Facing Interface . . . . . . . . . . . . . 52 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 50 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 54 | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 55 | |||
13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 51 | 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 55 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 53 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 56 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 55 | 14.2. Informative References . . . . . . . . . . . . . . . . . 57 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 | Appendix A. Changes from | |||
draft-ietf-i2nsf-consumer-facing-interface-dm-13 . . . . 59 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 | ||||
1. Introduction | 1. Introduction | |||
In a framework of Interface to Network Security Functions (I2NSF) | In a framework of Interface to Network Security Functions (I2NSF) | |||
[RFC8329], each vendor can register their NSFs using a Developer's | [RFC8329], each vendor can register their NSFs using a Developer's | |||
Management System (DMS). Assuming that vendors also provide the | Management System (DMS). Assuming that vendors also provide the | |||
front-end web applications registered with an I2NSF User, the | front-end web applications registered with an I2NSF User, the | |||
Consumer-Facing Interface is required because the web applications | Consumer-Facing Interface is required because the web applications | |||
developed by each vendor need to have a standard interface specifying | developed by each vendor need to have a standard interface specifying | |||
the data types used when the I2NSF User and Security Controller | the data types used when the I2NSF User and Security Controller | |||
skipping to change at page 4, line 13 ¶ | skipping to change at page 4, line 13 ¶ | |||
document. | document. | |||
+-----------------+ | +-----------------+ | |||
| Consumer-Facing | | | Consumer-Facing | | |||
| Interface | | | Interface | | |||
+--------+--------+ | +--------+--------+ | |||
^ | ^ | |||
| | | | |||
+-------------+------------+ | +-------------+------------+ | |||
| | | | | | | | |||
+-----+----+ +-----+----+ +----+----+ | +-----+----+ +-----+----+ +----+---+ | |||
| Policy | | Endpoint | | Threat | | | Policy | | Endpoint | | Threat | | |||
| | | groups | | feed | | | | | groups | | feed | | |||
+-----+----+ +----------+ +---------+ | +-----+----+ +----------+ +--------+ | |||
^ | ^ | |||
| | | | |||
+------+------+ | +------+------+ | |||
| Rule | | | Rule | | |||
+------+------+ | +------+------+ | |||
^ | ^ | |||
| | | | |||
+----------------+----------------+ | +----------------+----------------+ | |||
| | | | | | | | |||
+------+------+ +------+------+ +------+------+ | +------+------+ +------+------+ +------+------+ | |||
skipping to change at page 5, line 7 ¶ | skipping to change at page 5, line 7 ¶ | |||
Security Functions (NSFs), such as firewall, Intrusion Detection | Security Functions (NSFs), such as firewall, Intrusion Detection | |||
System (IDS)/Intrusion Prevention System (IPS), and attack | System (IDS)/Intrusion Prevention System (IPS), and attack | |||
mitigation, can also be provided as Virtual Network Functions (VNF) | mitigation, can also be provided as Virtual Network Functions (VNF) | |||
in the NFV system. By the efficient virtualization technology, these | in the NFV system. By the efficient virtualization technology, these | |||
VNFs might be automatically provisioned and dynamically migrated | VNFs might be automatically provisioned and dynamically migrated | |||
based on real-time security requirements. This document presents a | based on real-time security requirements. This document presents a | |||
YANG data model to implement security functions based on NFV. | YANG data model to implement security functions based on NFV. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
This document uses the terminology described in [RFC8329]. | This document uses the terminology described in [RFC8329]. | |||
This document follows the guidelines of [RFC8407], uses the common | This document follows the guidelines of [RFC8407], uses the common | |||
YANG types defined in [RFC6991], and adopts the Network Management | YANG types defined in [RFC6991], and adopts the Network Management | |||
Datastore Architecture (NMDA). The meaning of the symbols in tree | Datastore Architecture (NMDA). The meaning of the symbols in tree | |||
diagrams is defined in [RFC8340]. | diagrams is defined in [RFC8340]. | |||
3. Information Model for Policy | 3. Information Model for Policy | |||
A Policy object represents a mechanism to express a Security Policy | A Policy object represents a mechanism to express a Security Policy | |||
by Security Administrator (i.e., I2NSF User) using Consumer-Facing | by Security Administrator (i.e., I2NSF User) using Consumer-Facing | |||
Interface toward Security Controller; the policy would be enforced on | Interface toward Security Controller; the policy would be enforced on | |||
an NSF. Figure 2 shows the YANG tree of the Policy object. The | an NSF. Figure 2 shows the YANG tree of the Policy object. The | |||
Policy object SHALL have the following information: | Policy object SHALL have the following information: | |||
Name: This field identifies the name of this object. | Name: This field identifies the name of this object. | |||
Rule: This field contains a list of rules. These rules are | Resolution-strategy: This field represent how to resolve conflicts | |||
that occur between actions of the same or different policy | ||||
rules that are matched and contained in this particular | ||||
NSF. | ||||
Rules: This field contains a list of rules. These rules are | ||||
defined for 1) communication between two Endpoint Groups, | defined for 1) communication between two Endpoint Groups, | |||
2) for preventing communication with externally or | 2) for preventing communication with externally or | |||
internally identified threats, and 3) for implementing | internally identified threats, and 3) for implementing | |||
business requirement such as controlling access to internal | business requirement such as controlling access to internal | |||
or external resources for meeting regulatory compliance or | or external resources for meeting regulatory compliance or | |||
business objectives. An organization may restrict certain | business objectives. An organization may restrict certain | |||
communication between a set of user and applications for | communication between a set of user and applications for | |||
example. The threats may be from threat feeds obtained | example. The threats may be from threat feeds obtained | |||
from external sources or dynamically identified by using | from external sources or dynamically identified by using | |||
specialty devices in the network. Rule conflict analysis | specialty devices in the network. Rule conflict analysis | |||
should be triggered by the monitoring service to perform an | should be triggered by the monitoring service to perform an | |||
exhaustive detection of anomalies among the configuration | exhaustive detection of anomalies among the configuration | |||
rules installed into the security functions. | rules installed into the security functions. | |||
+--rw i2nsf-cfi-policy* [policy-name] | +--rw i2nsf-cfi-policy* [policy-name] | |||
+--rw policy-name string | +--rw policy-name string | |||
+--rw rules | +--rw resolution-strategy? identityref | |||
+--rw endpoint-groups | +--rw rules* [rule-name] | |||
+--rw threat-prevention | | ... | |||
+--rw endpoint-groups | ||||
| ... | ||||
+--rw threat-preventions | ||||
| ... | ||||
+--rw url-group* [name] | ||||
| ... | ||||
Figure 2: Policy YANG Data Tree | Figure 2: Policy YANG Data Tree | |||
A policy is a container of Rule(s). In order to express a Rule, a | A policy is a list of rules. In order to express a Rule, a Rule must | |||
Rule must have complete information such as where and when a policy | have complete information such as where and when a policy needs to be | |||
needs to be applied. This is done by defining a set of managed | applied. This is done by defining a set of managed objects and | |||
objects and relationship among them. A Policy Rule may be related | relationship among them. A Policy Rule may be related segmentation, | |||
segmentation, threat mitigation or telemetry data collection from an | threat mitigation or telemetry data collection from an NSF in the | |||
NSF in the network, which will be specified as the sub-model of the | network, which will be specified as the sub-model of the policy model | |||
policy model in the subsequent sections. Figure 3 shows the YANG | in the subsequent sections. Figure 3 shows the YANG data tree of the | |||
data tree of the Rule object. The rule object SHALL have the | Rule object. The rule object SHALL have the following information: | |||
following information: | ||||
Name: This field identifies the name of this object. | Rule-Name: This field identifies the name of this object. | |||
Event: This field includes the information to determine whether | Priority: This field identifies the priority of the rule. | |||
Event: This field includes the information to determine whether | ||||
the Rule Condition can be evaluated or not. See details in | the Rule Condition can be evaluated or not. See details in | |||
Section 4.1. | Section 4.1. | |||
Condition: This field contains all the checking conditions to | Condition: This field contains all the checking conditions to apply | |||
apply to the objective traffic. See details in | to the objective traffic. See details in Section 4.2. | |||
Section 4.2. | ||||
Action: This field identifies the action taken when a rule is | Action: This field identifies the action taken when a rule is | |||
matched. There is always an implicit action to drop | matched. There is always an implicit action to drop | |||
traffic if no rule is matched for a traffic type. See | traffic if no rule is matched for a traffic type. See | |||
details in Section 4.3. | details in Section 4.3. | |||
IPsec-method: This field contains the information about IPsec | +--rw rules* [rule-name] | |||
method type. There are two types such as IPsec-IKE and | | +--rw rule-name string | |||
IPsec-IKEless [I-D.ietf-i2nsf-sdn-ipsec-flow-protection]. | | +--rw priority? uint8 | |||
| +--rw event | ||||
+--rw rules* [rule-name] | | +--rw condition | |||
+--rw rule-name string | | +--rw actions | |||
+--rw event | ||||
+--rw (condition)? | ||||
+--rw action | ||||
+--rw ipsec-method | ||||
Figure 3: Rule YANG Data Tree | Figure 3: Rule YANG Data Tree | |||
Note that in the case of policy conflicts, the resolution of the | Note that in the case of policy conflicts, the resolution of the | |||
conflicted policies conforms to the guidelines of "Information Model | conflicted policies conforms to the guidelines of "Information Model | |||
of NSFs Capabilities" [I-D.ietf-i2nsf-capability]. | of NSFs Capabilities" [I-D.ietf-i2nsf-capability]. | |||
3.1. Event Sub-model | 3.1. Event Sub-model | |||
The Event Object contains information related to scheduling a Rule. | The Event Object contains information related to scheduling a Rule. | |||
The Rule could be activated based on a set time or security event. | The Rule could be activated based on a set time or security event. | |||
Figure 4 shows the YANG tree of the Event object. Event object SHALL | Figure 4 shows the YANG tree of the Event object. Event object SHALL | |||
have following information: | have following information: | |||
Security-event: This field identifies for which security event | Security-event: This field identifies for which security event the | |||
the policy is enforced. The examples of security events | policy is enforced. The examples of security events are: | |||
are: "DDOS", "spyware", "trojan", and "ransomware". | "DDOS", "spyware", "trojan", and "ransomware". | |||
Time-information: This represents the security rule is enforced | Time-information: This represents the security rule is enforced | |||
based on the period information with the end time for the | based on the period information with the end time for the | |||
event. | event. | |||
Period: This represents the period of time the rule event is | Start-date-time: This represents the start time of the event. The | |||
active. | rule will start repeating from the specified time" | |||
End-time: This represents the end time of the event. If the | End-date-time: This represents the end time of the event. If the | |||
rule time has pass the end-time, the rule will stop | rule time has pass the end-time, the rule will stop | |||
repeating" | repeating" | |||
Frequency: This represents how frequent the rule should be | Period: This represents the period of time the rule event is | |||
enforced. There are four options: "only-once", "daily", | active. It can be configured by the start-time, stop-time, | |||
"weekly" and "monthly". | day, date, and month. | |||
Frequency: This represents how frequent the rule should be enforced. | ||||
There are four options: "only-once", "daily", "weekly", | ||||
"monthly" or "yearly". | ||||
+--rw event | +--rw event | |||
+--rw security-event identityref | +--rw security-event identityref | |||
+--rw time-information | +--rw time-information | |||
| +--rw start-date-time? yang:date-and-time | | +--rw start-date-time? yang:date-and-time | |||
| +--rw end-date-time? yang:date-and-time | | +--rw end-date-time? yang:date-and-time | |||
| +--rw period | | +--rw period | |||
| | +--rw start-time? time | | | +--rw start-time? time | |||
| | +--rw stop-time? time | | | +--rw stop-time? time | |||
| | +--rw day* identityref | | | +--rw day* identityref | |||
| | +--rw date* int32 | | | +--rw date* int32 | |||
| | +--rw month* string | | | +--rw month* string | |||
+--rw frequency? enumeration | +--rw frequency? enumeration | |||
Figure 4: Event Sub-model YANG Data Tree | Figure 4: Event Sub-model YANG Data Tree | |||
3.2. Condition Sub-model | 3.2. Condition Sub-model | |||
This object represents Conditions that Security Administrator wants | This object represents Conditions that Security Administrator wants | |||
to apply the checking on the traffic in order to determine whether | to apply the checking on the traffic in order to determine whether | |||
the set of actions in the Rule can be executed or not. The Condition | the set of actions in the Rule can be executed or not. The Condition | |||
Sub-model consists of three different types of containers each | Sub-model consists of three different types of containers each | |||
representing different cases, such as general firewall and DDoS- | representing different cases, such as general firewall and DDoS- | |||
mitigation cases, and a case when the condition is based on the | mitigation cases, and a case when the condition is based on the | |||
payload strings of packets. Each containers have source and | payload strings of packets. Each containers have source and | |||
destination-target to represent the source and destination for each | destination-target to represent the source and destination for each | |||
case. Figure 5 shows the YANG tree of the Condition object. The | case. Figure 5 shows the YANG tree of the Condition object. The | |||
Condition Sub-model SHALL have following information: | Condition Sub-model SHALL have following information: | |||
Case (Firewall-condition): This field represents the general | Case (firewall-condition): This field represents the general | |||
firewall case, where a security admin can set up firewall | firewall case, where a security admin can set up firewall | |||
conditions using the information present in this field. | conditions using the information present in this field. | |||
The source and destination is represented as firewall- | The source and destination is represented as source, | |||
source and firewall-destination, each referring to the IP- | destination, transport layer protocol, port numbers, and | |||
address-based groups defined in the endpoint-groups. | ICMP parameters. | |||
Case (DDoS-condition): This field represents the condition for | Case (ddos-condition): This field represents the condition for DDoS | |||
DDoS mitigation, where a security admin can set up DDoS | mitigation, where a security admin can set up DDoS | |||
mitigation conditions using the information present in this | mitigation conditions using the information present in this | |||
field. The source and destination is represented as ddos- | field. The rate of packet, byte, or flow threshold can be | |||
source and ddos-destination, each referring to the device- | configured to mitigate the DDoS. | |||
groups defined and registered in the endpoint-groups. | ||||
Case (Custom-condition): This field contains the payload string | Case (anti-virus-condition): This field represents the condition for | |||
Antivirus, where a security admin can set up Antivirus | ||||
conditions using the information present in this field. | ||||
The file names or types can be configured to be allowed | ||||
without the Antivirus interuption. | ||||
Case (payload-condition): This field contains the payload string | ||||
information. This information is useful when security rule | information. This information is useful when security rule | |||
condition is based on the string contents of incoming or | condition is based on the string contents of incoming or | |||
outgoing packets. The source and destination is | outgoing packets. The name referring to the payload-groups | |||
represented as custom-source and custom-destination, each | defined and registered in the endpoint-groups. | |||
referring to the payload-groups defined and registered in | ||||
the endpoint-groups. | ||||
Case (Threat-feed-condition): This field contains the | Case (url-condition): This field represents the URL to be filtered. | |||
information obtained from threat-feeds (e.g., Palo-Alto, or | This information can be used to block or allow a certain | |||
RSA-netwitness). This information is useful when security | URL or website. The url-name is a group of URL or websites | |||
rule condition is based on the existing threat reports | to be matched. | |||
gathered by other sources. The source and destination is | ||||
represented as threat-feed-source and threat-feed- | ||||
destination. For clarity, threat-feed-source/destination | ||||
represent the source/destination of a target security | ||||
threat, not the information source/destination of a threat- | ||||
feed. | ||||
+--rw condition | Case (voice-condition): This field contains the call source-id, call | |||
+--:firewall-condition | destination-id, and user-agent. This information can be | |||
| +--rw source | used to filter a caller id or receiver id to prevent any | |||
| | -> /i2nsf-cfi-policy/endpoint-groups/user-group/name | VoIP or VoLTE exploits or attack. | |||
| +--rw destination* | ||||
| | -> /i2nsf-cfi-policy/endpoint-groups/user-group/name | ||||
+--:ddos-condition | ||||
| +--rw source* | ||||
| | -> /i2nsf-cfi-policy/endpoint-groups/device-group/name | ||||
| +--rw destination* | ||||
| | -> /i2nsf-cfi-policy/endpoint-groups/device-group/name | ||||
| +--rw rate-limit | ||||
| | +--rw packet-threshold-per-second? uint32 | ||||
+--:location-condition | ||||
| +--rw source* | ||||
| | -> /i2nsf-cfi-policy/endpoint-groups/location-group/name | ||||
| +--rw destination | ||||
| | -> /i2nsf-cfi-policy/endpoint-groups/location-group/name | ||||
+--:custom-condition | ||||
| +--rw source* | ||||
| | -> /i2nsf-cfi-policy/threat-preventions/payload-content/name | ||||
| +--rw destination? | ||||
| | -> /i2nsf-cfi-policy/threat-preventions/payload-content/name | ||||
+--:threat-feed-condition | ||||
+--rw source* | ||||
| -> /i2nsf-cfi-policy/threat-preventions/threat-feed-list/name | ||||
+--rw destination? | ||||
| -> /i2nsf-cfi-policy/threat-preventions/threat-feed-list/name | ||||
Figure 5: Condition Sub-model YANG Data Tree | Case (context-condition): This field represents a context of a | |||
packet or flow. The context can be extended. This module | ||||
provides a context of geography location. | ||||
Case (Threat-feed-condition): This field contains the information | ||||
obtained from threat-feeds (e.g., Palo-Alto, or RSA- | ||||
netwitness). This information is useful when security rule | ||||
condition is based on the existing threat reports gathered | ||||
by other sources. | ||||
+--rw condition | ||||
| +--rw firewall-condition | ||||
| | +--rw source* union | ||||
| | +--rw destination* union | ||||
| | +--rw transport-layer-protocol? identityref | ||||
| | +--rw range-port-number | ||||
| | | +--rw start-port-number? inet:port-number | ||||
| | | +--rw end-port-number? inet:port-number | ||||
| | +--rw icmp* [version] | ||||
| | +--rw version enumeration | ||||
| | +--rw type* uint8 | ||||
| | +--rw code* uint8 | ||||
| +--rw ddos-condition | ||||
| | +--rw rate-limit | ||||
| | +--rw packet-rate-threshold? uint32 | ||||
| | +--rw byte-rate-threshold? uint32 | ||||
| | +--rw flow-rate-threshold? uint32 | ||||
| +--rw anti-virus-condition | ||||
| | +--rw exception-files* string | ||||
| +--rw payload-condition | ||||
| | +--rw content* | ||||
-> /i2nsf-cfi-policy/threat-preventions/payload-content/name | ||||
| +--rw url-condition | ||||
| | +--rw url-name? | ||||
-> /i2nsf-cfi-policy/endpoint-groups/url-group/name | ||||
| +--rw voice-condition | ||||
| | +--rw source-id* string | ||||
| | +--rw destination-id* string | ||||
| | +--rw user-agent* string | ||||
| +--rw context-condition | ||||
| +--rw geography-location-condition | ||||
| +--rw source* | ||||
-> /i2nsf-cfi-policy/endpoint-groups/location-group/name | ||||
| +--rw destination* | ||||
-> /i2nsf-cfi-policy/endpoint-groups/location-group/name | ||||
| | +--rw threat-feed-condition | ||||
| | +--rw name* | ||||
-> /i2nsf-cfi-policy/threat-preventions/threat-feed-list/name | ||||
Figure 5: Condition Sub-model YANG Data Tree | ||||
3.3. Action Sub-model | 3.3. Action Sub-model | |||
This object represents actions that Security Admin wants to perform | This object represents actions that Security Admin wants to perform | |||
based on certain traffic class. Figure 6 shows the YANG tree of the | based on certain traffic class. Figure 6 shows the YANG tree of the | |||
Action object. The Action object SHALL have following information: | Action object. The Action object SHALL have following information: | |||
Primary-action: This field identifies the action when a rule is | Primary-action: This field identifies the action when a rule is | |||
matched by an NSF. The action could be one of "PASS", | matched by an NSF. The action could be one of "pass", | |||
"DROP", "ALERT", "RATE-LIMIT", and "MIRROR". | "drop", "rate-limit", "mirror", "invoke-signaling", | |||
"tunnel-encapsulation", "forwarding", and "transformation". | ||||
Secondary-action: This field identifies the action when a rule | Secondary-action: This field identifies the action when a rule is | |||
is matched by an NSF. The action could be one of "log", | matched by an NSF. The action could be one of "rule-log" | |||
"syslog", "session-log". | and "session-log". | |||
+--rw action | +--rw actions | |||
+--rw primary-action identityref | | +--rw primary-action | |||
+--rw secondary-action? identityref | | | +--rw action? identityref | |||
| +--rw secondary-action | ||||
| +--rw log-action? identityref | ||||
Figure 6: Action Sub-model YANG Data Tree | Figure 6: Action Sub-model YANG Data Tree | |||
4. Information Model for Policy Endpoint Groups | 4. Information Model for Policy Endpoint Groups | |||
The Policy Endpoint Group is a very important part of building User- | The Policy Endpoint Group is a very important part of building User- | |||
Construct based policies. A Security Administrator would create and | Construct based policies. A Security Administrator would create and | |||
use these objects to represent a logical entity in their business | use these objects to represent a logical entity in their business | |||
environment, where a Security Policy is to be applied. There are | environment, where a Security Policy is to be applied. There are | |||
multiple managed objects that constitute a Policy's Endpoint Group, | multiple managed objects that constitute a Policy's Endpoint Group, | |||
skipping to change at page 10, line 29 ¶ | skipping to change at page 11, line 40 ¶ | |||
Groups object. This section lists these objects and relationship | Groups object. This section lists these objects and relationship | |||
among them. | among them. | |||
It is assumed that the information of Endpoint Groups (e.g., User- | It is assumed that the information of Endpoint Groups (e.g., User- | |||
group, Device-group, and Location-group) such as the IP address(es) | group, Device-group, and Location-group) such as the IP address(es) | |||
of each member in a group are stored in the I2NSF database available | of each member in a group are stored in the I2NSF database available | |||
to the Security Controller, and that the IP address information of | to the Security Controller, and that the IP address information of | |||
each group in the I2NSF database is synchronized with other systems | each group in the I2NSF database is synchronized with other systems | |||
in the networks under the same administration. | in the networks under the same administration. | |||
+-------------------+ | +-------------------+ | |||
| Endpoint Groups | | | Endpoint Groups | | |||
+---------+---------+ | +---------+---------+ | |||
^ | ^ | |||
| | | | |||
+--------------+----------------+ | +--------------+-------+--------+---------------+ | |||
0..n | 0..n | 0..n | | 0..n | 0..n | 0..n | 0..n | | |||
+-----+----+ +------+-----+ +-------+------+ | +-----+----+ +------+-----+ +-------+------+ +-----+---+ | |||
|User-group| |Device-group| |Location-group| | |User-group| |Device-group| |Location-group| |Url-group| | |||
+----------+ +------------+ +--------------+ | +----------+ +------------+ +--------------+ +---------+ | |||
Figure 7: Endpoint Group Diagram | ||||
Figure 7: Endpoint Group Diagram | ||||
+--rw endpoint-groups | +--rw endpoint-groups | |||
| +--rw user-group* [name] | | +--rw user-group* [name] | |||
| ... | | ... | |||
| +--rw device-group* [name] | | +--rw device-group* [name] | |||
| ... | | ... | |||
| +--rw location-group* [name] | | +--rw location-group* [name] | |||
| ... | | ... | |||
| +--rw url-group* [name] | ||||
| ... | ||||
Figure 8: Endpoint Group YANG Data Tree | Figure 8: Endpoint Group YANG Data Tree | |||
4.1. User Group | 4.1. User Group | |||
This object represents a User-Group. Figure 9 shows the YANG tree of | This object represents a User-Group. Figure 9 shows the YANG tree of | |||
the User-Group object. The User-Group object SHALL have the | the User-Group object. The User-Group object SHALL have the | |||
following information: | following information: | |||
Name: This field identifies the name of this object. | Name: This field identifies the name of this object. | |||
IPv4: This represents the IPv4 address of a user in the user | ||||
group. | ||||
IPv6: This represents the IPv6 address of a user in the user | mac-address: This represents the MAC address of a user in the user | |||
group. | group. | |||
Range-ipv4-address: This represents the IPv4 address range of a | Range-ipv4-address: This represents the IPv4 address range of a user | |||
user in the user group. | in the user group. | |||
Range-ipv6-address: This represents the IPv6 address range of a | Range-ipv6-address: This represents the IPv6 address range of a user | |||
user in the user group. | in the user group. | |||
+--rw user-group* [name] | +--rw user-group* [name] | |||
+--rw name string | | +--rw name string | |||
+--rw (match-type) | | +--rw mac-address* yang:mac-address | |||
+--:(exact-match-ipv4) | | +--rw (match-type) | |||
| +--rw ipv4? inet:ipv4-address | | | +--:(range-match-ipv4) | |||
+--:(exact-match-ipv6) | | | | +--rw range-ipv4-address | |||
| +--rw ipv6? inet:ipv6-address | | | | +--rw start-ipv4-address inet:ipv4-address | |||
+--:(range-match-ipv4) | | | | +--rw end-ipv4-address inet:ipv4-address | |||
| +--rw range-ipv4-address | | | +--:(range-match-ipv6) | |||
| +--rw start-ipv4-address inet:ipv4-address | | | +--rw range-ipv6-address | |||
| +--rw end-ipv4-address inet:ipv4-address | | | +--rw start-ipv6-address inet:ipv6-address | |||
+--:(range-match-ipv6) | | | +--rw end-ipv6-address inet:ipv6-address | |||
+--rw range-ipv6-address* | ||||
+--rw start-ipv6-address inet:ipv6-address | ||||
+--rw end-ipv6-address inet:ipv6-address | ||||
Figure 9: User Group YANG Data Tree | Figure 9: User Group YANG Data Tree | |||
4.2. Device Group | 4.2. Device Group | |||
This object represents a Device-Group. Figure 10 shows the YANG tree | This object represents a Device-Group. Figure 10 shows the YANG tree | |||
of the Device-group object. The Device-Group object SHALL have the | of the Device-group object. The Device-Group object SHALL have the | |||
following information: | following information: | |||
Name: This field identifies the name of this object. | Name: This field identifies the name of this object. | |||
IPv4: This represents the IPv4 address of a device in the device | IPv4: This represents the IPv4 address of a device in the device | |||
group. | group. | |||
IPv6: This represents the IPv6 address of a device in the device | IPv6: This represents the IPv6 address of a device in the device | |||
group. | group. | |||
Range-ipv4-address: This represents the IPv4 address range of a | Range-ipv4-address: This represents the IPv4 address range of a | |||
device in the device group. | device in the device group. | |||
Range-ipv6-address: This represents the IPv6 address range of a | Range-ipv6-address: This represents the IPv6 address range of a | |||
device in the device group. | device in the device group. | |||
Protocol: This represents the communication protocols used by | Application-protocol: This represents the application layer | |||
the devices. The protocols are "SSH", "FTP", "SMTP", | protocols of devices. If this is not set, it cannot | |||
"HTTP", "HTTPS", and etc. | support the appropriate protocol | |||
+--rw device-group* [name] | +--rw device-group* [name] | |||
+--rw name string | +--rw name string | |||
+--rw (match-type) | +--rw (match-type) | |||
| +--:(exact-match-ipv4) | | +--:(exact-match-ipv4) | |||
| | +--rw ipv4? inet:ipv4-address | | | +--rw ipv4? inet:ipv4-address | |||
| +--:(exact-match-ipv6) | | +--:(exact-match-ipv6) | |||
| | +--rw ipv6? inet:ipv6-address | | | +--rw ipv6? inet:ipv6-address | |||
| +--:(range-match-ipv4) | | +--:(range-match-ipv4) | |||
| | +--rw range-ipv4-address* | | | +--rw range-ipv4-address* | |||
| | | +--rw start-ipv4-address inet:ipv4-address | | | | +--rw start-ipv4-address inet:ipv4-address | |||
| | | +--rw end-ipv4-address inet:ipv4-address | | | | +--rw end-ipv4-address inet:ipv4-address | |||
| +--:(range-match-ipv6) | | +--:(range-match-ipv6) | |||
| | +--rw range-ipv6-address* | | | +--rw range-ipv6-address* | |||
| | | +--rw start-ipv6-address inet:ipv6-address | | | | +--rw start-ipv6-address inet:ipv6-address | |||
| | | +--rw end-ipv6-address inet:ipv6-address | | | | +--rw end-ipv6-address inet:ipv6-address | |||
+--rw protocol identityref | +--rw application-protocol* identityref | |||
Figure 10: Device Group YANG Data Tree | Figure 10: Device Group YANG Data Tree | |||
4.3. Location Group | 4.3. Location Group | |||
This object represents a location group based on either tag or other | This object represents a location group based on either tag or other | |||
information. Figure 11 shows the YANG tree of the Location-Group | information. Figure 11 shows the YANG tree of the Location-Group | |||
object. The Location-Group object SHALL have the following | object. The Location-Group object SHALL have the following | |||
information: | information: | |||
Name: This field identifies the name of this object. | Name: This field identifies the name of this object. | |||
Geo-ip-ipv4: This field represents the IPv4 Geo-ip address of a | Geo-ip-ipv4: This field represents the IPv4 Geo-ip address of a | |||
location [RFC8805]. | location [RFC8805]. | |||
Geo-ip-ipv6: This field represents the IPv6 Geo-ip address of a | Geo-ip-ipv6: This field represents the IPv6 Geo-ip address of a | |||
location [RFC8805]. | location [RFC8805]. | |||
Continent: This field represents the continent where the | Continent: This field represents the continent where the location | |||
location group member is located. | group member is located. | |||
+--rw location-group* [name] | +--rw location-group* [name] | |||
+--rw name string | | +--rw name string | |||
+--rw geo-ip-ipv4 inet:ipv4-address | | +--rw geo-ip-ipv4* [ipv4-address] | |||
+--rw geo-ip-ipv6 inet:ipv6-address | | | +--rw ipv4-address inet:ipv4-address | |||
+--rw continent? identityref | | | +--rw ipv4-prefix? inet:ipv4-prefix | |||
| +--rw geo-ip-ipv6* [ipv6-address] | ||||
| | +--rw ipv6-address inet:ipv6-address | ||||
| | +--rw ipv6-prefix? inet:ipv6-prefix | ||||
| +--rw continent? identityref | ||||
Figure 11: Location Group YANG Data Tree | Figure 11: Location Group YANG Data Tree | |||
4.4. URL Group | ||||
This object represents a URL group based on a Uniform Resource | ||||
Locator (URL) or web address. Figure 12 shows the YANG tree of the | ||||
URL-Group object. The URLn-Group object SHALL have the following | ||||
information: | ||||
Name: This field identifies the name of this object. | ||||
url: This field represents the new URL added by a user to the | ||||
URL database. | ||||
+--rw url-group* [name] | ||||
+--rw name string | ||||
+--rw url* string | ||||
Figure 12: URL Group YANG Data Tree | ||||
5. Information Model for Threat Prevention | 5. Information Model for Threat Prevention | |||
The threat prevention plays an important part in the overall security | The threat prevention plays an important part in the overall security | |||
posture by reducing the attack surfaces. This information could come | posture by reducing the attack surfaces. This information could come | |||
from various threat feeds (i.e., sources for obtaining the threat | from various threat feeds (i.e., sources for obtaining the threat | |||
information). There are multiple managed objects that constitute | information). There are multiple managed objects that constitute | |||
this category. This section lists these objects and relationship | this category. This section lists these objects and relationship | |||
among them. Figure 13 shows the YANG tree of a Threat-Prevention | among them. Figure 14 shows the YANG tree of a Threat-Prevention | |||
object. | object. | |||
+-------------------+ | +-------------------+ | |||
| Threat Prevention | | | Threat Prevention | | |||
+---------+---------+ | +---------+---------+ | |||
^ | ^ | |||
| | | | |||
+---------+---------+ | +---------+---------+ | |||
0..n | 0..n | | 0..n | 0..n | | |||
+------+------+ +--------+--------+ | +------+------+ +--------+--------+ | |||
| Threat-feed | | payload-content | | | Threat-feed | | payload-content | | |||
+-------------+ +-----------------+ | +-------------+ +-----------------+ | |||
Figure 12: Threat Prevention Diagram | Figure 13: Threat Prevention Diagram | |||
+--rw threat-prevention | +--rw threat-prevention | |||
+--rw threat-feed-list* [name] | +--rw threat-feed-list* [name] | |||
... | ... | |||
+--rw payload-content* [name] | +--rw payload-content* [name] | |||
... | ... | |||
Figure 13: Threat Prevention YANG Data Tree | Figure 14: Threat Prevention YANG Data Tree | |||
5.1. Threat Feed | 5.1. Threat Feed | |||
This object represents a threat feed which provides the signatures of | This object represents a threat feed which provides the signatures of | |||
malicious activities. Figure 14 shows the YANG tree of a Threat- | malicious activities. Figure 15 shows the YANG tree of a Threat- | |||
feed-list. The Threat-Feed object SHALL have the following | feed-list. The Threat-Feed object SHALL have the following | |||
information: | information: | |||
Name: This field identifies the name of this object. | Name: This field identifies the name of this object. | |||
Server-ipv4: This represents the IPv4 server address of the feed | ||||
provider, which may be either an external or local server. | ||||
Server-ipv6: This represents the IPv6 server address of the feed | ||||
provider, which may be either an external or local server. | ||||
Description: This is the description of the threat feed. The | Description: This is the description of the threat feed. The | |||
description should have the clear indication of the | description should have the clear indication of the | |||
security attack such as attack type (e.g., APT) and file | security attack such as attack type (e.g., APT) and file | |||
types used (e.g., executable malware). | types used (e.g., executable malware). | |||
Threat-file-types: This field identifies the information about | Signatures: This field contains the threat signatures of malicious | |||
the file types identified and reported by the threat-feed. | programs or activities provided by the threat-feed. The | |||
examples of signature types are "YARA", "SURICATA", and | ||||
Signatures: This field contains the threat signatures of | "SNORT" [YARA][SURICATA][SNORT]. | |||
malicious programs or activities provided by the threat- | ||||
feed. The examples of signature types are "YARA", | ||||
"SURICATA", and "SNORT" [YARA][SURICATA][SNORT]. | ||||
It is assumed that the I2NSF User obtains the threat signatures | It is assumed that the I2NSF User obtains the threat signatures | |||
(i.e., threat content patterns) from a threat-feed server (i.e., feed | (i.e., threat content patterns) from a threat-feed server (i.e., feed | |||
provider), which is a server providing threat signatures. With the | provider), which is a server providing threat signatures. With the | |||
obtained threat signatures, the I2NSF User can deliver them to the | obtained threat signatures, the I2NSF User can deliver them to the | |||
Security Controller. The retrieval of the threat signatures by the | Security Controller. The retrieval of the threat signatures by the | |||
I2NSF User is out of scope in this document. | I2NSF User is out of scope in this document. | |||
+--rw threat-prevention | +--rw threat-prevention | |||
+--rw threat-feed-list* [name] | +--rw threat-feed-list* [name] | |||
+--rw name identityref | +--rw name identityref | |||
+--rw server-ipv4? inet:ipv4-address | ||||
+--rw server-ipv6? inet:ipv6-address | ||||
+--rw description? string | +--rw description? string | |||
+--rw threat-file-types* identityref | ||||
+--rw signatures* identityref | +--rw signatures* identityref | |||
Figure 14: Threat Feed YANG Data Tree | Figure 15: Threat Feed YANG Data Tree | |||
5.2. Payload Content | 5.2. Payload Content | |||
This object represents a custom list created for the purpose of | This object represents a custom list created for the purpose of | |||
defining an exception to threat feeds. Figure 15 shows the YANG tree | defining an exception to threat feeds. Figure 16 shows the YANG tree | |||
of a Payload-content list. The Payload-Content object SHALL have the | of a Payload-content list. The Payload-Content object SHALL have the | |||
following information: | following information: | |||
Name: This field identifies the name of this object. For | Name: This field identifies the name of this object. For | |||
example, the name "backdoor" indicates the payload content | example, the name "backdoor" indicates the payload content | |||
is related to a backdoor attack. | is related to a backdoor attack. | |||
Description: This represents the description of how the payload | Description: This represents the description of how the payload | |||
content is related to a security attack. | content is related to a security attack. | |||
Content: This contains the payload contents, which are involed | Content: This contains the payload contents, which are involed in a | |||
in a security attack, such as strings. | security attack, such as strings. | |||
+--rw payload-content* [name] | +--rw payload-content* [name] | |||
+--rw name string | +--rw name string | |||
+--rw description string | +--rw description string | |||
+--rw content* string | +--rw content* string | |||
Figure 15: Payload Content in YANG Data Tree | Figure 16: Payload Content in YANG Data Tree | |||
6. Network Configuration Access Control Model (NACM) for I2NSF | 6. Network Configuration Access Control Model (NACM) for I2NSF | |||
Consumer-Facing Interface | Consumer-Facing Interface | |||
Network Configuration Access Control Model (NACM) provides a user | Network Configuration Access Control Model (NACM) provides a user | |||
group with an access control with the following features [RFC8341]: | group with an access control with the following features [RFC8341]: | |||
o Independent control of action, data, and notification access is | * Independent control of action, data, and notification access is | |||
provided. | provided. | |||
o A simple and familiar set of datastore permissions is used. | * A simple and familiar set of datastore permissions is used. | |||
o Support for YANG security tagging allows default security modes to | * Support for YANG security tagging allows default security modes to | |||
automatically exclude sensitive data. | automatically exclude sensitive data. | |||
o Separate default access modes for read, write, and execute | * Separate default access modes for read, write, and execute | |||
permissions are provided. | permissions are provided. | |||
o Access control rules are applied to configurable groups of users. | * Access control rules are applied to configurable groups of users. | |||
The data model of the I2NSF Consumer-Facing Interface utilizes the | The data model of the I2NSF Consumer-Facing Interface utilizes the | |||
NACM's mechanisms to manage the access control on the I2NSF Consumer- | NACM's mechanisms to manage the access control on the I2NSF Consumer- | |||
Facing Interface. The NACM with the above features can be used to | Facing Interface. The NACM with the above features can be used to | |||
set up the access control rules of a user group in the I2NSF | set up the access control rules of a user group in the I2NSF | |||
Consumer-Facing Interface. | Consumer-Facing Interface. | |||
Figure 16 shows part of the NACM module to enable the access control | Figure 17 shows part of the NACM module to enable the access control | |||
of a user group for the I2NSF Consumer-Facing Interface. To use the | of a user group for the I2NSF Consumer-Facing Interface. To use the | |||
NACM, a user needs to configure either a NETCONF server [RFC6241] or | NACM, a user needs to configure either a NETCONF server [RFC6241] or | |||
a RESTCONF server [RFC8040] to enable the NACM module. Then, the | a RESTCONF server [RFC8040] to enable the NACM module. Then, the | |||
user can simply use an account of root or admin user for the access | user can simply use an account of root or admin user for the access | |||
control for the module of the I2NSF Consumer-Facing Interface (i.e., | control for the module of the I2NSF Consumer-Facing Interface (i.e., | |||
ietf-i2nsf-cfi-policy). An XML example to configure the access | ietf-i2nsf-cfi-policy). An XML example to configure the access | |||
control a user group for the I2NSF Consumer-Facing Interface can be | control a user group for the I2NSF Consumer-Facing Interface can be | |||
seen in Section 9. | seen in Section 9. | |||
list rule { | list rule { | |||
skipping to change at page 17, line 47 ¶ | skipping to change at page 18, line 47 ¶ | |||
type action-type; | type action-type; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The access control action associated with the | "The access control action associated with the | |||
rule. If a rule is determined to match a | rule. If a rule is determined to match a | |||
particular request, then this object is used | particular request, then this object is used | |||
to determine whether to permit or deny the | to determine whether to permit or deny the | |||
request."; | request."; | |||
} | } | |||
Figure 16: A Part of the NACM YANG Data Model | Figure 17: A Part of the NACM YANG Data Model | |||
7. YANG Data Model of Consumer-Facing Interface | 7. YANG Data Model of Consumer-Facing Interface | |||
The main objective of this data model is to provide both an | The main objective of this document is to provide both an information | |||
information model and the corresponding YANG data model of I2NSF | model and the corresponding YANG data model of I2NSF Consumer-Facing | |||
Consumer-Facing Interface. This interface can be used to deliver | Interface. This interface can be used to deliver control and | |||
control and management messages between an I2NSF User and Security | management messages between an I2NSF User and Security Controller for | |||
Controller for the I2NSF User's high-level security policies. | the I2NSF User's high-level security policies. | |||
The semantics of the data model must be aligned with the information | The semantics of the data model must be aligned with the information | |||
model of the Consumer-Facing Interface. The transformation of the | model of the Consumer-Facing Interface. The transformation of the | |||
information model is performed so that this YANG data model can | information model is performed so that this YANG data model can | |||
facilitate the efficient delivery of the control or management | facilitate the efficient delivery of the control or management | |||
messages. | messages. | |||
This data model is designed to support the I2NSF framework that can | This data model is designed to support the I2NSF framework that can | |||
be extended according to the security needs. In other words, the | be extended according to the security needs. In other words, the | |||
model design is independent of the content and meaning of specific | model design is independent of the content and meaning of specific | |||
policies as well as the implementation approach. | policies as well as the implementation approach. | |||
With the YANG data model of I2NSF Consumer-Facing Interface, this | With the YANG data model of I2NSF Consumer-Facing Interface, this | |||
document suggests use cases for security policy rules such as time- | document suggests use cases for security policy rules such as time- | |||
based firewall, VoIP/VoLTE security service, and DDoS-attack | based firewall, VoIP/VoLTE security service, and DDoS-attack | |||
mitigation in Section 8. | mitigation in Section 8. | |||
7.1. YANG Module of Consumer-Facing Interface | 7.1. YANG Module of Consumer-Facing Interface | |||
This section describes a YANG module of Consumer-Facing Interface. | This section describes a YANG module of Consumer-Facing Interface. | |||
This YANG module imports from [RFC6991]. It makes references to [RFC | This document provides identities in the data model to be used for | |||
0854][RFC0913][RFC0959][RFC1081][RFC1631][RFC2616][RFC2818][RFC4250][ | configuration of an NSF. Each identity is used for a different type | |||
RFC5321]. | of configuration. The details are explained in the description of | |||
each identity. This YANG module imports from [RFC6991]. It makes | ||||
references to | ||||
[RFC0854][RFC0959][RFC1939][RFC3022][RFC2818][RFC4250][RFC5321] | ||||
[RFC7230][RFC7231][STIX]. | ||||
<CODE BEGINS> file "ietf-i2nsf-cfi-policy@2021-03-08.yang" | <CODE BEGINS> file "ietf-i2nsf-cfi-policy@2021-08-21.yang" | |||
module ietf-i2nsf-cfi-policy { | module ietf-i2nsf-cfi-policy { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace | namespace | |||
"urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"; | "urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"; | |||
prefix nsfcfi; | prefix nsfcfi; | |||
import ietf-inet-types{ | import ietf-inet-types{ | |||
prefix inet; | prefix inet; | |||
} | reference "RFC 6991"; | |||
} | ||||
import ietf-yang-types{ | import ietf-yang-types{ | |||
prefix yang; | prefix yang; | |||
} | reference "RFC 6991"; | |||
} | ||||
import ietf-netconf-acm { | organization | |||
prefix nacm; | "IETF I2NSF (Interface to Network Security Functions) | |||
Working Group"; | ||||
} | contact | |||
"WG Web: <http://tools.ietf.org/wg/i2nsf> | ||||
WG List: <mailto:i2nsf@ietf.org> | ||||
organization | Editor: Jaehoon Paul Jeong | |||
"IETF I2NSF (Interface to Network Security Functions) | <mailto:pauljeong@skku.edu> | |||
Working Group"; | ||||
contact | Editor: Patrick Lingga | |||
"WG Web: <http://tools.ietf.org/wg/i2nsf> | <mailto:patricklink@skku.edu>"; | |||
WG List: <mailto:i2nsf@ietf.org> | ||||
Editor: Jaehoon Paul Jeong | description | |||
<mailto:pauljeong@skku.edu> | "This module is a YANG module for Consumer-Facing Interface. | |||
Editor: Patrick Lingga | Copyright (c) 2021 IETF Trust and the persons identified as | |||
<mailto:patricklink@skku.edu>"; | authors of the code. All rights reserved. | |||
description | Redistribution and use in source and binary forms, with or | |||
"This module is a YANG module for Consumer-Facing Interface. | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | ||||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | This version of this YANG module is part of RFC XXXX | |||
authors of the code. All rights reserved. | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
for full legal notices."; | ||||
Redistribution and use in source and binary forms, with or | // RFC Ed.: replace XXXX with an actual RFC number and remove | |||
without modification, is permitted pursuant to, and subject to | // this note. | |||
the license terms contained in, the Simplified BSD License set | ||||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX | revision "2021-08-21"{ | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | description "Initial revision."; | |||
for full legal notices."; | reference | |||
"RFC XXXX: I2NSF Consumer-Facing Interface YANG Data Model"; | ||||
// RFC Ed.: replace XXXX with an actual RFC number and remove | // RFC Ed.: replace XXXX with an actual RFC number and remove | |||
// this note. | // this note. | |||
} | ||||
revision "2021-03-08"{ | identity resolution-strategy { | |||
description "Initial revision."; | description | |||
reference | "Base identity for resolution strategy"; | |||
"RFC XXXX: I2NSF Consumer-Facing Interface YANG Data Model"; | reference | |||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
// RFC Ed.: replace XXXX with an actual RFC number and remove | identity fmr { | |||
// this note. | base resolution-strategy; | |||
} | description | |||
"Identity for First Matching Rule (FMR)"; | ||||
reference | ||||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
identity malware-file-type { | identity lmr { | |||
description | base resolution-strategy; | |||
"Base identity for malware file types."; | description | |||
"Identity for Last Matching Rule (LMR)"; | ||||
reference | ||||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
} | identity pmr { | |||
base resolution-strategy; | ||||
description | ||||
"Identity for Prioritized Matching Rule (PMR)"; | ||||
reference | ||||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
identity executable-file { | identity pmre { | |||
base malware-file-type; | base resolution-strategy; | |||
description | description | |||
"Identity for executable file types."; | "Identity for Prioritized Matching Rule | |||
} | with Errors (PMRE)"; | |||
reference | ||||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
identity doc-file { | identity pmrn { | |||
base malware-file-type; | base resolution-strategy; | |||
description | description | |||
"Identity for Microsoft document file types."; | "Identity for Prioritized Matching Rule | |||
} | with No Errors (PMRN)"; | |||
reference | ||||
"draft-ietf-i2nsf-capability-data-model-17: | ||||
I2NSF Capability YANG Data Model - Resolution Strategy"; | ||||
} | ||||
identity html-app-file { | identity security-event-type { | |||
base malware-file-type; | description | |||
description | "Base identity for security event types."; | |||
"Identity for html application file types."; | } | |||
} | ||||
identity javascript-file { | identity ddos { | |||
base malware-file-type; | base security-event-type; | |||
description | description | |||
"Identity for Javascript file types."; | "Identity for DDoS event types."; | |||
} | } | |||
identity pdf-file { | identity intrusion { | |||
base malware-file-type; | base security-event-type; | |||
description | description | |||
"Identity for pdf file types."; | "Identity for intrusion event types."; | |||
} | } | |||
identity dll-file { | identity web-attack { | |||
base malware-file-type; | base security-event-type; | |||
description | description | |||
"Identity for dll file types."; | "Identity for web-attack event types."; | |||
} | } | |||
identity msi-file { | identity voip-volte { | |||
base malware-file-type; | base security-event-type; | |||
description | description | |||
"Identity for Microsoft installer file types."; | "Identity for VoIP/VoLTE event types."; | |||
} | } | |||
identity security-event-type { | identity protocol { | |||
description | description | |||
"Base identity for security event types."; | "This identity represents the protocol types."; | |||
} | } | |||
identity ddos { | ||||
base security-event-type; | ||||
description | ||||
"Identity for DDoS event types."; | ||||
} | ||||
identity spyware { | identity layer-4-protocol { | |||
base security-event-type; | base protocol; | |||
description | description | |||
"Identity for spyware event types."; | "Base identity for the Layer 4 (i.e., Transport Layer) | |||
} | Protocols"; | |||
} | ||||
identity trojan { | identity tcp { | |||
base security-event-type; | base layer-4-protocol; | |||
description | description | |||
"Identity for Trojan infection event types."; | "Base identity for TCP condition capabilities"; | |||
} | reference | |||
"RFC 793: Transmission Control Protocol | ||||
draft-ietf-tcpm-rfc793bis: Transmission Control Protocol | ||||
(TCP) Specification"; | ||||
} | ||||
identity ransomware { | identity udp { | |||
base security-event-type; | base layer-4-protocol; | |||
description | description | |||
"Identity for ransomware infection event types."; | "Base identity for UDP condition capabilities"; | |||
} | reference | |||
"RFC 768: User Datagram Protocol"; | ||||
} | ||||
identity i2nsf-ipsec { | identity sctp { | |||
description | base layer-4-protocol; | |||
"Base identity for IPsec method types."; | description | |||
reference | "Identity for SCTP condition capabilities"; | |||
"draft-ietf-i2nsf-sdn-ipsec-flow-protection-08: Software-Defined | reference | |||
Networking (SDN)-based IPsec Flow Protection - IPsec method | "RFC 4960: Stream Control Transmission Protocol"; | |||
types can be selected."; | } | |||
} | ||||
identity ipsec-ike { | identity dccp { | |||
base i2nsf-ipsec; | base layer-4-protocol; | |||
description | description | |||
"Identity for ipsec-ike."; | "Identity for DCCP condition capabilities"; | |||
reference | reference | |||
"draft-ietf-i2nsf-sdn-ipsec-flow-protection-08: Software-Defined | "RFC 4340: Datagram Congestion Control Protocol"; | |||
Networking (SDN)-based IPsec Flow Protection - IPsec method | } | |||
type with IKE is selected."; | ||||
} | ||||
identity ipsec-ikeless { | identity layer-7-protocol { | |||
base i2nsf-ipsec; | base protocol; | |||
description | description | |||
"Identity for ipsec-ikeless."; | "Base identity for the Layer 7 (i.e., Application Layer) | |||
reference | Protocols"; | |||
"draft-ietf-i2nsf-sdn-ipsec-flow-protection-08: Software-Defined | } | |||
Networking (SDN)-based IPsec Flow Protection - IPsec method | ||||
type without IKE is selected."; | ||||
} | ||||
identity continent { | identity ftp { | |||
description | base layer-7-protocol; | |||
"Base Identity for continent types."; | description | |||
} | "The identity for ftp protocol."; | |||
reference | ||||
"RFC 959: File Transfer Protocol (FTP)"; | ||||
} | ||||
identity ssh { | ||||
base layer-7-protocol; | ||||
description | ||||
"The identity for ssh protocol."; | ||||
reference | ||||
"RFC 4250: The Secure Shell (SSH) Protocol"; | ||||
} | ||||
identity africa { | identity telnet { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for Africa."; | "The identity for telnet."; | |||
} | reference | |||
"RFC 854: Telnet Protocol"; | ||||
} | ||||
identity asia { | identity smtp { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for Asia."; | "The identity for smtp."; | |||
} | reference | |||
"RFC 5321: Simple Mail Transfer Protocol (SMTP)"; | ||||
} | ||||
identity europe { | identity http { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for Europe."; | "The identity for http."; | |||
} | reference | |||
"RFC7230: Hypertext Transfer Protocol (HTTP/1.1): Message | ||||
Syntax and Routing | ||||
RFC7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | ||||
and Content"; | ||||
} | ||||
identity north-america { | identity https { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for North America."; | "The identity for https."; | |||
} | reference | |||
"RFC 2818: HTTP over TLS (HTTPS)"; | ||||
} | ||||
identity south-america { | identity pop3 { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for South America."; | "The identity for pop3."; | |||
} | reference | |||
"RFC 1939: Post Office Protocol - Version 3 (POP3)"; | ||||
} | ||||
identity oceania { | identity nat { | |||
base continent; | base layer-7-protocol; | |||
description | description | |||
"Identity for Oceania"; | "The identity for nat."; | |||
} | reference | |||
"RFC 3022: Traditional IP Network Address Translator (Traditional | ||||
NAT)"; | ||||
} | ||||
identity protocol-type { | identity action { | |||
description | description | |||
"This identity represents the protocol types."; | "Base identity for action"; | |||
} | } | |||
identity ftp { | identity ingress-action { | |||
base protocol-type; | base action; | |||
description | description | |||
"The identity for ftp protocol."; | "Base identity to represents the ingress actions, such as | |||
reference | pass, drop, rate-limit, and mirror."; | |||
"RFC 959: File Transfer Protocol (FTP)"; | } | |||
} | ||||
identity ssh { | identity egress-action { | |||
base protocol-type; | base action; | |||
description | description | |||
"The identity for ssh protocol."; | "Base identity represents the egress actions, such as | |||
reference | pass, drop, rate-limit, mirror, invoke-signaling, | |||
"RFC 4250: The Secure Shell (SSH) Protocol"; | tunnel-encapsulation, forwarding, and transformation."; | |||
} | } | |||
identity telnet { | identity pass { | |||
base protocol-type; | base ingress-action; | |||
description | description | |||
"The identity for telnet."; | "The identity for pass."; | |||
reference | } | |||
"RFC 854: Telnet Protocol"; | ||||
} | ||||
identity smtp { | identity drop { | |||
base protocol-type; | base ingress-action; | |||
description | description | |||
"The identity for smtp."; | "The identity for drop."; | |||
reference | } | |||
"RFC 5321: Simple Mail Transfer Protocol (SMTP)"; | ||||
} | ||||
identity sftp { | identity rate-limit { | |||
base protocol-type; | base ingress-action; | |||
description | description | |||
"The identity for sftp."; | "The identity for rate-limit."; | |||
reference | ||||
"RFC 913: Simple File Transfer Protocol (SFTP)"; | ||||
} | ||||
identity http { | } | |||
base protocol-type; | ||||
description | ||||
"The identity for http."; | ||||
reference | ||||
"RFC 2616: Hypertext Transfer Protocol (HTTP)"; | ||||
} | ||||
identity https { | identity mirror { | |||
base protocol-type; | base ingress-action; | |||
description | description | |||
"The identity for https."; | "The identity for mirroring."; | |||
reference | } | |||
"RFC 2818: HTTP over TLS (HTTPS)"; | ||||
} | ||||
identity pop3 { | identity invoke-signaling { | |||
base protocol-type; | base egress-action; | |||
description | description | |||
"The identity for pop3."; | "Identity for invoke signaling action capability"; | |||
reference | reference | |||
"RFC 1081: Post Office Protocol -Version 3 (POP3)"; | "RFC 8329: Framework for Interface to Network Security | |||
} | Functions - Invoke-signaling action"; | |||
} | ||||
identity nat { | identity tunnel-encapsulation { | |||
base protocol-type; | base egress-action; | |||
description | description | |||
"The identity for nat."; | "Identity for tunnel encapsulation action capability"; | |||
reference | reference | |||
"RFC 1631: The IP Network Address Translator (NAT)"; | "RFC 8329: Framework for Interface to Network Security | |||
} | Functions - Tunnel Encapsulation"; | |||
} | ||||
identity primary-action { | identity forwarding { | |||
description | base egress-action; | |||
"This identity represents the primary actions, such as | description | |||
PASS, DROP, ALERT, RATE-LIMIT, and MIRROR."; | "Identity for forwarding action capability"; | |||
} | reference | |||
"RFC 8329: Framework for Interface to Network Security | ||||
Functions - Forwarding action"; | ||||
} | ||||
identity pass { | identity transformation { | |||
base primary-action; | base egress-action; | |||
description | description | |||
"The identity for pass."; | "Identity for transformation action capability"; | |||
} | reference | |||
"RFC 8329: Framework for Interface to Network Security | ||||
Functions - Redirection action"; | ||||
} | ||||
identity drop { | identity log-action { | |||
base primary-action; | description | |||
description | "Base identity for representing log actions, such as rule-log and | |||
"The identity for drop."; | session-log action."; | |||
} | ||||
identity alert { | } | |||
base primary-action; | ||||
description | ||||
"The identity for alert."; | ||||
} | ||||
identity rate-limit { | identity rule-log { | |||
base primary-action; | base log-action; | |||
description | description | |||
"The identity for rate-limit."; | "Identity for rule log-action capability. | |||
} | Log the received packet based on the rule"; | |||
} | ||||
identity mirror { | identity session-log { | |||
base primary-action; | base log-action; | |||
description | description | |||
"The identity for mirroring."; | "Identity for session log-action capability. | |||
} | Log the received packet based on the session."; | |||
} | ||||
identity secondary-action { | identity signature-type { | |||
description | description | |||
"This field identifies additional actions if a rule is | "This represents the base identity for signature types."; | |||
matched. This could be one of 'LOG', 'SYSLOG', | } | |||
'SESSION-LOG', etc."; | ||||
} | ||||
identity log { | identity signature-yara { | |||
base secondary-action; | base signature-type; | |||
description | description | |||
"The identity for logging."; | "This represents the YARA signatures."; | |||
} | reference | |||
"YARA: YARA signatures are explained."; | ||||
} | ||||
identity syslog { | identity signature-snort { | |||
base secondary-action; | base signature-type; | |||
description | description | |||
"The identity for system logging."; | "This represents the SNORT signatures."; | |||
} | reference | |||
"SNORT: SNORT signatures are explained."; | ||||
} | ||||
identity session-log { | identity signature-suricata { | |||
base secondary-action; | base signature-type; | |||
description | description | |||
"The identity for session logging."; | "This represents the SURICATA signatures."; | |||
} | reference | |||
"SURICATA: SURICATA signatures are explained."; | ||||
} | ||||
identity signature-type { | identity threat-feed-type { | |||
description | description | |||
"This represents the base identity for signature types."; | "This represents the base identity for threat-feed."; | |||
} | ||||
identity signature-yara { | } | |||
base signature-type; | ||||
description | ||||
"This represents the YARA signatures."; | ||||
reference | ||||
"YARA: YARA signatures are explained."; | ||||
} | ||||
identity signature-snort { | identity day { | |||
base signature-type; | description | |||
description | "This represents the base for days."; | |||
"This represents the SNORT signatures."; | } | |||
reference | ||||
"SNORT: SNORT signatures are explained."; | ||||
} | ||||
identity signature-suricata { | identity monday { | |||
base signature-type; | base day; | |||
description | description | |||
"This represents the SURICATA signatures."; | "This represents Monday."; | |||
reference | } | |||
"SURICATA: SURICATA signatures are explained."; | ||||
} | ||||
identity threat-feed-type { | identity tuesday { | |||
description | base day; | |||
"This represents the base identity for threat-feed."; | description | |||
} | "This represents Tuesday."; | |||
} | ||||
identity day { | identity wednesday { | |||
description | base day; | |||
"This represents the base for days."; | description | |||
} | "This represents Wednesday."; | |||
} | ||||
identity monday { | identity thursday { | |||
base day; | base day; | |||
description | description | |||
"This represents Monday."; | "This represents Thursday."; | |||
} | } | |||
identity tuesday { | identity friday { | |||
base day; | base day; | |||
description | description | |||
"This represents Tuesday."; | "This represents Friday."; | |||
} | } | |||
identity wednesday { | identity saturday { | |||
base day; | base day; | |||
description | description | |||
"This represents Wednesday."; | "This represents Saturday."; | |||
} | } | |||
identity thursday { | ||||
base day; | ||||
description | ||||
"This represents Thursday."; | ||||
} | ||||
identity friday { | identity sunday { | |||
base day; | base day; | |||
description | description | |||
"This represents Friday."; | "This represents Sunday."; | |||
} | } | |||
identity continent { | ||||
description | ||||
"Base Identity for continent types."; | ||||
} | ||||
identity saturday { | identity africa { | |||
base day; | base continent; | |||
description | description | |||
"This represents Saturday."; | "Identity for Africa."; | |||
} | } | |||
identity sunday { | identity asia { | |||
base day; | base continent; | |||
description | description | |||
"This represents Sunday."; | "Identity for Asia."; | |||
} | } | |||
/* | identity europe { | |||
* Typedefs | base continent; | |||
*/ | description | |||
typedef time { | "Identity for Europe."; | |||
type string { | } | |||
pattern '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.\d+)?' | ||||
+ '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | ||||
} | ||||
description | ||||
"The time type represents an instance of time of zero-duration | ||||
that recurs every day."; | ||||
} | ||||
/* | identity north-america { | |||
* Groupings | base continent; | |||
*/ | description | |||
"Identity for North America."; | ||||
} | ||||
grouping ipv4-list { | identity south-america { | |||
description | base continent; | |||
"Grouping for an IPv4 address list."; | description | |||
leaf-list ipv4 { | "Identity for South America."; | |||
type inet:ipv4-address; | } | |||
description | ||||
"This is the entry for an IPv4 address list."; | ||||
} | identity oceania { | |||
} | base continent; | |||
description | ||||
"Identity for Oceania"; | ||||
} | ||||
grouping ipv6-list { | /* | |||
description | * Typedefs | |||
"Grouping for an IPv6 address list."; | */ | |||
leaf-list ipv6 { | typedef time { | |||
type inet:ipv6-address; | type string { | |||
description | pattern '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.\d+)?' | |||
"This is the entry for an IPv6 address list."; | + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | |||
} | ||||
} | ||||
grouping ipv4 { | } | |||
description | description | |||
"Grouping for an IPv4 address."; | "The time type represents an instance of time of zero-duration | |||
leaf ipv4 { | that recurs every day."; | |||
type inet:ipv4-address; | } | |||
description | ||||
"This is the entry for an IPv4 address."; | ||||
} | ||||
} | ||||
grouping ipv6 { | /* | |||
description | * Groupings | |||
"Grouping for an IPv6 address."; | */ | |||
leaf ipv6 { | ||||
type inet:ipv6-address; | ||||
description | ||||
"This is the entry for an IPv6 address."; | ||||
} | ||||
} | ||||
grouping ip-address-info { | grouping ipv4-list { | |||
description | description | |||
"There are two types to configure a security policy | "Grouping for an IPv4 address list."; | |||
for an IPv4 address, such as exact match and range match."; | leaf-list ipv4 { | |||
choice match-type { | type inet:ipv4-address; | |||
description | description | |||
"User can choose between 'exact match' and 'range match'."; | "This is the entry for an IPv4 address list."; | |||
case exact-match-ipv4 { | } | |||
uses ipv4; | } | |||
description | ||||
"Exact ip-address match for IPv4 addresses"; | ||||
} | ||||
case exact-match-ipv6 { | ||||
uses ipv6; | ||||
description | ||||
"Exact ip-address match for IPv6 addresses"; | ||||
} | ||||
case range-match-ipv4 { | ||||
container range-ipv4-address { | ||||
leaf start-ipv4-address { | ||||
type inet:ipv4-address; | ||||
mandatory true; | ||||
description | ||||
"A start IPv4 address for a range match."; | ||||
} | ||||
leaf end-ipv4-address { | ||||
type inet:ipv4-address; | ||||
mandatory true; | ||||
description | ||||
"An end IPv4 address for a range match."; | ||||
} | ||||
description | ||||
"A range match for IPv4 addresses is provided. Note that the | ||||
start IPv4 address must be lower than the end IPv4 address."; | ||||
} | ||||
} | ||||
case range-match-ipv6 { | ||||
container range-ipv6-address { | ||||
leaf start-ipv6-address { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description | ||||
"A start IPv6 address for a range match."; | ||||
} | ||||
leaf end-ipv6-address { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description | ||||
"An end IPv6 address for a range match."; | ||||
} | ||||
description | ||||
"A range match for IPv6 addresses is provided. Note that the | ||||
start IPv6 address must be lower than the end IPv4 address."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
grouping ipsec-based-method { | grouping ipv6-list { | |||
description | description | |||
"This represents the ipsec-based method."; | "Grouping for an IPv6 address list."; | |||
list ipsec-method { | leaf-list ipv6 { | |||
key "method"; | type inet:ipv6-address; | |||
description | description | |||
"This represents the list of IPsec method types."; | "This is the entry for an IPv6 address list."; | |||
leaf method { | } | |||
type identityref { | } | |||
base i2nsf-ipsec; | ||||
} | ||||
description | ||||
"This represents IPsec IKE and IPsec IKEless cases. If this | ||||
is not set, it cannot support IPsec IKE or IPsec IKEless."; | ||||
reference | ||||
"draft-ietf-i2nsf-sdn-ipsec-flow-protection-08: | ||||
Software-Defined Networking (SDN)-based IPsec Flow Protection | ||||
- IPsec method types can be selected."; | ||||
} | ||||
} | ||||
} | ||||
grouping user-group { | grouping ipv4 { | |||
description | description | |||
"This group represents user group information such as name and | "Grouping for an IPv4 address."; | |||
ip-address."; | leaf ipv4 { | |||
leaf name { | type inet:ipv4-address; | |||
type string; | description | |||
description | "This is the entry for an IPv4 address."; | |||
"This represents the name of a user-group. A user-group name | } | |||
is used to map a user-group's name (e.g., employees) to an IP | } | |||
address. It is dependent on implementation."; | ||||
} | ||||
uses ip-address-info{ | ||||
refine match-type{ | ||||
mandatory true; | ||||
} | ||||
description | ||||
"This represents the IP addresses of a user-group."; | ||||
} | ||||
} | ||||
grouping device-group { | grouping ipv6 { | |||
description | description | |||
"This group represents device group information such as ip-address | "Grouping for an IPv6 address."; | |||
protocol."; | leaf ipv6 { | |||
leaf name { | type inet:ipv6-address; | |||
type string; | description | |||
description | "This is the entry for an IPv6 address."; | |||
"This represents the name of a device-group."; | } | |||
} | ||||
uses ip-address-info{ | ||||
refine match-type{ | ||||
mandatory true; | ||||
} | ||||
} | ||||
leaf-list protocol { | ||||
type identityref { | ||||
base protocol-type; | ||||
} | ||||
description | ||||
"This represents the communication protocols of devices. If this | ||||
is not set, it cannot support the appropriate protocol"; | ||||
} | ||||
} | ||||
grouping location-group { | } | |||
description | ||||
"This group represents location-group information such as geo-ip | ||||
and continent."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"This represents the name of a location."; | ||||
} | ||||
list geo-ip-ipv4 { | ||||
key "ipv4-address"; | ||||
description | ||||
"This represents the list of IPv4 addresses based on a location."; | ||||
leaf ipv4-address{ | ||||
type inet:ipv4-address; | ||||
description | ||||
"This represents an IPv4 geo-ip address of a location."; | ||||
} | ||||
leaf ipv4-prefix{ | ||||
type inet:ipv4-prefix; | ||||
description | ||||
"This represents the prefix for the IPv4 addresses."; | ||||
} | ||||
} | ||||
list geo-ip-ipv6 { | ||||
key "ipv6-address"; | ||||
description | ||||
"This represents the list of IPv6 addresses based on a location."; | ||||
leaf ipv6-address{ | ||||
type inet:ipv6-address; | ||||
description | ||||
"This represents an IPv6 geo-ip address of a location."; | ||||
} | ||||
leaf ipv6-prefix{ | ||||
type inet:ipv6-prefix; | ||||
description | ||||
"This represents the prefix for the IPv6 addresses."; | ||||
} | ||||
} | ||||
leaf continent { | ||||
type identityref { | ||||
base continent; | ||||
} | ||||
default asia; | ||||
description | ||||
"location-group has geo-ip addresses of the corresponding | ||||
continent."; | ||||
} | ||||
} | ||||
grouping threat-feed-info { | grouping ip-address-info { | |||
description | description | |||
"This is the grouping for the threat-feed-list"; | "There are two types to configure a security policy | |||
leaf threat-type { | for an IP address, such as IPv4 adress and IPv6 address."; | |||
type identityref { | choice match-type { | |||
base threat-feed-type; | description | |||
} | "User can choose between IPv4 and IPv6."; | |||
description | case range-match-ipv4 { | |||
"This represents the type of the threat-feed."; | container range-ipv4-address { | |||
} | leaf start-ipv4-address { | |||
leaf server-ipv4 { | type inet:ipv4-address; | |||
type inet:ipv4-address; | mandatory true; | |||
description | description | |||
"The IPv4 address for the threat-feed server."; | "A start IPv4 address for a range match."; | |||
} | } | |||
leaf server-ipv6 { | leaf end-ipv4-address { | |||
type inet:ipv6-address; | type inet:ipv4-address; | |||
description | mandatory true; | |||
"The IPv6 address for the threat-feed server."; | description | |||
} | "An end IPv4 address for a range match."; | |||
leaf description { | } | |||
type string; | description | |||
description | "A range match for IPv4 addresses is provided. | |||
"This represents the descriptions of a threat-feed. The | Note that the start IPv4 address must be lower than | |||
description should include information, such as type, threat, | the end IPv4 address."; | |||
method, and file type. Structured Threat Information Expression | } | |||
(STIX) can be used for description of a threat [STIX]."; | } | |||
} | case range-match-ipv6 { | |||
} | container range-ipv6-address { | |||
leaf start-ipv6-address { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description | ||||
"A start IPv6 address for a range match."; | ||||
} | ||||
leaf end-ipv6-address { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description | ||||
"An end IPv6 address for a range match."; | ||||
} | ||||
description | ||||
"A range match for IPv6 addresses is provided. | ||||
Note that the start IPv6 address must be lower than | ||||
the end IPv6 address."; | ||||
} | ||||
grouping payload-string { | } | |||
description | } | |||
"The grouping for payload-string content. It contains information | } | |||
such as name and string content."; | ||||
leaf description { | ||||
type string; | ||||
description | ||||
"This represents the description of a payload. If this is not | ||||
set, it cannot support the description of how the payload content | ||||
is related to a security attack."; | ||||
} | ||||
leaf-list content { | ||||
type string; | ||||
description | ||||
"This represents the string of the payload contents. This content | ||||
leaf-list contains the payload of a packet to analyze a threat. | ||||
Due to the types of threats, the type of the content is defined | ||||
as a string to accommodate any kind of a payload type such as | ||||
HTTP, HTTPS, and SIP. If this is not set, it cannot support the | ||||
payload contents involved in a security attack as a string."; | ||||
} | ||||
} | ||||
list i2nsf-cfi-policy { | grouping user-group { | |||
key "policy-name"; | description | |||
description | "This group represents user group information such as name and | |||
"This is a security policy list. Each policy in the list contains | ip-address."; | |||
a list of security policy rules, and is a policy instance to have | leaf name { | |||
the information of where and when a policy needs to be applied."; | type string; | |||
leaf policy-name { | description | |||
type string; | "This represents the name of a user-group. A user-group name | |||
description | is used to map a user-group's name (e.g., employees) to IP | |||
"The name which identifies the policy."; | address(es), MAC address(es). | |||
} | It is dependent on implementation."; | |||
container rules{ | } | |||
description | leaf-list mac-address { | |||
"This container has rules."; | type yang:mac-address; | |||
nacm:default-deny-write; | description | |||
list rule { | "Represent the MAC Address of a user-group. A user-group | |||
key "rule-name"; | can have multiple MAC Addresses."; | |||
ordered-by user; | } | |||
leaf rule-name { | uses ip-address-info{ | |||
type string; | description | |||
description | "This represents the IP addresses of a user-group."; | |||
"This represents the name for a rule."; | refine match-type{ | |||
} | mandatory true; | |||
description | } | |||
"There can be a single or multiple number of rules."; | } | |||
} | ||||
container event { | grouping device-group { | |||
description | description | |||
"This represents an event (i.e., a security event), for which | "This group represents device group information such as | |||
a security rule is made."; | ip-address protocol."; | |||
leaf security-event { | leaf name { | |||
type identityref { | type string; | |||
base security-event-type; | description | |||
} | "This represents the name of a device-group."; | |||
description | } | |||
"This contains the description of a security event. If this | uses ip-address-info{ | |||
is not set, it cannot support what security event will be | refine match-type{ | |||
enforced."; | mandatory true; | |||
} | } | |||
} | ||||
leaf-list application-protocol { | ||||
type identityref { | ||||
base layer-7-protocol; | ||||
container time-information { | } | |||
description | description | |||
"The time information when a security policy rule should be | "This represents the application layer protocols of devices. | |||
applied."; | If this is not set, it cannot support the appropriate | |||
leaf start-date-time { | protocol"; | |||
type yang:date-and-time; | } | |||
description | } | |||
"This is the start date and time for a security policy | ||||
rule."; | ||||
} | ||||
leaf end-date-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"This is the end date and time for a policy rule. The | ||||
policy rule will stop working after the specified | ||||
end-date-time."; | ||||
} | ||||
container period{ | ||||
when | ||||
"../../frequency!='only-once'"; | ||||
description | ||||
"This represents the repetition time. In the case where | ||||
the frequency is weekly, the days can be set."; | ||||
leaf start-time { | ||||
type time; | ||||
description | grouping location-group { | |||
"This is a period's start time for an event."; | description | |||
} | "This group represents location-group information such as geo-ip | |||
leaf end-time { | and continent."; | |||
type time; | leaf name { | |||
type string; | ||||
description | ||||
"This represents the name of a location."; | ||||
} | ||||
list geo-ip-ipv4 { | ||||
key "ipv4-address"; | ||||
description | ||||
"This represents the list of IPv4 addresses based on a | ||||
location."; | ||||
leaf ipv4-address{ | ||||
type inet:ipv4-address; | ||||
description | ||||
"This represents an IPv4 geo-ip address of a location."; | ||||
} | ||||
leaf ipv4-prefix{ | ||||
type inet:ipv4-prefix; | ||||
description | ||||
"This represents the prefix for the IPv4 addresses."; | ||||
} | ||||
} | ||||
list geo-ip-ipv6 { | ||||
key "ipv6-address"; | ||||
description | ||||
"This represents the list of IPv6 addresses based on a | ||||
location."; | ||||
leaf ipv6-address{ | ||||
type inet:ipv6-address; | ||||
description | ||||
"This represents an IPv6 geo-ip address of a location."; | ||||
} | ||||
leaf ipv6-prefix{ | ||||
type inet:ipv6-prefix; | ||||
description | ||||
"This represents the prefix for the IPv6 addresses."; | ||||
} | ||||
description | } | |||
"This is a period's end time for an event."; | leaf continent { | |||
} | type identityref { | |||
leaf-list day { | base continent; | |||
when | } | |||
"../../../frequency='weekly'"; | default asia; | |||
type identityref{ | description | |||
base day; | "location-group has geo-ip addresses of the corresponding | |||
} | continent."; | |||
min-elements 1; | } | |||
description | } | |||
"This represents the repeated day of every week (e.g., | ||||
Monday and Tuesday). More than one day can be | ||||
specified."; | ||||
} | ||||
leaf-list date { | ||||
when | ||||
"../../../frequency='monthly'"; | ||||
type int32{ | ||||
range "1..31"; | ||||
} | ||||
min-elements 1; | ||||
description | ||||
"This represents the repeated date of every month. More | ||||
than one date can be specified."; | ||||
} | ||||
leaf-list month { | ||||
when | ||||
"../../../frequency='yearly'"; | ||||
type string{ | ||||
pattern '\d{2}-\d{2}'; | ||||
} | ||||
min-elements 1; | ||||
description | ||||
"This represents the repeated date and month of every | ||||
year. More than one can be specified. A pattern used | ||||
here is Month and Date (MM-DD)."; | ||||
} | ||||
} | ||||
} | ||||
leaf frequency { | grouping payload-string { | |||
type enumeration { | description | |||
enum only-once { | "The grouping for payload-string content. It contains information | |||
description | such as name and string content."; | |||
"This represents that the rule is immediately enforced | leaf description { | |||
only once and not repeated. The policy will | type string; | |||
continuously be active from the start-time to the | description | |||
end-time."; | "This represents the description of a payload. If this is not | |||
} | set, it cannot support the description of how the payload | |||
enum daily { | content is related to a security attack."; | |||
description | } | |||
"This represents that the rule is enforced on a daily | leaf-list content { | |||
basis. The policy will be repeated daily until the | type string; | |||
end-date."; | description | |||
} | "This represents the string of the payload contents. | |||
enum weekly { | This content leaf-list contains the payload of a packet to | |||
description | analyze a threat. Due to the types of threats, the type of | |||
"This represents that the rule is enforced on a weekly | the content is defined as a string to accommodate any kind | |||
basis. The policy will be repeated weekly until the | of a payload type such as HTTP, HTTPS, and SIP. If this is | |||
end-date. The repeated days can be specified."; | not set, it cannot support the payload contents involved in | |||
} | a security attack as a string."; | |||
enum monthly { | } | |||
description | } | |||
"This represents that the rule is enforced on a monthly | ||||
basis. The policy will be repeated monthly until the | ||||
end-date."; | ||||
} | ||||
enum yearly { | ||||
description | ||||
"This represents that the rule is enforced on a yearly | ||||
basis. The policy will be repeated yearly until the | ||||
end-date."; | ||||
} | ||||
} | ||||
default only-once; | ||||
description | ||||
"This represents how frequently the rule should be enforced."; | ||||
} | ||||
} | ||||
container condition { | list i2nsf-cfi-policy { | |||
description | key "policy-name"; | |||
"Conditions for general security policies."; | description | |||
container firewall-condition { | "This is a security policy list. Each policy in the list contains | |||
description | a list of security policy rules, and is a policy instance to have | |||
"A general firewall condition."; | the information of where and when a policy needs to be applied."; | |||
leaf source { | leaf policy-name { | |||
type leafref { | type string; | |||
path | description | |||
"/i2nsf-cfi-policy/endpoint-groups/user-group/name"; | "The name which identifies the policy."; | |||
} | } | |||
description | leaf resolution-strategy { | |||
"This describes the path to the source."; | type identityref { | |||
} | base resolution-strategy; | |||
} | ||||
default fmr; | ||||
description | ||||
"The resolution strategies that can be used to | ||||
specify how to resolve conflicts that occur between | ||||
actions of the same or different policy rules that | ||||
are matched and contained in this particular NSF"; | ||||
leaf-list destination { | reference | |||
type leafref { | "draft-ietf-i2nsf-capability-data-model-17: | |||
path | I2NSF Capability YANG Data Model - Resolution strategy"; | |||
"/i2nsf-cfi-policy/endpoint-groups/user-group/name"; | } | |||
list rules { | ||||
key "rule-name"; | ||||
} | description | |||
description | "There can be a single or multiple number of rules."; | |||
"This describes the paths to the destinations."; | leaf rule-name { | |||
} | type string; | |||
} | description | |||
"This represents the name for a rule."; | ||||
} | ||||
container ddos-condition { | leaf priority { | |||
description | type uint8 { | |||
"A condition for a DDoS attack."; | range "1..255"; | |||
leaf-list source { | } | |||
type leafref { | description | |||
path | "The priority keyword comes with a mandatory | |||
"/i2nsf-cfi-policy/endpoint-groups/device-group/name"; | numeric value which can range from 1 through 255. | |||
} | Note that a higher number means a higher priority"; | |||
description | } | |||
"This describes the paths to the sources."; | ||||
} | ||||
leaf-list destination { | ||||
type leafref { | ||||
path | ||||
"/i2nsf-cfi-policy/endpoint-groups/device-group/name"; | ||||
} | ||||
description | ||||
"This describes the paths to the destinations."; | ||||
} | ||||
container rate-limit { | ||||
description | ||||
"This describes the rate-limit."; | ||||
leaf packet-threshold-per-second { | ||||
type uint32; | ||||
description | ||||
"This is a trigger value for a rate limit for a | ||||
DDoS-attack mitigation."; | ||||
} | ||||
} | ||||
} | ||||
container location-condition { | container event { | |||
description | description | |||
"A condition for a location-based connection"; | "This represents an event (i.e., a security event), for which | |||
leaf-list source { | a security rule is made."; | |||
type leafref { | leaf security-event { | |||
path | type identityref { | |||
"/i2nsf-cfi-policy/endpoint-groups/location-group/name"; | base security-event-type; | |||
} | } | |||
description | description | |||
"This describes the paths to a location's sources."; | "This contains the description of a security event. If this | |||
} | is not set, it cannot support what security event will be | |||
leaf-list destination { | enforced."; | |||
type leafref { | } | |||
path | container time { | |||
"/i2nsf-cfi-policy/endpoint-groups/location-group/name"; | description | |||
} | "The time when a security policy rule should be applied."; | |||
description | leaf start-date-time { | |||
"This describes the paths to a location's destinations."; | type yang:date-and-time; | |||
} | description | |||
} | "This is the start date and time for a security policy | |||
rule."; | ||||
} | ||||
leaf end-date-time { | ||||
type yang:date-and-time; | ||||
description | ||||
"This is the end date and time for a policy rule. The | ||||
policy rule will stop working after the specified | ||||
end-date-time."; | ||||
} | ||||
container period{ | ||||
when | ||||
"../frequency!='only-once'"; | ||||
description | ||||
"This represents the repetition time. In the case where | ||||
the frequency is weekly, the days can be set."; | ||||
leaf start-time { | ||||
type time; | ||||
description | ||||
"This is a period's start time for an event."; | ||||
} | ||||
leaf end-time { | ||||
type time; | ||||
description | ||||
"This is a period's end time for an event."; | ||||
} | ||||
leaf-list day { | ||||
when | ||||
"../../frequency='weekly'"; | ||||
type identityref{ | ||||
base day; | ||||
} | ||||
min-elements 1; | ||||
description | ||||
"This represents the repeated day of every week (e.g., | ||||
Monday and Tuesday). More than one day can be | ||||
specified."; | ||||
} | ||||
leaf-list date { | ||||
when | ||||
"../../frequency='monthly'"; | ||||
type int32{ | ||||
range "1..31"; | ||||
} | ||||
min-elements 1; | ||||
description | ||||
"This represents the repeated date of every month. | ||||
More than one date can be specified."; | ||||
} | ||||
leaf-list month { | ||||
when | ||||
"../../frequency='yearly'"; | ||||
type string{ | ||||
pattern '\d{2}-\d{2}'; | ||||
} | ||||
min-elements 1; | ||||
description | ||||
"This represents the repeated date and month of every | ||||
year. More than one can be specified. A pattern | ||||
used here is Month and Date (MM-DD)."; | ||||
} | ||||
} | ||||
container custom-condition { | leaf frequency { | |||
description | type enumeration { | |||
"A condition based on a packet's content."; | enum only-once { | |||
leaf-list source { | description | |||
type leafref { | "This represents that the rule is immediately | |||
path | enforced only once and not repeated. The policy | |||
"/i2nsf-cfi-policy/threat-preventions/payload-content/name"; | will continuously be active from the start-time | |||
} | to the end-time."; | |||
description | } | |||
"This describes the paths to a packet content's sources."; | enum daily { | |||
} | description | |||
leaf destination { | "This represents that the rule is enforced on a | |||
type leafref { | daily basis. The policy will be repeated daily | |||
path | until the end-date."; | |||
"/i2nsf-cfi-policy/threat-preventions/payload-content/name"; | } | |||
} | enum weekly { | |||
description | description | |||
"This describes the path to a packet content's | "This represents that the rule is enforced on a | |||
destination."; | weekly basis. The policy will be repeated weekly | |||
} | until the end-date. The repeated days can be | |||
} | specified."; | |||
} | ||||
enum monthly { | ||||
description | ||||
"This represents that the rule is enforced on a | ||||
monthly basis. The policy will be repeated monthly | ||||
until the end-date."; | ||||
container threat-feed-condition { | } | |||
description | enum yearly { | |||
"A condition based on the threat-feed information."; | description | |||
leaf-list source { | "This represents that the rule is enforced on a | |||
type leafref { | yearly basis. The policy will be repeated yearly | |||
path | until the end-date."; | |||
"/i2nsf-cfi-policy/threat-preventions/threat-feed-list/name"; | } | |||
} | } | |||
description | default only-once; | |||
"This describes the paths to a threat-feed's sources."; | description | |||
} | "This represents how frequently the rule should be | |||
leaf destination { | enforced."; | |||
type leafref { | } | |||
path | } | |||
"/i2nsf-cfi-policy/threat-preventions/threat-feed-list/name"; | } | |||
} | ||||
description | ||||
"This describes the path to a threat-feed's destination."; | ||||
} | ||||
} | ||||
} | ||||
container actions { | container condition { | |||
description | description | |||
"This is the action container."; | "Conditions for general security policies."; | |||
leaf primary-action { | container firewall-condition { | |||
type identityref { | description | |||
base primary-action; | "A general firewall condition based on the packet header."; | |||
} | leaf-list source { | |||
description | type union { | |||
"This represent primary actions (e.g., PASS, DROP, ALERT, | type leafref { | |||
and MIRROR) to be applied to a condition. If this is not | path | |||
set, it cannot support the primary actions."; | "/i2nsf-cfi-policy/endpoint-groups/user-group/name"; | |||
} | } | |||
leaf secondary-action { | type leafref { | |||
type identityref { | path | |||
base secondary-action; | "/i2nsf-cfi-policy/endpoint-groups/device-group/name"; | |||
} | } | |||
description | } | |||
"This represents secondary actions (e.g., log and syslog) | description | |||
to be applied if they are needed. If this is not set, it | "This describes the path of the source."; | |||
cannot support the secondary actions."; | } | |||
} | ||||
} | ||||
container ipsec-method { | leaf-list destination { | |||
description | type union { | |||
"This container represents the IPsec method such as IKE case | type leafref { | |||
and IKEless case."; | path | |||
leaf method { | "/i2nsf-cfi-policy/endpoint-groups/user-group/name"; | |||
type identityref { | } | |||
base i2nsf-ipsec; | type leafref { | |||
} | path | |||
description | "/i2nsf-cfi-policy/endpoint-groups/device-group/name"; | |||
"This represents the IPsec method type such as IKE case and | } | |||
IKEless case. If this is not set, it cannot support | } | |||
either IPsec IKE or IPsec IKEless."; | description | |||
reference | "This describes the path to the destinations."; | |||
"draft-ietf-i2nsf-sdn-ipsec-flow-protection-08: | } | |||
Software-Defined Networking (SDN)-based IPsec Flow | ||||
Protection - IPsec method types can be selected."; | ||||
} | ||||
} | ||||
} | ||||
} | leaf transport-layer-protocol { | |||
container endpoint-groups { | type identityref { | |||
description | base layer-4-protocol; | |||
"A logical entity in a business environment, where a security | } | |||
policy is to be applied."; | description | |||
list user-group{ | "The transport-layer protocol to be matched."; | |||
uses user-group; | } | |||
key "name"; | ||||
description | ||||
"This represents a user group."; | ||||
} | ||||
list device-group { | ||||
key "name"; | ||||
uses device-group; | ||||
description | ||||
"This represents a device group."; | ||||
} | ||||
list location-group{ | ||||
key "name"; | ||||
uses location-group; | ||||
description | ||||
"This represents a location group."; | ||||
} | ||||
} | ||||
container threat-preventions { | container range-port-number { | |||
description | leaf start-port-number { | |||
"This describes the list of threat-preventions."; | type inet:port-number; | |||
list threat-feed-list { | description | |||
key "name"; | "A start port number for range match."; | |||
description | } | |||
"There can be a single or multiple number of threat-feeds."; | leaf end-port-number { | |||
leaf name { | type inet:port-number; | |||
type string; | description | |||
description | "An end port number for range match."; | |||
"This represents the name of the threat-feed."; | } | |||
} | description | |||
uses threat-feed-info; | "A range match for transport-layer port number. Note that | |||
leaf-list threat-file-types { | the start port number value must be lower than the end | |||
type identityref { | port number value"; | |||
base malware-file-type; | } | |||
} | ||||
description | ||||
"This contains a list of file types needed to be scanned for | ||||
a security threat (e.g., virus)."; | ||||
} | ||||
leaf-list signatures { | ||||
type identityref { | ||||
base signature-type; | ||||
} | ||||
description | ||||
"This contains a list of signatures or hashes of the threats."; | ||||
} | ||||
} | ||||
list payload-content { | ||||
key "name"; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"This represents the name of a packet's payload-content. It | ||||
should give an idea of why a specific payload content is | ||||
marked as a threat. For example, the name 'backdoor' | ||||
indicates the payload content is related to a backdoor | ||||
attack."; | ||||
} | ||||
description | ||||
"This represents a payload-string group."; | ||||
uses payload-string; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
Figure 17: YANG for Consumer-Facing Interface | list icmp { | |||
key "version"; | ||||
description | ||||
"Represents the ICMP packet header information to | ||||
determine if the set of policy actions in this ECA | ||||
policy rule should be executed or not."; | ||||
reference | ||||
"RFC 792: Internet Control Message Protocol | ||||
RFC 8335: PROBE: A Utility for Probing Interfaces"; | ||||
leaf version { | ||||
type enumeration { | ||||
enum icmpv4 { | ||||
value "1"; | ||||
description | ||||
"The ICMPv4 Protocol as defined in RFC 792"; | ||||
} | ||||
enum icmpv6 { | ||||
value "2"; | ||||
description | ||||
"The ICMPv6 Protocol as defined in RFC 4443"; | ||||
} | ||||
} | ||||
description | ||||
"The ICMP version to be matched. This value | ||||
affected the type and code values."; | ||||
reference | ||||
"RFC 792: Internet Control Message Protocol | ||||
RFC 4443: Internet Control Message Protocol (ICMPv6) | ||||
for the Internet Protocol Version 6 (IPv6) | ||||
Specification"; | ||||
} | ||||
leaf-list type { | ||||
type uint8; | ||||
description | ||||
"The security policy rule according to | ||||
ICMP type parameter."; | ||||
reference | ||||
"RFC 792: Internet Control Message Protocol | ||||
RFC 8335: PROBE: A Utility for Probing Interfaces | ||||
IANA: Internet Control Message Protocol (ICMP) | ||||
Parameters | ||||
IANA: Internet Control Message Protocol version 6 | ||||
(ICMPv6) Parameters"; | ||||
} | ||||
leaf-list code { | ||||
type uint8; | ||||
description | ||||
"The security policy rule according to | ||||
ICMP code parameter."; | ||||
reference | ||||
"RFC 792: Internet Control Message Protocol | ||||
RFC 8335: PROBE: A Utility for Probing Interfaces | ||||
IANA: Internet Control Message Protocol (ICMP) | ||||
Parameters | ||||
IANA: Internet Control Message Protocol version 6 | ||||
(ICMPv6) Parameters"; | ||||
} | ||||
} | ||||
} | ||||
container ddos-condition { | ||||
description | ||||
"A condition for a DDoS attack."; | ||||
container rate-limit { | ||||
description | ||||
"This describes the rate-limit."; | ||||
leaf packet-rate-threshold { | ||||
type uint32; | ||||
description | ||||
"This is a trigger value for a rate limit of packet rate | ||||
for a DDoS-attack mitigation."; | ||||
} | ||||
leaf byte-rate-threshold { | ||||
type uint32; | ||||
description | ||||
"This is a trigger value for a rate limit of byte rate | ||||
for a DDoS-attack mitigation."; | ||||
} | ||||
leaf flow-rate-threshold { | ||||
type uint32; | ||||
description | ||||
"This is a trigger value for a rate limit of flow rate | ||||
for a DDoS-attack mitigation."; | ||||
} | ||||
} | ||||
} | ||||
container anti-virus-condition { | ||||
description | ||||
"A condition for anti-virus"; | ||||
leaf-list exception-files { | ||||
type string; | ||||
description | ||||
"The type or name of the files to be excluded by the | ||||
anti-virus. This can be used to keep the known harmless | ||||
files."; | ||||
} | ||||
} | ||||
container payload-condition { | ||||
description | ||||
"A condition based on a packet's content."; | ||||
leaf-list content { | ||||
type leafref { | ||||
path "/i2nsf-cfi-policy/threat-preventions/" | ||||
+ "payload-content/name"; | ||||
} | ||||
description | ||||
"This describes the paths to a packet content's"; | ||||
} | ||||
} | ||||
container url-condition { | ||||
description | ||||
"Condition for url category"; | ||||
leaf url-name { | ||||
type leafref { | ||||
path "/i2nsf-cfi-policy/endpoint-groups/url-group/name"; | ||||
} | ||||
description | ||||
"This is description for the condition of a URL's | ||||
category such as SNS sites, game sites, ecommerce | ||||
sites, company sites, and university sites."; | ||||
} | ||||
} | ||||
container voice-condition { | ||||
description | ||||
"For the VoIP/VoLTE security system, a VoIP/ | ||||
VoLTE security system can monitor each | ||||
VoIP/VoLTE flow and manage VoIP/VoLTE | ||||
security rules controlled by a centralized | ||||
server for VoIP/VoLTE security service | ||||
(called VoIP IPS). The VoIP/VoLTE security | ||||
system controls each switch for the | ||||
VoIP/VoLTE call flow management by | ||||
manipulating the rules that can be added, | ||||
deleted, or modified dynamically."; | ||||
reference | ||||
"RFC 3261: SIP: Session Initiation Protocol"; | ||||
leaf-list source-id { | ||||
type string; | ||||
description | ||||
"The security policy rule according to | ||||
a source voice ID for VoIP and VoLTE."; | ||||
} | ||||
leaf-list destination-id { | ||||
type string; | ||||
description | ||||
"The security policy rule according to | ||||
a destination voice ID for VoIP and VoLTE."; | ||||
} | ||||
leaf-list user-agent { | ||||
type string; | ||||
description | ||||
"The security policy rule according to | ||||
an user agent for VoIP and VoLTE."; | ||||
} | ||||
} | ||||
container context-condition { | ||||
description | ||||
"Condition for matching the context of the packet, such as | ||||
geographic location, time, packet direction"; | ||||
container geography-location-condition { | ||||
description | ||||
"A condition for a location-based connection"; | ||||
leaf-list source { | ||||
type leafref { | ||||
path "/i2nsf-cfi-policy/endpoint-groups/" | ||||
+ "location-group/name"; | ||||
} | ||||
description | ||||
"This describes the paths to a location's sources."; | ||||
} | ||||
leaf-list destination { | ||||
type leafref { | ||||
path "/i2nsf-cfi-policy/endpoint-groups/" | ||||
+ "location-group/name"; | ||||
} | ||||
description | ||||
"This describes the paths to a location's | ||||
destinations."; | ||||
} | ||||
} | ||||
} | ||||
container threat-feed-condition { | ||||
description | ||||
"A condition based on the threat-feed information."; | ||||
leaf-list name { | ||||
type leafref { | ||||
path | ||||
"/i2nsf-cfi-policy/threat-preventions/" | ||||
+"threat-feed-list/name"; | ||||
} | ||||
description | ||||
"This describes the paths to a threat-feed's sources."; | ||||
} | ||||
} | ||||
} | ||||
container actions { | ||||
description | ||||
"This is the action container."; | ||||
container primary-action { | ||||
description | ||||
"This represent primary actions (e.g., ingress and egress | ||||
action) to be applied to a condition. | ||||
If this is not set, it cannot support the primary | ||||
actions."; | ||||
leaf action { | ||||
type identityref { | ||||
base action; | ||||
} | ||||
description | ||||
"Ingress Action: pass, drop, reject, rate-limit, | ||||
and mirror. | ||||
Egress action: mirror, invoke-signaling, | ||||
tunnel-encapsulation, forwarding, and redirection."; | ||||
} | ||||
} | ||||
container secondary-action { | ||||
description | ||||
"This represents secondary actions (e.g., log and syslog) | ||||
to be applied if they are needed. If this is not set, | ||||
it cannot support the secondary actions."; | ||||
leaf log-action { | ||||
type identityref { | ||||
base log-action; | ||||
} | ||||
description | ||||
"Log action: rule log and session log"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container endpoint-groups { | ||||
description | ||||
"A logical entity in a business environment, where a security | ||||
policy is to be applied."; | ||||
list user-group{ | ||||
uses user-group; | ||||
key "name"; | ||||
description | ||||
"This represents a user group."; | ||||
} | ||||
list device-group { | ||||
key "name"; | ||||
uses device-group; | ||||
description | ||||
"This represents a device group."; | ||||
} | ||||
list location-group{ | ||||
key "name"; | ||||
uses location-group; | ||||
description | ||||
"This represents a location group."; | ||||
} | ||||
list url-group { | ||||
key "name"; | ||||
description | ||||
"This describes the list of URL."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"This is the name of URL group, e.g., SNS sites, | ||||
gaming sites, ecommerce sites"; | ||||
} | ||||
leaf-list url { | ||||
type string; | ||||
description | ||||
"Specifies the URL to be added into the group."; | ||||
} | ||||
} | ||||
} | ||||
container threat-preventions { | ||||
description | ||||
"This describes the list of threat-preventions."; | ||||
list threat-feed-list { | ||||
key "name"; | ||||
description | ||||
"There can be a single or multiple number of threat-feeds."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"This represents the name of the threat-feed."; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description | ||||
"This represents the descriptions of a threat-feed. The | ||||
description should include information, such as type, | ||||
threat, method, and file type. Structured Threat | ||||
Information Expression (STIX) can be used for description | ||||
of a threat [STIX]."; | ||||
} | ||||
leaf-list signatures { | ||||
type identityref { | ||||
base signature-type; | ||||
} | ||||
description | ||||
"This contains a list of signatures or hashes of the | ||||
threats."; | ||||
} | ||||
} | ||||
list payload-content { | ||||
key "name"; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"This represents the name of a packet's payload-content. It | ||||
should give an idea of why a specific payload content is | ||||
marked as a threat. For example, the name 'backdoor' | ||||
indicates the payload content is related to a backdoor | ||||
attack."; | ||||
} | ||||
description | ||||
"This represents a payload-string group."; | ||||
uses payload-string; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
Figure 18: YANG for Consumer-Facing Interface | ||||
8. XML Configuration Examples of High-Level Security Policy Rules | 8. XML Configuration Examples of High-Level Security Policy Rules | |||
This section shows XML configuration examples of high-level security | This section shows XML configuration examples of high-level security | |||
policy rules that are delivered from the I2NSF User to the Security | policy rules that are delivered from the I2NSF User to the Security | |||
Controller over the Consumer-Facing Interface. The considered use | Controller over the Consumer-Facing Interface. The considered use | |||
cases are: Database registration, time-based firewall for web | cases are: Database registration, time-based firewall for web | |||
filtering, VoIP/VoLTE security service, and DDoS-attack mitigation. | filtering, VoIP/VoLTE security service, and DDoS-attack mitigation. | |||
8.1. Database Registration: Information of Positions and Devices | 8.1. Database Registration: Information of Positions and Devices | |||
(Endpoint Group) | (Endpoint Group) | |||
If new endpoints are introduced to the network, it is necessary to | If new endpoints are introduced to the network, it is necessary to | |||
first register their data to the database. For example, if new | first register their data to the database. For example, if new | |||
members are newly introduced in either of three different groups | members are newly introduced in either of three different groups | |||
(i.e., user-group, device-group, and payload-group), each of them | (i.e., user-group, device-group, and url-group), each of them should | |||
should be registered with information such as ip-addresses or | be registered with information such as ip-addresses or protocols used | |||
protocols used by devices. | by devices. | |||
Figure 18 shows an example XML representation of the registered | Figure 19 shows an example XML representation of the registered | |||
information for the user-group and device-group with IPv4 addresses | information for the user-group and device-group with IPv4 addresses | |||
[RFC5737]. | [RFC5737]. | |||
<?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | |||
<i2nsf-cfi-policy xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | <i2nsf-cfi-policy | |||
<endpoint-groups> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | |||
<user-group> | <endpoint-groups> | |||
<name>employees</name> | <user-group> | |||
<range-ipv4-address> | <name>employees</name> | |||
<start-ipv4-address>192.0.2.11</start-ipv4-address> | <range-ipv4-address> | |||
<end-ipv4-address>192.0.2.90</end-ipv4-address> | <start-ipv4-address>192.0.2.11</start-ipv4-address> | |||
</range-ipv4-address> | <end-ipv4-address>192.0.2.90</end-ipv4-address> | |||
</user-group> | </range-ipv4-address> | |||
<device-group> | </user-group> | |||
<name>webservers</name> | <device-group> | |||
<range-ipv4-address> | <name>webservers</name> | |||
<start-ipv4-address>198.51.100.11</start-ipv4-address> | <range-ipv4-address> | |||
<end-ipv4-address>198.51.100.20</end-ipv4-address> | <start-ipv4-address>198.51.100.11</start-ipv4-address> | |||
</range-ipv4-address> | <end-ipv4-address>198.51.100.20</end-ipv4-address> | |||
<protocol>nsfcfi:http</protocol> | </range-ipv4-address> | |||
<protocol>nsfcfi:https</protocol> | <protocol>nsfcfi:http</protocol> | |||
</device-group> | <protocol>nsfcfi:https</protocol> | |||
</endpoint-groups> | </device-group> | |||
</i2nsf-cfi-policy> | <url-group> | |||
<name>sns-websites</name> | ||||
<user-defined>SNS_1</user-defined> | ||||
<user-defined>SNS_2</user-defined> | ||||
</url-group> | ||||
</endpoint-groups> | ||||
</i2nsf-cfi-policy> | ||||
Figure 18: Registering User-group and Device-group Information with | Figure 19: Registering User-group and Device-group Information | |||
IPv4 Addresses | with IPv4 Addresses | |||
Also, Figure 19 shows an example XML representation of the registered | Also, Figure 20 shows an example XML representation of the registered | |||
information for the user-group and device-group with IPv6 addresses | information for the user-group and device-group with IPv6 addresses | |||
[RFC3849]. | [RFC3849]. | |||
<?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | |||
<i2nsf-cfi-policy xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | <i2nsf-cfi-policy | |||
<endpoint-groups> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | |||
<user-group> | <endpoint-groups> | |||
<name>employees</name> | <user-group> | |||
<range-ipv6-address> | <name>employees</name> | |||
<start-ipv6-address>2001:DB8:0:1::11</start-ipv6-address> | <range-ipv6-address> | |||
<end-ipv6-address>2001:DB8:0:1::90</end-ipv6-address> | <start-ipv6-address>2001:DB8:0:1::11</start-ipv6-address> | |||
</range-ipv6-address> | <end-ipv6-address>2001:DB8:0:1::90</end-ipv6-address> | |||
</user-group> | </range-ipv6-address> | |||
<device-group> | </user-group> | |||
<name>webservers</name> | <device-group> | |||
<range-ipv6-address> | <name>webservers</name> | |||
<start-ipv6-address>2001:DB8:0:2::11</start-ipv6-address> | <range-ipv6-address> | |||
<end-ipv6-address>2001:DB8:0:2::20</end-ipv6-address> | <start-ipv6-address>2001:DB8:0:2::11</start-ipv6-address> | |||
</range-ipv6-address> | <end-ipv6-address>2001:DB8:0:2::20</end-ipv6-address> | |||
<protocol>nsfcfi:http</protocol> | </range-ipv6-address> | |||
<protocol>nsfcfi:https</protocol> | <protocol>nsfcfi:http</protocol> | |||
</device-group> | <protocol>nsfcfi:https</protocol> | |||
</endpoint-groups> | </device-group> | |||
</i2nsf-cfi-policy> | <url-group> | |||
<name>sns-websites</name> | ||||
<url>SNS_1</url> | ||||
<url>SNS_2</url> | ||||
</url-group> | ||||
</endpoint-groups> | ||||
</i2nsf-cfi-policy> | ||||
Figure 19: Registering User-group and Device-group Information with | Figure 20: Registering User-group and Device-group Information | |||
IPv6 Addresses | with IPv6 Addresses | |||
8.2. Scenario 1: Block SNS Access during Business Hours | 8.2. Scenario 1: Block SNS Access during Business Hours | |||
The first example scenario is to "block SNS access during office | The first example scenario is to "block SNS access during office | |||
hours" using a time-based firewall policy. In this scenario, all | hours" using a time-based firewall policy. In this scenario, all | |||
users registered as "employees" in the user-group list are unable to | users registered as "employees" in the user-group list are unable to | |||
access Social Networking Services (SNS) during the office hours | access Social Networking Services (SNS) during the office hours | |||
(weekdays). The XML instance is described below: | (weekdays). The XML instance is described below: | |||
<?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | |||
<i2nsf-cfi-policy xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | <i2nsf-cfi-policy | |||
<policy-name>security_policy_for_blocking_sns123</policy-name> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | |||
<rules> | <policy-name>security_policy_for_blocking_sns123</policy-name> | |||
<rule> | <rules> | |||
<rule-name>block_access_to_sns_during_office_hours</rule-name> | <rule-name>block_access_to_sns_during_office_hours</rule-name> | |||
<event> | <event> | |||
<time-information> | <time-information> | |||
<start-date-time>2020-03-11T09:00:00.00Z</start-date-time> | <start-date-time>2021-03-11T09:00:00.00Z</start-date-time> | |||
<end-date-time>2020-12-31T18:00:00.00Z</end-date-time> | <end-date-time>2021-12-31T18:00:00.00Z</end-date-time> | |||
<period> | <period> | |||
<start-time>09:00:00Z</start-time> | <start-time>09:00:00Z</start-time> | |||
<end-time>18:00:00Z</end-time> | <end-time>18:00:00Z</end-time> | |||
<day>nsfcfi:monday</day> | <day>nsfcfi:monday</day> | |||
<day>nsfcfi:tuesday</day> | <day>nsfcfi:tuesday</day> | |||
<day>nsfcfi:wednesday</day> | <day>nsfcfi:wednesday</day> | |||
<day>nsfcfi:thursday</day> | <day>nsfcfi:thursday</day> | |||
<day>nsfcfi:friday</day> | <day>nsfcfi:friday</day> | |||
</period> | </period> | |||
</time-information> | </time-information> | |||
<frequency>weekly</frequency> | <frequency>weekly</frequency> | |||
</event> | </event> | |||
<condition> | <condition> | |||
<firewall-condition> | <firewall-condition> | |||
<source>employees</source> | <source>employees</source> | |||
</firewall-condition> | </firewall-condition> | |||
<custom-condition> | <url-condition> | |||
<destination>sns-websites</destination> | <url-name>sns-websites</url-name> | |||
</custom-condition> | </url-condition> | |||
</condition> | </condition> | |||
<actions> | <actions> | |||
<primary-action>nsfcfi:drop</primary-action> | <primary-action>nsfcfi:drop</primary-action> | |||
</actions> | </actions> | |||
</rule> | </rules> | |||
</rules> | </i2nsf-cfi-policy> | |||
</i2nsf-cfi-policy> | ||||
Figure 20: An XML Example for Time-based Firewall | Figure 21: An XML Example for Time-based Firewall | |||
Time-based-condition Firewall | Time-based-condition Firewall | |||
1. The policy name is "security_policy_for_blocking_sns". | 1. The policy name is "security_policy_for_blocking_sns". | |||
2. The rule name is "block_access_to_sns_during_office_hours". | 2. The rule name is "block_access_to_sns_during_office_hours". | |||
3. The Source is "employees". | 3. The Source is "employees". | |||
4. The destination target is "sns-websites". "sns-websites" is the | 4. The destination target is "sns-websites". "sns-websites" is the | |||
key which represents the list containing the information, such as | key which represents the list containing the information, such as | |||
URL, about sns-websites. | URL, about sns-websites. | |||
5. The action required is to "drop" any attempt to connect to | 5. The action required is to "drop" any attempt to connect to | |||
websites related to Social networking. | websites related to Social networking. | |||
6. The IPsec method type used for nsf traffic steering is set to | ||||
"ipsec-ike". | ||||
8.3. Scenario 2: Block Malicious VoIP/VoLTE Packets Coming to a Company | 8.3. Scenario 2: Block Malicious VoIP/VoLTE Packets Coming to a Company | |||
The second example scenario is to "block malicious VoIP/VoLTE packets | The second example scenario is to "block malicious VoIP/VoLTE packets | |||
coming to a company" using a VoIP policy. In this scenario, the | coming to a company" using a VoIP policy. In this scenario, the | |||
calls comming from from VOIP and/or VOLTE sources with VOLTE IDs that | calls comming from from VOIP and/or VOLTE sources with VOLTE IDs that | |||
are classified as malicious are dropped. The IP addresses of the | are classified as malicious are dropped. The IP addresses of the | |||
employees and malicious VOIP IDs should be blocked are stored in the | employees and malicious VOIP IDs should be blocked are stored in the | |||
database or datastore of the enterprise. Here and the rest of the | database or datastore of the enterprise. Here and the rest of the | |||
cases assume that the security administrators or someone responsible | cases assume that the security administrators or someone responsible | |||
for the existing and newly generated policies, are not aware of which | for the existing and newly generated policies, are not aware of which | |||
and/or how many NSFs are needed to meet the security requirements. | and/or how many NSFs are needed to meet the security requirements. | |||
Figure 21 represents the XML document generated from YANG discussed | Figure 22 represents the XML document generated from YANG discussed | |||
in previous sections. Once a high-level seucurity policy is created | in previous sections. Once a high-level seucurity policy is created | |||
by a security admin, it is delivered by the Consumer-Facing | by a security admin, it is delivered by the Consumer-Facing | |||
Interface, through RESTCONF server, to the security controller. The | Interface, through RESTCONF server, to the security controller. The | |||
XML instance is described below: | XML instance is described below: | |||
<?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | |||
<i2nsf-cfi-policy xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | <i2nsf-cfi-policy | |||
<policy-name> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | |||
security_policy_for_blocking_malicious_voip_packets | <policy-name> | |||
</policy-name> | security_policy_for_blocking_malicious_voip_packets | |||
<rules> | </policy-name> | |||
<rule> | <rules> | |||
<rule-name>Block_malicious_voip_and_volte_packets</rule-name> | <rule-name>Block_malicious_voip_and_volte_packets</rule-name> | |||
<condition> | <condition> | |||
<custom-condition> | <voice-condition> | |||
<source>malicious-id</source> | <source-id>malicious-id</source-id> | |||
</custom-condition> | </voice-condition> | |||
<firewall-condition> | <firewall-condition> | |||
<destination>employees</destination> | <destination>employees</destination> | |||
</firewall-condition> | </firewall-condition> | |||
</condition> | </condition> | |||
<actions> | <actions> | |||
<primary-action>nsfcfi:drop</primary-action> | <primary-action>nsfcfi:drop</primary-action> | |||
</actions> | </actions> | |||
<ipsec-method> | </rules> | |||
<method>nsfcfi:ipsec-ikeless</method> | </i2nsf-cfi-policy> | |||
</ipsec-method> | ||||
</rule> | ||||
</rules> | ||||
</i2nsf-cfi-policy> | ||||
Figure 21: An XML Example for VoIP Security Service | Figure 22: An XML Example for VoIP Security Service | |||
Custom-condition Firewall | Custom-condition Firewall | |||
1. The policy name is | 1. The policy name is | |||
"security_policy_for_blocking_malicious_voip_packets". | "security_policy_for_blocking_malicious_voip_packets". | |||
2. The rule name is "Block_malicious_voip_and_volte_packets". | 2. The rule name is "Block_malicious_voip_and_volte_packets". | |||
3. The Source is "malicious-id". This can be a single ID or a list | 3. The Source is "malicious-id". This can be a single ID or a list | |||
of IDs, depending on how the ID are stored in the database. The | of IDs, depending on how the ID are stored in the database. The | |||
"malicious-id" is the key so that the security admin can read | "malicious-id" is the key so that the security admin can read | |||
every stored malicious VOIP IDs that are named as "malicious-id". | every stored malicious VOIP IDs that are named as "malicious-id". | |||
4. The destination target is "employees". "employees" is the key | 4. The destination target is "employees". "employees" is the key | |||
which represents the list containing information about employees, | which represents the list containing information about employees, | |||
such as IP addresses. | such as IP addresses. | |||
5. The action required is "drop" when any incoming packets are from | 5. The action required is "drop" when any incoming packets are from | |||
"malicious-id". | "malicious-id". | |||
6. The IPsec method used for nsf traffic steering is set to "ipsec- | ||||
ikeless". | ||||
8.4. Scenario 3: Mitigate HTTP and HTTPS Flood Attacks on a Company Web | 8.4. Scenario 3: Mitigate HTTP and HTTPS Flood Attacks on a Company Web | |||
Server | Server | |||
The third example scenario is to "Mitigate HTTP and HTTPS flood | The third example scenario is to "Mitigate HTTP and HTTPS flood | |||
attacks on a company web server" using a DDoS-attack mitigation | attacks on a company web server" using a DDoS-attack mitigation | |||
policy. Here, the time information is not set because the service | policy. Here, the time information is not set because the service | |||
provided by the network should be maintained at all times. If the | provided by the network should be maintained at all times. If the | |||
packets sent by any sources are more than the set threshold, then the | packets sent by any sources are more than the set threshold, then the | |||
admin can set the percentage of the packets to be dropped to safely | admin can set the percentage of the packets to be dropped to safely | |||
maintain the service. In this scenario, the source is set as "any" | maintain the service. In this scenario, the source is set as "any" | |||
to block any sources which send abnormal amount of packets. The | to block any sources which send abnormal amount of packets. The | |||
destination is set as "web_server01". Once the rule is set and | destination is set as "web_server01". Once the rule is set and | |||
delivered and enforced to the nsfs by the securiy controller, the | delivered and enforced to the nsfs by the securiy controller, the | |||
NSFs will monitor the incoming packet amounts and the destination to | NSFs will monitor the incoming packet amounts and the destination to | |||
act according to the rule set. The XML instance is described below: | act according to the rule set. The XML instance is described below: | |||
<?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | |||
<i2nsf-cfi-policy xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | <i2nsf-cfi-policy | |||
<policy-name>security_policy_for_ddos_attacks</policy-name> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-cfi-policy"> | |||
<rules> | <policy-name>security_policy_for_ddos_attacks</policy-name> | |||
<rule> | <rules> | |||
<rule-name>100_packets_per_second</rule-name> | <rule-name>1000_packets_per_second</rule-name> | |||
<conditions> | <conditions> | |||
<ddos-condition> | <ddos-condition> | |||
<destination>webservers</destination> | <rate-limit> | |||
<rate-limit> | <packet-rate-threshold>1000</packet-rate-threshold> | |||
<packet-threshold-per-second>100</packet-threshold-per-second> | </rate-limit> | |||
</rate-limit> | </ddos-condition> | |||
</ddos-condition> | </conditions> | |||
</conditions> | <actions> | |||
<actions> | <primary-action>nsfcfi:drop</primary-action> | |||
<primary-action>nsfcfi:drop</primary-action> | </actions> | |||
</actions> | </rules> | |||
<ipsec-method> | </i2nsf-cfi-policy> | |||
<method>nsfcfi:ipsec-ikeless</method> | ||||
</ipsec-method> | ||||
</rule> | ||||
</rules> | ||||
</i2nsf-cfi-policy> | ||||
Figure 22: An XML Example for DDoS-attack Mitigation | Figure 23: An XML Example for DDoS-attack Mitigation | |||
DDoS-condition Firewall | DDoS-condition Firewall | |||
1. The policy name is "security_policy_for_ddos_attacks". | 1. The policy name is "security_policy_for_ddos_attacks". | |||
2. The rule name is "100_packets_per_second". | 2. The rule name is "100_packets_per_second". | |||
3. The destination target is "webservers". "webservers" is the key | 3. The rate limit exists to limit the incoming amount of packets per | |||
which represents the list containing information, such as IP | second. In this case the rate limit is "1000" packets per | |||
addresses and ports, about web-servers. | second. This amount depends on the packet receiving capacity of | |||
the server devices. | ||||
4. The rate limit exists to limit the incoming amount of packets per | ||||
second. In this case the rate limit is "100" packets per second. | ||||
This amount depends on the packet receiving capacity of the | ||||
server devices. | ||||
5. The Source is all sources which send abnormal amount of packets. | ||||
6. The action required is to "drop" packet reception is more than | 4. The Source is all sources which send abnormal amount of packets. | |||
100 packets per second. | ||||
7. The IPsec method used for nsf traffic steering is set to "ipsec- | 5. The action required is to "drop" packet reception is more than | |||
ike". | 1000 packets per second. | |||
9. XML Configuration Example of a User Group's Access Control for I2NSF | 9. XML Configuration Example of a User Group's Access Control for I2NSF | |||
Consumer-Facing Interface | Consumer-Facing Interface | |||
This is an example for creating privileges for a group of users | This is an example for creating privileges for a group of users | |||
(i.e., a user group) to access and use the I2NSF Consumer-Facing | (i.e., a user group) to access and use the I2NSF Consumer-Facing | |||
Interface to create security policies via the interface. For the | Interface to create security policies via the interface. For the | |||
access control of the Consumer-Facing Interface, the NACM module can | access control of the Consumer-Facing Interface, the NACM module can | |||
be used. Figure 23 shows an XML example the access control of a user | be used. Figure 24 shows an XML example the access control of a user | |||
group (named Example-Group) for I2NSF Consumer-Facing Interface A | group (named Example-Group) for I2NSF Consumer-Facing Interface A | |||
group called Example-Group can be created and configured with NACM | group called Example-Group can be created and configured with NACM | |||
for the Consumer-Facing Interface. For Example-Group, a rule list | for the Consumer-Facing Interface. For Example-Group, a rule list | |||
can created with the name of Example-Group-Rules. Example-Group- | can created with the name of Example-Group-Rules. Example-Group- | |||
Rules has two rules of Example-Group-Rule1 and Example-Group-Rule2 as | Rules has two rules of Example-Group-Rule1 and Example-Group-Rule2 as | |||
follows. For Example-Group-Rule1, the privilege of "Read" is allowed | follows. For Example-Group-Rule1, the privilege of "Read" is allowed | |||
to Example-Group for the Consumer-Facing Interface. On the other | to Example-Group for the Consumer-Facing Interface. On the other | |||
hand, for Example-Group-Rule2, the privileges of "Create", "Update", | hand, for Example-Group-Rule2, the privileges of "Create", "Update", | |||
and "Delete" are denied against Example-Group for the Consumer-Facing | and "Delete" are denied against Example-Group for the Consumer-Facing | |||
Interface. | Interface. | |||
skipping to change at page 49, line 34 ¶ | skipping to change at page 53, line 42 ¶ | |||
</rule> | </rule> | |||
<rule> | <rule> | |||
<name>Example-Group-Rule2</name> | <name>Example-Group-Rule2</name> | |||
<access-operations>create update delete</access-operations> | <access-operations>create update delete</access-operations> | |||
<module-name>ietf-i2nsf-cfi-policy</module-name> | <module-name>ietf-i2nsf-cfi-policy</module-name> | |||
<action>deny</action> | <action>deny</action> | |||
</rule> | </rule> | |||
</rule-list> | </rule-list> | |||
</nacm> | </nacm> | |||
Figure 23: An XML Example of a User Group's Access Control for I2NSF | Figure 24: An XML Example of a User Group's Access Control for | |||
Consumer-Facing Interface | I2NSF Consumer- Facing Interface | |||
The access control for the I2NSF Consumer-Facing Interface is as | The access control for the I2NSF Consumer-Facing Interface is as | |||
follows. | follows. | |||
1. The NACM is enabled. | 1. The NACM is enabled. | |||
2. As a group name, Example-Group is specified. | 2. As a group name, Example-Group is specified. | |||
3. As members of the group, Alice, Bob, and Eve are specified. | 3. As members of the group, Alice, Bob, and Eve are specified. | |||
skipping to change at page 51, line 14 ¶ | skipping to change at page 55, line 24 ¶ | |||
13. Contributors | 13. Contributors | |||
This document is made by the group effort of I2NSF working group. | This document is made by the group effort of I2NSF working group. | |||
Many people actively contributed to this document, such as Mahdi F. | Many people actively contributed to this document, such as Mahdi F. | |||
Dachmehchi and Daeyoung Hyun. The authors sincerely appreciate their | Dachmehchi and Daeyoung Hyun. The authors sincerely appreciate their | |||
contributions. | contributions. | |||
The following are co-authors of this document: | The following are co-authors of this document: | |||
Patrick Lingga | Patrick Lingga Department of Electrical and Computer Engineering | |||
Department of Electronic, Electrical and Computer Engineering | Sungkyunkwan University 2066 Seo-ro Jangan-gu Suwon, Gyeonggi-do | |||
Sungkyunkwan University | 16419 Republic of Korea EMail: patricklink@skku.edu | |||
2066 Seo-ro Jangan-gu | ||||
Suwon, Gyeonggi-do 16419 | ||||
Republic of Korea | ||||
EMail: patricklink@skku.edu | ||||
Hyoungshick Kim | ||||
Department of Computer Science and Engineering | ||||
Sungkyunkwan University | ||||
2066 Seo-ro Jangan-gu | ||||
Suwon, Gyeonggi-do 16419 | ||||
Republic of Korea | ||||
EMail: hyoung@skku.edu | ||||
Eunsoo Kim | ||||
Department of Electronic, Electrical and Computer Engineering | ||||
Sungkyunkwan University | ||||
2066 Seo-ro Jangan-gu | ||||
Suwon, Gyeonggi-do 16419 | ||||
Republic of Korea | ||||
EMail: eskim86@skku.edu | ||||
Seungjin Lee | ||||
Department of Electronic, Electrical and Computer Engineering | ||||
Sungkyunkwan University | ||||
2066 Seo-ro Jangan-gu | ||||
Suwon, Gyeonggi-do 16419 | ||||
Republic of Korea | ||||
EMail: jine33@skku.edu | ||||
Jinyong Tim Kim | ||||
Department of Electronic, Electrical and Computer Engineering | ||||
Sungkyunkwan University | ||||
2066 Seo-ro Jangan-gu | ||||
Suwon, Gyeonggi-do 16419 | ||||
Republic of Korea | ||||
EMail: timkim@skku.edu | Hyoungshick Kim Department of Computer Science and Engineering | |||
Sungkyunkwan University 2066 Seo-ro Jangan-gu Suwon, Gyeonggi-do | ||||
16419 Republic of Korea EMail: hyoung@skku.edu | ||||
Anil Lohiya | Eunsoo Kim Department of Electronic, Electrical and Computer | |||
Juniper Networks | Engineering Sungkyunkwan University 2066 Seo-ro Jangan-gu Suwon, | |||
1133 Innovation Way | Gyeonggi-do 16419 Republic of Korea EMail: eskim86@skku.edu | |||
Sunnyvale, CA 94089 | ||||
US | ||||
EMail: alohiya@juniper.net | Seungjin Lee Department of Electronic, Electrical and Computer | |||
Engineering Sungkyunkwan University 2066 Seo-ro Jangan-gu Suwon, | ||||
Gyeonggi-do 16419 Republic of Korea EMail: jine33@skku.edu | ||||
Dave Qi | Jinyong Tim Kim Department of Electronic, Electrical and Computer | |||
Bloomberg | Engineering Sungkyunkwan University 2066 Seo-ro Jangan-gu Suwon, | |||
731 Lexington Avenue | Gyeonggi-do 16419 Republic of Korea EMail: timkim@skku.edu | |||
New York, NY 10022 | ||||
US | ||||
EMail: DQI@bloomberg.net | Anil Lohiya Juniper Networks 1133 Innovation Way Sunnyvale, CA 94089 | |||
US EMail: alohiya@juniper.net | ||||
Nabil Bitar | Dave Qi Bloomberg 731 Lexington Avenue New York, NY 10022 US EMail: | |||
Nokia | DQI@bloomberg.net | |||
755 Ravendale Drive | ||||
Mountain View, CA 94043 | ||||
US | ||||
Nabil Bitar Nokia 755 Ravendale Drive Mountain View, CA 94043 US | ||||
EMail: nabil.bitar@nokia.com | EMail: nabil.bitar@nokia.com | |||
Senad Palislamovic Nokia 755 Ravendale Drive Mountain View, CA 94043 | ||||
US EMail: senad.palislamovic@nokia.com | ||||
Senad Palislamovic | Liang Xia Huawei 101 Software Avenue Nanjing, Jiangsu 210012 China | |||
Nokia | ||||
755 Ravendale Drive | ||||
Mountain View, CA 94043 | ||||
US | ||||
EMail: senad.palislamovic@nokia.com | ||||
Liang Xia | ||||
Huawei | ||||
101 Software Avenue | ||||
Nanjing, Jiangsu 210012 | ||||
China | ||||
EMail: Frank.Xialiang@huawei.com | EMail: Frank.Xialiang@huawei.com | |||
14. References | 14. References | |||
14.1. Normative References | 14.1. Normative References | |||
[RFC0854] Postel, J. and J. Reynolds, "Telnet Protocol | [RFC0854] Postel, J. and J. Reynolds, "Telnet Protocol | |||
Specification", STD 8, RFC 854, DOI 10.17487/RFC0854, May | Specification", STD 8, RFC 854, DOI 10.17487/RFC0854, May | |||
1983, <https://www.rfc-editor.org/info/rfc854>. | 1983, <https://www.rfc-editor.org/info/rfc854>. | |||
[RFC0913] Lottor, M., "Simple File Transfer Protocol", RFC 913, | ||||
DOI 10.17487/RFC0913, September 1984, | ||||
<https://www.rfc-editor.org/info/rfc913>. | ||||
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | |||
<https://www.rfc-editor.org/info/rfc959>. | <https://www.rfc-editor.org/info/rfc959>. | |||
[RFC1081] Rose, M., "Post Office Protocol: Version 3", RFC 1081, | [RFC1939] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | |||
DOI 10.17487/RFC1081, November 1988, | STD 53, RFC 1939, DOI 10.17487/RFC1939, May 1996, | |||
<https://www.rfc-editor.org/info/rfc1081>. | <https://www.rfc-editor.org/info/rfc1939>. | |||
[RFC1631] Egevang, K. and P. Francis, "The IP Network Address | ||||
Translator (NAT)", RFC 1631, DOI 10.17487/RFC1631, May | ||||
1994, <https://www.rfc-editor.org/info/rfc1631>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | ||||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | ||||
Transfer Protocol -- HTTP/1.1", RFC 2616, | ||||
DOI 10.17487/RFC2616, June 1999, | ||||
<https://www.rfc-editor.org/info/rfc2616>. | ||||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | ||||
DOI 10.17487/RFC2818, May 2000, | ||||
<https://www.rfc-editor.org/info/rfc2818>. | ||||
[RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between | ||||
Information Models and Data Models", RFC 3444, | ||||
DOI 10.17487/RFC3444, January 2003, | ||||
<https://www.rfc-editor.org/info/rfc3444>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix | ||||
Reserved for Documentation", RFC 3849, | ||||
DOI 10.17487/RFC3849, July 2004, | ||||
<https://www.rfc-editor.org/info/rfc3849>. | ||||
[RFC4250] Lehtinen, S. and C. Lonvick, Ed., "The Secure Shell (SSH) | [RFC4250] Lehtinen, S. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
Protocol Assigned Numbers", RFC 4250, | Protocol Assigned Numbers", RFC 4250, | |||
DOI 10.17487/RFC4250, January 2006, | DOI 10.17487/RFC4250, January 2006, | |||
<https://www.rfc-editor.org/info/rfc4250>. | <https://www.rfc-editor.org/info/rfc4250>. | |||
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
DOI 10.17487/RFC5321, October 2008, | DOI 10.17487/RFC5321, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5321>. | <https://www.rfc-editor.org/info/rfc5321>. | |||
[RFC5737] Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks | ||||
Reserved for Documentation", RFC 5737, | ||||
DOI 10.17487/RFC5737, January 2010, | ||||
<https://www.rfc-editor.org/info/rfc5737>. | ||||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | ||||
the Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
DOI 10.17487/RFC6020, October 2010, | ||||
<https://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
Protocol (HTTP/1.1): Message Syntax and Routing", | ||||
RFC 7230, DOI 10.17487/RFC7230, June 2014, | ||||
<https://www.rfc-editor.org/info/rfc7230>. | ||||
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | ||||
DOI 10.17487/RFC7231, June 2014, | ||||
<https://www.rfc-editor.org/info/rfc7231>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8192] Hares, S., Lopez, D., Zarny, M., Jacquenet, C., Kumar, R., | ||||
and J. Jeong, "Interface to Network Security Functions | ||||
(I2NSF): Problem Statement and Use Cases", RFC 8192, | ||||
DOI 10.17487/RFC8192, July 2017, | ||||
<https://www.rfc-editor.org/info/rfc8192>. | ||||
[RFC8329] Lopez, D., Lopez, E., Dunbar, L., Strassner, J., and R. | ||||
Kumar, "Framework for Interface to Network Security | ||||
Functions", RFC 8329, DOI 10.17487/RFC8329, February 2018, | ||||
<https://www.rfc-editor.org/info/rfc8329>. | ||||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Access Control Model", STD 91, RFC 8341, | Access Control Model", STD 91, RFC 8341, | |||
DOI 10.17487/RFC8341, March 2018, | DOI 10.17487/RFC8341, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8341>. | <https://www.rfc-editor.org/info/rfc8341>. | |||
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
Documents Containing YANG Data Models", BCP 216, RFC 8407, | Documents Containing YANG Data Models", BCP 216, RFC 8407, | |||
DOI 10.17487/RFC8407, October 2018, | DOI 10.17487/RFC8407, October 2018, | |||
<https://www.rfc-editor.org/info/rfc8407>. | <https://www.rfc-editor.org/info/rfc8407>. | |||
[RFC8525] Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | [RFC8525] Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | |||
and R. Wilton, "YANG Library", RFC 8525, | and R. Wilton, "YANG Library", RFC 8525, | |||
DOI 10.17487/RFC8525, March 2019, | DOI 10.17487/RFC8525, March 2019, | |||
<https://www.rfc-editor.org/info/rfc8525>. | <https://www.rfc-editor.org/info/rfc8525>. | |||
14.2. Informative References | ||||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | ||||
DOI 10.17487/RFC2818, May 2000, | ||||
<https://www.rfc-editor.org/info/rfc2818>. | ||||
[RFC3022] Srisuresh, P. and K. Egevang, "Traditional IP Network | ||||
Address Translator (Traditional NAT)", RFC 3022, | ||||
DOI 10.17487/RFC3022, January 2001, | ||||
<https://www.rfc-editor.org/info/rfc3022>. | ||||
[RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between | ||||
Information Models and Data Models", RFC 3444, | ||||
DOI 10.17487/RFC3444, January 2003, | ||||
<https://www.rfc-editor.org/info/rfc3444>. | ||||
[RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix | ||||
Reserved for Documentation", RFC 3849, | ||||
DOI 10.17487/RFC3849, July 2004, | ||||
<https://www.rfc-editor.org/info/rfc3849>. | ||||
[RFC5737] Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks | ||||
Reserved for Documentation", RFC 5737, | ||||
DOI 10.17487/RFC5737, January 2010, | ||||
<https://www.rfc-editor.org/info/rfc5737>. | ||||
[RFC8329] Lopez, D., Lopez, E., Dunbar, L., Strassner, J., and R. | ||||
Kumar, "Framework for Interface to Network Security | ||||
Functions", RFC 8329, DOI 10.17487/RFC8329, February 2018, | ||||
<https://www.rfc-editor.org/info/rfc8329>. | ||||
[RFC8805] Kline, E., Duleba, K., Szamonek, Z., Moser, S., and W. | [RFC8805] Kline, E., Duleba, K., Szamonek, Z., Moser, S., and W. | |||
Kumari, "A Format for Self-Published IP Geolocation | Kumari, "A Format for Self-Published IP Geolocation | |||
Feeds", RFC 8805, DOI 10.17487/RFC8805, August 2020, | Feeds", RFC 8805, DOI 10.17487/RFC8805, August 2020, | |||
<https://www.rfc-editor.org/info/rfc8805>. | <https://www.rfc-editor.org/info/rfc8805>. | |||
14.2. Informative References | ||||
[I-D.ietf-i2nsf-capability] | [I-D.ietf-i2nsf-capability] | |||
Xia, L., Strassner, J., Basile, C., and D. Lopez, | Xia, L., Strassner, J., Basile, C., and D. R. Lopez, | |||
"Information Model of NSFs Capabilities", draft-ietf- | "Information Model of NSFs Capabilities", Work in | |||
i2nsf-capability-05 (work in progress), April 2019. | Progress, Internet-Draft, draft-ietf-i2nsf-capability-05, | |||
24 April 2019, <https://www.ietf.org/archive/id/draft- | ||||
ietf-i2nsf-capability-05.txt>. | ||||
[I-D.ietf-i2nsf-sdn-ipsec-flow-protection] | [YARA] Alvarez, V., Bengen, H., Metz, J., Buehlmann, S., and W. | |||
Marin-Lopez, R., Lopez-Millan, G., and F. Pereniguez- | Shields, "YARA", YARA | |||
Garcia, "Software-Defined Networking (SDN)-based IPsec | Documents https://yara.readthedocs.io/en/v3.5.0/, August | |||
Flow Protection", draft-ietf-i2nsf-sdn-ipsec-flow- | 2020. | |||
protection-12 (work in progress), October 2020. | ||||
[SURICATA] Julien, V. and , "SURICATA", SURICATA Documents | ||||
https://suricata-ids.org/docs/, August 2020. | ||||
[SNORT] Roesch, M., Green, C., and B. Caswell, "SNORT", SNORT | [SNORT] Roesch, M., Green, C., and B. Caswell, "SNORT", SNORT | |||
Documents https://www.snort.org/#documents, August 2020. | Documents https://www.snort.org/#documents, August 2020. | |||
[STIX] Jordan, B., Piazza, R., and T. Darley, "Structured Threat | [STIX] Jordan, B., Piazza, R., and T. Darley, "Structured Threat | |||
Information Expression (STIX)", STIX Version 2.1: | Information Expression (STIX)", STIX Version 2.1: | |||
Committee Specification 01 https://docs.oasis- | Committee Specification 01 https://docs.oasis- | |||
open.org/cti/stix/v2.1/stix-v2.1.pdf, March 2020. | open.org/cti/stix/v2.1/stix-v2.1.pdf, March 2020. | |||
[SURICATA] | Appendix A. Changes from draft-ietf-i2nsf-consumer-facing-interface- | |||
Julien, V. and , "SURICATA", SURICATA Documents | dm-13 | |||
https://suricata-ids.org/docs/, August 2020. | ||||
[YARA] Alvarez, V., Bengen, H., Metz, J., Buehlmann, S., and W. | The following changes are made from draft-ietf-i2nsf-consumer-facing- | |||
Shields, "YARA", YARA | interface-dm-13: | |||
Documents https://yara.readthedocs.io/en/v3.5.0/, August | ||||
2020. | * This version has been updated to synchronize with other I2NSF | |||
documents. | ||||
Authors' Addresses | Authors' Addresses | |||
Jaehoon (Paul) Jeong (editor) | Jaehoon (Paul) Jeong (editor) | |||
Department of Computer Science and Engineering | Department of Computer Science and Engineering | |||
Sungkyunkwan University | Sungkyunkwan University | |||
2066 Seobu-Ro, Jangan-Gu | 2066 Seobu-Ro, Jangan-Gu | |||
Suwon, Gyeonggi-Do 16419 | Suwon | |||
Gyeonggi-Do | ||||
16419 | ||||
Republic of Korea | Republic of Korea | |||
Phone: +82 31 299 4957 | Phone: +82 31 299 4957 | |||
Fax: +82 31 290 7996 | Email: pauljeong@skku.edu | |||
EMail: pauljeong@skku.edu | ||||
URI: http://iotlab.skku.edu/people-jaehoon-jeong.php | URI: http://iotlab.skku.edu/people-jaehoon-jeong.php | |||
Chaehong Chung | Chaehong Chung | |||
Department of Electronic, Electrical and Computer Engineering | Department of Electronic, Electrical and Computer Engineering | |||
Sungkyunkwan University | Sungkyunkwan University | |||
2066 Seobu-Ro, Jangan-Gu | 2066 Seobu-Ro, Jangan-Gu | |||
Suwon, Gyeonggi-Do 16419 | Suwon | |||
Gyeonggi-Do | ||||
16419 | ||||
Republic of Korea | Republic of Korea | |||
Phone: +82 31 299 4957 | Phone: +82 31 299 4957 | |||
EMail: darkhong@skku.edu | Email: darkhong@skku.edu | |||
Tae-Jin Ahn | Tae-Jin Ahn | |||
Korea Telecom | Korea Telecom | |||
70 Yuseong-Ro, Yuseong-Gu | 70 Yuseong-Ro, Yuseong-Gu | |||
Daejeon 305-811 | Daejeon | |||
305-811 | ||||
Republic of Korea | Republic of Korea | |||
Phone: +82 42 870 8409 | Phone: +82 42 870 8409 | |||
EMail: taejin.ahn@kt.com | Email: taejin.ahn@kt.com | |||
Rakesh Kumar | Rakesh Kumar | |||
Juniper Networks | Juniper Networks | |||
1133 Innovation Way | 1133 Innovation Way | |||
Sunnyvale, CA 94089 | Sunnyvale, CA 94089 | |||
USA | United States of America | |||
EMail: rkkumar@juniper.net | Email: rkkumar@juniper.net | |||
Susan Hares | Susan Hares | |||
Huawei | Huawei | |||
7453 Hickory Hill | 7453 Hickory Hill | |||
Saline, MI 48176 | Saline, MI 48176 | |||
USA | United States of America | |||
Phone: +1-734-604-0332 | Phone: +1-734-604-0332 | |||
EMail: shares@ndzh.com | Email: shares@ndzh.com | |||
End of changes. 244 change blocks. | ||||
1588 lines changed or deleted | 1771 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |