Saltando bloqueos de los ISP: HAProxy y autossh

¡Este último mes podríamos decir que he estado muy entretenida! Hace ya casi dos años, un cliente vino a mi harto de que los proveedores de hosting le cerrasen el servidor, durante todo este tiempo de maravilla, hasta que hace un mes y medio Movistar y Vodafone bloquearon el dominio. Ahí es cuando el cliente me contactó de nuevo para realizar un análisis y un informe pericial. El motivo es que el cliente no está realizando ningún acto delictivo que lleve a los proveedores de hosting e ISP a bloquear el servicio, aún así, lo hacen, estamos delante de un caso de Internet Blackout, bloqueo interesado de un servicio en concreto para que los usuarios no puedan acceder a él. ¿Algo ha tenido que ver el recién finalizado y polémico Mundial de Fútbol en Qatar?.

En la fecha del bloqueo del dominio del cliente, mi propuesta al identificar que el bloqueo se estaba realizando a nivel de dominio (que no de DNS, ya que estos si resolvían), le propuse al cliente de registrar otro dominio. La solución funcionó durante 2 semanas más hasta que Movistar y Vodafone bloquearon la dirección IP, como tal, la solución de añadir mas dominios apuntando al servidor, ya no era útil. Por mas INRI, el bloqueo se extendió a más ISP, aislando casi por completo el servidor de Internet (y no sólo en España, otros países de Europa y LatinoAmérica se vieron afectados), pero no todos lo bloquearon!

A partir de aquí se empezó a …

Proxmox: iptables nat vmbr0 y vmbr11

En éste caso la configuración que tenemos del servidor tenemos como siempre en vmbr0 una IP de guifi.net (que trato como ip local) y debido a que el numero de IPs públicas que tengo es limitada, tengo otro bridge vmbr11 con una red interna para comunicar las aplicaciones que sirven HTTP, luego tengo un contenedor con nginx y acceso a las 3 redes, la de guifi, la pública y la interna de las aplicaciones.

Para que las máquinas que están en la red de guifi y la de las aplicaciones puedan acceder a internet tendremos que configurar el NAT, para ello haremos lo siguiente:

En /etc/network/interfaces

root@wezen1A:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
	address 10.90.234.166
	netmask 255.255.255.224
	gateway 10.90.234.161
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0
	post-up echo 1 /proc/sys/net/ipv4/ip_forward

iface eth1 inet manual

auto vmbr1
iface vmbr1 inet static
        address 192.168.10.1
        netmask 255.255.255.0
        bridge_ports eth1     
        bridge_stp off
        bridge_fd 0

auto vmbr138
iface vmbr138 inet manual
        bridge_ports eth0.138
        bridge_stp off
        bridge_fd 0

auto vmbr11
iface vmbr11 inet static
        address 192.168.100.1
        netmask 255.255.255.0
        bridge_ports eth0.11
        bridge_stp off
        bridge_fd 0

La vmbr1 la tengo destinada a ceph, para que las maquinas compartan el disco ahí, además con su switch a parte! :) la vmbr138 es la que uso para las IPs públicas, en ésta red no vamos a aplicar NAT porqué las máquinas que estén en ésta red tendrán como gateway la IP del router. En vmbr0 ponemos en post-up el …

Resetear switch dell powerconnect 5524 por consola

Hoy volvemos a usar de nuevo éste prehistórico sistema de comunicación por puerto serie, y ésta vez con un cable de ethernet a puerto serie y el conversor de serie a USB.

El motivo es el de resetear un par de switches dell powerconnect 5524.

Lo primero será conectar el cable ethernet en el puerto de management del switch, el cable serie con el adaptador y el adaptador al ordenador por USB.

A continuación lo que haremos será configurar gtkterm con ésta configuración

Una vez conectados, podremos interaccionar con el switch

Así que vamos a lo siguiente que es lo que me interesa hacer con éstos switch, el reset de fábrica para configurar la ip y reestablecer el password del usuario admin

Hacer reset de fábrica

console> enable
console# delete startup-config
console# reload
y
y

Al reiniciar nos pedirá la configuración de red y el nombre de usuario y contraseña que usaremos para acceder via web.

A continuación otros comandos interesantes
Cambiar el password del usuario

console> enable
console# config
console# username admin password ****
console> enable
console# host myhostname
console# snmp-server community public ro

Aplicar configuración

console> enable
console# config
console(config)# host switch24-2
switch24-2(config)# exit
switch24-2# copy run start
Overwrite file [startup-config] ?[Yes/press any key for no]....01-Oct-2006 17:41:30 %COPY-I-FILECPY: Files Copy - source URL running-config destination URL flash://startup-config
01-Oct-2006 17:41:34 %COPY-N-TRAP: The copy operation was completed successfully
Copy succeeded
switch24-2# copy run backup
01-Oct-2006 17:41:38 %COPY-I-FILECPY: Files Copy - source URL running-config destination URL flash://backup
.01-Oct-2006 17:41:40 %COPY-N-TRAP: The 

Arreglando el script de hacer backup con mikrotik

Actualizo éste script/post para que si por algún motivo no pueda conectar con el router mikrotik haga timeout y siga con el Backup.

root@xava-ftp:~/scripts# cat /root/scripts/backup_mikrotiks_SN.sh 
#!/bin/bash

############################################
# SCRIPT CREATED BY: Laura Mora i Aubert   #
# SCRIPT DATE: 2019-11-27                  #
# WEBSITE: https://blackhold.nusepas.com    #
# INFO: Script that allows remote backup   #
#       of Mikrotik Routers.               #
#       tested on 5.x & 6.x routers        #
# LICENSE: creative commons (by:sa)        #
############################################

############################################
#             INSTRUCTIONS                 #
############################################
#                                          #
# 1. Generate ssh-keys on your server      #
#      cd ~/.ssh                           #
#      sh-keygen -t dsa                    #
#                                          #
# 2. Rename pubkey                         #
#      cp .ssh/id_dsa.pub backupkey        #
#                                          #
# 3. Put the file on MKT Router            #
#      ftp x.x.x.x                         #
#      ftpbin                            #
#      ftpput backupkey                  #
#      ftpbye                            #
#                                          #
# 4. Import pubkey in MKT Router           #
#      telnet x.x.x.x                      #
#      [admin@mikrotik] /user ssh-keys\    #
#       import user=admin\                 #
#       public-key-file=backupkey          #
#                                          #
# 5. Access with ssh to the MKT Router     #
#                                          #
# 6. [SCRIPT] Change USER  and ID values   #
#                                          #
# 7. Run the script!                       #
#                                          #
############################################

############################################
#               OTHERS                     #
############################################
#                                          #
# If you have bruteforce login rules,      #
# add your backup server IP in the last    #
# rule: src-address=!SERVERIP              #
#                                          #
############################################ 

# Change username
USER=blackhold
BACKUP_DIR="/root/backups/capa8"


if [ ! -d "${BACKUP_DIR}" ]; then
	mkdir -p ${BACKUP_DIR}
fi

cd ${BACKUP_DIR}

# delete 

NetHogs: Monitorizar el tráfico de red que generan los procesos del sistema

Estaba un rato jugando con la red de casa y quería buscar alguna herramienta nueva para monitorear la red y me he encontrado con NetHogs, que sería como una especie de top pero para monitorear el tráfico que genera cada uno de los procesos que se están ejecutando en nuestro sistema.

Ya hace tiempo que dejé de usar top en pro a glances que te da mucha mas información y de forma mas organizada. Así que creo que voy a añadir NetHogs a mi navaja suiza.

# apt-get install nethogs

Aquí tenéis una captura de pantalla de la interfaz de las IPs pública y global.

Cosas que podemos hacer:

Pulsando m: cambiamos las unidades de medida a KB/s, KB, B y MB
Pulsando s: ordenamos por la cantidad de datos enviados
Pulsando r: ordenamos por la cantidad de datos recibidos
Pulsando q: salimos del programa

-t : salida en modo traza
-d : tiempo de refresco
-p : esnifar en modo promiscuo (no recomendado <- ésto pone la documentación…)

Y yastá, no tiene mucho mas, mirad el man por otras opciones recurrentes…

Primer contacto con routers CISCO

Hace ya mucho tiempo que digo que tengo que aprender a administrar routers cisco, pero siempre que me he encontrado alguno que tenía una versión muy antigua y no se podía actualizar a una versión mas actual :( Pero hace unos meses encontré un Cisco 870, otro día el cable de consola y el otro el alimentador! (no, no es fácil encontrar el router entero con todo en la basura!)

Así que lo primero será conectarnos al router por consola:
Enchufamos el cable azul en el puerto console del router y el puerto com con un adaptador a USB a nuestro PC. Luego nos conectamos con un programa de consola como podría ser gtkterm.

# gtkterm -p /dev/ttyUSB0 -w Xon -s 9600

Tunelizar subredes a través de ssh

Quien me conozca sabe que soy la reina de los túneles ssh. Esto va de maravilla cuando quieres saltar host a host, pero si tienes que acceder a muchas ips empieza a ser un rollo el tener que abrir varios túneles y/o irlos cerrando y abriendo.

Así que he pensado… ¿habrá la posibilidad de enrutar un rango de red a través de ssh? ¡pues si! y se llama sshutle

# pip install sshuttle

Ahora lo que quiero hacer es enrutar todo el tráfico de 10.69.0.0/16 por éste tunel ssh:

# sshuttle -r usuario@servidor 10.69.0.0/16 -vv

Et voilà! :D…

Configurar resolución Inversa IPv6 con bind

Algunos os habíais puesto en contacto a través del formulario de contacto de mi blog pero por algún motivo no recibía vuestros correos. Al mirar los logs me encontraba con esto:

2015-10-23 16:35:19 1ZpdR7-0002ax-Ar ** laralalalala@gmail.com R=dnslookup T=remote_smtp X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain 
View,O=Google Inc,CN=mx.google.com": SMTP error from remote mail server after end of data: host gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1a]: 550-5.7.1 [2a00:150
8:6001::666] Our system has detected that this message does\n550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and\n550-5.7.1 authentication. Please revi
ew\n550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more\n550 5.7.1 information. f2si4186183wiy.75 - gsmtp
2015-10-23 16:35:19 1ZpdR9-0002b2-7I <= <> R=1ZpdR7-0002ax-Ar U=Debian-exim P=local S=2822
2015-10-23 16:35:19 1ZpdR7-0002ax-Ar Completed
2015-10-23 16:35:19 1ZpdR9-0002b2-7I =www-data  R=local_user T=maildir_home
2015-10-23 16:35:19 1ZpdR9-0002b2-7I Completed

Éste error aparece desde hace unos 15 días y es que google, donde se me mandan los correos, dice que no le gustaba la IPv6 de mi servidor de correo. La forma que acepta los correos google es mediante una dkim firmada o un PTR definido, así que lo que he ido a hacer ha sido definir el PTR para mi dirección IPv6.…

Proteger un router Mikrotik expuesto a internet

Cuidadín con la regla que apliqué el otro día, que lo hace demasiado bien y no deja pasar absolutamente ninguna petición de DNS :P

Aquí os dejo 3 protecciones interesantes.

Protección del login ssh

/ip firewall filter
add action=drop chain=input comment="BLOQUEJA DURANT 24 hores qui fa 5 intents seguits de login SSH!" dst-port=22 protocol=tcp src-address-list=black_list_ssh
add action=add-src-to-address-list address-list=black_list_ssh address-list-timeout=1d chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=
    ssh_stage4
add action=add-src-to-address-list address-list=ssh_stage4 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=
    ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=
    ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=
    ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp

Protege los intentos de login al 8291 (winbox)

/ip firewall filter
add action=drop chain=input comment="BLOQUEJA DURANT 24 hores qui fa 5 intents seguits de login winbox!" dst-port=8291 protocol=tcp src-address-list=
    black_list_winbox
add action=add-src-to-address-list address-list=black_list_winbox address-list-timeout=1d chain=input connection-state=new dst-port=8291 protocol=tcp 
    src-address-list=winbox_stage4
add action=add-src-to-address-list address-list=winbox_stage4 address-list-timeout=3m chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=
    winbox_stage3
add action=add-src-to-address-list address-list=winbox_stage3 address-list-timeout=3m chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=
    winbox_stage2
add action=add-src-to-address-list address-list=winbox_stage2 address-list-timeout=3m chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=
    winbox_stage1
add action=add-src-to-address-list address-list=winbox_stage1 address-list-timeout=3m chain=input connection-state=new dst-port=8291 protocol=tcp

Proteger de ataques de DoS (denegación de servicio)

add action=jump chain=forward connection-state=new jump-target=detect-ddos
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s
add action=return chain=detect-ddos src-address=192.168.0.0/16
add action=add-dst-to-address-list address-list=ddosed address-list-timeout=10m chain=detect-ddos
add action=add-src-to-address-list address-list=ddoser address-list-timeout=10m chain=detect-ddos
add action=drop chain=forward connection-state=new dst-address-list=ddosed src-address-list=ddoser

Mitigar ataque de DNS con mikrotik

/ip firewall filter
add action=drop chain=forward comment="drop from all in dns-flood address list" dst-port=53 protocol=udp src-address-list=dns-flood
add chain=forward comment="add src IP to dns-flood address list" dst-limit=1,10,src-address/20s dst-port=53 protocol=udp           
add action=add-src-to-address-list address-list=dns-flood address-list-timeout=23h59m59s chain=forward dst-port=53 protocol=udp