LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 
Monitis ofrece la posibilidad de controlar casi cualquier operación en el servidor. Usando simples herramientas de Linux y scripts es capaz de controlar cada vez que un usuario inicia sesión en el servidor y captura de información, incluido la dirección de host nombre de usuario, y el servicio de inicio de sesión. El uso de scripts pam_script y bash, que son capaces de transmitir información a un monitor personalizado con esta información.

API de acceso


La primera cosa que usted necesita para crear este monitor es la clave de API Monitis y clave secreta. La clave de API es un código alfanumérico que le permite acceder a la API Monitis url y transmitir o recibir datos sobre sus servicios Monitis. La clave secreta es un código alfanumérico que le permite firmar digitalmente la información para garantizar que sólo se puede transmitir datos a su cuenta Monitis. Su clave de API puede ser revelada a algunas personas, pero la clave secreta debe ser mantenida en secreto y no se debe compartir ni transmitir. Para obtener su clave de API Monitis y clave secreta, acceda a su cuenta y de la barra de menú superior, vaya a Herramientas y luego entonces API-> API Key, se mostrará tanto la clave de la API y su clave secreta. Ahora vamos a probar el acceso a la API. Usted debe ser capaz de conectarse y obtener un token de autenticación:

curl 'http://www.monitis.com/api?action=authToken&apikey=[API Key]&secretkey=[Secret Key]&version=2'


En el comando anterior se debe reemplazar [API Key] y [Clave secreta] con su clave de API y la clave secreta. Estamos utilizando curl con el fin de conectarse a http://www.monitis.com y acceder a la API para obtener un token de autenticación. El valor de retorno es JSON y devuelve algo similar a:

{"authToken":"3TVQN32TIP1DN71OB4GOML1D7N"}

Cuando el código alfanumérico que será su token de autenticación. Usted puede utilizar su token de autenticación a validar con la API más tarde. Sin embargo, el envío de su clave secreta no es muy seguro, los demás podrían obtener su clave secreta de esta manera. El método más seguro de autenticación es el envío de sus datos mediante POST y GET en lugar de utilizar un RFC Base64 2104-compatible con la firma HMAC para firmar los datos enviados. La firma se envía en el parámetro de control de los datos POST. Para calcular la suma de comprobación que deben seguir estas reglas:

ordenar todos los parámetros en orden alfabético por el nombre (sin el parámetro de control)
concat todos los nombres de los parámetros y valores de esta manera: name1value1name2value2 ...
crear Base64 RFC 2104-compatible con la firma HMAC con clave secreta

La regla final se puede calcular usando openssl:

echo -en “name1value1name2value2” | openssl dgst -sha1 -hmac [Secret Key] -binary | openssl enc -base64

Creación de un monitor personalizado


Con el fin de crear un monitor, usted debe enviar una petición POST a la API. Esta petición POST debe contener varios parámetros: la acción, el nombre, resultsParams, y la etiqueta (ver especificaciones en http://monitis.com/api/api.html#addCustomMonitor ). Vamos a utilizar las siguientes especificaciones para los parametros:

action=addMonitor
name=Login Monitor
resultsParam=user_login:Login Name:logins:3;host:Host Address:hostaddress:3;srv:Service:service:3
tag=loginMonitor

Hay otro tipo de información necesaria para comunicarse con la API:

apikey=[API Key]
timestamp=[Current UTC time]
version=2


Con el fin de crear nuestro nuevo monitor llamado "Monitor de sesión" que utilizaría estos datos, más una suma de comprobación para http://monitis.com/customMonitorApi que es el monitor personalizado url API. Aquí un simple script que lo hará:

-----------Inicio Scripts-----------

#!/bin/bash
# create a Custom Monitor for Monitis
# Be sure to modify the API Key and Secret Key
ACTION="addMonitor"
APIKEY="[API Key]"
NAME="login monitor"
RESULTPARAMS="user_login:Login Name:logins:3;host:Host Address:hostaddress:3;srv:Service:service:3"
TAG="loginMonitor"
TIMESTAMP=`date -u +"%F %T"`
VERSION="2"
SECRETKEY="[Secret Key]"
URL="http://monitis.com/customMonitorApi"

# Create Checksum
CHECKSUM_STR="action"$ACTION"apikey"$APIKEY"name"$NAME"resultParams"$RESULTPARAMS"tag"$ TAG"timestamp"$TIMESTAMP"version"$VERSION
CHECKSUM=$(echo -en $CHECKSUM_STR | openssl dgst -sha1 -hmac $SECRETKEY -binary | openssl enc -base64 )

# Post Data to API
POSTDATA="--data-urlencode "action="$ACTION"" --data-urlencode "apikey="$APIKEY"" --data-urlencode "name="$NAME"" --data-urlencode "resultParams="$RESULTPARAMS"" --data-urlencode "tag="$TAG"" --data-urlencode "timestamp=$TIMESTAMP" --data-urlencode "version="$VERSION"" --data-urlencode "checksum="$CHECKSUM"""

eval "curl ${POSTDATA} $URL"

-----------Fin Scripts-----------

Guarde el script en un archivo llamado monitis_create_monitor.sh, asegúrese de no cambiar el orden de las variables en el cálculo de suma de comprobación, ya que deben estar en orden alfabético. Asegúrese de hacer este fichero ejecutable:

chmod 755 monitis_create_monitor.sh


Ahora ejecute:

./monitis_create_monitor.sh

La salida debe ser similar a esta:

{"status":"ok","data":305}

Esto nos muestra que el monitor se ha creado correctamente y que el id de la pantalla resultante es 305. Si usted va a su cuenta Monitis ahora, usted podrá tener acceso a este monitor. Desde el menú principal, vaya a continuación, en Administrar Monitores -> Monitores y Custom Monitors. Aquí usted debe encontrar el monitor de inicio de sesión. Haga clic en la casilla de verificación junto al título y haga clic en Agregar a la ventana. Una ventana se abrirá a continuación el cuadro de diálogo Custom Monitors. Cierre el cuadro de diálogo de Monitores y verá el nuevo monitor allí. Sin embargo, no se le ha enviado algo.

El envío de datos al monitor personalizado

Con el fin de enviar información a su monitor de encargo, usted debe proporcionar la acción, monitorId, checktime, y los resultados (ver especificaciones en http://monitis.com/api/api.html#addCustomMonitorResult ). La acción es addResult, el monitorId es el id que fue devuelto a nosotros en el ejemplo anterior (si se le olvidó la ID, no te preocupes vuelvalo a hacer), el checktime es la fecha y hora de los datos de los resultados, y los resultados es una cadena de los parámetros y los valores en este formato: name1value1; name2value2

El siguiente script enviar los datos al monitor de su encargo:

-----------Inicio Scripts-----------

# add result to Custom Monitor for Monitis

#!/bin/bash
usage()
{
cat << EOF
usage: $0 options

This script will add results to a Custom Monitis Monitor.

OPTIONS:
-h Show this message
-a api key
-s secret key
-m monitor tag
-i monitor id
-t timestamp (defaults to utc now)
-r results name:value[;name2:value2...]
EOF
}

APIKEY=
VERSION="2"
SECRETKEY=
URL="http://monitis.com/customMonitorApi"
OUTPUT="xml"
MONITOR=
ID=
CHECKTIME=`date -u +"%s"000`
TIMESTAMP=`date -u +"%F %T"`
RESULTS=
SESSIONACTION=

while getopts "ha:s:m:i:t:r:s:" OPTION
do
case $OPTION in

h)
usage
exit 1
;;
a)
APIKEY=$OPTARG
;;
s)
SECRETKEY=$OPTARG
;;
m)
MONITOR=$OPTARG
;;
i)
ID=$OPTARG
;;
t)
CHECKTIME=$OPTARG
;;
r)
RESULTS=$OPTARG
;;
esac
done

if [[ -z $APIKEY ]] || [[ -z $SECRETKEY ]] || [[ -z $MONITOR$ID ]] || [[ -z $RESULTS ]] || [[ -z $CHECKTIME ]]
then
usage
exit 1
fi

# Get id of monitor if not provided
if [[ -z $ID ]]
then
XMLID=$(curl -s "$URL?apikey=$APIKEY&output=$OUTPUT&version=$VERSION&action=getMonitors&tag=$MONITOR" | xpath -q -e /monitors/monitor/id)
ID=${XMLID//[^0-9]/}
fi

# Add monitor result
ACTION="addResult"
# Create Checksum
CHECKSUM_STR="action"$ACTION"apikey"$APIKEY"checktime"$CHECKTIME"monitorId"$ID"results"$ RESULTS"timestamp"$TIMESTAMP"version"$VERSION
CHECKSUM=$(echo -en $CHECKSUM_STR | openssl dgst -sha1 -hmac $SECRETKEY -binary | openssl enc -base64 )
# Post Data to API

POSTDATA="--data-urlencode "action="$ACTION"" --data-urlencode "apikey="$APIKEY"" --data-urlencode "checktime="$CHECKTIME"" --data-urlencode "monitorId="$ID"" --data-urlencode "results="$RESULTS"" --data-urlencode "timestamp=$TIMESTAMP" --data-urlencode "version="$VERSION"" --data-urlencode "checksum="$CHECKSUM"""

eval "curl ${POSTDATA} $URL"

-----------Fin de Scripts-----------

Captura de información en Inicio de sesión

Ahora que tenemos un script para enviar los datos al monitor personalizado, es necesario contar con datos para enviar. Este script podría ejecutarse desde .bashrc o en /etc/bashrc -. Ya que funcionan bien, si supiéramos que no hay ningún usuario que pudiera eliminar sus .bashrc. Puesto que no podemos garantizar que vayamos a utilizar PAM (Pluggable Authentication Module) para controlar cómo y cuándo enviar la información al monitor personalizado. Ya que ningún usuario sin acceso root será capaz de alterar PAM, esta es una manera segura de garantizar la información de acceso. También desde sshd, SFTP, FTP, y la mayoría de otros programas utilizan PAM para la autenticación, este controlará todos los accesos al servidor, no sólo los inicios de sesión de shell.

PAM ofrece muchas opciones y módulos, que se utiliza un módulo llamado pam_script. pam_script le permite ejecutar un script en el inicio de sesión, cerrar la sesión, y/o autorizaciones. Usted debe descargar e instalar pam_script primero:

wget 'http://freshmeat.net/urls/47ddad89e38001dbe0dc50424e36987b' -O libpam-script.tar.gz
tar -xzvf libpam-script.tar.gz
cd libpam-script-x.x.x #x.x.x is the version that you just download, apparent from tar output
make
sudo cp pam_script.so /lib/security/
sudo chown root:root /lib/security/pam_script.so
sudo chmod 755 /lib/security/pam_script.so

pam_script ya está instalado, pero no configurado. Hay tres archivos asociados con pam_script, /etc/security/onsessionopen el fichero /etc/security/onsessionclose y /etc/security/onauth Los dos primeros archivos de trabajo en una sesión y el último será el trabajo para una autenticación exitosa. Dado que queremos controlar auths, vamos a crear el archivo onauth:

-----------Inicio Scripts-----------

#!/bin/sh
# onauth for Monitis Custom Login Monitor
USER=$1
SERVICE=$2
HOST=$PAM_RHOST
/etc/security/monitis_add_data.sh -m loginMonitor -r "user_login:$USER;host:$HOST;srv:$SERVICE"

-----------Fin de Scripts-----------

Este script monitis_add_data.sh, será necesario moverlo a /etc/security y hacer el script ejecutable y onauth por root y se propietario de root:

sudo mv monitis_add_data.sh /etc/security
sudo chmod 700 /etc/security/monitis_add_data.sh
sudo chown root:root /etc/security/monitis_add_data.sh
sudo chmod 700 /etc/security/onauth
sudo chown root:root /etc/security/onauth


Ahora tenemos que configurar PAM para utilizar el módulo de pam_script. Dependiendo de su sistema esto puede variar, pero hay que editar el archivo /etc/pam.d/common-auth o algo similar en el sistema. Usted debe agregar la siguiente línea:

# require the scripts to run at auth
auth required pam_script.so runas=root expose=rhost


Aquí le estamos diciendo módulo que se ejecute como root y exponer la variable rhost, que contendrá la información del host remoto que utilizamos en la secuencia anterior con la variable $PAM_RHOST

Prueba del monitor

Ahora tenemos una configuración que registra todos los nombres de usuario, hosts remotos, y el servicio se registra en nuestro Custom Monitor. Inténtelo, SSH a tu máquina varias veces. Usted verá los valores aparecen en su cuenta del Custom Monitor.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías