martes, 25 de noviembre de 2008

Setting Up DHCP Server SuSE

Fichero de configuración de un DHCP Server /etc/dhcpd.conf


option domain-name-servers 192.168.4.2, 192.168.2.1;
option nis-domain "tuto.edu";
option nis-servers 192.168.4.4;
option lpr-servers 192.168.4.3;

ddns-updates on;
ddns-update-style interim;
ignore client-updates;

#ddns-domainname "tuto.edu";
#ddns-rev-domainname "in-addr.arpa";

subnet 192.168.1.0 netmask 255.255.255.0 {    

range 192.168.1.100 192.168.1.150;
zone multiusos.tuto.edu. {primary 192.168.4.2; }
zone 1.168.192.in-addr.arpa. {primary 192.168.4.2; }
option domain-name "multiusos.tuto.edu";
option routers 192.168.1.1;
default-lease-time 14400;
max-lease-time 172800;
ddns-domainname "multiusos.tuto.edu";
ddns-rev-domainname "multiusos.tuto.edu"; }


subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.190;
zone alumnos.tuto.edu. {primary 192.168.4.2;}
zone 2.168.192.in-addr.arpa. {primary 192.168.4.2;}
option domain-name "alumnos.tuto.edu";
option routers 192.168.2.1;
default-lease-time 14400;
max-lease-time 172800;
ddns-domainname "alumnos.tuto.edu";
ddns-rev-domainname "alumnos.tuto.edu


COMENTARIOS SOBRE LAS ENTRADAS

Veamos en primer lugar estas cuatro primera líneas:
option domain-name-servers 192.168.4.2, 192.168.2.1;
option nis-domain "tuto.edu";
option nis-servers 192.168.4.4;
option lpr-servers 192.168.4.3;

Se está indicando, según la línea lo siguiente: las direcciones de los servidorde impresión. Estas opciones son generales y comunes para todas las redes.

Continuando con la lectura del fichero aparece:
ddns-updates on;
ddns-update-style interim;
ignore client-updates;

Si se desea que se actualicen los ficheros de zona del DNS cuando a una red se le estén asignando direcciones de red dinámicas, de tal manera que los equipos del dominio y sus direcciones IP concuerden con su nombre máquina la opción ddns-updates debe de estar a on.




subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
zone multiusos.tuto.edu. {primary 192.168.4.2; }
zone 1.168.192.in-addr.arpa. {primary 192.168.4.2; }
option domain-name "multiusos.tuto.edu";
option routers 192.168.1.1;
default-lease-time 14400;
max-lease-time 172800;
ddns-domainname "multiusos.tuto.edu";
ddns-rev-domainname "multiusos.tuto.edu";
}

En primer lugar se especifica usando subnet y netmask, la red que va a ser despachada con direcciones IP. De entre todas las posibles direcciones IP se elige a través de un rango cuales son las que las máquinas van a poder adquirir dinámicamente. No estaríamos configurando bien el fichero si no asociáramos las zonas creadas en la configuración del DNS con la red 192.168.1.1,
en este caso. Para especificar el dominio predeterminado de la red usamos option domain-name. Los paquetes de datos que no pueden ser entregados en la red local porque su dirección IP así lo determina serán enviados a donde lo indique option routers. Importantes son las palabras
clave ddns-domainname y ddns-rev-domainname, pues sin ellas sería imposible la actualización en el servidor DNS ya que indican sobre que dominio se debe configurar de forma dinámica, tanto en su versión directa como inversa.

ROUTERS COMO RELÉ

Que un router haga de relé significa que cuando un servidor DHCP intenta "repartir" direcciones a otras computadoras que están en una red distinta a la del propio servidor, se permita que los paquetes relacionados con esto puedan "pasar" por el router del que estamos hablando, y esas direcciones sean asignadas.

Para que un router también sea relé es obligatorio instalar un paquete en concreto (dhcp-relay),
además de realizar otras operaciones; estas son modificaciones en los ficheros que son enumerados a continuación.


/etc/sysconfig/dhcrelay


CONTENIDO DEL FICHERO

DHCRELAY_INTERFACES="eth0 eth1"

## Type: string
## Default: ""
## ServiceRestart: dhcrelay
#
# DHCP servers to be used by DHCP relay agent
# (separated by spaces, e.g. "192.168.0.11 191.168.0.12")
#
DHCRELAY_SERVERS="192.168.4.1"

## Type: string
## Default: ""
## ServiceRestart: dhcrelay
#
# Additional options
# Example: "-c 8"
#
DHCRELAY_OPTIONS=""


COMENTARIOS SOBRE LAS ENTRADAS

Hay que "meter" las interfaces donde se quiere que escuche el relé DHCP y la/s IP/s de los servidores DHCP, si no haces esto, puedes arrancar el relé directamente ejecutando /usr/sbin/dhcrelay, pero el script de /etc/init.d no funciona.


/proc/sys/net/ipv4/ip_forward ó /etc/sysconfig/sysctl

Podemos hacer dos cosas, o editamos cada vez que sea necesario el primer fichero escribiendo un '1' o hacemos lo que en el apartado del /etc/sysconfig/sysctl se comenta.


COMENTARIOS SOBRE LAS ENTRADAS


Poner el forwarding a 1 con la instrucción:

echo 1 > /proc/sys/net/ipv4/ip_forward


CONTENIDO DEL FICHERO /etc/sysconfig/sysctl

IP_DYNIP="no"
IP_TCP_SYNCOOKIES="yes"
IP_FORWARD="yes"
IPV6_FORWARD="no"
IPV6_PRIVACY=no
DISABLE_ECN="yes"
ENABLE_SYSRQ="no"

COMENTARIOS SOBRE LAS ENTRADAS

Poner IP_FORWARD="yes" para que en el inicio el fichero del apartado anterior tenga siempre puesto por defecto
un uno.


















lunes, 24 de noviembre de 2008

Setting Up SNMP y Nagios

Para instalar y configurar el SERVIDOR snmpd en Debian Etch hay que instalar los siguientes paquetes:


snmpd,snmp,tkmib ( browser gtk de OID´s )


Después, los ficheros y directorios a tener en cuenta son:

/etc/snmp/snmpd.conf
/etc/default/snmpd
/usr/share/snmp/mibs/.index
/usr/share/snmp/mibs/


Metemos el servicio snmpd para que arranque automaticamente cada vez que arrancamos la máquina:

$ update-rc.d snmpd defaults


Para /etc/snmp/snmpd.conf la configuración utilizada es la siguiente:


# Listas de control de acceso (ACL)
## sec.name source community (alias clave de acceso)
com2sec local 127.0.0.1/32 public
com2sec localnet
192.168.1.0/24
public
#Se asigna ACL al grupo de lectura escritura
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
#Se asigna ACL al grupo de solo lectura
group MyROGroup v1 localnet
group MyROGroup v2c localnet
group MyROGroup usm localnet
# Ramas MIB que se permiten ver
## name incl/excl subtree mask(optional)
view all included .1 80
# Establece permisos de lectura y escritura
## group context sec.model sec.level prefix read write notif

access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all all
# Información de Contacto del Sistema

syslocation neosistec
syscontact admin@migato.miperro.net


$ /etc/init.d/snmpd restart


Si todo ha funcionado,lo cual es improbable,deberías poder hacer consultas a la interfaz localhost de la siguiente manera:

$ snmpwalk localhost -c public -v2c system


Se debería mostrar la siguiente información ( sólo una pequeña muestra ):


SNMPv2-MIB::sysDescr.0 = STRING: Linux debian 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1470573) 4:05:
05.73
SNMPv2-MIB::sysContact.0 = STRING: Unknown
SNMPv2-MIB::sysName.0 = STRING: debian
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1
= OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB

Si recibimos un mensaje de error similar al siguiente:

system: Unknown Object Identifier (Sub-id not found: (top) -> system) ( entre otros )

O parecido a:

Cannot find module (IP-MIB): At line 0 in (none) ( entre otros )


Eso es debido a que el sistema no puede encontrar la ubicacion de las MIB,para verificar donde se encuentran usar el siguiente comando:

$ snmpwalk -Dparse-mibs -v 1 -c private 127.0.0.1 system

Este comando nos indicará donde está buscando las MIBs,con lo cual podemos verificar si las ha encontrado correctamente (son ficheros .txt),de lo contrario debemos copiar los ficheros que se encuentran en /usr/share/snmp/mibs/ a los directorios en los que busca.


Existe un error en el paquete snmpd de Debian Etch documentado,por el cual el sistema no genera por sí solo el fichero .index en el directorio donde se guardan las MIB,verificamos que está vacío o lo creamos,posicionandonos en los directorios en los cuales snmp busca los ficheros:

$ for i in *.txt; do echo $(basename $i .txt) $i>>.index; done


Una vez hecho esto volvemos a ejecutar:

$ snmpwalk -Dparse-mibs -v 1 -c private 127.0.0.1 system


Si todo ha ido correctamente cargará las MIBs y nos dirá index ok o similar


Volvemos a ejecutar:

$ snmpwalk localhost -c public -v2c system


Si todo ha funcionado debe salir la información por pantalla correctamente. Eso en cuanto a la configuración local del servidor.


Para monitorizar los clientes debemos seguir los mismos pasos descritos anteriormente, además, ejecutando:

$ netstat -a|grep snmp

Podemos ver como sólo escucha por la interfaz de localhost,con lo cual si ejecutamos snmpwalk atacando a una máquina remota que cumpla las características de los ficheros de configuración obtendremos "Timeout response from 192.xxx.xx.x". Esto se corrige editando en el fichero /etc/default/snmpd la siguiente linea:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid localhost'


Se cambia a:


SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

Ahora volvemos a verificar:

$ netstat -a|grep snmp

udp 0 0 *:snmp *:*


Ya escucha por todas las interfaces

$ snmpwalk localhost -c public -v2c system


$ snmpwalk -v 2c 192.168.x.x -c public system


De ésta manera ya deberíamos poder ejecutar snmpwalk tanto localmente como a equipos remotos.No olvidar de reiniciar el servicio snmpd con cada nueva configuración.


Una vez que todo funcione correctamente y que se puedan hacer peticiones manuales desde la linea de comandos hay que implementarlo en los ficheros de nagios que son:


/usr/local/nagios/etc/commands.cfg
/usr/local/nagios/etc/services.cfg


define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o $ARG1$
}

En éste ejemplo sólo funcionamos con dos argumentos,la ip del equipo remoto y -o para el OID que especifiquemos posteriormente en el services.cfg. Para peticiones snmp que requieran más argumentos sólo habrá que añadirlos en otra definicion similar a:

check_snmp -H $HOSTADDRESS$ -o $ARG1$ -c $ARG2$ ...


define service{
host_name pc-javi,pc-julio
service_description RAM IN MACHINE
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admin

notification_interval 240
notification_period 24x7
notification_options w,u,c,r
check_command check_snmp!.1.3.6.1.4.1.2021.4.5.0 # RAM IN OID MACHINE
}

Tan sólo habrá que especificar el OID,el cual podemos buscar los genéricos en:



http://www.debianadmin.com/linux-snmp-oids-for-cpumemory-and-disk-statistics.html


o de manera específica de algún dispositivo en concreto en:


http://www.mibdepot.com/cgi-bin/vendor_index.cgi?r=apache&id=103612

Setting Up Status Map Nagios

Primeramente, hay que hacer un testeo de si nuestra compilación de Nagios está diseñada con soporte gd2 para la correcta visualizacion de las imágenes,no se ha comprobado mediante la instalación desde los repositorios. Podemos hacernos una idea de que esto es así si entrando a nuestra interfaz web de Nagios y al pinchar en statusmap nos da un error 404 de página no encontrada o algo por el estilo, otra manerade comprobar que nuestra compilación tuvo problemas es haciendo un

$ locate statusmap.cgi || find / -name statusmap*

Si no nos encuentra el primero y nos encuentra el statusmap.c es que no está compilado, de ser así para cerciorarnos nos dirigimos al source de nagios y ejecutamos un configure aver si todo fue bien. Si nos imprime que faltan librerias, las siguientes deberían estar instaladas en el sistema

debian:/usr/local/nagios/etc# dpkg -l|grep libgd

ii libgd-dev 1.8.4.debian-1 GD Graphics Lib rary (transitional package)

ii libgd-noxpm-dev 1.8.4.debian-1 GD Graphics Lib rary (old version, without XP ii libgd-tools 2.0.33-5.2 GD command line tools and example code

ii libgd1 1.8.4.debian-1 GD Graphics Lib rary (transitional package) ii libgd1-noxpm 1.8.4.debian-1 GD Graphics Lib rary (old version, without XP

ii libgd2-xpm 2.0.33-5.2 GD Graphics Lib rary version 2

ii libgda2-3 1.2.3-5 GNOME Data Acce ss library for GNOME2 ii libgda2-common 1.2.3-5 Common files fo r GNOME Data Access library f ii libgdbm3 1.8.3-3 GNU dbm databas


debian:/usr/local/nagios/etc# dpkg -l|grep libpng

ii libpng12-0 1.2.15~beta5-1 PNG library - r untime

ii libpng12-dev 1.2.15~beta5-1 PNG library - d evelopment

ii libpng3 1.2.15~beta5-1 PNG library - r


debian:/usr/local/nagios/etc# dpkg -l|grep libjpeg

ii libjpeg62 6b-13 The Independent JPEG Group's JPEG runtime library
ii libjpeg62-dev 6b-13 Development files for the IJG JPEG library


debian:/usr/local/nagios/etc# dpkg -l|grep zlib

ii zlib1g 1.2.3-13 compression library - runtime
ii zlib1g-dev 1.2.3-13 compression library - development

Una vez instaladas:

$ make devclean && ./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

Los directorios pueden variar segun la distribución,/usr/local/lib y /usr/local/include pueden ser variantes

$ make all && make install

Podemos fijarnos en que ahora irá compilando el statusmap.c en su momento :D

Después hay que editar el fichero /usr/local/nagios/etc/cgi.cfg y descomentar las lineas:


statusmap_background_image=
background.gd2 default_statusmap_layout=3

Con esto se indica que la imagen de background que hayamos elegido tiene que estar comprimida en formato gd2 para un uso menor de cpu en el directorio /usr/local/nagios/share/images/ o /usr/local/nagios/share/images/logos, así con todas las imágenes que deseemos usar,se pueden bajar packs dedicadas a este fin de www.nagiosexchange.com, solo habria que descomprimirlas,situarlas correctamente y establecer los permisos necesarios para el u/gr nagios

La segunda linea referente al layout=3 indica de qué manera queremos visualizar los equipos,usar la que queramos, pero si se pone 0 querrá decir User-defined coordenates con lo que tendremos que establecer las coordenadas donde queremos que aparezcan en el fichero hostextinfo.cfg:

define hostextinfo{
host_name pc-javi,pc-julio
# notes_url http://editar icon_image ultrapenguin.png icon_image_alt Linux Host vrml_image ultrapenguin.png statusmap_image ultrapenguin.gd2
# 2d_coords 100,250 # 3d_coords 100.0,50.0,75.0 } define hostextinfo{ host_name oficina-router
# notes_url http://editar icon_image switch40.png icon_image_alt Switch Ovislink vrml_image switch40.png statusmap_image switch40.gd2
# 2d_coords 100,250 # 3d_coords 100.0,50.0,75.0 }

Solamente quedaría editar este fichero intuitivo y reiniciar nagios :)



Setting Up Nagios & Fruity


Nagios es un proyecto de código libre que nos permite monitorizar a pequeña,media o gran escala equipos y servicios, y teniendo múltiples opciones de configuración a través de plugins o diversos protocolos,alertas via sms de poco espacio en disco, ping para saber si está up, memoria ram disponible y un largo etcétera, de tal manera que podemos saber algo que va a ocurrir, antes de que ocurra =)

Para más info www.nagios.org


Primeramente,hay que escoger el tipo de instalación de Nagios que vamos a realizar,compilado desde tarball o mediante los repositorios de Debian Etch,para el primer caso realizariamos lo siguiente:


Download Nagios 2.6 y plugins 1.4.4 en tarball de la pagina oficial Descomprimir Nagios,acceder al directorio:

Se crea un usuario y grupo de nombre nagios

        $ groupadd nagios && useradd nagios -g nagios

Se agrega un grupo para ejecutar comandos nagios utilizando el grupo nagios:

        $ usermod -G nagios (usuario-apache)*

El usuario apache se extrae de ps -aux|grep apache2 = www-data

Configure

./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmlurl=/nagios/ --with-nagios-user=nagios
--with-nagios-grp=nagios --with-command-grp=nagios

Compilar :

        $ make all

Instalacion Binarios y archivos html :

        $ make install

Instalar ejemplos de configuracion:

        $ make install-config en /usr/local/nagios/etc/


Instala script de iniciacion:

        $ make install-init

Todos los archivos de /usr/local/nagios deben pertenecer a usuario y grupo nagios:

$ chown -R nagios:nagios nagios
$ ls -sahl /usr/local/nagios


Configuracion del script creado para que se ejecue siempre al arranque:

$ update-rc.d nagios defaults

Configuracion permisos de algunos directorios:

$ make install-commandmode


Creacion de symlins de binarios para nuestro sistema:

$ ln -s /usr/local/nagios/bin/nagios /usr/sbin/nagios
$ ln -s /usr/local/nagios/bin/nagiostats /usr/bin/nagiostats


Instalacion de los plugins:

$ tar -zxvf nagios-plugins-1.4.4.tar.gz && cd nagios-1.4.4


Configuracion:

$ ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin


Instalacion:

$ make && make install && make install-root

Creacion de interfaz web editando /etc/apache2/sites-available/default ( más abajo )


Creacion del archivo login/pass:

$htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
$cat /usr/local/nagios/etc/htpasswd.users


Al haber ejecutado make install-config se nos crean ficheros sample de configuracion de nagios en /usr/local/nagios/etc/, debemos renombrarlos de fichero-sample.cfg a fichero.cfg,aun así,nos faltarán diversos ficheros que son los siguientes y que iremos creando a mano:


Fichero contactgroup.cfg

define contactgroup{
contactgroup_name admin
alias Nagios Administrators
members nagiosadmin
}

Fichero contacts.cfg

define contact{
contact_name nagiosadmin
alias Nagios Administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r

service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email root@localhost
}

Fichero hostgroups.cfg

define hostgroup{
hostgroup_name oficina
alias equipos_oficina
members pc-javi
}

Fichero hosts.cfg

define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled

failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program r

notification_period 24x7 ; Send host notifications at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLA
}


define host{
use generic-host ; Name of host template to use
host_name pc-javi
alias PC de Javi
address 192.168.1.110
check_command check-host-alive
max_check_attempts 20

contact_groups admin
notification_interval 60
notification_period 24x7
notification_options d,u,r
}

Fichero services.cfg

define service{
name generic-service ; The n ame of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted

parallelize_check 1 ; Active service checks should be parallelized (disabling t
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service freshness

notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled

process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program r
is_volatile 0 ; The service is not volatile

register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEM
}


define service{
# use generic-service ; Name of service template to use
host_name pc-javi
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5

retry_check_interval 1
contact_groups admin
notification_interval 240
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}

Fichero timeperiods.cfg

# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic 24x7 support nightmare. : - )
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00

saturday 00:00-24:00
}
# workhours timeperiod definition
define timeperiod{
timeperiod_name workhours
alias Normal Working Hours
monday 09:00-18:00
tuesday 09:00-18:00
wednesday 09:00-18:00
thursday 09:00-18:00
friday 09:00-18:00

saturday 10:00-13:00
}
# nonworkhours timeperiod definition
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00

thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-10:00,13:00-24:00
}
# none timeperiod definition
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}


Revisión de los ficheros de configuracion con:

$nagios -v /usr/local/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0


Ahora solo debemos configurar apache para la autenticación de la siguiente manera editando el fichero /etc/apache2/sites-available/default


ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
nagios/">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user


Alias /nagios /usr/local/nagios/share
nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user


Reiniciar apache2:

$ /etc/init.d/apache2 restart

Ejecutar http://192.168.1.90/nagios :)


Para el segundo caso mediante repositorios Debian Etch:

nagios2
apache2
libapache2-mod-php5
php5-common
php5-mysql
phpmyadmin
mysql-common
mysql-client-5.0
mysql-server

Una vez instalados y si podemos acceder a través de http://ip_server/nagios2, ingresaremos nombre de usuario y contraseña que nos pidió en el momento de configuración del paquete


Hay que tener en cuenta que los directorios a los que apunta "" puede cambiar según la versión de Nagios que se esté instalando y según el sistema o tipo de instalación escogida,así que habrá que cerciorarse simplemente de que esos dircectorios existen. Hecho esto hay que crear las BDD de los usuarios que accederán a Nagios,y a la cual apunta "AuthUserFile",en nuestro caso nos dirigimos al directorio escogido /etc/nagios2/ y usamos:

$ htpasswd -c /etc/nagios2/htpasswd.users admin


Aquí ingresaremos el password del usuario admin para el acceso a Nagios. Una vez hecho esto se puede reiniciar apache para que tengan efecto las configuraciones

$ /etc/init.d/apache2 restart

Si podemos acceder con nombre de usuario y contraseña a http://servidor/nagios2 todo ha ido correctamente Una vez instalado Nagios usaremos Fruity para la configuración del mismo, Fruity es simplemente un front-end que ¿¿facilita?? bastante la tarea de administracion de host,servicios,etc,lo bajamos con:

$ wget -c http://heanet.dl.sourceforge.net/sourceforge/fruity/fruity-1.0-rc1.tar.gz

Descomprimimos fruity en /var/www/

$ tar -zxvf fruity-1.0-rc1.tar.gz && mv fruity-1.0-rc1.tar.gz fruity && cd fruity

Creamos un symlink del directorio logos a fruity ya que ambos usan los mismos:

$ ln -s /usr/local/nagios/share/images/logos/ ./logos

Se edita nuevamente el /etc/apache2/sites-available/default al final del fichero y se crea la BDD para el usuario fruity y su password:


Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Fruity Access"
AuthType Basic
AuthUserFile /var/www/fruity/htpasswd.users

Require valid-user

$ htpasswd -c /var/www/fruity/htpasswd.users fruity


Ahora nos dirigimos al directorio /var/www/fruity/includes a editar en el fichero config.inc las siguientes variables:

$sys_config['logos_path'] = '/var/www/fruity/logos';
$sitedb_config['host'] = 'localhost';
$sitedb_config['username'] = 'fruity';

$sitedb_config['password'] = 'password';
$sitedb_config['database'] = 'fruity';
$sitedb_config['dbserv'] = 'mysql';

Una vez hecho esto se crea la bdd y se dan los permisos oportunos:

$ mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 5.1.6-alpha

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
Query OK, 0 rows affected (0.01 sec)
mysql> create database fruity;
Query OK, 1 row affected (0.00 sec)
mysql> grant INSERT,SELECT on root.* to fruity@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR fruity@localhost=PASSWORD('password');
Query OK, 0 rows affected (0.01 sec)
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on fruity.* to fruity@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on fruity.* to fruity;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye


Después de crear la bdd importamos la configuración de las tablas para dicha bdd:

$ mysql -u fruity -p <> 


E insertamos el password que anteriormente hemos asignado a fruity Ya está todo preparado para empezar a utilizar Fruity+Nagios,en el camino me encontré con dos problemas,el primero al lanzar fruity desde el navegador me tiraba el siguiente error :

Warning: mysql_pconnect() [function.mysql-pconnect]: Lost connection to MySQL server at 'reading initial communication packet',
system error: 111 in /var/www/fruity/includes/adodb/drivers/adodb-mysql.inc.php
on line 372
Unable to connect to database. Please check your configuration.


Este problema se corrige comentando la linea 47 del fichero /etc/mysql/my.cnf:

#bind-address           = 127.0.0.1

Se guarda el fichero,se levanta de nuevo mysql y listo. El segundo problema con el que me encontre fue una vez hechas las configuraciones anteriores y al acceder a http://servidor/fruity me saltó el siguiente error :

Warning: mysql_pconnect() [function.mysql-pconnect]: Access denied for user 'root'@'localhost'
(using password: NO) in /var/www/fruity/includes/adodb/drivers/adodb-mysql.inc.php on line 372
Unable to connect to database. Please check your configuration.

Ésto es debido a que no se puede acceder a la BDD con el usuario root aunque tenga permisos,se soluciona editando de nuevo el fichero /var/www/fruity/includes/config.inc y cambiar la directiva username que por defecto es root al usuario fruity que habíamos creado. Se reinicia mysql y a correr.


$sitedb_config['host'] = 'localhost';               
$sitedb_config['username'] = 'fruity';
$sitedb_config['password'] = 'password';
$sitedb_config['database'] = 'fruity';

Setting Up UnrealIRCD

Para instalar UnrealIRCD en tu máquina :

$ adduser ircd ( ponerlo a /bin/false en /etc/passwd para que no tenga shell )
$ cd /home/ircd
$ su ircd
$ wget -c http://files.alexisnet.net/unreal/Unreal3.2.7.tar.gz
$ tar xzvf Unreal3.2.7.tar.gz
$ mkdir -p /home/ircd/unreal/bin
$ mkdir /home/ircd/unreal/conf
$ mv Unreal3.2.7 unreal
$ cd unreal
$ ./Config

Do you want to enable the server anti-spoof protection?
[No] -> Enter

What directory are all the server configuration files in?
[/home/ircd/Unreal3.2.7] -> /home/ircd/unreal/conf Enter

Would you like to compile as a hub or as a leaf?
Type Hub to select hub and Leaf to select leaf.
[Hub] -> Enter

What is the hostname of the server running your IRCd? what.u.want.server

What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] -> Enter

Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> Enter (or Yes if you are a security addict)

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank
[] ->

Do you want to enable IPv6 support?
[No] -> Enter


Do you want to enable ziplinks support?
[No] -> Enter, a no ser que tengamos previsto linkar

f you know the path to zlib on your system, enter it here. If not
leave this blank
[] ->
Do you want to enable remote includes?
[No] ->
Do you want to enable prefixes for chanadmin and chanowner?
This will give +a the & prefix and ~ for +q (just like +o is @)
Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,
PJIRC, irssi, CGI:IRC, etc.)

This feature should be enabled/disabled network-wide.
[Yes] ->

What listen() backlog value do you wish to use? Some older servers
have problems with more than 5, others work fine with many more.
[5] ->

How far back do you want to keep the nickname history?
[2000] ->

What is the maximum sendq length you wish to have?
[3000000] ->

How many buffer pools would you like?
This number will be multiplied by MAXSENDQLENGTH.
[18] ->

How many file descriptors (or sockets) can the IRCd use?
[1024] ->

Would you like any more parameters to configure?
Write them here:
[]->

$ make
$ make install

$ cd /home/ircd/unreal/conf
$ cp doc/example.conf unrealircd.conf

Ahora viene la parte de configuración del unrealircd.conf :

descomentar las líneas :

loadmodule "/home/ircd/unreal/conf/modules/commands.so";
loadmodule "/home/ircd/unreal/conf/modules/cloak.so";

me
{
name "irc.guetto.org";
info "loh coloreh";
numeric 1;
};



admin {
"rAyiKa";
"rAyIkA";
"do@bla.com";
};


allow {
ip *@*;
hostname *@*;
class clients;
maxperip 2;
};


allow {
ip *@255.255.255.255;
hostname *@*;
class clients;
maxperip 2;
};

oper rAyIkA {
class clients;
from {
userhost rAyIkA*@*.*;
};
password "pass_oper";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};

listen 127.0.0.1:6697
{
options
{

clientsonly;
ssl; <- Esta linea quitarla si no vais a usar SSL porque dará error al correr el daemon
};
};

listen *:8067;
listen *:8989; <- Puerto que va a escuchar el ircd y rango de ip´s autorizadas, en este caso todas


Crear los siguientes ficheros de motd e ircd.rules, le tuve que poner la ruta completa, quedando así:


tld {
mask *@*;
motd "/home/ircd/unreal/conf/ircd.motd"; <- Fichero motd ruta completa pq no se lo tragaba
rules "/home/ircd/unreal/conf/ircd.rules";
};

set {
kline-address "do@blah.com"; <- Debemos poner un correo aquí si no tp se lo traga
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {



Guardamos el fichero y ejecutamos

$ ./unreal start

Es un poco porculero con errores y warnings, pero así me funciono a mi

first entry

doh¡