SlideShare una empresa de Scribd logo
Gestión Remota de Equipos
con Python
ING. JUAN RODRÍGUEZ
NOISE CIBER SEGURIDAD
¿Quién es Juan Rodríguez?
• 4 años programando PHP Freelance (tenía que hacer
algo en mis tiempos libres de la U)
• 2 años como programador senior PHP.
• 7 años como encargado de middleware en un
procesador de tarjetas.
– Inicio en el área de la seguridad.
– Implementador y facilitador de soluciones para PCI DSS.
– Creación de políticas, aplicación de controles y verificación
de los mismos.
• Mas de un año de trabajo con NOISE.
¿Qué es Python?
Python es un lenguaje de programación
interpretado, su filosofía es basada en hacer un
énfasis en la sintaxis ordenada para poder
obtener un código legible.
¿En qué lenguajes se basa?
Influenciado por:
• ABC
• C
• Perl
• JAVA
Filosofía
Cronología
Python aplicado a redes
Python y las redes nacen como una solución a
los tiempos largos de respuesta de equipos
puesto que se configuran remotamente por La
línea de Comando (CLI) o mensajes MIB bajo el
protocolo SNMP comúnmente utilizado en los
sistemas de gestión remota.
Antes de continuar unas preguntas
• ¿Cuántos son Sysadmin?
• ¿Cuántos son Netadmin?
• ¿Cuántos son Programadores?
• ¿Quiénes ya han programado en Python?
Repaso
Necesario pero nadie es experto en todas las
ciencias del universo 
REPASO GENERAL DE PYTHON
Parte 1
Antes de continuar
• ¿Tienen Python instalado?
• Usuarios de Linux lo poseen por defecto ya
que viene preinstalado en la mayoría de
distibuciones.
• Usuarios de Windows se proporcionará el
instalador.
Palabras Clave
Python posee dos tipos de palabras reservadas
las palabras clave y las funciones, la gran
diferencia es que las palabras fueron concebidas
cuando fue escrito el núcleo del lenguaje y
algunas no necesitan parámetros, y las
funciones han sido agregadas al núcleo de
Python y necesitan parámetros o al menos
ponerle "()" al final.
Ejemplo de palabras clave
Palabra Clave Descripción
True Valor booleano
False Valor booleano
None Valor
and Operador booleano
or Operador booleano
not Operador booleano
as Sirve para “renombrar” una librería o sub-librería
assert Evalúa una variable o una condición y si el valor el
False imprime o muestra un error
if Inicia una estructura if o switch/case
else Continúa la estructura if o termina la estructura case
elif Continua la estructura switch/case
Ejemplos de funciones
Función Descripción
abs() Devuelve el valor absoluto de un numero
all() Devuelve verdadero si todos los elementos en un objeto
iterable son verdaderos
any() Devuelve verdadero si cualquier elemento en un objeto
iterable es verdadero
ascii() Devuelve una versión legible de un objeto
bool() Devuelve el valor booleano de un objeto
dict() Devuelve un arreglo de un diccionario
dir() Devuelve una lista de propiedades y métodos de un objeto
divmod() Devuelve el cociente y el sobrante cuando el argumento “a” es
dividido entre el argumento “b”
enumerate() Toma una colección (lista, tupla,etc) y la devuelve como objeto
enumerado
eval() Evalúa y ejecuta una expresión
exec() Ejecuta el código especificado
Identificadores
Los identificadores son los nombres que pueden
tener las variables, como en todo lenguaje de
programación, Python tiene ciertas reglas para
los identificadores de las variables:
• No puede comenzar con digito
• Es case sensitive (distingue entre mayúsculas y
minúsculas)
• No pueden ser palabras reservadas
Modos de programación
• Interactivo.
• Por medio de scripts.
Programación interactiva
¿Es esto todo lo que debo saber?
No, Python es un lenguaje extenso, sin embargo
para fines del taller esta es la base.
Fuente: https://xkcd.com/353/
¿QUIÉN DIJO MODELO OSI?
Parte 2
Las capas de OSI
Cabecera IP
Cabecera TCP
Cabecera UDP
Cabecera ICMP
Librería Scapy
Una herramienta poderosa de manipulación de
paquetes que permite forjar paquetes de una
amplia variedad de protocolos.
¿Que podemos hacer con esto?
Utilizar la librería Scapy de Python para:
• Crear paquetes personalizados.
• Verificar la salud de los paquetes de la red.
• Esconde información en los campos no
utilizados de las cabeceras.
• Escaneo de red y descubrimiento de equipos.
• Pero solo tenemos 4 horas, asi que subiremos
a la capa 7 
¿Qué operaciones nos interesaría
saber?
• Escanear rápido una red.
• Identificar hosts caídos.
• Ejecutar comandos remotos.
• Integrar APIs.
IDENTIFICACIÓN DE HOSTS
Parte 3
Python-nmap
# pip3 install python-nmap
Gestión Remota de Equipos con Python
Llamadas de sistema
Si no deseamos utilizar librerías adicionales y
poseemos otras aplicaciones instaladas que
pueden realizan la operación solicitada,
podemos invocarlos por medio de una llamada
de sistema.
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
RETO
Crear un script que escanee una red e
identifique todos los equipos que posean el
puerto TCP(80) abierto.
EJECICUCIÓN DE COMANDOS
REMOTOS
Parte 4
¿Cómo podemos ejecutar comandos
remotos?
• ¿Alguna idea?
Ejecutar un comando remoto por SSH
Para ejecutar un comando remoto no es
necesario mantener una sesion persistente.
¿Es necesario utilizar siempre un
password?
No, se pueden implementar llaves de cifrado sin
contraseña.
Contraseña vs Llaves en SSH
Contraseña Llave
Definición Una frase secreta creada
por un usuario
Una frase creada por un
sistema para bloquear o
desbloquear funciones
criptográficas
Usado en Cifrado, autenticación Cifrado, autenticación,
certificados digitales,
comunicaciones seguridad
Aleatoriedad Puede contener datos no
aleatorios como palabras
de diccionarios
Usualmente cercano a lo
aleatorio
Fuente: https://simplicable.com/new/password-vs-key
Creación de llaves en linux
• Crear un usuario al cual se estará conectando el equipo.
• Aplicar reglas de control administrativo (sudo) según sea
necesario.
• Crear par de llaves.
• Deshabilitar el uso de contraseña para el inicio de sesion
(solo llave) para el usuario dado.
• Intercambiar la llave con el cliente (o usuario que se
conectará).
• …
• Profit!!
Creando el usuario
En equipo remoto
ADVERTENCIA
La siguiente configuración representa un falla de
seguridad, sin embargo, se utilizará de esta
forma para facilitar los fines educativos de la
ejecución de comando administrativos.
Nunca utilizar de dicha forma en ambientes
productivos.
Aplicando reglas de administrativas
# sudo nano /etc/sudoers
Recomendado: https://www.sudo.ws/man/1.8.15/sudoers.man.html
Fuente: https://xkcd.com/838/
El correcto uso de sudo
• Únicamente permitir los comando necesarios.
• Utilizar rutas completas para especificar
comandos.
• Especificar los switches (parámetros) que podrá
ejecutar con ese comando.
• Nunca utilizar un usuario con todos los privilegios
para conexiones remotas.
Recomendado: http://toroid.org/sudoers-syntax
Creando par de llaves
En equipo cliente
Favor compartir sus llaves públicas
https://tinyurl.com/yam72756
Deshabilitar contraseña
En equipo remoto
# sudo nano /etc/ssh/sshd_config
Extrayendo la llave del cliente
Primero exportar la llave publica del equipo local
(cliente)
Importando la llave en el servidor
(equipo remoto)
# nano ~/.ssh/authorized_keys
Nota: iniciar sesion con el usuario “remoto”
Probando funcionamiento
Profit!!
EJECUCIÓN DE COMANDO
REMOTOS EN PYTHON
Parte 5
Librería Paramiko
Una implementación del protocolo SSHv2 para
Python el cual funciona como ambos, tanto
cliente como servidor.
Instalación de la librería
# pip3 install paramiko
¿Complicado verdad?
Ejecutando comandos en el equipo
remoto (con password)
Ejecutando comandos en el equipo
remoto (con llave)
¿Cuál es la ventaja de ejecutar
comandos remotos?
Se pueden automatizar tareas acorde a la
necesidad y ambientes del negocio como:
• Enrutamiento.
• Reglas de firewall.
• Configuración de VPN.
• Estadísticas de uso de recursos.
• Reinicios programados, etc.
Procesando la salida de comandos
En Python es posible ejecutar funciones sobre
cadenas para poder procesar la salida de texto,
realizar cortes y obtener subcadenas:
RETO
Obtener la IP privada de alice y bob y ejecutar
un ping (-c 1) al Gateway para obtener el tiempo
de respuesta.
Los comandos remotos son útiles,
pero…
• Es necesario realizar un parsing por comando
generado de lo devuelto.
• Debemos considerar todos los posibles casos
de uso.
API’S EN PYTHON
Parte 6
Fabric
Una librería diseñada para ejecutar comandos
de Shell remoto sobre SSH.
# pip3 install fabric
Uso de fabric
Fuente: http://www.fabfile.org/
¿Cuál es la gran ventaja de fabric?
Muchas, pero una de ellas es que nos permite
ejecutar un comando en múltiples equipos (lo
siguiente es de la documentación):
API’s de fabricantes
La adopción de Python ha sido tal que muchos
fabricantes han creado sus API’s para conectarse
directamente, entre ellos tenemos:
• Fortinet
• Cisco
• Juniper
FortiOSAPI
Python en los equipos de red
Cisco incluye Python en sus equipos para la
creación de scripts por medio del “Cisco Python
Module”.
https://www.cisco.com/c/en/us/td/docs/ios-
xml/ios/prog/configuration/166/b_166_progra
mmability_cg/python_api.html
VIENDO AL HORIZONTE
Parte 7
¿Dónde más puedo utilizar Python?
El internet of things y el mundo maker nos ha
traído muchas cosas interesante:
Micropython
Una versión reducida de Python 3 diseñana para
correr de forma nativa en microcontrolador. En
uso con ESP8266 y ESP32 se puede crear un
sistema de monitoreo conectado a WiFi o de
visualización de alertas con modelos que poseen
LCD.
En conclusión
• Cada ambiente es diferente a otro, asi como cada
fabricante es diferente, debemos hacer planes de
acuerdo a cada infraestructura.
• Puntos clave a monitorear en la red: uso de
recursos, carga en CPU, cantidad de conexiones
recurrentes, eventos de error, etc.
• Python es un lenguaje multiplataforma por lo que
no debemos enfocarnos a que es algo atado a
Linux.
¿PREGUNTAS?
¡MUCHAS GRACIAS!
Referencias Adicionales
• https://www.w3schools.com/python/python_cla
sses.asp
• https://docs.python.org/3.8/tutorial/classes.html
• https://doc.lagout.org/programmation/python/B
eginning%20Programming%20with%20Python%2
0for%20Dummies%20%5BMueller%202014-09-
22%5D.pdf
• https://www.packtpub.com/packt/free-
ebook/learning-python
• https://es.wikipedia.org/wiki/Modelo_OSI

Más contenido relacionado

DOCX
Ejercicio de ensamble y mantenimiento de computadoras
PDF
DOCX
Informe tecnico (1)
PPTX
Protección y Seguridad en los SO
PPTX
Experiencias en reparación de computadoras
PDF
TALLER DE SISTEMAS OPERATIVOS
PDF
Quick Guide with Linux Command Line
PDF
Ejercicios packet tracer_completo_2014
Ejercicio de ensamble y mantenimiento de computadoras
Informe tecnico (1)
Protección y Seguridad en los SO
Experiencias en reparación de computadoras
TALLER DE SISTEMAS OPERATIVOS
Quick Guide with Linux Command Line
Ejercicios packet tracer_completo_2014

La actualidad más candente (20)

PDF
MANUAL PARA FORMATEAR DISCO DURO E INSTALAR WINDOWS 10.pdf
DOCX
Informe tecnico laptopllll
PPTX
PDF
Infokids 2 Informática General - Fichas de Aprendizaje 2014
PPTX
Introduction to DevOps
DOC
Manual de-mantenimiento-del-computador-1parteguia
PDF
Introduction to CICD
PDF
Manual de Soporte Tecnico
PPTX
Mantenimiento del software
DOCX
Proyecto de Centro de Computo
DOC
Conclusiones importancia del mantenimiento preventivo y corectivo de equipos ...
PDF
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
DOCX
Practica1 CCNA2 Capitulo 3
PPTX
Desmontaje y montaje de un pc
PPTX
MANTENIMIENTO PREVENTIVO Y PREDICTIVO DE UN PC
PDF
Sesiones de clase con LEGO WeDo - Clase 1
PDF
AULA VIRTUAL VON BRAUN
PDF
Rúbrica para evaluar los ejercicios de programacion
PDF
Malla curricular programación róbotica clcc 2018
MANUAL PARA FORMATEAR DISCO DURO E INSTALAR WINDOWS 10.pdf
Informe tecnico laptopllll
Infokids 2 Informática General - Fichas de Aprendizaje 2014
Introduction to DevOps
Manual de-mantenimiento-del-computador-1parteguia
Introduction to CICD
Manual de Soporte Tecnico
Mantenimiento del software
Proyecto de Centro de Computo
Conclusiones importancia del mantenimiento preventivo y corectivo de equipos ...
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Practica1 CCNA2 Capitulo 3
Desmontaje y montaje de un pc
MANTENIMIENTO PREVENTIVO Y PREDICTIVO DE UN PC
Sesiones de clase con LEGO WeDo - Clase 1
AULA VIRTUAL VON BRAUN
Rúbrica para evaluar los ejercicios de programacion
Malla curricular programación róbotica clcc 2018
Publicidad

Similar a Gestión Remota de Equipos con Python (20)

PDF
Programacion en python_2
ODP
python programming learning
PDF
Scripting para Pentesters v1.0
PPT
Sockets En Python Por Antoni Luque Delgado
PPT
Sockets En Python Por Antoni Luque Delgado
PDF
Presentacion Python
PDF
PDF
Seguridad es
PDF
sadfasdfsadfasdfasdfasdfasdfasdfasdfasdfdsafasd
PDF
Python para todos
PDF
Python_para_todos.pdf
PDF
Python para todos
PDF
PDF
Libro python para todos
PDF
Python para todos
PDF
Python_para_todos.pdf
PDF
python-para-todos.pdf
PDF
python-para-todos.pdf
PPTX
PPTX
Investigacion de Python.pptx
Programacion en python_2
python programming learning
Scripting para Pentesters v1.0
Sockets En Python Por Antoni Luque Delgado
Sockets En Python Por Antoni Luque Delgado
Presentacion Python
Seguridad es
sadfasdfsadfasdfasdfasdfasdfasdfasdfasdfdsafasd
Python para todos
Python_para_todos.pdf
Python para todos
Libro python para todos
Python para todos
Python_para_todos.pdf
python-para-todos.pdf
python-para-todos.pdf
Investigacion de Python.pptx
Publicidad

Último (20)

PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
capacitación de aire acondicionado Bgh r 410
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
Propuesta BKP servidores con Acronis1.pptx
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
Diapositiva proyecto de vida, materia catedra
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Historia Inteligencia Artificial Ana Romero.pptx
capacitación de aire acondicionado Bgh r 410
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
TRABAJO DE TECNOLOGIA.pdf...........................
historia_web de la creacion de un navegador_presentacion.pptx
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Estrategia de Apoyo de Daylin Castaño (5).pdf
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Curso de generación de energía mediante sistemas solares
la-historia-de-la-medicina Edna Silva.pptx
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Documental Beyond the Code (Dossier Presentación - 2.0)
Propuesta BKP servidores con Acronis1.pptx

Gestión Remota de Equipos con Python

  • 1. Gestión Remota de Equipos con Python ING. JUAN RODRÍGUEZ NOISE CIBER SEGURIDAD
  • 2. ¿Quién es Juan Rodríguez? • 4 años programando PHP Freelance (tenía que hacer algo en mis tiempos libres de la U) • 2 años como programador senior PHP. • 7 años como encargado de middleware en un procesador de tarjetas. – Inicio en el área de la seguridad. – Implementador y facilitador de soluciones para PCI DSS. – Creación de políticas, aplicación de controles y verificación de los mismos. • Mas de un año de trabajo con NOISE.
  • 3. ¿Qué es Python? Python es un lenguaje de programación interpretado, su filosofía es basada en hacer un énfasis en la sintaxis ordenada para poder obtener un código legible.
  • 4. ¿En qué lenguajes se basa? Influenciado por: • ABC • C • Perl • JAVA
  • 7. Python aplicado a redes Python y las redes nacen como una solución a los tiempos largos de respuesta de equipos puesto que se configuran remotamente por La línea de Comando (CLI) o mensajes MIB bajo el protocolo SNMP comúnmente utilizado en los sistemas de gestión remota.
  • 8. Antes de continuar unas preguntas • ¿Cuántos son Sysadmin? • ¿Cuántos son Netadmin? • ¿Cuántos son Programadores? • ¿Quiénes ya han programado en Python?
  • 9. Repaso Necesario pero nadie es experto en todas las ciencias del universo 
  • 10. REPASO GENERAL DE PYTHON Parte 1
  • 11. Antes de continuar • ¿Tienen Python instalado? • Usuarios de Linux lo poseen por defecto ya que viene preinstalado en la mayoría de distibuciones. • Usuarios de Windows se proporcionará el instalador.
  • 12. Palabras Clave Python posee dos tipos de palabras reservadas las palabras clave y las funciones, la gran diferencia es que las palabras fueron concebidas cuando fue escrito el núcleo del lenguaje y algunas no necesitan parámetros, y las funciones han sido agregadas al núcleo de Python y necesitan parámetros o al menos ponerle "()" al final.
  • 13. Ejemplo de palabras clave Palabra Clave Descripción True Valor booleano False Valor booleano None Valor and Operador booleano or Operador booleano not Operador booleano as Sirve para “renombrar” una librería o sub-librería assert Evalúa una variable o una condición y si el valor el False imprime o muestra un error if Inicia una estructura if o switch/case else Continúa la estructura if o termina la estructura case elif Continua la estructura switch/case
  • 14. Ejemplos de funciones Función Descripción abs() Devuelve el valor absoluto de un numero all() Devuelve verdadero si todos los elementos en un objeto iterable son verdaderos any() Devuelve verdadero si cualquier elemento en un objeto iterable es verdadero ascii() Devuelve una versión legible de un objeto bool() Devuelve el valor booleano de un objeto dict() Devuelve un arreglo de un diccionario dir() Devuelve una lista de propiedades y métodos de un objeto divmod() Devuelve el cociente y el sobrante cuando el argumento “a” es dividido entre el argumento “b” enumerate() Toma una colección (lista, tupla,etc) y la devuelve como objeto enumerado eval() Evalúa y ejecuta una expresión exec() Ejecuta el código especificado
  • 15. Identificadores Los identificadores son los nombres que pueden tener las variables, como en todo lenguaje de programación, Python tiene ciertas reglas para los identificadores de las variables: • No puede comenzar con digito • Es case sensitive (distingue entre mayúsculas y minúsculas) • No pueden ser palabras reservadas
  • 16. Modos de programación • Interactivo. • Por medio de scripts.
  • 18. ¿Es esto todo lo que debo saber? No, Python es un lenguaje extenso, sin embargo para fines del taller esta es la base.
  • 20. ¿QUIÉN DIJO MODELO OSI? Parte 2
  • 26. Librería Scapy Una herramienta poderosa de manipulación de paquetes que permite forjar paquetes de una amplia variedad de protocolos.
  • 27. ¿Que podemos hacer con esto? Utilizar la librería Scapy de Python para: • Crear paquetes personalizados. • Verificar la salud de los paquetes de la red. • Esconde información en los campos no utilizados de las cabeceras. • Escaneo de red y descubrimiento de equipos. • Pero solo tenemos 4 horas, asi que subiremos a la capa 7 
  • 28. ¿Qué operaciones nos interesaría saber? • Escanear rápido una red. • Identificar hosts caídos. • Ejecutar comandos remotos. • Integrar APIs.
  • 32. Llamadas de sistema Si no deseamos utilizar librerías adicionales y poseemos otras aplicaciones instaladas que pueden realizan la operación solicitada, podemos invocarlos por medio de una llamada de sistema.
  • 35. RETO Crear un script que escanee una red e identifique todos los equipos que posean el puerto TCP(80) abierto.
  • 37. ¿Cómo podemos ejecutar comandos remotos? • ¿Alguna idea?
  • 38. Ejecutar un comando remoto por SSH Para ejecutar un comando remoto no es necesario mantener una sesion persistente.
  • 39. ¿Es necesario utilizar siempre un password? No, se pueden implementar llaves de cifrado sin contraseña.
  • 40. Contraseña vs Llaves en SSH Contraseña Llave Definición Una frase secreta creada por un usuario Una frase creada por un sistema para bloquear o desbloquear funciones criptográficas Usado en Cifrado, autenticación Cifrado, autenticación, certificados digitales, comunicaciones seguridad Aleatoriedad Puede contener datos no aleatorios como palabras de diccionarios Usualmente cercano a lo aleatorio Fuente: https://simplicable.com/new/password-vs-key
  • 41. Creación de llaves en linux • Crear un usuario al cual se estará conectando el equipo. • Aplicar reglas de control administrativo (sudo) según sea necesario. • Crear par de llaves. • Deshabilitar el uso de contraseña para el inicio de sesion (solo llave) para el usuario dado. • Intercambiar la llave con el cliente (o usuario que se conectará). • … • Profit!!
  • 42. Creando el usuario En equipo remoto
  • 43. ADVERTENCIA La siguiente configuración representa un falla de seguridad, sin embargo, se utilizará de esta forma para facilitar los fines educativos de la ejecución de comando administrativos. Nunca utilizar de dicha forma en ambientes productivos.
  • 44. Aplicando reglas de administrativas # sudo nano /etc/sudoers Recomendado: https://www.sudo.ws/man/1.8.15/sudoers.man.html
  • 46. El correcto uso de sudo • Únicamente permitir los comando necesarios. • Utilizar rutas completas para especificar comandos. • Especificar los switches (parámetros) que podrá ejecutar con ese comando. • Nunca utilizar un usuario con todos los privilegios para conexiones remotas. Recomendado: http://toroid.org/sudoers-syntax
  • 47. Creando par de llaves En equipo cliente
  • 48. Favor compartir sus llaves públicas https://tinyurl.com/yam72756
  • 49. Deshabilitar contraseña En equipo remoto # sudo nano /etc/ssh/sshd_config
  • 50. Extrayendo la llave del cliente Primero exportar la llave publica del equipo local (cliente)
  • 51. Importando la llave en el servidor (equipo remoto) # nano ~/.ssh/authorized_keys Nota: iniciar sesion con el usuario “remoto”
  • 53. EJECUCIÓN DE COMANDO REMOTOS EN PYTHON Parte 5
  • 54. Librería Paramiko Una implementación del protocolo SSHv2 para Python el cual funciona como ambos, tanto cliente como servidor.
  • 55. Instalación de la librería # pip3 install paramiko ¿Complicado verdad?
  • 56. Ejecutando comandos en el equipo remoto (con password)
  • 57. Ejecutando comandos en el equipo remoto (con llave)
  • 58. ¿Cuál es la ventaja de ejecutar comandos remotos? Se pueden automatizar tareas acorde a la necesidad y ambientes del negocio como: • Enrutamiento. • Reglas de firewall. • Configuración de VPN. • Estadísticas de uso de recursos. • Reinicios programados, etc.
  • 59. Procesando la salida de comandos En Python es posible ejecutar funciones sobre cadenas para poder procesar la salida de texto, realizar cortes y obtener subcadenas:
  • 60. RETO Obtener la IP privada de alice y bob y ejecutar un ping (-c 1) al Gateway para obtener el tiempo de respuesta.
  • 61. Los comandos remotos son útiles, pero… • Es necesario realizar un parsing por comando generado de lo devuelto. • Debemos considerar todos los posibles casos de uso.
  • 63. Fabric Una librería diseñada para ejecutar comandos de Shell remoto sobre SSH. # pip3 install fabric
  • 64. Uso de fabric Fuente: http://www.fabfile.org/
  • 65. ¿Cuál es la gran ventaja de fabric? Muchas, pero una de ellas es que nos permite ejecutar un comando en múltiples equipos (lo siguiente es de la documentación):
  • 66. API’s de fabricantes La adopción de Python ha sido tal que muchos fabricantes han creado sus API’s para conectarse directamente, entre ellos tenemos: • Fortinet • Cisco • Juniper
  • 68. Python en los equipos de red Cisco incluye Python en sus equipos para la creación de scripts por medio del “Cisco Python Module”. https://www.cisco.com/c/en/us/td/docs/ios- xml/ios/prog/configuration/166/b_166_progra mmability_cg/python_api.html
  • 70. ¿Dónde más puedo utilizar Python? El internet of things y el mundo maker nos ha traído muchas cosas interesante:
  • 71. Micropython Una versión reducida de Python 3 diseñana para correr de forma nativa en microcontrolador. En uso con ESP8266 y ESP32 se puede crear un sistema de monitoreo conectado a WiFi o de visualización de alertas con modelos que poseen LCD.
  • 72. En conclusión • Cada ambiente es diferente a otro, asi como cada fabricante es diferente, debemos hacer planes de acuerdo a cada infraestructura. • Puntos clave a monitorear en la red: uso de recursos, carga en CPU, cantidad de conexiones recurrentes, eventos de error, etc. • Python es un lenguaje multiplataforma por lo que no debemos enfocarnos a que es algo atado a Linux.
  • 75. Referencias Adicionales • https://www.w3schools.com/python/python_cla sses.asp • https://docs.python.org/3.8/tutorial/classes.html • https://doc.lagout.org/programmation/python/B eginning%20Programming%20with%20Python%2 0for%20Dummies%20%5BMueller%202014-09- 22%5D.pdf • https://www.packtpub.com/packt/free- ebook/learning-python • https://es.wikipedia.org/wiki/Modelo_OSI