Network Working Group                                             W. Pan
Internet-Draft                                                    L. Xia
Intended status: Standards Track                                  Huawei
Expires: April 18, 2019                                 October 15, 2018


    Configuration of Advanced Security Functions with I2NSF Security
                               Controller
                     draft-dong-i2nsf-asf-config-01

Abstract

   This draft defines a network security function (NSF-) facing
   interface of the security controller for the purpose of configuring
   some advanced security functions.  These advanced security functions
   include antivirus, anti-ddos, and intrusion prevention system (IPS).
   The interface is presented in a YANG data model fashion and can be
   used to deploy a large amount of NSF blocks that all support above
   mentioned functions in the software defined network (SDN) based
   paradigm.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 18, 2019.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect



Pan & Xia                Expires April 18, 2019                 [Page 1]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Key Words . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.2.  Definition of Terms . . . . . . . . . . . . . . . . . . .   3
   3.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Data Model Structure  . . . . . . . . . . . . . . . . . . . .   3
     4.1.  Antivirus . . . . . . . . . . . . . . . . . . . . . . . .   3
     4.2.  Anti-ddos . . . . . . . . . . . . . . . . . . . . . . . .   4
     4.3.  Intrusion prevention system . . . . . . . . . . . . . . .   6
   5.  YANG Modules  . . . . . . . . . . . . . . . . . . . . . . . .   7
     5.1.  Antivirus . . . . . . . . . . . . . . . . . . . . . . . .   7
     5.2.  Anti-ddos . . . . . . . . . . . . . . . . . . . . . . . .  13
     5.3.  Intrusion prevention system . . . . . . . . . . . . . . .  20
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  26
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  26
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  26
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  26
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  26
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  26
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  27

1.  Introduction

   I2NSF provides a technology and vendor independent way for a
   centralized security controller in a SDN environment to manage and
   configure the distributed NSFs [RFC8329].  The NSFs are automatically
   customized in a programmable manner via a standard interface.  In the
   draft [I-D.ietf-i2nsf-nsf-facing-interface-dm], it proposed a generic
   NSF-facing interface to manage which action should be applied on
   which traffic.  In addition, there is another draft that defined the
   NSF-facing interface for management, including configuration and
   monitoring, of IPsec SAs [I-D.ietf-i2nsf-sdn-ipsec-flow-protection].
   In this document, we defined another NSF-facing interface for
   security controller to configure some advanced security functions
   including the antivirus, anti-ddos, and IPS profiles.  With the
   variety and complexity of the advanced security functions, it is
   hardly to define all the interfaces to configure each advanced
   security function.  The antivirus, anti-ddos and IPS profiles, these
   three functions are the most common and well-developed advanced
   security functions and have been widely used.  Standardizing the
   interface of these three functions can minimize the cost of



Pan & Xia                Expires April 18, 2019                 [Page 2]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   management and configuration of the security controller with a vendor
   independent way.

2.  Terminology

2.1.  Key Words

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.2.  Definition of Terms

   This document uses the terms defined in [I-D.ietf-i2nsf-terminology].

3.  Tree Diagrams

   A simplified graphical representation of the data model is used in
   this document.  The meaning of the symbols in these diagrams is as
   follows:

   o  Brackets "[" and "]" enclose list keys.

   o  Abbreviations before data node names: "rw" means configuration
      (read-write) and "ro" state data (read-only).

   o  Symbols after data node names: "?" means an optional node and "*"
      denotes a "list" and "leaf-list".

   o  Parentheses enclose choice and case nodes, and case nodes are also
      marked with a colon (":").

   o  Ellipsis ("...") stands for contents of subtrees that are not
      shown.

4.  Data Model Structure

4.1.  Antivirus

   The following tree diagram shows the interface for configuring
   antivirus detections on incoming and outgoing files.  The file
   transfer protocol type, direction of file transfer, and the action
   applied on the detected virus are able to be configured.  In
   addition, this interface also supports to configure the application
   and signature exception features to apply specific actions on certain
   applications and detected virus respectively.  The anti-virus also
   supports to configure a whitelist for trusted files.




Pan & Xia                Expires April 18, 2019                 [Page 3]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   module: ietf-i2nsf-asf-config-antivirus
      +--rw antivirus
         +--rw profiles
            +--rw profile* [name]
               +--rw name                                  string
               +--rw description?                          string
               +--rw detect* [protocol-type direction]
               |  +--rw protocol-type             detect-protocol
               |  +--rw direction                detect-direction
               |  +--rw action?                     detect-action
               +--rw exception-application* [application-name]
               |  +--rw application-name                   string
               |  +--rw application-action?         detect-action
               +--rw exception-signature* [signature-id]
               |  +--rw signature-id                       uint64
               |  +--rw signature-action?           detect-action
               +--rw whitelists {antivirus-whitelists}?
                  +--rw match-rules
                  |  +--rw match-rule* [scope type value]
                  |     +--rw scope                   match-scope
                  |     +--rw type                     match-type
                  |     +--rw value                        string
                  +--rw source-address*           inet:ip-address
                  +--rw source-address-range*
                          [start-address end-address]
                  |  +--rw start-address          inet:ip-address
                  |  +--rw end-address            inet:ip-address
                  +--rw destination-address*      inet:ip-address
                  +--rw destination-address-range*
                          [start-address end-address]
                     +--rw start-address          inet:ip-address
                     +--rw end-address            inet:ip-address

4.2.  Anti-ddos

   The following tree diagram shows the configuration parameters of DDoS
   detection and prevention functions of different types of DDoS
   attacks.

   * SYN flood: The total number of packets that have the same
   destination address are counted in a period of time.  If the counted
   packets number exceeds a pre-defined threshold, the prevention
   function is triggered.  The anti-ddos system will alert the user/
   administrator, and start up source address inspection or TCP proxy
   function as configured.

   * UPD flood: The UDP flood packets normally have the same payload or
   the payload changes regularly.  The anti-ddos system is able to



Pan & Xia                Expires April 18, 2019                 [Page 4]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   automatically learn this payload characteristics, which is so called
   fingerprint of the UDP flood attack packets.  And then if a packet
   matches the learned fingerprint, it will be discarded.  For some UDP
   flood attack that does not has a fingerprint, a threshold bandwidth
   will be configured to limit the UDP traffic.  If the UDP packet is
   associated with some TCP packets, the anti-ddos system can trigger
   the TCP protection measures and use the generated white list to
   determine whether to discard the UDP packets.

   * HTTP and HTTPS flood: The detection mechanisms for these two
   attacks are similar to SYN flood detection.  The total number of
   packets that have the same destination address are counted in a
   period of time.  A threshold is set for the purpose of alerting.

   * DNS request flood: The anti-ddos system counts the number of DNS
   request packets that have the same destination address in a period of
   time.  Once this number exceeds a configured threshold, the
   prevention function is triggered.  The anti-ddos system sends a
   response to the client to ask for another request with a TCP
   connection, and then verify the source address.

   * DNS reply flood: The anti-ddos system counts the number of DNS
   reply packets that have the same destination address in a period of
   time.  Once this number exceeds a configured threshold, the source
   address inspection is triggered.  The anti-ddos ask the sender to
   send the reply message again with a new query ID and port number.  If
   the second reply message is received and the query ID and port number
   match with the asked one.  This source address will be added into the
   white list.

   * ICMP flood: A threshold is configured to limit the rate of ICMP
   traffic.

   * SIP flood: The anti-ddos system counts the number of SIP request
   packets that have the same destination address in a period of time.
   If the counted packets number exceeds a pre-defined threshold, the
   source authentication is triggered.  The anti-ddos system sends an
   OPTIONS request packet with a specific branch value to verify whether
   the source address exists.  If the reply message is in response to
   the OPTIONS packet, this source address will be added into the white
   list.










Pan & Xia                Expires April 18, 2019                 [Page 5]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   module: ietf-i2nsf-asf-config-antiddos
      +--rw antiddos
         +--rw profiles
            +--rw profile* [name]
               +--rw name                        string
               +--rw description?                string
               +--rw syn-flood* [action]
               |  +--rw action                   syn-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw udp-flood* [action]
               |  +--rw action                   udp-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw http-flood* [action]
               |  +--rw action                  http-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw https-flood* [action]
               |  +--rw action                 https-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw dns-request-flood* [action]
               |  +--rw action           dns-request-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw dns-reply-flood* [action]
               |  +--rw action             dns-reply-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw icmp-flood * [action]
               |  +--rw action                  icmp-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw sip-flood* [action]
               |  +--rw action                   sip-flood-action
               |  +--rw alert-rate?                        uint32
               +--rw detect-mode?                     enumeration
               +--rw baseline-learn
                  +--rw auto-apply?                       boolean
                  +--rw start?                            boolean
                  +--rw mode?                         enumeration
                  +--rw tolerance-value?                   uint16
                  +--rw learn-duration?                    uint32
                  +--rw learn-interval?                    uint32

4.3.  Intrusion prevention system

   The following tree diagram shows the interface for configuring the
   IPS.  This interface supports to configure a set of IPS signature-
   based filters to detect known type of attacks and to respond with
   user defined actions such as sending an alert or block the matched
   packets.





Pan & Xia                Expires April 18, 2019                 [Page 6]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   module: ietf-i2nsf-asf-config-ips
      +--rw ips
         +--rw profiles
            +--rw profile* [name]
               +--rw name                                      string
               +--rw description?                              string
               +--rw signature-sets
               |  +--rw signature-set* [name]
               |     +--rw name                                string
               |     +--rw action?                        action-type
               |     +--rw application
               |     |  +--rw all-application                 boolean
               |     |  +--rw specified-application*           string
               |     +--rw target?                        target-type
               |     +--rw severity*                    severity-type
               |     +--rw operating-system*    operating-system-type
               |     +--rw protocol
               |     |  +--rw all-protocol                    boolean
               |     |  +--rw specified-protocol*              string
               |     +--rw category
               |        +--rw all-category                    boolean
               |        +--rw specified-category* [name]
               |           +--rw name                          string
               |           +--rw all-sub-category             boolean
               |           +--rw sub-category* [name]
               |              +--rw name                       string
               +--rw exception-signatures
                  +--rw exception-signature* [id]
                     +--rw id                                  uint32
                     +--rw action?                        action-type

5.  YANG Modules

5.1.  Antivirus

module ietf-i2nsf-asf-config-antivirus {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-i2nsf-asf-config-antivirus";
  prefix
    asf-config-antivirus;

  import ietf-inet-types{
    prefix inet;
  }

  organization
    "Huawei Technologies";



Pan & Xia                Expires April 18, 2019                 [Page 7]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


  contact
    "Wei Pan: william.panwei@huawei.com
     Liang Xia: Frank.xialiang@huawei.com";

  description
    "This module contains a collection of yang definitions
     for configuring antivirus.";

  revision 2018-10-15 {
    description
      "Init revision.";
    reference "xxx.";
  }

  typedef detect-protocol {
    type enumeration {
      enum http {
        description "HTTP.";
      }
      enum ftp {
        description "FTP.";
      }
      enum smtp {
        description "SMTP.";
      }
      enum pop3 {
        description "POP3.";
      }
      enum imap {
        description "IMAP.";
      }
      enum nfs {
        description "NFS.";
      }
      enum smb {
        description "SMB.";
      }
    }
    description
      "This is detect protocol type in antivirus profile.";
  }

  typedef detect-direction {
    type enumeration {
      enum none {
        description "None.";
      }
      enum download {



Pan & Xia                Expires April 18, 2019                 [Page 8]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


        description "Download.";
      }
      enum upload {
        description "Upload.";
      }
      enum both {
        description "Both directions.";
      }
    }
    description
      "This is detect direction type in antivirus profile.";
  }

  typedef detect-action {
    type enumeration {
      enum alert {
        description "Permit files and generate virus logs.";
      }
      enum allow {
        description "Permit files.";
      }
      enum block {
        description "Block files and generate virus logs.";
      }
      enum declare {
        description
          "Permit virus-infected email messages, then add information to
           announce the detection of viruses and generate virus logs.";
      }
      enum delete-attachment {
        description
          "Permit virus-infected email messages with deleting there
           attachments, add information to announce the detection of
           viruses and generate virus logs.";
      }
    }
    description
      "This is detect action type in antivirus profile.";
  }

  typedef match-scope {
    type enumeration {
      enum url {
        description "URL.";
      }
      enum host {
        description "Host.";
      }



Pan & Xia                Expires April 18, 2019                 [Page 9]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


      enum referer {
        description "Referer.";
      }
    }
    description "This is antivirus whitelist match scope.";
  }

  typedef match-type {
    type enumeration {
      enum prefix {
        description "Prefix.";
      }
      enum suffix {
        description "Suffix.";
      }
      enum fuzzy {
        description "Fuzzy.";
      }
      enum exact {
        description "Exact.";
      }
    }
    description "This is antivirus whitelist match type.";
  }

  feature antivirus-whitelists {
    description
      "This feature means the antivirus function supports
       whitelists.";
  }

  grouping address-range {
    description "Address range.";
    leaf start-address {
      type inet:ip-address;
      description
        "Start address.";
    }

    leaf end-address {
      type inet:ip-address;
      description
        "End address.";
    }
  }

  container antivirus {
    description "Antivirus.";



Pan & Xia                Expires April 18, 2019                [Page 10]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


    container profiles {
      description "Profiles.";
      list profile {
        key "name";
        description "Antivirus profile.";

        leaf name {
          type string;
          description "The name of the profile.";
        }

        leaf description {
          type string;
          description "The description of the profile.";
        }

        list detect {
          key "protocol-type direction";
          description "Antivirus detect.";

          leaf protocol-type {
            type detect-protocol;
            description "The protocol type of detect.";
          }

          leaf direction {
            type detect-direction;
            description "The direction of detect.";
          }

          leaf action {
            type detect-action;
            description "The action of detect.";
          }
        }

        list exception-application {
          key "application-name";
          description "Exceptional application.";

          leaf application-name {
            type string;
            description "The name of exceptional application.";
          }

          leaf application-action {
            type detect-action;
            description "The action of exceptional application.";



Pan & Xia                Expires April 18, 2019                [Page 11]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          }
        }

        list exception-signature {
          key "signature-id";
          description "Exceptional signature.";

          leaf signature-id {
            type uint64;
            description "The exception id of antivirus signature.";
          }

          leaf signature-action {
            type detect-action;
            description "The action of exceptional signature.";
          }
        }

        container whitelists {
          if-feature antivirus-whitelists;
          description "The whitelist of antivirus.";

          container match-rules {
            description "The match rules of antivirus whitelist.";

            list match-rule {
              key "scope type value";
              description "The match rule of antivirus whitelist.";

              leaf scope {
                type match-scope;
                description
                  "The scope of antivirus whitelist match rule.";
              }

              leaf type {
                type match-type;
                description
                  "The type of antivirus whitelist match rule.";
              }

              leaf value {
                type string;
                description
                  "The value of antivirus whitelist match rule.";
              }
            }
          }



Pan & Xia                Expires April 18, 2019                [Page 12]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          leaf-list source-address {
            type inet:ip-address;
            description "The source-address of whitelist.";
          }

          list source-address-range {
            key "start-address end-address";
            description "The source-address range of whitelist.";
            uses address-range;
          }

          leaf-list destination-address {
            type inet:ip-address;
            description "The destination-address of whitelist.";
          }

          list destination-address-range {
            key "start-address end-address";
            description "The destination-address range of whitelist.";
            uses address-range;
          }
        }
      }
    }
  }
}

5.2.  Anti-ddos

module ietf-i2nsf-asf-config-antiddos {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-i2nsf-asf-config-antiddos";
  prefix
    asf-config-antiddos;

  organization
    "Huawei Technologies";

  contact
    "Wei Pan: william.panwei@huawei.com
     Liang Xia: Frank.xialiang@huawei.com";

  description
    "This module contains a collection of yang definitions
     for configuring anti-ddos.";

  revision 2018-10-15 {



Pan & Xia                Expires April 18, 2019                [Page 13]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


    description
      "Init revision.";
    reference "xxx.";
  }

  typedef syn-flood-action {
    type enumeration {
      enum tcp-proxy {
        description
          "TCP proxy function.";
      }
      enum tcp-source-authentication {
        description
          "Authenticate the source addresses of TCP packets.";
      }
    }
    description
      "This is detect action type of syn-flood.";
  }

  typedef udp-flood-action {
    type enumeration {
      enum fingerprint-learning {
        description
          "Learn the fingerprint of UDP packets.";
      }
      enum udp-tcp-association {
        description
          "Authenticate the source addresses of TCP packets
           associated with UDP packets.";
      }
      enum traffic-limit {
        description
          "Limit the UDP traffic.";
      }
    }
    description
      "This is detect action type of udp-flood.";
  }

  typedef http-flood-action {
    type enumeration {
      enum source-authentication-meta-refresh {
        description
          "Authenticate the source addresses of HTTP packets by a way of
           meta-refresh.";
      }
      enum source-authentication-code-based {



Pan & Xia                Expires April 18, 2019                [Page 14]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


        description
          "Authenticate the source addresses of HTTP packets by a way of
           code-based.";
      }
      enum source-authentication-302-redirect {
        description
          "Authenticate the source addresses of HTTP packets by a way of
           302-redirect.";
      }
    }
    description
      "This is detect action type of http-flood.";
  }

  typedef https-flood-action {
    type enumeration {
      enum source-authentication {
        description
          "Authenticate the source addresses of HTTPS packets.";
      }
    }
    description
      "This is detect action type of https-flood.";
  }

  typedef dns-request-flood-action {
    type enumeration {
      enum source-authentication-dns-cache-server {
        description
          "Authenticate the source addresses of DNS request packets for
           the DNS Cache Server.";
      }
      enum source-authentication-dns-authoritative-server {
        description
          "Authenticate the source addresses of DNS request packets for
           the DNS Authoritative Server.";
      }
    }
    description
      "This is detect action type of dns-request-flood.";
  }

  typedef dns-reply-flood-action {
    type enumeration {
      enum source-authentication {
        description
          "Authenticate the source addresses of DNS reply packets.";
      }



Pan & Xia                Expires April 18, 2019                [Page 15]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


    }
    description
      "This is detect action type of dns-reply-flood.";
  }

  typedef icmp-flood-action {
    type enumeration {
      enum traffic-limit {
        description
          "Limit the ICMP traffic.";
      }
    }
    description
      "This is detect action type of icmp-flood.";
  }

  typedef sip-flood-action {
    type enumeration {
      enum source-authentication {
        description
          "Authenticate the source addresses of SIP packets.";
      }
    }
    description
      "This is detect action type of sip-flood.";
  }

  container antiddos {
    description "Anti-ddos.";
    container profiles {
      description "Profiles.";
      list profile {
        key "name";
        description "Anti-ddos profile.";

        leaf name {
          type string;
          description "The name of the profile.";
        }

        leaf description {
          type string;
          description "The description of the profile.";
        }

        list syn-flood {
          key "action";
          description "SYN flood detect.";



Pan & Xia                Expires April 18, 2019                [Page 16]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          leaf action {
            type syn-flood-action;
            description "The action of syn-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of syn-flood detect.";
          }
        }

        list udp-flood {
          key "action";
          description "UDP flood detect.";

          leaf action {
            type udp-flood-action;
            description "The action of udp-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of udp-flood detect.";
          }
        }

        list http-flood {
          key "action";
          description "HTTP flood detect.";

          leaf action {
            type http-flood-action;
            description "The action of http-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of http-flood detect.";
          }
        }

        list https-flood {
          key "action";
          description "HTTPS flood detect.";

          leaf action {
            type https-flood-action;
            description "The action of https-flood detect.";



Pan & Xia                Expires April 18, 2019                [Page 17]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of https-flood detect.";
          }
        }

        list dns-request-flood {
          key "action";
          description "DNS request flood detect.";

          leaf action {
            type dns-request-flood-action;
            description "The action of dns-request-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of dns-request-flood detect.";
          }
        }

        list dns-reply-flood {
          key "action";
          description "DNS reply flood detect.";

          leaf action {
            type dns-reply-flood-action;
            description "The action of dns-reply-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of dns-reply-flood detect.";
          }
        }

        list icmp-flood {
          key "action";
          description "ICMP flood detect.";

          leaf action {
            type icmp-flood-action;
            description "The action of icmp-flood detect.";
          }

          leaf alert-rate {



Pan & Xia                Expires April 18, 2019                [Page 18]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


            type uint32;
            description "The alert rate of icmp-flood detect.";
          }
        }

        list sip-flood {
          key "action";
          description "SIP flood detect.";

          leaf action {
            type sip-flood-action;
            description "The action of sip-flood detect.";
          }

          leaf alert-rate {
            type uint32;
            description "The alert rate of sip-flood detect.";
          }
        }

        leaf detect-mode {
          type enumeration {
            enum detect-clean {
              description
                "Detect DDoS attacks and defend against them.";
            }

            enum detect-only{
              description
                "Detect DDoS attacks only.";
            }
          }
          description "DDoS detect mode.";
        }

        container baseline-learn {
          description "Alart rate baseline learning.";

          leaf auto-apply {
            type boolean;
            description "Apply baseline learning results.";
          }

          leaf start {
            type boolean;
            description "Enable baseline learning.";
          }




Pan & Xia                Expires April 18, 2019                [Page 19]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          leaf mode {
            type enumeration {
              enum loop {
                description
                  "Indicate that baseline learning is performed
                   periodically.";
              }

              enum once {
                description
                  "Indicate that baseline learning is performed once.";
              }
            }
            description "Indicate the baseline learning mode.";
          }

          leaf tolerance-value {
            type uint16;
            description
              "Indicate the baseline learning tolerance
               value.";
          }

          leaf learn-duration {
            type uint32;
            description "Indicate the baseline learning duration.";
          }

          leaf learn-interval {
            type uint32;
            description "Indicate the interval for baseline learning.";
          }
        }
      }
    }
  }
}

5.3.  Intrusion prevention system

module ietf-i2nsf-asf-config-ips {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-i2nsf-asf-config-ips";
  prefix
    asf-config-ips;

  organization



Pan & Xia                Expires April 18, 2019                [Page 20]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


    "Huawei Technologies";

  contact
    "Wei Pan: william.panwei@huawei.com
     Liang Xia: Frank.xialiang@huawei.com";

  description
    "This module contains a collection of yang definitions for
     configuring ips.";

  revision 2018-10-15 {
    description
      "Init revision.";
    reference "xxx.";
  }

  typedef action-type {
    type enumeration {
      enum default-type {
        description "Default action type.";
      }
      enum alert {
        description "Alert.";
      }
      enum block {
        description "Block.";
      }
      enum allow {
        description "Allow.";
      }
    }
    description "The action type.";
  }

  typedef target-type {
    type enumeration {
      enum both {
        description "Both client and server.";
      }
      enum client {
        description "Client.";
      }
      enum server {
        description "Server.";
      }
    }
    description "The target type.";
  }



Pan & Xia                Expires April 18, 2019                [Page 21]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


  typedef severity-type  {
    type enumeration {
      enum high {
        description "High.";
      }
      enum medium {
        description "Medium.";
      }
      enum low {
        description "Low.";
      }
      enum information {
        description "Information.";
      }
    }
    description "The severity filter type.";
  }

  typedef operating-system-type {
    type enumeration {
      enum android {
        description "Android OS.";
      }
      enum ios {
        description "IOS.";
      }
      enum unix-like {
        description "UNIX-like OS.";
      }
      enum windows {
        description "Windows OS.";
      }
      enum other {
        description "Other OS.";
      }
    }
    description "The operating system type.";
  }

  container ips {
    description "Intrusion prevention system.";
    container profiles {
      description "Profiles.";
      list profile {
        key "name";
        description "IPS Profile.";

        leaf name {



Pan & Xia                Expires April 18, 2019                [Page 22]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          type string;
          description "The name of a profile.";
        }

        leaf description {
          type string;
          description "The description of a profile.";
        }

        container signature-sets {
          description "Signature sets.";
          list signature-set {
            key "name";
            description "Signature set.";

            leaf name {
              type string;
              description "The name of a signature set.";
            }

            leaf action {
              type action-type;
              description "The action for a signature set.";
            }

            container application {
              description "Application.";
              leaf all-application {
                type boolean;
                mandatory true;
                description
                  "The all application filtering conditions of the
                   signature set.";
              }

              leaf-list specified-application {
                when "../all-application = 'false'";
                type string;
                description
                  "The specified application filtering conditions of the
                   signature set.";
              }
            }

            leaf target {
              type target-type;
              description
                "The target type of a signature set.";



Pan & Xia                Expires April 18, 2019                [Page 23]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


            }

            leaf-list severity {
              type severity-type;
              description
                "The severity type of a signature set.";
            }

            leaf-list operating-system {
              type operating-system-type;
              description
                "The operating system of a signature set.";
            }

            container protocol {
              description "Protocol.";
              leaf all-protocol {
                type boolean;
                mandatory true;
                description
                  "The all protocol filtering conditions of a
                   signature set.";
              }

              leaf-list specified-protocol {
                when "../all-protocol = 'false'";
                type string;
                description
                  "The specified protocol filtering conditions of a
                   signature set.";
              }
            }

            container category {
              description "Category.";
              leaf all-category {
                type boolean;
                mandatory true;
                description
                  "The all category filtering conditions of t signature
                   set.";
              }

              list specified-category {
                when "../all-category = 'false'";
                key "name";
                description "Specified category.";




Pan & Xia                Expires April 18, 2019                [Page 24]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


                leaf name {
                  type string;
                  description
                    "The specified name of category
                     filtering conditions of a signature set.";
                }

                leaf all-sub-category {
                  type boolean;
                  mandatory true;
                  description
                    "The all sub-category filtering
                    conditions of a signature set.";
                }

                list sub-category {
                  when "../all-sub-category = 'false'";
                  key "name";
                  description "Sub category.";

                  leaf name {
                    type string;
                    description
                      "The specified name of sub-category filtering
                       conditions of a signature set.";
                  }
                }
              }
            }
          }
        }

        container exception-signatures {
          description "Exceptional signatures.";
          list exception-signature {
            key "id";
            description "Exceptional signature.";

            leaf id {
              type uint32;
              description "The ID of an exception signature.";
            }

            leaf action {
              type action-type;
              description
                "This action type of an exception signature.";
            }



Pan & Xia                Expires April 18, 2019                [Page 25]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


          }
        }
      }
    }
  }
}

6.  IANA Considerations

   This document makes no request of IANA.

   Note to RFC Editor: this section may be removed on publication as an
   RFC.

7.  Security Considerations

   TBD.

8.  Acknowledgements

   TBD

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

9.2.  Informative References

   [I-D.ietf-i2nsf-nsf-facing-interface-dm]
              Kim, J., Jeong, J., Jung-Soo, P., Hares, S., and l.
              linqiushi@huawei.com, "I2NSF Network Security Function-
              Facing Interface YANG Data Model", draft-ietf-i2nsf-nsf-
              facing-interface-dm-00 (work in progress), March 2018.

   [I-D.ietf-i2nsf-sdn-ipsec-flow-protection]
              Lopez, R. and G. Lopez-Millan, "Software-Defined
              Networking (SDN)-based IPsec Flow Protection", draft-ietf-
              i2nsf-sdn-ipsec-flow-protection-01 (work in progress),
              March 2018.







Pan & Xia                Expires April 18, 2019                [Page 26]


Internet-Draft    Config. Advanced Sec. Func. in I2NSF      October 2018


   [I-D.ietf-i2nsf-terminology]
              Hares, S., Strassner, J., Lopez, D., Xia, L., and H.
              Birkholz, "Interface to Network Security Functions (I2NSF)
              Terminology", draft-ietf-i2nsf-terminology-05 (work in
              progress), January 2018.

   [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>.

Authors' Addresses

   Wei Pan
   Huawei

   Email: william.panwei@huawei.com


   Liang Xia
   Huawei

   Email: frank.xialiang@huawei.com




























Pan & Xia                Expires April 18, 2019                [Page 27]