Skip to content

Mikrotik

Acercamiento

El dispositivo físico

En el aula contaremos con un Mikrotik hAP lite por alumna/o:

mt-hAP-lite

Diagrama

El mismo sigue el siguiente diagrama de bloques:

diagrama

Primer acceso

Para acceder por primera vez al mismo tendremos que utilizar la aplicación WinBox que podéis descargar aquí. login

La primera vez nos conectaremos por MAC.

Por defecto, el usuario es admin y el password está en blanco.

La interfaz de nuestro equipo caerá, por lo que tendremos que ponerla en modo estático con cualquier IP válida del rango privado.

El motivo de caer la interfaz es que el dispositivo no tiene ningún servidor DHCP.

Securizando

Comenzaremos creando un nuevo usuario y desactivando el admin. usuario nuevo

SSH

SSH (o Secure SHell) es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada. Además de la conexión a otros dispositivos, SSH permite copiar datos de forma segura (tanto archivos sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir contraseñas al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH y también puede redirigir el tráfico del (Sistema de Ventanas X) para poder ejecutar programas gráficos remotamente. El puerto TCP asignado es el 22.

SSH trabaja de forma similar a como se hace con telnet.

Fuente: Wikipedia

Versión 6.x

Dadas las limitaciones de la versión 6, relajaremos la seguridad permitiendo el acceso con password desde la terminal de winbox con el comando [usuario@MikroTik] > /ip ssh set always-allow-password-login=yes

Después, podermos entrar desde la terminal de powershell en Windows, o cualquier otra en GNU/Linux o Mac con ssh -oHostKeyAlgorithms=+ssh-rsa  usuario@192.168.88.1.

Si hemos podido acceder, podremos salir con el comando [usuario@MikroTik] > /quit

Versión 7.x

Para activarlo en el equipo deberemos: 1. Crear un par de llaves público-privadas RSA (ver vídeo) 2. Copiar llave pública al dispositivo File-Upload 3. Asociar a un usuario en menú UserList-SSH Keys 4. Acceso desde terminal ssh usuario@ip_del_mikrotik

Problemas típicos

A veces podemos encontrarnos con el siguiente mensaje:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:/I62FFxfkrDjW5DxENiNGgBhCNoyslHO+89tAmwUonI.
Please contact your system administrator.
Add correct host key in /home/usuario/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/usuario/.ssh/known_hosts:159
  remove with:
  ssh-keygen -f "/home/usuario/.ssh/known_hosts" -R "192.168.88.1"
Host key for 192.168.88.1 has changed and you have requested strict checking.
Host key verification failed.

El cliente SSH nos está informando que el fingerprint (huella dactilar) del equipo al que nos queremos conectar NO coincide con el que tenemos almacenado para dicha ip por lo podríamos estar ante un caso de ataque de man-in-the-middle.

Si hemos cambiado de equipo al que nos estamos conectando o lo hemos devuelto a valores de fábrica es normal que cambie el fingerprint por lo que simplemente borraremos el fingerprint almacenado previamente y podremos acceder.

Para borrarlo, sólo tenemos que seguir las indicaciones que nos ofrecen ssh-keygen -f "/home/usuario/.ssh/known_hosts" -R "192.168.88.1"

Exportación de configuración

Para exportar la configuración como backup o para evaluación de las actividades emplearemos el comando ssh -oHostKeyAlgorithms=+ssh-rsa  usuario@192.168.88.1 "/export hide-sensitive terse" > configuracion.rsc

Podemos obtener una versión más completa con ssh -oHostKeyAlgorithms=+ssh-rsa  usuario@192.168.88.1 "/export verbose terse" > configuracion.rsc

Como tarda y podemos ponernos nerviosos si no vemos el avance, podemos añadir el argumento -v para que el comando ssh nos indique el progreso, esto es ssh -v -o....

Nota: Recuerda que las contraseñas están en el archivo por lo que custodialo adecuadamente.

Desabilitando servicios

Ya que no usaremos los servicios telnet, ftp, api y api-ssl los desabilitaremos en el menú IP-servicios o con los comandos:

/ip service set telnet disabled=yes
/ip service set ftp disabled=yes
/ip service set api disabled=yes
/ip service set api-ssl disabled=yes

NTP

Cliente NTP

Pongamos en hora el equipo con System-NTP Client o los comandos:

/system ntp client set enabled=yes
/system ntp client servers add address=0.debian.pool.ntp.org
/system ntp client servers add address=1.debian.pool.ntp.org
/system ntp client servers add address=2.debian.pool.ntp.org
/system ntp client servers add address=3.debian.pool.ntp.org

Servidor NTP

Ofrece sincronización horaria a los clientes:

Direcciones

Estáticas

![[mkdocs/docs/rl/img/ip_estatica.png]]

DHCP Client

![[mkdocs/docs/rl/img/dhcp_cliente.png]]

DHCP Server

![[mkdocs/docs/rl/img/dhcp_server.png]]

Switch y bridges

![[mkdocs/docs/rl/img/bridge_crear.png]]

Los dispositivos Mikrotik suelen llevar un chip dedicado para la conmutación que se asocia al primer bridge del dispositivo.

Concretamente el MT-hAP-lite lleva el chip Atheros8227 con capacidad para 1024 host-table, 4096 vlan-table y 32 rule-table, así como port mirroring y por supuesto port switching.

Redes cableadas - Ethernet

Cliente PPPoE

El Protocolo Punto-a-Punto “over” Ethernet -PPPoE- es un protocolo de enlace (L2) que premite autenticar a usuarios/abonados y asignación dinámica de IP.

Es ampliamente utilizado por ISP (Provedores de Servicio de Internet).

Ejemplo de configuración:

![[mkdocs/docs/rl/img/pppoe_cliente_1.png]]

![[mkdocs/docs/rl/img/pppoe_cliente_4.png]]

![[mkdocs/docs/rl/img/pppoe_cliente_2.png]]

![[mkdocs/docs/rl/img/pppoe_cliente_3.png]]

O vía CLI:

/interface vlan add interface=ether1 name=INTERNET vlan-id=100
/interface pppoe-client add add-default-route=yes comment=Lowi disabled=no interface=INTERNET name=pppoe-lowi password=XXXX user=YYYY@lowi

El proveedor de internet Lowi proporciona la conexión encapsulada en la VLAN 100 por lo que tenemos que crear primero dicha interfaz y luego autenticarnos mediante el protocolo PPPoE usando la interfaz INTERNET creada para desencapsular la conexión.

Obtención de credenciales PPPoE

Tutorial de frikidelto.com

Servidor PPPoE

Servidor PPPoE

Redes inalámbricas - Wifi

Perfil de seguridad:

perfil de seguridad Interfaz Wifi:

interfaz wifi

Compartir internet

En GNU/Linux podemos compartir la conexión de la interfaz NAT de nuestra MV hacia la interfaz bridge, con lo que podríamos dar enrutamiento hacia internet al router MT y con ello probar nuestro access point -AP- que hemos generado con nuestra nueva conexión Wifi.

Para ello: 1. Habilitar el reenvío de IP (IP Forwarding): Ejecuta sudo sysctl -w net.ipv4.ip_forward=1 para permitir que el núcleo reenvíe tráfico entre interfaces. 2. Configurar Masquerade con Iptables: Sustituye eth0 por tu interfaz de internet (salida) y ejecuta: sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Wifi invitados

Portal cautivo

Leo Valero

Repetidor

Wifi mesh

RouteOS - Mesh

Servicios avanzados

Reenvío de puertos

Los puertos públicos los reenviamos a un host concreto de nuestra LAN:

# Servidor Nginx en puerto 80:
/ip firewall nat add action=dst-nat chain=dstnat comment=HTTP_FOR_NGINX dst-port=80 in-interface=pppoe-lowi protocol=tcp to-addresses=192.168.1.10 to-ports=80

# Servidor DNS con protocolo UDP:
/ip firewall nat add action=dst-nat chain=dstnat comment=UDP53 dst-port=53 in-interface=pppoe-lowi protocol=udp to-addresses=192.168.1.10 to-ports=53

NAT

Realizaremos una NAT de nuestra red privada a la ip pública.

/ip firewall nat
  add action=masquerade chain=srcnat out-interface=pppoe-lowi

Firewall

Podemos emplear el dispositivo como filtro de capas 2, 3 y 7:

# Incrementamos velocidad de proceso y reducimos carga de trabajo:
/ip firewall filter add action=accept chain=forward comment="Aceptamos las conexiones que ya se han verificado o solicitado (esblecido y relacionado)" connection-state=established,related


# Filtro capa 7 según expresión regular:
/ip firewall layer7-protocol add name=marca regexp="^.*marca.*\$"

# Aplicamos filtro anterior
/ip firewall filter add action=drop chain=forward comment="Filtra marca -> Ojo con DNS de firefox" disabled=yes layer7-protocol=marca src-address=192.168.1.0/24


# Filtro por protocolo
# Podemos añadir origen, destino, etc...
/ip add action=drop chain=input protocol=icmp
/ip add action=accept chain=input protocol=tcp src-port=80

El orden en el que aplicamos los filtros es MUY importante. Cuando un paquete encaja con un filtro, se ejecuta la acción y NO se comprueban mas filtros.

Por ejemplo, en los dispositivos MT-hAP-lite viene configurada una regla que acepta icmp, por lo que si añadimos otra que lo rechaza, sólo le hará caso si es anterior a la de aceptar.

Otros tips

Backups

Generar backup system backup save name=NombreDelBackup dont-encrypt=yesSaving system configuration

Alias de interfaz

A veces no queremos perder la conexión a internet por lo que podemos crear un alias a una interfaz y asignarle una IP que nos permita modificar la configuración sin desconectarnos de internet:

En GNU/Linux:

# Suponemos que la interfaz es eth0 (podría ser enp3s0 o cualquier otra)
DEV='eth0'
IP='192.168.88.10/24'
ALIAS_DEV='elAlias'

# Añadimos alias de interfaz
sudo ip link add $ALIAS_DEV link "$DEV" type macvlan mode bridge

# Asignamos IP a la nueva interfaz
sudo ip a add "$IP" dev $ALIAS_DEV

# La levantamos
sudo ip link set $ALIAS_DEV up

# Mostramos el resultado
ip a show $ALIAS_DEV

Fuentes: