Mostrando entradas con la etiqueta monitoreo. Mostrar todas las entradas
Mostrando entradas con la etiqueta monitoreo. Mostrar todas las entradas

miércoles, 23 de mayo de 2018

Script in Python3 que chequea fecha de vencimiento de certificados SSL y envia correos

Intro:
  Abajo les dejo un script realizado en Python3 que chequea fecha de vencimiento de certificados SSL (https) y realiza el envio de correos.

Importante:
  Que corra en OS modernos (Ubuntu 16.04 o mayor por ejemplo).., la razón es el soporte de librerías actualizadas SSL

El Script:
$ more check_ssl_certificates.py 




#!/usr/bin/python3

#El objetivo de este script es revisar los hostnames en la lista hostnames

#revisar cuantos dias faltan para que expire el certificado SSL

#y se expira pronto (definido por la variable umbral) enviar un correo

#con dicha notificacion




import OpenSSL

import ssl, socket

import argparse

from OpenSSL import SSL

from datetime import datetime




# Please add every FQDN you wish to be checked

hostnames = ["www.sitio1.com","www.sitio2.com","www.sitio3.com"]

umbral = 10 #threshold - number of days left in order to send the notification

notify_to= "you@yourserver.com, youyou@yourserver.com" #list of email addresses to send email separated by ,




def cert_expiration_date(hostname):

# get SSL Cert info

try:

cert = ssl.get_server_certificate((hostname, 443))

x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)

x509info = x509.get_notAfter()




exp_day = x509info[6:8].decode('utf-8')

exp_month = x509info[4:6].decode('utf-8')

exp_year = x509info[:4].decode('utf-8')




exp_date = str(exp_day) + ' ' + str(exp_month) + ' ' + str(exp_year)

expire_date = datetime.strptime(exp_date, "%d %m %Y")







except Exception:

MSG='el host ' + str(hostname) + ' no pudo ser chequeado '

sendnotification(hostname, 0, MSG)

return #will enter here if could not connect to the website port 443




#print('SSL Certificate for hostname', hostname, 'will be expired on (DD-MM-YYYY)', exp_date)

#print('SSL Certificate for hostname', hostname, 'will be expired on (DD-MM-YYYY)', expire_date)



expire_in = expire_date - datetime.now()

expire_in = str(expire_in).split(' ')[0]




if int(expire_in) < umbral :

MSG='el cert ssl de ' + str(hostname) + ' expira en ' + str(expire_in) + ' dias'

sendnotification(hostname, str(expire_in), MSG)




#print ('Expira en: ', expire_in)




def sendnotification(hostname, expire_in, MSG):

from smtplib import SMTP_SSL as SMTP

import logging

import logging.handlers

import sys

from email.mime.text import MIMEText




#MSG = 'el cert ssl de ' + str(hostname) + ' expira en ' + str(expire_in) + ' dias'

#text = MSG

msg = MIMEText(MSG, 'plain')

msg['Subject'] = MSG

me = 'your@email.com'




recipients = notify_to

msg['To'] = notify_to

try:

conn = SMTP('yourmailserver.com')

conn.set_debuglevel(True)

conn.login('authusr', 'yourpassword')

try:

conn.sendmail(me,recipients.split(',') , msg.as_string())

finally:

conn.close()

except Exception as exc:

logger.error("ERROR!!!")

logger.critical(exc)

sys.exit("Mail failed: {}".format(exc))






if __name__ == "__main__":

for hostname in hostnames:

cert_expiration_date(hostname)


martes, 22 de agosto de 2017

Prueba de ping MUY sencilla con IPv6. Comparativa IPv4 - IPv6 haciendo ping a la loopback

Hola,
  Recientemente estuve haciendo unas pruebas de ping a las direcciones de loopback de Windows, Linux y MAC.
  Si haces ping6 a tu loopback (digamos 1000 paquetes) con Windows o Linux, IPv6 es más rápido.
  Ahora intenta lo mismo en MAC (El Capitan).., IPv6 es 20-25% más lento.
  Hice lo mismo en varios dispositivos y le pedí a varios amigos que hicieran la misma prueba. Todos obtuvieron el mismo resultado


MAC:
--- 127.0.0.1 ping statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.037/0.098/1.062/0.112 ms
--- ::1 ping6 statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.058/0.120/0.194/0.027 ms



Linux:
--- 127.0.0.1 ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 98999ms
rtt min/avg/max/mdev = 0.015/0.021/0.049/0.007 ms

--- ::1 ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99013ms
rtt min/avg/max/mdev = 0.019/0.031/0.040/0.004 ms


Windows 10:

Ping statistics for ::1:
    Packets: Sent = 100, Received = 100, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms


Ping statistics for 127.0.0.1:
    Packets: Sent = 100, Received = 100, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 4ms, Average = 0ms


Esto es todo,

miércoles, 23 de septiembre de 2015

Monitoreando IPv4 e IPv6 con sFlow

Introducción
 
Este primer artículo tiene como objetivo presentar de manera práctica cómo monitorear tráfico de una interfaz de red con doble pila configurada (Dual-Stack), IPv6 e IPv4, a través de la tecnología sFlow.
 
sFlow es una tecnología de muestreo de paquetes que se puede implementar en una amplia gama de dispositivos desde equipos de capa 2 hasta equipos de alto desempeño como enrutadores de core. Debido a la incorporación de redes de alta velocidad, el muestreo de paquetes ha sido ampliamente reconocido como la solución más escalable, precisa y completa para el monitoreo de redes.
 
Si bien la metodología de muestreo de paquetes está incrustada dentro del elemento de red (por ejemplo, el enrutador o switch), el análisis de tráfico se realiza realmente en un equipo diferente, normalmente un servidor. Esto permite mayor escalabilidad y capacidad de respuesta en tiempo real sin afectar el desempeño de los enrutadores, especialmente a altas velocidades de tráfico.
 
Los diferentes componentes del sistema sFlow: son el generador sFlow, el agente sFlow, y el colector sFlow:
 
  • El generador de sFlow es el elemento de red que genera muestras de tráfico. La toma de muestras de paquetes se realiza típicamente en hardware para proporcionar un rendimiento a velocidad de cable (wire-speed).
  • El agente sFlow es un proceso de software que se ejecuta como parte del software de gestión de red dentro del elemento de red.  Los agentes sFlow en enrutadores y switches en toda la red envían continuamente un flujos de datagramas sFlow a un colector sFlow centralizado. Los contadores de interfaz y las muestras de flujo se combinan en datagramas sFlow, que requieren muy poco procesamiento. Los datos se empaqueta en datagramas sFlow, que se envían de inmediato en la red. Esto reduce al mínimo la carga en la memoria y procesador de los agentes sFlow .
  • El software colector de sFlow analiza los datagramas recibidos de cada agente sFlow y los presenta en tiempo real, permitiendo la vista de los flujos de tráfico de toda la red. Varias soluciones de colectores y software analizador de sFlow están disponibles comercialmente, así como en software libre.
 
La definición de flujos de tráfico a través de esta tecnología se puede realizar de numerosas maneras. Tradicional implica una clave en que el flujo se define como una secuencia unidireccional de tramas que comparten los siguientes valores:
 
  • Dirección MAC de origen
  • Dirección MAC de destino.
  • Tipo de Ethernet.
  • VLAN y prioridad.
  • Dirección IPv6 ó IPv4 de origen.
  • Dirección IPv6 ó IPv4 de destino.
  • Puerto UDP o TCP de origen.
  • Puerto UDP o TCP de destino.
  • Protocolo IP (IPv4), Next header (IPv6).
  • Interfaz (SNMP inputifindex, outputifindex).
  • Tipo de servicio IP.
  • Tipo de queries DNS.
  • Entre otras.
 
Cuáles son los beneficios
 
El establecimiento de sFlow nos permite contar con una visibilidad completa y en tiempo real de toda la infraestructura de red, coadyuvando entre muchas cosas:
 
  • Monitoreo de la red, servidores, servicios, ataques e intrusiones desde una sola consola.
  • Identificar fácilmente las redes, computadoras, servidores y puntos de almacenamiento.
  • Supervisar el rendimiento de la telefonía IP, videoconferencias, almacenamiento, cómputo , entre otros dispositivos de red.
  • Identificar la congestión y garantizar la calidad del servicio.
  • Identificar los recursos sobre utilizados y mejorar su eficiencia.
  • Analizar la distribución de contenidos por Multicast.
  • Analizar e implementar ingeniería de tráfico en redes MPLS.
  • Monitoreo de VLAN, QinQ, redes Metroethernet, etcétera.
  • Detectar asimetrías en el enrutamiento.
  • Analizar la conveniencia al momento de interconectar nuevos peers.
  • Asegurar cuotas de tráfico discriminado a través de la capa de aplicación.
  • Inspeccionar y dar seguimiento de usuarios.
 
Qué necesitamos
 
Como objeto de esta demostración se requerirá de los siguientes recursos:
 
  1. Equipo enrutador o switch con soporte de sFlow.
  2. Servidor Linux de la plataforma de su preferencia.
  3. La instalación de un colector de sFlow dentro del servidor Linux, en particular el colector llamado sFlow-RT, consulte:http://www.inmon.com/products/sFlow-RT.php
  4. Un equipo de cómputo con navegador web.
 
 
Para obtener una lista de colectores disponibles, consulte:
http://www.sflow.org/products/collectors.php
 
El estándar, de la industria, sFlow se encuentra actualmente en la versión 5. Para obtener más información, consulte:
http://www.sflow.org
 
 
Cuáles son los pasos que tenemos que seguir
 
  1. Como primer paso realizaremos la configuración del enrutador, para ello utilizaremos como ejemplo un enrutador MLXe-4 de la marca Brocade con la versión de sistema operativo  5.5.0T165.
     a. Desde línea de comando (CLI) ejecutaremos las siguientes instrucciones, en modo de configuración global :
       i. Habilitar sFlow en el equipo:
 
         R1(config)# sflow enable
       ii. Configurar la dirección IPv6 ó IPv4 del servidor que tendrá el rol de colector sFlow y a donde se enviará los      datagramas de sFlow:
R1(config)# sflow destination 192.168.105.33
ó
R1(config)# sflow destination ipv6 FE80::AA8E:F8FF:FE73:B700
iii. Es importante configurar los intervalos o frecuencia en la que se enviarán los datagramas de sFlow (definida en segundos):
R1(config)# sflow polling-interval 10
iv. Otro parámetro importante de la configuración es el denominador de muestreo, que es de 1/N, es decir, por cada N número de tramas que pasan por una interfaz se tomará una sola, esta muestra será registrada y enviada al colector de sFlow. Este valor dependerá de la velocidad del puerto al que será configurado (para más información consultar las recomendaciones del fabricante):
R1(config)# sflow sample 512
 
b. Desde CLI ejecutaremos el siguiente comando, en modo de configuración dentro de la interfaz de red que nos interesa monitorear:
R1(config-if-e10000-4/4)# sflow forwarding
 
La configuración final quedará de la siguiente manera:
 
sflow enable
sflow destination 192.168.105.33
sflow polling-interval 10
sflow sample 512
!
interface ethernet 4/4
port-name ISP1
enable
sflow forwarding
!
 
2. Una vez realizado el paso 1, el enrutador comenzará enviar los datagramas de sFlow al colector de flujos. El siguiente paso es configurar el software sFlow-RT para que pueda analizar el tráfico, por lo que será necesario entrar al siguiente URI (servidor en que instalamos el colector):
 
http://192.168.105.33:8008/flow/html


    1. Para comenzar a obtener los valores de download y upload que pasan por nuestra interfaz troncal recién habilitada con sFlow, configuraremos los siguientes parámetros dentro de la interfaz web del colector de flujos, particularmente dentro del apartado Flows, llenando el siguiente formulario web:
      i. Name: IPv6stack
      ii. Keys: stack
      iii. Value: bytes
      iv. Filter: stack=eth.ip6.tcp|stack=eth.ip6.udp|stack=eth.ip6.icmp6
    2.  
      Presionamos el botón Submit.
       
    3. De la misma manera agregaremos otro registro en el formulario para el stack IPv4:
      i. Name: IPv4stack
      ii. Keys: stack
      iii. Value: bytes
      iv. Filter: stack=eth.ip.tcp|stack=eth.ip.udp|stack=eth.ip.icmp
    4.  
      y finalmente presionamos el botón Submit.
       
      Nota:
      El parámetro value puede ser configurado con cualquier de los siguientes atributos: frames (frames per second), bytes (Bytes per second), requests, duration.
       
      El resultado final quedará de la siguiente manera:



    1. Una vez configurado los flujos, podemos dar un click al registro IPv6stack o IPv4stack y comenzaremos observar en tiempo real los Bytes por segundo que están pasando por la interfaz de acuerdo al stack seleccionado, mostrando los siguientes resultados:
 
Para poder observar gráficas en tiempo real a través del sFlow-RT, en nuestro navegador deberemos colocar los siguientes URI:
 

http://192.168.105.33:8008/metric/ALL/sum:IPv6stack/html
 



http://192.168.105.33:8008/metric/ALL/sum:IPv4stack/html


Con esto concluimos la configuración básica de sFlow, ahora podemos identificar cuántos Bytes por segundo están pasando por la interfaz de red, de la misma manera podemos configurar más flujos con diferentes value por ejemplo frames, para obtener las tramas por segundo que pasan por la misma. Por último, si nos interesa conocer los top senders de las direcciones IPv6 ó IPv4, podemos configurar más flujos en el colector, por ejemplo:
 
Name: IPv6topsender
Keys: ip6source,ip6destination,ip6nexthdr
Value: bytes
 
finalmente presionamos el botón Submit. Con el cual obtendremos la lista de las direcciones que más descargan o suben información en IPv6 ó IPv4, en este caso por ejemplo el protocolo IPv6:




En posteriores artículos se compartirá cómo:
Generar históricos de la información, así como gráficas personalizadas a través de CACTI, InfluxDB o programación con Python y RRDTools; en base a valores obtenidos por las open northbound APIs del colector sFlow-RT.  
Desarrollar aplicaciones SDN con Python, sFlow-RT y OpenFlow 1.3, para detener, redireccionar o dar calidad de servicio al tráfico que pasa por switches y/o enrutadores mediante una controladora SDN, a partir de eventos detectados por un colector de sFlow.
 

Autor: Jaime Olmos
Revisado: Alejandro Acosta, Azael Fernández y José Luis Gaspoz.

Una mejora práctica en el Transporte DNS sobre UDP en IPv6

Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...