FreeRADIUS Beginner's Guide - Dirk van der Walt - E-Book

FreeRADIUS Beginner's Guide E-Book

Dirk van der Walt

0,0
34,79 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

The Open Source pioneers have proved during the past few decades that their code and projects can indeed be more solid and popular than commercial alternatives. With data networks always expanding in size and complexity FreeRADIUS is at the forefront of controlling access to and tracking network usage. Although many vendors have tried to produce better products, FreeRADIUS has proved over time why it is the champion RADIUS server. This book will reveal everything you need to know to get started with using FreeRADIUS.
FreeRADIUS has always been a back-room boy. It's not easy to measure the size or number of deployments world-wide but all indications show that it can outnumber any commercial alternatives available. This essential server is part of ISPs, universities, and many corporate networks, helping to control access and measure usage. It is a solid, flexible, and powerful piece of software, but can be a mystery to a newcomer.
FreeRADIUS Beginner's Guide is a friend of newcomers to RADIUS and FreeRADIUS. It covers the most popular Linux distributions of today, CentOS, SUSE, and Ubuntu, and discusses all the important aspects of FreeRADIUS deployment: Installing, configuring and testing; security concerns and limitations; LDAP and Active Directory integration.
It contains plenty of practical exercises that will help you with everything from installation to the more advanced configurations like LDAP and Active Directory integration. It will help you understand authentication, authorization and accounting in FreeRADIUS. It uses many practical step-by-step examples, which are discussed in detail to lead you to a thorough understanding of the FreeRADIUS server as well as the RADIUS protocol. A quiz at the end of each chapter validates your understanding.Not only can FreeRADIUS be used to monitor and limit the network usage of individual users; but large deployments are possible with realms and fail-over functionality. FreeRADIUS can work alone or be part of a chain where the server is a proxy for other institution's users forwarding requests to their servers. FreeRADIUS features one of the most versatile and comprehensive Extensible Authentication Protocol (EAP) implementations. EAP is an essential requirement to implement enterprise WiFi security. FreeRADIUS Beginner's Guide covers all of these aspects.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Veröffentlichungsjahr: 2011

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

FreeRADIUS
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Time for action – heading
What just happened?
Pop quiz – heading
Have a go hero – heading
Reader feedback
Customer support
Errata
Piracy
Questions
1. Introduction to AAA and RADIUS
Authentication, Authorization, and Accounting
Authentication
Authorization
Accounting
RADIUS
RADIUS protocol (RFC2865)
The data packet
Code
Identifier
Length
Authenticator
Attributes
Conclusion
AVPs
Type
Length
Value
Vendor-Specific Attributes (VSAs)
Proxying and realms
RADIUS server
RADIUS client
RADIUS accounting (RFC2866)
Operation
Packet format
Acct-Status-Type (Type40)
Acct-Input-Octets (Type42)
Acct-Output-Octets (Type43)
Acct-Session-Id (Type44)
Acct-Session-Time (Type46)
Acct-Terminate-Cause (Type49)
Conclusion
RADIUS extensions
Dynamic Authorization extension (RFC5176)
Disconnect-Message (DM)
Change-of-Authorization Message (CoA)
RADIUS support for EAP (RFC3579)
FreeRADIUS
History
Strengths
Weaknesses
The competition
Summary
Pop quiz – RADIUS knowledge
2. Installation
Before you start
Pre-built binary
Time for action – installing FreeRADIUS
What just happened?
Advantages
Extra packages
Available packages
CentOS
SUSE
Ubuntu
Special considerations
Remember the firewall
CentOS
SUSE
Have a go hero – installing from source
Building from source
Advantages of building packages
CentOS
Time for action – building CentOS RPMs
What just happened?
Installing rpm-build
The source RPM package
The package name
Updating an existing installation
SUSE
Time for action – SUSE: from tarball to RPMs
Adding an OpenSUSE repository
What just happened?
zypper or yast -i
Tweaks done by hand
Ubuntu
Time for action – Ubuntu: from tarball to debs
What just happened?
Installing dpkg-dev
Using build-dep
fakeroot
dpkg-buildpackage
Installing the debs
For those preferring the old school
Installed executables
Running as root or not
Dictionary access for client programs
Ensure proper start-up
Summary
Pop quiz – installation
3. Getting Started with FreeRADIUS
A simple setup
Time for action – configuring FreeRADIUS
What just happened?
Configuring FreeRADIUS
Clients
Sections
Client identification
Shared secret
Message-Authenticator
Nastype
Common errors
Users
Files module
PAP module
Users file
Check items
Reply items
Operators
Substitution
DEFAULT user
Login-Time
Simultaneous-Use
Framed-IP-Address
Radtest
Helping yourself
Installed documentation
Man pages
Time for action – discovering available man pages for FreeRADIUS
dpkg systems
rpm systems
radtest revisited
Radclient
What just happened?
Have a go hero – adding more AVPs to the auth request
Configuration file comments
Pop quiz – clients.conf
Online documentation
Online help
Golden rules
Inside radiusd
Configuration files
Important includes
Libraries and dictionaries
FreeRADIUS-specific AVPs
Running as ...
Listen section
Log files
radiusd
Who was logged in and when?
Who is logged in right now?
Summary
4. Authentication
Authentication protocols
PAP
CHAP
MS-CHAP
FreeRADIUS—authorize before authenticate
Time for action – authenticating a user with FreeRADIUS
What just happened?
Access-Request arrives
Authorization
Authorize set Auth-Type
Authorization in action
Authentication
Post-Auth
Finish
Conclusion
Have a go hero – using other authentication protocols
Storing passwords
Hash formats
Time for action – hashing our password
Crypt-Password
MD5-Password
SMD5-Password
SHA-Password
SSHA-Password
NT-Password or LM-Password
What just happened?
Hash formats and authentication protocols
Other authentication methods
One-time passwords
Certificates
Summary
Pop quiz – authentication
5. Sources of Usernames and Passwords
User stores
System users
Time for action – incorporating Linux system users in FreeRADIUS
Preparing rights
SUSE is different
CentOS
Activating system users
What just happened?
Authorize using the unix module
Authenticating using pap
Tips for including system users
MySQL as a user store
Time for action – incorporating a MySQL database in FreeRADIUS
Installing MySQL
Installing FreeRADIUS's MySQL package
Preparing the database
Configuring FreeRADIUS
Connection information
Including the SQL configuration
Virtual server
Testing the MySQL user store
What just happened?
Advantages of SQL over flat files
Other uses for the SQL database
Duplicate users
The database schema
Groups
Have a go hero – exploring group usage
Using SQL Groups
Controlling the use of groups
Profiles
LDAP as a user store
Time for action – connecting FreeRADIUS to LDAP
Installing slapd
Configuring slapd
CentOS
SUSE
Ubuntu
Adding the radiusProfile schema
Populating the LDAP directory
Installing FreeRADIUS's LDAP package
Configuring the ldap module
Testing the LDAP user store
What just happened?
Binding as a user
Advanced use of LDAP
Have a go hero – explore advanced use of LDAP
Ldap-Group and User-Profile AVP
Reading passwords from LDAP
Active Directory as a user store
Time for action – connecting FreeRADIUS to Active Directory
Installing Samba
Configuring Samba
Joining the domain
CentOS
SUSE
Ubuntu
FreeRADIUS and ntlm_auth
PAP Authentication
MS-CHAP Authentication
Summary
Linux system users
SQL database
LDAP directory
Active Directory
Pop quiz – user stores
6. Accounting
Requirements for this chapter
Basic accounting
Time for action – simulate accounting from an NAS
Files for simulation
Starting a session
Ending a session
Orphan sessions
What just happened?
Independence of accounting
NAS: important AVPs
Acct-Status-Type
Acct-Session-Id
AVPs indicating usage
NAS: included AVPs
FreeRADIUS: pre-accounting section
Realms
Setting Acct-Type
FreeRADIUS: accounting section
Minimising orphan sessions
radwho
radzap
Limiting a user's simultaneous sessions
Time for action – limiting a user's simultaneous sessions
What just happened?
Session section
Problems with orphan sessions
checkrad
Limiting the usage of a user
30 minutes per day in total
How FreeRADIUS can help
Time for action – limiting a user's usage
Activating a daily counter
Terminating the session at a specified time
What just happened?
rlm_counter
Have a go hero – using a single database for various counters
Using rlm_sqlcounter
Resetting the counter
SQL module instance
Special variables inside the query
Empty account records
Counters that reset daily
Counting octets
Housekeeping of accounting data
Web-based tools
Summary
Pop quiz – accounting
7. Authorization
Implementing restrictions
Authorization in FreeRADIUS
Introduction to unlang
Using conditional statements
Time for action – using the if statement in unlang
Obtaining a return code using the if statement
Authorizing a user using the if statement
What just happened?
Module return codes
Keywords in unlang
Have a go hero – other tests using conditional statements
Checking if an attribute exists
Using logical expressions to authenticate a user
Attributes and variables
Attribute lists
Time for action – referencing attributes
Attributes in the if statement
What just happened?
Referencing attributes in a condition
Comparison operators
Attribute manipulation
Variables
Time for action – SQL statements as variables
What just happened?
Time for action – setting default values for variables
What just happened?
Time for action – using command substitution
What just happened?
Time for action – using regular expressions
What just happened?
Practical unlang
Limiting data usage
Time for action – using unlang to create a data counter
Defining custom attributes
32-bit limitation
Using the perl module
reset_time.pl
check_usage.pl
Installing the perl module on CentOS
Updating the dictionary files
The recommended way of updating dictionaries
Preparing the users file
Preparing the SQL database
Adding unlang code to the virtual server
The SUSE and Ubuntu bug
Pre-loading Perl library
Testing the data counter
Clean-up
Summary
Pop quiz – authorization
8. Virtual Servers
Why use virtual servers?
Defining and enabling virtual servers
Time for action – creating two virtual servers
What just happened?
Available sub-sections
Enabling and disabling virtual servers
Using enabled virtual servers
Time for action – using a virtual server
What just happened?
Including a virtual server
Handling Post-Auth-Type correctly
Taking care of Type attributes
Virtual server for happy hour
Time for action – incorporating the Hotspot Happy Hour policy
Enabling the Happy Hour virtual server
Adding the virtual server to a client
What just happened?
Defining clients in SQL
Consolidating an existing setup using a virtual server
Time for action – creating a virtual server for the Computer Science faculty
Consolidation implementation
A named files section
A virtual server for the Computer Science faculty
Incorporating the new virtual server
What just happened?
What about users stored in SQL?
When IP addresses and ports clash
Local listen and client sections
IPv6
Listen section → type directive
Pre-defined virtual servers
Summary
Pop quiz – virtual servers
9. Modules
Installed, available, and missing modules
Time for action – discovering available modules
Locating installed modules
What just happened?
Naming convention
Adding alternative paths
Available modules
Missing modules
Including and configuring a module
Time for action – incorporating expiration and linelog modules
What just happened?
Configuring a module
Using modules
Sections that can contain modules
Using one module with different configurations
Have a go hero – creating multiple instances of a module
What just happened?
Order of modules and return codes
Time for action – investigating the order of modules
Access-Request
Return codes
Some interesting modules
Summary
Pop quiz – modules
10. EAP
EAP basics
EAP components
Authenticator
Supplicant
Backend authentication server
EAP conversation
EAPOL-Start
EAPOL-Packet
Practical EAP
Time for action – testing EAP on FreeRADIUS with JRadius Simulator
Preparing FreeRADIUS
Configuring JRadius Simulator
What just happened?
Configuring the eap module
The user store
EAP on the client
EAP in production
Public Key Infrastructure in brief
Creating a PKI
Time for action – creating a RADIUS PKI for you organization
What just happened?
Why use a PKI?
Adding a CA to the client
Configuring the inner-tunnel virtual server
Time for action – testing authentication on the inner-tunnel virtual server
What just happened?
The difference between inner and outer identities
Have a go hero – using JRadius Simulator to test with two identities
What just happened?
Naming conventions for the outer identity
Disabling unused EAP methods
Time for action – disabling unused EAP methods
What just happened?
Message-Authenticator
Summary
Pop quiz – EAP
11. Dictionaries
Why do we need dictionaries?
Parsing requests
Generating responses
How to include dictionaries
Time for action – including new dictionaries
What just happened?
How FreeRADIUS includes dictionary files
Including your own dictionary files
Including dictionary files already installed
Adding private attributes
Updating an existing dictionary
Time for action – updating the MikroTik dictionary
What just happened?
Finding the latest supported attributes
Location of updated dictionary files
Order of inclusions
Attribute names
Upgrading FreeRADIUS
Format of dictionary files
Notes inside the comments
Vendor definitions
Attributes and values
Name field
Number field
Type field
Optional vendor field
Value definitions
Accessing dictionary files
Summary
Pop quiz – dictionaries
12. Roaming and Proxying
Roaming—an overview
Agreement between an ISP and a Telco
Agreement between two organizations
Realms
Time for action – investigating the default realms in FreeRADIUS
What just happened?
Suffix module
NULL realm
Enabling an instance of the realm module
Defining the NULL realm
Time for action – activating the NULL realm
What just happened?
Stripped-User-Name and realm
LOCAL realm
Actions for a realm
Defining a proper realm
Time for action – defining the realm
What just happened?
Rejecting usernames without a realm
Time for action – rejecting requests without a realm
What just happened?
DEFAULT realm
In closing
Proxying
Time for action – configuring proxying between two organizations
What just happened?
Proxying authentication requests
home_server
home_server_pool
Flow chart of an authentication proxy request
Suffix setting control: Proxy-To-Realm
Pre-proxy section
Post-proxy section
EAP and dynamic VLANs
Have a go hero – testing proxying of EAP authentication
Removing and replacing reply attributes
Time for action – filtering reply attributes returned by a home server
What just happened?
Status of the home servers
Time for action – using the preferred way for status checking
Proxying accounting requests
Time for action – simulating proxied accounting
What just happened?
Flow of an accounting proxy request
Updating accounting records after a server outage
Have a go hero – implementing robust-proxy-accounting functionality
Summary
Pop quiz – roaming and proxying
13. Troubleshooting
Basic principles
FreeRADIUS does not start up
Who's using my port?
Checking the configuration
Finding a missing module or library
Fixing a broken external component
FreeRADIUS refuses to start
FreeRADIUS runs despite the display of an error message
FreeRADIUS only reports a problem when answering a request
Using the startup script
FreeRADIUS is slow
Time for action – performing baseline speed testing
What just happened?
Tuning the performance of FreeRADIUS
Main server
LDAP Module
SQL Module
Redundancy and load-balancing
Things beyond our control
FreeRADIUS dies
Client-related problems
Testing UDP connectivity to a RADIUS server
The control-socket virtual server
Time for action – using the control-socket and raddebug for troubleshooting
CentOS
SUSE
Ubuntu
Using raddebug
What just happened?
Remember the log output
Spotting a mismatched shared secret
Options for raddebug
Raddebug auto termination
If there's no output from raddebug
Authenticating users
Editing the users file
Using raddebug
When passwords change
Password length
EAP problems
The CA certificate
Identify where a problem is located
Problems with proxying
Online resources
Using the mailing list
Summary
Pop quiz – troubleshooting
A. Pop Quiz Answers
Chapter 1
Pop quiz – RADIUS knowledge
Chapter 2
Pop quiz – installation
Chapter 3
Pop quiz – clients.conf
Chapter 4
Pop quiz – authentication
Chapter 5
Pop quiz – user stores
Chapter 6
Pop quiz – accounting
Chapter 7
Pop quiz – authorization
Chapter 8
Pop quiz – virtual servers
Chapter 9
Pop quiz – modules
Chapter 10
Pop quiz – EAP
Chapter 11
Pop quiz – dictionaries
Chapter 12
Pop quiz – roaming and proxying
Chapter 13
Pop quiz – troubleshooting
Index

FreeRADIUS

Beginner's Guide

FreeRADIUS

Beginner's Guide

Copyright © 2011 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: September 2011

Production Reference: 1260811

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-849514-08-8

www.packtpub.com

Cover Image by Asher Wishkerman (<[email protected]>)

Credits

Author

Dirk van der Walt

Reviewers

Ante Gulam

Atif Razzaq

Acquisition Editor

Chaitanya Apte

Development Editors

Kartikey Pandey

Alina Lewis

Technical Editor

Vanjeet D'souza

Copy Editor

Neha Shetty

Project Coordinator

Srimoyee Ghoshal

Proofreader

Chris Smith

Indexers

Hemangini Bari

Tejal Daruwale

Graphics

Nilesh Mohite

Production Coordinator

Adline Swetha Jesuthas

Cover Work

Adline Swetha Jesuthas

About the Author

Dirk van der Walt is an open source software specialist from Pretoria, South Africa. He is a firm believer in the potential of open source software. Being a Linux user for almost ten years, it was love at first boot. From then on Dirk spent his available time sharing his knowledge with others equally passionate about the freedom and affordability open source software gives to the community.

In 2003, Dirk started coding with Perl as his language of choice and gave his full attention to functional and aesthetic user interface design. He also compiled an online Gtk2-Perl study guide to promote the advancement of Perl on the desktop.

As Rich Internet Applications (RIA) became more popular, Dirk added the Dojo toolkit and CakePHP to his skills set to create an AJAX-style front-end to a FreeRADIUS MySQL database. His latest work is YFi Hotspot Manager. Today YFi Hotspot Manager is used in many localities around the globe. With many contributors to the project it proves just how well the open source software model can work.

I'd like to thank the Lord Jesus for life and light, my wife Petra and daughter Daniélle for all their support and understanding, my brother Karel for his interest and help. I would also like to thank the people involved with the FreeRADIUS project, from the coders to the commenters. Lastly I'd like to thank Packt Publishing for supporting Open Source software the way they do.

About the Reviewers

Ante Gulam is a 26-year-old software and system engineer with more than seven years of working experience in various segments of the IT industry. He has worked as a consultant and system engineer on POSIX-compliant systems (Linux, BSD, SCO, and others), and lately has focused mainly on security, design, and administration of Microsoft-based enterprise solutions. Ante is currently working as a system engineer and software developer, primarily on MS platforms (.NET) in Ri-ing d.o.o., a medium-sized software development company.

Being involved in security for several years Ante gained experience in the development of various security tools based on many different technologies and has written articles and co-edited Phearless Security Ezine actively for the last four years. Presently, he is working on large networking projects and enterprise environments; adopting them for standards like PCI-DSS enables him to stay in touch with security on the enterprise level.

I would like to thank my family, my friends, and my girlfriend for the their patience. Also all the guys from the "gn00bz" team for all the hours full of fun and knowledge while playing CTF for the past couple of years.

Atif Razzaq holds an MSc degree from Strathclyde University, Glasgow, UK in Communication, Control, and Digital Signal Processing, and a BSc degree in Computer Science from NUCES, Pakistan. After his MSc degree, he started his career as a software engineer in the area of Mobile Application Development in J2ME in Tricastmedia, Glasgow, UK. During this period he also published an article at Java.net titled Getting Started with BlackBerry J2ME Development.

He is currently working as the Development Manager at Terminus Technologies who specializes in telecom billing software development. His responsibilities include the development of the billing system and its integration with other applications both proprietary and open source (Asterisk, FreeSwitch, FreeRADIUS, and others). Prior to joining Terminus Technologies, he worked on telecom billing at Comcerto, Bahrain. He has been working on telecom billing and VoIP/SIP Telephony for about three years.

In his free time, he writes his own blog on different ICT topics available at http://atif-razzaq.blogspot.com. He can be contacted at <[email protected]>.

It has been a great experience working on this project. I'd like to thank the whole team working on this project: the author and all members from Packt Publishing. I'd like to thank my family for giving up their share of time which I gave to this project. Finally, I'd thank the Great Lord for everything and then my parents who taught me and made me what I am.

www.PacktPub.com

Support files, eBooks, discount offers, and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read, and search across Packt's entire library of books. 

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface

FreeRADIUS Beginner's Guide contains plenty of practical exercises that will help you with everything from basic installation to the more advanced configurations like LDAP and Active Directory integration. This book will help you understand authentication, authorization, and accounting in FreeRADIUS using the most popular Linux distributions of today. Larger deployments with realms and fail-over configuration are also covered along with tips. A quiz at the end of each chapter validates your understanding.

What this book covers

The book can be divided into three sections:

Introduction and installation (Chapter 1 to Chapter 3)AAA functions of FreeRADIUS (Chapter 4 to Chapter 7)Advanced topics (Chapter 8 to Chapter 13)

Let's see what each chapter deals with:

Chapter 1, Introduction to AAA and RADIUS, introduces FreeRADIUS and the RADIUS protocol. It highlights some key RADIUS concepts, which help the user avoid common misunderstandings.

Chapter 2, Installation, describes how to build and install FreeRADIUS from source on popular Linux distributions. It also covers installing the FreeRADIUS packages included with popular Linux distributions. Ubuntu, SUSE, and CentOS will be used to ensure a wide coverage.

Chapter 3, Getting Started with FreeRADIUS, gives a brief introduction on the various components of FreeRADIUS. It also discusses the process of handling a basic authentication request.

Chapter 4, Authentication, teaches authentication methods and how they work. Extensible Authentication Protocol (EAP) is covered later in a dedicated chapter.

Chapter 5, Sources of Usernames and Passwords, covers various places where username/password combinations can be stored. It shows which modules are involved and how to configure FreeRADIUS to utilize these stores.

Chapter 6, Accounting, discusses the need for accounting and the options available to record accounting data. It also discusses implementing a policy that includes limiting sessions and/or time and/or data.

Chapter 7, Authorization, discusses various aspects of authorization including the use of unlang.

Chapter 8, Virtual Servers, discusses various aspects of virtual servers and where they can potentially be used.

Chapter 9, Modules, discusses the various modules used by FreeRADIUS and how to configure multiple instances of a certain module.

Chapter 10, EAP, a dedicated chapter on EAP, is a one stop for EAP (802.11x and WiFi).

Chapter 11, Dictionaries, introduces dictionaries, which are used to map the names seen and used by an administrator, to the numbers used by the RADIUS protocol.

Chapter 12, Roaming and Proxying, deals with the RADIUS protocol, which allows the proxying of authorization and accounting requests. This makes roaming possible. This chapter covers various aspects of proxying in FreeRADIUS.

Chapter 13, Troubleshooting, works through many common problems, giving examples of what to look for, and how to fix the issue.

What you need for this book

You need to be familiar with Linux and have a solid understanding of TCP/IP. No previous knowledge of RADIUS or FreeRADIUS is required.

To get the most out of the practical exercises you will need a clean install of Ubuntu, SUSE or CentOS

Who this book is for

If you are an Internet Service Provider (ISPs) or a network manager who needs to track and control network usage, then this is the book for you.

Conventions

In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or e-mail <[email protected]>.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Note

Downloading the example code for this book

You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. Introduction to AAA and RADIUS

It is my pleasure to present you a beginner's guide to FreeRADIUS. This book will help you to deploy a solid, stable, and scalable RADIUS server in your environment.

This chapter is used as an introduction to RADIUS and FreeRADIUS. We will be covering a fair amount of theory and recommend you pay special attention to it. This will supply you with a good foundation on the workings of the RADIUS protocol and will be of much help in subsequent chapters.

In this chapter we shall:

See what AAA is, and why we need itLearn where RADIUS started and why it is so relevant todaySee why FreeRADIUS really shines as a RADIUS serverUnderstand the relationship between AAA, RADIUS, and FreeRADIUS

Let's get started.

Authentication, Authorization, and Accounting

Users gain access to data networks and network resources through various devices. This happens through a wide range of hardware. Ethernet switches, Wi-Fi access points, and VPN servers all offer network access.

When these devices are used to control access to a network, for example a Wi-Fi access point with WPA2 Enterprise security implemented or an Ethernet switch with 802.1x (EAP) port-based authentication enabled, they are referred to as a Network Access Server (NAS).

All these devices need to exercise some form of control to ensure proper security and usage. This requirement is commonly described as Authentication, Authorization, and Accounting (AAA). AAA is also sometimes referred to as the Triple A Framework. AAA is a high-level architecture model, which can be used for specific implementations.

AAA is specified through various RFCs. Generic AAA Architecture is specified in RFC 2903. There are also RFCs that cover different AAA aspects.

Authentication

Authentication is usually the first step taken in order to gain access to a network and the services it offers. This is a process to confirm whether the credentials which Alice provided are valid. The most common way to provide credentials is by a username and password. Other ways such as one-time tokens, certificates, PIN numbers, or even biometric scanning can also be used.

After successful authentication a session is initialized. This session lasts until the connection to the network is terminated.

Note

Who is Alice?

Alice and Bob are placeholder names. In fact there is a whole character set, each representing a specific role. We will use the following placeholder names:

Alice: A user who wants access to our network

Bob: Another user who wants access to our network

Isaac: The Internet Service Provider (ISP)/our network

You can read more about them on Wikepedia: http://en.wikipedia.org/wiki/Alice_and_Bob.

The following image illustrates an authentication process by using the common activity of drawing money from an ATM as an example. This in essence lets you gain access to the bank's network (although it is limited in the extreme).

Authorization

Authorization is a means by which Isaac controls the usage of the resources. After Alice has authenticated herself, Isaac can impose certain restrictions or grant certain privileges. Isaac can, for instance, check from which device Alice accesses the network and based on this make a decision. He can limit the number of open sessions that Alice can have, give her a pre-determined IP Address, only allow certain traffic through, or even enforce Quality of Service (QoS) based on an SLA.

Authorization usually involves logic. If Alice is part of the student group then no Internet access is allowed during working hours. If Bob accessed the network through a captive portal then a bandwidth limit is imposed to prevent him from hogging the Internet connection.

Logic can be based on numerous things. Authorization decisions for instance can be based on group membership or the NAS through which you connect or even the time of day when you access our resources.

If we take the previous ATM example we can see that if Alice does not have an overdraft facility she will be limited on the amount of money she can withdraw.

Accounting

Accounting is a means of measuring the usage of resources. After Isaac has established who Alice is and imposed proper control on the established session, he can also measure her usage. Accounting is the ongoing process of measuring usage.

This allows Isaac to track how much time or resources Alice spends during an established session. Obtaining accounting data allows Isaac to bill Alice for the usage of his resources. Accounting data is not only useful to recover costs but it allows for capacity planning, trend analysis, and activity monitoring.

When Alice wants to check her usage and availability of money the ATM offers this functionality. The Bank of Isaac can also monitor her account and discover if she is usually broke before the end of the month. They can then offer her an overdraft facility.

RADIUS is a protocol which is used to provide AAA on TCP/IP networks. The next section will continue with more on the RADIUS protocol.