You are on page 1of 5


Configuring FreeRADIUS to support Cisco AAA Clients — Evil Routers

Achievement Unlocked
Free CCNA Labs




Configuring FreeRADIUS to support Cisco AAA
by Jeremy L. Gaddis on November 19, 2008 · 34 comments
in Networking
In this demonstration, we’re going to install FreeRADIUS onto a CentOS 5.2 server and configure it to support
AAA on Cisco devices.
“FreeRADIUS is the most widely deployed RADIUS server in the world. It is the basis for multiple
commercial offerings. It supplies the AAA needs of many Fortune­500 companies and Tier 1 ISPs. It is
also widely used in the academic community, including eduroam. The server is fast, feature­rich,
modular, and scalable.” –FreeRADIUS home page
I’ve been using FreeRADIUS in production for a few years now, mostly to support wireless users. One of the
benefits of FreeRADIUS — besides being open source, of course — is the numbers of backends one can use for
“If a password is not available locally for some reason, the server can pass the authentication to
another system such as LDAP, PAM, Unix (/etc/passwd), Kerberos, Active Directory, or RADIUS
server via RADIUS proxying. Local programs (e.g. CGI scripts) can also be used to authenticate users
via shell scripts or any other method. Perl or Python scripts can be pre­loaded into the server, which
significantly lowers the cost of running such programs.”
Powerful, huh? Indeed.
For this demonstration, I’m installing a new CentOS 5.2 virtual machine on my MacBook under VMware Fusion.
Installing the operating system, however, is beyond the scope of this document. Also, we’ll just be using the local
system database for now — we’ll save SQL and LDAP (perhaps even Active Directory) authentication for later.
After we get FreeRADIUS up and running, we’ll set up a user account and then configure a Cisco router to use
RADIUS for authentication.
Let’s begin with installing FreeRADIUS by running (as root) the following command:­freeradius­to­support­cisco­aaa­clients/


 we must let FreeRADIUS know about the user.255.16/3/2016 Configuring FreeRADIUS to support Cisco AAA Clients — Evil Routers [root@bertram ~]# yum ‐y install freeradius  . Normally.635: %LINEPROTO‐5‐UPDOWN: Line protocol on Interface FastEthernet3/0. we need to create a user account in the local user database that we’ll use for actually authenticating to R1.168.  Complete!  [root@bertram ~]#  “yum” should have went out. we need to set ‘user = root’ and ‘group = root’ in radiusd. Before we can do that. Because FreeRADIUS will need to use the local system database for authentication.1.1. Using other authentication backends. connectivity to the RADIUS server is lost.201 {    secret = SECRET_KEY    shortname = R1    nastype = cisco  } Then. and change the lines that reads “user = radiusd” and “group = radiusd” to “user = root” and “group = root”.. on the FreeRADIUS side. Using the “cisco­avpair” attribute in this manner allows us to automatically assign privilege level 15 to the user.1. just creating a new user account and setting the password. Add the following to the end of /etc/raddb/clients. would not require this change and would allow the FreeRADIUS service to run under the default “radiusd” unprivileged account. Note that this (running our daemons as root) is almost always something we want to avoid. Next. you can likely skip this step: R1(config)# interface fastethernet 3/0  R1(config‐if)# ip address 192. our router (R1) will have IP address 192. For the sake of this demonstration. we wouldn’t do that — just run “passwd cisco” and enter the password when prompted: [root@bertram ~]# /usr/sbin/useradd cisco  [root@bertram ~]# echo secret | passwd ‐‐stdin cisco  Changing password for user cisco. our Cisco router. Assuming you already have your router up and running. removing the requirement for the user to issue “enable” (and the enable secret) in order to gain elevated access. Let’s create a user named “admin” with a password of “letmein”: R1(config)#username admin privilege 15 secret letmein Under normal circumstances. I’m going to assume that you’re starting from a default configuration.conf.conf. we need to let FreeRADIUS know about our NAS — in this case.635: %LINK‐3‐UPDOWN: Interface FastEthernet3/0. just open up /etc/raddb/radiusd.    cisco‐avpair = "shell:priv‐lvl=15" This notifies FreeRADIUS of a local user account named “cisco”. we’ll never use this local account — only when the RADIUS server is unavailable. such as SQL or LDAP.conf: client 192. The first thing we want to do is create a “fallback” user account (on the router itself) that we can use to authenticate if. grabbed the appropriates packages and dependencies.1. I’ve passed the plain­text password into “passwd” via stdin so that you can see it. respectively. This is easy enough. and installed them. changed state to up  *Mar 1 00:10:15..51  http://evilrouters. The first thing I need to do is configure my interface on R1 and verify we can ping the RADIUS­freeradius­to­support­cisco­aaa­clients/ 2/5 .  passwd: all authentication tokens updated successfully.  [root@bertram ~]# We now have a local user named “cisco” with a password of “secret” that we’ll use when it comes time to authenticate to R1.201. however.255. Nothing special here. Let’s get started configuring R1.0  R1(config‐if)# no shutdown  R1(config‐if)#  *Mar 1 00:10:14. Append the following to /etc/raddb/users: cisco Auth‐Type := System    Service‐Type = NAS‐Prompt‐User.168.168.201 255. for some reason. Let’s use the ever popular “SECRET_KEY”.168. changed state to up R1(config‐if)# do ping 192. We’ll also need a shared secret that the router and RADIUS server use.

16/3/2016 Configuring FreeRADIUS to support Cisco AAA Clients — Evil Routers Type escape sequence to abort.!!!!  Success rate is 80 percent (4/5). Let’s configure authentication: R1(config)# aaa authentication login default group radius local  R1(config)# line vty 0 4  R1(config‐line)# login authentication default  R1(config‐line)# line con 0  R1(config‐line)# login authentication default Here.51 auth‐port 1812 acct‐port 1813 key SECRET_KEY AAA should now be enabled on R1.168.168. all set! Let’s start configuring R1 for AAA: R1(config)# aaa new‐model  R1(config)# radius‐server host‐20081119  Wed Nov 19 00:24:47 2008    Acct‐Session‐Id = "00000005"    User‐Name = "cisco"    Acct‐Authentic = RADIUS    Acct‐Status‐Type = Start  http://evilrouters. timeout is 2 seconds:  .201  Trying 192.168.201   YES manual up                    up  R1# exit  Connection closed by foreign host.201.. We don’t want to DoS ourselves! The following command will allow the user to run an “exec” shell when logging into the router: R1(config)# aaa authorization exec default group radius if‐authenticated Last.1. 100‐byte ICMP Echos to 192.  Connected to 192. added a local user account.  Sending 5.1.168. Let’s take a look at what was logged by FreeRADIUS: [root@bertram ~]# cat /var/log/radius/radacct/192.51.1. we’ve told R1 to use RADIUS for authentication and to fall back to the local user database if the RADIUS server is not available.168. we must specify the “auth­port” and “acct­port” used by FreeRADIUS.  User Access Verification  Username: cisco  Password:  R1# show ip interface brief  Interface                  IP‐Address      OK? Method Status                Protocol  Ethernet0/0                unassigned      YES unset  administratively down down  Ethernet0/1                unassigned      YES unset  administratively down down  Ethernet0/2                unassigned      YES unset  administratively down down  Ethernet0/3                unassigned      YES unset  administratively down down  Serial1/0                  unassigned      YES unset  administratively down down  Serial1/1                  unassigned      YES unset  administratively down down  Serial1/2                  unassigned      YES unset  administratively down down  Serial1/3                  unassigned      YES unset  administratively down down  FastEthernet3/0            192. Note that we provided the IP address of the RADIUS server as well as the shared secret we configured in FreeRADIUS earlier. macbook:~ jlgaddis$ Success! We’ve installed FreeRADIUS. but not least.168.1. round‐trip min/avg/max = 4/11/24 ms  R1(config‐if)# Excellent.. In addition. as these are different from Cisco’s defaults (1645 and 1646).net/2008/11/19/configuring­freeradius­to­support­cisco­aaa­clients/ 3/5 . we want accounting (the final “A” in “AAA”): R1(config)# aaa accounting exec default start‐stop group radius  R1(config)# aaa accounting system default start‐stop group radius That should be enough to allow us to login with our local (Linux) system account “cisco” that we created earlier.1. set up the NAS client (R1) and configured it to authenticate against the RADIUS server. Let’s give it a shot: macbook:~ jlgaddis$ telnet 192.  Escape character is '^]'.

168.1.201    Acct‐Unique‐Session‐Id = "31b757fca2145e79"    Timestamp = 1227072314  [root@bertram ~]# If there’s interest. multiple RADIUS­freeradius­to­support­cisco­aaa­clients/ 4/5 . If you’re interested. Configuring a Cisco Terminal Server 2.168. Configuring OSPF Authentication (Dynamips) Tagged as: authentication.168.1. radius { 33 comments… read them below or add one } Leave a Comment Name * E­mail * Website  Notify me of followup comments via e­mail Submit http://evilrouters. I may expand on this later to include huntgroups. Configuring a DHCP Server on a Cisco Router Running IOS 3. how­to.1.1.49"    Service‐Type = NAS‐Prompt‐User    NAS‐IP‐Address = 192. Configuring MD5 Authentication for BGP Peers 5.168. cisco.201    Acct‐Delay‐Time = 0    Client‐IP‐Address = 192.49"    Service‐Type = NAS‐Prompt‐User    NAS‐IP‐Address =    Acct‐Delay‐Time = 0    Client‐IP‐Address = 192. Configuring SNMPv3 on Catalyst switches 4. using MySQL for accounting.168.1.16/3/2016 Configuring FreeRADIUS to support Cisco AAA Clients — Evil Routers   NAS‐Port = 130    NAS‐Port‐Id = "tty130"    NAS‐Port‐Type = Virtual    Calling‐Station‐Id = "192. or even through some LDAP and/or Active Directory authentication into the mix. please leave a comment below! Related posts: 1.201    Acct‐Unique‐Session‐Id = "31b757fca2145e79"    Timestamp = 1227072287  Wed Nov 19 00:25:14 2008    Acct‐Session‐Id = "00000005"    User‐Name = "cisco"    Acct‐Authentic = RADIUS    Acct‐Terminate‐Cause = User‐Request    Acct‐Session‐Time = 27    Acct‐Status‐Type = Stop    NAS‐Port = 130    NAS‐Port‐Id = "tty130"    NAS‐Port‐Type = Virtual    Calling‐Station‐Id = "192.

net/2008/11/19/configuring­freeradius­to­support­cisco­aaa­clients/ 5/5 .net » Cisco IOU install on Ubuntu 14.04 64­bit on Cisco IOU FAQ BadOPCode on Achievement Unlocked! Copyright © 2008–2016 Null Ventures » Blog Archive » Authenticating Cisco Devices Against Active Directory Previous post: Upgrading DD­WRT on the Buffalo WHR­G125 Next post: Basic NTP Configuration for Cisco Routers To search. { 1 trackback } evilrouters. Disclosures • Terms of Use http://evilrouters. type and hit enter 22 Popular Articles J’aime Tweet 8 Achievement Unlocked Cisco IOU FAQ Why You Should Be Blogging Using BGP’s local preference to influence outbound routing Hidden ProCurve commands 10 Things Your IT Guy Wants You To Know Port forwarding a range of ports on Cisco IOS How to Upgrade the License on a Cisco ASA Configuring FreeRADIUS to support Cisco AAA Clients You know you’re a computer security guy when… Latest Comments Aysar on Using BGP’s MED to influence inbound routing bc on Cisco IOU FAQ The_TB_Kid on Achievement Unlocked! NorthVandea on 10 Things Your IT Guy Wants You to Know Crimildo on RIP Authentication blindhog.16/3/2016 Configuring FreeRADIUS to support Cisco AAA Clients — Evil Routers  Notify me of new posts by email. All rights reserved.