Skip to main content

L2 security – IP Source Guard.

In the last post I presented Dynamic ARP Inspection, the feature which extends DHCP Snooping security feature on the Cisco switches. Today I’m going to talk about IP Source Guard, the next feature that restricts traffic from hosts not presented in the DHCP Snooping binding table (dynamic or static entries). The feature can validate IP or IP and MAC addresses.
I’m going to test the feature on the below example:

                     DHCP SERVER 
                        /----\
                       |  R1  |
                        \----/
                           | / fa1/0/9                    
                        -------         
                        | SW1 |   
                        |_____|
             fa1/0/11- /      \ -fa1/0/13
                      /        \       
                     /          \
                    /            \
              /----\               /----\
             |  R2  |             |  R3  |
              \----/               \----/
            DHCP CLIENT1         DHCP CLIENT2 

Initial configuration of R1:
 
!
interface GigabitEthernet0/0
 description link to SW1 Fas 1/0/9
 ip address 192.168.1.10 255.255.255.0
 no sh
!
ip dhcp excluded-address 192.168.1.1 192.168.1.30
!
ip dhcp pool DHCP-POOL
   network 192.168.1.0 255.255.255.0
!

R2:

!
hostname R2
!
interface gig0/0
ip address dhcp 
no shu
!

R3:
 
!
hostname R3
!
interface FastEthernet0/0
ip address dhcp 
no sh
!

SW1:
 
ip dhcp snooping vlan 1
no ip dhcp snooping information option
ip dhcp snooping database flash:DHCP.txt
ip dhcp snooping database write-delay 30
ip dhcp snooping

errdisable recovery cause dhcp-rate-limit
errdisable recovery interval 30
!
 interface FastEthernet1/0/11
 switchport mode access
 spanning-tree portfast
 ip dhcp snooping limit rate 50
!
interface FastEthernet1/0/13
 switchport mode access
 spanning-tree portfast
 ip dhcp snooping limit rate 50
!
interface FastEthernet1/0/9
 description to R1-2911 gi0/0
 ip dhcp snooping trust
!

DHCP Snooping created bindings:

SW1#sh ip dhcp snooping binding 
MacAddress          IpAddress        Lease(sec)  Type           VLAN  Interface
------------------  ---------------  ----------  -------------  ----  --------------------
E8:B7:48:42:45:C8   192.168.1.34     86350       dhcp-snooping   1     FastEthernet1/0/11
04:C5:A4:3F:D6:D0   192.168.1.35     86382       dhcp-snooping   1     FastEthernet1/0/13
Total number of bindings: 2

Now I assign IP address: 192.168.1.70 for R3, which is not presented in the bindings table.

r3#
r3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
r3(config)#int fa0/0
r3(config-if)#ip address 192.168.1.70 255.255.255.0
r3(config-if)#end
r3#
r3#ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/4 ms
r3#

As we see there is no restriction on traffic from hosts with static IPs. Let’s now enable IP Source Guard and test the ping once again:

SW1#conf t                                
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#int ra Fa1/0/11 , Fa1/0/13
SW1(config-if-range)#ip verify source          
SW1(config-if-range)#end

SW1#sh ip verify source interface Fa1/0/11
Interface  Filter-type  Filter-mode  IP-address       Mac-address        Vlan   Log
---------  -----------  -----------  ---------------  -----------------  ----   ---
Fa1/0/11   ip           active       192.168.1.34                        1      enabled
SW1#sh ip verify source interface Fa1/0/13
Interface  Filter-type  Filter-mode  IP-address       Mac-address        Vlan   Log
---------  -----------  -----------  ---------------  -----------------  ----   ---
Fa1/0/13   ip           active       deny-all                            1
SW1#

As we see traffic from R3 is denied because we assigned the static IP.

r2#ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms
r2#

r3#ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
r3#

Now I remove static IP to check if R3 can communicate using dynamic IP address:

r3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
r3(config)#int Fa0/0
r3(config-if)#ip address dhcp 
r3(config-if)#end
r3#

*Apr 22 18:14:49.014: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.1.36, mask 255.255.255.0, hostname r3

Let’s try to ping R1:

r3#
r3#ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/4 ms
r3#

and we see the traffic is allowed by IP Source Guard:

SW1#sh ip verify source interface Fa1/0/13
Interface  Filter-type  Filter-mode  IP-address       Mac-address        Vlan   Log
---------  -----------  -----------  ---------------  -----------------  ----   ---
Fa1/0/13   ip           active       192.168.1.36                        1      enabled
SW1#

Comments

Popular posts from this blog

What should you know about HA 'override enabled' setting on Fortigate?

High availability is mandatory in most of today's network designs. Only very small companies or branches can run their business without redundancy. When you have Fortigate firewall in your network you have many options to increase network availability. You can use Fortigate Clustering Protocol ( FGCP ) or Virtual Router Redundancy Protocol ( VRRP ). FGCP has two modes: 'override' disabled (default) and 'override' enabled . I'm not going to explain how to set up HA as you can find many resources on Fortinet websites: https://cookbook.fortinet.com/high-availability-two-fortigates-56/ https://cookbook.fortinet.com/high-availability-with-fgcp-56/ Let's recap what is the main difference between them. The default HA setting is 'override' disabled and this is an order of selection an active unit: 1) number of monitored interfaces - when both units have the same number of working (up) interfaces check next parameter 2) HA uptime - an ...

FortiGate and GRE tunnel

Recently I worked on one project where a client requested to re-route web traffic to the GRE tunnel to perform traffic inspection. I would like to share with you what is required if you configure it on FortiGate. We need a new GRE interface and policy base routing (PBR) to change the route for specific source IPs. Of course you need firewall policies to permit the traffic. Let's start with GRE interface. Unfortunately you can't configure it using the GUI, only CLI is the option: config system gre-tunnel edit "gre1" set interface "port1" set local-gw 55.55.55.55 set remote-gw 44.44.44.44 next end When the end peer is Cisco router, you need to set the IP for the GRE interface: config system interface edit gre1 set ip 192.168.10.10 255.255.255.255 set remote-ip192.168.10.20 end In next step we need to fix routing. We need the alternate path via GRE but to keep the route in the active routing table you need to set the same AD (adminis...

IKEv1 aggresive mode

I know that IKEv2 is getting popular but still IKEv1 has a huge presence in production networks. There are many reasons but I’m not going to focus on them. I would rather focus on one issue I see from time to time: ikev1 and an aggressive mode. Just to remind you, there are two modes of ikev1: aggressive and main. The first one is much faster, only three messages are exchanged, but it isn’t secure as the main mode (with six messages). The main problem with the aggressive mode is the first two messages  contain data which may help to perform attack on your VPN. For this test I set up VPN on ASA with ‘aggressive mode’ enabled: ciscoasa# sh run crypto crypto ipsec ikev1 transform-set TS esp-3des esp-md5-hmac crypto map MAPA 10 match address ACL crypto map MAPA 10 set peer 192.168.111.128 crypto map MAPA 10 set ikev1 transform-set TS crypto map MAPA interface inside crypto ikev1 enable inside crypto ikev1 policy 10  authentication pre-share  encryption 3des  hash md5...