Access List Tutorial
Access List Tutorial
Access control lists (ACLs) provide a means to filter packets by allowing a user to permit or deny IP packets from crossing
specified interfaces. Just image you come to a fair and see the guardian checking tickets. He only allows people with suitable
tickets to enter. Well, an access list’s function is same as that guardian.
Access lists filter network traffic by controlling whether packets are forwarded or blocked at the router’s interfaces based on
the criteria you specified within the access list.
To use ACLs, the system administrator must first configure ACLs and then apply them to specific interfaces. There are 3
popular types of ACL: Standard, Extended and Named ACLs.
Configuration Syntax
Configuration:
In this example we will define a standard access list that will only allow network 10.0.0.0/8 to access the server (located on
the Fa0/1 interface)
(there is always an implicit deny all other traffic at the end of each ACL so we don’t need to define forbidden traffic)
Router(config)#interface Fa0/1
The ACL 1 is applied to permit only packets from 10.0.0.0/8 to go out of Fa0/1 interface while deny all other traffic. So can we
apply this ACL to other interface, Fa0/2 for example? Well we can but shouldn’t do it because users can access to the server
from other interface (s0 interface, for example). So we can understand why an standard access list should be applied close to
the destination.
Note: The “0.255.255.255″ is the wildcard mask part of network “10.0.0.0″. We will learn how to use wildcard mask later.
Extended IP lists (100-199) check both source and destination addresses, specific UDP/TCP/IP protocols, and destination
ports.
Configuration Syntax
access-list access-list-number {permit | deny} protocol source {source-mask} destination {destination-mask} [eq destination-
port]
In this example we will create an extended ACL that will deny FTP traffic from network 10.0.0.0/8 but allow other traffic to go
through.
Router(config)#interface Fa0/1
Notice that we have to explicit allow other traffic (access-list 101 permit ip any any) as there is an “deny all” command at the
end of each ACL.
As we can see, the destination of above access list is “187.100.1.6 0.0.0.0″ which specifies a host. We can use “host
187.100.1.6″ instead. We will discuss wildcard mask later.
This allows standard and extended ACLs to be given names instead of numbers
This is an example of the use of a named ACL in order to block all traffic except the Telnet connection from host 10.0.0.1/8 to
host 187.100.1.6.
Define the ACL:
Router(config)#ip access-list extended in_to_out permit tcp host 10.0.0.1 host 187.100.1.6 eq telnet
Router(config)#interface Fa0/0
Wildcard masks are used with access lists to specify a host, network or part of a network.
The zeros and ones in a wildcard determine whether the corresponding bits in the IP address should be checked or ignored
for ACL purposes. For example, we want to create a standard ACL which will only allow network 172.23.16.0/20 to pass
through. We need to write an ACL, something like this:
Of course we can’t write subnet mask in an ACL, we must convert it into wildcard mask by converting all bits 0 to 1 & all bits 1
to 0.
Remember, for the wildcard mask, 1′s are I DON’T CARE, and 0′s are I CARE. Now let’s analyze our wildcard mask.
Two first octets are all 0′s meaning that we care about the network 172.23.x.x. The third octet, 15 (0000 1111 in binary),
means that we care about first 4 bits but don’t care about last 4 bits so we allow the third octet in the form of 0001xxxx
(minimum:00010000 = 16 ; maximum: 0001111 = 31).
The fourth octet is 255 (all 1 bits) that means I don’t care.
+ Permit any IP packets in network 192.23.130.128 with subnet mask 255.255.255.248 to any network:
Router(config)#interface fastEthernet0/0