miércoles, 29 de junio de 2011

Securizando servidores (II)

Volvemos con otra entrada de esta tanda de posts dedicados a la seguridad. Ayer aprendí la importancia de tener todo actualizado en el sistema, desde los programas que se usan, hasta el kernel de linux. Y "gracias" al kernel ayer tuve una noche movidita.

Es importante tener actualizado el kernel a que se van descubriendo bugs y algunos de ellos son grandes fallos de seguridad como el que aprovecha un rootkit llamado wunderbar_emporium, que básicamente aprovecha un bug presente en los kernels hasta la version 2.6.30 creo. Básicamente si se consigue una cuenta de usuario y ejecuta este script, consigue en cuestion de segundos acceso como root. No es un bug fácil de explotar siempre y cuando las contraseñas de los usuarios sean medianamente seguras y que el servidor no tenga alguna página web que permita ejecutar programas en local o tenga otros fallos de seguridad*. ¿Cómo solucionamos esto? Si podemos, actualizando el kernel a una version actual.

En condiciones normales, con yum install linux-image-xxxxx** o apt-get install linux-image-xxxxx** nos bastaría, se descarga de los repositorios y listo, kernel actualizado. Otra forma sería encontrar el paquete para nuestra distro e instalarlo mediante deb o rpm y también listo. Siempre es aconsejable instalar un kernel que esté preparado para nuestra distro, ya que están especialmente compilados para que funcionen bien y con los añadidos necesarios. Pero, ¿Y si no podemos usar ninguno de estos métodos? Pues estamos un poco jodidos, ya que nos tocará bajar el kernel de kernel.org y compilarlo nosotros mismos. En principio no es un gran problema, con un poco de paciencia y con una guía que encontremos por internet deberíamos tenerlo resuelto.

No voy a poner ahora una guía de cómo compilar un kernel, ya que por desgracia aún no he podido hacerlo. El tema de la máquina de ayer fue un tanto tocapelotas. Era una Debian 5, desactualizada y con problemas con los repositorios, no se si por que ya no están los repos de Debian 5 o porqué, asi que la opción de apt-get, a tomar por saco. Lo siguiente era buscar el paquete e instalarlo con deb, pero vaya sorpresa la mía que no estaba el deb para instalar cosas T.T asi que... me armé de valor y decidí compilar el núcleo. Tras comprobar que el comando wget sí funcionaba, me descargué el kernel 2.6.38, no es el más nuevo, pero tampoco vamos a poner el último. Tras un ratito esperando a que se descargase, buscando mientras guías para compilarlo, descubro un fallo enorme: ¡¡no tenian instalado el bzip2!! Otra piedra en el camino, pero bueno, apt-get... oh wait... bueno, a descargar el código y a compilarlo, no puede ser tan dificil ¿no? Tras otra piedra más, ya con la vena del cuello empezando a verse, descargo el código, lo descomprimo (menos mal que tenía instalado el gzip, si no ya me corto las venas), make install, y ¡Surprise! No estaba instalado el gcc. Ya lo tuve que dejar, ya que mi turno acabó. Hoy veré cómo se ha solucionado.

Lo que me pasó no creo que sea normal, pero pasa, por eso hay que estar pendientes de los servidores y no dejarlos a su libre albedrío. Si se hubiese mantenido un poco ese servidor, no se habría llegado a este extremo. ¡En la próxima entrega, un par de truquitos para mantener las contraseñas seguras, y la solución a este entuerto!

* Wordpress, Joomla, etc, etc...
** Buscar la última version disponible en los repositorios.

martes, 28 de junio de 2011

Securizando servidores (I)

En los tiempos que corren, muchas empresas tienen servidores conectados 24x7 a internet, ya bien en su propia empresa o en una externa. El mayor problema que suelen tener es que o no tienen un "informático"* capaz o directamente no lo tienen, y dejan el servidor a su libre albedrío, molestándose únicamente de actualizar la página web si acaso.

Uno de los mayores problemas que tiene un servidor desatendido es que van apareciendo agujeros por los que los "hackers"** se cuelan y hacen cosas malas. Para intentar evitar que se nos cuelen (o por lo menos que les cueste un poco más) voy a empezar una serie de post en los que trataré de explicar cómo mejorar la seguridad del servidor. Me centraré más en los servidores con Linux, ya que los que están basados en Windows necesitan 3 cosas básicas: antivirus, firewall y un San Pancracio. Bueno, y actualizar regularmente con la posibilidad de que alguna actualización de Windows te fría todo.

Empecemos por lo básico y vale tanto para Windows como para Linux: copias de seguridad de los datos hasta debajo de la almohada. Se que parece una chorrada, pero más de uno y de dos no tienen copias de sus datos. ¿Porqué es tan importante? Por una sencilla razón, y es que nunca sabes cuando puedes perderlos. Hay mil factores que pueden hacer que se pierdan los datos o que necesites tener una copia fuera: una actualización que hace que deje de funcionar los programas y se vaya todo al garete, que se corrompan los datos de la bbdd, que se rompa el disco duro (sí, tener un RAID1 e incluso un RAID5 no da un 100% de fiabilidad), que alguien lo borre sin querer, y un largo etcétera de situaciones que harán que como no exista una copia te quieras poner una bonita soga al cuello, si es que no te la ponen. Hay muchas formas de tener un backup y lo más sensato es tener varios y en distintos lugares.

Quedando clara la importancia de los backups, pasamos a otro tema, ya 100% linux. Dejaré el firewall y otras medidas de seguridad más cotidianas para otros posts y me centraré en un programa que es una pequeña joya, ya que pese a no garantizar que se nos vayan a colar, si supone un verdadero dolor de cabeza.*** El programa en cuestión es mod_evasive, con él nos quitaremos de en medio parte de los ataques DoS que se puedan producir en nuestra máquina. Básicamente lo que hace es denegar las peticiones repetitivas que se hagan al apache, bloqueando al atacante temporalmente (o no).

Instalarlo es sencillo, vamos a ello:
0º. Tener instalado apache, apache-devel (httpd y httpd-devel) y gcc
1º. Descargar el archivo de la página web del programa
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
2º. Descomprimirlo y entrar dentro de la carpeta:
tar -xzvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
3º. Compilar y obtener el módulo de apache:
apxs -i -a -c mod_evasive20.c
Lo siguiente sera comprobar que el módulo está en /usr/lib/httpd/modules/mod_evasive20.so y que está incluido en el httpd.conf:
grep evasive /etc/httpd/conf/httpd.conf
Nos debería devolver esta línea:
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so
Si no está agregarla a mano y esto también:
Include mod_evasive.conf
Lo siguiente es editar el archivo /etc/httpd/mod_evasive.conf****, ponerlo al gusto de cada uno y reiniciar el servicio de apache.

Más info: http://www.emezeta.com/articulos/mod-evasive-evitando-denegacion-servicio-distribuida#axzz1QYp1ipUh

Se acaba el post por hoy, en próximos post explicaremos el uso de iptables y de mod_security, herramientas que también nos ayudarán a evitar a tapar esos agujeros de seguridad que tantos quebraderos de cabeza nos dan.

* No me gusta el término informático, pero que se le va a hacer.
** Tampoco me gusta el término hacker, no es exacto en la mayoría de las veces...
*** Pain in the ass (me gusta más la expresión en ingles :P)
**** En mi caso con el Fedora 15 he tenido que crear a mano el archivo mod_evasive.conf.

lunes, 20 de junio de 2011

Bienvenidos al futuro, bienvenidos a la nube...

... O eso pensaran muchos y razón no les faltará, pero no es un concepto nuevo y menos lo ha inventado Apple. No va a ser un post criticando a Apple ni por asomo, ya que me parece genial lo que ofrecen, pero hace tiempo escuché una frase que me dejó perplejo y no quiero que se repita aplicado al Cloud: "¿Has escuchado la nueva canción de Avril Lavigne? Si, Basket Case es genial"


Después de haceros sufrir un poco, empecemos explicando que significa "Cloud". A grosso modo es ofrecer unos servicios en red de manera que el usuario no necesite saber de dónde vienen las cosas y que siempre estén accesibles. Abrimos nuestro reproductor de musica favorito y escuchamos canciones, nos da igual que estén en un ordenador con ip X.X.X.X que Y.Y.Y.Y, no tenemos que saberlo, el programa lo hace por nosotros. Lo mismo se puede aplicar a otros servicios multimedia.

Pero el cloud es mucho más eso, lo que nos ofrece, en el ambito multimedia por ejemplo, es que si el servidor que almacena los archivos se rompe, nosotros no nos damos ni cuenta, porque aparece un "gemelo" que seguirá con el trabajo del otro.

Esta parte multimedia es la que se irá poniendo de moda poco a poco, con ejemplos como lo que Apple quiere ofrecer o lo que Google ya ofrece desde hace tiempo, aunque ya desde hace tiempo hay otros sectores que aprovechan el cloud como pueden ser las empresas de hosting. ¿Para qué tener un servidor dedicado que se puede romper y dejarte sin servicio durante un tiempo? El cloud soluciona esto, el tener siempre el servicio activo. ¿Cómo lo hace? Sencillo, gracias a la virtualización y al Cloud.

Un cloud es ni más ni menos que muchos servidores que actuan como uno sólo, y si uno se rompe, no pasa nada, los otros se encargan de hacer el trabajo del caido. Esta idea, unida a la virtualización de sistemas, ofrece la posibilitad de evitar grandes problemas. Como tenemos varios servidores como si fuese uno sólo, podemos tener todo el trabajo dividido. Del almacenamiento se ocupará uno o varios, según necesidades, con teras y teras de disco. De hacer que funcionen los sistemas virtualizados tendremos a otros, que no necesitarán mucho disco duro pero sí ram y procesador. Y por ultimo tendremos otra tanda que se ocupará de que todo funcione y si falla algo, avisar y ocuparse de repartir el trabajo entre los demás.

¿Qué ventajas ofrece? A la empresa que ofrece el cloud le da el beneficio de la escalabilidad, puede empezar con 2 servidores e ir conectando más según lo necesite, y al que contrata el hosting, reducir el riesgo de que el sistema esté parado con los problemas que ello trae. ¿Es 100% fiable? No, como todo en este mundo no es perfecto, pero bien llevado reduce los fallos a "simples" fallos de red y los que nunca, nunca van a faltar son los fallos de "Capa 8"*.

¿Qué diferencia hay entre el cloud y los servidores virtuales? Básicamente son lo mismo, con la ventaja de los clouds que antes comentaba. Los servidores virtuales simplemente es una máquina real con los servidores virtuales corriendo, si se cae el real, los virtuales se caen con él mientras que en el cloud habrá una serie de servidores disponibles que se ocuparán del trabajo del caido mientras se repara/cambia el que se ha caido.

Espero haber despejado un poco las dudas sobre lo que el cloud hace, ya que el ejemplo de un cloud para hosting se extiende a cualquier otro tipo de cloud. A ver si puedo hacer un par de post dedicados a este tema explicando cómo montar tanto un servidor virtual como un cloud, que no es tan complejo como parece.

* Ver modelo de red OSI y añadir la capa 8 "Persona", causante del 99'9 periodo de los errores.

jueves, 16 de junio de 2011

Criticas tesnológicas: Hoy, Fedora 15 en un HP 110 3615 (III)

Bueno, seguimos dónde lo dejamos. Vamos a configurar la wifi. Como dije, es sencillo, aunque necesitaremos usar una consola, al gusto de cada uno (Alt+F2 y gnome-terminal, por ejemplo).

Lo primero es confirmar el modelo de la tarjeta de wifi, escribiremos "lspci" y nos deberá devolver una lista con el hardware de nuestro pc. Nos fijaremos que ponga "Network controller: Broadcom Corporation BCM4313 802.11b/g LP-PHY", si no fuera esa, mirar al final del post para más información.

Necesitamos saber si el módulo de wifi está cargado, asi que ponemos "lsmod | grep b43" y no nos devolverá nada, no asustarse, es normal. Lo siguiente será instalar los programas necesarios con "yum install broadcom-wl", aceptamos todo y casi listo. Nos bajamos el firmware compatible con la tarjeta con esto : "wget http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o" y lo ejecutamos con "b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o". Reiniciamos y listo, ya tenemos el wifi funcionando.

¿No era tan difici eh? Bueno, con esto ya tenemos todo funcionando correctamente.

Como extra, encontré un programilla interesante que permite instalar varios programas y codecs de una tacada, más que otra cosa cómodo. Se llama Autoten tan sencillo de instalar como "yum -y --nogpgcheck install http://dnmouse.org/autoplus-1.1-7.noarch.rpm".

Pues con esto y un bizcocho hasta dentro de un tiempo!

Fuente de la instalación del wifi:
http://www.fedoraforum.org/forum/showthread.php?t=239922

miércoles, 15 de junio de 2011

Criticas tesnológicas: Hoy, Fedora 15 en un HP 110 3615 (II)

Seguimos con esta guía de instalación para poder llegar luego a la critica, por que no vamos a analizar sin conocer o tenerlo todo al 100%.

En el post anterior nos quedamos o con la tarjeta de red configurada, o con las ganas de ello. Vamos entonces al método dificil para conseguir tener red (No apto para menores de 13 años).

¿Qué necesitamos? Una ingeniería, un par de doctorados y ... mentira, que no es tan dificil. Abrimos una consola (Alt+F2 y escribir gnome-terminal, o cualquier otra es válida). Lo primero, hacemos "su -" para entrar como root, no vamos a poder hacer mucho sin ello. Hacemos un "ifconfig -a" y vemos que la tarjeta de red se llama em2 (han cambiado la nomenclatura los de Fedora, que se le va a hacer). Luego "cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-em2" y lo editamos "vi /etc/sysconfig/network-scripts/ifcfg-em2" y cambiamos los datos de acuerdo a nuestra red. Reiniciamos la red "service network restart" y luego hacemos el enrutamiento "route add default gw IP"*. Luego en "/etc/resolf.conf" añadimos las DNS. Probamos a hacer ping para comprobar que funciona todo y listo.

Ahora teniendo la red, ya podemos hacer los pasos de los posts anteriores para ponerlo en español y para, si no nos gusta como viene por defecto, poder apagar el ordenador de una forma fácil y sencilla.

Sólo falta por configurar el wifi, que es lo importante en un ordenador de estas características, pero ya en otro post, que me tengo que largar echando leches. Mientas, podéis ir instalando los codecs de audio y video para entreteneros. También os enseñaré una forma fácil y rápida que descubrí para instalarlos.

*No me seais y dónde pone IP poner la ip de vuestro router ¬¬

Criticas tesnológicas: Hoy, Fedora 15 en un HP 110 3615 (I)

Bueno, parece que por fin después de pegarme un par de días con él, he conseguido tenerlo todo instalado bien y funcionando, a falta de que algo que no uso no funcione, pero eso ya me es más dificil saberlo.

¿Qúe necesitaremos para este experimento?
- Un HP mini 110 3615
- Un pen-drive de al menos 1GB

Lo primero que tendremos que hacer es meter el Fedora15 en un USB, hay varias formas pero me decante por la más facil: descargar el LiveUSB Creator para Windows (me encanta usar Windows para poder quitar Windows :P). Es sencillo de usar pero hay una guía tanto para descargarlo como usarlo aquí.

Con todo preparado, conectamos el USB al equipo y lo reiniciamos/encendemos. Hay que pulsar F9 mientras se arranca, y nos pedirá que elijamos de dónde queremos arrancar. Elegimos el USB y seguimos.

Lo que descarga el LiveUSB Creator es la liveCD de Fedora 15, por lo que podemos probar el Gnome3, pero tanto lío sólo para probarlo... no, lo instalaremos. Es una instalación sencilla y sigue teniendo los fallos que comenté en las entradas anteriores, por lo que después de instalar habrá que seguir los pasos. Creo que es recomendable marcar que el usuario sea Administrador, ya que me dio problemas para configurar la red desde el escritorio.

Con todo ya instalado, toca corregir los fallos, ya que como nos habremos dado cuenta no funciona el wifi y puede que la red si no tenemos el DHCP habilitado nos esté dando problemas.

Lo primero de todo, configuremos el ratón para que reconozca al menos el toque en el touchpad como click: * Actividades -> Aplicaciones -> Herramientas del Sistema -> Configuración del Sistema, entramos en "Ratón y touchpad" y en la pestaña de "Touchpad"  marcamos tanto "Activar pulsaciones del ratón con el touchpad" como "Desplazamiento con dos dedos". Y listo, ya tenemos el ratón configurado.

Si tienes la mala suerte de no tener el DHCP habilitado, te toca poner una IP a mano. Para ello tenemos dos formas, la fácil y la difícil. A mí me tocó la difícil ya que no seleccioné que el usuario fuese administrador, y no se si haciéndolo durante la instalación podrás usar la fácil. Vamos a la forma fácil: pulsamos sobre el icono de red en la barra del sistema (tendrá la forma de un ordenador) y aparecerá un menú, seleccionaremos "Configuración de la red". Seleccionamos "Cableada" y se nos deberá habilitar un botón que pone "Opciones" **, pulsamos sobre él y se abre una ventana de configuración. En la pestaña "Ajustes de IPv4" seleccionamos en método  "Manual" pulsamos "Añadir" y ponemos los datos (IP, Máscara y GW) y abajo los DNS, y ya pulsamos en "Guardar". Ya tenemos configurada la red por cable, lo que nos dejará poder hacer el resto de configuraciones.

Con esto acabamos por ahora que se acaba el espacio para escribir. ¡Más información en el próximo post!

* Lo más seguro es que tengas la ruta en inglés, así que si no sabes nada de nada de inglés deja esto para más adelante ya que necesitas conexión a internet para cambiar el idioma.
** Si no se habilita, mala suerte, toca hacerlo de la forma difícil.

domingo, 12 de junio de 2011

Criticas tesnológicas para todos: Hoy, Fedora 15, o las aventuras para instalarlo (I)

Parece ser que el día 24 de mayo liberaron la versión 15 de Fedora. Y yo como siempre, me entero casi un mes después, pero es normal.

Hoy pretendía quitar el Windows 7 de mi portatil, ya que se come la ram que da gusto y da lagazos tremendos al ver videos, así que mientras descargaba el clonezilla e investigaba cómo ponerlo en un pendrive de forma fácil me dio por mirar la web de fedora. Y así hijos, es como me enteré de que salió la nueva fedora.

Sin dudarlo mucho, me la bajé y la quemé en un cd (debería comprar cd's si, pero no para quemar música, asi que debería pensar en... bueno, para otro día). El cd es una Live, asi que sorpresa la mía cuando vi que habían puesto la versión 3 de Gnome. Decidí instalarlo, ya que, bueno, ¿qué podia cambiar de una versión a otra? Y así hijos, es como volví a usar windows... [Insert Trollface here]

No, mentira, no he hecho eso. No he empezado con buen pie con esta version de Gnome, pero no se si será culpa de fedora. Lo primero es que la instalación se hace por defecto en inglés. ¿Y porqué no cambiaste el idioma en la instalación? Niños, lo hice.

Así que lo primero que toca hacer nada más acabar de instalar, es cambiar el idioma. Para ello hay que instalar el gestor de idiomas. ¿Porqué no lo trae? Seguramente por algún habil... pero bueno, la cosa era sencilla, sólo hay que instalar "system-config-language" por el método preferido, yum, gestor de paquetes, rpm, bajandote el código y modificarlo y compilarlo... a gusto de cada uno.

Antes de ponerme a investigar las cosas que ofrece, tenia que apagar el PC por motivos ajenos a esta empresa, y ahí si me llevé la sorpresa mayúscula. No hay botón de apagado, sólo de suspender el equipo ¿Y cómo lo hiciste? Recurrí al mejor amigo de un informático, Google.

Criticas tesnológicas para todos: Hoy, Fedora 15, o las aventuras para instalarlo (II)

Para apagar el equipo hay que pulsar la tecla Alt mientras esta el desplegable donde aparece lo de suspender abierto y mágicamente se convierte en "Apagar...", lo que no mola. Así que busqué como cambiarlo.

Parece ser que el Gnome3* se puede configurar editando unos script, y lo primero que encontré fue que tenía que editar este archivo:
/usr/share/gnome-shell/js/ui/statusMenu.js
Otra sorpresa me llevé cuando me di cuenta de que no trae instalado el nano, pero bueno, eso es fácil de resolver. La teoría es que hay que cambiar un par de líneas de texto y todo resuelto. Hay que cambiar esto:
else {
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off...")$
}
Por esto:
else {
this._suspendOrPowerOffItem.updateText(_("Power Of..."), _("Suspend));
}
Y más abajo esto:
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"), _("Power Of$
Por esto otro:
item = new PopupMenu.PopupAlternatingMenuItem(_("Power Of..."), _("Suspend"))
Reiniciamos la sesión y todo liso. ¿No? Mentiraaaa... no funciona. Si es cierto que cambia los nombres pero no el funcionamiento, por lo que si das donde pone "Apagar..." se suspende el equipo. ¿Y cómo acabó todo? Pues por suerte bien, hijos.

Al parecer, alguien ingenioso y listo, un Espartano de los que ya no quedan, decidió que era conveniente solucionar esto de una manera sencilla: instalando un paquete. Así, de nuevo, con yum o con lo que cada uno quiera, bastará con instalar "gnome-shell-extensions-alternative-status-menu" y ya aparecerán las opciones de toda la vida para apagar el equipo: Apagar, Hibernar y Suspender.

Niños, con esto acabamos hoy el doble episodio de How I Install Fedora15 por hoy. En el próximo episodio, os contaré que tal con Gnome3, y puede que más cosillas.

* Supongo que todos serán así, pero no he tenido la necesidad de buscarlo hasta ahora ¬¬