Bueno, pues tal como dice el título del articulo, estoy rompiendo mano con Nagios por primera vez, y buscando información encontré informacion en castellano bastante completa ;)
En esta web existe un manual de instalación rápida de Nagios para distintas distribuciones, asi que siguiendo las indicaciones, lo instalé en Centos, que aunque no está si hay un manual para Fedora :)
Como he tenido que instalarlo en distintas máquinas de pruebas, me ha resultado interesante hacer un script con las ordenes necesarias para la instalación, incluida la descarga de los fuentes, compilación y creación de usuarios y grupos necesarios.
Simplemente existen 4 requisitos, tener instalados los siguientes paquetes:
http
gcc
glibc-common
gd-devel
Una vez instalados, (fácil usando yum), simplemente ponemos el script en tmp con permisos de ejecucion para root y ejecutamos.
Solo necesita nuestra intervencióndos veces, para introducir passwords, la primera para el usuario nagios en la instalación y la segunda para el usuario nagiosadmin de acceso web.
Generamos dos ficheros de logs, uno para la instalación de Nagios en /tmp y el otro para la instalación de los Plugins, también en /tmp .
El script es el siguiente:
# rpm -qa|grep http
# rpm -qa|grep gcc
# rpm -qa|grep glibc-common
# rpm -qa|grep gd-devel
echo "Creando el usuario nagios"
useradd -m nagios
echo "Password para el usuario nagios : "
passwd nagios
echo "Password cambiado correctamente"
echo "Creando el Grupo nagcmd"
groupadd nagcmd
echo "Insertando usuarios nagios y apache al grupo nagcmd"
usermod -G nagcmd nagios
usermod -G nagcmd apache
echo "Creando el el directorio temporal de descarga /tmp/down_nagios"
mkdir /tmp/down_nagios
echo "Entrando en el directorio temporal de descarga /tmp/down_nagios"
cd /tmp/down_nagios/
echo "Descargando nagios y plugins"
wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.3.tar.gz
wget http://downloads.sourceforge.net/nagiosplug/nagios-plugins-1.4.13.tar.gz?modtime=1222335829&big_mirror=0
echo "Desempaquetando nagios"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "tar de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
tar -xvf nagios-3.0.3.tar.gz>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Entrando en el directorio de los fuentes de Nagios"
cd nagios-3.0.3
echo "Haciendo ./cofigure"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "configure de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
./configure --with-command-group=nagcmd>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Haciendo make all"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make all de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make all>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Haciendo make install"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make install de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make install>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Haciendo make install-init"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make install-init de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make install-init>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Haciendo make install-config"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make install-config de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make install-config>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Haciendo make install-commandmode"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make install-commandmode de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make install-commandmode>>/tmp/log_install_nagios.`date +%d%m%y`
#vi /usr/local/nagios/etc/objects/contacts.cfg
echo "Haciendo make install-webconf"
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
echo "make install-webconf de Nagios">>/tmp/log_install_nagios.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios.`date +%d%m%y`
make install-webconf>>/tmp/log_install_nagios.`date +%d%m%y`
echo "Estableciendo password para nagiosadmin :"
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
echo "Reiniciando Apache"
/etc/init.d/httpd restart
cd ..
echo "Desenpaquetando plugins"
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "tar de Plugins">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
tar -xvf nagios-plugins-1.4.13.tar.gz>>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "Entrando en directorio de Plugins"
cd nagios-plugins-1.4.13
echo "Haciendo configure de Plugins"
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "configure de Plugins">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
./configure --with-nagios-user=nagios --with-nagios-group=nagios>>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "Haciendo make de Plugins"
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "make de Plugins">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
make>>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "Haciendo make install de Plugins"
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "make install de Plugins">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "####################################################">>/tmp/log_install_nagios_plugins.`date +%d%m%y`
make install>>/tmp/log_install_nagios_plugins.`date +%d%m%y`
echo "Configurando el servicio de Nagios"
chkconfig --add nagios
chkconfig nagios on
echo "Verificando Errores de Instalacion Nagios"
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
echo "Iniciando Nagios"
/etc/init.d/nagios start
echo "instalacion Finalizada"
lunes, 13 de octubre de 2008
jueves, 2 de octubre de 2008
HowTo - Configuración Multipath
Instalación.
El paquete necesario para la instalación del multipath es el:
device-mapper-multipath.i386
Podemos instalarlo desde el repositorio, mediante el comando:
yum install device-mapper-multipath.i386
Este paquete tiene una serie de dependencias que podemos ver con el comando siguiente:
[root@nodo2 ~]# yum deplist device-mapper-multipath.i386|grep provider|sort -u
provider: bash.i386 3.2-21.el5
provider: chkconfig.i386 1.3.30.1-2
provider: device-mapper.i386 1.02.24-1.el5
provider: device-mapper-multipath.i386 0.4.7-17.el5
provider: glibc.i386 2.5-24
provider: glibc.i686 2.5-24
provider: kpartx.i386 0.4.7-17.el5
provider: libsysfs.i386 2.0.0-6
provider: ncurses.i386 5.5-24.20060715
provider: readline.i386 5.1-1.1
Con esto tenemos el multipath instalado, y listos para empezar.
Configuración inicial.
Para una configuración inicial hay que revisar esencialmente 3 partes del fichero de configuración.
1.- En primer lugar existe una parte que por defecto hace que se ignoren todos los dispositivos, habrá que comentarla
para que multipath pueda detectar los dispositivos existentes.
blacklist {
devnode "*"
}
por
#blacklist {
# devnode "*"
#}
2.- La siguiente sección, permite que multipath detecte por defecto todos los dispositivos, por lo que debe estar
sin comentar.
defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout /bin/true
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names no
NOTA:
path_grouping_policy multibus
Esto hace que también sean escaneados los dispositivos IDE y Floppy, si queremos ignorar dichos dispositivos,
esta entrada debería quedar como sigue:
path_grouping_policy failover
3.- En esta sección se definen los dispositivos que queremos que multipath ignore. Esto se detalla en otra sección.
Dejaremos esta parte según las necesidades de cada caso.
Por defecto:
#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
Por último solo nos queda hacer que los datos tengan efecto.
modprobe dm-multipath
modprobe dm-round-robin
/etc/init.d/multipathd restart
multipath -v2
Ahora configuramos multipath para que arranque en el inicio.
chkconfig --level 35 multipathd on
Por último vaciamos la cache de multipath , reiniciamos el servicio y reescaneamos los dispositivos.
multipath -F
/etc/init.d/multipathd restart
multipath -v2
Ahora podemos ejecutar el comando:
multipath -ll
y obtendremos una salida de este tipo:
mpath1 (360060480000287971039523544343331)
[size=49 GB][features="0"][hwhandler="0"]
_ round-robin 0 [enabled]
_ 0:0:0:11 sdg 8:96 [active][ready]
_ 1:0:0:11 sdo 8:224 [active][ready]
Donde vemos información como:
mpath1 --> El nombre de pseudo-dispositivo que podemos montar desde /dev/mapper/mpath1
(36...................331) --> wwid del dispositivo.
size --> Tamaño del disco.
round-robin 0 [enabled] --> Tipo de balanceo
_ 0:0:0:11 sdg 8:96 [active][ready] --> Información del camino y el LUN SCSI
_ 1:0:0:11 sdo 8:224 [active][ready] --> Información del camino y el LUN SCSI
Configurando Blacklist. - Ignorando dispositivos
Algunas veces necesitaremos que multipath no tenga presente algunos dispositivos.
Esto se indica dentro del fichero de configuración global de multipath
/etc/multipath.conf
En el existe una seción comentada por defecto donde indicaremos que dispositivos queremos ignorar.
#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
Para este fin podemos expresar los dispositivos mediante expresiones regulares, wwid o ambas, como
en el siguiente ejemplo, donde xxxxxx es un wwid valido y "^sd[ab]$" indica los dispositivos
sda y sdb como sdaa y sdba.
blacklist {
wwid xxxxxxxxxxxxxxx
devnode "^sd[ab]$"
}
Para aplicar estos cambios basta con ejecutar:
multipath -F
Esto vacía la cache del multipath.
luego reiniciamos el servicio.
/etc/init.d/multipathd restart
Podemos ver los resultados ejecutando y reescanear los discos, mediante.
multipath -v2
o
multipath -ll
Observaremos que los dispositivos ignorados no aparecen.
Visualización de dispositivos.
Los dispositivos detectados por multipath, son creados bajo
/dev/mapper/XXXXXXXXXXXXXXXXXXXXXXXXXXX
/dev/mapper/XXXXXXXXXXXXXXXXXXXXXXXXXXX
..............
Si por el contrario preferimos ver los dispositivos de un modo un poco más amigable (Yo no lo prefiero ;))
podemos activar en el fichero de configuración la opción:
user_friendly_names yes
De este modo los dispositivos serán creados de la siguiente manera.
/dev/mapper/mpath0
/dev/mapper/mpath1
.....
La relación entre el nombre que les da a los dispositivos y su wwid, está en:
grep mpath /var/lib/multipath/bindings
mpath0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mpath1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Prevenir Errores.
En caso de que se produzca un fallo general en la comunicación y todos los caminos cayeran, podemos
configurar multipath para que use una "cola" de I/O, para que las aplicaciones no detecten la ciada de servicio. Esta cola se actualizará cuando alguna de las rutas este disponible.
Para configurar el uso de de esta cola, editamos el fichero de configuración general y actualizamos
el valor "features", en la sección del dispositivo.
devices {
device {
vendor "COMPAQ "
features "1 queue_if_no_path"
...............
El paquete necesario para la instalación del multipath es el:
device-mapper-multipath.i386
Podemos instalarlo desde el repositorio, mediante el comando:
yum install device-mapper-multipath.i386
Este paquete tiene una serie de dependencias que podemos ver con el comando siguiente:
[root@nodo2 ~]# yum deplist device-mapper-multipath.i386|grep provider|sort -u
provider: bash.i386 3.2-21.el5
provider: chkconfig.i386 1.3.30.1-2
provider: device-mapper.i386 1.02.24-1.el5
provider: device-mapper-multipath.i386 0.4.7-17.el5
provider: glibc.i386 2.5-24
provider: glibc.i686 2.5-24
provider: kpartx.i386 0.4.7-17.el5
provider: libsysfs.i386 2.0.0-6
provider: ncurses.i386 5.5-24.20060715
provider: readline.i386 5.1-1.1
Con esto tenemos el multipath instalado, y listos para empezar.
Configuración inicial.
Para una configuración inicial hay que revisar esencialmente 3 partes del fichero de configuración.
1.- En primer lugar existe una parte que por defecto hace que se ignoren todos los dispositivos, habrá que comentarla
para que multipath pueda detectar los dispositivos existentes.
blacklist {
devnode "*"
}
por
#blacklist {
# devnode "*"
#}
2.- La siguiente sección, permite que multipath detecte por defecto todos los dispositivos, por lo que debe estar
sin comentar.
defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout /bin/true
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names no
NOTA:
path_grouping_policy multibus
Esto hace que también sean escaneados los dispositivos IDE y Floppy, si queremos ignorar dichos dispositivos,
esta entrada debería quedar como sigue:
path_grouping_policy failover
3.- En esta sección se definen los dispositivos que queremos que multipath ignore. Esto se detalla en otra sección.
Dejaremos esta parte según las necesidades de cada caso.
Por defecto:
#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
Por último solo nos queda hacer que los datos tengan efecto.
modprobe dm-multipath
modprobe dm-round-robin
/etc/init.d/multipathd restart
multipath -v2
Ahora configuramos multipath para que arranque en el inicio.
chkconfig --level 35 multipathd on
Por último vaciamos la cache de multipath , reiniciamos el servicio y reescaneamos los dispositivos.
multipath -F
/etc/init.d/multipathd restart
multipath -v2
Ahora podemos ejecutar el comando:
multipath -ll
y obtendremos una salida de este tipo:
mpath1 (360060480000287971039523544343331)
[size=49 GB][features="0"][hwhandler="0"]
_ round-robin 0 [enabled]
_ 0:0:0:11 sdg 8:96 [active][ready]
_ 1:0:0:11 sdo 8:224 [active][ready]
Donde vemos información como:
mpath1 --> El nombre de pseudo-dispositivo que podemos montar desde /dev/mapper/mpath1
(36...................331) --> wwid del dispositivo.
size --> Tamaño del disco.
round-robin 0 [enabled] --> Tipo de balanceo
_ 0:0:0:11 sdg 8:96 [active][ready] --> Información del camino y el LUN SCSI
_ 1:0:0:11 sdo 8:224 [active][ready] --> Información del camino y el LUN SCSI
Configurando Blacklist. - Ignorando dispositivos
Algunas veces necesitaremos que multipath no tenga presente algunos dispositivos.
Esto se indica dentro del fichero de configuración global de multipath
/etc/multipath.conf
En el existe una seción comentada por defecto donde indicaremos que dispositivos queremos ignorar.
#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
Para este fin podemos expresar los dispositivos mediante expresiones regulares, wwid o ambas, como
en el siguiente ejemplo, donde xxxxxx es un wwid valido y "^sd[ab]$" indica los dispositivos
sda y sdb como sdaa y sdba.
blacklist {
wwid xxxxxxxxxxxxxxx
devnode "^sd[ab]$"
}
Para aplicar estos cambios basta con ejecutar:
multipath -F
Esto vacía la cache del multipath.
luego reiniciamos el servicio.
/etc/init.d/multipathd restart
Podemos ver los resultados ejecutando y reescanear los discos, mediante.
multipath -v2
o
multipath -ll
Observaremos que los dispositivos ignorados no aparecen.
Visualización de dispositivos.
Los dispositivos detectados por multipath, son creados bajo
/dev/mapper/XXXXXXXXXXXXXXXXXXXXXXXXXXX
/dev/mapper/XXXXXXXXXXXXXXXXXXXXXXXXXXX
..............
Si por el contrario preferimos ver los dispositivos de un modo un poco más amigable (Yo no lo prefiero ;))
podemos activar en el fichero de configuración la opción:
user_friendly_names yes
De este modo los dispositivos serán creados de la siguiente manera.
/dev/mapper/mpath0
/dev/mapper/mpath1
.....
La relación entre el nombre que les da a los dispositivos y su wwid, está en:
grep mpath /var/lib/multipath/bindings
mpath0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mpath1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Prevenir Errores.
En caso de que se produzca un fallo general en la comunicación y todos los caminos cayeran, podemos
configurar multipath para que use una "cola" de I/O, para que las aplicaciones no detecten la ciada de servicio. Esta cola se actualizará cuando alguna de las rutas este disponible.
Para configurar el uso de de esta cola, editamos el fichero de configuración general y actualizamos
el valor "features", en la sección del dispositivo.
devices {
device {
vendor "COMPAQ "
features "1 queue_if_no_path"
...............
sábado, 27 de septiembre de 2008
Introducción iptables - Ejemplos
Intraduccion.
Iptables, es una herramienta que usa Netfilter que es un FrameWork que está integrado en el kernel de Linux, el cual permite interceptar paquetes de red, analizarlos y tomar decisiones en funcion de unas reglas.
Al gunas opciones que componen las reglas que vamos a usar son las siguientes:
INPUT --> Especifica los paquetes de entrada en la maquina donde ejecutamos las reglas.
OUTPUT --> Especifica los paquetes desalida en la maquina donde ejecutamos las reglas.
FORWARD --> Especifica los paquetes de entrada en la maquina donde ejecutamos las reglas, pero que no tienen como destino la misma. Es decir paquetes de paso por nuestra maquina.
-t --> Especifica la tabla sobre la que trabajamos, por ejemplo (-t nat)
-i --> Especifica la interfaz sobre la que trabajamos como entrada de los paquetes, por ejemplo (-i eth0)
-o --> Especifica la interfaz sobre la que trabajamos como salida de los paquetes, por ejemplo (-o eth0)
-m --> Especifica el estado de la conexion, por ejemplo (-m ESTABLISHED)
-p --> Especifica el protocolo al que aplicamos la regla, por ejemplo (-p tcp)
-s --> Especifica la direccion ip o red de origen de los paquetes, por ejemplo (-s 192.168.1.12 / -s 192.168.1.0/24)
-d --> Especifica la direccion ip o red de destino de los paquetes, por ejemplo (-s 192.168.1.12 / -s 192.168.1.0/24)
--dport --> Especifica el puerto al que va dirigido el paquete, por ejemplo (--dport 22)
-j --> Especifica la acción que realizamos con el paquete, por ejemplo Aceptar / Rechazar(-j ACCEPT / -j DROP)
Script para proteger un servidor local.
#!/bin/bash
#
#Borramos todas las reglas existentes y los contadores, comenzamos en un estado limpio
#
iptables -F
iptables -X
iptables -Z
#
# Politicas por defecto INPUT, FORWARD y OUTPUT Todas las entradas cerradas
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
#Permitimos las conexiones entrantes a la interfaz loopback
#
iptables -A INPUT -i lo -j ACCEPT
#
#Permitimos conexiones entrantes iniciadas desde nuestra maquina servidor
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#LAN
#Permitimos las conexiones entrantes desde la LAN a eth0 para cada servicio
#
#Servicio SSH para una maquina concreta
iptables -A INPUT -p tcp -s 192.168.1.101 --dport 22 -i eth0 -j ACCEPT
#Servicio HTTP 80 para una maquina concreta
iptables -A INPUT -p tcp -s 192.168.1.101 --dport 80 -i eth0 -j ACCEPT
#Permitimos los Pings para una maquina concreta
iptables -A INPUT -p ICMP -s 192.168.1.101 -j ACCEPT
#
#
#Servicio HTTP 8080 a toda la LAN
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 8080 -i eth0 -j ACCEPT
#Salvamos las politicas
#
/sbin/service iptables save
#
#Liastamos las reglas cargadas
#
iptables -L -v
#######################################################
Para cada caso las condiciones que nos interesara controlar serán unas, así que habrá que diseñarlo para cada caso.
El script anterior, está pensado para aislar un servidor que esta dentro de una Lan y que no ofrace servicios fuera de ella, de momento.
Por defecto rechaza las conexiones de entrada, para luego ir permitiendo solo las que necesitemos.
Lo primero que necesitamos es permitir las conexiones origen/destino Loopback, y las que hemos iniciado desde el servidor.
Tras esto, vamos especificando servicio por servicio las conexiones permitidas. Para una maquina que uso para administrar el servidor, habilito (ssh/ping/http), y para toda la LAN icluida esta maquina, el puerto 8080, para el servicio de Plone.
Iptables, es una herramienta que usa Netfilter que es un FrameWork que está integrado en el kernel de Linux, el cual permite interceptar paquetes de red, analizarlos y tomar decisiones en funcion de unas reglas.
Al gunas opciones que componen las reglas que vamos a usar son las siguientes:
INPUT --> Especifica los paquetes de entrada en la maquina donde ejecutamos las reglas.
OUTPUT --> Especifica los paquetes desalida en la maquina donde ejecutamos las reglas.
FORWARD --> Especifica los paquetes de entrada en la maquina donde ejecutamos las reglas, pero que no tienen como destino la misma. Es decir paquetes de paso por nuestra maquina.
-t
-i
-o
-m
-p
-s
-d
--dport
-j
Script para proteger un servidor local.
#!/bin/bash
#
#Borramos todas las reglas existentes y los contadores, comenzamos en un estado limpio
#
iptables -F
iptables -X
iptables -Z
#
# Politicas por defecto INPUT, FORWARD y OUTPUT Todas las entradas cerradas
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
#Permitimos las conexiones entrantes a la interfaz loopback
#
iptables -A INPUT -i lo -j ACCEPT
#
#Permitimos conexiones entrantes iniciadas desde nuestra maquina servidor
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#LAN
#Permitimos las conexiones entrantes desde la LAN a eth0 para cada servicio
#
#Servicio SSH para una maquina concreta
iptables -A INPUT -p tcp -s 192.168.1.101 --dport 22 -i eth0 -j ACCEPT
#Servicio HTTP 80 para una maquina concreta
iptables -A INPUT -p tcp -s 192.168.1.101 --dport 80 -i eth0 -j ACCEPT
#Permitimos los Pings para una maquina concreta
iptables -A INPUT -p ICMP -s 192.168.1.101 -j ACCEPT
#
#
#Servicio HTTP 8080 a toda la LAN
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 8080 -i eth0 -j ACCEPT
#Salvamos las politicas
#
/sbin/service iptables save
#
#Liastamos las reglas cargadas
#
iptables -L -v
#######################################################
Para cada caso las condiciones que nos interesara controlar serán unas, así que habrá que diseñarlo para cada caso.
El script anterior, está pensado para aislar un servidor que esta dentro de una Lan y que no ofrace servicios fuera de ella, de momento.
Por defecto rechaza las conexiones de entrada, para luego ir permitiendo solo las que necesitemos.
Lo primero que necesitamos es permitir las conexiones origen/destino Loopback, y las que hemos iniciado desde el servidor.
Tras esto, vamos especificando servicio por servicio las conexiones permitidas. Para una maquina que uso para administrar el servidor, habilito (ssh/ping/http), y para toda la LAN icluida esta maquina, el puerto 8080, para el servicio de Plone.
miércoles, 17 de septiembre de 2008
Vsftpd - Enjaulando usuarios
Vsftpd (Very Secure FTP) es un servidor de ftp "seguro". Ya que esta palabra va directamente reñida con el protocolo en si que usa el servidor, creo que esto no puede considerarse del todo cierto.
Aunque se dice que es de los servidores ftp mas seguros, si no el mas.... creo que ningún server ftp puede considerarse seguro, pero... según ocasiones, valorando las necesidades concretas, puede considerarse la opción más adecuada.
Instalación.
Nada que comentar al respecto ya que se obtiene vía yum.
#yum install vsftpd
Ficheros de configuración.
/etc/vsftpd/vsftpd.conf
Fichero de configuración general
/etc/vsftpd.user_list
Lista de usuarios que SI pueden iniciar sesión
/etc/vsftpd.ftpusers
Lista de usuarios que no pueden iniciar sesión (No se usa ya que por defecto son todos)
/etc/vsftpd.chroot_list
Lista de usuarios NO enjaulados, estos podrán navegar por la máquina, siempre que tengan los permisos necesarios.
Directivas vsftpd.conf.
Algunas de las directivas mas relevantes son las que se comentan a continuación.
anonymous_enable=NO
Deniega el acceso al usuario anónimo.
local_enable=YES
Permite el login usando los ficheros /etc/passwd y /etc/shadow
chroot_local_user=YES
Enjaula por defecto a los usuarios locales.
chroot_list_enable
Permite excluir de la jaula a los usuarios de "chroot_list_file"
chroot_list_file=/etc/vsftpd.chroot_list
Path del fichero de usuarios excluidos.
userlist_enable=YES
Verifica si el usuario esta en el fichero antes de intentar el login local.
userlist_file=/etc/vsftpd.user_list
Path del fichero de usuarios admitidos.
userlist_deny=NO
Si se pone a YES, la lista de "vsftpd.user_list" se toma como la lista de usuarios denegados.
Nota: Con estas directrices se puede securizar un poco más, de manera muy sencilla, el servicio de FTP
Aunque se dice que es de los servidores ftp mas seguros, si no el mas.... creo que ningún server ftp puede considerarse seguro, pero... según ocasiones, valorando las necesidades concretas, puede considerarse la opción más adecuada.
Instalación.
Nada que comentar al respecto ya que se obtiene vía yum.
#yum install vsftpd
Ficheros de configuración.
/etc/vsftpd/vsftpd.conf
Fichero de configuración general
/etc/vsftpd.user_list
Lista de usuarios que SI pueden iniciar sesión
/etc/vsftpd.ftpusers
Lista de usuarios que no pueden iniciar sesión (No se usa ya que por defecto son todos)
/etc/vsftpd.chroot_list
Lista de usuarios NO enjaulados, estos podrán navegar por la máquina, siempre que tengan los permisos necesarios.
Directivas vsftpd.conf.
Algunas de las directivas mas relevantes son las que se comentan a continuación.
anonymous_enable=NO
Deniega el acceso al usuario anónimo.
local_enable=YES
Permite el login usando los ficheros /etc/passwd y /etc/shadow
chroot_local_user=YES
Enjaula por defecto a los usuarios locales.
chroot_list_enable
Permite excluir de la jaula a los usuarios de "chroot_list_file"
chroot_list_file=/etc/vsftpd.chroot_list
Path del fichero de usuarios excluidos.
userlist_enable=YES
Verifica si el usuario esta en el fichero antes de intentar el login local.
userlist_file=/etc/vsftpd.user_list
Path del fichero de usuarios admitidos.
userlist_deny=NO
Si se pone a YES, la lista de "vsftpd.user_list" se toma como la lista de usuarios denegados.
Nota: Con estas directrices se puede securizar un poco más, de manera muy sencilla, el servicio de FTP
jueves, 11 de septiembre de 2008
Configurando Plone - CMS - Gestiona tus contenidos
Introduccion.
Bueno tras solucionar el tema de las versiones... se me planteaba otro gran problema y era poder gestionar grandes cantidades de documentación (grandes para mi ;)), ya que pasaba casi más tiempo buscando la informacion en directorios de lo que tardaria con google.
Por esto me surgio la necesidad de montar algun gestor de contenidos, que me indexara los mismos, y ahi es donde entra Plone.........
HowTo.
S.O. Centos4
1.- Descargamos y descomprimimos Plone
[root@nodo1 ~]# cd /tmp/
[root@nodo1 tmp]# wget http://launchpad.net/plone/3.1/3.1.5.1/+download/Plone-3.1.5.1-UnifiedInstaller.tgz --10:53:06-- http://launchpad.net/plone/3.1/3.1.5.1/+download/Plone-3.1.5.1-Uni
.....
10:53:57 (720 KB/s) - `Plone-3.1.5.1-UnifiedInstaller.tgz.1' saved [36687150/366 [root@nodo1 tmp]# tar -zxvf Plone-3.1.5.1-UnifiedInstaller.tgz
.....
2.- Instalamos Plone
[root@nodo1 tmp]# cd Plone-3.1.5.1-UnifiedInstaller
[root@nodo1 Plone-3.1.5.1-UnifiedInstaller]# ./install.sh standalone
Nota: Las distintas opciones que tiene las puedes ver si ejecutas install.sh sin parametros.
Path,Nombre de la instancia, usuario efectivo para ejecutar la instancia, password de la instancia y compilacion de python que quieres usar. standalone o zeo(cluster)
Note: g++ is required for the install. Exiting now.
mmmm primera dependencia, pero... salvable.
[root@nodo1 opt]# yum install gcc-c++.i386
Instala:
gcc-c++
libstdc++-devel
Tras instalar estos paquetes repetimos la instalacion y funciona correctamente.
Al terminar la instalación, nos proporciona información bastante interesante:
##################################################################### ###################### Installation Complete ######################
Plone successfully installed at /opt/Plone-3.1
See /opt/Plone-3.1/zinstance/README.txt
for startup instructions
Use the account information below to log into the Zope Management Interface
The account has full 'Manager' privileges.
Username: admin
Password: ------------
This account is created when the object database is initialized. If you
change the password later, you'll need to use the new password.
Ask for help on plone-users list or #plone
Submit feedback and report errors at http://dev.plone.org/plone .
For install problems, specify component "Installer (Unified).
3.- Para que Plone en su version 3.x pueda indexar documentos ".doc" y ".pdf", es necesario instalar previamente, si se instalan despues, los documentos que ya se hayan subido no seran reindexados, una librerias especificas.
doc->wwware
pdf->xpdf
4.- Descargamos e "instalamos" xpdf
[root@nodo1 tmp]# wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl2-linux.tar.gz [root@nodo1 tmp]# tar -zxvf xpdf-3.02pl2-linux.tar.gz
[root@nodo1 tmp]# cd xpdf-3.02pl2-linux
Nota esto está explicado en el fichero "INSTALL"
[root@nodo1 xpdf-3.02pl2-linux]# cp pdffonts /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdfimages /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdfinfo /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftoppm /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftops /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftotext /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp xpdf /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp *.1 /usr/local/man/man1/.
5.- Descargamos e instalamos wwware
[root@nodo1 tmp]# wget http://downloads.sourceforge.net/wvware/wv-1.2.4.tar.gz?modtime=1161798556&big_mirror=0
[root@nodo1 tmp]# tar -zxvf wv-1.2.4.tar.gz
[root@nodo1 tmp]# cd wv-1.2.4
Ahora compilamos e instalamos..
[root@nodo1 wv-1.2.4]# ./configure
...........
configure: error: No package 'glib-2.0' found
Resolvemos la dependencia... y repetimos
[root@nodo1 wv-1.2.4]# yum install glib2-devel.i386
..........
[root@nodo1 wv-1.2.4]# ./configure
..........
configure: error: No package 'libgsf-1' found
Resolvemos la dependencia... y repetimos
[root@nodo1 wv-1.2.4]# yum install libgsf-devel.i386
..........
[root@nodo1 wv-1.2.4]# ./configure
..........
[root@nodo1 wv-1.2.4]# make
..........
[root@nodo1 wv-1.2.4]# make install
..........
Una vez llegados a este punto, ya tenemos instalado todo lo necesario.
La información sobre como parar y arrancar la instancia, como ajustar la configuración (puerto, etc), como acceder y demás, está en el fichero "README"
Nota: Para terminar, un par de cosas:
*He estado mirando aunque aun no lo he verificado el tema de las copias de seguridad y parece ser que el sistema almacena el contenido en un fichero de BD:
/opt/Plone-3.1/zinstance/var/filestorage/Data.fs
Bastaría copiar ese fichero para tener tus datos a buen recaudo.
*El uso de la aplicación se escapa de este HowTo, ya que hay estupendos manuales de usuario
Bueno tras solucionar el tema de las versiones... se me planteaba otro gran problema y era poder gestionar grandes cantidades de documentación (grandes para mi ;)), ya que pasaba casi más tiempo buscando la informacion en directorios de lo que tardaria con google.
Por esto me surgio la necesidad de montar algun gestor de contenidos, que me indexara los mismos, y ahi es donde entra Plone.........
HowTo.
S.O. Centos4
1.- Descargamos y descomprimimos Plone
[root@nodo1 ~]# cd /tmp/
[root@nodo1 tmp]# wget http://launchpad.net/plone/3.1/3.1.5.1/+download/Plone-3.1.5.1-UnifiedInstaller.tgz --10:53:06-- http://launchpad.net/plone/3.1/3.1.5.1/+download/Plone-3.1.5.1-Uni
.....
10:53:57 (720 KB/s) - `Plone-3.1.5.1-UnifiedInstaller.tgz.1' saved [36687150/366 [root@nodo1 tmp]# tar -zxvf Plone-3.1.5.1-UnifiedInstaller.tgz
.....
2.- Instalamos Plone
[root@nodo1 tmp]# cd Plone-3.1.5.1-UnifiedInstaller
[root@nodo1 Plone-3.1.5.1-UnifiedInstaller]# ./install.sh standalone
Nota: Las distintas opciones que tiene las puedes ver si ejecutas install.sh sin parametros.
Path,Nombre de la instancia, usuario efectivo para ejecutar la instancia, password de la instancia y compilacion de python que quieres usar. standalone o zeo(cluster)
Note: g++ is required for the install. Exiting now.
mmmm primera dependencia, pero... salvable.
[root@nodo1 opt]# yum install gcc-c++.i386
Instala:
gcc-c++
libstdc++-devel
Tras instalar estos paquetes repetimos la instalacion y funciona correctamente.
Al terminar la instalación, nos proporciona información bastante interesante:
##################################################################### ###################### Installation Complete ######################
Plone successfully installed at /opt/Plone-3.1
See /opt/Plone-3.1/zinstance/README.txt
for startup instructions
Use the account information below to log into the Zope Management Interface
The account has full 'Manager' privileges.
Username: admin
Password: ------------
This account is created when the object database is initialized. If you
change the password later, you'll need to use the new password.
Ask for help on plone-users list or #plone
Submit feedback and report errors at http://dev.plone.org/plone .
For install problems, specify component "Installer (Unified).
3.- Para que Plone en su version 3.x pueda indexar documentos ".doc" y ".pdf", es necesario instalar previamente, si se instalan despues, los documentos que ya se hayan subido no seran reindexados, una librerias especificas.
doc->wwware
pdf->xpdf
4.- Descargamos e "instalamos" xpdf
[root@nodo1 tmp]# wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl2-linux.tar.gz [root@nodo1 tmp]# tar -zxvf xpdf-3.02pl2-linux.tar.gz
[root@nodo1 tmp]# cd xpdf-3.02pl2-linux
Nota esto está explicado en el fichero "INSTALL"
[root@nodo1 xpdf-3.02pl2-linux]# cp pdffonts /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdfimages /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdfinfo /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftoppm /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftops /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp pdftotext /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp xpdf /usr/local/bin/.
[root@nodo1 xpdf-3.02pl2-linux]# cp *.1 /usr/local/man/man1/.
5.- Descargamos e instalamos wwware
[root@nodo1 tmp]# wget http://downloads.sourceforge.net/wvware/wv-1.2.4.tar.gz?modtime=1161798556&big_mirror=0
[root@nodo1 tmp]# tar -zxvf wv-1.2.4.tar.gz
[root@nodo1 tmp]# cd wv-1.2.4
Ahora compilamos e instalamos..
[root@nodo1 wv-1.2.4]# ./configure
...........
configure: error: No package 'glib-2.0' found
Resolvemos la dependencia... y repetimos
[root@nodo1 wv-1.2.4]# yum install glib2-devel.i386
..........
[root@nodo1 wv-1.2.4]# ./configure
..........
configure: error: No package 'libgsf-1' found
Resolvemos la dependencia... y repetimos
[root@nodo1 wv-1.2.4]# yum install libgsf-devel.i386
..........
[root@nodo1 wv-1.2.4]# ./configure
..........
[root@nodo1 wv-1.2.4]# make
..........
[root@nodo1 wv-1.2.4]# make install
..........
Una vez llegados a este punto, ya tenemos instalado todo lo necesario.
La información sobre como parar y arrancar la instancia, como ajustar la configuración (puerto, etc), como acceder y demás, está en el fichero "README"
Nota: Para terminar, un par de cosas:
*He estado mirando aunque aun no lo he verificado el tema de las copias de seguridad y parece ser que el sistema almacena el contenido en un fichero de BD:
/opt/Plone-3.1/zinstance/var/filestorage/Data.fs
Bastaría copiar ese fichero para tener tus datos a buen recaudo.
*El uso de la aplicación se escapa de este HowTo, ya que hay estupendos manuales de usuario
Suscribirse a:
Entradas (Atom)