<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.1">Jekyll</generator><link href="https://networkradius.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://networkradius.com/" rel="alternate" type="text/html" /><updated>2025-01-31T17:16:17+00:00</updated><id>https://networkradius.com/feed.xml</id><title type="html">NetworkRADIUS</title><subtitle>The team behind FreeRADIUS, the world's most widely deployed RADIUS server. Whether a small company needing to get employees connected, an ISP with millions of users, or a university that just needs support for WiFi, we can help. We are RADIUS experts. We are NetworkRADIUS.</subtitle><entry><title type="html">How to customize an OEM instance of FreeRADIUS</title><link href="https://networkradius.com/articles/2023/11/24/customizing-OEM.html" rel="alternate" type="text/html" title="How to customize an OEM instance of FreeRADIUS" /><published>2023-11-24T12:00:00+00:00</published><updated>2023-11-24T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/11/24/customizing-OEM</id><content type="html" xml:base="https://networkradius.com/articles/2023/11/24/customizing-OEM.html"><![CDATA[<p>As the most popular RADIUS server in the world, FreeRADIUS is used by many hardware vendors. They ship their products with FreeRADIUS embedded as an embedded or “OEM” product. It is common for them to need some additional features or some customizations which are not part of the core FreeRADIUS functionality.</p>

<!--more-->

<p>With Open Source software, the temptation for vendors is to say “we have the source, we can change it”, and then make many changes to create a custom version of FreeRADIUS. This process does not always work. <strong>Vendors can make their lives easier by following our best practices for customization</strong>, which we outline here.</p>

<p>Our guiding principle for FreeRADIUS customization is to keep things simple and modular, by leveraging its API and its plugin architecture. This practice makes upgrade paths much simpler, and the embedded product much easier to maintain. It can also have positive legal implications!</p>

<h2 id="best-practice-1-dont-make-changes-to-the-core-code">Best practice #1: Don’t make changes to the core code</h2>

<p>It can be tempting to build customizations directly into the core code of FreeRADIUS. However, there are some serious drawbacks to this approach.</p>

<p><strong>It makes upgrades difficult</strong>. Whenever a new version of FreeRADIUS is released, any local changes will have to be integrated into the new version. These local changes may conflict with changes made in the upstream distribution, and can require significant work to merge. In addition, there will be additional work on testing and QA in order to ensure quality and stability. All of this effort takes time and expertise.</p>

<p><strong>Any new FreeRADIUS features will need to be re-implemented.</strong> If a new release of FreeRADIUS has some functionality that a vendor would like to use, it is often difficult to integrate those features into a heavily modified implementation. Typically, the vendor ends up having to re-implement the new features themselves into their own customized version. Which is another waste of time and resources.</p>

<p><strong>It requires maintaining RADIUS expertise in house.</strong> One of the key benefits of embedding FreeRADIUS as an OEM product is that you do not need to have any particular RADIUS expertise in-house to use it. FreeRADIUS handles the RADIUS portion of the work, and your team can focus on the part which integrates it with the rest of your product. In addition, your team can rely on Network RADIUS for any RADIUS or FreeRADIUS questions.</p>

<p><strong>Once you start making customizations to the core code, you lose the benefit of using an upstream release.</strong> A local version which is heavily modified will require significant experience in RADIUS and FreeRADIUS, In order to maintain the product over multiple releases and over multiple years. If anyone on the local team moves elsewhere, the company will be left with software which is critical for a product line, but which has no one internally to support or even understand it.</p>

<p>In our experience working with OEM vendors of FreeRADIUS, we’ve seen cases where upgrades are avoided altogether because the system is so heavily patched that it is essentially a custom RADIUS server. This approach is costly, and is not recommended.</p>

<h2 id="best-practice-2-leverage-the-api-and-plugin-modules">Best practice #2: Leverage the API and plugin modules</h2>

<p>In most cases, customizations to FreeRADIUS can be handled through its powerful plugin architecture.</p>

<p>Plugin modules communicate with FreeRADIUS via an internal API which has been unchanged for many years. If a vendor has a proprietary system which needs to exchange information with FreeRADIUS, it is possible to <strong>create a separate plugin module which accesses the external system</strong>. Similarly, a vendor needing new functionality can create a custom module which implements that functionality. This module will have full access to the FreeRADIUS internals, and can do just about anything.</p>

<p>Because the FreeRADIUS software is publicly available, we have seen some vendors put their customizations directly into the core APIs of FreeRADIUS. This approach gives them the worst of both the open source world, and the proprietary software world.</p>

<p>Because they are altering an open source product, they must release their customizations under a GPL license as well. This of course might reveal more than they want to about their proprietary products. Conversely, because their customizations are embedded in various places throughout the source code, there are usually only a handful of people on the vendor side that understand and are able to maintain it.</p>

<p>Aside from just being a better programming practice in general, the use of plugin module makes a clear separation between the Open Source code, and any external APIs used by the vendor. The result is that a vendor can have a standard RADIUS server, accommodate highly customized behavior, and protect their intellectual property all at the same time.</p>

<h2 id="best-practice-3-keep-data-external-to-freeradius-where-possible">Best practice #3: Keep data external to FreeRADIUS where possible</h2>

<p>Vendors sometimes maintain user account information and configurations within the FreeRADIUS server, in custom configuration. This practice is not recommended. <strong>Any bulk data should be stored in a database</strong>. Database APIs are standardized, well understood, and can be easily accessed by external systems. In contrast, configuration files are bespoke, and it is difficult to share the information the contain via a simple API.</p>

<p>A common use-case is to have many users, but only a few different types of user profile. For example, user profiles could be “super-user”, “admin”, “read-only”, or “normal”. These profiles could be assigned to many thousands of users.</p>

<p>Even worse, the use of devices from multiple network equipment vendors means that the RADIUS response required to set the “admin” profile may be different from vendor to vendor!</p>

<p>For this scenario, any RADIUS-specific profiles need to be kept in the FreeRADIUS configuration. However, these profiles are few in number, the contents of the profile are small (only a few if / then / else conditions and setting of attributes), and the profiles rarely change.</p>

<p>In contrast, there are many thousands of users, where those users are added, deleted, and modified regularly. That user information belongs in a database, which can contain the profile name along with any additional per-user data such as names, passwords, etc..</p>

<h2 id="the-bottom-line">The bottom line</h2>

<p>FreeRADIUS provides many mechanisms for <strong>allowing customizations to be implemented without touching the core code at all</strong>. This modularity is very much by design, making FreeRADIUS extremely flexible and able to integrate with external systems, without requiring deep expertise of the underlying technology.</p>

<p>In general, OEM vendors should make use tools like configuration files, external databases, plugin modules, and the internal APIs in order to achieve the customization they need.</p>

<h2 id="were-here-to-help">We’re here to help!</h2>

<p>FreeRADIUS is used by all of the cloud-based RADIUS providers, as well as nearly all the networking companies (Aruba, Extreme, etc.) and token card companies (RSA, etc.).  We’ve helped those customers build and maintain their OEM versions of FreeRADIUS. In cases where we’ve been involved from the start, maintenance is straightforward. We check configuration files and their REST API and the vendor is off to the races. In other cases where the source code has been heavily modified before we’re called in, we need to spend a lot of time untangling the changes that have been made before we can even start moving forward.</p>

<p>If you need help with an OEM implementation of FreeRADIUS, reach out to us by <a href="/request/">visiting our quote page</a>.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[As the most popular RADIUS server in the world, FreeRADIUS is used by many hardware vendors. They ship their products with FreeRADIUS embedded as an embedded or “OEM” product. It is common for them to need some additional features or some customizations which are not part of the core FreeRADIUS functionality.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/gears-in-box.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/gears-in-box.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Making RADIUS more secure</title><link href="https://networkradius.com/articles/2023/11/24/making-radius-more-secure.html" rel="alternate" type="text/html" title="Making RADIUS more secure" /><published>2023-11-24T12:00:00+00:00</published><updated>2023-11-24T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/11/24/making-radius-more-secure</id><content type="html" xml:base="https://networkradius.com/articles/2023/11/24/making-radius-more-secure.html"><![CDATA[<p>As we’ve previously discussed, there are several insecure elements in RADIUS. We are currently working in the IETF (Internet Engineering Task Force) to close those gaps and improve security for everyone. This article outlines some of the current shortcomings of RADIUS, best practices for mitigating against them, and a roadmap for how these vulnerabilities will be addressed within the RADIUS standard.</p>

<!--more-->

<h2 id="information-is-sent-in-the-clear">Information is sent “in the clear”</h2>

<p>The most obvious shortcoming of RADIUS is that, other than a few attributes such as User-Password, all information is sent “in the clear”. This means that things like users’ location data and device MAC addresses, among others, are sent in clear text across the network. This has obvious privacy and security implications when UDP is used across the Internet.</p>

<h3 id="what-to-do-about-it-right-now">What to do about it right now</h3>

<p>The first step is to <a href="/articles/2022/10/04/radius-insecurity.html">stop using insecure transports</a> such as UDP and TCP for RADIUS traffic. Instead, we strongly recommend using TLS. An issue that affected RADIUS/TLS in version 3 of FreeRADIUS was resolved earlier this year, so the transition from UDP to TLS should be straightforward. If using certificates is too hard, <a href="https://datatracker.ietf.org/doc/html/draft-ietf-radext-tls-psk-03">we recommend using TLS-PSK</a>. Administrator overhead for TLS-PSK is not substantially higher than for shared secrets, and TLS-PSK offers significantly increased security and privacy.</p>

<h3 id="looking-ahead">Looking ahead</h3>

<p>Another way of increasing privacy with RADIUS is to minimize the amount of PII (Personal Identifying Information) which is sent in packets. Where possible, identities should be anonymized using the <a href="https://www.rfc-editor.org/info/rfc4372">Chargeable-User-Identifier</a>. Other information such as device identity, user location, and visited networks should be omitted, anonymized, or replaced. A more detailed discussion of these issues can be found in <a href="https://datatracker.ietf.org/doc/draft-ietf-radext-deprecating-radius/">our IETF Draft</a></p>

<h2 id="md5-has-been-broken">MD5 has been broken</h2>

<p>The security of RADIUS relies on an <a href="/articles/2022/10/04/radius-insecurity.html">MD5 signing of the packet using the shared secret</a>. Unfortunately, MD5 has been broken for over a decade. GPUs have gotten faster, which means that administrators should assume that when RADIUS/UDP packets are sent over the Internet:</p>

<ul>
  <li><strong>any shared secret of 8 characters or less has been immediately compromised.</strong></li>
  <li>any shared secret of 10 characters or less has been compromised by an attacker with significant resources.</li>
  <li>any private information (such as User-Password) which depends on a cracked secret has also been compromised.</li>
</ul>

<h3 id="what-to-do-about-it-right-now-1">What to do about it right now</h3>

<p>First, don’t send RADIUS/UDP traffic across the Internet. It was a terrible idea ten years ago. It is incredibly irresponsible to do that in 2023.</p>

<p>For internal use in management networks, RADIUS/UDP can be acceptable. But the RADIUS traffic should be isolated from all other network traffic, ideally via a VLAN or an IPSec connection. If you must use RADIUS/UDP in any context, we recommend using strong shared secrets. Use at least 32 characters, and take the shared secret from a cryptographically strong pseudo-random number generator.</p>

<h3 id="looking-ahead-1">Looking ahead</h3>

<p>One of the biggest barriers to sending RADIUS traffic using TLS instead of UDP is that many NAS hardware devices do not support this functionality. <a href="https://datatracker.ietf.org/doc/draft-ietf-radext-deprecating-radius#name-mandating-secure-transports">As seen in our document</a>, the IETF is mandating that TLS-based transport layers be used for RADIUS traffic outside of secure networks. This document will become an IETF standard in the near future. We hope that these new requirements will push NAS vendors to make RADIUS/TLS available in their products.</p>

<h2 id="short-shared-secrets-have-been-compromised">Short shared secrets have been compromised</h2>

<p>Because of the ease of cracking MD5, administrators should assume that all short shared secrets have been compromised by anyone who can see RADIUS/UDP traffic.</p>

<h3 id="what-to-do-about-it-now">What to do about it now</h3>

<p>You should immediately change all short shared secrets to ones that have at least 32 characters (we recommend 64). It is very easy to create long shared secrets.  One way of doing this is the following script:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/usr/bin/env perl
use MIME::Base32;
use Crypt::URandom();
print lc encode_base32(Crypt::URandom::urandom(24)), "\n";
</code></pre></div></div>

<p>Given the simplicity of creating strong secrets, there is no excuse for using weak shared secrets with RADIUS.</p>

<p>Additionally, we repeat that you should send RADIUS traffic over TLS, rather than UDP.</p>

<h3 id="looking-ahead-2">Looking ahead</h3>

<p>This cannot be fixed as it is a fundamental design flaw in the RADIUS protocol. We can only “paper over” the issue by using RADIUS/TLS.</p>

<h2 id="secure-storage-of-passwords">Secure storage of passwords</h2>

<p>The authentication protocol used for RADIUS has knock-on effects for the related systems that use it. Specifically, <a href="/articles/2022/04/11/is-pap-secure.html">we recommend that the PAP protocol be used</a> because it allows passwords to be stored in the database in salted/encrypted form. They are in clear-text only temporarily in the memory of the RADIUS server which receives and then verifies the password</p>

<p>By contrast, using CHAP or MS-CHAP instead of PAP means that the passwords must be stored in clear text in the database, all of the time. Any compromise of the application means that the entire database can be immediately read and exfiltrated as a whole. The attacker then has complete access to all user identities, and all associated clear-text passwords.</p>

<p>Given that the vast, vast, majority of breaches consist of database attacks, the risk of password compromise is much less with PAP than with <a href="/articles/2022/04/01/pap-vs-chap.html">CHAP or MS-CHAP</a>.</p>

<h3 id="what-to-do-about-it-now-1">What to do about it now</h3>

<p>If possible, make sure that you are using the PAP authentication protocol. Store passwords securely in a database.</p>

<h3 id="looking-ahead-3">Looking ahead</h3>

<p>We cannot mandate which authentication protocols are used, but we will continue to strongly recommend using PAP for the foreseeable future.</p>

<h2 id="ms-chap-is-broken">MS-CHAP is broken</h2>

<p>In addition to the vulnerability described above regarding the storage of passwords, MS-CHAP is also deeply flawed and should be considered an insecure protocol.</p>

<p>Recent developments <a href="/articles/2023/11/24/MS-CHAP-is-dead.html">have demonstrated</a> that <strong>it is possible to crack MS-CHAP exchanges with consumer hardware within milliseconds</strong>. This means that for all intents and purposes, any MS-CHAP exchanges that are sent using UDP or TCP transports should be considered compromised.</p>

<h3 id="what-to-do-about-it-now-2">What to do about it now</h3>

<p><a href="/articles/2022/04/01/pap-vs-chap.html">Our first recommendation is always to use PAP</a> instead of MS-CHAP. However, if this is not possible, MS-CHAP should always be used within TTLS, PEAP, or RADIUS/TLS.</p>

<h3 id="looking-ahead-4">Looking ahead</h3>

<p>In <a href="https://datatracker.ietf.org/doc/draft-ietf-radext-deprecating-radius#name-ms-chap">our proposed IETF standard</a>, we are deprecating insecure transport protocols for RADIUS and will be mandating that MS-CHAP authentication data carried in RADIUS must not be sent over UDP or TCP</p>

<h2 id="to-summarize">To summarize</h2>

<p>The key take-aways from this summary are as follows:</p>

<ul>
  <li>Stop using insecure transports such as UDP and TCP. (mandated in upcoming new standard)</li>
  <li>Use long shared secrets, at least 32 characters (mandated in upcoming new standard). 64 characters are preferred (recommended)</li>
  <li>Use PAP instead of CHAP or MS-CHAP as the authentication protocol (recommended)</li>
  <li>If MS-CHAP must be used, it must be sent across a secure transport such as TLS (mandated in upcoming new standard)</li>
</ul>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[As we’ve previously discussed, there are several insecure elements in RADIUS. We are currently working in the IETF (Internet Engineering Task Force) to close those gaps and improve security for everyone. This article outlines some of the current shortcomings of RADIUS, best practices for mitigating against them, and a roadmap for how these vulnerabilities will be addressed within the RADIUS standard.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/lock-in-network.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/lock-in-network.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">MS-CHAP is dead</title><link href="https://networkradius.com/articles/2023/11/24/MS-CHAP-is-dead.html" rel="alternate" type="text/html" title="MS-CHAP is dead" /><published>2023-11-24T12:00:00+00:00</published><updated>2023-11-24T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/11/24/MS-CHAP-is-dead</id><content type="html" xml:base="https://networkradius.com/articles/2023/11/24/MS-CHAP-is-dead.html"><![CDATA[<p>While MS-CHAP has been used since 1998, it uses DES encryption which was deprecated in 2002. Attacks on MS-CHAP itself have been known since 2006, and those attacks have only gotten better over time. New attacks show that it is possible to crack most user-generated passwords in milliseconds, using only commodity hardware such as a laptop or desktop PC.</p>

<!--more-->

<p>Conclusion?  <strong>MS-CHAP is insecure.  MS-CHAPv2 is insecure.  MS-CHAP is dead.</strong></p>

<p>This attack means that if you have sent MS-CHAP over the wider Internet in the past 10 years, you should assume that the underlying user passwords have been compromised.</p>

<p>While some people still claim that MS-CHAP is secure, the truth is that MS-CHAP is dead.  No one should use MS-CHAP outside of a secure transport protocol such as PEAP or TTLS.</p>

<h2 id="ms-chap-depends-on-cracked-des-encryption">MS-CHAP depends on cracked DES encryption</h2>

<p>The MS-CHAP authentication method was first created in 1998. At the time, it used the industry standard encryption method at the time, which was DES (Data Encryption Standard). The DES standard had been used across the U.S. government since the 1970’s as a secure way of exchanging confidential data.</p>

<p>Around the same time of the MS-CHAP standard however, critics of DES estimated that the key size was too short and efforts were afoot to crack it through brute force attacks. The Electronic Frontier Foundation created custom microchips and other hardware to successfully decrypt DES in 1998. Over the next two years, they were able to progressively decrease the cracking time from 56 hours, to <a href="https://web.archive.org/web/20131017055750/http://cryptome.org/jya/cracking-des/cracking-des.htm">less than a day</a>.</p>

<p><a href="../../../../../assets/img/2023/deep-crack-chip.svg" data-lightbox="appfoundry_image_set" data-title="Custom "><img src="../../../../../assets/img/2023/deep-crack-chip.svg" alt="Custom " class="" style="max-width:100%;" /></a></p>

<p><a href="../../../../../assets/img/2023/DES-cracking-machine.svg" data-lightbox="appfoundry_image_set" data-title="DES cracking machine from 1998"><img src="../../../../../assets/img/2023/DES-cracking-machine.svg" alt="DES cracker machine, built for a cost of $250,000 in 1998. Well within the reach of hostile governments and large corporations." class="" style="max-width:100%;" /></a></p>

<p>The successful attacks on DES cryptography led to it being replaced by AES (Advanced Encryption Standard) as the U.S. federal standard in 2002.</p>

<h2 id="ms-chap-implementation-of-des-is-flawed">MS-CHAP implementation of DES is flawed</h2>

<p>Even if DES was completely secure, there is a key flaw in the design of MS-CHAP that makes it highly vulnerable to attacks.  To understand the flaw in MS CHAP we need to look more closely at how DES is integrated with the protocol.</p>

<p>As part of the handshake protocol, MS-CHAP exchanges a 16 character NT hash of the password. These keys are mapped to DES keys, which uses 56 bit (7 characters) for keys for its encryption. The mismatch means that in order to use the NT hash with DES, there are 3 separate DES operations as seen below.</p>

<p><a href="../../../../../assets/img/2023/MS-CHAP-DES-implementation.svg" data-lightbox="appfoundry_image_set" data-title="DES cracking machine from 1998"><img src="../../../../../assets/img/2023/MS-CHAP-DES-implementation.svg" alt="MS-CHAP implementation of DES. The empty padding on the third key greatly simplifies cracking attempts on MS-CHAP." class="" style="max-width:100%;" /></a></p>

<p>Each byte of the NT hash maps to a DES key, but that leaves five (5) bytes left over. So the last DES key only uses the first two characters for the NT hash, and the rest of the key is filled with padding, which is all zeroes.</p>

<p><strong>This is the key flaw in the MS-CHAP implementation.</strong> Instead of filling out the last five characters of the final DES key with secure data (for example, by wrapping around to the beginning of the hash and re-using “Hash 1”, “Hash 2” etc), it is simply padded out with zeros. This means that the final DES key has only 16 bits of actual key data, and the rest of the key bits are known.</p>

<p><strong>The problem space is now only 2<sup>16</sup>, instead of 2<sup>56</sup></strong>. In other words, for DES key 3, there are only slightly over 65,000 possible values instead of over 72 Quintillion. On modern hardware, it is possible to “brute force” search all possible values for DES key 3, and find those 16 bits. While this attack is brute-force, 2<sup>16</sup> is not a large number, and doing 2<sup>16</sup> DES operations is trivial for any modern computer.</p>

<p>All that remains then is to crack the remaining 14 bytes of the NT hash. Admittedly, this is still a lot of key space to search: 2<sup>(56+56)</sup> or 2<sup>112</sup> which is a huge number. However in 2012, a key insight showed that you could leverage the design of MS-CHAPv2 to instead search only 2<sup>56</sup> possible keys, which could be cracked using a <a href="https://web.archive.org/web/20160316174007/https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/">brute force attack</a> in less than a day.</p>

<p>This time can be further reduced by noting that most passwords are generated by users, and in computer security terms, do not have large entropy. In human terms, that means that the passwords are likely to be re-used, and therefore guessable.</p>

<p>We can make many guesses by using freely available lists of <a href="https://www.ncsc.gov.uk/static-assets/documents/PwnedPasswordsTop100k.txt">most frequently used passwords</a>, and creating pre-build “dictionaries” which precompute the NT hash values for those passwords. These dictionaries can also be created for any additional information about targeted individuals such as birthdays, pet names, children names, company names / projects, etc.  A simple program can generate hundreds of millions or billions of such guesses, and store them in a simple database on commodity hardware. This database would take at most a few tens of gigabytes of space, which is less than many high-end games.</p>

<h2 id="the-final-nail-in-the-coffin">The final nail in the coffin</h2>

<p>In 2021, the final nail in the coffin of MS-CHAP security <a href="https://github.com/sensepost/assless-chaps/blob/main/assless-chaps-DC29-RFHackingVillage.pdf">was demonstrated</a> by leveraging a novel strategy of:</p>

<ol>
  <li>Brute force cracking the third DES key to get the last 16 bits of the NT-hash,</li>
  <li>Storing a database of billions of guessed passwords and their NT hash, indexed by the final 16 bits of the hash</li>
  <li>Using the found DES key to get a list of guessed passwords (index lookups are fast), which reduces the search space by 2<sup>16</sup></li>
</ol>

<p>The result was that it with a little bit of work and disk space, it is now possible to obtain the underlying MS-CHAP password very quickly, with much less than 2<sup>56</sup> possible work.</p>

<p>That is, if the database stores a table of 4 billion passwords, then dividing that search space by 2<sup>16</sup> means that the system only has to brute-force check about 65,000 passwords. The result of this algorithm attack means that MS-CHAP can be cracked by checking 64K DES keys, and then using large tables to get another 64K NT hashes to check. The combined cost of these two operations is very, very, small. A laptop with a few gigabytes of memory and a large SSD can crack MS-CHAP in only a few milliseconds.</p>

<p>In other words, if your organization sent MS-CHAP over the internet with user generated passwords, <strong>you can assume that those passwords are now in the hands of malicious actors, or the NSA, or both</strong>.</p>

<h2 id="some-notable-exceptions">Some notable exceptions</h2>

<p>There are some caveats to this doomsday proclamation, however.</p>

<p>The flaws of MS-CHAP can be mitigated by running it inside of TTLS or PEAP. This is the approach used by the eduroam community and it works well since those EAP methods protect MS-CHAP by wrapping it in a secure layer of TLS. Since TLS has not been broken, no one can see the MS-CHAP data, and the attack is stopped in its tracks.</p>

<p>Another factor that can make this attack somewhat less effective is by encouraging users to use computer generated passwords (for ex: the passwords suggested by web browsers or common password managers.) These randomly generated passwords will not appear on any of the pre generated password tables, and therefore will still require brute force effort to crack</p>

<p>This is small comfort however, as the brute force attack requires only 2<sup>56</sup> operations, and that was shown to be possible over 25 years ago!</p>

<p>Even if none of the above attacks worked, there is still a major security problem with MS-CHAP: it requires you to store clear-text passwords in the database. (Or NT-hashes, which are “clear-text equivalent.”) Any compromise of the database means that all user identities and passwords can be trivially copied by an attacker.</p>

<p>Our recommendation, then, is <strong>do not use MS-CHAP</strong>. Adding a PEAP or TTLS wrapper to simple MS-CHAP helps a little bit against some attackers, <strong>but it is still not secure</strong>.</p>

<h2 id="what-to-use-instead-of-ms-chap">What to use instead of MS-CHAP</h2>

<p><strong>We always maintain that the <a href="/articles/2022/04/11/is-pap-secure.html">most secure protocol</a> for authenticating users is PAP.</strong> Using PAP means that passwords can be stored in the database in a salted/hashed form. Given that the vast majority of data breaches have succeeded by targeting password databases, storing passwords in an encrypted form is <a href="/articles/2022/04/01/pap-vs-chap.html">definitively the most secure approach</a> for any authentication system.</p>

<h2 id="still-need-help">Still need help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[While MS-CHAP has been used since 1998, it uses DES encryption which was deprecated in 2002. Attacks on MS-CHAP itself have been known since 2006, and those attacks have only gotten better over time. New attacks show that it is possible to crack most user-generated passwords in milliseconds, using only commodity hardware such as a laptop or desktop PC.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/coffin-with-blue-balloons.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/coffin-with-blue-balloons.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Email Addresses are primary user identifiers?</title><link href="https://networkradius.com/articles/2023/07/21/email-addresses.html" rel="alternate" type="text/html" title="Email Addresses are primary user identifiers?" /><published>2023-07-21T12:00:00+00:00</published><updated>2023-07-21T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/07/21/email-addresses</id><content type="html" xml:base="https://networkradius.com/articles/2023/07/21/email-addresses.html"><![CDATA[<p>There is a lot of advice out there that <a href="https://ntietz.com/blog/email-address-not-identifier/">email addresses are not identifiers</a>.  Even Internet2 has a document explaining why <a href="https://spaces.at.internet2.edu/display/federation/why-is-email-not-an-appropriate-user-identifier">email is not an appropriate user identifier</a>.</p>

<p>What does this mean for RADIUS, especially since <a href="https://datatracker.ietf.org/doc/html/rfc7542#section-3.1">RFC 7542</a> allows using email addresses as identifiers?  Speaking as the author of RFC 7542, I think I can help you.</p>

<!--more-->

<p>The short answer is that an email address at <em>my</em> organization is not a valid identifier at <em>your</em> organization.  For the simple reason that my organization controls the mapping between the person (or people!) and the email address (or addresses!) that they use, and you don’t.  Since you don’t control this mapping, you have no idea who is behind an email address.</p>

<p>As such, email addresses are best used for contacting users.  But user identies at your site <em>must</em> be controlled by you.  Any email address(es) or physical addresses for a user should be additional fields associated with the user identity.  Other fields could be ones like login credentials, telephine number, billing information, rate plan, etc.  That separation allows the user identity to remain constant while other information about the user changes.</p>

<h2 id="relationship-to-rfc-7542-network-access-identifier-nai">Relationship to RFC 7542 Network Access Identifier (NAI)</h2>

<p>If I agree that email addresses are not user identifiers, then why does <a href="https://datatracker.ietf.org/doc/html/rfc7542">RFC 7542</a> allow them to be used as identifiers?</p>

<p>The answer is that the NAI is defined for <a href="https://datatracker.ietf.org/doc/html/rfc7542#section-3">routing inside of an AAA system</a>.  That is, when a user logs into your site (e.g. a visited network as with <a href="https://eduroam.org">eduroam</a>), that identifier is used to route your login request to the home network.  That home network knows who you are, and knows the association between the email address and the person.  The home network then authenticates you (or not), and returns success / fail to the visited network.</p>

<p>This routing means that the user identity at <em>my</em> organization is never validated by <em>your</em> organization.  Instead, the two organizations trust each other (via RADIUS proxying).  My organization can vouch for my user at your organization, and the same goes in reverse.  There is no need for your organization to know anything about the person behind the email address.  The address is just used as a <strong>routing label</strong>, not a <strong>personal identifier</strong>!</p>

<h2 id="gpdr-and-privacy">GPDR and Privacy</h2>

<p>Is it a good idea, then to use an email address for network access, such as with <a href="https://eduroam.org">eduroam</a>?</p>

<p><a href="https://datatracker.ietf.org/doc/html/rfc7542#section-2.4">No.</a></p>

<p>The network access identifier should contain <em>domain</em> routing information, such as <code class="language-plaintext highlighter-rouge">@example.com</code>.  There is no need for it to contain <em>user</em> identifiers, such as <code class="language-plaintext highlighter-rouge">bob@example.com</code>.  When the NAI contains identifying information for a particular user, then there are major impacys on user privacy, including <a href="https://gdpr-info.eu/">General Data Protection Regulation</a> (GPDR) issues.</p>

<p>That is, there is no need for the visited network (or any proxy) to identify a particular user.  Even worse, when proxying is done via RADIUS/UDP, then pretty much anyone can see who is accessing the network, which networks they are accessing, what devices they are using to access the network, etc.  We have written extensively on <a href="/articles/2022/10/04/radius-insecurity.html">RADIUS insecurity</a>, and we are working at the <a href="https://ietf.org">IETF</a> to <a href="https://datatracker.ietf.org/doc/draft-dekok-radext-deprecating-radius/">formally deprecate RADIUS/UDP</a>.</p>

<p>We understand that some RADIUS servers (or one in particular) do not permit anonymous NAIs.  We understand why people use that server, it’s simple, cheap, and it mostly works.  But we cannot in all good conscience recommend this practice.</p>

<h2 id="email-addresses-are-not-identifiers">Email addresses are not identifiers</h2>

<p>In conclusion, email addresses are not primary user identifiers, and should <em>never</em> be used as such.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[There is a lot of advice out there that email addresses are not identifiers. Even Internet2 has a document explaining why email is not an appropriate user identifier. What does this mean for RADIUS, especially since RFC 7542 allows using email addresses as identifiers? Speaking as the author of RFC 7542, I think I can help you.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/people-cityscape-network.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/people-cityscape-network.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Looking Forward to IETF 117</title><link href="https://networkradius.com/articles/2023/07/18/ietf-117.html" rel="alternate" type="text/html" title="Looking Forward to IETF 117" /><published>2023-07-18T12:00:00+00:00</published><updated>2023-07-18T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/07/18/ietf-117</id><content type="html" xml:base="https://networkradius.com/articles/2023/07/18/ietf-117.html"><![CDATA[<p>We have been involved in the <a href="http://ietf.org">Internet Engineering Task Force</a> (IETF) for a few decades now.  During that time, we have written many of the RADIUS standards.  We are still involved in the standards process, and this post explains how the new standards will affect you.</p>

<!--more-->

<p>The IETF is meeting in <a href="https://www.ietf.org/how/meetings/117/">San Francisco for IETF 117</a>.  We are working on a number of standards in different groups.</p>

<h2 id="radius-extensions-radext">RADIUS Extensions (RADEXT)</h2>

<p>The bulk of our work is in the <a href="https://datatracker.ietf.org/wg/radext/about/">RADIUS extensions</a> (RADEXT) working group.  The documents we are working on are:</p>

<ul>
  <li>
    <p><a href="https://datatracker.ietf.org/doc/draft-ietf-radext-radiusv11/">RADIUS v1.1</a>.  Updating RADIUS for 2023 technology!  This topic is covered in more detail in our other article, <a href="/articles/2023/05/25/introducing-radius-1-1.html">Introducing RADIUS 1.1</a></p>
  </li>
  <li>
    <p><a href="https://datatracker.ietf.org/doc/draft-dekok-radext-tls-psk/">TLS-PSK</a> The original RADIUS/TLS specifications did not describe how to use TLS-PSK with RADIUS.  This document corrects that mistake.  In many cases, it can be simpler to use pre-shared keys with RADIUS, than configuring clients with certificates.</p>
  </li>
  <li>
    <p><a href="https://datatracker.ietf.org/doc/draft-dekok-radext-deprecating-radius/">Deprecating insecure transports</a>.  This document suggests that it’s a bad idea to use “bare” UDP or TCP transports across the Internet.  We have more discussion on this topic in our <a href="/articles/2022/10/04/radius-insecurity.html">RADIUS Insecurity</a> article.</p>
  </li>
  <li>
    <p><a href="https://datatracker.ietf.org/doc/draft-dekok-radext-reverse-coa/">Reverse CoA</a>.  When a NAS connects to a RADIUS server via TLS, it can be difficult (or impossible) to send <code class="language-plaintext highlighter-rouge">CoA-Request</code> or <code class="language-plaintext highlighter-rouge">Disconnect-Request</code> packets to the NAS.  This document describes how to send CoA packets in “reverse” down that RADIUS/TLS connection.  While it is not yet a working group document, we believe that it will be published shortly.  It is most likely to be useful in <a href="https://wballiance.com/openroaming/">OpenRoaming</a>.</p>
  </li>
</ul>

<h2 id="eap-updates">EAP Updates</h2>

<p>We are working with the <a href="https://datatracker.ietf.org/wg/emu/about/">EAP Method Update</a> (EMU) working group to update the <a href="https://datatracker.ietf.org/doc/draft-ietf-emu-rfc7170bis/">TEAP RFC</a>.</p>

<p>There is a strong demand for TEAP, in part because of its ability to do provisioning inside of the TLS tunnel.  We have implemented TEAP in FreeRADIUS 3.2.3, and are working on updates and documentation.</p>

<p>We are also monitoring <a href="https://wiki.geant.org/display/GWP5/Development+VC%2C+20230523">EAP-FIDO</a>, which is a new proposed specification that uses <a href="https://fidoalliance.org/passkeys/">Passkeys</a> for 802.1X.  The hope is that EAP configuration will become little more than “Use EAP-FIDO for network access”.  It looks like this will not only work, but that it will not be too complicated to do.</p>

<p>If EAP-FIDO reaches its potential, then many Mobile Device Management (MDM) problems <em>simply go away</em>.  That is a good thing for enterprises and universities.</p>

<h2 id="dhc">DHC</h2>

<p>We are working with the [DHCP]((https://datatracker.ietf.org/wg/dhc/about/) working group to clarify implementation issues with DHCPv6.</p>

<p>Our customers have run into issues with DHCPv6.  We are working on updates to clarify “best practices” around DHCPv6.</p>

<h2 id="madinas">Madinas</h2>

<p>MAC address randomization can make MAC authentication difficult.  We are following the <a href="https://datatracker.ietf.org/wg/madinas/about/">Madinas</a> working group to ensure that new standards meet the markets needs, and are secure.</p>

<h2 id="tacacs">TACACS+</h2>

<p>Now that the <a href="https://datatracker.ietf.org/doc/html/rfc8907">TACACS+ RFC</a> has been published, the working group is updating the document for <a href="https://datatracker.ietf.org/doc/draft-ietf-opsawg-tacacs-tls13/">TACACS+ TLS</a>.  Many of our customers use TACACS+, and there is a strong need for a version of the protocol which uses modern cryptography.</p>

<h2 id="how-this-affects-people-using-freeradius">How this affects people using FreeRADIUS</h2>

<p>People using FreeRADIUS can rest assured that FreeRADIUS is compatible with all “up and coming” Internet standards.  In fact, led by Alan DeKok, the team at Network RADIUS continues to lead the industry in defining and implementing these standards, as we have done for decases.</p>

<p>Your RADIUS systems will continue to get more secure, and more flexible.</p>

<p>We continue to follow these, and other standards.  Our goal is to serve our customers, to improve the technology, and to make peoples lives easer.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[We have been involved in the Internet Engineering Task Force (IETF) for a few decades now. During that time, we have written many of the RADIUS standards. We are still involved in the standards process, and this post explains how the new standards will affect you.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/news-blue.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/news-blue.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Designing your network for fail-over</title><link href="https://networkradius.com/articles/2023/05/25/failover-network-design.html" rel="alternate" type="text/html" title="Designing your network for fail-over" /><published>2023-05-25T12:00:00+00:00</published><updated>2023-05-25T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/05/25/failover-network-design</id><content type="html" xml:base="https://networkradius.com/articles/2023/05/25/failover-network-design.html"><![CDATA[<p>An essential part of good network design is to plan for failures. In a RADIUS ecosystem, one major requirement is that clients can always connect to a RADIUS server, and that the system can continue to operate even after the loss of one or more RADIUS servers. This article walks through some good and bad fail-over network designs.</p>

<!--more-->

<p>One of our key design principles for network configuration is to <a href="/articles/2021/06/09/why-you-should-design-for-a-worst-case-scenario.html">always design for the worst case scenario</a>. It is a fact of life that at some point, a network component will fail. There are a variety of reasons for failure, and each of those reasons requires analysis. Designing for these failures is hard.</p>

<p>That is, it is easy to design a system which works when everything is fine. It is much harder to design a system which can gracefully adapt to failures. Designing for failure is just as important as designing for optimal performance, but it is a frequently overlooked aspect of network design.</p>

<p>In our work with clients, we often are asked to review network designs which will work just fine as long as nothing ever goes wrong, or if nothing ever changes. However, they are extremely fragile to any problems that occur (and they <em>will</em> occur). In this article, we look at network architectures which are intended to deal gracefully with the failure of a RADIUS server. Some designs work well, others less so.</p>

<h2 id="randomly-assigned-radius-servers">Randomly assigned RADIUS servers</h2>

<p>One solution for RADIUS server failure is to randomly assign clients to one of several RADIUS servers for authentication. This design does provide multiple servers for redundancy, but it is suboptimal. If one of the servers goes down, traffic is routed only to the available ones. It is also hard to know which of the clients were associated with the offline server and need to be reconnected. When something goes wrong. administrators have a random collection of clients which need to be fixed or checked.</p>

<p>This design adds some resiliency, but it greatly increases administrator load when the network has an issue, which is precisely the worst time to give administrators more work!</p>

<p><a href="../../../../../assets/img/2023/randomly-assigned-radius-servers.svg" data-lightbox="appfoundry_image_set" data-title="Randomly assigned RADIUS servers"><img src="../../../../../assets/img/2023/randomly-assigned-radius-servers.svg" alt="Randomly assigned RADIUS servers" class="" style="max-width:200%;" /></a></p>

<h2 id="geographically-assigned-radius-servers">Geographically assigned RADIUS servers</h2>

<p>An improvement to the above design RADIUS servers is to <strong>separate the servers by geographical area</strong>. In the US for example, it is common to have separate servers assigned to east, central, and west regions.</p>

<p>Depending on the IP address of the client, clients are configured to communicate with the RADIUS server (or servers) which are responsible for that specific geographical area. The client configuration can also specify a secondary server if the primary is not available.</p>

<p>Geographically assigning RADIUS servers to clients has a few advantages over the randomly assigned solution mentioned previously.</p>

<ul>
  <li>If one of the RADIUS servers goes down, it is clear which clients have been affected and need to be reconnected</li>
  <li>Multiple RADIUS servers for each geographical area provides a certain degree of redundancy.</li>
</ul>

<p>However, <strong>specifying the fail-over options in the client has a significant drawback</strong>.</p>

<p>The unfortunate truth is that fail-over implementations vary widely by client, and these implementations can often be unreliable. For example, some clients check server availability very infrequently (if at all), resulting in <strong>some clients never getting switched back to their original server</strong> once the problem has been resolved. Some other clients check for server availability too frequently, leading to clients getting moved from one server to another, impacting performance.</p>

<p><a href="../../../../../assets/img/2023/geographically-assigned-radius-servers.svg" data-lightbox="appfoundry_image_set" data-title="Geographically assigned RADIUS servers"><img src="../../../../../assets/img/2023/geographically-assigned-radius-servers.svg" alt="Geographically assigned RADIUS servers" class="" style="max-width:200%;" /></a></p>

<h2 id="geographically-assigned-radius-groups">Geographically assigned RADIUS groups</h2>

<p>An improvement to the geographically assigned RADIUS servers is to <strong>create a local management network or subnet for each geographic area</strong>. All of the geographical areas can use the same subnet and list of server IP addresses, as each area does not need to communicate with another area. The servers can share an IP address, using a system like High Availability (HA), or a load balancer.</p>

<p>Each area then can contain multiple RADIUS servers, but these details are hidden from clients. From the client point of view, there is only a single IP address for each geographic area.</p>

<p>Creating local networks for each area has several advantages:</p>

<p><strong>Simplified client configuration and maintenance</strong>. RADIUS servers can be added and removed from each area without requiring any changes to the region specific client.</p>

<p><strong>Improved stability of the overall ecosystem</strong>. Fail-over implementation in clients is notoriously unreliable. Putting the fail-over logic within the network itself makes the behavior more stable and predictable.</p>

<p><strong>Greater control over fail-over behavior.</strong> It is simply a better choice to put network logic within the network itself, rather than in the client. By removing any dependencies on the client implementation, the system administrator can have much more fine-tuned control over what happens in the event of failures.</p>

<p>Creating networks to serve specific geographic areas, and configuring clients to point to the appropriate area still has one significant drawback however. It still <strong>requires the clients to maintain some logic about the network</strong>. Ideally, we want our clients to be as simple as possible, and put all the network logic within the network. We can improve on this design further.</p>

<p><a href="../../../../../assets/img/2023/geographically-assigned-radius-groups.svg" data-lightbox="appfoundry_image_set" data-title="Geographically assigned RADIUS groups"><img src="../../../../../assets/img/2023/geographically-assigned-radius-groups.svg" alt="Geographically assigned RADIUS groups" class="" style="max-width:200%;" /></a></p>

<h2 id="single-radius-ip-address">Single RADIUS IP address</h2>

<p>Our last solution completely abstracts the geographical designations of the RADIUS servers and <strong>presents only one single IP address to all of the clients</strong>. This practice is called “anycast”, and is done by using a routing protocol such as BGP or OSPF.</p>

<p>Putting all the RADIUS servers behind one IP address means that all the <strong>clients can be configured in exactly the same way</strong>. Unlike the geographically assigned RADIUS groups, the clients don’t even need to know what region they are in so that they can direct traffic accordingly. In this scenario, the clients are simple in the sense that they contain no network information at all, aside from the one RADIUS IP address.</p>

<p>The single RADIUS IP address solution has the following advantages</p>

<p><strong>Standardized client configuration</strong>. Unlike any of the other solutions discussed above, this configuration allows <em>all</em> clients to be configured identically. When all clients have the same standard configuration, deploying and maintaining them becomes almost trivial.</p>

<p><strong>Scaling the backend ecosystem doesn’t require any changes to the clients</strong>. The backend can be arbitrarily complex behind the IP address used by all the clients. For example, additional RADIUS servers can be added, a load balancer can be introduced to distribute traffic to a <a href="/articles/2023/03/01/scaling-your-radius-ecosystem.html">sharded configuration</a>, or RADIUS servers can be split between live and historical data. These changes can be made behind the scenes without making any changes at all to the clients.</p>

<p><strong>Improved fail-over capability</strong>. Because the routing logic is in the network and not in the clients, the overall system can be extremely resilient to even catastrophic events. For example, if there is a major power outage in the Eastern region, the traffic can simply be rerouted to the Western RADIUS servers without the clients ever noticing a difference. Or in extreme cases where multiple areas go down, new RADIUS servers can be spun up in minutes and all the traffic redirected to the new instances.</p>

<p><a href="../../../../../assets/img/2023/single-radius-ip-address.svg" data-lightbox="appfoundry_image_set" data-title="Single RADIUS IP address"><img src="../../../../../assets/img/2023/single-radius-ip-address.svg" alt="Single RADIUS IP address" class="" style="max-width:200%;" /></a></p>

<h2 id="design-principles-for-resilient-network-design">Design principles for resilient network design</h2>

<p>Our discussion of different fail-over design configurations draws on some of our core network design principles.</p>

<ul>
  <li><strong>Always design for the worst case scenario.</strong> Bad things will happen, be prepared.</li>
  <li>Keep the <strong>clients as simple as possible</strong>. Keep network logic in the place most capable of handling it, in the network itself. You can control the network, you cannot control the client fail-over implementation.</li>
  <li>Look for ways to <strong>centralize configuration</strong>. If many different parts of your system require custom configuration, you’re probably making it more complex than it needs to be.</li>
  <li>Designing for failure not only makes your system more resilient, it also <strong>usually results in simplified overall configuration</strong>, maintenance, and ability to scale.</li>
</ul>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[An essential part of good network design is to plan for failures. In a RADIUS ecosystem, one major requirement is that clients can always connect to a RADIUS server, and that the system can continue to operate even after the loss of one or more RADIUS servers. This article walks through some good and bad fail-over network designs.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/network-failover-design.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/network-failover-design.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Introducing RADIUS 1.1</title><link href="https://networkradius.com/articles/2023/05/25/introducing-radius-1-1.html" rel="alternate" type="text/html" title="Introducing RADIUS 1.1" /><published>2023-05-25T12:00:00+00:00</published><updated>2023-05-25T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/05/25/introducing-radius-1-1</id><content type="html" xml:base="https://networkradius.com/articles/2023/05/25/introducing-radius-1-1.html"><![CDATA[<p>RADIUS has a problem. The name of the problem is MD5. The MD5 hash algorithm was defined in 1991, and was used in RADIUS in 1993. However, MD5 is no longer secure. It is a bit of a miracle that RADIUS is still safe to use, even though it is using 30 year-old cryptographic primitives!</p>

<p>It’s time for us to fix RADIUS.</p>

<!--more-->

<p>We had originally proposed <a href="/articles/2022/10/12/announcing-sradius.html">SRADIUS</a> earlier this year to solve the problem of using MD5. We received a lot of useful feedback from the community about the name, and the technical content of the proposal. We have integrated those comments into a new and improved standard which has been accepted as a Working Group Document by the <a href="https://ietf.org/">IETF</a>. This new standard is called <a href="https://datatracker.ietf.org/doc/draft-ietf-radext-radiusv11/">RADIUS 1.1</a>, and replaces the earlier <a href="/articles/2022/10/12/announcing-sradius.html">SRADIUS</a> proposal.</p>

<h2 id="what-is-radius-11">What is RADIUS 1.1?</h2>

<p>In short, RADIUS 1.1 fixes a few major issues dating back to 1993. The two major changes are:</p>

<p><strong>1) Remove dependency on old cryptography</strong></p>

<p>The original RADIUS protocol relies on MD5 encryption, which is decades old and is no longer secure. Worse, the FIPS (Federal Information Processing Standards) specifications do permit systems to use MD5, which makes it difficult to use RADIUS in a FIPS compatible environment.</p>

<p><strong>2) Remove the 8-bit limit on the number of packets per connection</strong></p>

<p>The original RADIUS protocol tracked requests and responses via an 8-bit “Identifier” field. This meant that only 256 packets could be sent from client to server (without getting a response), before the client had to open a new connection! As a result, it was difficult to use RADIUS in environments with high packet rates.</p>

<p>RADIUS 1.1 uses a 32-bit <a href="https://datatracker.ietf.org/doc/html/draft-ietf-radext-radiusv11-01#section-4.2">Token</a> field to track requests and responses. Which means that a client can now send four billion packets to a server (without getting a response), before the client needs to open a new connection. High packet rates are now much easier to achieve.</p>

<h2 id="what-else-has-changed-from-radius-to-radius-11">What else has changed from RADIUS to RADIUS 1.1?</h2>

<p>Not much. All of the attributes are the same. The RADIUS packet types are the same. The RADIUS packet header is mostly the same. The RADIUS state machine is the same. The attribute encoding, contents, format, meaning, etc. are all the same.</p>

<p>If you are implementing a RADIUS client or server, we suggest reading <a href="https://datatracker.ietf.org/doc/draft-ietf-radext-radiusv11/">the specification</a> for full details.</p>

<p>If you are running a RADIUS client or server, just know that “RADIUS 1.1” is little more than a configuration flag that products will implement. The flag can be enabled or disabled by the administrator, and that is it. When the flag is disabled, RADIUS is used. When the flag is enabled, RADIUS 1.1 is used.</p>

<p>The use of RADIUS 1.1 is negotiated for each connection, and it is therefore fully compatible with existing RADIUS implementations. It will “fall back” to using normal RADIUS if one end of a connection does not use RADIUS 1.1. So it is completely safe for an administrator to enable it everywhere.</p>

<p><strong>The only practical difference for an administrator is that enabling RADIUS 1.1 means that the RADIUS server is now fully FIPS compatible.</strong></p>

<h2 id="what-are-the-limitations-of-radius-11">What are the limitations of RADIUS 1.1?</h2>

<p>RADIUS 1.1 can only be used over TLS connections, either as TLS (over TCP), or DTLS (over UDP). It uses the same port (2083) as existing RADIUS/TLS connections.</p>

<h2 id="what-is-the-current-status-of-radius-11">What is the current status of RADIUS 1.1?</h2>

<p>The RADIUS 1.1 specification has been accepted by the IETFs RADEXT (RADIUS Extenations) working group. It is likely to be accepted as an IETF standard in mid 2023, and published towards the end of 2023.</p>

<h2 id="where-can-i-get-radius-11">Where can I get RADIUS 1.1?</h2>

<p>You can <a href="https://github.com/FreeRADIUS/freeradius-server/tree/v3.2.x">download RADIUS 1.1</a> right now from GitHub. It is available in FreeRADIUS version 3.2.3 via a compile-time option. Using a compile-time option means that the existing behavior of FreeRADIUS is not changed. However, as the source code is available, it allows implementers to test their software against FreeRADIUS.</p>

<p>Once other vendors have implemented RADIUS 1.1 as well, we will make it part of the official release.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[RADIUS has a problem. The name of the problem is MD5. The MD5 hash algorithm was defined in 1991, and was used in RADIUS in 1993. However, MD5 is no longer secure. It is a bit of a miracle that RADIUS is still safe to use, even though it is using 30 year-old cryptographic primitives! It’s time for us to fix RADIUS.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/stacked-blocks.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/stacked-blocks.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The problem with cloud hosted databases</title><link href="https://networkradius.com/articles/2023/03/14/cloud-hosted-databases.html" rel="alternate" type="text/html" title="The problem with cloud hosted databases" /><published>2023-03-14T12:00:00+00:00</published><updated>2023-03-14T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/03/14/cloud-hosted-databases</id><content type="html" xml:base="https://networkradius.com/articles/2023/03/14/cloud-hosted-databases.html"><![CDATA[<p>The promise of cloud hosted infrastructure sounds tempting. Someone else manages your database, you pay only for what you need, and the database can scale up with your business as it grows. However, the pricing for cloud hosted databases is optimized for non-RADIUS use cases which can result in <strong>surprisingly high operational costs when used as part of a RADIUS ecosystem</strong>.</p>

<!--more-->

<p>Many cloud providers such as AWS offer database hosting services which seem reasonably priced at a first glance. They also typically offer additional benefits over a “self hosted” system such as security, tiered support, and scalability. This combination makes cloud hosted databases a sensible choice for many organizations.</p>

<p>That said, some of our clients have been blind-sided with high cloud costs for their hosted RADIUS databases. Why does this happen?</p>

<h2 id="most-uses-of-cloud-databases-are-for-reads">Most uses of cloud databases are for reads</h2>

<p>A typical use-case for cloud databases is to store large amounts of data, and to do many queries. The data is updated occasionally, but not often. In many cases, reads outnumber writes one hundred to one.</p>

<h2 id="write-operations-are-more-expensive">Write operations are more expensive</h2>

<p>The main issue with hosted databases is that the pricing models are based on the use-cases where database <em>read</em> operations strongly outnumber the database <em>writes</em>. In some cases, <strong>write operations can cost five times as much as read operations!</strong></p>

<p>This model is fine if most of what you need to do is query a customer database or inventory system, and only occasionally do writes. However, the database usage pattern in a RADIUS ecosystem can be the exact opposite of this scenario, with the number of writes at least equal to the number of reads, and sometimes more.</p>

<p>For example, if you need to keep track of session data for accounting purposes, or if you keep your <a href="/articles/2022/05/24/split-historical-database.html">historical data separate from your live data</a>, each RADIUS accounting packet results in one database read, and one database write. For an ISP with a million users, this can be a million read/write cycles, every ten minutes, 24 hours a day, seven days a week. The database write costs alone can quickly reach tens of thousands of dollars a month. This expense would be over and above the cost of storing hundreds of gigabytes of accounting data.</p>

<p>These numbers are enormous when you consider a comparison with a more conventional cloud storage scenario where reads outnumber writes by 100 times, a RADIUS server has closer to 1-1 read/write distribution. Which means that <strong>using RADIUS in the cloud can be hundreds of times more expensive than a non-RADIUS</strong> use-case!</p>

<h2 id="the-performance-is-artificially-throttled">The performance is artificially throttled</h2>

<p>Some cloud hosting companies will also artificially throttle throughput at lower price tiers. This means that a smaller database will get slower performance, f<strong>orcing the customer to pay for more storage than they need</strong>, in order to get the performance they want.</p>

<p>In RADIUS systems, it is common to expect performance of thousands of reads/second to authenticate users, even with relatively small databases. In the artificially throttled cloud model, you cannot get this level of throughput unless you pay for more storage capacity which then also permits higher throughput.</p>

<p>Coupling the pricing for performance with storage capacity means that customers have to choose the most expensive option to get the functionality they need from the cloud. The alleged “benefits of the cloud” turn out to have their costs, just like any other solution. In fact, we have seen several clients need to unnecessarily inflate the size of their databases simply to get better performance.</p>

<h2 id="shared-resources-are-throttles-resources">Shared resources are throttles resources</h2>

<p>In many cases, it is possible to use a cloud virtual machine (VM), but not the cloud database. You can install your own database, and get a much better cost / performance ratio. There is still the downside that <strong>the cloud VM is using shared resources, and performance might just drop to near-zero for periods of time</strong>! If another VM on the same physical system is using large amounts of CPU time, disk IO, or network connectivity, then other VMs on the system can get “starved” of resources.</p>

<p>While such a cloud system may be “up” for purposes of monitoring, its performance will be minimal. So it might as well be “down”, as it cannot handle the load it normally needs to process.</p>

<h2 id="what-to-do-instead">What to do instead</h2>

<p>If your organization is exploring cloud storage because you don’t want the overhead of managing your own database, and “cloud is cheaper”, there are other options.</p>

<p>We often recommend that our clients set up their own database and put it on their own hardware. They can then simply <strong>store their data server in a third party data center</strong>, which will provide physical security and temperature control. The data center will typically only charge for traffic, not storage because you are using your own hardware. This pricing model is often <strong>much truer to the promise of paying for “only what you need”</strong> than most cloud storage providers.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[The promise of cloud hosted infrastructure sounds tempting. Someone else manages your database, you pay only for what you need, and the database can scale up with your business as it grows. However, the pricing for cloud hosted databases is optimized for non-RADIUS use cases which can result in surprisingly high operational costs when used as part of a RADIUS ecosystem.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/cloud-storage.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/cloud-storage.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Database design principles</title><link href="https://networkradius.com/articles/2023/03/10/database-design-principles.html" rel="alternate" type="text/html" title="Database design principles" /><published>2023-03-10T12:00:00+00:00</published><updated>2023-03-10T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/03/10/database-design-principles</id><content type="html" xml:base="https://networkradius.com/articles/2023/03/10/database-design-principles.html"><![CDATA[<p>Database design is often overlooked as a critical element of a RADIUS ecosystem. In practice, when we work with our clients, we usually spend the bulk of our time optimizing the database architecture. Our time spent on FreeRADIUS is small in comparison. Why? Because the difference between a fast, reliable RADIUS server and a slow, unstable one, <a href="/articles/2022/01/10/its-always-the-database.html">is almost always the database</a>.</p>

<!--more-->

<p>It is important to remember that there is no “one size fits all” approach to database architecture for RADIUS. Rather, it is helpful to <strong>start with how you plan on using the database, and then design a system which supports those use-cases.</strong></p>

<p>Here are some of the most common considerations:</p>

<ul>
  <li>
    <p>How many users are authenticating on your network?</p>
  </li>
  <li>
    <p>What kind of authentication protocols are they using?</p>
  </li>
  <li>
    <p>How are passwords stored in the DB? Encrypted? Cleartext?</p>
  </li>
  <li>
    <p>Do you need to keep track of accounting information?</p>
  </li>
  <li>
    <p>Are you billing users for their usage?</p>
  </li>
  <li>
    <p>Do you have multiple locations?</p>

    <ul>
      <li>If so, how do you synchronize the database between the locations?</li>
    </ul>
  </li>
  <li>
    <p>Do you need to keep track of historical data for legal reasons?</p>
  </li>
  <li>
    <p>Do you need to detect and/or stop credential sharing?</p>
  </li>
  <li>
    <p>Do users tend to authenticate once during the day or do they authenticate multiple times throughout the day?</p>
  </li>
  <li>
    <p>Are you doing IP address assignment?</p>

    <ul>
      <li>How many IP addresses need to be managed?</li>
    </ul>
  </li>
</ul>

<p>All of these factors should be considered when designing your RADIUS database ecosystem. Some of these might seem obvious, but others are less intuitively connected to database implications.</p>

<h2 id="number-of-users">Number of users</h2>

<p>This is probably the most intuitively understood factor for database design. Very large databases can be slower to respond than smaller ones, especially if the indexes are not carefully designed. One way to address these issues is to add more databases, either in a “cross bar” design, or as load-balanced shards. See our discussion on <a href="/articles/2023/03/01/scaling-your-radius-ecosystem.html">scaling RADIUS infrastructure</a> .</p>

<h2 id="tracking-accounting-information">Tracking accounting information</h2>

<p>If your business needs to bill customers for their network usage, you should consider <strong>splitting the authentication and accounting functionality</strong> of your RADIUS system into separate databases.</p>

<p>Separating the two capabilities into independent databases means that <strong>users can still be authenticated if the accounting database is slow or unavailable</strong>. As RADIUS clients will retransmit accounting packets, these retransmits can work around an accounting database being down for a short period of time, and often no accounting information will be lost. On the other hand, if the authentication database is down, no user can get onto the network, and many users will call support.</p>

<p>For organizations which don’t need to track accounting information, such as typical enterprises or universities, this design is not necessary. However, for ISPs and telecoms, it is usually foundational to our RADIUS ecosystem design. See our article about <a href="/articles/2021/02/10/separate-authentication-and-accounting-functionality.html">separating Accounting from Authentication functionality</a>.</p>

<p>It is also possible to split the accounting database into “live” and “historical” systems. The RADIUS server will write to the “live” system, and the “historical” system can be used for complex end of month billing queries. These queries may take significant resources on the database, which could negatively affect the RADIUS server if the queries were done on the “live” system.</p>

<h2 id="servicing-multiple-locations">Servicing multiple locations</h2>

<p>Many large organizations have multiple locations. From universities with multiple campuses in the same general area, to ISPs with locations all over the country, to enterprises with locations that span the globe. To support multiple locations, we typically recommend cloning the primary RADIUS server and its related database(s). There are definitely nuances to this approach depending on the specific requirements of the organization. See our <a href="/articles/2020/12/10/design-blueprint-for-universities.html">design blueprint for universities</a>, and our <a href="/articles/2021/02/10/designing-RADIUS-multi-site-systems.html">design strategy for multi-site ISPs</a>.</p>

<h2 id="retaining-historical-data">Retaining historical data</h2>

<p>Many ISPs and telecoms are required to maintain historical data to comply with regulatory requirements. Keeping current session data in a separate database from historical session data is strongly recommended in this situation. The “live” accounting database is small and needs to be fast, whereas the “historical” database can be many terabytes in size and has fewer requirements for speed. See our article on <a href="/articles/2022/05/24/split-historical-database.html">separating historical data</a>.</p>

<h2 id="preventing-credential-sharing">Preventing credential sharing</h2>

<p>In some cases,credential sharing can be a major issue for ISPs, resulting in significant losses in revenue. To prevent credential sharing, the RADIUS infrastructure must check all new sessions against all current live sessions to ensure that there aren’t more than one session at a time for a given user. The database design needs to support more than just a simple authentication query for each new session. See our <a href="/articles/2021/02/10/designing-RADIUS-multi-site-systems.html">design strategy for multi-site ISPs</a> for a detailed discussion.</p>

<h2 id="supporting-authentication-peaks">Supporting authentication “peaks”</h2>

<p>In most university settings, authentication requests tend to come in waves at the beginning of each class period. This places unique demands on the RADIUS infrastructure. See our <a href="/articles/2020/12/10/design-blueprint-for-universities.html">design blueprint for universities</a> for a detailed discussion.</p>

<h2 id="the-bottom-line">The bottom line</h2>

<p><strong>Many organizations need to support more than one of these considerations.</strong> For example, a university might have multiple locations <em>and</em> authentication peaks. Or an ISP might have millions of users, and must track accounting information, and services multiple locations, and must retain historical information. The result is that RADIUS system design requires expertise, and a deep understanding of RADIUS and databases. It is just not possible to pick “a good design” and use it everywhere.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[Database design is often overlooked as a critical element of a RADIUS ecosystem. In practice, when we work with our clients, we usually spend the bulk of our time optimizing the database architecture. Our time spent on FreeRADIUS is small in comparison. Why? Because the difference between a fast, reliable RADIUS server and a slow, unstable one, is almost always the database.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/complex-database.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/complex-database.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Scaling your RADIUS ecosystem</title><link href="https://networkradius.com/articles/2023/03/01/scaling-your-radius-ecosystem.html" rel="alternate" type="text/html" title="Scaling your RADIUS ecosystem" /><published>2023-03-01T12:00:00+00:00</published><updated>2023-03-01T12:00:00+00:00</updated><id>https://networkradius.com/articles/2023/03/01/scaling-your-radius-ecosystem</id><content type="html" xml:base="https://networkradius.com/articles/2023/03/01/scaling-your-radius-ecosystem.html"><![CDATA[<p>Not all RADIUS systems are the same, and the system architecture can vary wildly. For example, a network design which works well for 10,000 users will likely not work well for 10,000,000 users. It can be difficult to just “scale up” a RADIUS system. In most situations, the entire system architecture has to change.</p>

<!--more-->

<h2 id="basic-radius-configuration">Basic RADIUS configuration</h2>

<p>The most simple and straightforward RADIUS system consists of a single RADIUS server and a single database.</p>

<p><a href="../../../../../assets/img/2023/one-to-one-configuration.svg" data-lightbox="appfoundry_image_set" data-title="One-to-one Configuration.svg"><img src="../../../../../assets/img/2023/one-to-one-configuration.svg" alt="One-to-one Configuration" class="" style="max-width:200%;" /></a></p>

<p><strong>This one-to-one configuration is appropriate for networks that need to support relatively small numbers of users.</strong> As a rule-of-thumb, a single RADIUS server and database is a reasonable implementation for up to 100,000 users.</p>

<p>However, this one-to-one setup doesn’t work very well for more than 100,000 users and is vulnerable to failure. If either the RADIUS system or the database are down, the entire system is down. Moreover, upgrading anything requires you to take the entire system offline, which is often not acceptable.</p>

<h2 id="radius-crossbar-configuration">RADIUS crossbar configuration</h2>

<p>For networks serving roughly between 100,000 and 1 million users, we usually recommend a “crossbar configuration” to improve performance and introduce redundancy into the system</p>

<p><a href="../../../../../assets/img/2023/crossbar-configuration.svg" data-lightbox="appfoundry_image_set" data-title="Crossbar Configuration.svg"><img src="../../../../../assets/img/2023/crossbar-configuration.svg" alt="Crossbar Configuration" class="" style="max-width:200%;" /></a></p>

<p>In this architecture, RADIUS server 1 normally uses Database 1, and RADIUS server 2 normally uses Database 2. The two databases are synchronized with each other so that they contain the same information.</p>

<p>In the event that Database 1 fails or needs maintenance, RADIUS 1 can then easily switch over to using Database 2. Similarly, if Database 2 goes down, RADIUS 2 can seamlessly transition to using Database 1. If one of the RADIUS servers goes down or needs upgrading, the other RADIUS server takes over, and users experience no disruption in service.</p>

<p><strong>The crossbar configuration is generally suitable for up to about 1 million users.</strong> Some more scalability can be gained by deploying multiples of the same configuration in multiple geographic locations.</p>

<h2 id="load-balanced-configuration">Load balanced configuration</h2>

<p>For networks that must support over 1 million users, we recommend a load balanced or “sharded” configuration.</p>

<p><a href="../../../../../assets/img/2023/sharded-configuration.svg" data-lightbox="appfoundry_image_set" data-title="Sharded Configuration.svg"><img src="../../../../../assets/img/2023/sharded-configuration.svg" alt="Sharded Configuration" class="" style="max-width:200%;" /></a></p>

<p>In a sharded architecture, there are multiple pairs of RADIUS servers and databases, and a load balancer distributes the traffic between them. The number of shards can scale up depending on the number of users. The databases are synchronized so that they all contain the same information.</p>

<p><strong>The benefit of a sharded configuration are that it can scale very easily.</strong> As the number of users grows, more RADIUS/Database pairs can be added. There is no need to change the client configuration, or create complex fail-over scenarios. Simply add more back-end systems, and the load accepted by the RADIUS servers will scale nearly without limit.</p>

<p><strong>Sharded configurations also provide many levels of redundancy.</strong> If any component of any of the “shards” are compromised or is taken down for maintenance, the load balancer detects that situation, and stops sending packets to that particular shard temporarily. When the shard comes back online, the load balancer will automatically start using it again.</p>

<p>All of these configurations can be used in conjunction with any of the other RADIUS database architectures for specific characteristics. For example, it is possible to separate accounting from authentication functionality, or split historical data from “live data”. There is no need to use the same architecture for authentication and accounting. There is no need to use the same architecture in different locations.</p>

<p>For more details on RADIUS system architecture, see our article on RADIUS database architecture considerations.</p>

<h2 id="the-costs-of-implementing-the-wrong-design">The costs of implementing the wrong design</h2>

<p>There are many costs to using the wrong design for your network. The simplest of course is increased expense, time, and effort for complex systems which are not needed. Similarly, a system which is too small will not be able to handle the traffic, which will result in users being unable to access the network.</p>

<p>It may be tempting to use cloud services which automatically scale, and are billed only for services used. However, using cloud services is not always recommended, as they have their own costs and benefits. We will cover those services in another article.</p>

<p>As with all summary articles, this one provides a high level summary of the technical issues. The numbers given above are only a guideline, and are not intended to be a “written in stone” set of recommendations. Your individual architecture may differ from the ones described here, depending on your local requirements.</p>

<h2 id="need-more-help">Need more help?</h2>

<p>Network RADIUS has been helping clients around the world design and deploy their RADIUS infrastructure for 20 years. We specialize in complex systems and have seen pretty much every variation and problem out there. If you want help from the people who wrote FreeRADIUS, <a href="/request/">visit our quote page</a> to contact us for a consultation.</p>]]></content><author><name></name></author><category term="articles" /><summary type="html"><![CDATA[Not all RADIUS systems are the same, and the system architecture can vary wildly. For example, a network design which works well for 10,000 users will likely not work well for 10,000,000 users. It can be difficult to just “scale up” a RADIUS system. In most situations, the entire system architecture has to change.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://networkradius.com/assets/img/blog/grow-concept.jpg" /><media:content medium="image" url="https://networkradius.com/assets/img/blog/grow-concept.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>