One document matched: draft-ietf-syslog-transport-tls-13.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc5280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY SYSLOG-PROTO SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-syslog-protocol.xml">
<!ENTITY ietf-syslog-sign SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-syslog-sign.xml">
<!ENTITY ietf-tls-rfc4346-bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-tls-rfc4346-bis.xml">
<!ENTITY rfc3766 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3766.xml">
<!ENTITY rfc5234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY rfc4346 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4346.xml">
<!ENTITY __reference.RFC.2818__eyo4wecx SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml">
<!ENTITY __reference.RFC.4033__eyo4xhtj SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4033.xml">
]>
<!-- may be omitted for very short documents -->
<?rfc toc="yes"?>
<?rfc sortrefs="no"?>
<?rfc symrefs="yes"?>
<!-- these two save paper: start new sections from the same page etc. -->
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<!-- other categories: bcp, exp, historic, std -->
<rfc category="std" docName="draft-ietf-syslog-transport-tls-13.txt"
     ipr="full3978">
  <front>
    <title>TLS Transport Mapping for Syslog</title>

   

    <author fullname="Fuyou Miao" initials="F." surname="Miao" role="editor">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>No. 3, Xinxi Rd</street>

          <street>Shangdi Information Industry Base</street>

          <city>Haidian District</city>

          <region>Beijing</region>

          <code>100085</code>

          <country>P. R. China</country>
        </postal>

        <phone>+86 10 8288 2008</phone>

        <email>miaofy@huawei.com</email>

        <uri>www.huawei.com</uri>
      </address>
    </author>

    <author fullname="Yuzhi Ma" initials="Y." surname="Ma" role="editor">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>No. 3, Xinxi Rd</street>

          <street>Shangdi Information Industry Base</street>

          <city>Haidian District</city>

          <region>Beijing</region>

          <code>100085</code>

          <country>P. R. China</country>
        </postal>

        <phone>+86 10 8288 2008</phone>

        <email>myz@huawei.com</email>

        <uri>www.huawei.com</uri>
      </address>
    </author>

     <author fullname="Joseph Salowey" initials="J" surname="Salowey" role="editor">
      <organization> Cisco Systems, Inc. </organization>
      <address>
	<postal>
	  <street>2901 3rd. Ave</street>
	  <city>Seattle</city>
	  <code>98121</code>
	  <region>WA</region>
	  <country>USA</country>
	</postal>
	<email> jsalowey@cisco.com </email>
      </address>
    </author>

    <date  month="June" year="2008" />

    <area>Security</area>

    <workgroup>Syslog Working Group</workgroup>

    <keyword>RFC</keyword>

    <keyword>Request for Comments</keyword>

    <keyword>Syslog TLS Transport Security</keyword>

    <keyword>Internet-Draft</keyword>

    <keyword>XML</keyword>

    <keyword>Extensible Markup Language</keyword>

    <abstract>
      <t>This document describes the use of Transport Layer Security (TLS) to
      provide a secure connection for the transport of syslog messages. This
      document describes the security threats to syslog and how TLS can be
      used to counter such threats.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document describes the use of Transport Layer Security (<xref
      target="I-D.ietf-tls-rfc4346-bis">TLS</xref>) to provide a secure connection for the
      transport of <xref target="I-D.ietf-syslog-protocol">syslog</xref>
      messages. This document describes the security threats to syslog and how
      TLS can be used to counter such threats.</t>

      <section title="Terminology">
        <t>The following definitions are used in this document: <list
            style="symbols">
            <t>An "originator" generates syslog content to be carried in a
            message.</t>

            <t>A "collector" gathers syslog content for further analysis.</t>

            <t>A "relay" forwards messages, accepting messages from
            originators or other relays, and sending them to collectors or
            other relays.</t>

            <t>A "transport sender" passes syslog messages to a specific
            transport protocol.</t>

            <t>A "transport receiver" takes syslog messages from a specific
            transport protocol.</t>

            <t>A "TLS client" is an application that can initiate a TLS
            connection by sending a Client Hello to a peer.</t>

            <t>A "TLS server" is an application that can receive a Client
            Hello from a peer and reply with a Server Hello.</t>
          </list></t>

        <t>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 <xref
        target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section title="Security Requirements for Syslog" anchor="reqs">
      <t>Syslog messages may transit several hops to arrive at the intended
      collector. Some intermediary networks may not be trusted by the
      originator, relay, or receiver because the network is in a
      different security domain or at a different security level from the
      originator, relay, or collector. Another security concern is that the
      originator, relay, or receiver itself is in an insecure network.</t>

      <t>There are several threats to be addressed for syslog security. The
      primary threats are: <list style="symbols">
          <t>Masquerade. An unauthorized transport sender may send messages to
          a legitimate transport receiver, or an unauthorized transport
          receiver tries to deceive a legitimate transport sender into sending
          syslog messages to it.</t>

          <t>Modification. An attacker between the transport sender and the
          transport receiver may modify an in-transit syslog message and then
          forward the message to the transport receiver. Such modification may
          make the transport receiver misunderstand the message or cause it to
          behave in undesirable ways.</t>

          <t>Disclosure. An unauthorized entity may examine the contents of
          the syslog messages, gaining unauthorized access to the information.
          Some data in syslog messages is sensitive and may be useful to an
          attacker, such as the password of an authorized administrator or
          user.</t>
        </list></t>

      <t>The secondary threat is: <list style="symbols">
          <t>Message stream modification. An attacker may delete one or more
          syslog message from a series of messages, replay a message, or alter
          the delivery sequence. The syslog protocol itself is not based on
          message order, but an event in a syslog message may relate
          semantically to events in other messages, so message ordering may be
          important to understanding a sequence of events.</t>
        </list></t>

      <t>The following threats are deemed to be of lesser importance for
      syslog, and are not addressed in this document: <list style="symbols">
          <t>Denial of Service</t>

          <t>Traffic Analysis</t>
        </list></t>
    </section>

    <section title="Using TLS to Secure Syslog">
      <t>TLS can be used as a secure transport to counter all the primary
      threats to syslog described above: <list style="symbols">
          <t>Confidentiality to counter disclosure of the message
          contents;</t>

          <t>Integrity checking to counter modifications to a message on a
          hop-by-hop basis;</t>

          <t>Server or mutual authentication to counter masquerade.</t>
        </list>Note: This secure transport (i.e., TLS) only secures syslog
   transport in a hop-by-hop manner, and is not concerned with the
   contents of syslog messages.  In particular, the authenticated
   identity of the transport sender (e.g., subject name in the 
   certificate) is not necessarily related to the HOSTNAME field 
   of the syslog message. When authentication of syslog
   message origin is required, <xref target="I-D.ietf-syslog-sign" /> can be used.</t>
    </section>

    <section title="Protocol Elements">
      <section title="Port Assignment">
        <t>A syslog transport sender is always a TLS client and a transport
        receiver is always a TLS server.</t>

        <t>The TCP port NNN has been allocated as the default port for syslog
        over TLS, as defined in this document.</t>

        <t>Note to RFC Editor: please replace NNN with the IANA-assigned
        value, and remove this note.</t>
      </section>

      <section title="Initiation">
        <t>The transport sender should initiate a connection to the transport
        receiver and then send the TLS Client Hello to begin the TLS
        handshake. When the TLS handshake has finished the transport sender
        MAY then send the first syslog message.</t>

        <t>TLS typically uses <xref target="RFC5280">certificates</xref> to authenticate
        peers.  Implementations MUST support
  <xref target="I-D.ietf-tls-rfc4346-bis">TLS 1.2</xref> and are REQUIRED to support the mandatory to implement cipher suite, which is TLS_RSA_WITH_AES_128_CBC_SHA. This document is assumed to apply to future versions of TLS, in which case the mandatory to implement cipher suite for the implemented version MUST be supported.</t>

        <section title="Certificate-Based Authentication" anchor="certauth">

<t>Both syslog transport sender (TLS Client) and syslog transport receiver (TLS server) MUST implement certificate-based authentication. This consists of validating the certificate and verifying that the peer has the corresponding private key. The latter part is performed by TLS. To ensure interoperability between clients and servers, the following methods for certificate validation SHALL be implemented:</t>
<list style="symbols">
<t>Certification path validation: The TLS peer is configured with one
   or more trust anchors (typically root CA certificates), 
   which allow it to verify a binding between
   the subject name and the public key. Additional policy controls
   needed for authorizing the syslog transport sender and receiver
   (i.e., verifying that the subject name represents an authorized
   party) are described in <xref target="secpol" />. Certificate path 
   validation is performed as defined in 
   <xref target="RFC5280" />.  This method is 
   useful where there is a PKI deployment.</t>
<t>End-entity certificate matching: The transport sender or receiver
   is configured with information necessary to identify the valid end-entity
   certificates of its authorized peers. The end-entity certificates
   can be self-signed, and no certification path validation is needed.
   Implementations MUST support certificate fingerprints in <xref target="finger" /> 
   and MAY allow other formats for end-entity certificates such as a DER 
   encoded certificate.  This method provides an alternative to a PKI 
   that is simple to deploy and still maintains a reasonable level of security. </t>

</list>
<t>Both transport receiver and transport sender implementations MUST provide a means to generate a key pair and self-signed certificate in the case that a key pair and certificate are not available through another mechanism.</t>
<t> The transport receiver and transport sender SHOULD provide mechanisms to record the end-entity certificate for the purpose of correlating it with the sent or received data.</t>

</section>
<section title="Certificate Fingerprints" anchor="finger">

<t>Both client and server implementations MUST make the certificate fingerprints for their certificate available through a management interface.  </t>
          
   <t>The mechanism to generate a fingerprint is to take the hash of the DER-encoded certificate using a cryptographically strong algorithm and convert the result into colon separated, hexadecimal bytes, each represented by 2 uppercase ASCII characters.  When a fingerprint value is displayed or configured the fingerprint is prepended with an ASCII label identifying the hash function followed by a colon.  Implementations MUST support SHA-1 as the hash algorithm and use the ASCII label "SHA1" to identify the SHA-1 algorithm.  The length of a SHA-1 hash is 20 bytes and the length of the corresponding fingerprint string is 64 characters. An example certificate fingerprint is:</t>
<list>
<t>SHA1:E1:2D:53:2B:7C:6B:8A:29:A2:76:C8:64:36:0B:08:4B:7A:F1:9E:9D</t>
</list>
<t>During validation the hash is extracted from the fingerprint and compared against the hash calculated over the received certificate.</t>

</section>

        <section title="Cryptographic Level">
          <t>Syslog applications SHOULD be implemented in a manner that
          permits administrators, as a matter of local policy, to select the
          cryptographic level and authentication options they desire.</t>

          <t>TLS permits the resumption of an earlier TLS session or the use
          of another active session when a new session is requested, in order
          to save the expense of another full TLS handshake. The security
          parameters of the resumed session are reused for the requested
          session. The security parameters SHOULD be checked against the
          security requirement of the requested session to make sure that the
          resumed session provides proper security.</t>
        </section>
      </section>

      <section title="Sending data">
        <t>All syslog messages MUST be sent as TLS "application data". It is
        possible that multiple syslog messages be contained in one TLS record,
        or that a syslog message be transferred in multiple TLS records. The
        application data is defined with the following <xref
        target="RFC5234">ABNF</xref> expression:</t>

        <t>APPLICATION-DATA = 1*SYSLOG-FRAME</t>

        <t>SYSLOG-FRAME = MSG-LEN SP SYSLOG-MSG</t>

        <t>MSG-LEN = NONZERO-DIGIT *DIGIT</t>

        <t>SP = %d32</t>

        <t>NONZERO-DIGIT = %d49-57</t>

        <t>DIGIT = %d48 / NONZERO-DIGIT</t>

        <t>SYSLOG-MSG is defined in <xref
        target="I-D.ietf-syslog-protocol">syslog</xref> protocol.</t>

        <section title="Message Length">
          <t>The message length is the octet count of the SYSLOG-MSG in the
          SYSLOG-FRAME. A transport receiver MUST use the message length to
          delimit a syslog message. There is no upper limit for a message
          length per se. However, in order to establish a baseline for
          interoperability, this specification requires that a transport
          receiver MUST be able to process messages with a length up to and
          including 2048 octets. Transport receiver SHOULD be able to process
          messages with lengths up to and including 8192 octets.</t>
        </section>
      </section>

      <section title="Closure">
        <t>A TLS client MUST close the associated TLS connection if the
        connection is not expected to deliver any syslog messages later. It
        MUST send a TLS close_notify alert before closing the connection. A
	client MAY choose to not wait for the server's close_notify alert and
        simply close the connection, thus generating an incomplete close on
        the server side. Once the server gets a close_notify from the client,
        it MUST reply with a close_notify unless it becomes aware that the
        connection has already been closed by the client (e.g., the closure
        was indicated by TCP).</t>

        <t>When no data is received from a connection for a long time (where
        the application decides what "long" means), a server MAY close the
        connection. The server MUST attempt to initiate an exchange of
        close_notify alerts with the client before closing the connection.
        Servers that are unprepared to receive any more data MAY close the
        connection after sending the close_notify alert, thus generating an
        incomplete close on the client side. When the client has received the
        close_notify alert from the server and still has pending data to send,
        it SHOULD send the pending data before sending the close_notify
        alert.</t>
      </section>
    </section>
    <section title="Security Policies" anchor="secpol">
      <t>Different environments have different security requirements and therefore would deploy different security policies.  This section discusses some of the security policies that may be implemented by syslog transport receivers and syslog transport senders.  The security policies describe the requirements for authentication and authorization.  The list of policies in this section is not exhaustive and other policies MAY be implemented.  </t>
<t>If the peer does not meet the requirements of the security policy, the TLS handshake SHOULD be aborted with an appropriate TLS alert.</t> 
<section title="End-Entity Certificate Based Authorization" anchor="eeauth" >
<t>In the simplest case, the transport sender and receiver are
   configured with information necessary to identity the valid
   end-entity certificates of its authorized peers.</t>
<t>   Implementations MUST support specifying the authorized peers using
   certificate fingerprints, as described in <xref target="certauth" /> and <xref target="finger" />.</t>
</section>
<section title="Subject Name Authorization" anchor="recpol">
<t>Implementations MUST support specifying the authorized peers using
   locally configured host names, MUST support certification path validation
   [RFC5280] and matching the name with the
   certificate as follows:</t> 

<t>Implementations MUST support matching the locally configured name against a
   SubjectAltName field with a type of dNSName and SHOULD support
   checking the name against the Common Name portion of the Subject
   Distinguished Name.  If more than one identity is present in the
   certificate, a match in any one of the set is considered
   acceptable.  Matching of host names is case-insensitive.  
   Implementations also
   MAY support wildcards in locally configured names to match a range
   of values.  For example, a "*" wildcard character MAY be used as
   the left-most name component.  In this case, *.example.com would
   match a.example.com, foo.example.com, etc., but would not match
   example.com.  Using a wildcard for the entire host name makes it
   possible to deploy trust-root-based authorization where all
   credentials issued by a particular CA trust root are authorized. </t>


<t> Implementations MAY also support matching a locally configured
   identifier against other parts of the certificate, such as the
   SerialNumber portion of the Subject Distinguished Name, or a
   SubjectAltName of type ipAddress. Implementations MAY support other
   checks such as restrictions on the depth of a certificate chain.</t>

</section> 
<section title="Unauthenticated Transport Sender">
<t>
In some environments, the authenticity of syslog data is not important or it is verifiable by other means, so transport receivers may accept data from any transport sender.  To achieve this, the transport receiver can skip transport sender authentication (by not requesting client authentication in TLS, or accepting any certificate).   In this case, the transport receiver is authenticated and authorized, however this policy does not protect against the threat of transport sender masquerade described in <xref target="reqs" />.  The use of this policy is generally NOT RECOMMENDED for this reason. </t>
</section>
<section title="Unauthenticated Transport Receiver">
<t>In some environments the confidentiality of syslog data is not important so messages are sent to any transport receiver.  To achieve this, the transport sender can skip transport receiver authentication (by accepting any certificate).   While this policy does authenticate and authorize the transport sender, it does not protect against the threat of transport receiver masquerade described in <xref target="reqs" />, leaving the data sent vulnerable to disclosure and modification.  The use of this policy is generally NOT RECOMMENDED for this reason.</t>
</section>
<section title="Unauthenticated Transport Receiver and Sender">
<t>In environments where security is not a concern at all, both the transport receiver and transport sender can skip authentication (as described in Sections 5.2 and 5.3).  This policy does not protect against any of the threats described in <xref target="reqs" /> and is therefore NOT RECOMMENDED.</t>
</section>
</section>

    <section title="Security Considerations">
<t>This section describes security considerations in addition to those in <xref target="I-D.ietf-tls-rfc4346-bis" />. </t>

      <section title="Authentication and Authorization Policies">
<t>
<xref target="secpol" /> discusses various security policies that may be deployed.  The threats in <xref target="reqs" /> are mitigated only if both the transport sender and transport receiver are properly authenticated and authorized, as described in <xref target="eeauth" /> and <xref target="recpol" />.  These are the RECOMMENDED configurations for a default policy.</t>  
<t>
If the transport receiver does not authenticate the transport sender it may accept data from an attacker.  Unless it has another way of authenticating the source of the data, the data should not be trusted.  This is especially important if the syslog data is going to be used to detect and react to security incidents.  The transport receiver may also increase its vulnerability to denial of service, resource consumption and other attacks if it does not authenticate the transport sender.  Because of the increased vulnerability to attack, this type of configuration is NOT RECOMMENDED. </t>
<t>
If the transport sender does not authenticate the syslog transport receiver then it may send data to an attacker.  This may disclose sensitive data within the log information that is useful to an attacker resulting in further compromises within the system.  If a transport sender is operated in this mode, the data sent SHOULD be limited to data that is not valuable to an attacker.  In practice this is very difficult to achieve, so this type of configuration is NOT RECOMMENDED.</t>
<t>
Forgoing authentication and authorization on both sides allows for man-in-the-middle, masquerade and other types of attacks that can completely compromise integrity and confidentiality of the data.  This type of configuration is NOT RECOMMENDED.</t>
      </section>
<section title="Name Validation">
<t>The subject name authorization policy authorizes the subject in the certificate against a locally configured name.  It is generally not appropriate to obtain this name through some other means such as DNS lookup since this introduces additional security vulnerabilities. </t>
</section> 

      <section title="Reliability">
<t>  It should be noted that the syslog transport specified in this
  document does not use application-layer acknowledgments.  TCP uses
  retransmissions to provide protection against some forms of data
  loss. However, if the TCP connection (or TLS session) is broken for
  some reason (or closed by the transport receiver), the syslog
  transport sender cannot always know what messages were successfully
  delivered to the syslog application at the other end. </t>
      </section>
    </section>

    <section title="IANA Considerations">
      <section title="Port Number">
        <t>IANA is requested to assign a TCP port number in the range 1..1023
        in the http://www.iana.org/assignments/port-numbers registry which
        will be the default port for syslog over TLS, as defined in this
        document.</t>
      </section>
    </section>

    <section title="Acknowledgments">
      <t>Authors appreciate Eric Rescorla, Rainer Gerhards, Tom Petch, Anton
      Okmianski, Balazs Scheidler, Bert Wijnen, Martin Scheutte, Chris Lonvick 
      and members of the syslog working group for their
      effort on issues resolving discussion. Authors would also like to
      appreciate Balazs Scheidler, Tom Petch and other persons for their input
      on security threats of syslog. The authors would like to acknowledge
      David Harrington for his detailed reviews of the content and grammar of
      the document and Pasi Eronen for his contributions to certificate 
      authentication and authorization sections.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &rfc2119;

      &SYSLOG-PROTO;

      &rfc5280;

     

      &rfc5234;

      &ietf-tls-rfc4346-bis;
    </references>

    <references title="Informative References">
      &ietf-syslog-sign;
    </references>
    <section title="Changes from -12">
      <t>Please remove in published RFC.</t>
    <list>
      <t>Section 3: Expanded note to include reference to Syslog Sign.</t>
      <t>Section 4.2: Included mandatory to implement ciphersuites that track future versions of the TLS</t>
      <t>Section 4.2.1: Revised to certificate based authentication mechanisms. authorization policy is covered in section 5.</t>
      <t>Section 4.2.2: added to describe fingerprint format</t>
      <t>Section 5: new security policies section </t>
      <t>Security Considerations: added reference to TLS security considerations, removed cipher suite section which was redundant with TLS</t>
      <t>Added redundancy and name validation to security considerations section</t>
    </list>
    </section>
  </back>
</rfc>

PAFTECH AB 2003-20262026-04-23 16:29:57