Internet DRAFT - draft-czirkos-komondor-p2p-security

draft-czirkos-komondor-p2p-security






Network Working Group                                         Z. Czirkos
Internet-Draft                                                 G. Hosszu
Expires: March 4, 2008                                           BME EET
                                                               Sept 2007


               The Komondor Peer to Peer Security System
                 draft-czirkos-komondor-p2p-security-01

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

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

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on March 4, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2007).














Czirkos & Hosszu          Expires March 4, 2008                 [Page 1]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


Abstract

   This memo presents Komondor, an experimental peer-to-peer security
   system.  Komondor is a network intrusion detection system.  Hosts
   running this software organize themselves automatically in an overlay
   network, where they share information about intrusion attempts they
   detect.  This way the security of all participants is increased, as
   they are able to prepare for some of the attacks in advance.

   The overlay created is a peer-to-peer network, which is completely
   decentralized.  This communication model ensures stability, and by
   using this the system remains operational over an unstable network.







































Czirkos & Hosszu          Expires March 4, 2008                 [Page 2]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  The Structure of the Overlay . . . . . . . . . . . . . . . . .  5
     2.1.  Overview . . . . . . . . . . . . . . . . . . . . . . . . .  5
     2.2.  The Structure  . . . . . . . . . . . . . . . . . . . . . .  5
     2.3.  The Lookup Procedure . . . . . . . . . . . . . . . . . . .  6
   3.  Intrusion Detection  . . . . . . . . . . . . . . . . . . . . .  7
     3.1.  Description of an Intrusion Attempt  . . . . . . . . . . .  7
     3.2.  Analysis of Reports  . . . . . . . . . . . . . . . . . . .  8
     3.3.  Report Example . . . . . . . . . . . . . . . . . . . . . .  8
   4.  Centralized Logging  . . . . . . . . . . . . . . . . . . . . . 10
   5.  Protocol Specification . . . . . . . . . . . . . . . . . . . . 11
     5.1.  Transport Protocol . . . . . . . . . . . . . . . . . . . . 11
     5.2.  Message Format . . . . . . . . . . . . . . . . . . . . . . 11
     5.3.  Reliable Communication . . . . . . . . . . . . . . . . . . 12
     5.4.  Hashing Algorithm  . . . . . . . . . . . . . . . . . . . . 12
     5.5.  Message Details  . . . . . . . . . . . . . . . . . . . . . 14
       5.5.1.  Acknowledgement Message  . . . . . . . . . . . . . . . 14
       5.5.2.  Ping Message . . . . . . . . . . . . . . . . . . . . . 14
       5.5.3.  Quit Message . . . . . . . . . . . . . . . . . . . . . 15
       5.5.4.  Findnode Message . . . . . . . . . . . . . . . . . . . 15
       5.5.5.  Peer Message . . . . . . . . . . . . . . . . . . . . . 15
       5.5.6.  Attack Message . . . . . . . . . . . . . . . . . . . . 16
       5.5.7.  Protection Message . . . . . . . . . . . . . . . . . . 17
       5.5.8.  Announce Message . . . . . . . . . . . . . . . . . . . 17
       5.5.9.  Statistics Message . . . . . . . . . . . . . . . . . . 18
   6.  Configuration Parameters of the Komondor System  . . . . . . . 20
     6.1.  Replication Factor . . . . . . . . . . . . . . . . . . . . 20
     6.2.  Intrusion Detection and Protection . . . . . . . . . . . . 20
     6.3.  Timing of Intrusion Detection  . . . . . . . . . . . . . . 20
     6.4.  Protection Methods . . . . . . . . . . . . . . . . . . . . 21
     6.5.  Overview of Configuration Parameters . . . . . . . . . . . 21
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 22
   8.  Implementation Details . . . . . . . . . . . . . . . . . . . . 23
     8.1.  Communication over UDP . . . . . . . . . . . . . . . . . . 23
     8.2.  Kademlia Binary Tree . . . . . . . . . . . . . . . . . . . 23
     8.3.  Usage of the Overlay . . . . . . . . . . . . . . . . . . . 23
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 25
   Intellectual Property and Copyright Statements . . . . . . . . . . 26










Czirkos & Hosszu          Expires March 4, 2008                 [Page 3]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


1.  Introduction

   This memo describes Komondor, a peer-to-peer based collaborative
   security system [2].

   Komondor is a host security software, which is able to detect
   network-sized intrusion attempts.  Hosts running this software share
   information about detected intrusion attempts, for example by
   exchanging suspicious IP addresses.  This way the security of all
   entities is increased, as they are able to prepare for the attacks in
   advance.  The heterogenity of hosts in such a network also increases
   security, as different operating system and software versions are
   vulnerable to different kinds of attacks.

   Komondor entities organize themselves into a peer-to-peer network,
   where every entity is responsible for collecting and analyzing data.
   This network model has no central server, and therefore it can remain
   operational on the unstable network.  A centralized model would be
   completely unfeasible for such an application, as an intruder
   attacking the central server would shut down the intrusion detection
   network completely.

   The Komondor system implements a Distributed Hash Table (DHT).  In
   the overlay network, every Komondor entity (node) is assigned a
   unique identifier, a nodeID, which is a 32-bit number.  The source IP
   address of every attacker identified is hashed with a hash function
   similar to SHA-1, which also results in a 32-bit number.  Every node
   stores reports, which have a hash value close to its identifier.
   This way reports of the same attacker are collected by a single node,
   so it is able to analyze them to detect network-size attacks.

   If an IP address becomes suspicious, the entity collecting and
   analyzing its data issues a broadcast message in the overlay,
   alerting every other nodes.  This way they can prepare their
   protection systems in advance, expecting the same attacker.
















Czirkos & Hosszu          Expires March 4, 2008                 [Page 4]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


2.  The Structure of the Overlay

2.1.  Overview

   The Komondor intrusion detection system is built over an overlay
   network, which is similar to Kademlia [1].

   Kademlia is a distributed hash table (DHT), which is using the XOR
   metric.  In the DHT, every node has a unique identifier, which is a
   32-bit number for Komondor.  Information to be stored must be in a
   key/value format.  Here the key is the IP address of the attacker,
   and the value is a report of an intrusion attempt detected.

   When storing information in the overlay, a node uses a hash function
   to generate a 32-bit number from the key.  (Note that this number is
   the same size as the node identifiers.)  The report is then sent to
   the node which has its identifier closest to the hashed value.  The
   distance is calculated using the XOR function.

   There is no routing defined in the overlay network.  It is merely
   used to let nodes discover each other, e.g. to find out the IP
   address and port number of the participators.  Once the destination
   of the message is known, the reports of intrusion attempts detected
   can be sent directly to it.

2.2.  The Structure

   This section describes the structure of the Komondor overlay network,
   which is very similar to Kademlia.

   When joining the overlay, every node chooses a random 32-bit nodeID,
   which will essentially be its address in the application level
   network.  The purpose of the overlay is to help nodes find out the
   Internet address of each other in logarithmically many steps.

   Nodes in Kademlia are leaves of a binary tree.  Each node's position
   is determined by the shortest unique prefix in its nodeID.  For any
   given node, the tree is divided into successively smaller subtrees,
   which do not contain the node.  For node 0011, these subtrees are
   prefixed by the numbers 1, 01, 000 and 0010.  These prefixes can be
   acquired by leaving the first n bits of the address untouched, then
   inverting the following bit.  The tallest common subtree for node
   0011 is 0xxx, therefore the neighbouring subtree is 1xxx.  The second
   smallest is 00xx, therefore the neighbouring subtree is 01xx, and so
   on.

   Nodes in the overlay are required to know at least one node in each
   subtree they belong to.  If this is achieved, every node can be



Czirkos & Hosszu          Expires March 4, 2008                 [Page 5]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   located by knowing its nodeID.  Distance between two nodes (or a
   hashed value and an identifier) is calculated using the XOR function.
   Note that this effectively describes the binary tree representation
   of the system presented above, as a larger number will indicate a
   shortest common prefix of nodeID's.

   Every node should maintain a list of other nodes in the overlay it is
   aware of.  For the system to be scalable, these list is handled using
   the binary tree.  Every subtree is assigned a fixed length list of
   nodes.  The members of such a list are IP address, port number,
   nodeID triplets.  Kademlia calls these lists k-buckets, and refers to
   their maximum size as k [1].

   Nodes of a Komondor system can quit unexpectedly, because of having
   network errors or being under heavy attack.  Therefore the system-
   wide configuration parameter k must be chosen big enough to ensure
   that not too many nodes leave the network, before all k-buckets of
   another one become empty (i.e. they contain only dead connection
   information).  For the highest subtrees, which contain the closest
   nodes for a given node, these lists will be usually empty, as no
   appropriate nodes exist.

   K-buckets are to be propagated by two means.  First, peer messages
   can contain addresses of other nodes in the overlay.  Second, when a
   node receives a message, the source address and port can also be
   remembered.

2.3.  The Lookup Procedure

   To find the IP address and port number of a participator with a
   specific nodeID, a node should initiate a recursive lookup procedure.

   Every node manages its own lookup procedures.  Such a procedure
   consists of successive find node messages.  It is started with
   sending a find node message to the closest node to the destination.
   The distances between the desired nodeID and the known IDs are
   calculated using the XOR function.  As every node has greater
   knowledge of its surroundings, the reply will contain peer messages
   with addresses of nodes even closer.  Then the initiator can issue
   another find node message.

   A lookup is complete, when the k closest nodes to the destination
   address have been queried.  As the Internet address of the
   destination is known at this point, more reports about the same
   attacker can easily be sent at once.






Czirkos & Hosszu          Expires March 4, 2008                 [Page 6]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


3.  Intrusion Detection

   This section describes the intrusion detection used by a Komondor
   overlay.

   The detection scenario can be summarized as follows.  When a member
   of the overlay detects a suspicious event, it notes the IP address of
   the intruder.  This IP address is hashed using the hash function used
   by all nodes.  The result is a 32-bit number, which is treated as a
   nodeID, and looked up in the overlay.  The report about the detected
   event is the sent to the specific node by an attack message.

   The same hash function is used by all nodes, so report about the same
   attacker will be collected by a single node, no matter which nodes
   the events were detected by.  The collector node is then able to
   summarize and analyze the reports.  If the reports indicate an
   intrusion attempt, the collector initiates a broadcast message among
   nodes, which is called a protection message.  This message contains
   the IP address of the attacker, against which nodes should take their
   own protective steps.

   Nodes are free to use their own means of intrusion detection and
   protection.  One example for this is to monitor system log files for
   detection, and to configure a firewall for protection.  Mandatory
   tasks for nodes is to report suspicious events, and to forward
   broadcast messages, as described by the Komondor protocol.

3.1.  Description of an Intrusion Attempt

   Suspicious events detected do not necessarily indicate a real
   intrusion attempt.  The common example for this is a mistyped
   password during an authentication.  Every event which is reported
   should be therefore assigned a number, which denotes its importance.

   The parameters in a report are therefore:

   IP address:  The IP address of the attacker.

   Importance:  The weight of the event, which is a number between 0 and
      100.

   Event type:  The name of the event.  For statistical purposes.

   Detector:  The host name of the node which detected the event.  For
      statistical purposes.






Czirkos & Hosszu          Expires March 4, 2008                 [Page 7]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


3.2.  Analysis of Reports

   Every node is responsible for collecting and analyzing reports
   received.  Each report is to be remembered for one hour.  Records
   older than one hour are to be deleted.

   An index should be calculated for every IP address which is suspected
   to be an attacker.  This index is a summation of importance values
   seen in the reports, which are decreased with time.  The importance
   of one report is:

   importance = reported importance * (3600s - report age),

   where the age of the report is the time that has elapsed since the
   report was received by the collector.  Reports are expected to be
   received in a few seconds, so the current protocol does not require
   nodes to timestamp their reports.

   These decreased importance values are then summed up.  The index
   should be recalculated every minute, or when a new report is received
   for an IP address.  If the sum of these increases above 100, the
   collector node must initiate a broadcast message, signalling other
   nodes to prepare their protection against the attacker.

   The protection message contains the IP address of the attacker.  Each
   protection message is valid for twenty minutes.  After that period,
   if the index for an attacker is still above 100, the collector node
   should initiate another broadcast.

   As the importance values of each reports are summed up, nodes are
   free to summarize more events in a short time, of the same type and
   same attacker, in a single report.  This reduces the network traffic
   induced.  The short time interval should not exceed ten seconds,
   however, as that would possibly degrade detection efficiency.  Nodes
   are also allowed to analyze their own reports, and initiate a
   protection broadcast message, if required.  In either case, the
   reports must always be sent to the collector.

3.3.  Report Example

   The importance indices for events can be freely chosen, when
   implementing and configuring a Komondor node.  The specific value can
   be estimated by keeping the the 100-point limit in mind.  For
   example, a failure of a user name and password type authentication
   can be assigned the importance of 40 points.  This will allow users
   to mistype their password twice, and only the third failure will
   initiate the protection.  The event type for this can be
   ssh_password_failed, for example.



Czirkos & Hosszu          Expires March 4, 2008                 [Page 8]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   Events which indicate an attack on their own can be assigned an
   importance of more than 100 points.  For example, an Internet worm
   attack can have the type slammer_worm, and importance 120.
















































Czirkos & Hosszu          Expires March 4, 2008                 [Page 9]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


4.  Centralized Logging

   The Komondor system supports logging statistical data about detected
   intrusion attempts.

   Reports about the same attacker are always collected by a single node
   in the system.  When the attack seems to be over, that is to say, the
   last report about the specific attacker times out, the collector node
   is allowed to send a summary about the attack types and detectors of
   the event.

   This procedure is not a vital part of the workings of the system.
   The logging works in a centralized way.  The node collecting
   statistical data (apart from the fact that it is a completely
   functional Komondor node) is assigned the application level network
   address 0x00000001, instead of the normal randomly choosen address
   used by other nodes.  There can be only one logging node in a
   Komondor overlay.  Nodes in the system use the normal lookup
   procedure with address 0x00000001 to find out the IP address of the
   logging node.

   The statistical report of the intrusion attempt contains the
   following data:

   IP address:  The IP address of the attacker.

   Interval:  The time interval of the intrusion attempt, from the first
      to the last event detected.

   Event types:  The list of all event types detected.

   Detectors:  The host names of all nodes which detected the specific
      attacker.

   Protection:  If the protection was successful for some node.

   Most of this information is valuable only to the network
   administrator who configured the Komondor nodes on his network, as
   the name of event types, and host names are assigned by him.

   The last parameter named "protection" will show if the protection
   against the attacker was successful for some node.  The availability
   of this information depends on the means of th protection.  For
   example, a firewall can be configured to log dropped packets, and
   that way the node will know if it is still under attack.  This
   enables network administrators to determine the efficiency of the
   system.




Czirkos & Hosszu          Expires March 4, 2008                [Page 10]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


5.  Protocol Specification

   The protocol described here is used between two Komondor entities.

5.1.  Transport Protocol

   Komondor nodes must use UDP for communication.  Currently, nodes are
   free to choose any port number.  However, they must use the same port
   number for incoming and outgoing messages.  This allows the k-buckets
   to be propagated by checking the remote address and port number of
   messages.  For example, if a node receives a message with remote
   address 192.0.2.92:1705, it can send its reply to this address as
   destination.

5.2.  Message Format

   The protocol is based on set of codes which are composed of eight
   bits (an octet), and uses the ASCII character set.  Messages are
   essentially text lines, which consist of a node identifier, a message
   identifier, a command and optional parameters.

   Each message is prefixed by the nodeID of the sender.  This
   identifier is expressed as a minimum of one, a maximum of eight
   hexadecimal digits, representing the 32-bit identifier.  This is used
   to assign nodeID's to socket addresses, and to detect if a node is
   restarted.

   The second prefix of the message is also a 32-bit hexadecimal number
   in ASCII code.  This is a random number which should be unique for
   each different message sent.  As UDP does not guarantee message
   delivery, this number is used to implement a reliable communication
   channel.

   Each message is encapsulated in its own UDP packet (datagram), so
   there is no delimiter used between them.

   The BNF representation for the message is:

   message  ::= <nodeID> <SPACE> <messageID> <SPACE> <command>
      [parameters]

   nodeID  ::= <hex digit> { <hex digit> }

   messageID  ::= <hex digit> { <hex digit> }







Czirkos & Hosszu          Expires March 4, 2008                [Page 11]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   command  ::= <letter> { <letter> }

   SPACE  ::= ' '

   parameters  ::= { <SPACE> <any non-empty sequence of octects, not
      including SPACE> }

5.3.  Reliable Communication

   As UDP does not guarantee reliable message delivery, each message
   contains a messageID mentioned above.  This message identifier is a
   32-bit random number.  When a node receives a message, it must reply
   with an acknowledge, unless the messageID is zero.  The parameter of
   the acknowledgement is the messageID of the message which it
   acknowledges.  The own messageID of the acknowledgement must be zero
   to prevent infinite loops.

   Unacknowledged messages should be resent to their destination.  If
   there is no reply from the node, the connection is to be considered
   dead.

   Packet loss of acknowledgement messages can result in message
   duplicates.  For this reason, every node should maintain a list of
   recently seen messages, to prevent processing it more than once.
   This list of seen messages should contain the messageID's received in
   the last minute.

5.4.  Hashing Algorithm

   Komondor uses a modified version of SHA-1 algorithm, which processes
   ASCII strings with a maximum length of 64 bytes.  The IP addresses of
   attackers are hashed as strings with the algorithm presented below.

   This is a C language implementation of the SHA-1 algorithm used by
   Komondor.  It can be used for little-endian machines. uint32 is
   assumed to be a 32-bit unsigned integer type.

   #define S(x,n) (((x) << (n)) | (((x) & 0xFFFFFFFF) >> (32 - (n))))
   IDENTIFIER p2p_hash_string (const char *string)
   {
       /* rotating left an uint32 */

       uint32 w[80];
       uint32 h0, h1, h2, h3, h4;
       uint32 a, b, c, d, e;
       int i;

       h0 = 0x67452301;



Czirkos & Hosszu          Expires March 4, 2008                [Page 12]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


       h1 = 0xEFCDAB89;
       h2 = 0x98BADCFE;
       h3 = 0x10325476;
       h4 = 0xC3D2E1F0;

       /* copy 64bytes max to w, rest filled with 0 */
       memset (w, sizeof(w), 0);
       strncpy ((char *)w, string, 64);

       /* Extend the sixteen 32-bit words (64 bytes)
          into eighty 32-bit words */
       for (i=16; i<80; i++)
           w[i] = S(w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16],1);

       /* Initialize hash value */
       a = h0;
       b = h1;
       c = h2;
       d = h3;
       e = h4;

       /* Main loop */
       for (i=0; i<80; i++) {
           uint32 temp, f, k;
           if (i <= 19) {
               f = (b & c) | ((~b) & d);
               k = 0x5A827999;
           }
           else if (i >= 20 && i<= 39) {
               f = b ^ c ^ d;
               k = 0x6ED9EBA1;
           }
           else if (i >= 40 && i<= 59) {
               f = (b & c) | (b & d) | (c & d);
               k = 0x8F1BBCDC;
           }
           else { /* i >= 60 */
               f = b ^ c ^ d;
               k = 0xCA62C1D6;
           }

           temp = S(a,5) + f + e + k + w[i];
           e = d;
           d = c;
           c = S(b,30);
           b = a;
           a = temp;
       }



Czirkos & Hosszu          Expires March 4, 2008                [Page 13]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


       /* Add this chunk's hash to result so far */
       h0 = h0 + a;
       h1 = h1 + b;
       h2 = h2 + c;
       h3 = h3 + d;
       h4 = h4 + e;

       /* Komondor uses 32bit identifiers,
          so we xor the five 32-bit  */
       return h0 ^ h1 ^ h2 ^ h3 ^ h4;
   }

5.5.  Message Details

   This section lists all messages which must be or should be
   implemented by Komondor entities.  Every subsection describes a
   message and its parameters.

   The parameters are usually encoded as ASCII strings, and they are
   fixed in order.

5.5.1.  Acknowledgement Message

   Command:  ack

   Parameters:  <messageID>

   This message should be the first immediate answer to any message
   received.  The purpose of this is to implement reliable communication
   over UDP.  The parameter should contain the messageID of the message
   received, which is acknowledged by this line.

   One exception for sending acknowledgements is when the messageID
   received is zero (0).  Also, the messageID of the acknowledgement
   message should be zero to prevent infinite loops.

   Example: 78ae56cd 0 ack 12983efa

   Node 78ae56cd acknowledges message 12983efa.

5.5.2.  Ping Message

   Command:  ping

   Parameters:  none

   This message tests if a connection is alive.  The reply is the
   acknowledgement message described in the section above.  Note that



Czirkos & Hosszu          Expires March 4, 2008                [Page 14]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   every message with a messageID other than zero generater an
   acknowledgement, not only the ping command.

5.5.3.  Quit Message

   Command:  quit

   Parameters:  none

   This message informs its destination node, that the source node is
   intending to leave the overlay.  The receiver should delete the
   connection from its k-buckets.

5.5.4.  Findnode Message

   Command:  findnode

   Parameters:  identifier

   This message requests the destination to send the list of other nodes
   which it is aware of.  The destination should reply with a peer
   message, containing connection information to other nodes.  Those
   nodes must be closest ones to the identifier in XOR space, which the
   destination is aware of.  The list is essentially a k-bucket, or
   information about nodes from several k-buckets, if the bucket in
   question did not contain at least k nodes [1].

   Example: 78ae56cd 39fa9912 findnode 98be1f7d

   Node 78ae56cd queries one of its neighbors about other nodes, which
   have identifiers close to 98be1f7d.  The neighbor will answer this
   request with a peer message, containing k-bucket.

5.5.5.  Peer Message

   Command:  peer

   Parameters:  <ipaddress:port> { ipaddress:port }

   This message contains the Internet address of one or more nodes.  It
   is a reply to a findnode message.  The IP address is to be expressed
   in dot notation as decimal numbers (for example 192.0.2.4).  The port
   number must also be a decimal number.

   Example: 78ae56cd 2795aef5 peer 192.0.2.4:1232 192.0.2.9:1892

   Node 78ae56cd informs the receiver of the message about other nodes,
   reachable at 192.0.2.4:1232 and 192.0.2.9:1892.



Czirkos & Hosszu          Expires March 4, 2008                [Page 15]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


5.5.6.  Attack Message

   Command:  attack

   Parameters:  <ip> <importance> <hostname> <rulename{,rulename}>
      <protected>

   This message is a report of an intrusion attempt detected.  The
   parameters have their meanings as follows:

   ip:  first one, most important is the IP address of the attacker in
      dot notation, 192.0.2.107 for example.

   importance:  the second parameter represents the importance of the
      event, and is a decimal number.

   hostname:  The third is the name of the host which detected the
      attack (a string of any printable characters except space).

   rulename:  This is the name of the attack type (also printable, non-
      whitespace characters).

   protected:  This should be 1, if the protection is already active
      against this attacker, 0 otherwise.

   The third, fourth and fifth parameters serve statistical purposes
   only.

   The receiver of this message is a node selected by the DHT to collect
   information about the specific attacker.  It should sum up the
   indexes of each event reported, and if the total is greater than 100,
   initiate a broadcast procedure to inform entities in the overlay
   about an undergoing attack.

   The last parameter allows the collector node to estimate the
   effectiveness of the system.

   Komondor entities are allowed to send information about more events
   in a single message.  In this case, the importance indexes must be
   summed up.  If there are different rule names, they must be separated
   by the comma (,) character.  As the importance of each detection
   decreases with time, multiple events are only allowed to be sent in
   one message, if the interval between their detection is not longer
   than 10 seconds.

   Example: 78ae56cd 9efc56e1 attack 192.0.2.107 40 jutas
   ssh_invalid_password 0




Czirkos & Hosszu          Expires March 4, 2008                [Page 16]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   Node 78ae56cd with host name jutas detected an intrusion attempt from
   192.0.2.107.  The event detected was an invalid password in an ssh
   session, and the severity of it is 40 points.  Protection against the
   attacker at 192.0.2.107 was inactive at the time of the detection.
   Note that detection can be still possible with an active protection,
   for example by checking firewall log files.

5.5.7.  Protection Message

   Command:  protect

   Parameters:  <ip address>

   When a suspicious IP address reaches the 100 point limit, it is
   considered an attacker.  The Komondor entity collecting the reports
   belonging to the IP address must initiate a broadcast message in the
   overlay, informing other entities about the possibility of further
   intrusion attempts.  The broadcast is initiated by sending the
   protection message to all its known neighbours.

   Every node receiving a protection message must check if it has
   recently (in one minute) received a protection message regarding the
   same attacker.  If not, it must forward the message to all its known
   neighbours.

   The node collecting reports and initiating the broadcast message must
   also check if the points of the attacker did not decrease below the
   limit of 100 points in ten minutes.  If this is the case, the
   broadcast must be resent.  Therefore the nodes of the overlay are
   periodically informed about possible attackers, in every ten minutes.

   Example: 78ae56cd 57ab9ef1 protect 192.0.2.107

   Node 78ae56cd collected enough reports about events from 192.0.2.107,
   and it is now considered an attacker.

5.5.8.  Announce Message

   Command:  announce

   Parameters:  <nodeID> <hostname> { attacker,index }

   Implementing this message is optional, but recommended.  The purpose
   of this is to enable the central logging entity to monitor the state
   of the overlay, and the information that is stored in the hash table.
   Each entity should send an announce message to the logging server
   periodically.  The first parameter of the message is its nodeID as
   hexadecimal digits, and the second one is its name (a string of



Czirkos & Hosszu          Expires March 4, 2008                [Page 17]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   printable, non-whitespace characters).

   Example: 78ae56cd 1731eacb announce 78ae56cd buda 192.0.2.107,45

5.5.9.  Statistics Message

   Command:  stat

   Parameters:  <first detection> <last detection> <attacker>
      <detectors> <rules> <max susp> <success>

   This message is sent from a data collector entity to the central
   logging server, when the reports of the attack become outdated.  It
   is not mandatory, but recommended behaviour, as the statistics
   provide useful information about attackers and the usefulness of the
   entire overlay.

   Parameters of this message are:

   First detection:  the time of the first detection in Unix time format
      (seconds since 1970-01-01 00:00:00 UTC), expressed as a decimal
      number.

   Last detection:  the time of the last event detected, in Unix time
      format.

   Attacker:  the IP address of the attacker, in dot notation
      (192.0.2.107).

   Detectors:  a comma separated list of names of hosts which detected
      this attacker.

   Rules:  a comma separated list of types of attacks, which were
      detected from this attacker.

   Importance:  the maximum event importance index which was calculated.

   Success:  a 0 or 1 value indicating if the protection was successful,
      that is, an event was detected when the protection was already
      active.  For example, the node detected further activity from the
      attacker by examining the firewall log files.

   Example: 78ae56cd 1731eacb stat 1183394505 1183475323 192.0.2.107
   nemere,buda sshd_invalid_password,sshd_unknown_user 290 1 Node
   78ae56cd sends statistics about attacker at 192.0.2.107.  The first
   event was detected at 1183394505, and the last one at 1183475323.
   Nodes with host name nemere and buda were the ones who detected this
   attacker, and the types of the events were invalid passwords and



Czirkos & Hosszu          Expires March 4, 2008                [Page 18]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   unknown user names sent to the ssh service.  The maximum importance
   points of the attack at the full interval was 290.  The protection
   was successful against the attacker for at least one of the detector
   hosts: it was already aware of this attacker when it detected some
   activity from it.














































Czirkos & Hosszu          Expires March 4, 2008                [Page 19]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


6.  Configuration Parameters of the Komondor System

6.1.  Replication Factor

   The replication factor is defined in Section 2.2, and is referred to
   as k, the size of k-buckets in the Kademlia overlay.

   It has two important effects on the workings of the overlay.  As the
   size of the k-buckets, it determines the number of nodes a specific
   node is aware of, in every subtree of the overlay.  The number must
   be high enough to maintain the stability of the overlay, as nodes
   under attack can even disappear from the network.

   It also determines, who many nodes an attack message is to be sent
   to, that is to say, reports of intrusion attempts detected are
   replicated at different nodes of the overlay.  Increasing replication
   increases network traffic, but makes the overlay and detection more
   reliable.  A recommended value is between 3 and 5 for smaller
   networks.  The original Kademlia paper chooses 20, which should be
   enough for an overlay with tens of thousands of nodes [1].

6.2.  Intrusion Detection and Protection

   Currently, Komondor implementations are encouraged to use their own
   ways of intrusion detection and protection.  This is unlikely to
   change in the future, as it would limit the portability of the
   system, and collaboration of Komondor nodes running on different
   platforms.

   This is why the names of attack types in the attack messages serve
   informational and statistical purposes only (see Section 5.5.9 and
   Section 5.5.6.)  The parameters having direct effect on the workings
   of an overlay are the event importance indexes in messages.  As
   different platforms have different vulnerabilities, this is not
   operating system independent, either.  Implementations are currently
   advised to set the importance indexes assigned to different events
   reasonably.  A suspicious IP address collecting 100 points is
   considered an attacker by Komondor entities.  Therefore, a failed
   login should be assigned 40 points for example, allowing for two
   mistyped passwords before the protection mechanisms would become
   active at the third failed attempt.

6.3.  Timing of Intrusion Detection

   Reports of intrusion attempts detected are sent to Komondor entities
   chosen using their nodeID's.  Received reports are collected, and the
   importance is calculated.  Importance points should decrease
   linearly, according to the formula described in Section 3.2.  The



Czirkos & Hosszu          Expires March 4, 2008                [Page 20]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


   time the importance of each report decreases to zero is also a
   configuration parameter of the detection.  Increasing this interval
   increases the sensitivity of intrusion detection, but also increases
   the possibility of false alarms.

6.4.  Protection Methods

   Possible methods for protection are platform-dependent.  The current
   protocol specification enables Komondor implementations to exchange
   information about IP addresses belonging to possible attackers.  One
   possible way of protection against them is using the firewall of the
   host running the Komondor entity.  However, implementations are free
   to use any other method.

   Suspicious IP addresses, which collect 100 points, are treated as
   attackers.  If a Komondor entity collected enough intrusion attempt
   reports about an attacker, and the sum of the indexes reach the 100
   point limit, the entity is required to broadcast a protection message
   using the overlay, as described in Section 5.5.7.  This message
   should be resent every 10 minutes, until the collected points drop
   below the limit.

6.5.  Overview of Configuration Parameters

   The following table gives an overview of configuration parameters
   used in a Komondor overlay.  It also shows their recommended values.

       Replication factor (k)         3
       Protection limit               100
       Protection message resend      10 minutes
       Attack report lifetime         20 minutes
       Interval to remember           1 minute
         seen messageID's
       Interval between detected      10 seconds
         events which can be sent
         in one message

   The first four parameters directly affect the behavior of the overlay
   and the intrusion detection.  The recommended practice is to have
   these parameters be adjustable through a configuration file.











Czirkos & Hosszu          Expires March 4, 2008                [Page 21]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


7.  Security Considerations

   The current version of the Komondor protocol does not describe
   authentication among nodes.

   A misbehaving Komondor node does not cause a possibility of
   information leak for the hosts of the overlay.  It may, however,
   present false attack reports.  This might cause denial of service to
   the IP addresses which are reported as attackers.

   Another harm a misbehaving Komondor node can do is that is simply
   ignores attack reports it receives, thereby not alerting other nodes
   about possible dangers.  This problem can be solved by using
   replication.





































Czirkos & Hosszu          Expires March 4, 2008                [Page 22]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


8.  Implementation Details

   This section contains useful information which can be used when
   implementing the Komondor system.

8.1.  Communication over UDP

   The current implementation of the Komondor system identifies nodes by
   their IP address:port numbers and nodeID's.  Nodes are required to
   use the same port number with their outgoing messages, as the port
   number they are receiving UDP packets at.  That is to say, a node
   which is reachable at UDP address 192.0.2.99:2001, must send its
   messages with source address 192.0.2.99:2001.  This can easily be
   implemented by using the same socket and file descriptor for sending
   and receiving packets, on any operating system using the BSD sockets
   interface.

8.2.  Kademlia Binary Tree

   As described in Section 2.2, the Kademlia overlay organizes nodes to
   a binary tree.  This is not a real topology, but rather a reasonable
   way for each node to store information about other nodes it is aware
   of.

   Every node is required to have detailed knowledge about its
   surroundings in the DHT address space.  More specifically, every node
   maintains a list of other nodes for every successively smaller
   subtree of the overlay, which it does not reside in.  The size of
   these lists, the k-buckets, is fixed, and it is referred to as k.  As
   it is described in the original paper [1], the most reasonable way to
   implement this is using a binary tree of lists for storing connection
   data.  The program starts off with one single list, and as it gains
   knowledge about other nodes, the single list is split into multiple
   lists, arranged in the binary tree.

   Kademlia advises the k-buckets to be sorted by the time the nodes
   were last seen.  This is unnecessary for Komondor, when implementing
   an intrusion detection system over the DHT.

8.3.  Usage of the Overlay

   The Komondor overlay is best used on a local area network, as it is
   unlikely for the same intruder to attack hosts at different
   locations, due to the big number of Internet addresses.







Czirkos & Hosszu          Expires March 4, 2008                [Page 23]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


9.  References

   [1]  Maymounkov, P. and D. Mazieres, "Kademlia: A peer-to-peer
        information system based on the xor metric",
        <http://citeseer.ist.psu.edu/maymounkov02kademlia.html>.

   [2]  Czirkos, Z., "Komondor Security System - the home page of a
        sample implementation with dynamic monitoring of the overlay",
        <http://jutas.eet.bme.hu>.

   [3]  Czirkos, Z., Hosszu, G., and F. Kovacs, "E-Collaboration
        Enhanced Host Security", Encyclopedia of E-Collaboration, edited
        by Ned Kock, Information Science Reference, Hershey, USA, 2007,
        ISBN: 978-1-59904-000-4.

   [4]  Czirkos, Z. and G. Hosszu, "Peer-to-Peer Methods for Operating
        System Security", Encyclopedia of Networked and Virtual
        Organizations, edited by Goran D. Putnik and Maria Manuela
        Cunha, Information Science Reference, Hershey, USA, 2007, ISBN:
        978-1-59904-885-7.































Czirkos & Hosszu          Expires March 4, 2008                [Page 24]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


Authors' Addresses

   Zoltan Czirkos
   BME EET
   Goldmann Gy. ter 3.
   Budapest  H-1111
   Hungary

   Phone: +36 1 463 4034
   Email: czirkos@nimrud.eet.bme.hu


   Gabor Hosszu
   BME EET
   Goldmann Gy. ter 3.
   Budapest  H-1111
   Hungary

   Phone: +36 1 463 2724
   Email: hosszu@nimrud.eet.bme.hu































Czirkos & Hosszu          Expires March 4, 2008                [Page 25]

Internet-Draft  The Komondor Peer to Peer Security System      Sept 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Czirkos & Hosszu          Expires March 4, 2008                [Page 26]