1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173
|
<pre>Internet Engineering Task Force (IETF) A. DeKok
Request for Comments: 8559 FreeRADIUS
Updates: <a href="./rfc5176">5176</a>, <a href="./rfc5580">5580</a> J. Korhonen
Category: Standards Track April 2019
ISSN: 2070-1721
<span class="h1">Dynamic Authorization Proxying in the</span>
<span class="h1">Remote Authentication Dial-In User Service (RADIUS) Protocol</span>
Abstract
<a href="./rfc5176">RFC 5176</a> defines Change-of-Authorization (CoA) and Disconnect Message
(DM) behavior for RADIUS. <a href="./rfc5176">RFC 5176</a> also suggests that proxying these
messages is possible, but it does not provide guidance as to how that
is done. This specification updates <a href="./rfc5176">RFC 5176</a> to correct that
omission for scenarios where networks use realm-based proxying as
defined in <a href="./rfc7542">RFC 7542</a>. This specification also updates <a href="./rfc5580">RFC 5580</a> to
allow the Operator-Name attribute in CoA-Request and Disconnect-
Request packets.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in <a href="./rfc7841#section-2">Section 2 of RFC 7841</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="https://www.rfc-editor.org/info/rfc8559">https://www.rfc-editor.org/info/rfc8559</a>.
<span class="grey">DeKok & Korhonen Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="https://trustee.ietf.org/license-info">https://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. Terminology ................................................<a href="#page-4">4</a>
<a href="#section-1.2">1.2</a>. Requirements Language ......................................<a href="#page-5">5</a>
<a href="#section-2">2</a>. Problem Statement ...............................................<a href="#page-5">5</a>
<a href="#section-2.1">2.1</a>. Typical RADIUS Proxying ....................................<a href="#page-5">5</a>
<a href="#section-2.2">2.2</a>. CoA Processing .............................................<a href="#page-6">6</a>
<a href="#section-2.3">2.3</a>. Failure of CoA Proxying ....................................<a href="#page-6">6</a>
<a href="#section-3">3</a>. How to Perform CoA Proxying .....................................<a href="#page-7">7</a>
<a href="#section-3.1">3.1</a>. Changes to Access-Request and Accounting-Request Packets ...<a href="#page-8">8</a>
<a href="#section-3.2">3.2</a>. Proxying of CoA-Request and Disconnect-Request Packets .....<a href="#page-9">9</a>
<a href="#section-3.3">3.3</a>. Reception of CoA-Request and Disconnect-Request Packets ...<a href="#page-10">10</a>
<a href="#section-3.4">3.4</a>. Operator-NAS-Identifier ...................................<a href="#page-11">11</a>
<a href="#section-4">4</a>. Requirements ...................................................<a href="#page-14">14</a>
<a href="#section-4.1">4.1</a>. Requirements on Home Servers ..............................<a href="#page-14">14</a>
<a href="#section-4.2">4.2</a>. Requirements on Visited Networks ..........................<a href="#page-14">14</a>
<a href="#section-4.3">4.3</a>. Requirements on Proxies ...................................<a href="#page-14">14</a>
<a href="#section-4.3.1">4.3.1</a>. Security Requirements on Proxies ...................<a href="#page-15">15</a>
<a href="#section-4.3.2">4.3.2</a>. Filtering Requirements on Proxies ..................<a href="#page-16">16</a>
<a href="#section-5">5</a>. Functionality ..................................................<a href="#page-17">17</a>
<a href="#section-5.1">5.1</a>. User Login ................................................<a href="#page-17">17</a>
<a href="#section-5.2">5.2</a>. CoA Proxying ..............................................<a href="#page-17">17</a>
<a href="#section-6">6</a>. Security Considerations ........................................<a href="#page-18">18</a>
<a href="#section-6.1">6.1</a>. RADIUS Security and Proxies ...............................<a href="#page-18">18</a>
<a href="#section-6.2">6.2</a>. Security of the Operator-NAS-Identifier Attribute .........<a href="#page-19">19</a>
<a href="#section-7">7</a>. IANA Considerations ............................................<a href="#page-20">20</a>
<a href="#section-8">8</a>. References .....................................................<a href="#page-20">20</a>
<a href="#section-8.1">8.1</a>. Normative References ......................................<a href="#page-20">20</a>
<a href="#section-8.2">8.2</a>. Informative References ....................................<a href="#page-21">21</a>
Authors' Addresses ................................................<a href="#page-21">21</a>
<span class="grey">DeKok & Korhonen Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
<a href="./rfc5176">RFC 5176</a> [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] defines Change-of-Authorization (CoA) and
Disconnect Message (DM) behavior for RADIUS. <a href="./rfc5176#section-3.1">Section 3.1 of
[RFC5176]</a> suggests that proxying these messages is possible, but it
does not provide guidance as to how that is done. This omission
means that in practice, proxying of CoA packets is impossible.
We partially correct that omission here by explaining how proxying of
these packets can be done by leveraging an existing RADIUS attribute,
Operator-Name (<a href="./rfc5580#section-4.1">Section 4.1 of [RFC5580]</a>). We then explain how this
attribute can be used by proxies to route packets "backwards" through
a RADIUS proxy chain from a home network to a visited network. We
then introduce a new attribute: Operator-NAS-Identifier. This
attribute permits packets to be routed from the RADIUS server at the
visited network to the Network Access Server (NAS).
This correction is limited to the use case of realm-based proxying as
defined in [<a href="./rfc7542" title=""The Network Access Identifier"">RFC7542</a>]. Other forms of proxying are possible but are
not discussed here. We note that the recommendations provided in
this document apply only to those systems that implement proxying of
CoA packets, and then only to those that implement realm-based CoA
proxying. This specification neither requires nor suggests changes
to any implementation or deployment of any other RADIUS systems.
We also update the behavior described in [<a href="./rfc5580" title=""Carrying Location Objects in RADIUS and Diameter"">RFC5580</a>] to allow the
Operator-Name attribute to be used in CoA-Request and Disconnect-
Request packets, as further described in this document.
This document is a Standards Track document in order to update the
behavior described in [<a href="./rfc5580" title=""Carrying Location Objects in RADIUS and Diameter"">RFC5580</a>], as [<a href="./rfc5580" title=""Carrying Location Objects in RADIUS and Diameter"">RFC5580</a>] is also a Standards
Track document. This document relies heavily upon and also updates
some of the behaviors described in <a href="./rfc5176">RFC 5176</a>, which is an
Informational document; because the applicability statements in
<a href="./rfc5176#section-1.1">Section 1.1 of [RFC5176]</a> do not apply to this document, this document
does not change the status of [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>].
We finally conclude with a discussion of the security implications of
this design and show that they do not decrease the security of the
network.
<span class="grey">DeKok & Korhonen Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Terminology</span>
This document frequently uses the following terms:
CoA
Change of authorization, e.g., CoA-Request, CoA-ACK, or CoA-NAK,
as defined in [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>]. [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] also defines Disconnect-
Request, Disconnect-ACK, and Disconnect-NAK. For simplicity,
where we use "CoA" in this document, we mean a generic
"CoA-Request or Disconnect-Request" packet. We use "CoA-Request"
or "Disconnect-Request" to refer to the specific packet types.
Network Access Identifier (NAI)
The user identity submitted by the client during network access
authentication. See [<a href="./rfc7542" title=""The Network Access Identifier"">RFC7542</a>]. The purpose of the NAI is to
identify the user as well as assist in the routing of the
authentication request. Please note that the NAI may not
necessarily be the same as the user's email address or the user
identity submitted in an application-layer authentication.
Network Access Server (NAS)
The device that clients connect to in order to get access to the
network. In Point-to-Point Tunneling Protocol (PPTP) terminology,
this is referred to as the PPTP Access Concentrator (PAC), and in
Layer 2 Tunneling Protocol (L2TP) terminology, it is referred to
as the L2TP Access Concentrator (LAC). In IEEE 802.11, it is
referred to as an Access Point.
Home Network
The network that holds the authentication credentials for a user.
Visited Network
A network other than the home network, where the user attempts to
gain network access. The visited network typically has a
relationship with the home network, possibly through one or more
intermediary proxies.
<span class="grey">DeKok & Korhonen Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. Requirements Language</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
<a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>] [<a href="./rfc8174" title=""Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"">RFC8174</a>] when, and only when, they appear in all
capitals, as shown here.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Problem Statement</span>
This section describes how RADIUS proxying works, how CoA packets
work, and why CoA proxying as discussed in [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] is insufficient
to create a working system.
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Typical RADIUS Proxying</span>
When a RADIUS server proxies an Access-Request packet, it typically
does so based on the contents of the User-Name attribute, which
contains an NAI [<a href="./rfc7542" title=""The Network Access Identifier"">RFC7542</a>]. This specification describes how to use
the NAI in order to proxy CoA packets across multiple hops. Other
methods of proxying CoA packets are possible but are not discussed
here.
In order to determine the "next hop" for a packet, the proxying
server looks up the "realm" portion of the NAI in a logical
Authentication, Authorization, and Accounting (AAA) routing table, as
described in <a href="./rfc7542#section-3">Section 3 of [RFC7542]</a>. The entry in that table
contains information about the next hop to which the packet is sent.
This information can be IP address, shared secret, certificate, etc.
The next hop may also be another proxy, or it may be the home server
for that realm.
If the next hop is a proxy, that proxy will perform the same realm
lookup and then proxy the packet as above. At some point, the
next hop will be the home server for that realm.
The home server validates the NAI in the User-Name attribute against
the list of realms hosted by the home network. If there is no match,
then an Access-Reject is returned. All other packets are processed
through local site rules, which result in an appropriate response
packet being sent. This response packet can be Access-Accept,
Access-Challenge, or Access-Reject.
The RADIUS client receiving that response packet will match it to an
outstanding request. If the client is part of a proxy, the proxy
will then send that response packet in turn to the system that
originated the Access-Request. This process continues until the
response packet arrives at the NAS.
<span class="grey">DeKok & Korhonen Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
The proxies are typically stateful with respect to ongoing
request/response packets but are stateless with respect to user
sessions. That is, once a response has been sent by the proxy, it
can discard all information about the request packet, other than what
is needed for detecting retransmissions as per <a href="./rfc5080#section-2.2.2">Section 2.2.2 of
[RFC5080]</a>.
The same method is used to proxy Accounting-Request packets.
Proxying both Access-Request and Accounting-Request packets allows
proxies to connect visited networks to home networks for all AAA
purposes.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. CoA Processing</span>
[<a id="ref-RFC5176">RFC5176</a>] describes how CoA clients send packets to CoA servers. We
note that a system comprising the CoA client is typically co-located
with, or is the same as, the RADIUS server. Similarly, the CoA
server is a system that is either co-located with or the same as the
RADIUS client.
In the case of packets sent inside of one network, the source and
destination of CoA packets are locally determined. There is thus no
need for standardization of that process, as networks are free to
send CoA packets whenever they want, for whatever reason they want.
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Failure of CoA Proxying</span>
The situation is more complicated when proxies are involved.
[<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] suggests that CoA proxying is permitted, but [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] does
not make any suggestions as to how that proxying should be done.
If proxies were to track user sessions, it would be possible for a
proxy to match an incoming CoA packet to a user session and then to
proxy the CoA packet to the RADIUS client that originated the
Access-Request for that session. There are many problems with such a
scenario.
The CoA server might not, in fact, be co-located with the RADIUS
client, in which case it might not have access to user session
information for performing the reverse path forwarding.
The CoA server may be down, but there may be a different CoA server
that could successfully process the packet. The CoA client should
then fail over to a different CoA server. If the reverse path is
restricted to be the same as the forward path, then such failover is
not possible.
<span class="grey">DeKok & Korhonen Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
In a roaming consortium, the proxies may forward traffic for tens of
millions of users. Tracking each user session can be expensive and
complicated, and doing so does not scale well. For that reason, most
proxies do not record user sessions.
Even if the proxy recorded user sessions, [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] is silent on the
topic of what attributes constitute "session identification
attributes". That silence means it is impossible for a proxy to
determine if a CoA packet matches a particular user session.
The result of all of these issues is that CoA proxying is impossible
when using the behavior defined in [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>].
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. How to Perform CoA Proxying</span>
The solution to the above problem is to use realm-based proxying on
the reverse path, just as with the forward path. In order for the
reverse path proxying to work, the proxy decision must be based on an
attribute other than User-Name.
The reverse path proxying can be done by using the Operator-Name
attribute defined in <a href="./rfc5580#section-4.1">Section 4.1 of [RFC5580]</a>. We repeat a portion
of that definition here for clarity:
This attribute carries the operator namespace identifier and the
operator name. The operator name is combined with the namespace
identifier to uniquely identify the owner of an access network.
...followed a few paragraphs later by a description of the REALM
namespace:
REALM ('1' (0x31)):
The REALM operator namespace can be used to indicate operator
names based on any registered domain name. Such names are
required to be unique, and the rights to use a given realm name
are obtained coincident with acquiring the rights to use a
particular Fully Qualified Domain Name (FQDN). ...
In short, the Operator-Name attribute contains an ASCII "1", followed
by the realm of the visited network. For example, for the
"example.com" realm, the Operator-Name attribute contains the text
"1example.com". This information is precisely what is needed by
intermediate nodes in order to perform CoA proxying.
<span class="grey">DeKok & Korhonen Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
The remainder of this document describes how CoA proxying can be
performed by using the Operator-Name attribute. We describe the
following:
o how the forward path has to change in order to allow reverse path
proxying
o how reverse path proxying works
o how visited networks and home networks have to behave in order for
CoA proxying to work
We note that as a proxied CoA packet is sent to only one destination,
the Operator-Name attribute MUST NOT occur more than once in a
packet. If a packet contains more than one Operator-Name,
implementations MUST treat the second and subsequent attributes as
"invalid attributes", as discussed in <a href="./rfc6929#section-2.8">Section 2.8 of [RFC6929]</a>.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Changes to Access-Request and Accounting-Request Packets</span>
When a visited network proxies an Access-Request or Accounting-
Request packet outside of its network, a visited network that wishes
to support realm-based CoA proxying SHOULD include an Operator-Name
attribute in the packet, as discussed in <a href="./rfc5580#section-4.1">Section 4.1 of [RFC5580]</a>.
The contents of the Operator-Name attribute should be "1", followed
by the realm name of the visited network. Where the visited network
has more than one realm name, a "canonical" name SHOULD be chosen and
used for all packets.
Visited networks MUST use a consistent value for Operator-Name for
any one user session. That is, sending "1example.com" in an
Access-Request packet and "1example.org" in an Accounting-Request
packet for that same session is forbidden. Such behavior would make
it look like a single user session was active simultaneously in two
different visited networks, which is impossible.
Proxies that record user session information SHOULD also record
Operator-Name. Proxies that do not record user session information
do not need to record Operator-Name.
Home networks SHOULD record Operator-Name along with any other
information that they record about user sessions. Home networks that
expect to send CoA packets to visited networks MUST record
Operator-Name for each user session that originates from a visited
network. Failure to record Operator-Name would mean that the home
network would not know where to send any CoA packets.
<span class="grey">DeKok & Korhonen Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Networks that host both the RADIUS client and RADIUS server do not
need to create, record, or track Operator-Name. That is, if the
visited network and home network are the same, there is no need to
use the Operator-Name attribute.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Proxying of CoA-Request and Disconnect-Request Packets</span>
When a home network wishes to send a CoA-Request or Disconnect-
Request packet to a visited network, it MUST include an Operator-Name
attribute in the CoA packet. The value of the Operator-Name
attribute MUST be the value that was recorded earlier for that user
session.
The home network MUST look up the realm from the Operator-Name
attribute in a logical "realm routing table", as discussed in
<a href="./rfc7542#section-3">Section 3 of [RFC7542]</a>. That logical realm table is defined
therein as:
... a logical AAA routing table, where the "utf8-realm" portion
acts as a key, and the values stored in the table are one or more
"next hop" AAA servers.
In order to support proxying of CoA packets, this table is extended
to include a mapping between "utf8-realm" and one or more next-hop
CoA servers.
When proxying CoA-Request and Disconnect-Request packets, the lookups
will return data from the "CoA server" field instead of the "AAA
server" field.
In practice, this process means that CoA proxying works exactly like
"normal" RADIUS proxying, except that the proxy decision is made
using the realm from the Operator-Name attribute instead of using the
realm from the User-Name attribute.
Proxies that receive the CoA packet will look up the realm from the
Operator-Name attribute in a logical "realm routing table", as with
home servers, above. The packet is then sent to the proxy for the
realm that was found in that table. This process continues with any
subsequent proxies until the packet reaches a public CoA server at
the visited network.
Where the realm is unknown, the proxy MUST return a NAK packet that
contains an Error-Cause Attribute having value 502 ("Request Not
Routable").
<span class="grey">DeKok & Korhonen Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Proxies that receive a CoA packet MUST NOT use the NAI from the
User-Name attribute in order to make proxying decisions. Doing so
would result in the CoA packet being forwarded to the home network,
while the user's session is in the visited network.
We also update <a href="./rfc5580#section-5">Section 5 of [RFC5580]</a> to permit CoA-Request and
Disconnect-Request packets to contain zero or one instance of the
Operator-Name attribute.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Reception of CoA-Request and Disconnect-Request Packets</span>
After some proxying, the CoA packet will be received by the CoA
server in the visited network. That CoA server MUST validate the NAI
in the Operator-Name attribute against the list of realms hosted by
the visited network. If the realm is not found, then the CoA server
MUST return a NAK packet that contains an Error-Cause Attribute
having value 502 ("Request Not Routable").
Some home networks will not have permission to send CoA packets to
the visited network. The CoA server SHOULD therefore also validate
the NAI contained in the User-Name attribute. If the home network is
not permitted to send CoA packets to this visited network, then the
CoA server MUST return a NAK packet that contains an Error-Cause
Attribute having value 502 ("Request Not Routable").
These checks make it more difficult for a malicious home network to
scan roaming networks in order to determine which visited network
hosts which realm. That information should be known to all parties
in advance and exchanged via methods outside the scope of this
specification. Those methods will typically be in the form of
contractual relationships between parties or membership in a roaming
consortium.
The CoA server in the visited network will also ensure that the
Operator-NAS-Identifier attribute is known, as described below. If
the attribute matches a known NAS, then the packet will be sent to
that NAS. Otherwise, the CoA server MUST return a NAK packet that
contains an Error-Cause Attribute having value 403 ("NAS
Identification Mismatch").
All other received packets are processed as per local site rules and
will result in an appropriate response packet being sent. This
process mirrors the method used to process Access-Request and
Accounting-Request packets (described above).
<span class="grey">DeKok & Korhonen Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Processing done by the visited network will normally include sending
the CoA packet to the NAS, having the NAS process it, and then
returning any response packets back up the proxy chain to the home
server.
The only missing piece here is the procedure by which the visited
network gets the packet from its public CoA server to the NAS. The
visited network could use NAS-Identifier, NAS-IP-Address, or
NAS-IPv6-Address, but these attributes may have been edited by an
intermediate proxy or the attributes may be missing entirely.
These attributes may be incorrect because proxies forwarding
Access-Request packets often rewrite them for internal policy
reasons. These attributes may be missing, because the visited
network may not want all upstream proxies and home servers to have
detailed information about the internals of its private network and
may remove them itself.
We therefore need a way to identify a NAS in the visited network via
a method that affords privacy and does not use any existing
attributes. Our solution is to define an Operator-NAS-Identifier
attribute, which identifies an individual NAS in the visited network.
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Operator-NAS-Identifier</span>
The Operator-NAS-Identifier attribute is an opaque token that
identifies an individual NAS in a visited network. It MAY appear in
the following packets: Access-Request, Accounting-Request,
CoA-Request, or Disconnect-Request. Operator-NAS-Identifier MUST NOT
appear in any other packets.
Operator-NAS-Identifier MAY occur in a packet if the packet also
contains an Operator-Name attribute. Operator-NAS-Identifier
MUST NOT appear in a packet if there is no Operator-Name in the
packet. As each proxied CoA packet is sent to only one NAS, the
Operator-NAS-Identifier attribute MUST NOT occur more than once in a
packet. If a packet contains more than one Operator-NAS-Identifier,
implementations MUST treat the second and subsequent attributes as
"invalid attributes", as discussed in <a href="./rfc6929#section-2.8">Section 2.8 of [RFC6929]</a>.
An Operator-NAS-Identifier attribute SHOULD be added to an
Access-Request or Accounting-Request packet by a visited network,
before proxying a packet to an external RADIUS server. When the
Operator-NAS-Identifier attribute is added to a packet, the following
attributes SHOULD be deleted from the packet: NAS-IP-Address,
NAS-IPv6-Address, and NAS-Identifier. If these attributes are
deleted, the proxy MUST then add a new NAS-Identifier attribute,
<span class="grey">DeKok & Korhonen Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
in order to satisfy the requirements of <a href="./rfc2865#section-4.1">Section 4.1 of [RFC2865]</a> and
<a href="./rfc2866#section-4.1">Section 4.1 of [RFC2866]</a>. The contents of the new NAS-Identifier
attribute SHOULD be the realm name of the visited network.
When a server receives a packet that already contains an Operator-
NAS-Identifier attribute, no such editing is performed.
The Operator-NAS-Identifier attribute MUST NOT be added to any packet
by any other proxy or server in the network. Only the visited
network (i.e., the operator) can name a NAS that is inside of the
visited network.
The result of these requirements is that for everyone outside of the
visited network there is only one NAS: the visited network itself.
Also, the visited network is able to identify its own NASes to its
own satisfaction.
This usage of the Operator-NAS-Identifier attribute parallels the
Operator-Name attribute as defined in <a href="./rfc5580#section-4.1">Section 4.1 of [RFC5580]</a>.
The Operator-NAS-Identifier attribute is defined as follows.
Description
An opaque token describing the NAS a user has logged into.
Type
241.8 (assigned by IANA from the "short extended space" [<a href="./rfc6929" title=""Remote Authentication Dial In User Service (RADIUS) Protocol Extensions"">RFC6929</a>]
of the "RADIUS Attribute Types" registry).
Length
4 to 35.
Implementations supporting this attribute MUST be able to handle
between one (1) and thirty-two (32) octets of data.
Implementations creating an Operator-NAS-Identifier attribute
MUST NOT create attributes with more than sixty-four (64) octets
of data. A 32-octet string should be more than sufficient for
future uses.
Data Type
The data type of this field is "string". See <a href="./rfc8044#section-3.5">Section 3.5 of
[RFC8044]</a> for a definition.
<span class="grey">DeKok & Korhonen Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Value
This attribute contains an opaque token that can only be
interpreted by the visited network.
This token MUST allow the visited network to direct the packet to
the NAS for the user's session. In practice, this requirement
means that the visited network has two practical methods for
creating the value.
The first method is to create an opaque token per NAS and then to
store that information in a database. The database can be
configured to allow querying by NAS IP address in order to find
the correct Operator-NAS-Identifier. The database can also be
configured to allow querying by Operator-NAS-Identifier in order
to find the correct NAS IP address.
The second method is to obfuscate the NAS IP address using
information known locally by the visited network -- for example,
by XORing it with a locally known secret key. The output of that
obfuscation operation is data that can be used as the value of
Operator-NAS-Identifier. On reception of a CoA packet, the
locally known information can be used to unobfuscate the value of
Operator-NAS-Identifier, in order to determine the actual NAS IP
address.
Note that there is no requirement that the value of Operator-NAS-
Identifier be checked for integrity. Modification of the value
can only result in the erroneous transaction being rejected.
We note that the Access-Request and Accounting-Request packets
often contain the Media Access Control (MAC) address of the NAS.
There is therefore no requirement that Operator-NAS-Identifier
obfuscate or hide in any way the total number of NASes in a
visited network. That information is already public knowledge.
<span class="grey">DeKok & Korhonen Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Requirements</span>
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Requirements on Home Servers</span>
The Operator-NAS-Identifier attribute MUST be stored by a home server
along with any user session identification attributes. When sending
a CoA packet for a user session, the home server MUST include
verbatim any Operator-NAS-Identifier it has recorded for that
session.
A home server MUST NOT send CoA packets for users of other networks.
The next few sections describe how other participants in the RADIUS
ecosystem can help enforce this requirement.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Requirements on Visited Networks</span>
A visited network that receives a CoA packet that will be proxied to
a NAS MUST perform all of the operations required for proxies; see
<a href="#section-4.3.2">Section 4.3.2</a>. We specify this requirement because we assume that
the visited network has a proxy between the NAS and any external
(i.e., third-party) proxy. Situations where a NAS sends packets
directly to a third-party RADIUS server are outside the scope of this
specification.
The visited network uses the contents of the Operator-NAS-Identifier
attribute to determine which NAS will receive the packet.
The visited network MUST remove the Operator-Name and Operator-NAS-
Identifier attributes from a given CoA packet prior to sending that
packet to the final CoA server (i.e., NAS). This step is necessary
due to the limits specified in <a href="./rfc5176#section-2.3">Section 2.3 of [RFC5176]</a>.
The visited network MUST also ensure that the CoA packet sent to the
NAS contains one of the following attributes: NAS-IP-Address,
NAS-IPv6-Address, or NAS-Identifier. This step is the inverse of the
removal suggested above in <a href="#section-3.4">Section 3.4</a>.
In general, the NAS should only receive attributes that identify or
modify a user's session. It is not appropriate to send to a NAS
attributes that are used only for inter-proxy signaling.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Requirements on Proxies</span>
There are a number of requirements on both CoA proxies and RADIUS
proxies. For the purpose of this section, we assume that each RADIUS
proxy shares a common administration with a corresponding CoA proxy
and that the two systems can communicate electronically. There is no
requirement that these systems be co-located.
<span class="grey">DeKok & Korhonen Standards Track [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
<span class="h4"><a class="selflink" id="section-4.3.1" href="#section-4.3.1">4.3.1</a>. Security Requirements on Proxies</span>
<a href="./rfc5176#section-6.1">Section 6.1 of [RFC5176]</a> has some security requirements on proxies
that handle CoA-Request and Disconnect-Request packets:
... a proxy MAY perform a "reverse path forwarding" (RPF) check to
verify that a Disconnect-Request or CoA-Request originates from an
authorized Dynamic Authorization Client.
We strengthen that requirement by saying that a proxy MUST perform a
reverse path forwarding check to verify that a CoA packet originates
from an authorized Dynamic Authorization Client. Without this check,
a proxy may forward packets from misconfigured or malicious parties
and thus contribute to the problem instead of preventing it. Where
the check fails, the proxy MUST return a NAK packet that contains an
Error-Cause Attribute having value 502 ("Request Not Routable").
Proxies that record user session information SHOULD verify the
contents of a received CoA packet against the recorded data for that
user session. If the proxy determines that the information in the
packet does not match the recorded user session, it SHOULD return a
NAK packet that contains an Error-Cause Attribute having value 503
("Session Context Not Found"). These checks cannot be mandated due
to the fact that [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>] offers no advice on which attributes are
used to identify a user's session.
Because a RADIUS proxy will see Access-Request and Accounting-Request
packets, we recognize that it will have sufficient information to
forge CoA packets. The RADIUS proxy will thus have the ability to
subsequently disconnect any user who was authenticated through
itself.
We suggest that the real-world effect of this security problem is
minimal. RADIUS proxies can already return Access-Accept or
Access-Reject for Access-Request packets and can change authorization
attributes contained in an Access-Accept. Allowing a proxy to change
(or disconnect) a user session post-authentication is not
substantially different from changing (or refusing to connect) a user
session during the initial process of authentication.
The biggest problem is that there are no provisions in RADIUS for
"end-to-end" security. That is, the visited network and home network
cannot communicate privately in the presence of proxies. This
limitation originates from the design of RADIUS for Access-Request
and Accounting-Request packets. That limitation is then carried over
to CoA-Request and Disconnect-Request packets.
<span class="grey">DeKok & Korhonen Standards Track [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
We therefore cannot prevent proxies or home servers from forging CoA
packets. We can only create scenarios where that forgery is hard to
perform, is likely to be detected, and/or has no effect.
<span class="h4"><a class="selflink" id="section-4.3.2" href="#section-4.3.2">4.3.2</a>. Filtering Requirements on Proxies</span>
<a href="./rfc5176#section-2.3">Section 2.3 of [RFC5176]</a> makes the following requirement for CoA
servers:
In CoA-Request and Disconnect-Request packets, all attributes MUST
be treated as mandatory.
This requirement is too stringent for a CoA proxy. Only the final
CoA server (i.e., NAS) can decide which attributes are mandatory and
which are not.
Instead, in the case of a CoA proxy, we say that all attributes
MUST NOT be treated as mandatory. Proxies implementing this
specification MUST perform proxying based on Operator-Name. Other
schemes are possible but are not discussed here. Proxies SHOULD
forward all packets either "as is" or with minimal changes.
We note that some NAS implementations currently treat signaling
attributes as mandatory. For example, some NAS implementations will
NAK any CoA packet that contains a Proxy-State attribute. While this
behavior is based on a straightforward reading of the above text, it
causes problems in practice.
We update <a href="./rfc5176#section-2.3">Section 2.3 of [RFC5176]</a> as follows: in CoA-Request and
Disconnect-Request packets, the NAS MUST NOT treat as mandatory any
attribute that is known to not affect the user's session -- for
example, the Proxy-State attribute. Proxy-State is an attribute used
for proxy-to-proxy signaling. It cannot affect the user's session,
and therefore Proxy-State (and similar attributes) MUST be ignored by
the NAS.
When Operator-Name and/or Operator-NAS-Identifier are received by a
proxy, the proxy MUST pass those attributes through unchanged. This
requirement applies to all proxies, including proxies that forward
any or all of Access-Request, Accounting-Request, CoA-Request, and
Disconnect-Request packets.
All attributes added by a RADIUS proxy when sending packets from the
visited network to the home network MUST be removed by the
corresponding CoA proxy from packets traversing the reverse path.
That is, any editing of attributes that is done on the "forward" path
MUST be undone on the "reverse" path.
<span class="grey">DeKok & Korhonen Standards Track [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
The result is that a NAS will only ever receive CoA packets that
either contain (1) attributes sent by the NAS to its local RADIUS
server or (2) attributes that are sent by the home server in order to
perform a change of authorization.
Finally, we extend the above requirement not only to Operator-Name
and Operator-NAS-Identifier but also to any future attributes that
are added for proxy-to-proxy signaling.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Functionality</span>
This section describes how the two attributes work together to permit
CoA proxying.
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. User Login</span>
In this scenario, we follow a roaming user who is attempting to
log in to a visited network. The login attempt is done via a NAS in
the visited network. That NAS will send an Access-Request packet to
the visited RADIUS server. The visited RADIUS server will see that
the user is roaming and will add an Operator-Name attribute, with
value "1" followed by its own realm name, e.g., "1example.com". The
visited RADIUS server MAY also add an Operator-NAS-Identifier
attribute. The NAS identification attributes are also edited, as
required by <a href="#section-3.4">Section 3.4</a>, above.
The visited server will then proxy the authentication request to an
upstream server. That server may be the home server, or it may be a
proxy. In the case of a proxy, the proxy will forward the packet
until the packet reaches the home server.
The home server will record the Operator-Name and Operator-NAS-
Identifier attributes, along with other information about the user's
session, if those attributes are present in a packet.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. CoA Proxying</span>
At some later point in time, the home server determines that
(1) a user session should have its authorization changed or
(2) the user should be disconnected. The home server looks up the
Operator-Name and Operator-NAS-Identifier attributes, along with
other user session identifiers as described in [<a href="./rfc5176" title=""Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)"">RFC5176</a>]. The home
server then looks up the realm from the Operator-Name attribute in
the logical AAA routing table, in order to find the next-hop CoA
server for that realm (which may be a proxy). The CoA-Request is
then sent to that CoA server.
<span class="grey">DeKok & Korhonen Standards Track [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
The CoA server receives the request and, if it is a proxy, performs a
lookup similar to the lookup done by the home server. The packet is
then proxied repeatedly until it reaches the visited network.
If the proxy cannot find a destination for the request or if no
Operator-Name attribute exists in the request, the proxy will return
a CoA-NAK with Error-Cause 502 ("Request Not Routable").
The visited network will receive the CoA-Request packet and will use
the Operator-NAS-Identifier attribute (if available) to determine
which local CoA server (i.e., NAS) the packet should be sent to. If
there is no Operator-NAS-Identifier attribute, the visited network
may use other means to locate the NAS, such as consulting a local
database that tracks user sessions.
The Operator-Name and Operator-NAS-Identifier attributes are then
removed from the packet; one of NAS-IP-Address, NAS-IPv6-Address, or
NAS-Identifier is added to the packet; and the packet is then sent to
the CoA server.
If no CoA server can be found, the visited network returns a CoA-NAK
with Error-Cause 403 ("NAS Identification Mismatch").
Any response from the CoA server (NAS) is returned to the home
network via the normal method of returning responses to requests.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
This specification incorporates by reference <a href="./rfc6929#section-11">Section 11 of [RFC6929]</a>.
In short, RADIUS has many known issues; those issues are discussed in
detail in [<a href="./rfc6929" title=""Remote Authentication Dial In User Service (RADIUS) Protocol Extensions"">RFC6929</a>] and do not need to be repeated here.
This specification adds one new attribute and defines new behavior
for RADIUS proxying. As this behavior mirrors existing RADIUS
proxying, we do not believe that it introduces any new security
issues. We note, however, that RADIUS proxying has many inherent
security issues.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. RADIUS Security and Proxies</span>
The requirement that packets be signed with a shared secret means
that a CoA packet can only be received from a trusted party or,
transitively, received from a third party via a trusted party. This
security provision of the base RADIUS protocol makes it impossible
for untrusted parties to affect the user's session.
<span class="grey">DeKok & Korhonen Standards Track [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
When RADIUS proxying is performed, all packets are signed on a
hop-by-hop basis. Any intermediate proxy can therefore forge
packets, replay packets, or modify the contents of any packet. Any
system receiving correctly signed packets must accept them at face
value and is unable to detect any forgery, replay, or modifications.
As a result, the secure operation of such a system depends largely on
trust instead of on technical means.
CoA packet proxying has all of the same issues as those noted above.
We note that the proxies that see and can modify CoA packets are
generally the same proxies that can see or modify Access-Request and
Accounting-Request packets. As such, there are few additional
security implications in allowing CoA proxying.
The main security implication that remains is that home networks now
have the ability to disconnect or change the authorization of users
in a visited network. As this capability is only enabled when mutual
agreement is in place, and only for those parties who can already
control user sessions, there are no new security issues with this
specification.
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Security of the Operator-NAS-Identifier Attribute</span>
Nothing in this specification depends on the security of the
Operator-NAS-Identifier attribute. The entire process would work
exactly the same if the Operator-NAS-Identifier attribute simply
contained the NAS IP address that is hosting the user's session. The
only real downside in that situation would be that external parties
would see some additional private information about the visited
network. They would still, however, be unable to leverage that
information to do anything malicious.
The main reason to use an opaque token for the Operator-NAS-
Identifier attribute is that there is no compelling reason to make
the information public. We therefore recommend that the value be
simply an opaque token. We also state that there is no requirement
for integrity protection or replay detection of this attribute. The
rest of the RADIUS protocol ensures that modification or replay of
the Operator-NAS-Identifier attribute will either have no effect or
have the same effect as if the value had not been modified.
Trusted parties can modify a user's session on the NAS only when they
have sufficient information to identify that session. In practice,
this limitation means that those parties already have access to the
user's session information. In other words, those parties are the
proxies who are already forwarding Access-Request and Accounting-
Request packets.
<span class="grey">DeKok & Korhonen Standards Track [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
Since those parties already have the ability to see and modify all of
the information about a user's session, there is no additional
security issue with allowing them to see and modify CoA packets.
In short, any security issues with the contents of Operator-NAS-
Identifier are largely limited by the security of the underlying
RADIUS protocol. This limitation means that it does not matter how
the values of Operator-NAS-Identifier are created, stored, or used.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. IANA Considerations</span>
Per <a href="#section-3.4">Section 3.4</a> of this document, IANA has allocated one new RADIUS
attribute (the Operator-NAS-Identifier attribute) from the "short
extended space" of the "RADIUS Attribute Types" registry as follows:
Value: 241.8
Description: Operator-NAS-Identifier
Data Type: string
Reference: <a href="./rfc8559">RFC 8559</a>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. References</span>
<span class="h3"><a class="selflink" id="section-8.1" href="#section-8.1">8.1</a>. Normative References</span>
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>,
DOI 10.17487/RFC2119, March 1997,
<<a href="https://www.rfc-editor.org/info/rfc2119">https://www.rfc-editor.org/info/rfc2119</a>>.
[<a id="ref-RFC2865">RFC2865</a>] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
"Remote Authentication Dial In User Service (RADIUS)",
<a href="./rfc2865">RFC 2865</a>, DOI 10.17487/RFC2865, June 2000,
<<a href="https://www.rfc-editor.org/info/rfc2865">https://www.rfc-editor.org/info/rfc2865</a>>.
[<a id="ref-RFC5080">RFC5080</a>] Nelson, D. and A. DeKok, "Common Remote Authentication
Dial In User Service (RADIUS) Implementation Issues and
Suggested Fixes", <a href="./rfc5080">RFC 5080</a>, DOI 10.17487/RFC5080,
December 2007, <<a href="https://www.rfc-editor.org/info/rfc5080">https://www.rfc-editor.org/info/rfc5080</a>>.
[<a id="ref-RFC5176">RFC5176</a>] Chiba, M., Dommety, G., Eklund, M., Mitton, D., and
B. Aboba, "Dynamic Authorization Extensions to Remote
Authentication Dial In User Service (RADIUS)", <a href="./rfc5176">RFC 5176</a>,
DOI 10.17487/RFC5176, January 2008,
<<a href="https://www.rfc-editor.org/info/rfc5176">https://www.rfc-editor.org/info/rfc5176</a>>.
<span class="grey">DeKok & Korhonen Standards Track [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc8559">RFC 8559</a> Dynamic Authorization Proxying in RADIUS April 2019</span>
[<a id="ref-RFC5580">RFC5580</a>] Tschofenig, H., Ed., Adrangi, F., Jones, M., Lior, A., and
B. Aboba, "Carrying Location Objects in RADIUS and
Diameter", <a href="./rfc5580">RFC 5580</a>, DOI 10.17487/RFC5580, August 2009,
<<a href="https://www.rfc-editor.org/info/rfc5580">https://www.rfc-editor.org/info/rfc5580</a>>.
[<a id="ref-RFC6929">RFC6929</a>] DeKok, A. and A. Lior, "Remote Authentication Dial In User
Service (RADIUS) Protocol Extensions", <a href="./rfc6929">RFC 6929</a>,
DOI 10.17487/RFC6929, April 2013,
<<a href="https://www.rfc-editor.org/info/rfc6929">https://www.rfc-editor.org/info/rfc6929</a>>.
[<a id="ref-RFC7542">RFC7542</a>] DeKok, A., "The Network Access Identifier", <a href="./rfc7542">RFC 7542</a>,
DOI 10.17487/RFC7542, May 2015,
<<a href="https://www.rfc-editor.org/info/rfc7542">https://www.rfc-editor.org/info/rfc7542</a>>.
[<a id="ref-RFC8044">RFC8044</a>] DeKok, A., "Data Types in RADIUS", <a href="./rfc8044">RFC 8044</a>,
DOI 10.17487/RFC8044, January 2017,
<<a href="https://www.rfc-editor.org/info/rfc8044">https://www.rfc-editor.org/info/rfc8044</a>>.
[<a id="ref-RFC8174">RFC8174</a>] Leiba, B., "Ambiguity of Uppercase vs Lowercase in
<a href="./rfc2119">RFC 2119</a> Key Words", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc8174">RFC 8174</a>,
DOI 10.17487/RFC8174, May 2017,
<<a href="https://www.rfc-editor.org/info/rfc8174">https://www.rfc-editor.org/info/rfc8174</a>>.
<span class="h3"><a class="selflink" id="section-8.2" href="#section-8.2">8.2</a>. Informative References</span>
[<a id="ref-RFC2866">RFC2866</a>] Rigney, C., "RADIUS Accounting", <a href="./rfc2866">RFC 2866</a>,
DOI 10.17487/RFC2866, June 2000,
<<a href="https://www.rfc-editor.org/info/rfc2866">https://www.rfc-editor.org/info/rfc2866</a>>.
Authors' Addresses
Alan DeKok
The FreeRADIUS Server Project
Email: aland@freeradius.org
Jouni Korhonen
Email: jouni.nospam@gmail.com
DeKok & Korhonen Standards Track [Page 21]
</pre>
|