Contenido

Lab0 implementando un laboratorio de Pentesting en GNS3

Vamos a diseñar el laboratorio tratando de que sea lo más realista posible como dice el título se usará GNS3 como herramienta principal.

Arquitectura de la red

Para el diseño de la red vamos a pensar en una organización pequeña y que necesite:

Subredes
  • Una red para servidores expuestos a internet
  • Una red pública donde clientes puedan conectarse a internet ya sea por cable o wifi
  • Una red para el personal administrativo
  • Una red para los desarrolladores

Como vemos tenemos 4 grupos o subredes, ahora algunas condiciones más:

Condiciones
  • Desde la red de servidores no debe haber conectividad a las otras redes excepto a internet
  • Las demás redes si pueden tener conectividad a los servidores
  • La red pública, administrativa y de desarrolladores no deben tener conectividad entre sí excepto a internet esto por razones de seguridad
  • Usar los dispositivos adecuados para agregar futuras subredes

Diagrama

Realizamos un diagrama simple con los requisitos que tenemos para cada red:

/pentesting/lab/lab0/images/diagram1.png
Figura 1: Borrador de las 4 redes

Explicación:

  • La red pública o para clientes además de ofrecer conectividad vía cable ethernet tambíén lo hace vía wifi
  • Las redes: desarrolladores, administrativos y de servidores usarán el mismo tipo de topología y conectividad mediante cable Ethernet

Dispositivos:

En todas las redes se implementa:

  • Un router
  • Un switch
  • En el caso de la red pública además un punto de acceso wifi
Punto de acceso wifi
Si vemos en el diagrama para la red pública estamos conectando el punto de acceso al switch y no al router, esto para que los clientes en la red wifi estén en el mismo segmento que los usuarios de la red cableada, pero claro en el punto de acceso wifi es posible configurar otro segmento solo para los clientes. Si fuera necesario también será posible conectar un punto de acceso wifi en las otras redes directo al switch.

Internetwork

El diagrama de como se conectarán las redes:

/pentesting/lab/lab0/images/diagram2.png
Figura 2: Interconexión de las redes

Como vemos en el diagrama de izquierda a derecha primero usamos un firewall en este caso Pfsense que se encargará de evitar posibles intruciones desde la red de servidores, recordemos que estos servidores son de producción, tienen una ip pública y podrían ser por ejemplo un sistema de registro.

El firewall está conectado al router de los servidores a esta zona se la conoce como DMZ o zona desmilitarizada(no sé por qué la llaman así y me refiero al nombre no al significado) y a la red interna.

Despúes del firewall tenemos la red interna esta se compone de:

  • R1 el router principal que une todas las demás redes
  • R2 router de la red pública
  • R3 router de la red de administrativos
  • R4 router de la red de desarrolladores

Segmentacion de IP’s

Ahora que ya tenemos el diseño de la red podemos establecer las direcciones que tendrán cada red. El rango privado para la red interna será de:

Segmento Red Puerta de enlace DHCP
172.16.20.0/24 pública 172.16.20.1 si
172.16.30.0/24 administrativos 172.16.30.1 si
172.16.40.0/24 desarrolladores 172.16.40.1 si
¿Por qué usamos una máscara /24 y una distancia de 10 entre cada red?

Por escalabilidad

  • La distancia de 10 es para agregar y/o segmentar más redes dentro de esa subred por ejemplo si quisiéramos agregar una red para administrativos con privilegios altos podríamos crear una red 172.16.31.0/28 así claramente identificamos que esa red pertenece a la red de administrativos(rango de 30-39)
  • La máscara 24 es solo por comodidad para este laboratorio evidentemente no habrá 254 máquinas en cada subred
Subneting

Una amplia explicación sobre direccionamiento y subneting se encuentra en el capítulo 3 del libro:

Routers y firewall

Hay que considerar que solo se usarán 2 ip’s entre routers por lo tanto:

Segmento Dispositivo IP Dispositivo IP DHCP
10.0.1.0/30 Pfsense 10.0.1.1 R1 10.0.1.2 no
10.0.2.0/30 R1 10.0.2.1 R2 10.0.2.2 no
10.0.3.0/30 R1 10.0.3.1 R3 10.0.3.2 no
10.0.4.0/30 R1 10.0.4.1 R4 10.0.4.2 no
10.10.10.0/29 pfsense(DMZ) 10.10.10.1 servidores(DMZ) 10.10.10.0/29 no

La zona DMZ solo tendrá un switch que estará conectado directamente al Pfsense no hay necesidad de usar un router por ahora además de que solo habrá direcciones para un máximo de 6 servidores(por la máscara /29).

Implementando NAT

¿Por qué usar el NAT?, ¿Es realmente necesario? sí vemos la Figura 2 en especial el R1, podemos usar este router para:

  • Controlar que red puede tener conectividad a internet
  • Servidor DHCP para todas las redes

Esto, sería conveniente, ya que así tendríamos un único punto para controlar la conectividad de las redes, ahora que tipo de NAT usar? cómo entre el pfsense y R1 solo hay 2 únicas ip el tipo de NAT a usar es sobrecarga (overloading en ingles o PAT) esto es un tipo de conexión uno a muchos ósea:

El gráfico significa que todas las redes internas solo podrán tener conectividad mediante la ip de R1(10.0.1.2) y pfsense solo reconocerá esa única ip.

más sobre NAT

Se puede encontrar una explicación más detallada y ejemplos en el capitulo 11 del libro que se recomendó antes:

Diagrama final

El diseño final con todo lo anterior es:

/pentesting/lab/lab0/images/diagram3.png
Figura 3: Diseño final

GNS3

Instalación/configuración de GNS3

En esta guía se asume que el lector ya tiene instalado y configurado GNS3 en su equipo. Una guía ultra detallada (mejor que cualquier contenido online) se encuentra en el libro:

Appliances en GNS3
Se usarán distintos Appliances a lo largo de estas guías es recomendable leer con cuidado la descripción de estos, ya que en la mayoría de los casos contienen destalles sobre su instalación/configuración u opciones especiales.
Instalación de Appliances en GNS3
La instalación de un Appliance es muy sencilla solamente debe descargarse el archivo .gns3a y hacer doble clic en el, inmediatamente se abrirá GNS3 mostrando los siguientes pasos.

Los dispositivos usados y que se pueden descargar desde la sección Appliances de la Marketplace de GNS3 son:

Imágenes CISCO
Es posible que ciertas Appliances no contengan la imagen de CISCO (archivo qcow o img) si es el caso se puede revisar este sitio externo.

ISP

Al igual que VirtualBox debe elegirse una interfaz para permitir la conectividad a internet, esta parte es similar a la sección “modo puente” pero en GNS3 todo dispositivo externo se representa por la nube la cual puede configurarse en la sección “edit>preferences>Cloud nodes” aquí:

  • clic en New
  • seleccionar “Run the cloud node on your local computer” luego next
  • en “name” poner WAN o ISP o el que se desee hacer clic en “finish”
  • seleccionamos la nube creada y luego clic en “edit”
  • en “Ethernet interfaces” seleccionar la tarjeta de red física por la cual obtendremos conectividad a internet y clic en “add”
  • Finalmente clic en “OK”,“Apply” y “OK”
Dispositivos externos
En la tercera parte de esta guía se usará un router Openwrt real como punto de acceso para la red pública y su conexión con GNS3 será mediante este método.

En la sección “End devices” ya podremos ver nuestra nube y solo queda arrastrarla al panel central de GNS3.

Configuración de Pfsense y DMZ

Pfsense debe instalarse antes de poder usarlo, aquí un video de la instalación de Pfsense en el canal REeset2099.

Y la configuración de la red DMZ y la red LAN:

Configuración de routers

R1

Arrastramos el router CISCO al panel de GNS3 y haciendo clic derecho y en “configure>slots” agregamos 4 interfaces Gigabyte como se ve en la siguiente imagen:

/pentesting/lab/lab0/images/R1Conf.png
Figura 4: Configuración R1

Tabla de direccionamiento para R1:

Dispositivo1 Interfaz Ip Dispositivo2 Interfaz Ip
R1 GigabitEthernet1/0 10.0.1.2 Pfsense em2 10.0.1.1
R1 GigabitEthernet2/0 10.0.2.1 R2 GigabitEthernet1/0 10.0.2.2
R1 GigabitEthernet3/0 10.0.3.1 R3 GigabitEthernet1/0 10.0.3.2
R1 GigabitEthernet4/0 10.0.4.1 R4 GigabitEthernet1/0 10.0.4.2

Tabla de servicios para R1:

Dispositivo Servicio Interfaz Segmento
R1 DHCP GigabitEthernet2/0 172.16.20.0/24
R1 DHCP GigabitEthernet3/0 172.16.30.0/24
R1 DHCP GigabitEthernet4/0 172.16.40.0/24
R1 NAT GigabitEthernet2/0 172.16.20.0/24
R1 NAT GigabitEthernet3/0 172.16.30.0/24
R1 NAT GigabitEthernet4/0 172.16.40.0/24

Direccionamiento de R1

Ahora que ya tenemos todo definido configuramos las interfaces en el router haciendo clic derecho y console los comandos son:

1
2
R1# enable
R1# configure t
Comandos CISCO

Una introducción al uso de comandos CISCO y sus modos se puede encontrar en el libro:

Los comandos siguientes se realizan para cada interfaz solo cambiando la ip e interfaz correspondiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
R1(config)#interface GigabitEthernet 1/0 
R1(config-if)#ip address 10.0.1.2 255.255.255.252 
R1(config-if)#no shutdown
R1(config-if)#exit 
R1(config)#interface GigabitEthernet 2/0
R1(config-if)#ip address 10.0.2.1 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface GigabitEthernet 3/0      
R1(config-if)#ip address 10.0.3.1 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface GigabitEthernet 4/0
R1(config-if)#ip address 10.0.4.1 255.255.255.252
R1(config-if)#no shutdown                        
R1(config-if)#exit
R1(config)#

El resultado final debería ser:

1
2
3
4
5
6
7
R1(config)#do show ip interface brief 
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down    
GigabitEthernet1/0         10.0.1.2        YES manual up                    up      
GigabitEthernet2/0         10.0.2.1        YES manual up                    up      
GigabitEthernet3/0         10.0.3.1        YES manual up                    up      
GigabitEthernet4/0         10.0.4.1        YES manual up                    up   

DHCP en R1

Siguiendo la tabla de segmentación primero separamos las puertas de enlace para cada red:

1
2
3
R1(config)#ip dhcp excluded-address 172.16.20.1
R1(config)#ip dhcp excluded-address 172.16.30.1
R1(config)#ip dhcp excluded-address 172.16.40.1

Después configuramos las pools para cada red:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
R1(config)#ip dhcp pool publicNet
R1(dhcp-config)#network 172.16.20.0 255.255.255.0 
R1(dhcp-config)#default-router 172.16.20.1
R1(dhcp-config)#dns-server 1.1.1.1
R1(dhcp-config)#exit
R1(config)#ip dhcp pool adminNet
R1(dhcp-config)#network 172.16.30.0 255.255.255.0
R1(dhcp-config)#default-router 172.16.30.1
R1(dhcp-config)#dns-server 1.1.1.1
R1(dhcp-config)#exit
R1(config)#ip dhcp pool devNet
R1(dhcp-config)#network 172.16.40.0 255.255.255.0
R1(dhcp-config)#default-router 172.16.40.1
R1(dhcp-config)#dns-server 1.1.1.1
R1(dhcp-config)#exit
R1(config)#

NAT en R1

Primero creamos un pool global y la ip que se usará:

1
R1(config)#ip nat pool globalNet 10.0.1.2 10.0.1.2 netmask 255.255.255.252

Después creamos una regla que permita solo las ip’s que están en la lista 1 acceder al pool globalNet:

1
R1(config)#ip nat inside source list 1 pool globalNet overload

Ahora agregamos las redes a la lista de acceso 1 (ACL):

1
2
3
R1(config)#access-list 1 permit 172.16.20.0 0.0.0.255
R1(config)#access-list 1 permit 172.16.30.0 0.0.0.255
R1(config)#access-list 1 permit 172.16.40.0 0.0.0.255

Para verificar las listas de acceso:

1
2
3
4
5
R1(config)#do show access-list
Standard IP access list 1
    10 permit 172.16.20.0, wildcard bits 0.0.0.255
    20 permit 172.16.30.0, wildcard bits 0.0.0.255
    30 permit 172.16.40.0, wildcard bits 0.0.0.255

Como vemos todas las redes lan están en la ACL 1, finalmente establecemos las interaces outside y inside:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
R1(config)#inter gigabitEthernet 1/0
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#inter gigabitEthernet 2/0
R1(config-if)#ip nat inside            
R1(config-if)#exit
R1(config)#inter gigabitEthernet 3/0
R1(config-if)#ip nat inside            
R1(config-if)#exit
R1(config)#inter gigabitEthernet 4/0
R1(config-if)#ip nat inside            
R1(config-if)#exit
R1(config)#
Guardar configuración

Toda la configuración anterior debe guardarse en memoria para prevenir perdidas al reinicio del dispositivo el comando es:

1
R1(config)#do write memory

Rutas en R1

Las rutas son las siguintes:

1
2
3
R1(config)#ip route 172.16.20.0 255.255.255.0 10.0.2.2
R1(config)#ip route 172.16.30.0 255.255.255.0 10.0.3.2
R1(config)#ip route 172.16.40.0 255.255.255.0 10.0.4.2

ruta por defecto o puerta de enlace para R1:

1
R1(config)#ip route 0.0.0.0 0.0.0.0 10.0.1.1

par ver las rutas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
R1(config)#do show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 10.0.1.1 to network 0.0.0.0

     172.16.0.0/24 is subnetted, 3 subnets
S       172.16.40.0 [1/0] via 10.0.4.2
S       172.16.30.0 [1/0] via 10.0.3.2
S       172.16.20.0 [1/0] via 10.0.2.2
     10.0.0.0/30 is subnetted, 4 subnets
C       10.0.2.0 is directly connected, GigabitEthernet2/0
C       10.0.3.0 is directly connected, GigabitEthernet3/0
C       10.0.1.0 is directly connected, GigabitEthernet1/0
C       10.0.4.0 is directly connected, GigabitEthernet4/0
S*   0.0.0.0/0 [1/0] via 10.0.1.1
R1(config)#

Hasta este punto si ya estamos conectados al Pfsense deberíamos tener conectividad desde R1 al exterior:

1
2
3
4
5
6
7
R1(config)#do ping 1.1.1.1  

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/64/84 ms
R1(config)#

La configuración más compleja ha terminado!!!

Routing en CISCO

Más información sobre ruteo en CISCO la encontramos en el capítulo 5 del libro:

Routers R2, R3 y R4

Similar a R1 a cada router se le debe agregar una interfaz en sus opciones de Configuración:

/pentesting/lab/lab0/images/R2Conf.png
Figura 5: Configuración R2

Tabla de direcciones para los routers R2, R3 y R4:

Dispositivo interfaz 1 ip interfaz 2 ip
R2 GigabitEthernet1/0 10.0.2.2 FastEthernet0/0 172.16.20.1
R3 GigabitEthernet1/0 10.0.3.2 FastEthernet0/0 172.16.30.1
R4 GigabitEthernet1/0 10.0.4.2 FastEthernet0/0 172.16.40.1

Solo se mostrará los comandos para R2, ya que los comandos para R3 y R4 son similares, solo se debe cambiar la correspondiente dirección ip:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
R2#enable
R2#configure t
R2(config)#interface GigabitEthernet 1/0
R2(config-if)#ip address 10.0.2.2 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface FastEthernet 0/0
R2(config-if)#ip address 172.16.20.1 255.255.255.0
R2(config-if)#ip helper-address 10.0.2.1
R2(config-if)#no shutdown R2(config-if)#exit

La linea de azul permite a esta interfaz obtener una ip por dhcp desde R1, ahora agregamos las rutas:

1
2
R2(config)#ip route 10.0.1.0 255.255.255.252 10.0.2.1
R2(config)#ip route 0.0.0.0 0.0.0.0 10.0.1.0

Si intentamos hacer ping a una ip externa no tendremos respuesta, ya que la ip del router 10.0.2.2 no está en la ACL del pool de la NAT:

1
2
3
4
5
6
R2(config)#do ping 1.1.1.1 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
....
Success rate is 0 percent (0/4)
R2(config)#

Hosts

Ahora que tenemos todo configurado debemos agregar el switch CISCO IOSVl2 a la red pública, este switch no necesita configuración alguna por ahora, conectamos una interfaz del switch a la interfaz FastEthernet0 del router R2 y dejamos las demás para los hosts.

En este punto debemos conectar una máquina para verificar la conectividad como se ve en este video:

Prueba de conectividad

Hasta aquí ya deberíamos poder alcazar la ip del router R1 10.0.1.2 desde R2:

1
2
3
4
5
6
R2(config)#do ping 10.0.1.2

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

Y desde R1 a la ip 172.16.20.1 (R2):

1
2
3
4
5
6
R1#ping 172.16.20.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.20.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/15/28 ms

Diagrama final en GNS3

Después de aplicar toda la configuración el diagrama final en GNS3 es:

/pentesting/lab/lab0/images/lab0Final.png
Figura 6: Diagrama final

Puntos débiles/fallas

Si bien el diagrama anterior es funcional los puntos débiles son:

En los siguientes posts cubriré esos puntos.