Access Lists
Access lists regulate network traffic flow and security by using permit and
deny statements that filter traffic based on source address, destination
address, and protocol type of a packet. They are available for IP, IPX,
AppleTalk, and other protocols.
Access lists must be entered in sequentially, you can't move individual
statements once they are entered. You can disable the access list with the
no access-list [list #]
command. It is common to create the access list separately and apply it by
copying and pasting it into the router configuration.
To copy an externally created access list, for example from a TFTP server,
create the list on the TFTP host and save the file as plain text (ASCII).
Then, from your router, use the
copy tftp running-config
file_id command to copy the access list to your router. Finally,
perform the
copy running-config
startup-config command to save the access list to your router's NVRAM.
The first command of an edited access list file should delete the previous
access list (for example, type a
no access-list command at
the beginning of the file) else the new rules will be appended to the end of the
access list.
If you telnet into a router and apply an access list, there is the
possibility that you could be blocked from the router. To avoid the
inconvenience of being locked out, use the command
reload in [hh:mm].
This command will cause the router to restart and load a startup-config without
the access list that blocked access.
Access List Rules
Access lists must be applied sequentially and they always end with an
implicit deny statement. Since all traffic not explicitly permitted in the
access list is blocked, using the command
access-list [list #] permit any
at the end of the access list allows remaining traffic that hasn't been blocked
with a deny statement through the interface. This is why you can't append
new rules to an access list, any statements added after the
permit any or implicit deny
command wouldn't be evaluated, a packet is only evaluated by an access list
until it matches a statement. You should place first on the list the lines
that are most likely to find a match, this will reduce unnecessary processing
and save CPU time. To remove an access-list use the command
no access-list [list #].
This command removes the entire access list. If you don't remove an access
list first, all new lines will be appended to the end of the old one.
After you create access lists, you must apply them to an interface so they can
filter traffic. They can be either outgoing or incoming filters.
| Access List Type |
Number |
| Standard IP Access Lists |
1-99 |
| Extended IP Access Lists |
100-199 |
| Standard IPX Access Lists |
800-899 |
| Extended IPX Access Lists |
900-999 |
| IPX SAP Filters |
1000-1099 |
Applying an Access List
Router(config-if)#ip access-group ?
<1-199> IP access list (standard or extended)
<1300-2699> IP expanded access list (standard or extended)
WORD Access-list name
The following command filters incoming traffic with
standard IP access-list 1
Router(config-if)#ip access-group 1 in
The following command filters outgoing traffic with
standard IP access-list 1
Router(config-if)#ip access-group 1 out
If the filter direction (in or out) isn't specified, it uses outbound by
default. An interface can't have more than one inbound or more than one outbound
access list applied to it. Multiple lists are allowed if the lists are for
different protocols.
Access Lists Follow These Rules
- Routers apply lists sequentially in the order in which you type them into
the router.
- Routers apply lists to packets sequentially, from the top down, one line at
a time.
- Packets are processed only until a match is made and then they are acted
upon based on the access list criteria contained in access list statements.
- Lists always end with an implicit deny. Routers discard any packets that do
not match any of the access list statements.
- Access lists must be applied to an interface as either inbound or outbound
traffic filters.
- Only one list, per protocol, per direction can be applied to an interface.
Two Main Types of Access Lists
1. Standard
Standard IP Access Lists
Standard IP access lists filter network traffic based on the source IP
address. Using a standard access list, you can filter traffic by a host IP
address, subnet, or a network address. In order to configure standard IP
access lists, you you must first create the access list and then apply it to an
interface using the following syntax:
access-list [list #] [permit|deny] [source address] [source wildcard mask]
| Variable |
Definition |
| [list #] |
Standard IP access lists are represented by a number ranging from 1-99 or
text names with IOS 11.2 or greater |
| [permit|deny] |
Used to specify the nature of the access list either a permit or deny
statement |
| [source
address] |
The IP address of the source |
| [source
wildcard mask] |
A wildcard mask, or inverse mask, applied to determine which bits of the
source address are significant |
Wildcard masks are the inverse of the subnet, the 0's are significant and the
1's are not significant. If you compare the source address to the wildcard
mask, the source address bits that match up with the 0's specifies the network
(only one) and the source address bits that match the 1's are all the hosts to
which the list applies.
Wildcard Examples
| Source |
Wildcard |
Host Range |
Matches |
| 192.168.1.55 |
0.0.0.0 |
192.168.1.55 |
One host |
| 192.168.1.0 |
0.0.0.255 |
192.168.1.1 - 192.168.1.255 |
Last octet (one network) |
| 192.168.0.0 |
0.0.255.255 |
192.168.0.1 - 192.168.255.255 |
Last two octets (entire 192.168.0.0 network) |
| 142.110.16.0 |
0.0.7.255 |
142.110.16.1 - 142.110.23.255 |
Last octet and right 3 bits of second from right octet (part of
the network) |
| 172.16.32.0 |
0.0.31.255 |
172.16.32.1 - 172.16.63.255 |
Last octet and right 5 bits of second from right octet (part of
the network) |
Example for Standard IP Access Lists
Router(config)#access-list 1 deny host 192.168.1.4
Router(config)#access-list 1 permit 0.0.0.0 255.255.255.255
Router(config)#int e0
Router(config-if)#ip access-group 1 out
This access list allows traffic from 192.168.1.4 to enter the router, but the
access list denies it from exiting on interface Ethernet 0. The deny
statement uses the default wildcard mask of 0.0.0.0 (i.e. all bits are
significant and it only applies to one host). The 0.0.0.0 255.255.255.255
can be replaced with the word
any. The list is
applied to the outbound of one interface as opposed to the inbound. This
will prevent the host being blocked from other networks on the router that might
not have been intended since traffic from 192.168.1.4 can enter the router and
be switched to other networks on interfaces other than ethernet 0. You
should apply the standard IP access list as close to the destination network as
possible, or you could inadvertently block access to portions of your network.
Use the command
show access-lists to see
the access lists on your router. For just IP access lists use the command
show ip access-list.
To remove the access list use the command
no access-list [list #].
Use the
show ip interface and the
show interface commands to
verify that an access list has been successfully applied to an interface.
Standard IPX Access Lists
Standard IPX Access Lists are similar to standard IP access lists, except
they can filter based on source and destination addresses or networks.
access-list [list #] [permit|deny] [source network/ node address]
[destination network/ destination address]
| Variable |
Definition |
| [list #] |
Standard IPX access lists are represented by a number ranging from 800-899 |
| [permit|deny] |
Used to specify the nature of the access list either a permit or deny
statement |
| [source
network/ node address] |
The IPX address of the source network or node |
| [destination
network/ destination address] |
The IPX address of the destination network or node |
The following access list denies IPX network 500 from accessing IPX network
200 on inbound ethernet 0 and then permits all others. This access list
should be applied as close to network 500 as possible to reduce network traffic.
Example
Router(config)#access-list 800 deny 500 200
Router(config)#access-list 800 permit -1 -1
Router(config)#int e0
Router(config-if)#ipx access-group 800 in
The -1 is like the IP's
any command, it applies to
all hosts. Standard IPX access lists can be seen with the command
show access-lists or
show ipx accest-list.
2. Extended
Extended IP Access Lists
Extended IP access lists can filter based on source IP address, destination
IP address, protocol type, and application destination and source port numbers,
whereas standard IP access lists only filter sources addresses. You also
configure extended IP access lists by creating the list and applying it to an
interface using the following syntax:
access-list [list #] [permit|deny] [protocol] [source IP addr] [source wildcard mask] [operator]
[port] [destination IP addr] [destination wildcard mask] [operator] [port] [log]
| Variable |
Definition |
| [list #] |
Extended IP access lists are represented by a number ranging from 100-199 or
text names with IOS 11.2 or greater |
| [permit|deny] |
Used to specify the nature of the access list either a permit or deny
statement |
| [protocol] |
The IP protocol to be filtered can be IP (includes all protocols in the
TCP/IP suite) TCP,UDP,ICMP,or others |
| [source
address] |
The IP address of the source |
| [source
wildcard mask] |
A wildcard mask, or inverse mask, applied to determine which bits of source
address are significant |
| [operator] |
Can contain lt (less than), gt (greater than), eq
(equal to), or neq (not equal to). It is used if an extended list filters
by a specific port number |
| [port] |
If necessary, the source port number or name of the protocol to be filtered. |
| [destination
address] |
The IP address of the destination |
| [destination
wildcard mask] |
A wildcard mask, or inverse mask, applied to determine which bits of
destination address are significant |
| [operator] |
Can contain lt (less than), gt (greater than), eq
(equal to), or neq (not equal to). It is used if an extended list filters
by a specific port number |
| [port] |
If necessary, the destination port number or name of the protocol to be
filtered |
| [log] |
Turns on logging of access list activity |
Example: This access list will block 192.168.1.10 from accessing TCP
port www (http[80]) on host 192.168.2.2. The
host keyword is a shortcut
for the 0.0.0.0 wildcard mask. Since extended IP access lists use
destination addresses, the list should be applied as close to the source as
possible to reduce unnecessary traffic on the network.
Router(config)#access-list 100 deny tcp host 192.168.1.10 host 192.168.2.2 eq www
Router(config)#access-list 100 permit ip any any
Router(config)#int e0
Router(config-if)#ip access-group 100 in
To remove the access list use the command
no ip access-group [list #].
Use the same commands to monitor an extended IP access list as a standard access
list i.e.
show access-lists or
show ip access-list.
Extended IP access lists show the number of matches per line of the access list;
to clear these counters, use the command
clear access-list counter [list
#].
Extended IPX Access Lists
Extended IPX access lists allow you to filter based on source and destination
network or node address, IPX protocol type, and IPX socket #.
access-list [list #] [permit|deny] [protocol] [source network/ node address] [socket]
[destination network/ node address] [socket]
| Variable |
Definition |
| [list #] |
Extended IP access lists are represented by a number ranging from 900-999. |
| [permit|deny] |
Used to specify the nature of the access list, either a permit or deny
statement. |
| [protocol] |
IPX protocol, a -1 specifies all IPX protocols. |
| [source
network/ node address] |
The IPX address of the source network or node. |
| [socket] |
Similar to the port value in IP access lists, points to a particular
service, a 0 specifies all sockets. |
| [destination
network/ node address] |
The IPX address of the destination network or node. |
| [socket] |
Similar to the port value in IP access lists, points to a particular
service, a 0 specifies all sockets. |
Example: The -1s are
for any ipx protocol or network. This access list denies
all protocols (-1) and all sockets (0) from IPX network
500 from going to IP network 200 (all sockets also).
The access list should be applied to the inbound
interface that IPX network 500 is on. This will
reduce network traffic and save router resources.
Router(config)#access-list 900 deny -1 500 0 200 0
Router(config)#access-list 900 permit -1 -1 0 -1 0
Router(config)#int e0
Router(config-if)#ipx access-group 900 in
Again you can see the IPX extended access list with the command
show access-lists or
show ipx acces-list.
IPX SAP Filters
IPX SAP filters limit SAP traffic in order to control what resources on the
IPX network will be visible to IPX clients. This allows you to limit the
advertisement of particular servers and services to a particular IPX network
segment. Since SAP advertisements are broadcasts, limiting them can reduce
network traffic. Can be used to block server advertisements between
separate departments.
access-list [list #]
[permit|deny] [source network / node address]
[service-type]
| Variable |
Definition |
| [list #] |
IPX SAP filters are represented by a number in the range of 1000-1099. |
| [permit|deny] |
Used to specify the nature of the access list either a permit or deny
statement. |
| [source
network/ node address] |
The IPX address of the source network or node. |
| [service-type] |
IPX services such as print services, file services, or directory services, a
0 matches all services. |
Example: Denies all SAP advertisements from network 200, but allows
updates to all other network segments.
Router(config)#access-list 1001 deny 200 0
Router(config)#access-list 1001 permit -1 0
To apply a SAP filter to an inbound interface, use the commands:
Router(config)#int e0
Router(config-if)#ipx input-sap-filter 1001
OR to apply the access list to an outbound interface,
use the commands:
Router(config)#int e0
Router(config-if)#ipx output-sap-filter 1001
This would block all advertisements from network 200 from being passed to
other routers on the internetwork. Again you can use the command
show access-lists to see
the access lists.
Controlling VTY Access
You can control access to VTY ports by applying a standard access list to the
VTY lines.
Router_2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router_2(config)#access-list 15 permit host 192.168.1.71
Router_2(config)#line vty 0 4
Router_2(config-line)#access-class 15 in
This will stop all hosts except 192.168.1.71 from telneting into the router.
This is accomplished by only allowing one host and then not permitting any other
hosts since there is an implicit deny at the end of all access lists.
|