Gestionando maquinas virtuales en Xenserver directamente desde la consola

Es claro que para administrar y gestionar las maquinas virtuales montadas con XenServer existe un software llamado Xen Center (solo esta disponible para windows, aunque hay alternativas para linux, las que he probado no funcionan tan  bien) desde el cual se administra totalmente el servidor Xen server,  desde alli se pueden crear maquinas virtuales, arrancarlas, detenerlas, crear snapshots, entre otras caracteristicas.

Sin embargo para nosotros los que no usamos Windows, algunas veces se nos hace complicado encontrar un equipo con windows al que le podamos instalar dicho software  para entrar al servidor y realizar alguna tarea que tengamos que hacer (ya sea levantar una maquina que se bloqueo,  o para alguna otra funcion). En ocasiones nos llevamos mas tiempo en tratar de entrar administrar el server que la solucion de la falla en si.

Debido a esto, quise leer un poco  y encontrar  una forma con al cual pudiera arrancar o detener mis maquinas virtuales desde la consola del servidor, ya que desde mi GNU/Linux siempre podre entar por SSH al server y asi me quitaria el tedioso problema de conectarme desde xencenter para iniciar o detener una maquina.

xen server

Entrando en materia, lo primero que debemos hacer sera entrar al servidor desde SSH, una ves dentro, podremos listar nuestras maquinas virtuales usando el siguiente comando:

xe host-list

Este comando nos dara como resultado la lista de maquinas virtuales creadas en el servidor con su respectivo nombre y UUID, una ves teniendo la lista,  ya podremos apagar o iniciar una maquina virtual determinada, para apagarla, lo haremos con:

xe vm-shutdown name-label=NAME

Donde NAME es el name-label que nos arrojo el comando anterior, cabe aclarar que el nombre debe ser exactamente igual

Solo quedara esperar un poco, y ya tendremos nuestra maquina apagada, ahora para iniciarla, haremos:

xe vm-start name-label=NAME

Ahora si queremos reiniciar una maquina:

xe vm-reboot name-label=NAME

Como ven es demasiado sencillo gestionar las maquinas virtuales directamente desde el servidor XenServer por medio de SSH, A continuacion otros comandos utiles para la administracion de las maquinas virtuales:

Exportar una maquina virtual:

xe vm-export name-label=NAME filename=/mnt/NAME.xva

Importar una maquina virtual:

xe vm-import /mnt/NAME.xva

Al igual que estas caracteristicas hay muchas mas que se pueden descubrir en la documentacion de XEN Server, No obstante con estos comandos muy seguramente se hara la vida mucho mas facil a algun sysadmin por ahi.

No cON Name edicion 11 se realizara en Octubre de este año

Anteriormente aca en RinconInformatico, hemos publicado las pasadas ediciones de uno de los congresos con mas trayectoria en el campo de la seguridad informatica que se realiza en españa. Se trata del ya conocido y veterano No cON Name, el cual este año se realizara desde el 31 de octubre hasta el 01 de noviembre del presente año.

Este congreso, caracterizado por su alta trayectoria y experiencia (mas de 14 años ), busca reunir a todos aquellos profesionales, fuerzas de ley, hackers, estudiantes, apasionados y cualquier otra persona, interesada en el campo de la seguridad informatica y los nuevos desafios y descubrimientos en dichos campo.

Alguna de los temas que se trataran en esta edicion:

  • los entresijos de las conocidas redes como TOR
  • Las llamadas cryptomonedas (Bitcoin)
  • La seguridad en JAVACARD

Ademas de las charlas y conferencias, habran actividades interesantes como:

  • El famoso y ya conocido Capture the Flag (CTF)
  • Formaciones y capacitaciones
  • KeySigning Party (Intercambio de llaves)

Este ultimo punto ha codigo mucha fuerza en estos ultimos meses, debido a las últimas revelaciones respecto a monitorización masiva de las comunicaciones por parte de servicios secretos,por esta razon muchos usuarios han empezado a cifrar sus correosy sus comunicaciones.

logo no con name

Igualmente, si eres apasionado por la seguridad informatica, y crees que tienes un tema que podria ser ponencia en el congresos, aun estan abiertas (hasta el 15 de julio) )las incripciones para enviar tu trabajo y esperar ser escogido como ponente en un evento de tal magnitud.

Como ven, ya se aproxima uno de los eventos mas importantes relacionados con la seguridad informatica en españa, esperamos que los que pueda ir, asistan  y puedan estar al tanto de las nuevas tecnicas de intrusion y mejor aun las contramedidas a los complejos ataques que van surgiendo dia dia

Para mas informacion, pueden visitar el sitio web oficial del evento

Trabajando y gestionando la cola de correo en Exim

Los que trabajamos como sysadmin o administradores de IT,  en alguna epoca de nuestro trabajo, nos ha tocado lidiar con el servicio de correo,  problemas de spam entrante y saliente, ataques de spam, en fin son miles de cosas con las cuales tenemos que lidiar a diario con el fin de mantener nuestro servidor protegido y sobre todo nuestra direccion IP limpia para que los correos que salgan de nuestro servidor sean rechazados por los demas servidores de correos del mundo.

En el dia de hoy queria compartir algunos comandos utiles a la hora de manejar la cola de correo con exim, con estos comandos, podremos ver los correos encolados, enviarlos o vaciar la cola de correo. Sin mas preambulo, manos a la obra.

Como listar los correos encolados en exim

Para sacar una lista de los correos que actualmente estan encolados, bastara con:

exim -bp

Lo cual nos arrojara algo como esto:

cola de exim

Explicando un poco:

  1. Primer campo: tiempo de creacion del mensaje
  2. Segundo campo: Tamaño del mensaje
  3. Tercer Campo es el Id del mensaje (todo mensaje tiene su id)
  4. Cuarto campo es la direccion que envia el mensaje
  5. Quinto campo y las linas de abajo son los destinatarios del mensaje

Ahora si lo que queremos es filtrar los mensajes que esten encolados de un remitente en especial, haremos uso de grep:

exim -bp|grep “user@dominio.com”

O tambien se puede filtrar por el dominio completo:

exim -bp|grep “dominio.com”

Con esto observaremos todos los correos encolados, del dominio o de alguna cuenta en especial. ¿Pero que pasa si necesitamos contar  cuantos correos hay encolados de un dominio o cuenta en particular? haremos uso de wc:

exim -bp|grep “user@dominio.com” | wc -l

Esto nos dara como resultado el numero total de correos encolados de la cuenta user@dominio.com

correo exim

Por ultimo, si desearamos borrar estos correos que ya tenemos identificados y filtrados, haremos lo siguiente:

exim -bp|grep “user@dominio.com”| awk {‘print $3′}| xargs exim -Mrm

De esta manera boraremos todos los correos encolados de la cuenta user@dominio.com

Ahora muchos se estaran preguntando, como hacer si deseamos vaciar toda la cola de correo, es decir eliminar todos los correos que hay encolados. Para hacer esto:

exim -bp | awk ‘/^ *[0-9]+[mhd]/{print “exim -Mrm ” $3}’ | sh

Por ultimo, si lo que deseamos es tratar de enviar todos los correos encolados, lanzaremos este comando:

exim -bp | awk ‘/^ *[0-9]+[mhd]/{print “exim -Mrm ” $3}’ | sh

Como ven es una forma facil de trabajar con la cola de exim, en realidad este tipo de cosas se pueden hacer de diversas formas, ya sea usando exiqgrep u otra herramienta, sin embargo queria compartir una d las tantas formas faciles  sencillas para gestionar la cola de correo en exim y linux.

Como forzar la negociacion de una tarjeta de red en Linux

Algunas veces suele suceder que la autonegociacion de la velocidad de las tarjetas de red falla, y toca forzar o setear la velocidad de las tarjetas de red de forma manual. En entornos privativos como Windows, cambiar la velocidad de la tarjeta es muy sencillo desde las propiedades de la tarjeta de red.

En esta ocasion, aprenderemos como realizar este proceso en sistemas Linux. Cabe resaltar que como todo GNU/Linux, ofrece multiples formas de configurar este tipo de caracteristicas, sin embargo describirle la forma mas sencilla y la que he probado previamente.

Inicialmente necesitaremos ethtool, una excelente herramienta para gestionar nuestras tarjetas de red, si no lo tenemos instalado, lo instalamos haciendo uso de nuestro amigo apt-get

apt-get install ethtool

Una vez instalado el paquete, si queremos mostrar el estado actual  de la interfaz, haremos:

ethtool

Alli podremos ver  informacion relevante como:

  • Autonegociacion
  • Velocidad actual
  • Velocidad que soporta la tarjeta
  • Observar si el puerto tiene algo o conectado (Muy util para detectar problemas de red)

Ahora si queremos forzar la tarjeta de red para que trabaje a cierta velocidad solo tendremos que hacer:

ethtool -s eth0 speed 100 duplex full

Donde eth0 sera la interfaz que se desea cambiar

De esta forma tendremos la tarjeta de red  con la velocidad que deseemos. Sin embargo este cambio aplicaria solo mientras se reinician las tarjetas de red. Para hacer que este cambio se aplique cada vez que se inicie el equipo deberemos agregar la instruccion de ethtool en el archivo de configuracion de las tarjetas de red. En Debian es /etc/network/interfaces

nano /etc/network/interfaces

iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        gateway 192.168.1.254
        up sleep 5; ethtool -s eth0 speed 100 duplex full

Con esto nuestra interfaz de red siempre se forzara al inicio para usar la velocidad 100 full duplex

Como realizar un tunel inverso con SSH

En algunas ocasiones necesitamos conectarnos a un servidor el cual esta detras de un Firewall  o de otro equipo, al cual no tenemos acceso para hacer  la respectiva redireccion de puertos  y lograr conectarnos por la ip publica con la que dicho equipo sale a internet. En otras palabras, necesitamos acceder a un servidor el cual esta detras de algun tipo de NAT que nos impide realizar la conexion directa al servidor.

Para solucionar esta problema, se pueden emplear diversas tecnicas, sin embargo en el dia de hoy quiero mostrar una forma muy sencilla de poder conectarnos via SSH a un equipo que esta detras de un FW o NAT, implementando los muy conocidos tuneles inversos.

¿Como funciona un tunel SSH inverso?

Generalmente, una conexion SSH se realiza haciendo que el cliente se conecte  hacia el servidor, sin embargo si no tenemos forma de  hacer la conexion SSH de esta forma(por lo que ya hemos hablado del NAT y FW), es posible hacer que esta maquina a la cual queremos acceder, se conecte por SSH  a una tercera maquina a la cual si tiene acceso (ya que  el fw no restringe la conexion de LAN y WAN) de esta forma, conectariamos la maquina destino (la cual esta detras del FW o NAT) a una tercera maquina, y nosotros desde nuetro PC nos conectariamos a esta tercera maquina y de alli entrariamos al tunel el cual se establecio previamente entre la maquina destino(si, la que esta detras del fw  y nat ) y la  tercera maquina. Un esquema para aclarar un poco mas la idea

tunel ssh

 La idea es basicamente esta:

  • De A nos conectamos a B
  • De C nos conectamos a B
  • Por ultimo, de C nos conectamos a A, usando el tunel establecido con el B

A continuacion se indicaran los pasos a seguir ya en la practica para realizar la conexion:

  • Iniciamos el tunel desde A hasta B de la siguiente forma:

ssh -R puerto_a_escuchar:localhost:puertoSSH usuario_local@DireccionIP_maquina_b

Un ejemplo mas claro:

ssh -R 9999:localhost:22 test@200.207.23.45

Donde

9999: sera el puerto que quedara a la escucha

22: Es el puerto donde escucha el SSH localmente

test: Usuario de SSH local

200.207.23.45: Direccion IP de la maquina que servira para hacer el tunel

  • Una vez hecho esto, pasamos a conectarnos por SSH normalmente a la maquina B

ssh user@200.207.23.45

  • Ahora por ultimo, estando alli en la maquina B nos conectamos al puerto donde se establecio el tunel, para efectos de nuestro ejemplo fue el puerto 9999

ssh test@localhost -p 9999

De esta forma estaremos dentro de aquella maquina la cual esta detras de un FW o de un NAT, gracias al uso del tunel inverso SSH, una medida muy sencilla para evitar este tipo de problemas.

Como ven es una de las tantas funcionalidades que nos ofrece SSH para lograr gestionar equipos los cuales no esten directamente conectados a internet o esten en otra subred detras de un equipo de seguridad, sin necesidad de modificar las reglas de firewall para crear port forward o habilitar puertos, es decir, una tecnica muy util cuando no tengamos acceso al equipo de borde