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>