Annotation of embedaddon/mpd/doc/mpd30.html, revision 1.1

1.1     ! misho       1: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
        !             2: <HTML>
        !             3: <HEAD>
        !             4: <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        !             5: <TITLE>RADIUS</TITLE>
        !             6: </HEAD>
        !             7: <BODY text="#000000" bgcolor="#ffffff">
        !             8: 
        !             9: <A HREF="mpd.html"><EM>Mpd 5.6 User Manual</EM></A>
        !            10:  <b>:</b> <A HREF="mpd17.html"><EM>Configuring Mpd</EM></A>
        !            11:  <b>:</b> <A HREF="mpd29.html"><EM>Authentication, Authorization and Accounting (AAA)</EM></A>
        !            12:  <b>:</b> <EM>RADIUS</EM><BR>
        !            13: <b>Previous:</b> <A HREF="mpd29.html"><EM>Authentication, Authorization and Accounting (AAA)</EM></A><BR>
        !            14: <b>Next:</b> <A HREF="mpd31.html"><EM>External authentication</EM></A>
        !            15: 
        !            16: 
        !            17: <HR NOSHADE>
        !            18:   <H2><A NAME="30"></A>4.10.1. RADIUS<A NAME="radius"></A></H2>
        !            19: 
        !            20: <p>This chapter describes RADIUS authentication backend.
        !            21: Mpd supports both user authentication and session accounting using RADIUS.
        !            22: RADIUS-Accounting and RADIUS-Authentication are independant so it is possible
        !            23: to use them in any combination.</p>
        !            24: <p>All authentication methods are supported with RADIUS (PAP, CHAP, MS-CHAPv1,
        !            25: MS-CHAPv2, EAP). Password changing is currently not supported.</p>
        !            26: <p>All of these commands apply to the currently active link.</p>
        !            27: <p>
        !            28: <dl>
        !            29: 
        !            30: <dt><b><code>set radius server <em>name</em> <em>secret</em> [ <em>auth-port</em> [ <em>acct-port</em> ]]</code></b><dd><p>Configure RADIUS server parameters. Multiple RADIUS servers may be configured 
        !            31: by repeating this command, and up to 10 servers may be specified.
        !            32: If one of auth/acct ports specified as 0, it will not be used for requests
        !            33: of that type.</p>
        !            34: 
        !            35: <dt><b><code>set radius timeout <em>seconds</em></code></b><dd><p>Set the timeout for completion of RADIUS requests.</p>
        !            36: <p>The default is 5 second.</p>
        !            37: 
        !            38: <dt><b><code>set radius retries <em>#retries</em></code></b><dd><p>Set the number of retries for RADIUS requests.</p>
        !            39: <p>The default is 3 retries.</p>
        !            40: 
        !            41: <dt><b><code>set radius me <em>IP</em>|<em>ifname</em>|<em>hostname</em></code></b><dd><p>Send the given IP in the RAD_NAS_IP_ADDRESS attribute to the server.</p>
        !            42: 
        !            43: <dt><b><code>set radius v6me <em>IPv6</em></code></b><dd><p>Send the given IP in the RAD_NAS_IPV6_ADDRESS attribute to the server.</p>
        !            44: 
        !            45: <dt><b><code>set radius identifier <em>name</em></code></b><dd><p>Send the given name in the RAD_NAS_IDENTIFIER attribute to the server.
        !            46: If not set the local hostname is used.</p>
        !            47: 
        !            48: <dt><b><code>set radius enable message-authentic</code></b><dd><p>Adds the Message-Authenticator attribute to the RADIUS request. 
        !            49: The Message-Authenticator is an HMAC-MD5 checksum of the entire 
        !            50: Access-Request packet using the shared secret as the key. This 
        !            51: should protect the RADIUS server against online dictionary attacks.
        !            52: This is mandatory when using the EAP-RADIUS-Proxy and it's implicitly 
        !            53: added to the request by Mpd.</p>
        !            54: 
        !            55: <dt><b>RADIUS internals</b><dd>
        !            56: <p>RADIUS attributes supported by mpd:
        !            57: <pre>
        !            58: N   Name                                  Access        Accounting
        !            59:                                Req     Resp    Req     Resp
        !            60: 1   User-Name                  +       +       +       -
        !            61: 2   User-Password              +       -       -       -
        !            62: 3   CHAP-Password              +       -       -       -
        !            63: 4   NAS-IP-Address             +       -       +       -
        !            64: 5   NAS-Port                   +       -       +       -
        !            65: 6   Service-Type               +       -       +       -
        !            66: 7   Framed-Protocol            +       -       +       -
        !            67: 8   Framed-IP-Address          -       +       +       -
        !            68: 9   Framed-IP-Netmask          -       +       +       -
        !            69: 12  Framed-MTU                 -       +       -       -
        !            70: 13  Framed-Compression         -       +       -       -
        !            71: 18  Reply-Message              -       +       -       -
        !            72: 22  Framed-Route               -       +       -       -
        !            73: 24  State                      +       +       +       -
        !            74: 25  Class                      -       +       +       -
        !            75: 27  Session-Timeout            -       +       -       -
        !            76: 28  Idle-Timeout               -       +       -       -
        !            77: 30  Called-Station-Id          +       -       +       -
        !            78: 31  Calling-Station-Id         +       -       +       -
        !            79: 32  NAS-Identifier             +       -       +       -
        !            80: 40  Acct-Status-Type           -       -       +       -
        !            81: 42  Acct-Input-Octets          -       -       +       -
        !            82: 43  Acct-Output-Octets         -       -       +       -
        !            83: 44  Acct-Session-Id            +       -       +       -
        !            84: 45  Acct-Authentic             -       -       +       -
        !            85: 46  Acct-Session-Time          -       -       +       -
        !            86: 47  Acct-Input-Packets         -       -       +       -
        !            87: 48  Acct-Output-Packets                -       -       +       -
        !            88: 49  Acct-Terminate-Cause       -       -       +       -
        !            89: 50  Acct-Multi-Session-Id      -       -       +       -
        !            90: 51  Acct-Link-Count            -       -       +       -
        !            91: 52  Acct-Input-Gigawords       -       -       +       -
        !            92: 53  Acct-Output-Gigawords      -       -       +       -
        !            93: 60  CHAP-Challenge             +       -       -       -
        !            94: 61  NAS-Port-Type              +       -       +       -
        !            95: 64  Tunnel-Type                        +       -       +       -
        !            96: 65  Tunnel-Medium-Type         +       -       +       -
        !            97: 66  Tunnel-Client-Endpoint     +       -       +       -
        !            98: 67  Tunnel-Server-Endpoint     +       -       +       -
        !            99: 85  Acct-Interim-Interval      -       +       -       -
        !           100: 87  NAS-Port-Id                        +       -       +       -
        !           101: 88  Framed-Pool                        -       +       -       -
        !           102: 90  Tunnel-Client-Auth-ID      +       -       +       -
        !           103: 91  Tunnel-Server-Auth-ID      +       -       +       -
        !           104: 95  NAS-IPv6-Address           +       -       +       -
        !           105: 99  Framed-IPv6-Route          -       +       -       -
        !           106: 
        !           107:     Microsoft VSA (311)
        !           108: 1   MS-CHAP-Response           +       -       -       -
        !           109: 2   MS-CHAP-Error              -       +       -       -
        !           110: 7   MS-MPPE-Encryption-Policy  -       +       -       -
        !           111: 8   MS-MPPE-Encryption-Types   -       +       -       -
        !           112: 10  MS-CHAP-Domain             -       +       -       -
        !           113: 11  MS-CHAP-Challenge          +       -       -       -
        !           114: 12  MS-CHAP-MPPE-Keys          -       +       -       -
        !           115: 16  MS-MPPE-Send-Key           -       +       -       -
        !           116: 17  MS-MPPE-Recv-Key           -       +       -       -
        !           117: 25  MS-CHAP2-Response          +       -       -       -
        !           118: 26  MS-CHAP2-Success           -       +       -       -
        !           119: 28  MS-Primary-DNS-Server      -       +       -       -
        !           120: 29  MS-Secondary-DNS-Server    -       +       -       -
        !           121: 30  MS-Primary-NBNS-Server     -       +       -       -
        !           122: 31  MS-Secondary-NBNS-Server   -       +       -       -
        !           123: 
        !           124:     DSL Forum VSA (3561)
        !           125: 1   ADSL-Agent-Circuit-Id      +       -       +       -
        !           126: 2   ADSL-Agent-Remote-Id       +       -       +       -
        !           127: 
        !           128:     mpd VSA (12341)
        !           129: 1   mpd-rule                   -       +       -       -
        !           130: 2   mpd-pipe                   -       +       -       -
        !           131: 3   mpd-queue                  -       +       -       -
        !           132: 4   mpd-table                  -       +       -       -
        !           133: 5   mpd-table-static           -       +       -       -
        !           134: 6   mpd-filter                 -       +       -       -
        !           135: 7   mpd-limit                  -       +       -       -
        !           136: 8   mpd-input-octets           -       -       +       -
        !           137: 9   mpd-input-packets          -       -       +       -
        !           138: 10  mpd-output-octets          -       -       +       -
        !           139: 11  mpd-output-packets         -       -       +       -
        !           140: 12  mpd-link                   +       -       +       -
        !           141: 13  mpd-bundle                 -       -       +       -
        !           142: 14  mpd-iface                  -       -       +       -
        !           143: 15  mpd-iface-index            -       -       +       -
        !           144: 16  mpd-input-acct             -       +       -       -
        !           145: 17  mpd-output-acct            -       +       -       -
        !           146: 18  mpd-action                 -       +       -       -
        !           147: 19  mpd-peer-ident             +       -       +       -
        !           148: 20  mpd-iface-name             -       +       -       -
        !           149: 21  mpd-iface-descr            -       +       -       -
        !           150: 22  mpd-iface-group            -       +       -       -
        !           151: 154 mpd-drop-user              -       -       -       +
        !           152: </pre>
        !           153: </p>
        !           154: <p>To use mpd VSA you should add such dictionary to your RADIUS server:
        !           155: <pre>
        !           156: #----------------------------------------------------------
        !           157: # dictionary.mpd                                                                                   
        !           158:                                                                                                    
        !           159: VENDOR          mpd             12341                                                              
        !           160:                                                                                                    
        !           161: BEGIN-VENDOR   mpd
        !           162: 
        !           163: ATTRIBUTE      mpd-rule        1       string
        !           164: ATTRIBUTE      mpd-pipe        2       string
        !           165: ATTRIBUTE      mpd-queue       3       string
        !           166: ATTRIBUTE      mpd-table       4       string
        !           167: ATTRIBUTE      mpd-table-static        5       string
        !           168: ATTRIBUTE      mpd-filter      6       string
        !           169: ATTRIBUTE      mpd-limit       7       string
        !           170: ATTRIBUTE      mpd-input-octets        8       string
        !           171: ATTRIBUTE      mpd-input-packets       9       string
        !           172: ATTRIBUTE      mpd-output-octets       10      string
        !           173: ATTRIBUTE      mpd-output-packets      11      string
        !           174: ATTRIBUTE      mpd-link        12      string
        !           175: ATTRIBUTE      mpd-bundle      13      string
        !           176: ATTRIBUTE      mpd-iface       14      string
        !           177: ATTRIBUTE      mpd-iface-index 15      integer
        !           178: ATTRIBUTE      mpd-input-acct  16      string
        !           179: ATTRIBUTE      mpd-output-acct 17      string
        !           180: ATTRIBUTE      mpd-action      18      string
        !           181: ATTRIBUTE      mpd-peer-ident  19      string
        !           182: ATTRIBUTE      mpd-iface-name  20      string
        !           183: ATTRIBUTE      mpd-iface-descr 21      string
        !           184: ATTRIBUTE      mpd-iface-group 22      string
        !           185: ATTRIBUTE      mpd-drop-user   154     integer
        !           186: 
        !           187: END-VENDOR     mpd
        !           188: #----------------------------------------------------------
        !           189: </pre>
        !           190: </p>
        !           191: <p>Mpd allows RADIUS server to terminate user session by setting vendor specific
        !           192: mpd-drop-user attribute to nonzero value in accounting start/update reply packet.</p>
        !           193: 
        !           194: <dt><b>RADIUS ACL's</b><dd>
        !           195: <p>Mpd can use the Access Control Lists (ACLs) given by the RADIUS server.
        !           196: This ACLs may include ipfw rules, pipes, queues and tables and also mpd
        !           197: internal traffic filtering/shaping/limiting features. That two sets are 
        !           198: redundant. ipfw proposed as standard and universal solution, while internal
        !           199: filter/shaper/limiter based on ng_bpf+ng_car expected to work faster with
        !           200: big number of active links.</p>
        !           201: 
        !           202: <dt><b>ipfw</b><dd>
        !           203: <p>You can write in your RADIUS configuration something like:
        !           204: <pre>
        !           205: mpd-table += "1=10.0.0.1",
        !           206: mpd-table += "1=10.0.0.15",
        !           207: mpd-pipe += "1=bw 10Kbyte/s",
        !           208: mpd-pipe += "5=bw 20Kbyte/s",
        !           209: mpd-rule += "1=pipe %p1 all from any to table\\(%t1\\) in",
        !           210: mpd-rule += "2=pipe %p5 all from table\\(%t1\\) to any out",
        !           211: mpd-rule += "100=allow all from any to any",
        !           212: </pre>
        !           213: </p>
        !           214: <p>When mpd receives these parameters it will call ipfw(8) to create
        !           215: firewall rules, pipes and queues with unique numbers starting from 10000
        !           216: (configurable via 'set global start...'). %rX, %pX, %qX, %tX
        !           217: macroses will be expanded within mpd-rule and mpd-queue.
        !           218: To the end of each rule will be added "via ngX" to make the rule apply
        !           219: only to that client's networking interface.</p>
        !           220: <p>As a result of this example we would get these commands executed:
        !           221: <pre>
        !           222: ipfw table 32 add 10.0.0.1
        !           223: ipfw table 32 add 10.0.0.15
        !           224: ipfw pipe 10000 config bw 10Kbyte/s
        !           225: ipfw pipe 10001 config bw 20Kbyte/s
        !           226: ipfw add 10000 pipe 10000 all from any to table\(32\) in via ng0
        !           227: ipfw add 10001 pipe 10001 all from table\(32\) to any out via ng0
        !           228: ipfw add 10002 allow all from any to any via ng0
        !           229: </pre>
        !           230: 
        !           231: When the link goes down, all created rules will be removed.</p>
        !           232: <p>Note: As soon as mpd executes ipfw commands using shell, shell's
        !           233: special characters like "(" and ")" must be slashed.</p>
        !           234: 
        !           235: <dt><b>internal (ng_bpf/ng_car)</b><dd>
        !           236: <p>Mpd can create complex per-interface traffic filtering/limiting engines inside
        !           237: netgraph when it is requested by mpd-filter and mpd-limit RADIUS attributes.</p>
        !           238: <p>mpd-filter attribute is a packet filter declaration for using in mpd-limit.
        !           239: mpd-filter consists of two main parts: match/nomatch verdict and the condition.
        !           240: tcpdump (libpcap) expression syntax used for conditions.</p>
        !           241: <p>mpd-filter: <em>match</em>|<em>nomatch</em> <em>{condition}</em></p>
        !           242: <p>mpd-limit attribute is an action which should be done for packet. It consists
        !           243: of two main parts: filter and action. </p>
        !           244: <p>mpd-limit: <em>{filter}</em> <em>{action}</em></p>
        !           245: <p>Filter can be or "all" (any packet) or "fltX"
        !           246: (packets matching to specified mpd-filter).</p>
        !           247: <p>filter: <em>any</em>|<em>fltX</em></p>
        !           248: <p>Action can be: "" (do nothing, just account),
        !           249: "pass" (stop processing and pass packet), 
        !           250: "deny" (stop processing and drop packet), 
        !           251: "rate-limit" (do Cisco-like rate-limit), 
        !           252: "shape" (do simple RED aware traffic shaping). </p>
        !           253: <p>Actions "rate-limit" and "shape" can have optional "pass" suffix
        !           254: to stop processing after doing this action.</p>
        !           255: <p>action: <em></em> | <em>pass</em> | <em>deny</em> | 
        !           256: <em>rate-limit</em> <em>{rate(bits/s)}</em> [<em>{normal burst(bytes)}</em> [<em>{extended burst(bytes)}</em>]] [<em>pass</em>] |
        !           257: <em>shape</em> <em>{rate(bits/s)}</em> [<em>{burst(bytes)}</em>] [<em>pass</em>]</p>
        !           258: <p>As example you can write in your RADIUS configuration something like:
        !           259: <pre>
        !           260: mpd-filter += "1#1=nomatch dst net 10.0.0.0/24",
        !           261: mpd-filter += "1#2=match dst net 10.0.0.0/8",
        !           262: mpd-filter += "2#1=nomatch src net 10.0.0.0/24",
        !           263: mpd-filter += "2#2=match src net 11.0.0.0/8",
        !           264: mpd-limit += "in#1=flt1 pass",
        !           265: mpd-limit += "in#2#Biz=all shape 64000 4000",
        !           266: mpd-limit += "out#1=flt2 pass",
        !           267: mpd-limit += "out#2#Biz=all rate-limit 1024000 150000 300000",
        !           268: </pre>
        !           269: </p>
        !           270: <p>As result, one ng_bpf node will be created to implement traffic filters 
        !           271: and several (two for this example) ng_car nodes for traffic shaping 
        !           272: and rate-limiting. Incoming traffic to 10.0.0.0/8 except 10.0.0.0/24
        !           273: will be passed, other traffic will be shaped to 64Kbits/s. Outgoing
        !           274: traffic from 10.0.0.0/8 except 10.0.0.0/24 will be passed, all other
        !           275: will be limited to 1024Kbit/s. Also traffic that passed mpd-limit rules
        !           276: marked "Biz" will be accordingly accounted and present with that name
        !           277: in AAA accounting requests.</p>
        !           278: 
        !           279: 
        !           280: </dl>
        !           281: </p>
        !           282:  <HR NOSHADE>
        !           283: <A HREF="mpd.html"><EM>Mpd 5.6 User Manual</EM></A>
        !           284:  <b>:</b> <A HREF="mpd17.html"><EM>Configuring Mpd</EM></A>
        !           285:  <b>:</b> <A HREF="mpd29.html"><EM>Authentication, Authorization and Accounting (AAA)</EM></A>
        !           286:  <b>:</b> <EM>RADIUS</EM><BR>
        !           287: <b>Previous:</b> <A HREF="mpd29.html"><EM>Authentication, Authorization and Accounting (AAA)</EM></A><BR>
        !           288: <b>Next:</b> <A HREF="mpd31.html"><EM>External authentication</EM></A>
        !           289: 
        !           290: 
        !           291: 
        !           292: </BODY>
        !           293: </HTML>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>