Generar gráficas con Pandora FMS


Pandora FMS (FMS viene de Flexible Monitoring System).

Pandora FMS es una herramienta de monitorización que no sólo mide si una parámetro está bien o mal. Pandora FMS puede cuantificar el estado (bien, mal y valores intermedios) o almacenar un valor (numérico o alfanumérico) durante meses si es necesario.

Pandora FMS (FMS viene de Flexible Monitoring System) es una aplicación de monitorización para vigilar todo tipo de sistemas y aplicaciones. Pandora FMS permite conocer el estado de cualquier elemento de sus sistemas de negocio. Pandora FMS vigila su hardware, su software, sus aplicaciones y por supuesto, su Sistema Operativo. Pandora FMS es capaz de detectar una interfaz de red que se ha caído, así como el movimiento de cualquier valor del NASDAQ.

En esta URL podemos ver el comparativo de NMS.

El sitio oficial de Pandora FMS ofrece documentación oficial.

En este ejemplo se mostrara como editar estados de:
1- Espacio en disco.
2- Memoria usada.
3- Utilización de CPU.

1- Espacio en disco.

Cuando se crea el modulo correctamente para monitorear el disco (Este viene por defecto en el agente de Pandora FMS, visite la documentación oficial para obtener mas información), en el caso de un modulo de Microsoft Windows seria algo como esto:

# Free space on disk C:
module_begin
module_name FreeDiskC
module_type generic_data
module_freepercentdisk C:
module_description Free space on drive C:
module_end




Se crearan 2 estados; la primera sera lanzada cuando consideremos que el estado esta en "Warning" y la segunda cuando consideremos el estado en "Critical".

Nos ubicamos sobre el modulo en este caso el del disco.




Como se observa hay 2 estado "Warning status" y "Critical status"

Hay que tener cuidado con el modulo, entendiendo la forma en que este nos informa, en este caso es
Espacio libre y no Espacio utilizado.

Ejemplo Porcentaje Espacio libre del disco, en este caso tiene el 67% libre.

Se usara estos valores para este caso:

a- Cambiara el estado de este modulo en "Warning status",cuando quede disponible Mínimo 11% y Máximo 30%.

b- Cambiara el estado de este modulo en "Critical status",cuando quede disponible Mínimo 0% y Máximo 10%.



2- Memoria usada.

Al igual que el modulo anterior lo datos que obtenemos es el Porcentaje disponible del modulo y no el uso del modulo.

En el caso de un modulo de Microsoft Windows seria algo como esto:

# Free Memory
module_begin
module_name FreeMemory
module_type generic_data
module_freepercentmemory
module_description Amount of free memory.
module_end



Se crearan 2 estados; la primera sera lanzada cuando consideremos que el estado esta en "Warning" y la segunda cuando consideremos el estado en "Critical".

Ejemplo Porcentaje Memoria libre, en este caso tiene el 26% libre.

Se usara estos valores para este caso:

a- Cambiara el estado de este modulo en "Warning status",cuando quede disponible Mínimo 21% y Máximo 40%.

b- Cambiara el estado de este modulo en "Critical status",cuando quede disponible Mínimo 0% y Máximo 20%.



3- Utilización de CPU.

En cambio este modulo es lo contrario de los anteriores, ya que se mide por utilización del módulo.

En el caso de un modulo de Microsoft Windows seria algo como esto:

# CPU usage percentage
module_begin
module_name CPUUse
module_type generic_data
module_cpuusage all
module_description CPU# usage
module_end



Se crearan 2 estados; la primera sera lanzada cuando consideremos que el estado esta en "Warning" y la segunda cuando consideremos el estado en "Critical".

Ejemplo del uso de la CPU en este caso se usa el 0%

Se usara estos valores para este caso:

a- Cambiara el estado de este modulo en "Warning status",cuando el Máximo sobrepase el 70%.

b- Cambiara el estado de este modulo en "Critical status",cuando el Máximo sobrepase el 90%.

Bloquear sitios por horario con Squid


Se configurara Squid de tal forma que filtre contenido Web en horario especifico.

1- Solo se permitirá el acceso a ciertas paginas Web.
  • (Paginas permitidas)

  • 2- Solo se permitirá el acceso a la web en un horario especifico.
  • (Horario establecido)

  • 3- Solo se permitirá el acceso a ciertos sitios en horario establecido.
  • (Paginas tipo ocio en horario de descanso).

  • Sistema Operativo: Debian Squeeze
    Version de Squid: Version 3.0.STABLE


    Editamos el archivo de configuración del Squid, ubicando las Lista de Control de Acceso
    #vim /etc/squid3/squid.conf
    ===========================
    acl red_local src 192.168.1.0/255.255.255.0
    acl paginas_permitidas url_regex "/etc/squid3/paginas_permitidas"
    acl paginas_descanso url_regex "/etc/squid3/paginas_descanso"
    acl horario_descanso time MTWHF 12:00-13:00
    acl horario_laboral time MTWHF 06:00-20:00


    Ahora se debe crear los archivos paginas_permitidas y paginas_descanso, estos archivos contienen los sitios a los que permitiremos el acceso.

    Después nos ubicamos en las Reglas de Control de Acceso
    ===========================
    http_access deny !red_local
    http_access deny !horario_laboral
    http_access allow paginas_permitidas
    http_access allow paginas_descanso horario_descanso


    Hemos definido que:

    1- paginas_permitidas: Son los sitios a los cuales se podrán visitar sin ningún tipo de restrincion.

    2- paginas_descanso y horario_descanso: Solo se podrá visitar ciertos sitios en horario establecido.

    Con esto se definen los 3 Items que se mencionaron anteriormente.

    Las Lista de Control de Acceso quedaran de esta forma:
    Y las Reglas de Control de Acceso quedaran así
    De esta forma solo se permitirá el acceso los días Lunes, Martes, Miércoles, Jueves y Viernes a URLs definidas por nosotros y solo se podrán visitar ciertas paginas en horario especifico.

    SNMP sobre Debian Squeeze


    Según la Wikipedia SNMP es un protocolo de la capa de aplicación que facilita el intercambio de información de administración entre dispositivos de red. Es parte de la familia de protocolos TCP/IP. SNMP permite a los administradores supervisar el funcionamiento de la red, buscar y resolver sus problemas, y planear su crecimiento.

    En este caso se instalara el servicio SNMP sobre Debian Squeeze.
    Procedemos a instalar el Demonio SNMPD con:


    #apt-get install snmp snmpd

    Después de descargar el Servicio editamos el archivo ubicamos esta línea y quitamos la dirección de Loopback, con el fin que el servicio escuche en todas las interfaces.

    #vim /etc/default/snmpd
    =======================
    SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
    =======================
    Podemos observar que; después de reiniciar el Servicio ahora no solo escucha por la interfaz Loopback

    #netstat -ano | grep ":162"
    ===============
    udp 0 0 0.0.0.0:162 0.0.0.0 off (0.00/0/0)

    #netstat -ano | grep ":161"
    ===============
    udp 0 0 0.0.0.0:161 0.0.0.0 off (0.00/0/0)


    Procedemos a configurar el archivo principal del servicio SNMP
    #vim /etc/snmp/snmpd.conf
    =====================================================================
    com2sec local localhost public
    com2sec localnet 192.168.1.0/24 public

    group MyRWGroup v1 local
    group MyRWGroup v2c local
    group MyRWGroup usm local

    group MyRWGroup v1 localnet
    group MyRWGroup v2c localnet
    group MyRWGroup usm localnet

    view all included .1 80
    view system included .iso.org.dod.internet.mgmt.mib-2.system

    access MyRWGroup "" any noauth exact all all none
    =====================================================================

    En donde:
    ====================
    com2sec local localhost public
    com2sec localnet 192.168.1.0/24 public

  • Se crea ACL, que servirán para definir quien tendrá acceso hacia el servicio snmpd, estos parámetros se configuran según la necesidad que tenga el admin de red.

  • ====================
    group MyRWGroup v1 local
    group MyRWGroup v2c local
    group MyRWGroup usm local

    group MyRWGroup v1 localnet
    group MyRWGroup v2c localnet
    group MyRWGroup usm localnet

  • Se asocia el grupo a la ACL creada con anterioridad, de esta manera tanto la ACL localnet como local se le asignan los permisos de Escritura y Lectura, estos parámetros se configuran según la necesidad que tenga el admin de red.

  • ====================
    view all included .1 80
    view system included .iso.org.dod.internet.mgmt.mib-2.system

  • Se especifican las ramas que se van a permitir ver a través del servicio. (Si se lee la documentación acerca de este protocolo entenderá este paso).

  • ====================
    access MyRWGroup "" any noauth exact all all none
  • Se especifica los permisos que tiene los grupos credos en esta caso localnet y localhost

  • Opcional se puede agregar estas dos lineas:

  • syslocation Locación del equipo (Preferiblemente el FQDN de la maquina)
    syscontact Correo electrónico del encargado del sistema

  • Pruebas:

  • 1- Instalamos el Software SCLI
    #apt-get install scli
    Copiamos en una terminal
    ===========
    #scli IP_del_cliente_SNMP Nos aparecerá la consola de SCLI, con este monitoreamos atreaves de SNMP
    Copiamos dentro de la consola monitor
    Para ver mas información atraves de SNMP pulsamos la tecla "q"

    2- Con la herramienta nativa de SNMP SNMPWALK.
    #snmpwalk -v 1 192.168.1.254 -c public
    SNMPWALK es usada para leer todos los valores de un agente SNMP especificado por el hostname. Community especifica la comunidad lectora para el agente.

    Instalación de OCS Inventory


    Según la Wikipedia OCS inventory es.

    Para la instalación de OCS Inventory es necesario tener
    LAMP instalado, procedemos a instalar los siguientes paquetes.
    #apt-get install apache2 php5 libapache2-mod-php5

    Se usara el motor de Bases de Datos MySQL.
    #apt-get install mysql-server mysql-client php5-mysql (Durante la instalacion nos solicitorá la contraseña del admon de la BD).

    Por último procedemos a instalar PhpMyAdmin.

    #apt-get install phpmyadmin

    Ahora procedemos a instalar OCS Inventory.
    #apt-get install ocsinventory-server ocsinventory-reports (Nos aparecerá un asistente para la configuración de OCS Inventory, configurar OCS Inventory con "dbconfig-common" señalamos “Si”)

    Durante el proceso de instalación se solicitara la contraseña del admon de la Bases de Datos.

    Antes de ingresar a la consola de OCS primero debemos cambiar la contraseña del usuario admin, realizamos esto con:
    #htpasswd /etc/ocsinventory/htpasswd.setup admin

    Ahora accedemos con un navegador http://ip_del_server/ocsreports, nos aparecerá un pequeño asistente para terminar la instalación de OCS.

    -En la primera pagina:
    =================================
    MySql login: ocs
    MySql password: **********
    MySql Hostname: localhost
    =================================

    -Luego se nos solicita la contraseña que cambiamos ahora.
    -Finalizamos instalando la Base de Datos con clic en
    submit query.

    Para ingresar a la consola se nos solicitara unas credenciales ingresamos usuario admin contraseña admin.




    MultiTail


    Aveces es necesario ejecutar varias terminales para poder visializar Logs de servicios o del sistema.

    Por esta razon se ha creado MultiTail

    #apt-get install multitail

    Y para visualizar varios Logs en una sola terminal ejecutamos:

    #multitail /var/log/Losgs1.log /var/log/Logs2.log


    Integrar un equipo Linux a Active Directory


    El propósito del siguiente es integrar un equipo Linux con Active Directory, para realizar esto debemos cumplir con los siguientes requerimientos:

    1- Se debe tener instalado correctamente Active Directory.
    2- En el equipo Linux debe de tener instalado el demonio Samba (mas actual).
    3- Se debe contar con conexión a Internet, si para llegar a la nube primero se debe pasar
    por un Firewall, verificar que este no bloquee el puerto 123 de NTP.

    La configuración con la que contamos es la siguiente:
    Obviamente debe de existir comunicación entre el Windows y Linux, el A.D debe resolverle al
    Linux las zonas del DNS.

    Ahora descargamos los siguientes paquetes, con:

    #apt-get install samba smbclient winbind krb5-user krb5-config

    Luego nos ubicamos en /etc/hosts y agregamos esto:

    127.0.1.1 ad.prueba.local ad
    192.168.159.130 linux.prueba.local linux

    Ojo, agregamos estas líneas pues me sirvieron, recordemos que prueba.local es el dominio y
    que la dirección IP 192.168.159.131 es la dirección IP del equipo que tiene instalado Active
    Directory.

    [libdefaults]
    default_realm = PRUEBA.LOCAL
    clockskew = 300

    [realms]
    PRUEBA.LOCAL = {
    kdc = 192.168.159.131
    default_domain = prueba.local
    admin_server = 192.168.159.131
    }
    prueba.local = {
    kdc = 192.168.159.131
    default_domain = prueba.local
    admin_server = 192.168.159.131
    }
    prueba = {
    kdc = 192.168.159.131
    default_domain = prueba
    admin_server = 192.168.159.131
    }

    [logging]
    kdc = FILE:/var/log/krb5/krb5kdc.log
    admin_server = FILE:/var/log/krb5/kadmind.log
    default = SYSLOG:NOTICE:DAEMON

    [domain realm]
    .prueba = prueba
    .prueba.local = PRUEBA.LOCAL

    [appdefaults]
    pam = {
    ticket_lifetime = 1d
    renew_lifetime = 1d
    forwardable = true
    proxiable = false
    retain_after_close = false
    minimum_uid = 0
    try_first_pass = true
    }
    Ahora creamos un ticket de Kerberos, ejecutando lo siguiente, acá nos pedirá la contraseña del
    administrador del dominio:

    #Kinit Administrador@prueba.local

    Ahora sigue Samba, otra vez recomiendo, hacer el backup del archivo original, luego borramos
    el contenido del archivo smb.conf y agregamos estas líneas:

    [global]
    security = ADS
    netbios name = debian
    realm = PRUEBA.LOCAL
    password server = ad.prueba.local
    workgroup = PRUEBA
    log level = 1
    syslog = 0
    idmap uid = 10000-29999
    idmap gid = 10000-29999
    winbind separator = *
    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes
    template homedir = /home/%D/%U
    template shell = /bin/bash
    client use spnego = yes
    domain master = no
    server string = linux como cliente de AD
    encrypt passwords = yes

    ##compartir el home del usuario solo para él cuando se encuentre en
    otro equipo de la red

    [homes]
    comment = Home Directories
    valid users = %S
    browseable = No
    read only = No
    inherit acls = Yes

    [profiles]
    comment = Network Profiles Service
    path = %H
    read only = No
    store dos attributes = Yes
    create mask = 0600
    directory mask = 0700

    ##compartir una carpeta para todos los usuarios
    [users]
    comment = All users
    path = /home/samba/
    read only = No
    inherit acls = Yes
    veto files = /aquota.user/groups/shares/

    ##compartir carpeta solo para el usuario
    [PEPE]
    comment = Prueba con usuario del dominio PEPE
    inherit acls = Yes
    path = /home/pepe/
    read only = No
    available = Yes
    browseable = Yes
    valid users = prueba*pepe

    ¡Creo que no hay que explicar nada de cómo se comparte archivos con Samba… y las opciones
    nuevas no es si no leerlas son fáciles de comprender!.

    Después se reinicia Samba y se ejecuta el comando testparm, el cual no da un resumen de la
    configuración de Samba y el rol que este cumple (PDC, Grupo de trabajo, miembro de dominio
    etc.)

    #/etc/init.d/samba restart && testparm

    Ahora agregamos el Linux al dominio, con:

    #net ads join -S ad.pruebas.local -U administrador

    Nos apareció esto cierto!! Fallamos.

    Administrador's password:
    [2009/05/31 16:58:33, 0]
    libsmb/cliconnect.c:cli_session_setup_spnego(785)
    Kinit failed: Clock skew too great
    Failed to join domain!

    Lo que pasa es que Kerberos es muy exigente con la hora lo cal de nuestro Linux si no nos
    apareció esto no hay por qué preocuparse, para arreglar esto digitamos.

    #ntpdate pool.ntp.org

    Esta línea significa que para poder gestionar la fecha y hora en el servidor de manera correcta
    con respecto a los servidores de hora en Internet, debemos de tener instalado el demonio
    NTP.

    Después de hacer esto nos debería unir el Linux al dominio, y si no es porque algo fallo en la
    configuración de Kerberos.

    Para poder resolver nombres de usuarios y grupos del dominio editamos “/etc/nsswitch.conf”,
    nos debe de quedar igual a esto:

    passwd: files winbind
    group: files winbind
    shadow: files winbind
    hosts: files dns winbind

    Con estas líneas los usuarios y los grupos pueden ser resueltos.
    Reiniciamos Winbind.

    #/etc/init.d/winbind restart

    Para ver si nuestro Linux está bien integrado al dominio, escribimos.

    #net rpc testjoin
    ---------
    Join to 'PRUEBA' is OK

    Ahora par ver información del dominio.

    #net ads info
    -----------
    LDAP server: 192.168.159.131
    LDAP server name: ad.prueba.local
    Realm: PRUEBA.LOCAL
    Bind Path: dc=PRUEBA,dc=LOCAL
    LDAP port: 389
    Server time: dom, 5 may 2009 16:59:04 MDT
    KDC server: 192.168.1.254
    Server time offset: 11

    Ahora si queremos ver las características del usuario como grupo a que pertenece, SID,
    Dominio a que pertenece etc.

    #net rpc info -U Administrador
    -----------
    Password:
    Domain Name: PRUEBAS
    Domain SID: S-1-5-21-4-405764553-56874023-5698031759
    Sequence number: 96
    Num users: 10
    Num domain groups: 9
    Num local groups: 21

    ¡Obviamente no nos tiene que aparecer estos mismos resultados!
    Para verificar que el demonio Winbind esté funcionando correctamente digitamos.

    #wbinfo -u" Lista usuarios del dominio.
    #wbinfo -g" Lista grupos del dominio.
    #getent passwd" Muestra usuarios locales y del dominio.
    #getent group" Muestra grupos locales y del dominio.

    Si todo esto está funcionando estamos por buen camino.
    Aun mejor si queremos que los usuarios de Active Directory, se logueen en la maquina Linux,
    no es si modificar el PAM, ¡ojo si no se configura bien no podremos ingresar al Linux!,
    acuérdense del Mandriva Directory Server…… Lo que haremos es lo siguiente comentamos las
    líneas que no lo están en los siguientes archivos.

    1- Editamos /etc/pam.d/common-account

    Account sufficient pam_winbind.so
    account required pam_unix.so try_first_pass

    2- Editamos /etc/pam.d/common-auth

    auth sufficient pam_winbind.so
    auth required pam_unix.so nullok_secure try_first_pass

    3- Editamos /etc/pam.d/common-password

    password sufficient pam_winbind.so
    password required pam_unix.so nullok obscure min=4 max=8 md5try_first_pass

    4- Editamos /etc/pam.d/common-session

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
    session sufficient pam_winbind.so
    session required pam_unix.so try_first_pass

    El modulo pam_winbind.so le indica a PAM que obtenga los usuarios y grupos de Winbind. Y
    el modulo pam_mkhomedir.so nos crea el directorio home del usuario en caso de no existir.

    Creamos el directorio /home/PRUEBA (En mayúscula y recuerden este se crea con el nombre NetBIOS del dominio), acá se alojaran el home de los usuarios.

    Ahora las pruebas!
    Recordemos que habíamos creado una sesión en Samba que decía:

    [PEPE]
    comment = Prueba con usuario del dominio PEPE
    inherit acls = Yes
    path = /home/pepe/
    read only = No
    available = Yes
    browseable = Yes
    valid users = prueba*pepe

    1-Entonces debe existir este directorio /home/pepe/ y /home/samba/
    2-En el Active Directory debe existir el usuario pepe.
    3-Ahora nos logueamos con pepe en la maquina Linux, nos saldrá algo como esto:
    1- Desmontamos las unidades de los clientes Windows con el siguiente comando desde CMD.
    2- Accedemos al recurso compartido por este usuario (pepe), digitando en ejecutar o en el
    Explorador de Windows \\linux o \\192.168.159.130.
    3- Como vemos solo podemos ingresar al directorio del usuario.

    Si tratamos de ingresar a otro directorio de otro usuario saldrá una ventana de login.

    Virtual Host en LigHTTPD


    Se configurará LigHTTPD, con soporte para albergar varios sitios Webs, ya sea por IP, nombre o puerto.

    1- Se procede a la descarga del software necesario.
    #apt-get install lighttpd

    2- Editamos el archivo principal de LigHTTPD, y al final agregamos.
    #vim /etc/lighttpd/lighttpd.conf

    3- Host Virtual por puerto:
    $SERVER["socket"] == ":44" {
    server.document-root = "/var/www/web1"
    }

    En /var/www/web1, es en donde se encuentra el index.html, que cargara este sitio.
    4- Host Virtual por Encabezado.
    $HTTP["host"] == "www.home.local" {
    server.document-root = "/var/www/web2/"
    }

    $HTTP["host"] == "prueba.home.local" {
    server.document-root = "/var/www/web3/"
    }

    5- Directorio Virtual.
    $HTTP["host"] == "www.home.local" {
    alias.url = ("/directorio_virtual" => "/var/www/directorio_virtual")
    }

    Nota:
    Recordemos que debemos tener un Server DNS, el cual nos resuelve los nombres FQND, de los sitios.
     
    |  Esdebian Foro El que sabe sabe, no como el que quiere aprender!