jueves, 10 de septiembre de 2015

Nagios 4 en Debian 8

En este post explicaré como instalar Nagios 4.
Es muy importante tener en cuenta con que versión de S.O, de Nagios y pluggins se van a escoger, no todas las últimas versiones acaban instalándose familiarmente. Aquí explicaré una combinación que si funciona.

Versión de Nagios: nagios-4.0.4
Versión de Pluggins para Nagios: nagios-plugins-2.0.3
Versión de Debian: Debian GNU/Linux 8

Se parte de una instalación básica del S.O. sin entorno gráfico.

[] Opcional. Para no tener problemas con las descargas de paquetes yo he añadido los siguientes servidores de repositorio en /etc/apt/sources.list

# jessie-updates, previously known as 'volatile'
deb http://ftp.es.debian.org/debian/ jessie-updates main
deb-src http://ftp.es.debian.org/debian/ jessie-updates main

deb http://ftp.us.debian.org/debian/ jessie main
deb-src http://ftp.us.debian.org/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://ftp.us.debian.org/debian/ jessie-updates main

deb-src http://ftp.us.debian.org/debian/ jessie-updates main

[] Actualizo y upgrado el sistema

apt-get update
apt-get upgrade

[] Nos conectamos al servidor usando SSH. Si no tememos instalado el SSH habría que:

sudo apt-get install openssh-server

[] Para trabajar con comodidad nos elevaremos como usuario root:

sudo su -



[] Instalaremos los siguientes paquetes:


sudo apt-get install build-essential php5-gd wget libgd2-xpm-dev libapache2-mod-php5 apache2-utils daemon
[] Tenemos que crear un usuario "nagios" y un grupo "nagcmd"
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www-data

[] Creamos una carpeta temporal para descargarnos el Nagios. Nos descargamos el Nagios y lo descomprimimos

mkdir tmp
cd tmp/
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.4.tar.gz
tar -zxvf nagios-4.0.4.tar.gz
cd /tmp/nagios-4.0.4/



[] Compilamos el Nagios con los siguientes parámetros

./configure --with-nagios-user=nagios --with-nagios-group=nagios
Nos dará este resultado
make all
make install
make install-init
make install-config
make install-commandmode

make install-webconf
Si da error install-webconf -> sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf

make install-exfoliation

[] Ahora configuraremos el interface de Nagios, crearemos el usuario "nagiosadmin" con el comando: 
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Nos pedirá que introduzcamos contraseña:

[] Activamos el modulo CGI y reiniciaremos los servicios web de apache2

a2enmod cgi
service apache2 restart

[] Instalaremos los Plugins de Nagios. Procederemos a su descarga
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

Descomprimiremos el paquete descargado:

tar -zxvf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3/
[] Compilaremos los plugins de Nagios

./configure --with-nagios-user=nagios --with-nagios-group=nagios


make
 make install

[] Verificaremos que no tenemos errores en la parametrización de Nagios

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


[] Arrancamos el servicios de Nagios si no ha encontrado errores.

/etc/init.d/nagios start
Si nos sale el siguiente error:
Lo podemos solucionar de la siguiente manera:
               - Hacer una copia de /etc/init.d/skeleton" en "/etc/init.d/nagios" de la siguiente manera: cp /etc/init.d/skeleton /etc/init.d/nagios

                - Editar el fichero con el nombre "nagios" añadiendo los siguientes parámetros:


DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock

 Si hay algún otro parámetro se comenta poniendo el caracter # al principio de la línea



Le damos permisos de ejecución al fichero que hemos creado: 

chmod +x /etc/init.d/nagios
y arrancamos Nagios
/etc/init.d/nagios start
[] Para que arranque Nagios automáticamente cada vez que iniciemos el sistema:
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
[] Para probarlos desde un navegador poner http://IPdelamaquinaNagios/nagios. 

GoN Sep2015


jueves, 27 de agosto de 2015

Planificar la ejecucion de un PS y exportar automaticamente a un Excel el resultado

PS Script  + Scheduler + Excel

Para el ejemplo que voy a poner voy a exportar todos los COMPUTERS de mi AD con PS a un fichero CSV que se actualizará automáticamente en una hoja de Excel. Como dicen que un ejemplo vale más que mil palabras, allí voy:

Creamos un script

Prepara script para exportar los COMPUTERS a un fichero de texto:


[1] Crearé un fichero llamado exportCOMPUTER_AD.PS1 con el contendido:

$CSV = "C:\temp\exportCOMPUTERS_AD.csv"

#SCRIPT MAIN
clear
import-module activedirectory
Get-ADComputer -Filter * -Property * | Select-Object Name,DNSHostName,IPv4Address,Description,admindescription,CanonicalName,distinguishedName,operatingsystem,operatingsystemVersion,OperatingSystemServicePack | Export-CSV $CSV -NoTypeInformation -Encoding UTF8

Planificamos la tarea


[2] "Schedulamos" / Planificamos la ejecución del script exportCOMPUTER_AD.PS1 



Los pasos serán los siguiente:

-2.1 Create New Tack...



-2.1 En la pestaña General recomiendo dejarlo de la siguiente manera:



-2.3  En la pestalla Triggers


Muy importante el ENABLED



-2.4 Vamos a la pestaña Actions, donde pondremos el script que hemos creado antes:


En argumentos hay puesto: -file "C:\scripts\exportCOMPUTERS_AD.ps1"

-2.5 El resto de parámetros lo tengo por defecto.

Ahora vamos a trabajar con el documento EXCEL

Abrimos el Excel y vamos a la pestaña "DATOS" al icono "Conexiones"


Le damos a "Agregar..."



Buscamos nuestro fichero C:\temp\exportCOMPUTERS_AD.csv



Importamos la información una única vez





Modificamos las Propiedades de la nueva conexión



Asociamos nuestro fichero.csv (C:\temp\exportCOMPUTERS_AD.csv) con nuestra hoja de Excel



El cursor recomiendo que este el la celda A1



Una manera de forzar la actualización manualmente.



Esto tiene infinidad de posibilidades, si hace lo mismo con el DNS, WSUS,  antivirus etc... y luego desde el Excel verificas todas esa información se puede tiene un inventario REAL o por lo menos localizar información de nuestro AD que ya no debería estar.
GoN Agosto 2015

miércoles, 29 de julio de 2015

PS. Query Computers




Hoy nos toca trabajar con estaciones de trabajo, se me ocurren muchas maneras de sacarle provecho a lo que a continuación explicaré y nos dará una visión y un enfoque muy profesional en el momento de trabajar cuando nos pidan listados, tengamos que localizar algún hosts, seleccionar grupos de hosts con ciertas características,etc ...





[1] Para asegurarnos que vamos a poder ejecutar los comando correctamente debemos abrir una consola de PS como usuario administrador e imporatar el modolo de AD con el siguiente comado:
import-module activedirectory


[2] Antes de seguir recomendaría mirar la ayuda de este comando, donde veremos un monton de información y ejemplos útiles: "Get-Help Get-ADComputer -Full"  si queremos que nos la muestre con pausas podemos añadir "| more" como en la mayora de comados y podremos leerla con pausas Get-Help Get-ADComputer -Full | more.


[3] Si queremos ver todas las características de este tipo de objeto de la manera más sencilla podría ser: Get-ADComputer -Filter * -Property *.  Si solo lo queremos ver de algún computer/s en concreto podemos usar filtros Get-ADComputer -Filter 'objectclass -eq "PC0001"' -Property *


También podemos hacer uso del query Get-ADComputer -Filter 'Name -like "PC*"' -Properties IPv4Address | FT Name,DNSHostName,IPv4Address -A donde nos mostrará una lista de todos los computers que empiecen con "PC"


[4] Si solo queremos que nos muestre alguna propiedad en concreto añadiremos el "-Filter * -Properties propiedad1, propiedad2, ...propiedadX" por ejemplo:  Get-ADComputer -Filter * -Property Name,DNSHostName,IPv4Address | Select-Object Name, DNSHostName, IPv4Address 


[5] Para direccionar todas esta información en columnas a un fichero de texto en formato CSV podemos hacer lo siguiente:

Get-ADComputer -Filter * -Property * | Select-Object Name, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion | Export-CSV c:\AllWindows.csv -NoTypeInformation -Encoding UTF8



[6] Otra manera de sacar la información por pantalla un poco más elegante: Get-ADComputer -Filter * -Property * | Format-Table Name, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion -Wrap –Auto | Export-CSV c:\AllWindows.csv 


[7] Si queremos acotar más la búsqueda y limitar a una OU en concreto podemos hacer lo siguiente:
Get-ADComputer -LDAPFilter "(name=*W1*)" -SearchBase "CN=Computers, DC=MiDominio, DC=local" | Format-Table 



[8] Si lo que nos interesa es filtrar por versión de sistema operativo, una forma podría ser

Para servidores:

Get-ADComputer -Filter {OperatingSystem -Like "Windows Server*"} -Property * | Format-Table Name, IPv4Address, OperatingSystem,OperatingSystemServicePack -Wrap -Auto


Para wokstations:

Get-ADComputer -Filter {OperatingSystem -NotLike "*Server*"} -Property * | Format-Table Name, IPv4Address, OperatingSystem,OperatingSystemServicePack -Wrap -Auto

También lo podemos hacer de la siguiente manera:

Miramos en la propiedad "OperatingSystemVersion" el valor y la en "OperatingSystem" vemos la descripción:
Nos saldrán estos valores

Con lo que podemos hacer la siguiente búsqueda: Get-ADComputer -Filter {OperatingSystemVersion -ge "6.2"} -Property * | Format-Table Name,OperatingSystem,OperatingSystemVersion -Wrap -Aut




Documento de referencia: http://blogs.technet.com/b/askds/archive/2010/02/04/inventorying-computers-with-ad-powershell.aspx

GoN. Julio 2015