barra de menu

lunes, 1 de junio de 2015

5. SEGURIDAD

La mayoría de los ataques de capa 2 son por "envenenamiento de la tabla de direcciones mac (CAM). Un ejemplo claro es el de un usuario envía continuamente muchas direcciones mac hasta que se llena la CAM, la deja sin memoria. Entonces el switch se convierte en un hub porque empieza a enviar toda la información por todos los puertos. Ahí, un usuario con un sniffer puede conseguir la información.

Hay otro típico ataque es el Mac spoofing, que cambia la dirección mac del atacante. Esto, entre otras cosas, puede hacer creer al switch que la misma mac entra por dos puertos diferentes y empiece a reescribir la tabla de macs resultando en un ataque de "denegación de servicio" (DoS), dejando al switch en modo no operativo.

La seguridad en los puertos de switch (port security) fue creada para evitar este tipo de ataques entre otros.


Dos formas para proteger los puertos en capa 2:



1. Limitar el número de direccones mac que puede aprender por el puerto. Además evita problemas de spanning-tree. Para configurarlo:


sw (config-if)# switchport mode access - asignamos el modo acceso al puerto

sw (config-if)#switchport port-security - habilitamos la seguridad

sw (config-if)#switchport port-security maximum 1 - limitamos a una dirección mac


Podemos aplicar varias acciones cuando se viola la protección de seguridad del puerto:


  - Protect: las tramas con direcciones mac no conocidas se descartan.

  - Shutdown: por defecto. Pone el puerto en "err-disable". Envía un trap SNMP e incrementa el contador. Cierra el puerto al tráfico.

  - Restrict: Descarta tramas con mac de origen desconcida cuando se llega al límite de macs. Envía un trap SNMP e incrementa el contador. Seguirá permitiendo tráfico de las macs permitidas

  - Shutdown Vlan: pone en shutdown la vlan en puertos multi-vlan. Igual que shutdown pero para Vlans


   sw (config-if)#switchport port-security violation protect | restrict | shutdown


Cuando se aplica el shutdown veremos el mensaje "err-disable" en el puerto. Para quitar este error y hacer al puerto operativo otra vez, haremos un "shutdown/no shutdown" en el puerto. Tiene un tiempo establecido para la recuperación automática del puerto. Si hacemos un "show errdisable recovery" veremos el tiempo que está configurado. Para modificar este parámetro:

           Sw(config)#errdisable recovery cause


2. Asegurar las direcciones mac. Tenemos 3 opciones para configurar el Port Security para asegurar las direcciones mac:


  - Static: se configura manualmente la dirección mac. Hay que configurar cuántas permitimos. Se almacena en la CAM y en la configuración del equipo


          Sw(config-if)switchport port-security maximum X

          Sw(config-if)#switchport port-security mac-address XXXX.XXXX.XXXX


Si por ejemplo configuramos un máximo de 10 y luego solo configuramos estáticamente 1 dirección mac, admitirá esa estática y 9 dinámicas.


  - Dynamic: las aprende el switch según entran. Se almacenan en la CAM, pero no en la config.


  - Sticky: pueden aprenderse dinámicamente o estáticamente. Almacenadas en CAM y config. Aprenderá el número máximo que hayamos configurado previamente


          Sw(config-if)#switchport port-security mac-address sticky



Para comprobar:

   
         switch#show port-security interface X




DHCP SNOOPING 

DHCP Snooping utiliza el concepto de interfaces fiables/no fiables (trust/untrust) de manera que los paquetes que llegan a las interfaces no fiables (untrust) se descartan si no cumplen con la asociación de mac de origen y puerto por el que entra.

El dhcp snooping está básicamente orientado para evitar el ataque "el hombre en el medio". Este ataque hace que un usuario se conecte al switch y el equipo que conecta emula un servidor dhcp contestando a las peticiones de los host a través de su máquina antes que el dhcp original. Configurando el dhcp snooping, pondrá el puerto en shutdown en caso de recibir una respuesta dhcp por un puerto no fiable



Sw(config)#ip dhcp snooping - parará cualquier respuesta dhcp desde un puerto no fiable (untrust) 
Sw(config)#ip dhcp snooping vlan X- para configurarlo en vlan

Sw(config-if)#ip dhcp snooping trust-  para hacer un puerto fiable
Sw(config-if)#ip dhcp snooping rate limit X -  peticiones máximas que puede manejar

En cuanto habilitamos el dhcp snooping, el switch registra las asociaciones de las direcciones ip y las direcciones mac (ip bindings). Los puerto fiable verán tanto las peticiones al servidor dhcp como las respuestas y creará una table de direcciones. Para verla:



    Sw#sh ip dhcp snooping binding   




IP SOURCE GUARD


Se usa conjuntamente con el DHCP Snooping. Restringe el tráfico de capa 2 en los puertos configurados como no fiables. Crea un PVACL (per port and vlan acl) en el puerto permitiendo solo la ip y/o la mac que se le concedió la primera vez desde el servidor DHCP. Si tenemos una lista larga de hosts puede sobrecargar al equipo.


Para configurarlo:


         Sw(config-if)#ip verify source vlan dhcp-snooping port-security




IBNS - IDENTITY-BASED NETWORK SERVICES


Esta tecnología nos proporciona control de acceso y políticas aplicables a nivel de puerto basado en identidades.

Se puede hacer por usuario o por servicio. Las políticas se mapean a las identidades de la red que deberemos definir.

El control de acceso en el puerto está basado en políticas de autenticación y autorización.

Se compone de los de seguridad protocolos 802.1x, EAP y Tacacs o Radius.




   
      -  Supplicant: un cliente 802.1x

      -  Authenticator: el dispositivo que da el control de acceso físico

      -  Authentication Server: valida la identidad del cliente (supplicant) y autoriza el acceso



Para configurarlo:

     Sw(config)#aaa new-model

     Sw(config)#tacacs/radius server host X.X.X.X

                                                                -WORD             - WORD
Sw(config)#aaa authentication dot1x - default - group -RADIUS
                                                                                           -TACACS
Sw(config)#dot1x system-auth control



Ahora vamos a los puertos:


                                                     - auto: si está autorizado deja pasar. Si no, no. 
Sw(config)#dot1x port-control  - force-authorized: por defecto. Siempre autoriza.No autent.
                                                     - force-unauthorized: nunca autoriza a un cliente



PRIVATE VLAN (VLAN PRIVADAS)


Este concepto es como crear vlans independientes una de otra dentro de una misma vlan; es como segregar una vlan. Esto convierte un segmento de broadcast (la vlan original) en uno de non-broadcast (cada vlan dentro de la vlan, ya no se ven todos los dispositivos que pertenecen a esa vlan)

Tenemos 3 tipos de puerto:


-          Promiscuous ports: Normalmente el que conecta a un equipo de capa 3. Puede enviar y recibir tramas desde y hacia cualquier puerto


-          Isolated ports: Normalmente el que conecta a un host (PC). Solo tienen permitida la comunicación con los puertos que son promiscuous.



-          Community ports: se comunican con el promiscuous y con lospuerto que tengan configurada la misma comunidad.




Configuración de Private - VLAN:





Las Vlan Privadas solo se configuran en VTP TRANSPARENT MODE. 

Lo primero que hay que hacer es configurar la Vlan Primaria:

Sw(config)#vtp mode transparent
Sw(config)#vlan 200


Sw(config-vlan)#private-vlan primary


Después creamos la vlan privadas:


VLAN 200 - La hacemos de tipo ISOLATED


Sw(config)#vlan 200


Sw((config-vlan)#private-vlan isolated


VLAN 100 - La hacemos de tipo COMMUNITY


Sw(config)#vlan 100


Sw((config-vlan)#private-vlan community



Después tenemos que asociar las vlans privadas a la vlan primaria


Sw(config)#vlan 1000

Sw(config-vlan)#private-vlan association 100,200


Por último asociaremos los puertos a las vlans


Sw(config)#interface range fa0/1 - 3
Sw(config-if)#switchport mode private-vlan host - hacemos al puerto host para vlans privadas

Sw(config-if)#switchport private-vlan host-association 1000 100 - Primero hacemos que pertenezca a la vlan primaria y despues a la privada

Sw(config)#interface fa0/4
Sw(config-if)#switchport private-vlan host-association 1000 200Primero hacemos que pertenezca a la vlan primaria y despues a la privada

Sw(config)#interface fa0/0
Sw(config-if)#switchport mode private-vlan promiscuous - lo hacemos "promiscuous"


Finalmente tenemos que mapear los puertos permitidos el acceso al puerto "promiscous"


Sw(config)#interface range fa4/27
Sw(config-if)#switchport mode private-vlan mapping 1000 100,200 - Aquí le estamos diciendo que el puerto pertenece a la VLAN 1000  yque las vlan 100 y 200 tienen acceso


Para verificar:



Sw#sh vlan private-vlan



PACL (PORT ACL)


Son ACL's configuradas para puertos de capa 2. Se pueden configurar tanto en el puerto físico como en un Etherchannel.

Se aplica solo a la entrada del tráfico.

Creamos una access-list normal peor para filtrar direcciones mac y luego las aplicamos al puerto de capa 2 con el mismo comando: ip access-group X


VACL (VLAN ACL)


Estas acls se aplican para el control del tráfico dentro de una vlan o del enrutamiento entre vlans.

Inportante saber que no se aplican ni de entrada ni de salida, no hay ese concepto. Se aplica a toda la vlan tanto de entrada como de salida, todo el tráfico.



ATAQUES EN SPANNING-TREE

Para evitar que alguien conecte un switch a un puerto de nuestro switch y el protocolo STP empiece a recibir BPDU's y, por lo tanto a recalcular (lo que nos deja sin servicio) tendremos que habilitar el BPDU Guard. En cuanto el puerto recibe una BPDU, se pondrá en shutdown. Normalmente estos puertos que queremos prevenir son de acceso y tienen port-fast habilitado.


        sw(config-if)#spanning-tree bpduguard enable


        sw(config)#spanning-tree portfast bpduguard default - en modo global


También para asegurar los puertos de acceso podemos usar la opción filter, que hace prácticamente lo mismo pero ni envía ni recibe BPDU's en el puerto. Descarta las BPDu que le llegue al puerto. Esto deshabilita el spanning-tree en el puerto por loque nunca hay que configurarlo en puertos que conecten a otro switch. Dependiendo de la IOS, los comando pueden variar:



        sw(config-if)#spanning-tree bpdufilter enable

        sw(config-if)#spanning-tree portfast edge bpdufilter default

        sw(config)#spanning-tree bpdufilter default - modo global

        sw(config)#spanning-tree portfats bpdufilter default


A nivel global, podemos configurar el comportamiento del puerto ante una detección de BPDU:

     sw(config)#errdisable detect cause bpduguard


Cuando se cumplen las condiciones y se aplican las políticas, veremos el puerto en estado "down down (errdisable)". Podéis hacer la prueba efrentando dos switches en un trun y configurando en uno de los puertos estas opciones. Eso hará que descarte las BPDU's, ponga el puerto en down y genere un mensaje en el log.


En los puertos troncales también corremos el riesgo de que el ataque haga que el nuevo switch se convierta en el Root Bridge del protocolo STP (nos llega una BPDU superior). Para evitarlo configuraremos en nuestro switch ROOT y en el backup que hayamos elegido en los puertos DESIGNATED.

      
       sw(config-if)#spanning-tree guard root



La última característica sirve para evitar que un puerto en blocking que deja de recibir BPDU's, se levante y pueda crear un loop. Al dejar de recibir BDPU se cree que la topología STP está libre de loops y se levanta. Esto se aplica para prevenir "fallos de enlaces unidireccionales", como por ejemplo, los enlaces de fibra óptica que tienen un cable físico para mandar y otro para recibir.




El enlace entre el switch 2 y el switch es de Fibra Óptica. En este dibujo represento los dos cables: el RCX (recepción) y TRX (transmisión). El escenario STP ese enlace solo represneta uno cable. STP lo ve como los enlaces que van al Root Bridge. Sin embarg, en la operación de comunicación de la F.O. se usa un cable para una cosa y el otro para la otra.

Pues bien, imaginemos que solamente el enlace de transmisión del switch 2 al switch 3 falla y, por lo tanto, el switch 3 deja de recibir BPDU'S pero puede seguir enviando. Entonces, como ya no recibe BPDU's en su "Alternate Port", lo cambiará ha estado de "Forwarding", empezará a enviar tráfico y creará un bucle (loop).






Para configurar el Loop Guard:


       sw(config-if)#spanning-tree guard loop

       sw(config)#spanning-tree loopguard default - modo global



Si tenemos configurado Loop Guard y se da el caso, el equipo pondrá el puerto en estado de loop-inconsistent state y bloquerá todo el tráfico.



A partir de la IOS 12.3, hay un comando para habilitar la protección contra bucles en enlaces unidireccionales. A partir de esta IOS, viene por defecto habilitado aunque se puede deshabilitar:


   
     (config)#
no spanning-tree bridge assurance

     (config-if)#no spanning-tree port type network - nivel interfac

Cuando haya un error en la topología, veremos el puerto afectado en un estado de inconsistent state (blocking).




MONITORIZACIÓN DE PUERTOS (SPAN, RSPAN y ERSPAN)


Podemos hacer que el tráfico de un puerto se replique y nos lo envíe por otro puerto. Lo suyo es tener un analizador como el Wireshark en este puerto para recibir toda la infomración y analizarla.También podemos monitorizar puertos de switches remotos.

Tenemos 3 tipos:
  • SPAN -> Local SPAN. Se duplican las tramas de una o más interfaces y se sacan por un puerto del mismo switch.
 
  •  RSPAN -> Remote SPAN. Se duplican las tramas de una o más interfaces y se sacan por un puerto de un swtich remoto. Para llegar a este último switch se tiene que configurar RSPAN en todos los switches por los que pasa el tráfico.

  • ERSPAN -> Encapsulated Remote SPAN. Es propietario de Cisco. El tráfico capturado lo encapsula en un túnel GRE permitiendo extender la monitorización a la capa 3. 

Un ejemplo de RSPAN


Queremos que el tráfico que pasa por el puerto f0/10 del SW1 se replique y lo mande al puerto f0/15 del mismo switch donde tenemos un equipo con wireshark.


SW1(config)#monitor session 1 source interface fa0/10

SW1(config)#monitor session 1 destination interface fa0/15


Ahora queremos hacer lo mismo pero con el puerto f0/5 del SW2. El RSPAN se propaga a través de una VLAN: Es decir, tenemos que crear una vlan dedicada al RSPAN que es por donde circulará el tráfico que se replique. En nuestro caso, imaginamos que el la VLAN es la 25. Hay que tener en cuenta que habría que dejarla pasar por el trunk. Para configurarlos sería:

SW2(config)#vlan 25
SW2(config-vlan)#remote-span
SW2(config)#monitor session 2 source interface f0/5
SW2(config)#monitor session 2 destination remote vlan 25

SW1(config)#vlan 25
SW1(config-vlan)#remote-span
SW1(config)#monitor session 2 source remote vlan 25
SW1(config)#monitor session 2 destination interface f0/5


Si estamos monitorizando un trunk podemos filtrar las vlans que queremos que se copien los paquetes. Por ejemplo, queremos que se copien la de la vlan 25 y las de las vlans de la 50 a la 60.


SW1(config)#monitor session 2 source interface f0/0
SW1(config)#monitor session 2 filter vlan 25, 50 - 60
SW1(config)#monitor session 2 destination interface f0/5


¡¡Ojo con el RSPAN que puede tirar los trunks!!



MEJORES PRÁCTICAS 


Cisco propone unas prácticas para asegurar nuestra capa 2.


1.      Deshabilitar CDP/LLDP en los puertos que no necesitamos para ellos: la información que dan estos protocolos es en texto plano.  Cisco envía TLV’s (la información) cada 60 segundos. LLDP que es el estandar IEE 801.1AB los envía cada 30. Lo suyo es deshabilitarlo en general y habilitarlo solo en los puertos que nosotros decidimos. CDP viene habilitado por defecto en modo global:


                             Sw(config)# no cdp run – deshabiltiamos en general

                             Sw(config-if)#cdp enable - habilitamos en el interface


CDP tiene dos versiones, 1 y 2. La versión 2 ofrece más características de tracking que la 1. La información que podemos encontrar en los TLV's del CDP son:


   - Configuración del Duplex


   - Hardware del dispositivo


   - Nombre de equipo


   - Direcciones Ip de las interfaces de los equipos

   - Interfaces activas en el equipo, incluída la encapsulación


   - Dispositivos localmente conectados propagando CDP


   - VLAN Nativa -
La versión 1 no envía esta info.


   - Dominio VTP -
LLDP no envía información de VTP


   - Versión Cisco IOS XE


2.      Bloquear ataques STP: bpdu guard


3.      Poner en shutdown los puertos que no usemos



4.      Desahbilitar la negociación de TRUNK:  hacer todos los puertos de acceso


                   Sw(config-if)#switchport mode access


5.      Seguridad física: switches en armarios o salas con acceso restringido.


6.      Poner los puertos no usados en una vlan vacía: crear una vlan que no se propague por el trunk. Vlan999…


7.      Usar switchport host  en la configuración del interface configuration: habilita además switchport fast


8.      Usar SSH.


9.      Usar autenticación en todas las líneas vty y con. Permitir desde un origen determinado


10.  Usar banners de aviso:  Unauthorized access is prohibited….


11.  Asegurar el acceso a la administración web:


                    Sw(config)#no ip http server.


12.  Si necesitamos la web, habilitar la https:


                    Sw(config)#ip http secure server


13.  Podemos crear Access list para el http:


                     Sw(config)#ip http access-class X


Vamos a practicar un poco en el LABORATORIO SEGURIDAD



6. SWITCHING DE CAPA 3

No hay comentarios:

Publicar un comentario