Mostrando entradas con la etiqueta Linux - Centos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux - Centos. Mostrar todas las entradas

martes, junio 03, 2014

Sistema de ficheros en Linux


En Linux, el sistema de ficheros es bastante distinto al que se utiliza en Windows, de manera que la organización, ejecución y permisología de los archivos se hace de manera distinta. La principal ventaja es que en los archivos Linux, el usuario que crea los archivos puede gestionarlos como desee, ya que son de su propiedad, es decir, el mismo usuario puede decidir quien los ve, los lee y quien los ejecuta. En este artículo, veremos cómo se organizan los ficheros en Linux, cómo se visualizan y cómo cambiar los permisos de los ficheros.
Sistema de ficheros en Linux

Sistema de archivos

Un sistema de ficheros es una organización lógica de un dispositivo físico, que nos permite almacenar y recuperar cualquier tipo de información que deseemos en forma de fichero. Existen diferentes tipos de sistemas de ficheros, y en Linux los sistemas nativos son ext2 y ext3. Estos sistemas organizan los archivos en una especie de súper bloque con una cantidad de nodos específica y un área de datos extensa, que se asemeja a la organización de las ramas de un árbol.
Una de las principales ventajas de los sistemas de ficheros Linux, es que pueden realizarse tareas multiusuario, lo que permite al creador de los archivos adicionarles características específicas, así como también, ejercer propiedad sobre cada archivo creado o directorio.
Sistema de ficheros en Linux

Visualizando archivos en Linux

Los archivos en Linux son propiedad de quien los crea, este es el único usuario autorizado a eliminarlos (a excepción del administrador o root). Por supuesto, cuentan con una serie de permisos predeterminados, que puede cambiar el usuario creador a voluntad para, de esta manera, compartir los archivos con otros usuarios del sistema. Para visualizar estos archivos con todas sus características, debemos ejecutar la consola de Linux y escribir el siguiente comando: “ls –la”, desplegándose en la pantalla una lista de archivos con su permisología y características bien detalladas.
ficheros en Linux
Podemos notar como en la figura aparecen los atributos del archivo con una nomenclatura similar a “-rw-r–r—“ donde el primer espacio equivale a los directorios (d), en el caso de que sea un solo archivo queda con una barra “-“. Los tres espacios siguientes, son los permisos del creador r (lectura), w (escritura) y x (ejecución), vemos que en el ejemplo, el usuario creador sólo tiene permisos de lectura y escritura. El segundo bloque de tres espacios, indica los usuarios de un grupo y el último lote de tres, para todos los demás usuarios del sistema. Los permisos de lectura, escritura y ejecución, se indican de manera similar al del usuario creador, en este caso se otorga sólo lectura a los demás usuarios.
También, podemos observar que el nombre del usuario que aparece delante de users en las características del archivo, nos indica que ese usuario es el dueño del archivo. Por ejemplo, tutorial users, nos indica que el archivo es propiedad del usuario tutorial.
Ficheros en Linux

Cambiando los permisos de los archivos

Una vez que hemos aprendido a identificar y visualizar los atributos y permisos de los archivos en la línea de comandos de Linux, veremos la manera correcta de cambiar los permisos de los archivos que hemos creado, para ello, debemos utilizar la línea de comandos.
En este caso específico, vamos a utilizar el comando “chmod” que se encarga de cambiar los atributos de los archivos dentro del sistema. Debemos recordar, que utilizaremos las siguientes letras para indicar a que tipo de usuario le vamos a cambiar los permisos de acceso al fichero. Por ejemplo, utilizaremos la letra u para el usuario creador, la letra g para un grupo de usuarios, la letra o para los demás usuarios del sistema, y la letra a para todos los usuarios. De manera, que podamos cambiar los permisos a nuestros requerimientos, recordemos que solo el creador del archivo y root puede cambiar los permisos.
Permisología de archivos Linux
La estructura de cambio de permisos es la siguiente: “chmod usuario_o_grupo_de_usuarios_a_cambiar_el_permiso[+/-]permiso_a_otorgar_o_quitar archivo_a_modificar”. En donde, [+/-] dependerá de si deseamos quitar el permiso (-) o adicionarlo (+), y los permisos son: r (lectura), w (escritura), x (ejecución). A continuación, veremos un ejemplo explicativo:
El usuario llamado tux, desea cambiar los permisos de creación a lectura, escritura y ejecución para todos los usuarios, sólo debe escribir:
$ chmod a+rwx archivo.txt
El archivo de texto plano archive.txt podrá ser leído, cambiado y ejecutado por cualquier usuario del sistema, de este modo, podemos ver como los creadores de los archivos en sistema Linux, pueden otorgar diferentes permisos a los demás usuarios sobre sus propios archivos, realizando combinaciones de órdenes con el comando chmod.
Permiso de archivos en Linux
Los usuarios Linux, también pueden cambiar la propiedad de su archivo y otorgarla a otro usuario del mismo sistema, utilizando el comando chown, como podemos ver a continuación:
$ chown –c luis archivo.txt
Ahora, el archivo de texto plano pertenece al usuario luis, siendo este el único que podrá modificar sus atributos en el futuro.

Tomado de: http://culturacion.com/2012/07/sistema-de-ficheros-en-linux/

Navegadores de Linea de Comandos.


Lynx

Lynx es quizás el programa de navegación por línea de comandos más extendido de todo el mundo. Se trata de un programa que se instala en el sistema y al cual podemos acceder mediante un simple comando y que nos permite visualizar por pantalla en modo texto toda la información que estamos buscando. Podemos conectarnos a cualquier buscador web e incluso, ingresar a cualquier cuenta de corro electrónico.
Una de las características de Lynx, es que es multiplataforma y sus mandos de operación son bastante simples.

eLinks

Este programa (eLinks) de navegación web, a pesar de ser hecho para trabajar bajo la terminal de Linux, es bastante simple de utilizar. Cuenta con una serie de opciones bastante amigables y permite realizar descargas completas desde cualquier sitio web.
eLinks
Figura 4: Navegando con eLinks

W3M

Este sencillo navegador web está basado en FM y cuenta con un extraordinario sistema de seguridad (sistema SSL), que lo hace destacar entre sus rivales más cercanos. Si bien, W3M no es tan completo como Lynx, cuenta con una serie de herramientas de navegación, como sistema de descarga completa, y posibilidad de acceder a cualquier sitio web de forma simple.

Línea de comandos
Crear un procedimiento Main como línea de comandos, ejecutarlo programadamente desde el sistema operativo (tareas programadas o CRON).
Pros:
* Si da excepción vuelve a ejecutar
* La configuración de frecuencia es sencilla
Cons:
* Requiere configurar en el host, no está embebido en la aplicación
* Hay que configurar el main de java y el classpath a mano y mantenerlo actualizado si se agregan o cambian jars
* Si el proceso se queda bloqueado por algún error, se iran acumulando ejecuciones cada vez que el SO inicie la tarea.


Main HTTP

Crear un procedimiento Main como HTTP, ejecutarlo programadamente desde el sistema operativo (tareas programadas o CRON) utilizando un navegador de línea de comandos (wget, curl).
Pros:
* Si da excepción vuelve a ejecutar
* La configuración de frecuencia es sencilla
* No hay que configurar java ni classpath
Cons:
* Requiere configurar en el host, no está embebido en la aplicación
* Requiere un browser de línea de comandos (sencillo)
* Si el proceso se queda bloqueado por algún error, se iran acumulando ejecuciones cada vez que el SO inicie la tarea. 


Programador de tareas Java (ej: Quartz)
Crear un procedimiento Main como HTTP, ejecutarlo programadamente desde el sistema operativo (tareas programadas o CRON) utilizando un navegador de línea de comandos (wget, curl).
Pros:
* Si da excepción vuelve a ejecutar
* Es más fácil recuperar información de si una tarea quedó bloqueada
* No hay que configurar java ni classpath
* Está embebido en la aplicación (no requiere configuración en el host)
Cons:
* Configuración más complicada, suele requerir código java



ServletContextListener
Programar en Java un ServletContextListener que llame en loop infinito a un procedimiento GX.
Pros:
* No hay que configurar java ni classpath
* Está embebido en la aplicación (no requiere configuración en el host)
Cons:
* Requiere código java
* Se deben controlar las excepciones para evitar el que cancele
* Si se quiere flexibilidad en la frecuencia de ejecución, hay que programarlo (ej: leer parámetros)

Gracias a:  pablo@cybernet.com.uy Del Foro de Genexus

martes, abril 17, 2012

Seguridad en servidores Linux

Tomado de: ARTICULO ORIGINAL

Como llevo unos cuantos post filosóficos, vamos ahora con algo más técnico. Vamos a darle un pequeño repaso a algunas medidas de seguridad básicas para un linux y a su aplicación real hoy en día. Como veremos, muchas de las cosas que se venden como “seguridad en servidores linux”, han quedado obsoletas y no sirven para mucho. Empezaremos por repasar algunos conceptos de los de toda la vida, como la búsqueda de ficheros setuidados y la deshabilitación de servicios innecesarios. Tras esto, le daremos un repaso a la importancia actual de estas medidas de seguridad en un entorno corporativo actual. Finalmente, hablaremos de las nuevas tendencias en seguridad.

Puntos de montaje

Por defecto, FEDORA va a permitir la ejecución de archivos en /tmp/. Esto no es que sea muy grave, pero lo ideal sería montar /tmp en una partición aparte teniendo cuidado de ponerle los permisos adecuados:
/dev/sda4 /tmp ext3 defaults,nodev,noexec,nosuid 1,2
Que le dice a linux que no puedan crearse dispositvos, ni ejecutables ni archivos setuidados. Hoy en día, también hay que decirlo en honor a la verdad, estas cosas han quedado un tanto obsoletas. La seguridad de servidores se centra en las aplicaciones web y las bases de datos, y no en esto.

buscar archivos con el suid y el sguid

La búsqueda la hacemos así: find / (-perm -4000 -o -perm 2000 ) -type f -exec ls {} ;
En la salida, podemos ver que algunos de estos archivos no necesitan estos permisos especiales puestos, por ejemplo:
-rwsr-xr-x 1 root root 47524 2009-12-15 14:43 /bin/umount
-rwsr-xr-x 1 root root 70348 2009-12-15 14:43 /bin/mount
-rwsr-xr-x 1 root root 36876 2009-07-26 14:22 /bin/ping6
-rwsr-xr-x 1 root root 42072 2009-07-26 14:22 /bin/ping

Permisos laxos en directorios

Debemos buscar todos los directorios que tengan permiso de escritura demasiado laxo, por ejemplo directorios con un rw para todos, y que no tengan el sticky bit. Si nos fijamos, /tmp tiene dicho bit, que sirve para que cada usuario sea propietario de sus archivos, aunque todos los usuarios tengan permiso de escritura en el directorio.
ll /|grep tmp
drwxrwxrwt 10 root root 4.0K 2010-01-27 16:35 tmp/
Podemos hacer la búsqueda de archivos con permisos de escritura para “otros” y “todos” con este comando:
find / -type d ( -perm -g+w -o -perm -o+w ) -not -perm -a+t -exec ls -lad {} ;
Cuando obtenemos un directorio con estos permisos, por ejemplo el de debajo, deberemos buscar qué usuarios están en el grupo al que pertenece el archivo y ver que es correcto confiar en que puedan escribir:
drwxrwxr-x 3 root lp 4096 2010-01-20 11:48 /var/cache/cups
En este caso, no pasa nada ya que el grupo es el usuario que se usa para imprimir, lp.
En linux es posible controlar de forma mucho más granular los permisos de los archivos usando ACLs, pero la realidad es que resulta algo incómodo de administrar cuando tienes muchos usuarios y, por lo tanto, se acaba tirando por la calle de en medio y creando unos pocos grupos en los que acaba todo el mundo.
Tipicamente, un servidor linux que tenga una aplicación corriendo de la propia empresa va a tener directorios con los permisos mal puestos. En lugar de perder nuestro tiempo buscando fallos en el sistema operativo que son muy difíciles de explotar, como lo pueda ser que el binario ping esté setuidado, es siempre mejor ir a estos directorios de la empresa e intentar sacar información útil de ellos. Seguramente encontraremos scripts ejecutados por root y con permisos 777. Es cuestión de tiempo.

logs

Lo ideal es guardar todos los logs en un servidor remoto. Pero, si esto no se hace, al menos pueden ponerse los archivos de logs como “only append”, así:
chattr +a /var/log/secure
Lo que nunca dicen en los libros, es que la rotación de logs FALLA si se hace esto. En principio parece una tontería, porque /var/log/secure tampoco ocupa tanto, pero si hacemos esto con los logs de, por ejemplo, el apache tendremos que tener cuidado de incluir en nuestros scripts las correspondientes instrucciones para quitar el +a y volverlo a poner al final.
También existe la posibilidad de hacer que sea imposible quitar el +a sin reiniciar el servidor. Para ello hay que modificar CAP_LINUX_IMMUTABLE. Puedes leer más sobre esto, por ejemplo, en este link
De todas formas, no me cansaré de insistir en que lo mejor es guardar los logs en un servidor remoto.

Permisos mínimos para cada usuario

Seguramente tendremos unos cuantos usuarios que lleven distintos componentes del servidor, por ejemplo podríamos tener uno para administrar el apache y otro para la base de datos. Pues bien, hay que intentar restringir lo más posible lo que puede hacer cada usuario. Para esto, contamos con sudo.
Por ejemplo, imaginemos que el usuario pepe necesita hacer un backup del directorio etc. En este caso, lo que haremos será incluir una linea en /etc/sudoers conteniendo exactamente el comando del backup, con todos sus parámetros.
No me meto en describir cómo funciona esto porque hay información de sobras en internet, por ejemplo.

Quitar servicios innecesarios

Deberemos ver qué servicios corren en la máquina y eliminar aquellos innecesarios. En particular, con netstat -nlp veremos qué programas están escuchando en qué puertos, lo cual permite deshabilitar aquellos que no consideremos oportunos.
Por ejemplo, seguramente querrás quitar ip6tables (salvo que tengas ipv6, que no creo), cups (salvo que des servicios de impresión), …
netstat -nlp|grep 631|grep -v 127.0.0.1
udp 0 0 0.0.0.0:631 0.0.0.0:* 864/cupsd
En Fedora, RedHat y similares, con setup accedemos a habilitar/deshabilitar servicios.
Muchas veces los admins se saltan este paso porque hay un firewall que corta todos los servicios que no escuchan, lo cual está muy bien, pero no debemos olvidar que el hecho de tener un servicio escuchando innecesariamente puede abrirnos las puertas a nuevos ataques, aunque hoy en día esto es un tanto improbable.

Chroot

Chroot es un entorno restringido para los usuarios. Digamos que un linux “mínimo” en el que ejecutamos nuestros programas. En principio, una forma muy eficiente de restringir los privilegios de un usuario, como pueda ser el del apache o una base de datos, pero en la práctica resulta un poco complicado de instalar y, sobre todo, de mantener.
Posiblemente el ejemplo más fácil de entender para chroot sea con vsftp, uno de los servidores FTP más seguros actualmente que corre bajo linux. Un usuario que haga loggin bajo chroot estará restringido a su home y no podrá navegar por los directorios y bajarse /etc/passwd, que es la metedura de pata típica al configurar un FTP bajo linux.
Para restringir un usuario en vsftp lo único que hace falta es editar vsftpd.conf y poner chroot_local_user=YES. Esto debería ser suficiente.
Dedicaremos un artículo a cómo configurar chroot para un entorno interesante, y no lo típico que uno se encuentra por la red, que es ftp o ssh.

Snort

Snort es un detector de intrusos que detecta ataques basado en patrones conocidos. Ya hemos hablado de él en numerosas ocasiones, por ejemplo aquí.
La instalación de snort y su actualización es totalmente trivial bajándose las reglas de emerging-threats, cosa que en su día explicamos en este post.
Snort tiene la ventaja de cazar eficientemente escaneos desde herramientas conocidas, como puedan serwikto o nmap, permitiendo además, combinado con otro HIDS como pueda ser ossec, bloquear la IP atacante al instante.
El problema con snort es que no se entera del tráfico que va por ssl … aparte de no servir para mucho detectando ataques sobre aplicaciones web.

HIDS/Integrity checkers

Otra parte importante de la seguridad en linux es tener un buen HIDS (Host Intrution Detection System). Entre ellos, personalmente, me gusta ossec, que corre tanto bajo linux como bajo windows.
Un HIDS tiene una serie de tareas encomendadas, como puedan ser:
- monitorizar cambios en archivos importantes de linux, como puedan ser /etc/passwd o los binarios del sistema.
- detectar, combinado con un sniffer de red, ataques desde otros HOSTs.
- controlar el uso de recursos en busca de posibles ataques por denegación de servicio.
- buscar posibles troyanos, rootkits, backdoors, …, malware en general que haya podido ser instalado por un usuario malicioso (vease la famosa herramienta chkrootkit).
- guardar los logs en un servidor remoto donde no puedan ser manipulados
[...]
El problema con los HIDS es que, hoy en día, la mayoría de veces que se entra en un servidor es vía la web y los ficheros que se modifican son los de la aplicación web. En una aplicación con varios miles de archivos asp no es fácil monitorizar la integridad.
Así pues, la instalación de HIDS en servidores, que no niego que sea necesario y que ofrezca “cierta” seguridad, realmente no significa mucho.

Modificación de banners

Otra de las cosas típicas que recomiendan en todos los libros de seguridad es modificar los banners de las aplicaciones (ftp, servidor de correo), para añadir un cierto grado de dificultad a la explotación del servicio.
Ciertos servicios, como puedan ser FTP o SSH, son muy fáciles de tocar. Por ejemplo, en vsftp tenemos la opción banner_file, que sirve exactamente para esto. Otros, como sendmail, requieren recompilar.
Este es un ejemplo de banner de POSTFIX modificado:
smtpd_banner = $myhostname ESMTP Sendmail 8.12.9
Con esto conseguiremos confundir a algunas herramientas típicas, como puedan ser nmap o amap. Pero un hacker no necesita para nada saber la versión exacta de servicio que corre … ¿acaso no es posible lanzar todos los exploits tanto para postfix como para sendmail “a ver si cuela”?
Hoy en día, al tener frameworks como metasploit, no supone ningún esfuerzo lanzar unas docenas de exploits en minutos. Así pues, la seguridad por oscuridad ayuda, pero desde luego muy poquito. No podemos confiar en cambiar los banners.
Seguramente podríamos hablar y hablar de otras medidas de seguridad “a la vieja usanza” que pueden adoptarse en un servidor linux, pero estas son suficientes para pasar al siguiente punto …

CONCLUSIONES

De acuerdo, podemos quitar paquetes innecesarios, minimizar los servicios que corren, instalar HIDS, snort, tener logs remotos, buscar backdoors y troyanos en el sistema, cambiar banners, poner los servicios en CHROOT, … Podemos hacer todo esto y más pero, ¿sirve para algo?
Todas estas medidas antes mencionadas son requisito de normas como PCI-DSS, que es obligatorio para manipular tarjetas de crédito, y, sin embargo, siguen robándose tarjetas de crédito. ¿Por qué?
La explicación es que hoy en día nadie tiene demasiado interés en instalar un troyano en un sistema o en intentar explotar una versión vieja de sendmail (cosa casi imposible en una entidad mínimamente importante). Las intrusiones vienen por la web, principalmente vía sql-injection en entornos LAMP, y los hackers no tienen ningún interés en añadir un usuario al sistema.
Lo que se busca es acceder a la base de datos y bajársela, nada más. No importa que sea un entorno chroot, ya que seguiremos podiendo hacer queries contra el mysql, que es realmente lo que necesitamos. Tampoco importa que vigilemos todo el tráfico de entrada en busca de patrones conocidos, puesto que en realidad este tráfico es muy fácil de confundir con tráfico legítimo. ¿Para que sirven los IDS/IPS?
La seguridad “tradicional” a muerto. Hoy en día lo realmente importante es securizar a nivel de aplicación.¿Afrontamos el problema o lo seguimos ignorando?

martes, octubre 25, 2011

Seguridad en Linux

Tomado de: Seguridad en Linux


Como llevo unos cuantos post filosóficos, vamos ahora con algo más técnico. Vamos a darle un pequeño repaso a algunas medidas de seguridad básicas para un linux y a su aplicación real hoy en día. Como veremos, muchas de las cosas que se venden como “seguridad en servidores linux”, han quedado obsoletas y no sirven para mucho.

Empezaremos por repasar algunos conceptos de los de toda la vida, como la búsqueda de ficheros setuidados y la deshabilitación de servicios innecesarios. Tras esto, le daremos un repaso a la importancia actual de estas medidas de seguridad en un entorno corporativo actual. Finalmente, hablaremos de las nuevas tendencias en seguridad.

Puntos de montaje

Por defecto, FEDORA va a permitir la ejecución de archivos en /tmp/. Esto no es que sea muy grave, pero lo ideal sería montar /tmp en una partición aparte teniendo cuidado de ponerle los permisos adecuados:
/dev/sda4 /tmp ext3 defaults,nodev,noexec,nosuid 1,2
Que le dice a linux que no puedan crearse dispositvos, ni ejecutables ni archivos setuidados. Hoy en día, también hay que decirlo en honor a la verdad, estas cosas han quedado un tanto obsoletas. La seguridad de servidores se centra en las aplicaciones web y las bases de datos, y no en esto.

buscar archivos con el suid y el sguid

La búsqueda la hacemos así: find / (-perm -4000 -o -perm 2000 ) -type f -exec ls {} ;
En la salida, podemos ver que algunos de estos archivos no necesitan estos permisos especiales puestos, por ejemplo:
-rwsr-xr-x 1 root root 47524 2009-12-15 14:43 /bin/umount
-rwsr-xr-x 1 root root 70348 2009-12-15 14:43 /bin/mount
-rwsr-xr-x 1 root root 36876 2009-07-26 14:22 /bin/ping6
-rwsr-xr-x 1 root root 42072 2009-07-26 14:22 /bin/ping

Permisos laxos en directorios

Debemos buscar todos los directorios que tengan permiso de escritura demasiado laxo, por ejemplo directorios con un rw para todos, y que no tengan el sticky bit. Si nos fijamos, /tmp tiene dicho bit, que sirve para que cada usuario sea propietario de sus archivos, aunque todos los usuarios tengan permiso de escritura en el directorio.
ll /|grep tmp
drwxrwxrwt 10 root root 4.0K 2010-01-27 16:35 tmp/
Podemos hacer la búsqueda de archivos con permisos de escritura para “otros” y “todos” con este comando:
find / -type d ( -perm -g+w -o -perm -o+w ) -not -perm -a+t -exec ls -lad {} ;
Cuando obtenemos un directorio con estos permisos, por ejemplo el de debajo, deberemos buscar qué usuarios están en el grupo al que pertenece el archivo y ver que es correcto confiar en que puedan escribir:
drwxrwxr-x 3 root lp 4096 2010-01-20 11:48 /var/cache/cups
En este caso, no pasa nada ya que el grupo es el usuario que se usa para imprimir, lp.
En linux es posible controlar de forma mucho más granular los permisos de los archivos usando ACLs, pero la realidad es que resulta algo incómodo de administrar cuando tienes muchos usuarios y, por lo tanto, se acaba tirando por la calle de en medio y creando unos pocos grupos en los que acaba todo el mundo.
Tipicamente, un servidor linux que tenga una aplicación corriendo de la propia empresa va a tener directorios con los permisos mal puestos. En lugar de perder nuestro tiempo buscando fallos en el sistema operativo que son muy difíciles de explotar, como lo pueda ser que el binario ping esté setuidado, es siempre mejor ir a estos directorios de la empresa e intentar sacar información útil de ellos. Seguramente encontraremos scripts ejecutados por root y con permisos 777. Es cuestión de tiempo.

logs

Lo ideal es guardar todos los logs en un servidor remoto. Pero, si esto no se hace, al menos pueden ponerse los archivos de logs como “only append”, así:
chattr +a /var/log/secure
Lo que nunca dicen en los libros, es que la rotación de logs FALLA si se hace esto. En principio parece una tontería, porque /var/log/secure tampoco ocupa tanto, pero si hacemos esto con los logs de, por ejemplo, el apache tendremos que tener cuidado de incluir en nuestros scripts las correspondientes instrucciones para quitar el +a y volverlo a poner al final.
También existe la posibilidad de hacer que sea imposible quitar el +a sin reiniciar el servidor. Para ello hay que modificar CAP_LINUX_IMMUTABLE. Puedes leer más sobre esto, por ejemplo, en este link
De todas formas, no me cansaré de insistir en que lo mejor es guardar los logs en un servidor remoto.

Permisos mínimos para cada usuario

Seguramente tendremos unos cuantos usuarios que lleven distintos componentes del servidor, por ejemplo podríamos tener uno para administrar el apache y otro para la base de datos. Pues bien, hay que intentar restringir lo más posible lo que puede hacer cada usuario. Para esto, contamos con sudo.
Por ejemplo, imaginemos que el usuario pepe necesita hacer un backup del directorio etc. En este caso, lo que haremos será incluir una linea en /etc/sudoers conteniendo exactamente el comando del backup, con todos sus parámetros.
No me meto en describir cómo funciona esto porque hay información de sobras en internet, por ejemplo.

Quitar servicios innecesarios

Deberemos ver qué servicios corren en la máquina y eliminar aquellos innecesarios. En particular, con netstat -nlp veremos qué programas están escuchando en qué puertos, lo cual permite deshabilitar aquellos que no consideremos oportunos.
Por ejemplo, seguramente querrás quitar ip6tables (salvo que tengas ipv6, que no creo), cups (salvo que des servicios de impresión), …
netstat -nlp|grep 631|grep -v 127.0.0.1
udp 0 0 0.0.0.0:631 0.0.0.0:* 864/cupsd
En Fedora, RedHat y similares, con setup accedemos a habilitar/deshabilitar servicios.
Muchas veces los admins se saltan este paso porque hay un firewall que corta todos los servicios que no escuchan, lo cual está muy bien, pero no debemos olvidar que el hecho de tener un servicio escuchando innecesariamente puede abrirnos las puertas a nuevos ataques, aunque hoy en día esto es un tanto improbable.

Chroot

Chroot es un entorno restringido para los usuarios. Digamos que un linux “mínimo” en el que ejecutamos nuestros programas. En principio, una forma muy eficiente de restringir los privilegios de un usuario, como pueda ser el del apache o una base de datos, pero en la práctica resulta un poco complicado de instalar y, sobre todo, de mantener.
Posiblemente el ejemplo más fácil de entender para chroot sea con vsftp, uno de los servidores FTP más seguros actualmente que corre bajo linux. Un usuario que haga loggin bajo chroot estará restringido a su home y no podrá navegar por los directorios y bajarse /etc/passwd, que es la metedura de pata típica al configurar un FTP bajo linux.
Para restringir un usuario en vsftp lo único que hace falta es editar vsftpd.conf y poner chroot_local_user=YES. Esto debería ser suficiente.
Dedicaremos un artículo a cómo configurar chroot para un entorno interesante, y no lo típico que uno se encuentra por la red, que es ftp o ssh.

Snort

Snort es un detector de intrusos que detecta ataques basado en patrones conocidos. Ya hemos hablado de él en numerosas ocasiones, por ejemplo aquí.
La instalación de snort y su actualización es totalmente trivial bajándose las reglas de emerging-threats, cosa que en su día explicamos en este post.
Snort tiene la ventaja de cazar eficientemente escaneos desde herramientas conocidas, como puedan serwikto o nmap, permitiendo además, combinado con otro HIDS como pueda ser ossec, bloquear la IP atacante al instante.
El problema con snort es que no se entera del tráfico que va por ssl … aparte de no servir para mucho detectando ataques sobre aplicaciones web.

HIDS/Integrity checkers

Otra parte importante de la seguridad en linux es tener un buen HIDS (Host Intrution Detection System). Entre ellos, personalmente, me gusta ossec, que corre tanto bajo linux como bajo windows.
Un HIDS tiene una serie de tareas encomendadas, como puedan ser:
- monitorizar cambios en archivos importantes de linux, como puedan ser /etc/passwd o los binarios del sistema.
- detectar, combinado con un sniffer de red, ataques desde otros HOSTs.
- controlar el uso de recursos en busca de posibles ataques por denegación de servicio.
- buscar posibles troyanos, rootkits, backdoors, …, malware en general que haya podido ser instalado por un usuario malicioso (vease la famosa herramienta chkrootkit).
- guardar los logs en un servidor remoto donde no puedan ser manipulados
[...]
El problema con los HIDS es que, hoy en día, la mayoría de veces que se entra en un servidor es vía la web y los ficheros que se modifican son los de la aplicación web. En una aplicación con varios miles de archivos asp no es fácil monitorizar la integridad.
Así pues, la instalación de HIDS en servidores, que no niego que sea necesario y que ofrezca “cierta” seguridad, realmente no significa mucho.

Modificación de banners

Otra de las cosas típicas que recomiendan en todos los libros de seguridad es modificar los banners de las aplicaciones (ftp, servidor de correo), para añadir un cierto grado de dificultad a la explotación del servicio.
Ciertos servicios, como puedan ser FTP o SSH, son muy fáciles de tocar. Por ejemplo, en vsftp tenemos la opción banner_file, que sirve exactamente para esto. Otros, como sendmail, requieren recompilar.
Este es un ejemplo de banner de POSTFIX modificado:
smtpd_banner = $myhostname ESMTP Sendmail 8.12.9
Con esto conseguiremos confundir a algunas herramientas típicas, como puedan ser nmap o amap. Pero un hacker no necesita para nada saber la versión exacta de servicio que corre … ¿acaso no es posible lanzar todos los exploits tanto para postfix como para sendmail “a ver si cuela”?
Hoy en día, al tener frameworks como metasploit, no supone ningún esfuerzo lanzar unas docenas de exploits en minutos. Así pues, la seguridad por oscuridad ayuda, pero desde luego muy poquito. No podemos confiar en cambiar los banners.
Seguramente podríamos hablar y hablar de otras medidas de seguridad “a la vieja usanza” que pueden adoptarse en un servidor linux, pero estas son suficientes para pasar al siguiente punto …

CONCLUSIONES

De acuerdo, podemos quitar paquetes innecesarios, minimizar los servicios que corren, instalar HIDS, snort, tener logs remotos, buscar backdoors y troyanos en el sistema, cambiar banners, poner los servicios en CHROOT, … Podemos hacer todo esto y más pero, ¿sirve para algo?
Todas estas medidas antes mencionadas son requisito de normas como PCI-DSS, que es obligatorio para manipular tarjetas de crédito, y, sin embargo, siguen robándose tarjetas de crédito. ¿Por qué?
La explicación es que hoy en día nadie tiene demasiado interés en instalar un troyano en un sistema o en intentar explotar una versión vieja de sendmail (cosa casi imposible en una entidad mínimamente importante). Las intrusiones vienen por la web, principalmente vía sql-injection en entornos LAMP, y los hackers no tienen ningún interés en añadir un usuario al sistema.
Lo que se busca es acceder a la base de datos y bajársela, nada más. No importa que sea un entorno chroot, ya que seguiremos podiendo hacer queries contra el mysql, que es realmente lo que necesitamos. Tampoco importa que vigilemos todo el tráfico de entrada en busca de patrones conocidos, puesto que en realidad este tráfico es muy fácil de confundir con tráfico legítimo. ¿Para que sirven los IDS/IPS?
La seguridad “tradicional” a muerto. Hoy en día lo realmente importante es securizar a nivel de aplicación.¿Afrontamos el problema o lo seguimos ignorando? 

lunes, junio 27, 2011

Actualizar la version de PHP a 5.2 o mas en CentOS

Tomado de: Actualizar PHP en Centos/

continuación mostraré un manual para actualizar la versión del PHP en un servidor Linux CentOS.
A mi me ha funcionado de maravilla, me estaba dando error la funcion json_encode() que estaba usando para una aplicación Ajax con CakePHP y con podía continuar sino instaba ese paquete o actualizaba el PHP.

Añadir los Repositorios

Antes de instalar nada hay que añadir el repositorio para poder descargar la versión 5.2 de php mediante el comando yum
No elimines ningún archivo del repositorio, crea uno nuevo con el siguiente nombre.
1/etc/yum.repos.d/CentOS-Testing.repo
utiliza tu editor de texto que prefieras, vi, nano, etc, yo uso mcedit. Copia dentro el siguiente texto.
He mantenido los comentarios originales de CentOS
01# CentOS-Testing:
02 # !!!! CAUTION !!!!
03 # This repository is a proving grounds for packages on their way to CentOSPlus and CentOS Extras.
04 # They may or may not replace core CentOS packages, and are not guaranteed to function properly.
05 # These packages build and install, but are waiting for feedback from testers as to
06 # functionality and stability. Packages in this repository will come and go during the
07 # development period, so it should not be left enabled or used on production systems without due
08 # consideration.
09 [c5-testing]
10 name=CentOS-5 Testing
11 baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
12 enabled=1
13 gpgcheck=1
14 gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
15 includepkgs=php*
Si quieres antes de actualizar puedes ver los paquetes que tienes instalados de PHP. Para ello ejecuta el siguiente comando:
1rpm -qa |grep php

Actualiza la version de PHP

Ahora ya puedes actualizar el PHP. Ejecuta el siguiente comando.
1yum update
Verás como se estable una conexión al servidor de repositorio y se empiezan a descargar los nuevos paquetes de la versión del PHP.

Reinicia el Apache

Una vez que haya terminado de instalar, reinicia el Apache.
1service httpd restart
Fuente original que he seguido para actualizar mi servidor CentOs: http://wiki.centos.org/HowTos/PHP_5.1_To_5.2

viernes, junio 17, 2011

Apache 2

Tomado de: Apache 2

Instalación

$apt-get install apache2

Estructura

El fichero de configuración es: /etc/apache2/apache2.conf
La configuración propia del usuario se recomienda que se introduzca en: /etc/apache2/httpd.conf

Cuando se modifican estos ficheros, para comprobar que todo está bien, se puede lanzar el siguiente comando:
apache2ctl configtest
Tiene dos carpetas:
  1. sites-available: que contiene la configuración de todos los sitios o VirtualHost definidos en apache2.
  2. sites-enabled: que contiene enlaces a las configuraciones definidas en el directorio anterior, indicando cuáles de ellas están activas.

Crear un Virtual Host


1) Hacemos una copia del VirtualHost por defecto:
cd /etc/apache2/sites-available
cp default pruebas
2) Editamos pruebas para cambiar el ServerName y el DocumentRoot, las variables que definen el nombre al que responderá este sitio y la ruta en disco a los ficheros de ese sitio, respectivamente. También estaría bien cambiar la directiva "Directory" para que en lugar de hablar de /var/www hable de la nueva ruta:
ServerName pruebas.dominio.org
DocumentRoot /var/www/pruebas/

<Directory /var/www/pruebas/>

...

</Directory>
3) Habilitamos el site, utilizando los comandos para habilitar y deshabilitar sites del apache2:
a2ensite pruebas
4) Recargamos la configuración del apache2:
/etc/init.d/apache2 force-reload
Los comandos para habilitar y deshabilitar sites y módulos en el apache2 tienen nombres bastante lógicos:
  • a2ensite: apache2 enable site, habilita sites.
  • a2dissite: apache2 disable site, deshabilita sites.
  • a2enmod: apache2 enable module, habilita módulos.
  • a2dismod: apache2 disable module, deshabilita módulos.


Usar .htaccess para poner contraseñas


Protección de recursos mediante contraseña:

Tres pasos:
1) Crear un archivo con claves y usuarios:

htpasswd -c /etc/passwd.apache username
con la opción -c estamos indicando la ruta del archivo de claves ( que es recomendable que esté fuera del árbol web público para que nadie se lo pueda bajar). Además estamos poniendo el username o nombre de usuario que queremos crear en dicho archivo, que puede ser uno que esté en el sistema o no, es independiente. Nos pedirá la contraseña para dicho usuario.
Con el fin de establecer la seguridad necesaria, cambie los atributos de lectura y escritura solo para el usuario apache:

chmod 600 /etc/passwd.apache
chown apache:apache /etc/passwd.apache


Si más tarde querríamos añadir más usuarios a dicho archivo para que puedan acceder al recurso web:
htpasswd /etc/passwd.apache username

2) Crear otro archivo descriptivo del recurso a proteger:

Posteriormente, en el directorio web que queramos proteger, deberemos crear un archivo oculto llamado .htaccess con el siguiente contenido:
AuthName “Privado”
AuthType Basic
AuthUserFile /etc/passwd.apache
Require valid-user
3) Hacer que el Apache proteja dicho recurso:

Por último, deberemos indicar a Apache que para dicho directorio busque el archivo .htaccess que en la configuración por defecto, habíamos puesto en la directiva AllowOverride None para que no lo hiciera. Entonces, si el directorio a proteger es /var/www/privado/ deberemos añadir en /etc/apache/httpd.conf algo como:
<Directory /var/www/privado/>
AllowOverride AuthConfig
</Directory>
y recargar la configuración del servidor.


AllowOverride

La directiva AllowOverride sirve para redefinir directivas declaradas anteriormente. Puede tener varios valores:
  • AuthConfig: permite el uso de todas las directivas de autorización.
  • FileInfo: permite el uso de directivas de manejo de tipos de archivos.
  • Indexes: permite el uso de directivas que controlen la creación de índices de directorios.
  • Limit: permite el uso de directivas relacionadas con el límite en accesos.
  • Options: permite el uso de directivas relacionadas con las propiedades de un determinado directorio.
Si estamos en un servidor compartido, puede ser peligroso ponerlo a All.

Alias dentro de un mismo VirtualHost



<VirtualHost *>
ServerAdmin admin@midireccion.es
ServerName www.midireccion.es
DocumentRoot /var/www/pagina
DirectoryIndex index.php
Alias /blog "/var/www/blog"
Alias /wiki "/var/www/wiki"
</VirtualHost>

miércoles, mayo 04, 2011

Instalando VMware-Tools en CentOS 5

Tomado de: Instalar Vmware Tools

Realizar lo siguiente: 

yum install gcc kernel-devel

uname -r

rpm -q kernel-devel 
 
Si existe diferencia entre las dos respuesta, debemos ejecutar lo siguiente:
 
yum -y upgrade kernel kernel-devel 
reboot

Seguidamente realice los siguiente pasos:
 
1.- Luego vaya en el Vmware - en la opción del menú VM, seleccione instalar Vmware Tools. Extraiga en una carpeta.
2.- Extraiga en una carpeta.
3.- Ubíquese en la carpeta donde se desempaqueto, luego ejecute ./vmware.....
4.- Luego responda la serie de preguntas que requiere el proceso de instalación 

lunes, mayo 02, 2011

Instalando Nagios en CentOS 5.5

Tomado de: Instalado Nagios

Corremos Nagios para monitorizar aproximadamente 35 servidores y varios cientos de servicios en nuestro medio. Podemos incluso utilizarlo para supervisar alrededor de 20 sitios web que de acogida y notificarnos cuando los certificados SSL necesidad de ser renovado. Nagios es una solución muy robusta y adaptable, no es la cosa más fácil del mundo para configurar, pero bien vale la pena el esfuerzo. 
Desactivar selinux
  • # setenforce 0
Adicionar regla en iptables que acepte trafico desde el puerto 80.
  • # iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • # service iptables save
  • # service iptables restart
Instalamos paquetes requeridos.
  • # yum install httpd gcc glibc glibc-common gd gd-devel php
Creamos un Usuario Nagios.
  • # useradd -m nagios
Creamos un Grupo Nagios.,
  • # groupadd nagcmd
Agregar usuario nagios y el usuario apache al grupo de nagios.
  • # usermod -a -G nagcmd nagios
  • # usermod -a -G nagcmd apache
Creamos un  Directorio para descargar nagios.
  • # mkdir /etc/downloads
  • # cd /etc/downloads
Descargamos Nagios y Archivos Plugins (Revisar la ultima versión)
Extraer archivos.
  • # tar xzf nagios-3.2.3.tar.gz
  • # tar xzf nagios-plugins-1.4.15.tar.gz
Configurar/Compilar
  • # cd /etc/downloads/nagios-3.2.3
  • # ./configure --with-command-group=nagcmd
  • # make all
  • # make install
  • # make install-init
  • # make install-config
  • # make install-commandmode
  • # make install-webconf
Crear una cuenta de usuario con interfase Web.
  • # htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
Reiniciar Apache:
  • # service httpd restart
Instalar Plugins de Nagios.
  • # cd /etc/downloads/nagios-plugins-1.4.15.tar.gz
Configurar/Compilar
  • # ./configure --with-nagios-user=nagios --with-nagios-group=nagios
  • # make
  • # make install
Adicionar arranque automatico de Nagios.
  • # chkconfig --add nagios
  • # chkconfig nagios on
  • # chkconfig httpd on
Arranacar Nagios como servicio.
  • # service nagios start

Pruebar la interfaz web desde una máquina con un navegador web, por ejemplo con el FireFox, en la URL digite http:// ip del servidor/nagios
Si ya tenemos conexion y podemos navegar por los menús quiere decir que ya está listo para comenzar a configurar su sistema de control de los servicios / hosts en la red.
He aquí un par de capturas de pantalla de la interfaz web.
 Disponibilidad de información en hosts o servicios
nagios2

Otra Posibilidad: Como instalar Nagios Centreon en CentOS 5.5 - 64bits
Tomado de: Instala Nagios en Centos 64 Bits

+————–————–——+
| INSTALL OS                 |
+————–————–——+

1.Install CentOS
Select only Server option, witch has already lots of packets also too many
Updates system
# yum -y update rpm
# yum -y -y -v update
(if using proxy check this link)
2.Remove Useless (GUI,Squid,etc…):
# yum -y remove gdm
# yum -y -v remove squid
3. Set to startup in level 3 (cmd line only):
# vim \etc\inittab
4.Disable (know what u need and dont need) startup of useless services:
# chkconfig –level 3 bluetooth off
# chkconfig –list |grep 3:on
5.Disable SELinux (a not simple security system):
# vim /etc/selinux/config
SELINUX=disabled
# reboot
(if u want simple and good security use AppArmor and Fail2Ban)
————————
Install Pre-requisites:
————————
# yum -y install libstdc++-devel gcc-c++
# yum -y install httpd
# yum -y install gd gd-devel
(NOT NEEDED) # yum groupinstall “Development Tools”
# yum -y install kernel-devel
Install SSL and MySQL
# yum -y install openssl-devel perl-DBD-MySQL mysql-server mysql-devel
Installing PHP
# yum -y -v install php php-mysql php-gd php-ldap php-xml
Installing DBI modules
# yum -y install perl-DBI perl-DBD-MySQL
Installing RRDTools (ruby,pango,etc…)
# yum -y install ruby cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
(Jul-2010, ver 1.4.4)
# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.4.tar.gz
# tar -zxvf rrdtool-1.4.4.tar.gz
# cd rrdtool-1.4.4
# ./configure –prefix=/usr/local/rrdtool
# make all
# make install
Installing SNMP
# yum -y install perl-Crypt-DES perl-Digest-SHA1 perl-Digest-HMAC net-snmp-utils
# yum -y install perl-Socket6 perl-IO-Socket-INET6 net-snmp net-snmp-libs php-snmp dmidecode lm_sensors perl-Net-SNMP net-snmp-perl
Other APPs
# yum -y install fping graphviz cpp gcc gcc-c++ libstdc++ glib2-devel
Installation and PEAR configuration
# yum install php-pear
Configuration
Only if you do use a proxy:
# pear config-set http_proxy http://user:pass@domain:port ..
To confirm
# pear config-show
Update Pear package before install
# pear channel-update pear.php.net
pear upgrade-all
+————————————————+
| INSTALL NAGIOS |
+————————————————+
# groupadd nagios
# adduser nagios -g nagios
# passwd nagios
Check if Nagios User is created
# grep nagios /etc/passwd
Add Webserver user (apache) and Nagios user (nagios)
# usermod -G nagios nagios
# usermod -G apache,nagios apache
Check if the users are the members of the group by
# grep nagios /etc/group
# mkdir /usr/local/nagios
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
# tar -zxvf nagios-3.2.3.tar.gz && cd nagios-3.2.3
# ./configure –with-httpd-conf=/etc/httpd/conf.d/ –with-init-dir=/etc/init.d/ –-enable-embedded-perl –-prefix=/usr/local/nagios -–with-cgiurl=/nagios/cgi-bin –-with-htmurl=/nagios/ –-with-nagios-user=nagios –-with-nagios-group=nagios -–with-command-group=nagios -–enable-nanosleep -–enable-event-broker –with-perlcache
*** Important: Copy and Paste will fail on double-dashes so manually fix it.pwd
Help, also to check all parameters and what they do
./configure –help
Test install:
# make test
Troubleshooting:
Any errors be sure to install dependencies, many times I had problem with embedded-perl
All can easly be done using cpan cmd:
http://user:pass@1server:8080
# cpan
Configure CPAN
> o conf init
#> install Test:Simple Test::Long Test::WWW::Mechanize::CGI
In case CPAN is not working:
# wget http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWERN/Test-Simple-0.96.tar.gz
# wget http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/Test-LongString-0.14.tar.gz
# wget http://search.cpan.org/CPAN/authors/id/M/MR/MRAMBERG/Test-WWW-Mechanize-CGI-0.1.tar.gz
Path to Perl (only if needed)
For 32bits
export PERL5LIB=/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libperl.so libperl.so
Finally Install Nagios
# make all && make install && make install-init && make install-commandmode & make install-config
# make install-webconf
# ls -l /usr/local/nagios
You should see six different subdirectories.
drwxrwxr-x 2 nagios nagios DIRs: bin / etc / libexec / sbin / share / var
SETTING UP THE WEBSERVER
Set the password for the Web Access
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
You may need to Edit cgi.cfg to allow nagiosadmin user
# vim /usr/local/nagios/etc/cgi.cfg
authorized_for_system_information=nagiosadmin
httpd.conf (Even knowing that make install-webconf copies a file to /etc/httpd/conf.d/nagios.conf
I noticed that it only worked once i fix a slash that was missing in share/
Alias /nagios/ “/usr/local/nagios/share/”
I also prefered to have it all inside the httpd.conf file, my is like this:
ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin”
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios/ “/usr/local/nagios/share/”
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Finally Restart Apache and Nagios
# service httpd restart
# service nagios restart
Add both to auto start
# chkconfig –add httpd
# chkconfig –level 35 httpd on
# chkconfig –add nagios
# chkconfig –level 35 nagios on
Try it on your browser:
http:///nagios/
If something goes wrong look into:
/var/logs/httpd/error_log
/usr/local/nagios/etc/htpasswd.users
/usr/local/nagios/etc/cgi.cfg
+————————–+
| INSTALL NAGIOS PLUGINS |
+————————–+
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# ./configure –with-openssl=/usr/bin/openssl –enable-perl-modules –prefix=/usr/local/nagios –with-nagios-user=nagios
# make all
# make install
Check if the plugins are here
# ls -l /usr/local/nagios/libexec
Give nagios:nagios and execute permission
# chown nagios:nagios -R /usr/local/nagios/libexec
# chmod +x -R /usr/local/nagios/libexec
+——————————-+
| INSTALL CENTREON WEB INTERFACE |
+——————————-+
Install MySQL & PHP5
# yum -y -v install mysql-server
# yum -y -v install php-date
# yum -y -v install php-gd php-mysql php-snmp php-ldap php5-xmlrpc
(NOT WORKING)# yum -y -v install php-mail php-mail-mime php-net-smtp php-net-socket
# yum -y -v install
Start mysql in safe mode and set password
#service mysqld_safe –skip-grant-tables
Set password
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD(“password”) where User=’root’;
mysql> flush privileges;
mysql> quit
# service mysqld restart
# chkconfig –add mysqld
# chkconfig –level 3 mysqld on
(Optional) – PhpMySQLAdmin for easy administration of MySQL:
# yum -y -v install phpmyadmin
To access go to:
http://infonagiosdsv/phpMyAdmin
(———PAUSE————)
Install NDOUtils
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz
# tar -zxvf ndoutils-1.4b9.tar.gz
#./configure
#make all
#make install
(do not run the script to creat a DB, Centreon will do it)
Install EMAIL:
PostFix OR
# yum -y -v install postfix
SendMail,
# yum -y -v install sendmail
Do a Email Test
# echo “TEST EMAIL” | sendmail -s “testing my first email” youtemail@domain.xxx
Upgrade PEAR
# pear upgrade pear
# pear channel-update pear.php.net
# pear install -o -f –alldeps DB_DataObject DB_DataObject_FormBuilder MDB2 Numbers_Roman
# pear install -o -f –alldeps Numbers_Words HTML_Common HTML_QuickForm2 HTML_QuickForm_advmultiselect HTML_Table Auth_SASL
# pear install -o -f –alldeps HTTP Image_Canvas Image_Color Image_Graph Image_GraphViz Net_Traceroute Net_Ping Validate XML_RPC
# pear install -o -f –alldeps SOAP
Php Requirements
# yum install php-mbstring php-posix
Fix Sudo (comment line Defualt requiretty)
# vim /etc/sudoers
#Default requiretty
:wq!
Get Centreon (at this time latest is 2.1.3 06/11/2009)
# wget http://download.centreon.com/index.php?id=144
# bash install.sh -i -v
All defaults OK, but these:
Where is installed RRD perl modules [RRDs.pm] ?
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/RRDs.pm
Where is PEAR [PEAR.php]
/usr/share/pear/PEAR.php
RRD?
/usr/local/rrdtool/bin/rrdtool
Where is NDO?
/usr/local/nagios/bin/ndomod.o
Start Configuration GUI:
http:///centreon
Recomendations:
If some dependicies is not met just install it and restart httpd
Use the ndo Database with name: nagios
You may need to start NDOUtils
# /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Auto START/STOP NDO daemon.
# vim /etc/init.d/nagios
find line bellow start and add:
“if [ $? -eq 0 ]; then…”
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
“su – $NagiosUser -c “touch $NagiosVarDir/nagios.log $NagiosRetentionFile…”
find line bellow stop and add:
“killproc_nagios nagios…”
histoy
Be sure to configure your local SNMP community so the
predefined checks will work
# vim /etc/snmp/snmpd.conf
# service snmpd restart
# chkconfig –add snmpd
# chkconfig –level 3 snmpd on
I also noticed an error when running the centreon plugins
ERROR:
Can’t locate Net/SNMP.pm in @INC
SOLUTION:
1) By CPAN (best)
on command line, as root :
[your_host]# perl -MCPAN -e shell
cpan shell — CPAN exploration and modules installation (v1.76)
ReadLine support enabled
cpan> install Net::SNMP
If it’s the first time you run CPAN, it will probably ask you some (simple) questions.
CPAN will also ask you to satisfy some dependencies (Crypt::DES, Digest::MD5, etc..).
2) “By hand”
Get the folowings modules (tar.gz format) on www.cpan.org
- Crypt::DES
- Digest::MD5
- Digest::SHA1
- Digest::HMAC
- Net::SNMP
for each one (you must install Net::SNMP at the end) :
tar zxf .tar.gz
cd
perl Makefile.pl
make test
make install
+—————–+
|INSTALL DOKUWIKI |
+—————–+
Set apache configuration
# vim /etc/httpd/conf.d/dokuwiki.conf
#DOKUWIKI
Alias /wiki “/usr/local/dokuwiki/www”
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# mkdir /usr/local/dokuwiki
# cd /usr/local/dokuwiki
# wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2009-02-14b.tgz
# tar -zxvf dokuwiki-2009-02-14b.tgz
# mv dokuwiki-2009-02-14b wwww
# chown apache:root -R /usr/local/dokuwiki/www
# service httpd restart
Browse to:
http:///wiki/install.php
Templates:
Installing templates is simple, just extract the downloaded template archive (
usually a .zip or .tgz file) in the ../lib/tpl/ ),and set the permissions correctly.
Then select the template in the Admin > Config Manager by adjusting the template option.
I recommend a really good template for procedures/documents in my opinion perfect for
nagios called USABLE, check it out at: http://www.dokuwiki.org/template:usable
Will need another plguin to edit sidebar called DisplayWikiPage
# cd /usr/local/dokuwiki/www/lib/plugin
# wget http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-displaywikipage/displaywikipage-stable.tar.gz
Plugins:
Index Menu
http://www.dokuwiki.org/plugin%3Aindexmenu2
Just download and copy it to ../lib/plugins
go to admin > plugins
More interesting plugins
http://www.linux.com/archive/articles/57410
+—————–+
|INSTALL NAGVIS |
+—————–+
Add grpahviz repo
# vim /etc/yum.repos.d/graphviz.repo
[graphviz-stable]
name=Graphviz – RHEL $releasever – $basearch
baseurl=http://www.graphviz.org/pub/graphviz/stable/redhat/el$releasever/$basearch/os/
enabled=1
gpgcheck=0
# yum -y install grpahviz
# yum –enablerepo=graphviz-snapshot update ‘graphviz*’
# wget https://sourceforge.net/projects/nagvis/files/NagVis%201.4%20%28stable%29/NagVis-1.4.4/nagvis-1.4.4.tar.gz/download
# tar -zxvf
# ./install.sh -i ndo2db -u apache -g apache
URL:
http://<SERVER>/nagvis/frontend/nagvis-js/
New installs the user/pass:
nagiosadmin/nagiosadmin
Set the user/name/db where the NDO DB is at inside also dbinstancename (uncomment it):
# vim /usr/local/nagios/share/nagvis/etc/nagvis.ini.php
[backend_ndomy_1]

; instance name for tables in NDO-db
dbinstancename=”Central”
If you dont know your dbinstancename take a look in ndomod.cfg, should
be the same name as its set there
# service httpd restart
Then just open your browser in EDIT mode go to:
http://<SERVER>/nagvis/frontend/nagvis-js/
Then just open your browser in USER mode go to:

viernes, abril 29, 2011

Instalar Gestor de Encuestas - OPINA Licencia GNU

Tomado de: Gestor de Encuestas

Instalación y descarga

En esta página encontrarás información sobre las distintas opciones que existen para instalar esta aplicación. En la actualidad están disponibles:
  1. A partir del código fuente, compilando y generando el artefacto (WAR).
  2. A partir de un binario sobre el aplicar la configuración que se desee.
Para aquellos que lo necesiten (especialmente opción 1 y 2), a continuación se detallan algunos requisitos propios de este tipo de aplicaciones JEE.

Requisitos

La instalación de Opina requiere, para su puesta en marcha, el siguiente software:
  1. J2SE v.1.5.x Software Development Kit (SDK) o superior. Se puede descargar del sitio web de Sun Microsystem.
  2. Contenedor que implemente las especificaciones 2.3/1.2 de Servlet/JSP respectivamente. Algunas posibilidades:
    1. Apache Tomcat 5.x o superior.
    2. Caucho Resin.
    3. JBoss Application Server
    4. Sun Java System Application Server
  3. Sistema gestor de bases de datos (SGBD). Dado que se hace uso de Hibernate, son múltiples los SGBD que se pueden usar. Hasta la fecha se han realizando pruebas con MySQL, PostgreSQL y Oracle.
Consulte los entornos en los que la aplicación ha sido probada.

Instalación desde el binario

  1. Descargar la última versión estable ( versiones previas):  opina-bin-1.5.0.zip [14 Mb]
  2. Descomprimir el archivo.
  3. La configuración ( Hibernate) de acceso a base de datos se realiza en el archivo opina/WEB-INF/classes/hibernate.properties.
    hibernate.connection.url=
    hibernate.connection.driver_class=
    hibernate.connection.username=
    hibernate.connection.password=
    hibernate.c3p0.min_size=5
    hibernate.c3p0.max_size=0
    hibernate.c3p0.timeout=300
    hibernate.c3p0.max_statements=50
    hiberante.c3p0.acquire_increment=1
    hibernate.dialect=
    hibernate.show_sql=false
    hibernate.format_sql=true
    hibernate.connection.autocommit=false
    hibernate.hbm2ddl.auto=update
    hibernate.bytecode.use_reflection_optimizer=true
    hibernate.cache.use_second_level_cache=false
    hibernate.current_session_context_class=thread
    
    Una descripción detallada de cada uno de los parámetros de configuración se encuentra publicada en el  sitio web de Hibernate. Un ejemplo de configuración usando MySQL es:
    hibernate.connection.url=jdbc:mysql://HOST:PORT/DB
    hibernate.connection.driver_class=com.mysql.jdbc.Driver
    hibernate.connection.username=USER
    hibernate.connection.password=PASSWORD
    hibernate.c3p0.min_size=5
    hibernate.c3p0.max_size=0
    hibernate.c3p0.timeout=300
    hibernate.c3p0.max_statements=50
    hiberante.c3p0.acquire_increment=1
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    hibernate.show_sql=false
    hibernate.format_sql=true
    hibernate.connection.autocommit=false
    hibernate.hbm2ddl.auto=update
    hibernate.bytecode.use_reflection_optimizer=true
    hibernate.cache.use_second_level_cache=false
    hibernate.current_session_context_class=thread
    
  4. El resto de parámetros de configuración los encontraremos en el archivo opina/WEB-INF/classes/application.properties donde encontraremos las siguientes entradas:
    application.name=Opina: gestor de encuestas
    application.skin=/gui
    application.version=1.5.0
    application.buildNumber=2685
    application.adminMail=EMAIL
    application.defaultUrlRedirection=URL
    application.changelog=http://www.klicap.es/opina/opina-changelog.xml
    application.copyright=Copyright © 2010 klicap - ingeniería del puzle
    
    application.manual.version=Martes 1, noviembre 2005
    
    application.smtp.hostname=HOST
    application.smtp.auth=false
    application.smtp.count.username=USER
    application.smtp.count.password=PASSWORD
    application.smtp.debug=false
    application.smtp.tls.enabled=true
    application.smtp.emailsByConnection=5
    application.smtp.connectionDelay=30
    
    application.proxy.enabled=false
    application.proxy.host=HOST
    application.proxy.port=PORT
    # Autenticación no implementada
    #application.proxy.authenticated=false
    #application.proxy.user=
    #application.proxy.password
    
    application.administrator.usernameByDefault=opina
    application.administrator.passwordByDefault=qwerty.opina
    application.administrator.nameByDefault=Administrador
    
  5. Una vez configurada la aplicación, debemos colocar el directorio opina/ en el webapp de nuestro contenedor JSP/Servlet. En el caso de estar usando  Apache Tomcat, tendremos que copiar el directorio opina/ en $TOMCAT_HOME/webapp/.
  6. Dependiendo del contenedor (o servidor de aplicaciones) que estemos usando será necesario, o no, reiniarlo.
  7. Para comprobar que la aplicación se ha desplegado correctamente, accedemos a la siguiente URL: http://hostname:port/opina, donde deberemos encontrar una página de login.
  8. Si la configuración (credenciales, etc.) de base de datos es correcta, accedemos a la siguiente URL: http://hostname:port/opina/instalar.jsp. Esta página se encargará de crear el esquema de base de datos y dar de alta al usuario administrador, que por defecto, tendrá las siguientes credenciales:
    1. Nombre de usuario: opina
    2. Contraseña: qwerty.opina

miércoles, abril 27, 2011

5 éxitos del Software Libre que han cambiado el mundo

Tomado de: 5 Casos de Exito Software Libre

El Software Libre lleva entre nosotros sus buenos 25 años. Aunque mucha gente no sepa exactamente qué es, este software -o filosofía de entender la información y el conocimiento- ha sido testigo y parte de la revolución que ha cambiado el mundo tal y como lo conocíamos: la informática. Un puñado de hackers idealistas y otro de hackers pragmáticos han hecho del mundo de los ordenadores un lugar más útil, cómodo y accesible para todos. Hoy homenajeamos cinco casos destacados

Qué es el software libre

Los angloparlantes, que utilizan "free" para decir gratis y libre, explican que es "free as in freedom, not as in free beer", "libre como en libertad, no como en cerveza gratis". Y es que el Software Libre, para ser considerado como tal ha de cumplir una serie de condiciones. Dejando la polémica con BSD para otro día, la Free Software Foundation señala 4 libertades básicas con las que ha de contar un software para considerarse "libre":

Libertad 0: Libertad de usar el programa con cualquier propósito.
Libertad 1: Libertad de estudiar el programa y su funcionamiento, pudiendo adaptarlo a tus necesidades.
Libertad 2: Libertad de distribuir copias del programa a quien quieras, ayudando a tu prójimo
Libertad 3: Libertad para mejorar el programa y distribuir en las mismas condiciones las mejoras, para que la comunidad se pueda beneficiar.



Para garantizar estas libertades se han creado multitud de licencias, pero la más extendida y destacada es la licencia GPL, que básicamente garantiza el cumplimiento de estas libertades exigiendo que se distribuya siempre el código fuente junto con el programa y que cualquier modificación que se realice deba ser publicada bajo la misma licencia. Es importante recalcar que nada impide hacer dinero con el software libre, ya sea vendiendo ese software (aunque el destinatario puede hacer las copias que quiere y regalarlo sin problemas) o vendiendo soporte técnico para el mismo.

Bajo el amparo del Software Libre se han creado miles, o millones -quien sabe-, de programas de todo tipo. Muchos, claro, han pasado sin pena ni gloria, pero otros han sido imprescindibles para haber llegado a donde estamos hoy, aunque su historia no sea tan conocida.

1. GNU y Linux:

GNU/Linux es el nombre completo del sistema operativo que normalmente todos conocemos como Linux. El nucleo del sistema operativo (lo que interconecta los dispositivos entre sí) es Linux, las herramientas básicas del sistema operativo alrededor del nucleo son parte del proyecto GNU.

Ambos han sido imprescindibles, juntos más que por separado, en el desarrollo de la informática desde los años 90, aunque se desarrollan de manera bastante independiente, por gente distinta y, para colmo, con planteamientos distintos. A pesar de todo, entre ambos ofrecen un sistema hiperconfigurable, completísimo y que no pocas veces ha puesto en evidencia a sus grandes competidores comerciales, ya sea en la informática de escritorio como de grandes servidores.

En el recuento de septiembre de 2009, 446 de los 500 superordenadores más potentes del mundo ya usaban GNU/Linux como sistema operativo. Los teléfonos con Android llevan Linux, muchos de los primeros ultraportátiles llevaban Linux. Adivina qué sistema operativo llevan los ordenadores del proyecto One Laptop Per Child. A fin de cuentas, ofrece un sistema plenamente funcional, completo y moderno que no tiene ningún costo de licencia.

2. Mozilla Firefox

Durante los años de dominio absoluto de Internet Explorer la Web estaba limitada y los programadores tenían que ceñirse al navegador de Microsoft si querían que sus páginas se desplegaran correctamente. Aún hoy desarrollar webs compatibles con todos los navegadores puede ser un auténtico suplicio. pero todo comenzó a cdambiar cuando llegó Firefox.

Primero fue Mozilla Navigation Suite, después Phoenix, después Firebird y por último Firefox, y ha revolucionado la navegación web. El auge de Internet impulsó su crecimiento, su éxito y su importancia mucho más allá que cualquier otro proyecto de Software Libre. Ser multiplataforma (funciona en GNU/Linux, Mac y Windows) le permite tener más usuarios y también, más programadores voluntarios.

Microsoft no prestó la atención debida a su navegador, así que Firefox pronto fue más rápido, más completo, más seguro, más preciso con los estándares web y, por asi decirlo, mejor en todo. Firefox, en definitiva, fue el desencadenante de la guerra de navegadores de la que tanto nos estamos beneficiando los usuarios en la actualidad, además de situar el software libre con una cuota de un 30% (más contando a Chrome) en el mercado de los navegadores.

3. Apache

Arthur C. Clarke dijo "Cualquier tecnología suficientemente avanzada es indistinguible de la magia". Internet, sin duda, forma parte del grupo. Pero resulta que no es magia, es tecnología lo que hay detrás. En el caso de las páginas web -que a fin de cuentas es lo que mucha gente considera Internet- lo que hay detrás son servidores que se encargan de proveernos las páginas web que solicitamos con nuestro navegador.

Apache es el servidor web por excelencia, lider abrumador, con un 54% de cuota -frente al 24% del IIS de Microsoft- (2010). Probablemente la versatilidad que garantiza el software libre porque cualquiera puede modificar el programa a su antojo es lo que le ha permitido alcanzar tales cuotas de éxito y convertirse, de facto, en el estandar para servir páginas web.

4. FreeBSD

FreeBSD es uno de los sistemas operativos de la familia BSD. Son sistemas operativos tipo UNIX con licencia (BSD se llama también) aún más relajadas que la GPL, porque permiten, básicamente, hacer lo que quieras con el software mientras mantengas un disclaimer legal. Te permite, incluso, modificar el software a tu antojo y relicenciarlo impidiendo el acceso a tus modificaciones a los demás.

FreeBSD puede que no haya revolucionado el mundo directamente, pero sí ha tenido más influencia de lo que mucha gente sabe. El motivo: todos los dispositivos Apple desde el lanzamiento de Mac OS X llevan una parte de FreeBSD en su interior. Apple ha usado el código de FreeBSD para construir tanto el nucleo de su sistema operativo para ordenadores (Mac OS X) como el de dispositivos móviles (iOS).

¿Y por qué iba a querer Apple usar código de otro sistema operativo para montar el suyo propio? Pues porque era la manera más sencilla de partir, de base, de uno de los sistemas operativos más seguros y eficaces que existen.

5. Creative Commons, la alternativa al Copyright


Hemos titulado el post "5 éxitos del software libre que han cambiado el mundo" precisamente porque no todos son software. La que probablemente es la mayor revolución de todas las llevadas a cabo por el movimiento del Software Libre es la del cambio de mentalidad, de filosofía. Una filosofía que dice que la transparencia es más segura que la opacidad, que la libre circulación de información es mejor que la ocultación de datos, que compartir conocimientos es beneficioso para toda la humanidad, que se puede ganar dinero sin coartar la libertad de nadie. No es el único camino, pero es un camino, y no sólo ha cambiado la industria del software, sino que también se propaga a otros ámbitos.

¿De dónde surge la Wikipedia, sexta página más visitada del mundo y la mejor recopilación de conocimiento centralizado y accesible que jamás ha tenido disponible la humanidad? Sin ninguna duda, del modelo del Software libre. Y no es el único ejemplo. Cada vez hay más blogs, periódicos y publicaciones que se publican bajo licencias Creative Commons, que son, a fin de cuentas, una adaptación a otros ámbitos de las licencias del Software Libre.

Incluso en las industrias de la música y la producción audiovisual están apareciendo más y más proyectos que comparten sus creaciones con licencias libres, que permiten reutilizar, modificar y compartir libremente la obra, ganando en viralidad y ayudando a su promoción y éxito.

Fuente: ReadWriteWeb.es