LINKSYS-SECURITY-SUITE DEFINITIONS ::= BEGIN

-- Version:    7.42_00
-- Date:       24 JAN 2006



IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,Counter32,
    Gauge32, Unsigned32, IpAddress, TimeTicks     FROM SNMPv2-SMI
    InterfaceIndexOrZero, InterfaceIndex,ifIndex  FROM IF-MIB
    TEXTUAL-CONVENTION,TruthValue, RowStatus,
    RowPointer, DisplayString                     FROM SNMPv2-TC
    Percents,rnd                                  FROM LINKSYS-MIB
    PortList                                      FROM Q-BRIDGE-MIB;


rlSecuritySuiteMib MODULE-IDENTITY
        LAST-UPDATED "200604080000Z"
        ORGANIZATION "Linksys LLC."
        CONTACT-INFO
                "www.linksys.com/business/support"
        DESCRIPTION
                "The private MIB module definition for blocking attacks
                such as DoS(=Denial Of Service), SYN and well known viruses Attacks
                in Linksys devices."
        REVISION "200601090000Z"
        DESCRIPTION
                "Add per port dos attack table suport
                rlSecuritySuiteDenyTypesTable ,rlSecuritySuiteDoSSynAttackTable."
        ::= { rnd  120}

RlsecuritySuiteGlobalEnableType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies the operating modes of the security-suite"
    SYNTAX INTEGER {
        enable-global-rules-only(1),
        enable-all-rules-types(2),
        disable(3)
    }

RlSecuritySuiteKnownDosAttackType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies well-known DoS attack"
    SYNTAX INTEGER {
        stacheldraht(1),
        invasor-Trojan(2),
        back-orifice-Trojan(3)
    }

RlSecuritySuiteKnownDosAttackProtocolType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies protocol type of the well-known DoS attack"
    SYNTAX INTEGER {
        tcp(1),
        upd(2)
    }

RlSecuritySuiteAllMartianEntryType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies Martian-address origin: pre-defined (reserved) or statically configured"
    SYNTAX INTEGER {
        reserved(1),
        static(2)
    }

RlSecuritySuiteDenyAttackType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies the deny attack types"
    SYNTAX INTEGER {
        syn(1),
        icmp-echo-request(2),
        fragmented(3)
    }

RlSecuritySuiteDenySynFinTcp ::=  TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies the dropping SYN, FIN flags enabled TCP packets status"
    SYNTAX INTEGER {
        deny(1),
        permit(2)
    }

RlSecuritySuiteSynProtectionMode ::=  TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies the TCP SYN attack protection mode ."
    SYNTAX INTEGER {
        disabled(1),
        report(2),
        block(3)
    }

RlSecuritySuiteSynProtectionPortMode  ::=  TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Specifies the TCP SYN attack protection mode ."
    SYNTAX INTEGER {
        normal(1),
        attacked(2),
        blocked(3)
    }

rlSecuritySuiteGlobalEnable OBJECT-TYPE
 SYNTAX     RlsecuritySuiteGlobalEnableType
 MAX-ACCESS read-write
 STATUS     current
 DESCRIPTION
     "This scalar globally enables/disables the DoS attack Suite. "
    ::= { rlSecuritySuiteMib 1 }

rlSecuritySuiteKnownDoSAttacksTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteKnownDoSAttacksEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table enables/disable well-know DoS attacks,
        applied globally to all ifIndexes."
    ::= { rlSecuritySuiteMib 2 }

rlSecuritySuiteKnownDoSAttacksEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteKnownDoSAttacksEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one well known DoS attack address"
    INDEX { rlSecuritySuiteKnownDoSAttack}
    ::= { rlSecuritySuiteKnownDoSAttacksTable 1 }

RlSecuritySuiteKnownDoSAttacksEntry::= SEQUENCE {
    rlSecuritySuiteKnownDoSAttack          RlSecuritySuiteKnownDosAttackType,
    rlSecuritySuiteKnownDoSAttackEnable    TruthValue
    }

rlSecuritySuiteKnownDoSAttack OBJECT-TYPE
    SYNTAX     RlSecuritySuiteKnownDosAttackType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A well-known DoS attack to enable"
    ::= { rlSecuritySuiteKnownDoSAttacksEntry 1 }

rlSecuritySuiteKnownDoSAttackEnable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Enable/Disable a well-known DoS attack "
    ::= { rlSecuritySuiteKnownDoSAttacksEntry 2 }

rlSecuritySuiteKnownDoSAttacksDetailsTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteKnownDoSAttacksDetailsEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This read-only table used to present the detailed attributes
        of each well-known DoS attack. Used for presentation propose only."
    ::= { rlSecuritySuiteMib 3 }

rlSecuritySuiteKnownDoSAttacksDetailsEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteKnownDoSAttacksDetailsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one well known DoS attack address ,"
    INDEX { rlSecuritySuiteKnownDoSAttack}
    ::= { rlSecuritySuiteKnownDoSAttacksDetailsTable 1 }

RlSecuritySuiteKnownDoSAttacksDetailsEntry::= SEQUENCE {
    rlSecuritySuiteKnownDoSAttackProtocl           RlSecuritySuiteKnownDosAttackProtocolType,
    rlSecuritySuiteKnownDoSAttackSrcTcpUdpPort     INTEGER,
    rlSecuritySuiteKnownDoSAttackDestTcpUdpPort    INTEGER
    }
rlSecuritySuiteKnownDoSAttackProtocl OBJECT-TYPE
    SYNTAX     RlSecuritySuiteKnownDosAttackProtocolType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Specifies the protocol type of the relevant well-known attack"
    ::= { rlSecuritySuiteKnownDoSAttacksDetailsEntry 1 }

rlSecuritySuiteKnownDoSAttackSrcTcpUdpPort OBJECT-TYPE
    SYNTAX     INTEGER
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Specifies the source tcp/udp port of the relevant well-known attack"
    ::= { rlSecuritySuiteKnownDoSAttacksDetailsEntry 2 }

rlSecuritySuiteKnownDoSAttackDestTcpUdpPort OBJECT-TYPE
    SYNTAX     INTEGER
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Specifies the destination tcp/udp port of the relevant well-known attack"
    ::= { rlSecuritySuiteKnownDoSAttacksDetailsEntry 3 }

rlSecuritySuiteReservedMartianAddresses OBJECT-TYPE
   SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
     "This scalar globally enables/disables discarding of the IP
     well-known addresses described below:
    -------------------------------------------------------------------------------
    |  Address block               |  Present use
    |-------------------------------------------------------------------------------
    |0.0.0.0/8                     |  Addresses in this block refer to source hosts
    |(except 0.0.0.0/32            |  on 'this' network.
    | as source address)           |
    |------------------------------------------------------------------------------
    |127.0.0.0/8                   | This block is assigned for use as the Internet host loop-back address.
    |-----------------------------------------------------------------------------------------------------
    |192.0.2.0/24                  | This block is assigned as 'TEST-NET'
    |                              | for use in documentation and example code.
    |---------------------------------------------------------------------------
    |224.0.0.0/4 as source.        | This block, formerly known as the Class D address space,
    |                              | is allocated for use in IPv4 multicast address assignments.
    |-------------------------------------------------------------------------------------------
    |240.0.0.0/4                   |
    |(except 255.255.255.255/32    | This block, formerly known as the Class E address space, is reserved.
    | as destination address)      |
    |-------------------------------------------------------------------------------------------------------
   "
    ::= { rlSecuritySuiteMib 4 }

rlSecuritySuiteMartianAddrAllTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteMartianAddrAllEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This read-only table specifies all current configured Martian addresses -
        both pre-defined (=reserved) and used-configured (=static) addresses"
    ::= { rlSecuritySuiteMib 5 }

rlSecuritySuiteMartianAddrAllEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteMartianAddrAllEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one Martian address ,
   packets with this address as IP source or IP destination, are discarded."
    INDEX { rlSecuritySuiteMartianAddr,rlSecuritySuiteMartianAddrNetMask}
    ::= { rlSecuritySuiteMartianAddrAllTable 1 }

RlSecuritySuiteMartianAddrAllEntry::= SEQUENCE {
    rlSecuritySuiteMartianAddr                  IpAddress,
    rlSecuritySuiteMartianAddrNetMask           IpAddress,
    rlSecuritySuiteAllMartianEntryType          RlSecuritySuiteAllMartianEntryType
    }
rlSecuritySuiteMartianAddr OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An IP address to discard all packets with that address as source
        or destination"
    ::= { rlSecuritySuiteMartianAddrAllEntry 1 }

rlSecuritySuiteMartianAddrNetMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Specify the net mask that comprise the destination IP address prefix."
    ::= { rlSecuritySuiteMartianAddrAllEntry 2 }

rlSecuritySuiteAllMartianEntryType OBJECT-TYPE
    SYNTAX     RlSecuritySuiteAllMartianEntryType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Specific the entry origin: pre-defined (reserved) of statically configured."
    ::= { rlSecuritySuiteMartianAddrAllEntry 3 }

rlSecuritySuiteMartianAddrTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlDoSAttackMartianAddrEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table specifies the Martian addresses -
        the addresses that packets with these IP addressed as source or
        destination are discarded."
    ::= { rlSecuritySuiteMib 6 }

rlSecuritySuiteMartianAddrEntry OBJECT-TYPE
    SYNTAX     RlDoSAttackMartianAddrEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one Martian address ,
   packets with this address as IP source or IP destination, are discarded."
    INDEX { rlSecuritySuiteMartianAddr,rlSecuritySuiteMartianAddrNetMask}
    ::= { rlSecuritySuiteMartianAddrTable 1 }

RlDoSAttackMartianAddrEntry::= SEQUENCE {
    rlSecuritySuiteMartianAddrStatus              RowStatus
    }

rlSecuritySuiteMartianAddrStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of a table entry.
        It is used to delete/Add an entry from this table."
    ::= { rlSecuritySuiteMartianAddrEntry 1  }

rlSecuritySuiteDoSSynAttackTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteDoSSynAttackEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table contains IP address and rate, to limit DoS SYN attacks from
        a specific IP address and interface(s)"
    ::= { rlSecuritySuiteMib 7 }

rlSecuritySuiteDoSSynAttackEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteDoSSynAttackEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one Martian address ,
   packets with this address as IP source or IP destination, are discarded."
    INDEX { rlSecuritySuiteDoSSynAttackIfIndex,
            rlSecuritySuiteDoSSynAttackAddr,
            rlSecuritySuiteDoSSynAttackNetMask}
    ::= { rlSecuritySuiteDoSSynAttackTable 1 }

RlSecuritySuiteDoSSynAttackEntry::= SEQUENCE {
    rlSecuritySuiteDoSSynAttackIfIndex             InterfaceIndex,
    rlSecuritySuiteDoSSynAttackAddr                IpAddress,
    rlSecuritySuiteDoSSynAttackNetMask             IpAddress,
    rlSecuritySuiteDoSSynAttackSynRate             INTEGER,
    rlSecuritySuiteDoSSynAttackStatus              RowStatus
    }
rlSecuritySuiteDoSSynAttackIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Interface which the attack is applied on"
    ::= { rlSecuritySuiteDoSSynAttackEntry 1 }

rlSecuritySuiteDoSSynAttackAddr OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An IP address to discard all packets with that address as destination"
    ::= { rlSecuritySuiteDoSSynAttackEntry 2 }

rlSecuritySuiteDoSSynAttackNetMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Relevant when rlSecuritySuiteSynAttackRangeType equals prefix(2).
        Specify the number of bits that comprise the destination
        IP address prefix."
    ::= { rlSecuritySuiteDoSSynAttackEntry 3 }

rlSecuritySuiteDoSSynAttackSynRate OBJECT-TYPE
    SYNTAX     INTEGER
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Specify the maximum connections per second allowed from this IP address
        and rlSecuritySuiteSynAttackPortList"
    ::= { rlSecuritySuiteDoSSynAttackEntry 4 }

rlSecuritySuiteDoSSynAttackStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of a table entry.
        It is used to delete/Add an entry from this table."
    ::= { rlSecuritySuiteDoSSynAttackEntry 6  }

rlSecuritySuiteDenyTypesTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteDenyTypesEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table specifies the ip address and TCP ports that
        TCP SYN packets from them on a specific interfaces are dropped."
    ::= { rlSecuritySuiteMib 8 }

rlSecuritySuiteDenyTypesEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteDenyTypesEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes one ip address, TCP port and
   list of ifIndexes, that packets with these attributes are discarded."
    INDEX { rlSecuritySuiteDenyIfIndex,
            rlSecuritySuiteDenyAttackType,
            rlSecuritySuiteDenyDestAddr,
            rlSecuritySuiteDenyNetMask,
            rlSecuritySuiteDenyDestPort}
    ::= { rlSecuritySuiteDenyTypesTable 1 }

RlSecuritySuiteDenyTypesEntry::= SEQUENCE {
    rlSecuritySuiteDenyIfIndex             InterfaceIndex,
    rlSecuritySuiteDenyAttackType          RlSecuritySuiteDenyAttackType,
    rlSecuritySuiteDenyDestAddr            IpAddress,
    rlSecuritySuiteDenyNetMask             IpAddress,
    rlSecuritySuiteDenyDestPort            INTEGER,
    rlSecuritySuiteDenyStatus              RowStatus
    }

rlSecuritySuiteDenyIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Interface which the attack is applied on"
    ::= { rlSecuritySuiteDenyTypesEntry 1 }

rlSecuritySuiteDenyAttackType OBJECT-TYPE
    SYNTAX     RlSecuritySuiteDenyAttackType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The specific deny attack type"
    ::= { rlSecuritySuiteDenyTypesEntry 2 }

rlSecuritySuiteDenyDestAddr OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An IP address to discard all packets with that address as destination"
    ::= { rlSecuritySuiteDenyTypesEntry 3 }

rlSecuritySuiteDenyNetMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Relevant when rlSecuritySuiteDenyTCPRangeType equals mask(1).
        Specify the number of bits that comprise the destination
        IP address prefix."
    ::= { rlSecuritySuiteDenyTypesEntry 4 }

rlSecuritySuiteDenyDestPort OBJECT-TYPE
    SYNTAX     INTEGER
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Destination TCP port.
        Use 65553 to specify all ports.
        This key-field is relevant in specific attack types (not all)
        Use 0 when not relevant."
    ::= { rlSecuritySuiteDenyTypesEntry 5 }

rlSecuritySuiteDenyStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of a table entry.
        It is used to delete/Add an entry from this table."
    ::= { rlSecuritySuiteDenyTypesEntry 6  }


rlSecuritySuiteDenySynFinTcp OBJECT-TYPE
 SYNTAX     RlSecuritySuiteDenySynFinTcp
 MAX-ACCESS read-write
 STATUS     current
 DESCRIPTION
     "This scalar globally enable or disable dropping of tcp packets with both SYN and FIN flags enabled. "
    ::= { rlSecuritySuiteMib 9 }

rlSecuritySuiteSynProtectionMode OBJECT-TYPE
 SYNTAX     RlSecuritySuiteSynProtectionMode
 MAX-ACCESS read-write
 STATUS     current
 DESCRIPTION
     "This scalar globally set protection mode on TCP SYN traffic.
      Disabled - the system doesn't support protection against TCP SYN attack.
      Report   - the system doesn't support protection against TCP SYN attack,but reports about it.
      Block    - the systems supports protection against TCP SYN attack by blocking this traffic on the port.  "
    ::= { rlSecuritySuiteMib 10 }

rlSecuritySuiteSynProtectionTreshold OBJECT-TYPE
 SYNTAX     INTEGER
 MAX-ACCESS read-write
 STATUS     current
 DESCRIPTION
     "This scalar globally set protection mode treshold value in packet per second
      on TCP SYN traffic."
    ::= { rlSecuritySuiteMib 11 }

rlSecuritySuiteSynProtectionRecoveryTimeout OBJECT-TYPE
 SYNTAX     INTEGER
 MAX-ACCESS read-write
 STATUS     current
 DESCRIPTION
     "This scalar globally set protection reovery time out in secounds."
    ::= { rlSecuritySuiteMib 12 }

rlSecuritySuiteSynProtectionPortTable OBJECT-TYPE
    SYNTAX SEQUENCE OF RlSecuritySuiteSynProtectionPortEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table keeps SYN protection status per port."
    ::= { rlSecuritySuiteMib 13 }

rlSecuritySuiteSynProtectionPortEntry OBJECT-TYPE
    SYNTAX     RlSecuritySuiteSynProtectionPortEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
   "Each entry in this table describes TCP SYN protection status for one port."
    INDEX { ifIndex}
    ::= { rlSecuritySuiteSynProtectionPortTable 1 }

RlSecuritySuiteSynProtectionPortEntry::= SEQUENCE {
    rlSecuritySuiteSynProtectionPortMode                RlSecuritySuiteSynProtectionPortMode,
    rlSecuritySuiteSynProtectionPortModeLastTimeAttack  RlSecuritySuiteSynProtectionPortMode,
    rlSecuritySuiteSynProtectionPortLastTimeAttack      DisplayString
    }

rlSecuritySuiteSynProtectionPortMode OBJECT-TYPE
    SYNTAX     RlSecuritySuiteSynProtectionPortMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The port's TCP SYN protection mode."
    ::= { rlSecuritySuiteSynProtectionPortEntry 1 }


rlSecuritySuiteSynProtectionPortModeLastTimeAttack OBJECT-TYPE
    SYNTAX     RlSecuritySuiteSynProtectionPortMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The port's TCP SYN protection last attack time mode."
    ::= { rlSecuritySuiteSynProtectionPortEntry 2 }

rlSecuritySuiteSynProtectionPortLastTimeAttack OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The port's TCP SYN protection last attack time."
    ::= { rlSecuritySuiteSynProtectionPortEntry 3 }



END

