README.krb5
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:6k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. This version of net-snmp supports an experimental SNMPv3 security model
  2. using Kerberos 5 for authentication.  The protocol is described in an
  3. up-and-coming IETF Internet-Draft.
  4. This document describes a brief overview of the Kerberos Security Model
  5. and how to use it.
  6. DESCRIPTION:
  7. The Kerberos Security Model does not use USM; it is completely seperate
  8. and is not tied to USM in any way.  It works by placing the following
  9. ASN.1 sequence inside of the SNMPv3 msgSecurityParameters:
  10. ksmSecurityParameters ::= SEQUENCE {
  11. -- The Kerberos 5 checksum type used to checksum this message
  12.     ksmChecksumType INTEGER(0..2147483647),
  13. -- The actual keyed checksum data returned by Kerberos
  14.     ksmChecksum OCTET STRING,
  15. -- The Kerberos 5 message (either an AP_REQ or AP_REP)
  16.     ksmKerberosMsg OCTET STRING,
  17. -- The cached ticket identifier
  18.     ksmCachedTicket INTEGER(0..2147483647)
  19. }
  20. Note that the whole SEQUENCE is BER encoded as an OCTET STRING.
  21. ksmChecksumType is an integer which corresponded to the checksum algorithm
  22. used to secure this message as defined by Kerberos (see section 8.3 of
  23. RFC1510).
  24. ksmChecksum is the output of the checksum algoritm defined by ksmChecksumtype
  25. (with all NULs in the space for the checksum).
  26. ksmKerberosMsg is a Kerberos 5 AP_REQ or AP_REP message, depending on
  27. whether or not it is a request or a response (AP_REQ for requests, AP_REP
  28. for responses).
  29. ksmCachedTicket is a integer which uniquely identifies a ticked already
  30. cached on the agent to save the overhead of transferring a whole AP_REQ/AP_REP.
  31. If there is no such cached ticket, it is left at zero.
  32. An agent, upon receiving a message using the KSM, will decode the AP_REQ
  33. contained within the security parameters and thus validate the client's
  34. identity.  Using the subkey contained within the AP_REQ, the agent will
  35. validate the checksum (after first clearing the checksum bytes to zero),
  36. and issue a response, encoding the appropriate AP_REP message in the
  37. ksmSecurityParameters.
  38. If the securityLevel of the message is set to AuthPriv, the scopedPdu
  39. payload will be encrypted using the encryption key and algorithm of the
  40. AP_REQ subkey.  Note that in this case, the msgData will be a BER-encoded
  41. OCTET STRING corresponding to the "cipher" element of the EncryptedData
  42. sequence defined in RFC 1510, section 6.1.
  43. Since this security model is experimental, the number assigned to this
  44. security model is taken from the recommendations of RFC 2271, section 5,
  45. which specify enterprise-specific Security Models of the form:
  46. SnmpSecurityModel = enterpriseID * 256 + security model number
  47.  in that enterprise ID;
  48. In the case of KSM this gives us:
  49. SnmpSecurityModel = 8072 * 256 + 0 = 2066432
  50. USAGE:
  51. To actually USE the Kerberos Security Model, do the following:
  52. 0) Install Kerberos
  53.    Let it be stated up front - Installing Kerberos completely "cold", without
  54.    any Kerberos experience at all, can be daunting (to say the least).  If you
  55.    already have a Kerberos infrastructure at your site, then all of the hard
  56.    work has been done.  If you do NOT, but you still want to tackle it,
  57.    you might be interested in the Kerberos FAQ, which can be found at:
  58.    http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html
  59.    Currently the code in net-snmp only supports using MIT Kerberos
  60.    libraries to link against (you should be able to use any kind of Kerberos
  61.    server, however).
  62. 1) Compile net-snmp with Kerberos.
  63.    This assumes that you already have Kerberos libraries in place.
  64.    Configure net-snmp to include the Kerberos Security Model (ksm) and
  65.    use --with-cflags and --with-ldflags to specify the location and names
  66.    of Kerberos header files and libraries.  For example, on my system I
  67.    run:
  68.    ./configure --with-cflags='-I/usr/krb5/include' 
  69.       --with-ldflags='-L/usr/krb5/lib -lkrb5 -lcrypto -lcom_err -R/usr/krb5/lib'
  70.    Note that this is on Solaris, and that -R is required to set the correct
  71.    shared library path.  If you have a newer version of Kerberos, you might
  72.    instead have to use:
  73.    -lkrb5 -lk5crypto -lcom_err
  74.    as the libraries to link against.  If you get errors (for example, you
  75.    get a message that says the compiler isn't working) you can check
  76.    config.log for the output of the compiler.
  77. 2) Configure Kerberos and SNMP
  78.    Currently, net-snmp uses the "host" principal assigned to a host.  This
  79.    may change in the future.  You will want to create host principals of
  80.    the form:
  81.    host/f.q.d.n@YOUR.REALM
  82.    For example:
  83.    host/mydesktop.example.org@EXAMPLE.ORG
  84.    and place the encryption keys for these principals on every machine you
  85.    wish to run a SNMP agent (you place each key on it's corresponding machine).
  86.    Your Kerberos documentation should explain how to do this (in the case
  87.    of MIT Kerberos, you want to look at the "ktadd" command inside of
  88.    kadmin).
  89.    If you have a Kerberos infrastructure, you likely already have these
  90.    principals in place on your systems.
  91.    If you're installing Kerberos for the first time as well, you also
  92.    need to create client principals corresponding to your userid.  See
  93.    your Kerberos documentation.
  94.    On the SNMP _agent_ side, you'll want to place in your snmpd.conf file
  95.    (the one that lives in /usr/local/share/snmp/snmpd.conf, or whereever
  96.    you have configured on your system):
  97.    rwuser -s ksm userid@YOUR.REALM
  98.    to allow the Kerberos principal 'userid@YOUR.REALM' read/write access to
  99.    the MIB tree.
  100. 3) Run the agent and client applications
  101.    Note that before you do any of this, you will have to have valid Kerberos
  102.    credentials (generally acquired with the "kinit" program).
  103.    The agent should run without any additional flags.
  104.    You should run the client apps with the following flags:
  105.    -Y defSecurityModel=ksm
  106.    -v 3
  107.    -u username
  108.    -l authNoPriv
  109.    for example:
  110.    snmpget -v 3 -Y defSecurityModel=ksm -u myname -l authNoPriv testhost 
  111. system.sysDescr.0
  112.    If you wish to encrypt the payload, change the -l argument to "authPriv".
  113.    If you run into problems, you can add the -Dksm flag to both the manager
  114.    applications and the agent to get more detailed Kerberos error messages.
  115.    Note that this setup assumes a working Kerberos infrastructure; if you
  116.    run into problems, check to make sure Kerberos is working for you.