sábado, mayo 08, 2021

Activar Telnet y SSH en equipos Cisco

 Lo primero es crear un usuario dentro del equipo:

 username nombre_usuario privilege 15 secret clave_usuario.

 Ya realizado esto activaremos los servicios

 

Telnet

line vty 0 15
  transport input telnet
  login local

 

SSH

Para activar SSH es requisito tener nombre de host, nombre de dominio y generar una clave rsa para la encriptacion de la conexion

 
hostname nombre_equipo
ip domain-name dominio.algo
crypto key generate rsa
ip ssh version 2
line vty 0 15
  transport input ssh
  login local

miércoles, marzo 31, 2021

Bloqueo con GeoIP en Ubuntu 20.04

Para algunos servicios que solo es necesario que estén disponibles, merece la pena utilizar el bloqueo geográfico a nivel IP, permitiendo aumentar el nivel seguridad sin afectar a los usuarios de este.

Para esto utilizaremos la base de datos de GeoIP de db-ip en conjunto con el paquete xtables-addons

 Instalación de requisitos

sudo apt-get update; sudo apt-get -y upgrade
sudo apt-get install curl unzip perl 
sudo apt-get install xtables-addons-common
sudo apt-get install libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl

Script de actualización

Debemos crear un script que periódicamente este descargando la actualización de la bases de datos de GeoIP para esto realizamos primero crear una carpeta:

sudo mkdir /usr/share/xt_geoip

 Después creamos el script la siguiente ubicación /usr/local/bin/geo-update.sh

#!/bin/bash

MON=$(date +"%m")
YR=$(date +"%Y")

wget https://download.db-ip.com/free/dbip-country-lite-${YR}-${MON}.csv.gz -O /usr/share/xt_geoip/dbip-country-lite.csv.gz
gunzip /usr/share/xt_geoip/dbip-country-lite.csv.gz
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/ -S /usr/share/xt_geoip/
rm /usr/share/xt_geoip/dbip-country-lite.csv

Al ejecutar este script se poblara la base de datos de GeoIP para su uso. Recuerde crear una tarea en cron para actualizar la base de manera pediodica.

Creacion de reglas

Antes de crear la regla debemos cargar  el modulo para que opere. Ejecutamos el siguiente comando:

modprobe xt_geoip
lsmod | grep ^xt_geoip


Si todo va esta bien, podemos aplicar la siguiente regla:

iptables -A INPUT -m geoip -p tcp --dport 22 --src-cc RU,CN -j DROP

Esto bloqueara el acceso SSH desde Rusia y China.

Si quieres permiter el acceso desde un pais en ese caso la regla seria la siguiente:

iptables -A INPUT -m geoip -p tcp --dport 22 --src-cc CL -j ACCEPT

 Aqui permitimos el acceso SSH solo desde Chile

Aplicando de manera permanente

Estas reglas que recien aplicamos se borrar si reiniciamos la maquina. Para que las reglas sean permanentes, te recomiendo usar el servicio ufw. Para esto edita el archivo  /etc/ufw/before.rules y agregan reglas antes del COMMIT, como esta:

-A ufw-before-input -m geoip -p tcp --dport --dport 22 --src-cc CL -j ACCEPT

Esta regla permite el acceso SSH desde Chile, recuerda que ufw por defecto deniega todo el trafico

Publicación en ingles




sábado, febrero 06, 2021

TIP: Guia rapida de comandos de Docker

Como descargar una imagen de docker:

docker pull nombre_de_la_imagen

comandos que visualizas los contenedores


Todos los contenedores que corren:
docker ps

Todos los contenedores que tengas:
docker ps -a

Todos los contenedores que tengas pero solo los id:
docker ps -aq

borrar un contenedores:
docker rm id_del_contenedor

borrar todos los contenedores:
docker rm $(docker ps -aq)


Ejecutar un docker para crear una instancia:
docker run nombre_de_imagen

darle un nombre a la instancia al ejecutarse:

docker run --name nombre_que_le_voy_a_poner nombre_de_imagen

Ejecutar un contenedor exponiendo un puerto, -p para la definición de puertos y -d es para liberar la consola y que corran en segundo plano:
docker run -p puerto_de_la_maquina:puerto_del_contenedor -d nombre_de_imagen

parar un contenedor:
docker stop id_contenedor

parar todos los contenedores:
docker stop $(docker ps -aq)


ejemplo como bajar, ejecutar y exponer el puerto del servidor web Apache en un solo comando:
docker run -p 80:80 -d httpd

ya puedes visitar desde el navegador a la dirección localhost:80 y veras la pagina de bienvenida de Apache

Ahora ejecutaremos un contenedor de mysql, este necesita ademas una variable de entorno para ejecutar, en este caso la clave de root de la base de datos (revisa documentación de esta imagen en dockerhub):

docker run -d -p 3307-3306 --name servidormysql -e MYSQL_ROOT_PASSWORD=clave_de_mysql mysql

Comandos para imágenes


listar imágenes actuales:
docker images

borrar imagen:
docker rmi nombre_imagen (por su ID)

eliminar todas las imágenes, pero estas no deben ser utilizada por algún contenedor
docker rmi $(docker images -aq)


Copiar archivos desde el pc al contenedor, este ejemplo lo vamos hacer con la maquina virtual nginx. Vamos a copiar la unas paginas html desde la PC a la ubicación de la carpeta html de nginx:
docker run -d -p 80:80 -v $(pwd):/usr/share/nginx/html nginx


ingresar a la consola del contenedor:
docker exec -it nombre_de_contenedor bash

viernes, febrero 05, 2021

Librería CDPDiscovery

 Cree está librería para obtener la información de vecinos de equipos Cisco ( IOS y sb300) que tienen vía CDP y guardarla en una tabla. La librería cuenta con 3 funciones:

 cisco_ios: función para obtener la información de un equipo Cisco IOS.

cisco_sg300:  función para obtener la información de un equipo Cisco sg300.

bulk: función que recibe un listado en csv con ip del equipo, comunidad SNMP y tipo de equipo (cisco_ios y cisco_sg300) 

Instalación

Debemos descargar la librería desde github:

git clone https://github.com/cabildocl/cdpdiscovery 

cd  cdpdiscovery

Ejecutar Python y cargar la librería:

from cdpdiscovery import *

 Ya podemos utilizar la librería de 2 formas, la primera  utilizando directamente las funcione cisco_ios y cisco_sg300 como mostramos a continuación:

python3

from cdpdiscovery import *

## sobre un equipos cisco IOS , IP 192.168.1.10 y comunidad SNMP publica

cisco_ios("192.168.1.10","publica")

salida

local local_if       remote             remote_if       remote_ip                                remote_model
0  SW-CORE   gi1/21  SW-ACCESS  GigabitEthernet0/0/1  192.168.1.100                              
cisco WS-C3850-48XS
1  SW-CORE   gi1/21  MPBB-WLC-01  GigabitEthernet0/0/2  192.168.1.11                               AIR-CT2504-K9

También podemos utilizar la función bulk que recibe un archivo csv, con al lista de equipos, su IP, clave SNMP y tipo. Un  ejemplo viene incluido en el archivo device.csv.example.






lunes, enero 11, 2021

Zabbix: Notificaciones via Telegram

Zabbix tiene una integración incluida con Telegram. Para activarla debemos primero  obtener el token de Telegram para interactuar con la API. Para esto puedes seguir este tutorial link.

Ya obtenido el token debemos crear un grupo en Telegram y también obtener su ID. Esto lo puedes obtener, ingresando al grupo y como muestra la imagen siguiente.


Ya teniendo ambos datos, Token y ID de grupo, vamos a Zabbix a configurar.

Primero debemos activar el tipo de medio. Para esto ingresamos a Administration → Media Types. Buscamos Telegram y hacemos clic.

En este lugar agregamos el Token y guardamos (Update)


Ya tenemos configurado Zabbix de forma global. Ahora debemos configurar las notificaciones a un usuario. Para esto vamos a Users Settings → Media y hacemos clic en agregar.


Aquí seleccionamos el Type: Telegram y Send to: -ID de grupo. Ademas podemos definir el nivel de severidad de las alarmas que nos llegaran. Recomiendo activar solo las de mayor gravedad.






Zabbix: Configurar un host con SNMP

 Ya tenemos instalado Zabbix y ahora debemos configurar un host para poder monitorear. En este ejemplo utilizaremos un equipo de red con las siguientes configuraciones:

Nombre: switch1

IP: 192.168.1.10

Comunidad SNMP: privada

Para agregarlo en Zabbix debemos ir a Configuration → Hosts

Aquí debemos ir a "Create host"

Aquí debemos configurar los parámetros ya teníamos del equipo de red:

  1. Host Name: switch1
  2. Groups: agregar aun grupo, esto es obligatorio. Si no tenemos un grupo, escribinos un nombre en este lugar y ponemos agregar.
  3.  Remover la interface existente que es de tipo Agent
  4.  Agregar (Add) una interface de tipo SNMP
  5. Ip address: 192.168.10.1
  6.  SNMP community: privada


 Después vamos a la opción "Templates" ubicada en la parte superior derecha y agregamos la plantilla de monitoreo. para este ejemplo usaremos "Template Net Network Generic Device SNMP", la cual monitorea las interfaces de red de los equipos y disponibilidad de este. Si solo quieres detectar si el equipo esta disponible (ping) utiliza la plantilla "Template Module ICMP Ping". Ya hecho esto hacemos clic en Add y listo.

 

Ahora puedes ir Monitoring → Hosts y veras en nuevo equipo agregado. Debemos esperar unos 10 minutos para que aparezca todas las interfaces de red.



domingo, enero 10, 2021

Instalacion de Zabbix en Ubuntu Server 20.04

 Zabbix es una herramienta de monitoreo muy potente y totalmente libre, que te permitirá tener visualización del comportamiento de tu red y servicios, a través de agentes instalados en los equipos o  protocolos como SNMP y WMI.

La arquitectura de Zabbix esta compuesta por los siguientes componentes:

Zabbix Server: pieza principal de Zabbix, sus tareas principales son:

  • Recolectar y analizar los datos.
  • gestionar la base de datos.
  • generar las alarmas.

Servidor de base de datos:  Guarda toda la información de Zabbix, ya se configuraciones como datos históricos de los equipos

Zabbix Frontend: Es toda la interface web de Zabbix, que permite la visualización de la información y la configuración de Zabbix.

Agente: Zabbix incluye una pieza de software que se instala en los equipos a monitorear. El cual extrae los parámetros y los enviá a Zabbix. Normalmente el agente se instala en servidores Windows o Linux.



Dashboard de Zabbix

Instalación de Zabbix

Vamos a instalar a través de paquetes .deb Zabbix 5.0 (es la versión LTS actual con suporte hasta 2025), esto incluirá Zabbix Server, Zabbix frontend y el agente.

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb 
sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb 
sudo apt update 
sudo apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

Mas información sobre el ciclo de vida de Zabbix la pueden encontrar aquí

 

Instalación de bases de datos 

Debemos instalar la base de datos. Importante, debemos crear tus propias claves para MariaDB y no utilizar las que aquí usamos ya que son solo de ejemplo.

sudo apt -y install mariadb-common mariadb-server-10.3 mariadb-client-10.3

Ya instalado el servidor de base datos debemos configurar que inicie al arranque del servidor:

sudo systemctl start mariadb 
sudo systemctl enable mariadb

Configuraciones de clave para bases de datos

Eejecutamos el proceso de cambio de clave para MariaDB.

sudo mysql_secure_installation

Enter current password for root (enter for none): Press the Enter 
Set root password? [Y/n]: Y 
New password: <Ingrese clave de root para base de datos> 
Re-enter new password: <Ingrese clave de root para base de datos> 
Remove anonymous users? [Y/n]: Y 
Disallow root login remotely? [Y/n]: Y 
Remove test database and access to it? [Y/n]:  Y 
Reload privilege tables now? [Y/n]:  Y


Creacion de base  de datos e importacion de esquema

sudo mysql -uroot -p'claverootDB' -e "create database zabbix character set utf8 collate utf8_bin;" 

sudo mysql -uroot -p'claverootDB' -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'claveZabbixDB';"

importamos el esquema

sudo mysql -uroot -p'claverootDB' zabbix -e "set global innodb_strict_mode='OFF';"
sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'claveZabbixDB' zabbix 
sudo mysql -uroot -p'claverootDB' zabbix -e "set global innodb_strict_mode='ON';"

Configuramos clave de base de datos en Zabbix

Debemos editar el archivo zabbix_server.conf, el cual es el archivo principal de Zabbix. Este se ubica en /etc/zabbix/zabbix_server.conf y agregar la clave de usuario zabbix de la base de datos:

DBPassword=claveZabbixDB

y guardamos.

Ahora debemos reiniciar los servicios de Zabbix y configurar para que puedan iniciar junto con el servidor:

sudo systemctl restart zabbix-server zabbix-agent 
sudo systemctl enable zabbix-server zabbix-agent

Configuración de Apache

Debemos editar el archivo /etc/zabbix/apache.conf y descomentar 2 lineas que comienzan con:


# php_value date.timezone Europe/Riga

 y dejarlas asi, dependiendo de tu zona horaria:

php_value date.timezone America/Santiago
 

y reiniciamos  Apache y ademas lo agregamos al arranque:

sudo systemctl restart apache2
sudo systemctl enable apache2


Final: configuración de Zabbix Frontend

Ahora debemos ingresar a la ver de Zabbix, a través de la URL http://ip_del_servidor/zabbix. El unico dato que necesitamos ingresar es la clave de la base de datos.





Ya hemos realizado la instalacion ahora debes ingresar a Zabbix con las credenciales por defecto Admin/zabbix