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 |
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.
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 #].
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.
|