Blog en espanol destinado a diferentes temas tecnicos principalmente en IT y Networking. Se desea cubrir Linux, DNS, DNSSEC, RPKI, BGP, Cisco, Programacion (Bash, Python, etc), Protocolos de Enrutamiento, Seguridad en Redes, VoIP.
viernes, 17 de agosto de 2018
Demostración: Antispoofing IPv6 en un router Cisco IOS
El siguiente video muestra como simular un ataque spoof en Internet y como prevenir el mismo en Cisco IOS
viernes, 13 de julio de 2018
martes, 10 de julio de 2018
Crear ruta IPv6 en MAC OS y revisar tabla de vecinos IPv6
Crear ruta:
Revisar tabla de vecinos IPv6:
route add -inet6 -net 2000::/3 2001:XXX:XX:XX::1
Revisar tabla de vecinos IPv6:
ndp -an
martes, 5 de junio de 2018
Concepto: ¿Qué es un plan de direccionamiento IP(v4|v6)?
"Se define como el modo, las acciones, el modelo sistemático para llevar a cabo las asignaciones de direcciones IP (IPv4 y/o IPv6) en una red"
P.D. Concepto realizado por mí persona mezclando diversas definiciones de la palabra "plan" y haciendo enfoque al mundo IP
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)
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)
lunes, 21 de mayo de 2018
Todos los root servers DNS con soporte IPv6 - Un hito que pasó desapercibido
Introducción
En esta oportunidad quiero hablar sobre un detalle que considero pasó en el mundo de Internet desapercibido, tanto así que yo mismo ni me dí cuenta tarde.
Un poco de historia
Recientemente estuve revisando unas presentaciones de hace pocos años (aprox 2015) y noté que en las mismas mencionaban que solo 11 de los 13 root servers tenían direccionamiento IPv6. Por ello quise chequear y para mi sorpresa hoy -Mayo 2018- los 13 Root Servers cuentan con direccionamiento IPv6.
Los últimos nuevos glues IPv6 fueron modificados de la siguiente manera y en la siguiente fecha: 20 octubre 2016: g.root-servers.net . AAAA 2001:500:12::d0d 25 agosto 2016: e.root-servers.net . AAAA 2001:500:a8::e
Y fue anunciado el 2 de diciembre del 2016: http://root-servers.org/news/announcement-of-ipv6-addresses.txt
Actualmente los root servers tienen estas direcciones -Tomado de https://www.internic.net/domain/named.root -
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 3600000 A 199.9.14.201
B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:200::b
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c
D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
E.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:a8::e
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
G.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:12::d0d
H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:9f::42
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35
¿Cómo algo tan importante pudo pasar desapercibido?
Desde nuestro punto de vista fue increíble que este hecho no tuviese más difusión, pero las cosas fueron así y no podemos hacer nada al respecto. Se nos ocurren algunas razones por qué hubo esa falta de difusión:
- IPv6 ya se encuentra tan avanzado y estable que no pasó a ser noticia. Por ejemplo, en el 2008 cuando se colocó la primera dirección IPv6 si existió mucha noticia por muchas listas de correo y otros medios.
- Algunas noticias pasan sin pena ni gloria sobretodo cuando no hay pena como en esta oportunidad (que viene a ser bueno !!)Una comparación que suena exagerada pero cala perfectamente en este contexto es cuando llegó el Apollo 11 a la luna en el año 1969, fue una gran noticia, en los posteriores proyectos Apollo ya la misma novedad no tenía mucho impacto.
¿Qué significa que ahora todos los Root Servers DNS cuenten con IPv6?
Para este renglón existen dos cosas que podemos mencionar que son muy significativas, 1) es un mensaje adicional a la comunidad que IPv6 es un protocolo estable y funcional 2) podemos esperar resoluciones más rápidas y con menores rata de falla.
Un punto adicional, es importante indicar que la ausencia de NAT en IPv6 dentro del mundo DNS tiene particular y mayor relevancia motivado a que los traductores no necesitan Natear las respuestas DNS.
Por último, esto también empuja a crear demanda por IPv6 en todo el mundo. No olvidemos que los root servers utilizan anycast desde hace muchos años, y cada uno de los más de 1.000 nodos tienen requerimiento de servicio IPv6 en las decenas de países y redes en que son hosteados.
El siguiente paso entonces es... ir apagando IPv4 en alguno de los root servers! ;)
Referencias
Por
Alejandro Acosta
Colaborador: Hugo Salgado
miércoles, 16 de mayo de 2018
Solucion: "mtr: Failure to start mtr-packet: Invalid argument"
Hola,
Al ejecutar mtr en MAC (en mi caso Sierra) obtienes:
mtr: Failure to start mtr-packet: Invalid argument
El problema es que "mtr-packet" no está en tu PATH, debes ubicar donde se encuentra -generalmente en /usr/local/sbin-. Puedes buscarlo con:
#find / -name mtr-packet
Luego tienes que agregar el directorio que lo contiene al tu PATH. Para hacerlo:
Solución 1:
En un terminal:
PATH="$PATH:/usr/local/sbin"
PATH="$PATH:/usr/local/sbin"
Solución 2:
echo "/usr/local/sbin" >> /etc/paths
Espero te sirva,
Suscribirse a:
Entradas (Atom)
Se viene esta palabra: noiafobia
noiafobia = No Inteligencia Artificial Fobia o noaifobia = No Artificial Intelligence Fobia
-
Debido al crecimiento moderado que ha tenido el presente blog se me ocurrió añadir/integrar las estadisticas de google analytics a mi blog. ...
-
Introduccion: En algunas ocasiones es necesario "bajar" o deshabilitar iptables en nuestro Linux, el procedimiento depende de...
-
Saludos, Lo primero que debemos de hacer para quitar el stacking entre los switches es desconectar los cables Stack que los unen.... Es buen...