Hardening Cisco Routers Flashcards
Management Plane
The management plane manages traffic that is sent to the Cisco IOS device and is made up of applications and protocols such as SSH and SNMP.
Control Plane
The control plane of a network device processes the traffic that is paramount to maintaining the functionality of the network infrastructure. The control plane consists of applications and protocols between network devices, which includes the Border Gateway Protocol (BGP), as well as the Interior Gateway Protocols (IGPs) such as the Enhanced Interior Gateway Routing Protocol (EIGRP) and Open Shortest Path First (OSPF).
Data Plane
The data plane forwards data through a network device. The data plane does not include traffic that is sent to the local Cisco IOS device.
Monitor Cisco Security Advisories and Responses
The Cisco Product Security Incident Response Team (PSIRT) creates and maintains publications, commonly referred to as PSIRT Advisories, for security-related issues in Cisco products. The method used for communication of less severe issues is the Cisco Security Response. Security advisories and responses are available at http://www.cisco.com/go/psirt.
Leverage Authentication, Authorization, and Accounting
The Authentication, Authorization, and Accounting (AAA) framework is vital to securing network devices. The AAA framework provides authentication of management sessions and can also limit users to specific, administrator-defined commands and log all commands entered by all users. See the Using Authentication, Authorization, and Accounting section of this document for more information about leveraging AAA.
Centralize Log Collection and Monitoring
In order to gain an understanding of existing, emerging, and historic events related to security incidents, your organization needs to have a unified strategy for event logging and correlation. This strategy must leverage logging from all network devices and use pre-packaged and customizable correlation capabilities.
After centralized logging is implemented, you must develop a structured approach to log analysis and incident tracking. Based on the needs of your organization, this approach can range from a simple diligent review of log data to advanced rule-based analysis.
Use Secure Protocols When Possible
Many protocols are used in order to carry sensitive network management data. You must use secure protocols whenever possible. A secure protocol choice includes the use of SSH instead of Telnet so that both authentication data and management information are encrypted. In addition, you must use secure file transfer protocols when you copy configuration data. An example is the use of the Secure Copy Protocol (SCP) in place of FTP or TFTP.
Gain Traffic Visibility with NetFlow
NetFlow enables you to monitor traffic flows in the network. Originally intended to export traffic information to network management applications, NetFlow can also be used in order to show flow information on a router. This capability allows you to see what traffic traverses the network in real time. Regardless of whether flow information is exported to a remote collector, you are advised to configure network devices for NetFlow so that it can be used reactively if needed.
Configuration Management
Configuration management is a process by which configuration changes are proposed, reviewed, approved, and deployed. Within the context of a Cisco IOS device configuration, two additional aspects of configuration management are critical: configuration archival and security.
You can use configuration archives to roll back changes that are made to network devices. In a security context, configuration archives can also be used in order to determine which security changes were made and when these changes occurred. In conjunction with AAA log data, this information can assist in the security auditing of network devices.
The configuration of a Cisco IOS device contains many sensitive details. Usernames, passwords, and the contents of access control lists are examples of this type of information. The repository that you use in order to archive Cisco IOS device configurations needs to be secured. Insecure access to this information can undermine the security of the entire network.
Management Plane
The management plane consists of functions that achieve the management goals of the network. This includes interactive management sessions using SSH, as well as statistics-gathering with SNMP or NetFlow. When you consider the security of a network device, it is critical that the management plane be protected. If a security incident is able to undermine the functions of the management plane, it can be impossible for you to recover or stabilize the network.
General Management Plane Hardening
The management plane is used in order to access, configure, and manage a device, as well as monitor its operations and the network on which it is deployed. The management plane is the plane that receives and sends traffic for operations of these functions. You must secure both the management plane and control plane of a device, as operations of the control plane directly affect operations of the management plane.
List the protocols that are used by the management plane
Simple Network Management Protocol
•
Telnet
•
Secure Shell Protocol
•
File Transfer Protocol
•
Trivial File Transfer Protocol
•
Secure Copy Protocol
•
TACACS+
•
RADIUS
•
NetFlow
•
Network Time Protocol
•
Syslog
Steps must be taken to ensure the survival of the management and control planes during security incidents. If one of these planes is successfully exploited, all planes can be compromised.
Password Management
Passwords control access to resources or devices. This is accomplished through the definition a password or secret that is used in order to authenticate requests. When a request is received for access to a resource or device, the request is challenged for verification of the password and identity, and access can be granted, denied, or limited based on the result. As a security best practice, passwords must be managed with a TACACS+ or RADIUS authentication server. However, note that a locally configured password for privileged access is still be needed in the event of failure of the TACACS+ or RADIUS services. A device can also have other password information present within its configuration, such as an NTP key, SNMP community string, or Routing Protocol key.
Password Commands
The enable secret command is used in order to set the password that grants privileged administrative access to the Cisco IOS system. The enable secret command must be used, rather than the older enable password command. The enable password command uses a weak encryption algorithm.
If no enable secret is set and a password is configured for the console tty line, the console password can be used in order to receive privileged access, even from a remote virtual tty (vty) session. This action is almost certainly unwanted and is another reason to ensure configuration of an enable secret.
The service password-encryption global configuration command directs the Cisco IOS software to encrypt the passwords, Challenge Handshake Authentication Protocol (CHAP) secrets, and similar data that are saved in its configuration file. Such encryption is useful in order to prevent casual observers from reading passwords, such as when they look at the screen over the muster of an administrator. However, the algorithm used by the service password-encryption command is a simple Vigenère cipher. The algorithm is not designed to protect configuration files against serious analysis by even slightly sophisticated attackers and must not be used for this purpose. Any Cisco IOS configuration file that contains encrypted passwords must be treated with the same care that is used for a cleartext list of those same passwords.
While this weak encryption algorithm is not used by the enable secret command, it is used by the enable password global configuration command, as well as the password line configuration command. Passwords of this type must be eliminated and the enable secret command or the Enhanced Password Security feature needs to be used.
The enable secret command and the Enhanced Password Security feature use Message Digest 5 (MD5) for password hashing. This algorithm has had considerable public review and is not known to be reversible. However, the algorithm is subject to dictionary attacks. In a dictionary attack, an attacker tries every word in a dictionary or other list of candidate passwords in order to find a match. Therefore, configuration files must be securely stored and only shared with trusted individuals.
Enhanced Password Security
The feature Enhanced Password Security, introduced in Cisco IOS Software Release 12.2(8)T, allows an administrator to configure MD5 hashing of passwords for the username command. Prior to this feature, there were two types of passwords: Type 0, which is a cleartext password, and Type 7, which uses the algorithm from the Vigenère cipher. The Enhanced Password Security feature cannot be used with protocols that require the cleartext password to be retrievable, such as CHAP.
In order to encrypt a user password with MD5 hashing, issue the username secret global configuration command.
!
username secret
!
Login Password Retry Lockout
The Login Password Retry Lockout feature, added in Cisco IOS Software Release 12.3(14)T, allows an you to lock out a local user account after a configured number of unsuccessful login attempts. Once a user is locked out, their account is locked until you unlock it. An authorized user who is configured with privilege level 15 cannot be locked out with this feature. The number of users with privilege level 15 must be kept to a minimum.
Note that authorized users can lock themselves out of a device if the number of unsuccessful login attempts is reached. Additionally, a malicious user can create a denial of service (DoS) condition with repeated attempts to authenticate with a valid username.
This example shows how to enable the Login Password Retry Lockout feature:
!
aaa new-model
aaa local authentication attempts max-fail
aaa authentication login default local
!
username secret
!
This feature also applies to authentication methods such as CHAP and Password Authentication Protocol (PAP).
No Service Password-Recovery
In Cisco IOS Software Release 12.3(14)T and later, the No Service Password-Recovery feature does not allow anyone with console access to insecurely access the device configuration and clear the password. It also does not allow malicious users to change the configuration register value and access NVRAM.
!
no service password-recovery
!
Cisco IOS software provides a password recovery procedure that relies upon access to ROMMON mode using the Break key during system startup. In ROMMON mode, the device software can be reloaded to prompt a new system configuration that includes a new password.
The current password recovery procedure enables anyone with console access to access the device and its network. The No Service Password-Recovery feature prevents the completion of the Break key sequence and the entering of ROMMON mode during system startup.
If no service password-recovery is enabled on a device, it is recommended that an offline copy of the device configuration be saved and that a configuration archiving solution be implemented. If it is necessary to recover the password of a Cisco IOS device once this feature is enabled, the entire configuration is deleted.
Disable Unused Services
As a security best practice, any unnecessary service must be disabled. These unneeded services, especially those that use UDP (User Datagram Protocol), are infrequently used for legitimate purposes, but can be used in order to launch DoS and other attacks that are otherwise prevented by packet filtering.
The TCP and UDP small services must be disabled. These services include:
•
echo (port number 7)
•
discard (port number 9)
•
daytime (port number 13)
•
chargen (port number 19)
Although abuse of the small services can be avoided or made less dangerous by anti-spoofing access lists, the services must be disabled on any device accessible within the network. The small services are disabled by default in Cisco IOS Software Releases 12.0 and later. In earlier software, the no service tcp-small-servers and no service udp-small-servers global configuration commands can be issued in order to disable them.
This is a list of additional services that must be disabled if not in use:
•
Issue the no ip finger global configuration command in order to disable Finger service. Cisco IOS software releases later than 12.1(5) and 12.1(5)T disable this service by default.
•
Issue the no ip bootp server global configuration command in order to disable Bootstrap Protocol (BOOTP).
•
In Cisco IOS Software Release 12.2(8)T and later, issue the ip dhcp bootp ignore command in global configuration mode in order to disable BOOTP. This leaves Dynamic Host Configuration Protocol (DHCP) services enabled.
•
DHCP services can be disabled if DHCP relay services are not required. Issue the no service dhcp command in global configuration mode.
•
Issue the no mop enabled command in interface configuration mode in order to disable the Maintenance Operation Protocol (MOP) service.
•
Issue the no ip domain-lookup global configuration command in order to disable Domain Name System (DNS) resolution services.
•
Issue the no service pad command in global configuration mode in order to disable Packet Assembler/Disassembler (PAD) service, which is used for X.25 networks.
•
HTTP server can be disabled with the no ip http server command in global configuration mode, and Secure HTTP (HTTPS) server can be disabled with the no ip http secure-server global configuration command.
•
Unless Cisco IOS devices retrieve configurations from the network during startup, the no service config global configuration command must be used. This prevents the Cisco IOS device from attempting to locate a configuration file on the network using TFTP.
•
Cisco Discovery Protocol (CDP) is a network protocol that is used in order to discover other CDP enabled devices for neighbor adjacency and network topology. CDP can be used by Network Management Systems (NMS) or during troubleshooting. CDP must be disabled on all interfaces that are connected to untrusted networks. This is accomplished with the no cdp enable interface command. Alternatively, CDP can be disabled globally with the no cdp run global configuration command. Note that CDP can be used by a malicious user for reconnaissance and network mapping.
•
Link Layer Discovery Protocol (LLDP) is an IEEE protocol that is defined in 802.1AB. LLDP is similar to CDP. However, this protocol allows interoperability between other devices that do not support CDP. LLDP must be treated in the same manner as CDP and disabled on all interfaces that connect to untrusted networks. In order to accomplish this, issue the no lldp transmit and no lldp receive interface configuration commands. Issue the no lldp run global configuration command in order to disable LLDP globally. LLDP can also be used by a malicious user for reconnaissance and network mapping.
EXEC Timeout
In order to set the interval that the EXEC command interpreter waits for user input before it terminates a session, issue the exec-timeout line configuration command. The exec-timeout command must be used in order to logout sessions on vty or tty lines that are left idle. By default, sessions are disconnected after 10 minutes of inactivity.
!
line con 0
exec-timeout [seconds]
line vty 0 4
exec-timeout [seconds]
!
Keepalives for TCP Sessions
The service tcp-keepalive-in and service tcp-keepalive-out global configuration commands enable a device to send TCP keepalives for TCP sessions. This configuration must be used in order to enable TCP keepalives on inbound connections to the device and outbound connections from the device. This ensures that the device on the remote end of the connection is still accessible and that half-open or orphaned connections are removed from the local Cisco IOS device.
!
service tcp-keepalive-in
service tcp-keepalive-out
!
Using Management Interfaces
The management plane of a device is accessed in-band or out-of-band on a physical or logical management interface. Ideally, both in-band and out-of-band management access exists for each network device so that the management plane can be accessed during network outages.
One of the most common interfaces that is used for in-band access to a device is the logical loopback interface. Loopback interfaces are always up, whereas physical interfaces can change state, and the interface can potentially not be accessible. It is recommended to add a loopback interface to each device as a management interface and that it be used exclusively for the management plane. This allows the administrator to apply policies throughout the network for the management plane. Once the loopback interface is configured on a device, it can be used by management plane protocols, such as SSH, SNMP, and syslog, in order to send and receive traffic.
Memory Threshold Notifications
The feature Memory Threshold Notification, added in Cisco IOS Software Release 12.3(4)T, allows you to mitigate low-memory conditions on a device. This feature uses two methods to accomplish this: Memory Threshold Notification and Memory Reservation.
Memory Threshold Notification generates a log message in order to indicate that free memory on a device has fallen lower than the configured threshold. This configuration example shows how to enable this feature with the memory free low-watermark global configuration command. This enables a device to generate a notification when available free memory falls lower than the specified threshold, and again when available free memory rises to five percent higher than the specified threshold.
!
memory free low-watermark processor
memory free low-watermark io
!
Memory Reservation is used so that sufficient memory is available for critical notifications. This configuration example demonstrates how to enable this feature. This ensures that management processes continue to function when the memory of the device is exhausted.
!
memory reserve critical
!
CPU Thresholding Notification
Introduced in Cisco IOS Software Release 12.3(4)T, the CPU Thresholding Notification feature allows you to detect and be notified when the CPU load on a device crosses a configured threshold. When the threshold is crossed, the device generates and sends an SNMP trap message. Two CPU utilization thresholding methods are supported on Cisco IOS software: Rising Threshold and Falling Threshold.
This example configuration shows how to enable the Rising and Falling Thresholds that trigger a CPU threshold notification message:
!
snmp-server enable traps cpu threshold
!
snmp-server host cpu
!
process cpu threshold type rising interval
[falling interval ]
process cpu statistics limit entry-percentage [size ]
!
Reserve Memory for Console Access
In Cisco IOS Software Release 12.4(15)T and later, the Reserve Memory for Console Access feature can be used in order to reserve enough memory to ensure console access to a Cisco IOS device for administrative and troubleshooting purposes. This feature is especially beneficial when the device runs low on memory. You can issue the memory reserve console global configuration command in order to enable this feature. This example configures a Cisco IOS device to reserve 4096 kilobytes for this purpose.
!
memory reserve console 4096
!
Memory Leak Detector
Introduced in Cisco IOS Software Release 12.3(8)T1, the Memory Leak Detector feature allows you to detect memory leaks on a device. Memory Leak Detector is able to find leaks in all memory pools, packet buffers, and chunks. Memory leaks are static or dynamic allocations of memory that do not serve any useful purpose. This feature focuses on memory allocations that are dynamic. You can use the show memory debug leaks EXEC command in order to detect if a memory leak exists.
Buffer Overflow: Detection and Correction of Redzone Corruption
In Cisco IOS Software Release 12.3(7)T and later, the Buffer Overflow: Detection and Correction of Redzone Corruption feature can be enabled by on a device in order to detect and correct a memory block overflow and to continue operations.
These global configuration commands can be used in order to enable this feature. Once configured, the show memory overflow command can be used in order to display the buffer overflow detection and correction statistics.
!
exception memory ignore overflow io
exception memory ignore overflow processor
!
Enhanced Crashinfo File Collection
The Enhanced Crashinfo File Collection feature automatically deletes old crashinfo files. This feature, added in Cisco IOS Software Release 12.3(11)T, allows a device to reclaim space to create new crashinfo files when the device crashes. This feature also allows configuration of the number of crashinfo files to be saved.
!
exception crashinfo maximum files
!
Network Time Protocol
The Network Time Protocol (NTP) is not an especially dangerous service, but any unneeded service can represent an attack vector. If NTP is used, it is important to explicitly configure a trusted time source and to use proper authentication. Accurate and reliable time is required for syslog purposes, such as during forensic investigations of potential attacks, as well as for successful VPN connectivity when depending on certificates for Phase 1 authentication.
•
NTP Time Zone—When configuring NTP the time zone needs to be configured so that timestamps can be accurately correlated. There are usually two approaches to configuring the time zone for devices in a network with a global presence. One method is to configure all network devices with the Coordinated Universal Time (UTC) (previously Greenwich Mean Time (GMT)). The other approach is to configure network devices with the local time zone. More information on this feature can be found in “clock timezone” in the Cisco product documentation.
•
NTP Authentication—Configuring NTP authentication provides assurance that NTP messages are exchanged between trusted NTP peers. Refer to ntp authenticate and ntp authentication-key for more information on how to configure NTP authentication.
Limiting Access to the Network with Infrastructure ACLs
Devised to prevent unauthorized direct communication to network devices, infrastructure access control lists (iACLs) are one of the most critical security controls that can be implemented in networks. Infrastructure ACLs leverage the idea that nearly all network traffic traverses the network and is not destined to the network itself.
An iACL is constructed and applied to specify connections from hosts or networks that need to be allowed to network devices. Common examples of these types of connections are eBGP, SSH, and SNMP. After the required connections have been permitted, all other traffic to the infrastructure is explicitly denied. All transit traffic that crosses the network and is not destined to infrastructure devices is then explicitly permitted.
The protections provided by iACLs are relevant to both the management and control planes. The implementation of iACLs can be made easier through the use of distinct addressing for network infrastructure devices. Refer to A Security Oriented Approach to IP Addressing for more information on the security implications of IP addressing.
This example iACL configuration illustrates the structure that must be used as a starting point when you begin the iACL implementation process:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!— Permit required connections for routing protocols and
!— network management
!
permit tcp host host eq 179
permit tcp host eq 179 host
permit tcp host any eq 22
permit udp host any eq 161
!
!— Deny all other IP traffic to any network device
!
deny ip any
!
!— Permit transit traffic
!
permit ip any any
!
Once created, the iACL must be applied to all interfaces that face non-infrastructure devices. This includes interfaces that connect to other organizations, remote access segments, user segments, and segments in data centers.
ICMP Packet Filtering
The Internet Control Message Protocol (ICMP) is designed as an IP control protocol. As such, the messages it conveys can have far-reaching ramifications to the TCP and IP protocols in general. While the network troubleshooting tools ping and traceroute use ICMP, external ICMP connectivity is rarely needed for the proper operation of a network.
Cisco IOS software provides functionality to specifically filter ICMP messages by name or type and code. This example ACL, which must be used with the access control entries (ACEs) from previous examples, allows pings from trusted management stations and NMS servers and blocks all other ICMP packets:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!— Permit ICMP Echo (ping) from trusted management stations and servers
!
permit icmp host any echo
permit icmp host any echo
!
!— Deny all other IP traffic to any network device
!
deny ip any
!
!— Permit transit traffic
!
permit ip any any
!
Filtering IP Fragments
The filtering of fragmented IP packets can pose a challenge to security devices. This is because the Layer 4 information that is used in order to filter TCP and UDP packets is only present in the initial fragment. Cisco IOS software uses a specific method to check non-initial fragments against configured access lists. Cisco IOS software evaluates these non-initial fragments against the ACL and ignores any Layer 4 filtering information. This causes non-initial fragments to be evaluated solely on the Layer 3 portion of any configured ACE.
In this example configuration, if a TCP packet destined to 192.168.1.1 on port 22 is fragmented in transit, the initial fragment is dropped as expected by the second ACE based on the Layer 4 information within the packet. However, all remaining (non-initial) fragments are allowed by the first ACE based completely on the Layer 3 information in the packet and ACE. This scenario is shown in this configuration:
!
ip access-list extended ACL-FRAGMENT-EXAMPLE
permit tcp any host 192.168.1.1 eq 80
deny tcp any host 192.168.1.1 eq 22
!
Due to the nonintuitive nature of fragment handling, IP fragments are often inadvertently permitted by ACLs. Fragmentation is also often used in attempts to evade detection by intrusion detection systems. It is for these reasons that IP fragments are often used in attacks, and why they must be explicitly filtered at the top of any configured iACLs. This example ACL includes comprehensive filtering of IP fragments. The functionality from this example must be used in conjunction with the functionality of the previous examples.
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!— Deny IP fragments using protocol-specific ACEs to aid in
!— classification of attack traffic
!
deny tcp any any fragments
deny udp any any fragments
deny icmp any any fragments
deny ip any any fragments
!
!— Deny all other IP traffic to any network device
!
deny ip any
!
!— Permit transit traffic
!
permit ip any any
!
Refer to Access Control Lists and IP Fragments for more information regarding ACL handling of fragmented IP packets.
ACL Support for Filtering IP Options
Cisco IOS Software Release 12.3(4)T added support for the use of ACLs to filter IP packets based on the IP options that are contained in the packet. IP options present a security challenge for network devices because these options must be processed as exception packets. This requires a level of CPU effort that is not required for typical packets that traverse the network. The presence of IP options within a packet can also indicate an attempt to subvert security controls in the network or otherwise alter the transit characteristics of a packet. It is for these reasons that packets with IP options must be filtered at the edge of the network.
This example must be used with the ACEs from previous examples in order to include complete filtering of IP packets that contain IP options:
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!— Deny IP packets containing IP options
!
deny ip any any option any-options
!
!— Deny all other IP traffic to any network device
!
deny ip any
!
!— Permit transit traffic
!
permit ip any any
!
Refer to ACL Support for Filtering IP Options for more information about this functionality.
ACL Support for Filtering on TTL Value
Cisco IOS Software Release 12.4(2)T added ACL support for filtering IP packets based on the Time to Live (TTL) value. The TTL value of an IP datagram is decremented by each network device as a packet flows from source to destination. Although initial values vary by operating system, when the TTL of a packet reaches zero, the packet must be dropped. The device that decrements the TTL to zero, and therefore drops the packet, is required to generate and send an ICMP Time Exceeded message to the source of the packet.
The generation and transmission of these messages is an exception process. Routers can perform this function when the number of expiring IP packets is low, but if the number of expiring packets is high, generation and transmission of these messages can consume all available CPU resources. This presents a DoS attack vector. It is for this reason that devices need to be hardened against DoS attacks that utilize a high rate of expiring IP packets.
It is recommended that organizations filter IP packets with low TTL values at the edge of the network. Completely filtering packets with TTL values insufficient to traverse the network mitigates the threat of TTL-based attacks.
This example ACL filters packets with TTL values less than six. This provides protection against TTL expiry attacks for networks up to five hops in width.
!
ip access-list extended ACL-INFRASTRUCTURE-IN
!
!— Deny IP packets with TTL values insufficient to traverse the network
!
deny ip any any ttl lt 6
!
!— Deny all other IP traffic to any network device
!
deny ip any
!
!— Permit transit traffic
!
permit ip any any
!
Note that some protocols make legitimate use of packets with low TTL values. eBGP is one such protocol. Refer to TTL Expiry Attack Identification and Mitigation for more information on mitigating TTL expiry-based attacks.
Refer to ACL Support for Filtering on TTL Value for more information about this functionality.
Securing Interactive Management Sessions
Management sessions to devices allow you the ability to view and collect information about a device and its operations. If this information is disclosed to a malicious user, the device can become the target of an attack, compromised, and used in order to perform additional attacks. Anyone with privileged access to a device has the capability for full administrative control of that device. Securing management sessions is imperative to prevent information disclosure and unauthorized access.
Management Plane Protection
Beginning with Cisco IOS Software Release 12.4(6)T, the feature Management Plane Protection (MPP) allows an administrator to restrict on which interfaces management traffic can be received by a device. This allows the administrator additional control over a device and how the device is accessed.
This example shows how to enable the MPP to only allow SSH and HTTPS on the GigabitEthernet0/1 interface:
!
control-plane host
management-interface GigabitEthernet 0/1 allow ssh https
!
Control Plane Protection
Control Plane Protection (CPPr) builds on the functionality of Control Plane Policing in order to restrict and police control plane traffic that is destined to the route processor of the IOS device. CPPr, added in Cisco IOS Software Release 12.4(4)T, divides the control plane into separate control plane categories that are known as subinterfaces. Three control plane subinterfaces exist: Host, Transit and CEF-Exception. In addition, CPPr includes these additional control plane protection features:
•
Port-filtering feature—This feature provides for the policing or dropping of packets going to closed or non-listening TCP and UDP ports.
•
Queue-threshold policy feature—This feature limits the number of packets for a specified protocol that are allowed in the control plane IP input queue.
CPPr allows an administrator to classify, police, and restrict traffic that is sent to a device for management purposes using the host subinterface. Examples of packets that are classified for the host subinterface category include management traffic such as SSH or Telnet and routing protocols.
Note that CPPr does not support IPv6 and is restricted to the IPv4 input path.
Encrypting Management Sessions
Because information can be disclosed during an interactive management session, this traffic must be encrypted so that a malicious user cannot gain access to the data being transmitted. Encrypting the traffic allows a secure remote access connection to the device. If the traffic for a management session is sent over the network in cleartext, an attacker can obtain sensitive information about the device and the network.
An administrator is able to establish an encrypted and secure remote access management connection to a device by using the SSH or HTTPS (Secure Hypertext Transfer Protocol) features. Cisco IOS software supports SSH version 1.0 (SSHv1), SSH version 2.0 (SSHv2), and HTTPS that uses Secure Sockets Layer (SSL) and Transport Layer Security (TLS) for authentication and data encryption. Note that SSHv1 and SSHv2 are not compatible.
Cisco IOS software also supports the Secure Copy Protocol (SCP), which allows an encrypted and secure connection for copying device configurations or software images. SCP relies on SSH. This example configuration enables SSH on a Cisco IOS device:
!
ip domain-name example.com
!
crypto key generate rsa modulus 2048
!
ip ssh time-out 60
ip ssh authentication-retries 3
ip ssh source-interface GigabitEthernet 0/1
!
line vty 0 4
transport input ssh
!
This configuration example enables SCP services:
!
ip scp server enable
!
This is a configuration example for HTTPS services:
!
crypto key generate rsa modulus 2048
!
ip http secure-server
!
Refer to Configuring Secure Shell on Routers and Switches Running Cisco IOS and Secure Shell (SSH) FAQ for more information about the Cisco IOS software SSH feature.
Refer to HTTPS - HTTP Server and Client with SSL 3.0 Feature Guide - 12.2T and Cisco Tech Note Secure HTTP (HTTPS) Feature Guide - 12.1E for more information about the Cisco IOS software HTTPS feature.
SSHv2
The SSHv2 support feature introduced in Cisco IOS Software Release 12.3(4)T allows a user to configure SSHv2. (SSHv1 support was implemented in an earlier release of Cisco IOS Software.) SSH runs on top of a reliable transport layer and provides strong authentication and encryption capabilities. The only reliable transport that is defined for SSH is TCP. SSH provides a means to securely access and securely execute commands on another computer or device over a network. The Secure Copy Protocol (SCP) feature that is tunneled over SSH allows for the secure transfer of files.
The following example configuration enables SSHv2 (with SSHv1 disabled) on a Cisco IOS device:
!
hostname router
!
ip domain-name example.com
!
crypto key generate rsa modulus 2048
!
ip ssh time-out 60
ip ssh authentication-retries 3
ip ssh source-interface GigabitEthernet 0/1
!
ip ssh version 2
!
line vty 0 4
transport input ssh
!
SSHv2 Enhancements for RSA Keys
Cisco IOS SSHv2 supports keyboard-interactive and password-based authentication methods. The SSHv2 Enhancements for RSA Keys feature also supports RSA-based public key authentication for the client and server.
For user authentication, RSA-based user authentication uses a private/public key pair associated with each user for authentication. The user must generate a private/public key pair on the client and configure a public key on the Cisco IOS SSH server to complete the authentication.
An SSH user trying to establish the credentials provides an encrypted signature using the private key. The signature and the user’s public key are sent to the SSH server for authentication. The SSH server computes a hash over the public key provided by the user. The hash is used to determine if the server has a matching entry. If a match is found, RSA-based message verification is performed using the public key. Hence, the user is authenticated or denied access based on the encrypted signature.
For server authentication, the Cisco IOS SSH client must assign a host key for each server. When the client tries to establish an SSH session with a server, it receives the signature of the server as part of the key exchange message. If the strict host key checking flag is enabled on the client, the client checks whether it has the host key entry corresponding to the server preconfigured. If a match is found, the client tries to validate the signature using the server host key. If the server is successfully authenticated, the session establishment continues; otherwise it is terminated and displays a “Server Authentication Failed” message.
The following example configuration enables the use of RSA keys with SSHv2 on a Cisco IOS device:
!
! Configure a hostname for the device
!
hostname router
!
! Configure a domain name
!
ip domain-name cisco.com
!
! Specify the name of the RSA key pair (in this case, “sshkeys”) to use for SSH
!
ip ssh rsa keypair-name sshkeys
!
! Enable the SSH server for local and remote authentication on the router using
! the “crypto key generate” command
! For SSH version 2, the modulus size must be at least 768 bits
!
crypto key generate rsa usage-keys label sshkeys modulus 2048
! ! Configure an ssh timeout (in seconds) ! ! The following enables a timeout of 120 seconds for SSH connections !
ip ssh time-out 120
!
! Configure a limit of five (5) authentication retries
!
ip ssh authentication-retries 5
!
! Configure SSH version 2
!
ip ssh version 2
!
The following example configuration enables the Cisco IOS SSH server to perform RSA-based user authentication. The user authentication is successful if the RSA public key stored on the server is verified with the public or the private key pair stored on the client.
!
! Configure a hostname for the device
!
hostname router
!
! Configure a domain name
!
ip domain-name cisco.com
!
! Generate RSA key pairs using a modulus of 2048 bits
!
crypto key generate rsa modulus 2048
!
! Configure SSH-RSA keys for user and server authentication on the SSH server
!
ip ssh pubkey-chain
!
! Configure the SSH username
!
username ssh-user
!
! Specify the RSA public key of the remote peer
!
! You must then configure either the key-string command
! (followed by the RSA public key of the remote peer) or the
! key-hash command (followed by the SSH key type and version.)
!
Refer to Configuring the Cisco IOS SSH Server to Perform RSA-Based User Authentication for more information on the use of RSA keys with SSHv2.
The following example configuration enables the Cisco IOS SSH client to perform RSA-based server authentication.
!
!
hostname router
! ip domain-name cisco.c ! ! Generate RSA key pairs !
crypto key generate rsa
!
! Configure SSH-RSA keys for user and server authentication on the SSH server
!
ip ssh pubkey-chain
!
! Enable the SSH server for public-key authentication on the router
!
server SSH-server-name
!
! Specify the RSA public-key of the remote peer
!
! You must then configure either the key-string command
! (followed by the RSA public key of the remote peer) or the
! key-hash command (followed by the SSH key
! type and version.)
!
! Ensure that server authentication takes place - The connection will be
! terminated on a failure
!
ip ssh stricthostkeycheck
!
Refer to Configuring the Cisco IOS SSH Client to Perform RSA-Based Server Authentication for more information on the use of RSA keys with SSHv2.
Console and AUX Ports
In Cisco IOS devices, console and auxiliary (AUX) ports are asynchronous lines that can be used for local and remote access to a device. You must be aware that console ports on Cisco IOS devices have special privileges. In particular, these privileges allow an administrator to perform the password recovery procedure. In order to perform password recovery, an unauthenticated attacker would need to have access to the console port and the ability to interrupt power to the device or to cause the device to crash.
Any method used in order to access the console port of a device must be secured in a manner that is equal to the security that is enforced for privileged access to a device. Methods used in order to secure access must include the use of AAA, exec-timeout, and modem passwords if a modem is attached to the console.
If password recovery is not required, then an administrator can remove the ability to perform the password recovery procedure using the no service password-recovery global configuration command; however, once the no service password-recovery command has been enabled, an administrator can no longer perform password recovery on a device.
In most situations, the AUX port of a device must be disabled to prevent unauthorized access. An AUX port can be disabled using these commands:
!
line aux 0 transport input none transport output none no exec exec-timeout 0 1 no password
!
Control vty and tty Lines
Interactive management sessions in Cisco IOS software use a tty or virtual tty (vty). A tty is a local asynchronous line to which a terminal can be attached for local access to the device or to a modem for dialup access to a device. Note that ttys can be used for connections to console ports of other devices. This function allows a device with tty lines to act as a console server where connections can be established across the network to the console ports of devices connected to the tty lines. The tty lines for these reverse connections over the network must also be controlled.
A vty line is used for all other remote network connections supported by the device, regardless of protocol (SSH, SCP, or Telnet are examples). In order to ensure that a device can be accessed via a local or remote management session, proper controls must be enforced on both vty and tty lines. Cisco IOS devices have a limited number of vty lines; the number of lines available can be determined by using the show line EXEC command. When all vty lines are in use, new management sessions cannot be established, creating a DoS condition for access to the device.
The simplest form of access control to a vty or tty of a device is through the use of authentication on all lines regardless of the device location within the network. This is critical for vty lines because they are accessible via the network. A tty line that is connected to a modem being used for remote access to the device, or a tty line that is connected to the console port of other devices are also accessible via the network. Other forms of vty and tty access controls can be enforced by using the transport input or access-class configuration commands, using the CoPP and CPPr features, or by applying access lists to interfaces on the device.
Authentication can be enforced through the use of AAA, which is the recommended method for authenticated access to a device, by using the local user database, or by simple password authentication configured directly on the vty or tty line.
The exec-timeout command must be used in order to logout sessions on vty or tty lines that are left idle. The service tcp-keepalive-in command must also be used in order to enable TCP keepalives on incoming connections to the device. This ensures that the device on the remote end of the connection is still accessible and that half-open or orphaned connections are removed from the local IOS device.
Control Transport for vty and tty Lines
A vty and tty should be configured to accept only encrypted and secure remote access management connections to the device, or through the device if it is being used as a console server. This section addresses ttys because such lines can be connected to console ports on other devices, which allow the tty to be accessible over the network. In an effort to prevent information disclosure or unauthorized access to the data that is transmitted between the administrator and the device, transport input ssh should be used instead of clear-text protocols, such as Telnet and rlogin. The transport input none configuration can be enabled on a tty, which in effect disables the tty line from being used for reverse-console connections.
Both vty and tty lines allow an administrator to connect to other devices. In order to limit the type of transport that an administrator can use for outgoing connections, use the transport output line configuration command. If outgoing connections are not needed, then transport output none should be used. However, if outgoing connections are allowed, then an encrypted and secure remote access method for the connection should be enforced through the use of transport output ssh.
Note that IPSec can be used for encrypted and secure remote access connections to a device, if supported. If you use IPSec, it also adds additional CPU overhead to the device. However, SSH must still be enforced as the transport even when IPSec is used.
Warning Banners
In some legal jurisdictions it can be impossible to prosecute and illegal to monitor malicious users unless they have been notified that they are not permitted to use the system. One method to provide this notification is to place this information into a banner message that is configured with the Cisco IOS software banner login command.
Legal notification requirements are complex, vary by jurisdiction and situation, and should be discussed with legal counsel. Even within jurisdictions, legal opinions can differ. In cooperation with counsel, a banner can provide some or all of the this information:
•
Notice that the system is to be logged into or used only by specifically authorized personnel and perhaps information about who can authorize use.
•
Notice that any unauthorized use of the system is unlawful and can be subject to civil and criminal penalties.
•
Notice that any use of the system can be logged or monitored without further notice and that the resulting logs can be used as evidence in court.
•
Specific notices required by local laws.
From a security point of view, rather than legal, a login banner should not contain any specific information about the router name, model, software, or ownership. This information can be abused by malicious users.
Using Authentication, Authorization, and Accounting
The Authentication, Authorization, and Accounting (AAA) framework is critical to securing interactive access to network devices. The AAA framework provides a highly configurable environment that can be tailored depending on the needs of the network.
TACACS+ Authentication
TACACS+ (Terminal Access Controller Access Control System Plus) is an authentication protocol that Cisco IOS devices can use for authentication of management users against a remote AAA server. These management users can access the IOS device via SSH, HTTPS, telnet, or HTTP.
TACACS+ authentication, or more generally AAA authentication, provides the ability to use individual user accounts for each network administrator. In removing the dependence on a single shared password, the security of the network is improved and your accountability is strengthened.
RADIUS (Remote Access Dial-In User Service) is a protocol similar in purpose to TACACS+, however, it only encrypts the password sent across the network. In contrast, TACACS+ encrypts the entire TCP payload including both the username and password. For this reason, TACACS+ should be used in preference to RADIUS when TACACS+ is supported by the AAA server. Refer to TACACS+ and RADIUS Comparison for a more detailed comparison of these two protocols.
TACACS+ authentication can be enabled on a Cisco IOS device using a configuration similar to this example:
!
aaa new-model
aaa authentication login default group tacacs+
!
tacacs-server host
tacacs-server key
!
The previous configuration can be used as a starting point for an organization-specific AAA authentication template. Refer to Authentication, Authorization, and Accounting for more information about the configuration of AAA.
A method list is a sequential list describing the authentication methods to be queried in order to authenticate a user. Method lists enable you to designate one or more security protocols to be used for authentication, thus ensuring a backup system for authentication in case the initial method fails. Cisco IOS software will use the first listed method that successfully accepts or rejects a user. Subsequent methods are only attempted in cases where earlier methods fail due to server unavailability or incorrect configuration. Refer to Named Method Lists for Authentication for more information about the configuration of Named Method Lists.
Authentication Fallback
If all configured TACACS+ servers become unavailable, then a Cisco IOS device can rely on secondary authentication protocols. Typical configurations include the use of local or enable authentication if all configured TACACS+ servers are unavailable.
The complete list of options for on-device authentication includes enable, local, and line. Each of these options has advantages. The use of the enable secret is preferred because the secret is hashed using a one-way algorithm that is inherently more secure than the encryption algorithm that is used with the Type 7 passwords for line or local authentication.
However, on Cisco IOS software releases that support the use of secret passwords for locally defined users, fallback to local authentication can be desirable. This allows for a locally defined user to be created for one or more network administrators. If TACACS+ were to become completely unavailable, each administrator can use their local username and password. Although this action does enhance the accountability of network administrators during TACACS+ outages, it significantly increases the administrative burden because local user accounts on all network devices must be maintained.
This configuration example builds upon the previous TACACS+ authentication example to include fallback authentication to the password that is configured locally with the enable secret command:
!
enable secret
!
aaa new-model
aaa authentication login default group tacacs+ enable
!
tacacs-server host
tacacs-server key
!
Use of Type 7 Passwords
Originally designed to allow quick decryption of stored passwords, Type 7 passwords are not a secure form of password storage. There are many tools available that can easily decrypt these passwords. The use of Type 7 passwords should be avoided unless required by a feature that is in use on the Cisco IOS device.
The removal of passwords of this type can be facilitated through AAA authentication and the use of the Enhanced Password Security feature, which allows secret passwords to be used with users that are locally defined via the username global configuration command. If you cannot fully prevent the use of Type 7 passwords, consider these passwords obfuscated, not encrypted.
TACACS+ Command Authorization
Command authorization with TACACS+ and AAA provides a mechanism that permits or denies each command that is entered by an administrative user. When the user enters EXEC commands, Cisco IOS sends each command to the configured AAA server. The AAA server then uses its configured policies in order to permit or deny the command for that particular user.
This configuration can be added to the previous AAA authentication example in order to implement command authorization:
!
aaa authorization exec default group tacacs none
aaa authorization commands 0 default group tacacs none
aaa authorization commands 1 default group tacacs none
aaa authorization commands 15 default group tacacs none
!
TACACS+ Command Accounting
When configured, AAA command accounting sends information about each EXEC command that is entered to the configured TACACS+ servers. The information sent to the TACACS+ server includes the command executed, the date it was executed, and the username of the user entering the command. Command accounting is not supported using RADIUS.
This example configuration enables AAA command accounting for EXEC commands entered at privilege levels zero, one, and 15. This configuration builds upon previous examples that include configuration of the TACACS servers.
!
aaa accounting exec default start-stop group tacacs
aaa accounting commands 0 default start-stop group tacacs
aaa accounting commands 1 default start-stop group tacacs
aaa accounting commands 15 default start-stop group tacacs
!
Redundant AAA Servers
The AAA servers that are leveraged in an environment should be redundant and deployed in a fault-tolerant manner. This helps ensure that interactive management access, such as SSH, is possible if an AAA server is unavailable.
When you design or implement a redundant AAA server solution, keep these considerations in mind:
•
Availability of AAA servers during potential network failures
•
Geographically dispersed placement of AAA servers
•
Load on individual AAA servers during steady-state and failure conditions
•
Network latency between Network Access Servers and AAA servers
•
AAA server databases synchronization
Fortifying the Simple Network Management Protocol
This section highlights several methods that can be used in order to secure the deployment of SNMP within IOS devices. It is critical that SNMP be properly secured to protect the confidentiality, integrity, and availability of both the network data and the network devices through which this data transits. SNMP provides you with a wealth of information on the health of network devices. This information should be protected from malicious users that want to leverage this data to perform attacks against the network.