Securing Your Wireless Controller
Network devices must be secured because they are a target of choice for attackers. When an attacker can access one network device, that attacker can typically easily access more network resources. The controller is an excellent target because it manages the configuration of the whole wireless infrastructure. Let’s review a couple of ways to protect unintended administrative access to the C9800.
Securing Administrator Access
One of the first measures to secure your wireless controller is to restrict administrator access to it. Leveraging local users stored on the controller can work only for small teams. In large companies, where more administrators have access to the controller and even just for simplicity of password management (having your credentials stored securely in one place is better than having them all over the network on each device, especially if you have to change your password), it becomes critical to use RADIUS or TACACS to authenticate users accessing your device as a network administrator.
A configuration example titled Configure RADIUS and TACACS+ for GUI and CLI Authentication on 9800 Wireless LAN controllers is available on cisco.com to better illustrate the process of using TACACS+. Let’s cover it from a conceptual perspective nonetheless.
The first step is to configure the TACACS+ server on the WLC. You can easily do this in the Configuration > Security > AAA > Servers/Groups page. You need to specify an IP address and a shared secret.
The second step is to configure AAA methods. You need an aaa authentication login <methodname> group <tacacs server group> and an aaa authorization exec <methodname> group <tacacs server group> method. The login method takes care of authentication, and the exec authorization method is required to allow the user to enter any command (and basically do anything on the device). Because these are named methods, they do not have any effect until they are called somewhere else in the configuration.
To use the TACACS+ server for CLI authentication, add your method in the VTY configuration (it is also configurable under Administration > Management>HTTP/HTTPS/Netconf/VTY in the WebUI after 17.6):
9800(config)#line vty 0 15 9800(config-line)#login authentication <aaa login method name> 9800(config-line)#authorization exec <aaa exec method name>
To use it for WebUI:
9800(config)#ip http authentication aaa login-authentication <aaa login method name> 9800(config)#ip http authentication aaa exec-authorization <aaa exec method name>
You can also configure this from the WebUI in the Administration > HTTP/Netconf page, as shown in Figure 5-48.
FIGURE 5-48 VTY configuration for CLI access in the HTTP/Netconf web page
For the settings to take effect, you might need to restart the web server by typing no ip http server followed by ip http server.
Some extra configuration is required on ISE (refer to the configuration example for more), but in a nutshell, you need to return two things on top of a successful authorization result:
A TACACS+ shell profile allows you to set some attributes, and the most important for this situation is the default privilege level. This is the privilege level at which the user ends up after connecting. Although it ranges from 0 to 15, there are no differences by default between all the values ranging from 1 to 14. A privilege level of 0 allows you only some basic commands, and a privilege level of 15 allows full access.
On top of a TACACS profile, you can also assign a command set from ISE, which is a list of CLI commands that the user is allowed to run. For each command, the WLC asks for authorization to run the specific commands. You can use wildcards or allow all but a subset of commands if you want.
Restricting WLC administrator access through RADIUS follows the exact same concept as with TACACS+. Obviously, you define a RADIUS server in lieu of a TACACS server, but the AAA methods and other commands stay the same. One behavioral difference with RADIUS is that it does not ask for authorization every time a CLI is entered: no shell profiles and command sets can be used. Instead, you need to edit your RADIUS authorization result and return a cisco-av-pair with the value shell:priv-lvl=15.
Guest users are created by the administrator or the lobby ambassador, which we discuss in more detail next. They have no device administration access (SSH or GUI). They are only able to connect to the network and access the Internet. They can also be temporary and be deleted after a set timer.
The Lobby Ambassador Type of User
There is an extra type of administrative user who is not simply defined by the privilege level. The lobby ambassador is a type of user who can be created on the WLC (either on WebUI or CLI) and whose only purpose is to create guest users. When you log in as a lobby ambassador, your only privilege is to create guests, and you get a special WebUI dedicated to this activity. In previous releases, it was tricky to authenticate lobby ambassadors via TACACS because it required configuring a command on the WLC for each ambassador username. After release 17.5, the only thing you require from ISE is to return the mandatory user-type attribute with value lobby-admin as a custom attribute in the shell profile. Without this, your lobby ambassador gets full administrator privilege on the controller, which you probably want to avoid. This process is covered in detail in the configuration example titled Configure 9800 WLC Lobby Ambassador with RADIUS and TACACS+ Authentication.
NETCONF is what Cisco DNA Center mostly uses to configure the Catalyst 9800 and a protocol you can use yourself as well, with custom scripts or third-party tools even. At the time of this writing, NETCONF security is ruled only by the default login authentication and exec authorization methods. This means that you need to set aaa authentication login default local and aaa authorization exec default local to have it working. It is also possible to point these methods to a RADIUS or TACACS server for authentication if you want. A common catch is that the management stations (Prime Infrastructure or Cisco DNA Center) tend to overwrite these config lines and point them back to local, so you may want to have a backup administrative user on the WLC to keep accessing it in case of trouble. The NETCONF implementation of the 9800 WLC uses SSH over port 830 and currently does not allow you to manually select ciphers or the certificate used for authentication although this may change in the future.
Granularity of WebUI Access
The WebUI is an interface that uses a hybrid data model in the background. For some pages, it actually opens a VTY line and enters CLI commands (which are authorized for each of them if you are using TACACS, for example), whereas some other pages use a TDL programmability model and do not use a CLI back end at all. This means that the WebUI is affected by changes you make to the CLI authorization method. At this time, there is no way to restrict a WebUI user from using certain pages and not others: a user either has privilege level 15 and has full access to the WebUI or has privilege level 1 and has access only to the dashboard and some monitoring subpages.
Connect to the WebUI Using Certificates
In the HTTP(s) administration page on the WLC, you can enable Personal Identity Validation. You then have to point to a trustpoint. This feature restricts the WebUI connection to only devices that can present a client certificate that will be trusted according to the designed trustpoint on the WLC. HTTPS websites always require the server to present its certificate, but optionally the client can do the same. This means you could get rid of credentials and require a smart card or certificate to be able to access the 9800 WebUI.
Another key to securing your controller is to make sure it is not receiving unwanted traffic and that only the right people connecting from the right locations can access it. By default, your wireless clients are not allowed to access the WLC command line or WebUI. To lift that restriction, you need to enable Management Via Wireless under Configuration > Wireless > Wireless Global.
A Catalyst 9800 controller can be managed, using any of its SVI IP addresses. It is recommended that you minimize the number of SVIs you configure on the 9800 for this reason, unless you have specific needs for SVI (in the case of mDNS proxy, for example, SVIs in wireless client VLANs are required). You can restrict access by applying ACLs on the 9800 SVIs.
Catalyst 9800 wireless controller appliances provide you with a service port to manage the WLC. The specificity of this SP is to be really out-of-band; that is, the port is physically connected to the WLC CPU and separated from the other data ports and the data plane. From a software perspective, IOS-XE places this port in a hard-coded VRF called mgmt-intf. You cannot change this VRF configuration on the service port. You can add routing for the service port, but it has to be part of the mgmt-intf VRF.