viernes, 4 de noviembre de 2011

Instalaciones web: indexhibit

Voy a empezar una serie de post de cómo instalar algunas de las webs que están de moda, como wordpress, joomla, etc... Se que hay manuales en todas partes, pero como siempre, así lo tengo yo a mano. Hoy empezaré por una web llamada indexhibit, por lo que veo es para hacer webs personalizadas teniendo una base. Según ellos: "A web application used to build and maintain an archetypal, invisible website format that combines text, image, movie and sound."

Pues eso, vamos a ello: Descargamos los archivos desde su web http://www.indexhibit.org/download/ a nuestro ordenador, y lo descomprimimos. Usando un gestor ftp, subimos la web a nuestro servidor*. El siguiente paso es crear una base de datos, y apuntar el usuario, el nombre de la base de datos y la contraseña, ya que la pedirá durante la instalación.

Lo siguiente es cambiar los permisos a las carpetas "files", "files/gimgs" y "ndxz-studio/config" a 777.Luego ejecutamos la página de instalación desde http://dominio.com/ndxz-studio, seguimos los pasos, bastante sencillos, la verdad. Y listo, cuando acabemos y nos pida el login, sólo queda borrar el archivo install.php que está en la carpeta ndxz-studio.

En http://dominio.com/ndxz-studio nos pedirá un login, que es el panel de gestión de la web. De primeras el usuario es index1 y la contraseña exhibit, lo cambiaremos corriendo y deprisa por algo más seguro. Y sólo queda ver el resultado en http://dominio.com, que según vayamos editando en el panel, irá evidentemente cambiando.

Si me da trastearé un poco más con esta web, pero creo que es muy básica, y suficiente para mucha gente ;).

¡Saludos!

* Tiene que ser linux con apache y php (5.2 probado OK, 5.3 probado y nones)

sábado, 15 de octubre de 2011

MSSQL en Linux

Puede que parezca una tonteria, pero hacer que un linux se conecte a una base de datos hecha en MSSQL no es tan trivial. Algunos piensan que es descomentar una linea en el php.ini en la que se indica un dll. Aclararemos aqui que Linux NO usa dlls, eso es Windows. Y tampoco pueses instalar MSSQL en Linux (no se si con Wine se podria).

¿Entonces como haremos para usar MSSQL en Linux? Lo primero necesitamos tener un servidor con Windows con el MSSQL instalado, funcionando y con el acceso remoto activado. Luego, haremos que Linux se conecte a esa base de datos. Decia que no es tan trivial porque no es instalar un paquete con yum o con apt (puede que esté, no lo he buscado), pero lo que nunca te va a fallar (o si, nunca se sabe) es compilandolo de cero. El programa en cuestion es el freetds. Antes de bajarlo y compilarlo, necesitaremos saber qué versión a que version de MSSQL vamos a conectarnos además de apuntar la URL (o IP), el puerto y el nombre de la bbdd, ademas del usuario y contraseña, ya que lo necesitaremos pronto.

Empecemos, lo primero es descargarnos los paquetes para compilarlos, trabajaremosndesde la carpeta /opt. Tendremos que instalar primero el paquete unixODBC mediante repositorios.
# cd /opt
# wget http://www.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.91.tar.gz
# tar xzvf freetds-0.91.tar.gz
# cd freetds-0.91
# ./configure --with-tdsver=7.2 --prefix=/usr/local/freetds
# make
# make install
Hay que tener en cuenta y especial cuidado esta linea en el configure "--with-tdsver=7.2", ya que hay que indicar la versión de MSSQL que se usa*. Con esto ya tendremos instalado el freetds en /usr/local/freetds. Ahora toca configurarlo. Hay que añadir al archivo /usr/local/freetds/etc/freetds.conf el servidor de la base de datos a la que se quiere conectar. Ahora es cuando necesitamos los datos del otro servidor, hay que añadir unas lineas de este estilo:
[MSSQLSERVER]
host = server.domain.com
port = 1433
tds version = 7.2
En "host" pondremos el nombre FQDN del servidor o la IP, en "port" el puerto que tenga el servidor y el "tds version" la versión del MSSQL según la tabla que teneis en el enlace al final (*).

Con esto, ya deberíamos tenerlo todo listo para conectarnos, así que vamos a probarlo. Usaremos un programa que nos viene en el freetds llamado "tsql". En mi caso, está en la carpeta /usr/local/freetds/bin/, pero con un "locate tsql" puedes confirmar dónde está. Usaremos el servidor que he declarado antes para hacer el ejemplo, recuerda que tienes que cambiar los datos.
# /usr/local/freetds/bin/tsql -S MSSQLSERVER -U prueba -P p1r2u3e4b5a6
Donde "MSSQL" es el servidor que hemos declarado antes, "prueba" es el usuario de la base de datos y "p1r2u3e4b5a6" es la contraseña. Esta última no es necesario ponerla en la llamada, ya que nos la pide por promt (más seguro, no se queda guardada en el history). Si todo va bien, nos mostrará unos datos y nos mostrará "1>". A partir de ahora podemos hacer lo que necesitemos en el MSSQL, por ejemplo:
1>SELECT * FROM TABLA
2>GO
Eso nos debería mostrar el contenido de "TABLA".

¿Hemos acabado? Depende, esto así no tiene mucha utilidad. Lo siguiente que haremos será que el PHP pueda usar el MSSQL. Ahora toca recompilar el php, cuando hagamos el ./configure tenemos que añadirle --with-sybase=/usr/local/freetds.**

Si tenemos instalado DirectAdmin ya sabemos que hay que hacer todo usando sus scripts. Tenemos que editar el archivo /usr/local/directadmin/custombuild/configure/ap2/configure.php5 *** y añadir "--with mssql=/usr/local/freetds", añadiendo "\" a la linea anterior. Luego vamos a "/usr/local/directadmin/custombuild" y ejecutamos:
# ./build clean
# ./build update
# ./build php n
Eso nos recompilará el php de nuevo. Ya deberíamos tenerlo todo configurado para usar una base de datos en MSSQL en nuestro servidor Linux. Si se necesita más información, hay que consultar la web de freetds.

Como esto es una cosa que estamos haciendo en el trabajo entre varios, si surge algún cambio a la hora de hacer las pruebas, actualizaré el post con la nueva configuración, pero esto por ahora nos está funcionando.

¡Hasta la próxima!

* Consultarlo aqui: http://www.freetds.org/userguide/choosingtdsprotocol.htm
** Más info: http://www.freetds.org/userguide/php.htm
*** Usando apache2 y php5, si no, consultar en internet dónde estan los archivos de configuración.

miércoles, 12 de octubre de 2011

¿Has perdido tu password de administrador de windows? Tranquilo, Linux te ayuda

Una situación muy común es que uno se olvida de la contraseña de administrador de Windows, pese a tenerla apuntada en un post-it al lado del servidor. Existen muchas herramientas para poder recuperar la contraseña, pero como me gusta Linux y complicarme la vida, pues lo hacemos difícil*.

Este método que comentaré tiene una ventaja, y es que no se tocan los ficheros de contraseñas de windows, por lo que no hay peligro (me he cargado un 2008 usando esas herramientas...). Hay que dejar clara una cosa, de esta forma sólo podremos cambiar contraseñas que no estén en Active Directory (a falta de probarlo con un servidor que tenga AD**...).

Este método es muy ruin, Windows se sentirá estafado por que vamos a dar gato por liebre. ¿Conoceis las sticky keys? Alguno seguro que sí, sobre todo los que jugaron al trackmania. Bueno, eso lo que hace es lanzarnos un programa cada vez que pulsamos 5 veces la tecla Shift. Pero, ¿que pasa si cambiamos el ejecutable al que llama por defecto? Sencillo, Windows se lo traga y nos ejecuta lo que hayamos puesto. Usaremos esta falla para poder ejecutar una consola y así poder cambiar la password, pero es un fallo demasiado gordo que ya veremos al final cómo solucionarlo.

Básicamente lo que haremos será cambiar el archivo sethc.exe por un cmd.exe, para ello necesitaremos una live cd de cualquier sistema operativo. Yo me he decantado por usar una knoppix, ya que trae los ficheros necesarios para trabajar con una particion ntfs (necesario kernel 2.6 para ello), pero podremos usar cualquiera que lo soporte***.

Tras cargar nuestra live favorita, sólo queda montar la particion de Windows, bien por consola, bien por escritorio, al gusto/posibilidad de cada uno, y entrar en la carpeta Windows/System32. Una vez allí, renombramos el archivo sethc.exe a sethc.exe.bck y hacemos una copia del archivo cmd.exe renombrandlo como sethc.exe. Desmontamos, reiniciamos y cargamos Windows.

Ahora, en la pantalla de login, pulsamos 5 veces la tecla shift y voilá, se nos abrirá una ventana con una consola con privilegios administrativos (en local). En este punto, el servidor es nuestro, podemos hacer lo que queramos con esa consola. Para nuestro cometido, cambiar la password de administrador, tendremos que ejecutar el siguiente comando:
net user Administrador ContaseñaNueva
Nos saldrá una confirmación de que se ha cambiado y listo, ya podemos loguearnos como administrador. Sólo falta deshacer lo que hicimos para que no se quede el sticky keys lanzando un cmd. Para ello apagamos y cargamos de nuevo la Live, borramos el sethc.exe actual (un cmd camuflado) y renombramos el sethc.exe.bck a sethc.exe. Ya podemos usar nuestro 2008 de nuevo.

Ahora bien, para solucionar este fallo de seguridad, simplemente con desactivar las sticky keys basta, esta en opciones de accesibilidad o asi. Ya cada uno que lo desactive si quiere, ya que una vez desactivado, este metodo no funcionaría. Tened en cuenta otra cosa, desde escritorio remoto se puede invocar a las sticky keys poniendolo a pantalla completa, asi que cuidado.

En Linux también hay trucos para recuperar la clave de root, pero son más sencillos y están así a posta ;) no son fallos de seguridad. Hablaremos de ello en otro post, saludos.

* Este metodo sólo es válido para Windows con las sticky seys y tienen que estar activadas (xp en adelante)
** Todo sería probar a invocar la herramienta de adminstracion de Active Directory a ver si cuela, pero vamos, que en terminos generales, si pierdes la pass de administrador de un AD, date por despedido.
** Como digo, para particiones NTFS hace falta que tenga kernel 2.6, pero si tenemos el windows en una particion FAT32 nos valdría casi cualquier linux (con kernel 2.4 en adelante que yo haya probado). Esto no se aplica al 2008, no deja instsalarse en una FAY (o eso recuerdo).

sábado, 8 de octubre de 2011

Servidores Windos VS Servidores Linux

El otro día hablando con Mistheart me comentó que le habían pedido montar un servidor, y cuando humildemente me presté a ayudarle, me soltó: "Nada de Linux ehh?".

Tras las risas, le expliqué que no tenía que ser Linux y no le puse ninguna pega (bueno, alguna*) de que fuese Windows. Se que la mayor parte del tiempo soy anti windows, pero uno no es tan cerrado. Me pasó algo parecido, pero al contrario, con un cliente, que no tenía nada de idea de informática, pero quería Linux porque sus informáticos le habían dicho que era mucho más rápido.

Vamos a intentar aclarar un poco las cosas, que la gente está muy perdida. Lo primero de todo, a la hora de montar un servidor, hay que preguntarse qué va a hacer ese servidor. No puedes llegar y montar/alquilar un servidor con Linux porque sí (o windows, me da igual que me da lo mismo). Hay que sentarse un momento y escribir en una hoja qué necesitas que haga, luego ya le preguntas al informático. Veamos unos cuantos ejemplos de cada:

Windows:

Hay varios casos en los que es necesario montar un servidor con Windows, como puede ser que uses una base de datos de Access o usar asp o .net, en estos casos lo más recomendable, si o si, es usar Windows. No es porque Linux no pueda con ello, es simplemente porque es más sencillo. Hay que valorar el esfuerzo de instalar los programas necesarios para que funcione lo que queremos montar.

Otro ejemplo, si en la empresa tenemos ordenadores de oficina y queremos tener centralizada la autenticación de usuarios, necesitaremos un servidor Windows, le instalamos Active Directory, y a tirar. ¿Se puede hacer eso con un servidor Linux? Sí, pero no es tan trivial y no tiene tantas opciones. Se puede hacer, ya que lo he hecho, montar un servidor con Samba y que haga de maestro, pero tiene sus limitaciones (por lo menos sin investigar mucho**) como no tener un usuario administrador, o no poder guardar todo el escritorio en el servidor y cuando te conectes en otro PC tenerlo ahí también***, etc, etc... Funcionar, funciona, eso si.

Linux

¿Realmente hace falta tener un servidor en Linux? Uno de los puntos a favor de los sistemas Linux es que puedes hacer (casi) todo lo que puedes hacer con un Windows, pero gratis****. Una de las cosas que más me duelen en los Windows son las licencias, que te cobran por todo. Para conectarte a un servidor Windows tienes que pagar por cada equipo que se conecte. Si es una red de 5 PCs, no pasa nada, van incluidas (o iban) en el precio, pero si tienes una red de 200 PCs se va de las manos. Por eso muchas empresas deciden tener algunos servidores en Linux, para ahorrarse licencias*****. Si sólo necesitas tener un servidor para guardar datos, te compensará Linux, montas un ftp sencillote y listo. Y no me apetece buscar más ejemplos xD que estoy perro.

En resumen, en ningún punto he tratado como factor a mirar que sea más rápido uno y otro, ya que eso dependerá en buena medida de qué instales y qué uses. Lo que se necesita valorar a la hora de usar un sistema u otro son las licencias, la comodidad a la hora de trabajar con el servidor, que te sirva y sobre todo, que tengas a alguien que sepa (o sepas tú). De poco te sirve montar un servidor Linux si te asusta el teclado, o montar un Windows si no sabes usar más que el ratón. Y si realmente no sabes qué necesitas, consultalo con tu farmacéutico haz como cuando compras un coche, que te aconsejen varias personas distintas que sepan y de ahí, saca las conclusiones.

* Windows 2008 R2 Estándar mínimo, o en su defecto Windows 2003 con el sp2.
** no me dio tiempo ni ganas la verdad, ya me toco mucho la moral el intentar meter un Windows 7 en un AD hecho con Samba, pero al final entró
*** Este punto no es malo, muchas redes están así, simplemente autentificando al usuario y que sus datos estén sólo en ese servidor. Ahorra mucho ancho de banda y tiempo.
**** Eso es mentira, no todos los Linux te van a salir gratis, véase RedHat.
***** No se bien como va lo de las licencias, pero es algo a tener MUY en cuenta cuando montamos una red, ya que si no tenemos las licencias de antemano nos puede salir mucho más caro.

jueves, 6 de octubre de 2011

Descansa en paz Steve

Puede que critique mucho a Apple últimamente, pero por cuestiones más bien de cachondeo, aunque con alguna cosa no estoy de acuerdo pero por ser un bafh :P.



Por eso, en vez de soltar alguna payasada y meterme un rato con los fanboys de apple (a mi no me dejaron entrar en la secta), solo decirle a Jobs que descanse en paz, su idea de hacer la informática realmente accesible a todos puede que no me guste, pero la comparto.


Descansa en paz Steve.

domingo, 25 de septiembre de 2011

MySQL (I) - Instalación

¡Buenas de nuevo a todos! Tras un periodo sin escribir nada, falta de tiempo y ganas, volvemos con una entrada si bien para muchos será algo trivial, a mí me tocó buscar cómo se hacía. Como siempre, me lo apunto aquí para futuras referencias mías, pero esperando que a alguien le venga bien.

Vamos a explicar una instalación básica, en un servidor con cualquier distro de linux. MySQL consta de dos partes, una cliente y una servidor, que pueden estar en el mismo servidor o separados. La configuración más normal es que estén instalados ambos en el mismo servidor, por ello es la que usaré aquí.

Lo primero es instalarlos desde los repositorios, como cada uno tenga a bien de hacerlo (yum, apt...), recordad que hay que instalar el cliente y el servidor ( mysql y mysql-server). Si no instalamos el paquete de servidor nos dará error al tratar de ejecutar el mysql (en este caso que queremos que el servidor mysql esté en nuestro servidor).

Después de instalado, lo primero que hay que hacer es cambiar la contraseña de root, para ello nos conectaremos al mysql desde la consola:
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 5.0.26 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Y escribimos el siguiente comando:
mysql> grant all privileges on *.* to root@'localhost' identified by 'Password' with grant option;
> Query OK, 0 rows affected (0.00 sec)
Cerramos la conexion, y al intentar entrar de nuevo nos rechazara la conexion. Ahora para acceder hay que hacerlo indicandole el usuario y que necesita contraseña:
# mysql -u root -p
> Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 to server version: 5.0.26 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Lo siguiente es crear una base de datos vacía:
mysql> create database DBnueva;
Query OK, 1 row affected (0.00 sec)
Y por ultimo, creamos un usuario con su contraseña y que sólo pueda acceder a su base de datos:
mysql> grant usage on DBnueva.* to Unuevo@localhost identified by 'Password';
Query OK, 0 rows affected (0.00 sec)
Y le asignamos permisos sobre la bbdd anterior:
mysql> grant all privileges on DBnueva.* to Unuevo@localhost ;
Query OK, 0 rows affected (0.00 sec)
Con esto, ya tendremos el MySQL preparado y con un usuario y una base de datos creada. Se pueden crear más BBDD de la misma forma.

¿Para qué nos vale esto? Por ejemplo para usar webs como wordpress o OScommerce si no tenemos un panel como el DirectAdmin (o en su defecto el phpMyAdmin) para crear las bases de datos de una forma sencilla. En algún otro momento veremos cómo hacer más cosas con las bases de datos, pero aún tengo que aprenderlo yo ;)

¡Un saludo!

Referencias:
http://www.linuxtotal.com.mx/index.php?cont=info__tips_011
http://www.debuntu.org/how-to-create-a-mysql-database-and-set-privileges-to-a-user

PD: Creo que no hace falta recordar que los nombres y las contraseñas que están puestos son genéricos, y que cada uno deberá cambiarlos por los que necesite.

viernes, 2 de septiembre de 2011

DirectAdmin: Panel de Usuario (I)

Lo prometido es deuda, volvemos con la tanda de post dedicados a Directadmin. Ahora le toca el turno al panel de usuario. Si habeis contratado un hosting y la empresa usa DirectAdmin, éste es el panel que usareis. Como en los otros paneles, aparece dividido en tres secciones: "Your Account", "E-mail Management" y "Advanced Features".

En "Your Account" podremos gestionar todas las opciones relacionadas con el dominio y la web. Si entramos en "Domain Setup" nos aparecerá una lista con los dominios asociados a esa cuenta, y pinchando sobre el nombre del dominio que deseemos accederemos a una lista de configuraciones extra. en "Bandwidth" podremos gestionar el límite de ancho de banda que tenga el domino, así como en "Disk Space" el tamaño máximo de los datos que tengamos. Si sólo tenemos un domino dejaremos marcado "Same as Main Accoun" para que el límite sea el que nos ponga el reseller. Si tuviesemos más es posible que quisieramos limitarlos para que no nos corten el servicio. "Secure SSL" es para activar la seguridad SSL, para ello necesitariamos un certificado. "CGI Access" nos permitirá ejecutar scripts en la carpeta "cgi-bin" y "PHP Access" nos permitirá utilizar php. Si sabemos que no usamos ninguna de las dos opciones lo recomendable por seguridad es desactivarlas. Cabe decir que estas tres opciones dependen de si el reseller las activó, si no lo hizo no se puede hacer nada. En caso de que tengamos activado el SSL, nos permitirá elegir si usar la carpeta private_html para las páginas o por el contrario usar public_html, la diferencia es si tienes dos partes en la web o sólo una, escogiendo en este último caso la opción de public_html para evitar enredos.

En "Site Summary / Statistics / Logs" podremos ver el estado de nuestro dominio, y si pulsamos sobre el nombre del domino nos mostrará las estadísticas de uso de éste (habiendo pasado un tiempo de uso, claro está). En "Change Password" se nos permitirá cambiar nuestra contraseña, pudiendo cambiar la contraseña individualmente para el acceso al DirectAdmin, para la cuenta de FTP y para la base de datos, o cambiarlas todas a la vez. Esto al gusto de cada uno. "Login History" nos mostrará un historial de las veces que hemos entrado al panel.

"DNS Management" nos permite editar los registros de las DNS de nuestro domino, pudiendo cambiarlos como lo necesitemos. Haciendo un salto a la otra columna, vamos a "FTP Management" que nos permitirá crear cuentas extra para conectarse por FTP y a qué carpeta se conectará. "Subdomain Management" nos permitirá crear de una forma sencilla subdominios asociados a la IP del servidor, no dejando poner IPs externas, para eso está "DNS Management" (si está activado por el reseller, claro). Desde "MySQL Management" podremos crear las bases de datos, si pulsamos sobre "Create new Database" se nos abrirá una página en la que podremos poner los datos que queramos usar. En la lista de las bases de datos tenemos tres opciones, "Repair" que reparará la bbdd si estuviese corrupta, "Check" que comprueba el estado de ésta y "Optimize" que recorerrá la bbdd eliminando y haciendo los cambios necesarios para que funcione mejor. Si tenemos una copia de seguridad de una bbdd, ya sea de este servidor o de otro que queramos migrar, en "Upload a Database Backup (.gz)" podremos subirla, seleccionamos la bbdd existente que queramos restaurar (si no exite, crearla) y con el botón "Examinar" nos abrirá una ventana para buscarla. Si abajo tenemos seleccionado "Your current login information" sustituirá el nombre de usuario y contraseña que tenga la copia por la que le hayamos dado cuando creamos la base de datos, si por el contrario queremos especificar otra seleccionaremos "A specified" y pondremos el usuario y la pass que necesitemos.

Seguimos con el menú principal, "Support Center" nos permitirá crear tickets a nuestro reseller para comunicarnos con el. "Instsalled Perl Modules" nos mostrará los módulos de perl que tiene instalado el servidor, si necesitasemos alguno éxtra, tendríamos que ponernos en contacto bien con el reseller para que se lo dijese al administrador o bien directamente con el administrador si pudiesemos, pero no tienen porqué instalar nada, eso depende ya de la política que lleven a la hora de ofrecer soporte.

Una opción interesante es "Password Protected Directories", que nos permite establecer un usuario y contraseña para acceder a una parte de la web. No es ningún gestor de usuarios ni similar, simplemente que al intentar acceder el navegador nos mostrará que hace falta tener credenciales para entrar a esa parte. Generalmente nos viene bien si se descubre que una web es vulnerable a algún tipo de ataque, para poder limitar el acceso mientras se revisa el código. Como digo, no es para crear una sección privada en la web para determinados usuarios (si bien se podría hacer, no es cómodo).

Para subir los archivos al servidor lo más recomendable es usar un cliente de FTP con los datos que tenemos y subir todo a la carpeta "public_html", pero si necesitamos subir pocos archivos y no tenemos un ftp a mano, o simplemente renombrar los archivos, podemos usar "File Manager" que es una suerte de cliente ftp web. No es cómodo de usar para subir muchas cosas, pero si por ejemplo necesitamos hacer algún pequeño cambio rápido nos será de utilidad.

Dejo para el final la última opción de este apartado, y es "Create/Restore Backups". Como hemos dicho, tener una copia de seguridad es vital. Con esto podemos crear una en el propio servidor por lo que pudiera pasar, sin depender ni de la copia del reseller ni la del administrador, aunque no nos deje crearla en un servidor externo, podremos descargarla usando el ftp (está en la carpeta "backups"). Podemos elegir qué incluir en la copia, pero al ser una copia manual que haremos cada semana o dos a lo sumo, seleccionaremos todo para estar tranquilos, y pulsamos [Create Backup]. Para restaurarlo simplemente seleccionamos la copia que deseemos restaurar en el desplegable que hay abajo (van ordenador por fechas) y pulsamos [Select Restore Options] y tras un rato, restaurará toda la información.

Con ésto acabamos por hoy, la siguiente sección es la del correo que también es larga, por lo que supongo que sólo trataré esa sección. Recordad que todas las opciones que os comento son con una cuenta de usuario sin límites, no tiene por que ser la que os den a vosotros, asi que determinadas cosas no os aparecerán o estarán limitadas.

¡Nos vemos en la siguiente!

jueves, 1 de septiembre de 2011

DirectAdmin: Panel de Reseller

Bueno, volvemos con la guia de DirectAdmin. Esta vez vamos con el panel de reseller. Ya se que dije que primero iría el de usuario, pero este es muy facilito. Volvemos a tener tres partes bien diferenciadas, "Account Management, destinado al mantenimiento de los usuarios, "Reseller tools", un par de herramientas para gestionar nuestros usuarios y finalmente "Extra features", unas cuantas opciones que no usaremos mucho. Empezamos con el "Account Management".

Lo primero que vemos es "Add New User", que nos permitirá añadir usuarios que tendrán un espacio en nuestro hosting. Con uno de estos creado, lo único que necesitaremos será subir una página por ftp y usar el correo, pero ya llegaremos a ello. Cuando intentamos crear el primero, nos da un error, ya que no tenemos creado ningún paquete con las características que tendrá. Para crearlo, iremos a "Add Package" y seleccionaremos las caracterísitcas que deseemos que tenga nuestros usuarios. La ventaja de este sistema es que nos permite crear tantos tipos de paquetes como necesitemos, por ejemplo si queremos vender varios tipos de hosting: con y sin mysql, con 10, 100 o infinitas cuentas de correo, etc. Las características son idénticas que al crear un paquete para reseller desde el administrador, pero tiene algunas diferencias: en las opciones de usuario no están las opciones de "IP", de "SSH For Users" ni "Allow Overselling" ya que son herramientas que no necesitan, a cambio están estas tres:
"Suspend at limit" - Si el usuario se pasa del ancho de banda establecido se suspende el hosting: no se puede acceder a su web, saldrá un mensaje diciendo que se ha superado el ancho de banda permitido ni funcionará el correo.
"Skin" - Se puede elegir el Skin que tendrá el usuario, si se instala alguno adicional es aquí dónde se cambia.
"Languaje" - Es el idioma del DirectAdmin, pero tiene trampa. Lo que te permite el cambiar de idioma es el skin, por lo que si necesitas algún idioma en específico tendrás que buscar algún skin en tu idioma.
Cuando tengamos todo elegido, pulsamos sobre el botón [Save] y se guardará el paquete con el nombre que le hayamos dado.
La siguiente opción es "List Users" que nos mostrará una lista con los usuarios que existen pero sólo los creados por el reseller, es decir, no se podrán ver los usuarios que tienen otros desde aquí, para verlo sería desde el panel de Administrador. Podremos ver la información de cada usuario y loguearnos sin necesidad de contraseña en la cuenta que necesitemos. "Manage User Packages" es para ver los paquetes de usuario que tenemos creados. Sólo veremos los nuestros como reseller, y si lo deseamos, los podremos editar para cambiar las características que hagan falta. Vuelve a aparecer la opción de "Manage Tickets", ahí recibiremos los tickets que nos envíen nuestros usuarios. Se puede desactivar desmarcando la casilla " Ticket System Enabled" y si marcamos la casilla "Email a copy of all messages to " y escribimos un correo válido, nos mandará ahí una copia de los tickets cuando los recibamos. Finalmente queda la opción de "Edit User Message" que nos dará la opción de editar un correo con los datos para que se mande cuando demos de alta a un usuario. Puedes traducirlo, pero ten en cuenta que las palabras que aparecen entre | son palabras reservadas que se sustituirán por los datos del cliente.

Pasamos rápidamente al siguiente apartado: "Reseller Tools". Con "Change Passwords" podremos cambiar las contraseñas de los usuarios que hayamos creado, útil por si alguno pierde la contraseña de acceso. En "Skin Manager" podremos instalar los skins que comentabamos antes, en "File" pondremos la ruta del skin (en nuestro ordenador) en "Skin Name" el nombre que querramos ponerle al skin, y si seleccionamos la opción "Install Serverwide" podrán acceder a él todos los usuarios que existen en el servidor (opción sólo disponible si entramos al panel reseller usando un usuario administrador). En "Reseller Statistics" podemos ver el uso que le damos a la cuenta, el ancho de banda que llevamos consumido, el espacio en el disco, etc, no tiene mucho misterio. La siguiente opción es importante "Manage User Backups", es muy parecida a la la herramienta de backups que se usa desde el administrador, pero tiene algunas limitaciones: no nos deja cambiar la ruta donde se guardarán los datos en local, siempre será en /home/"reseller"/user_backups y no nos deja elegir el qué guarda. Suponiendo que el Administrador haga copias de seguridad regulares, esta opción no es tan vital, si no lo hiciese... mal. Sólo queda "IP Management" que simplemente es que si tenemos control sobre alguna IP como resellers podremos decir qué usuarios las usarán.

Y acabamos por hoy con las "Extra Features", que son las opciones de relleno. "System Info" es lo mismo que en el panel de administrador, ver las características del servidor. Si necesitamos mandar un mensaje a todos los usuarios, "Message All Users" nos permitirá hacerlo, avisando por ejemplo de que se va a apagar el servidor a tal hora para hacer unas revisiones. Si queremos tener como reseller una dirección DNS propia con nuestro dominio, en "Name Servers" podremos editarlas y hacer que sean las que por defecto tengan los nuevos dominios que se den de alta. Y para finalizar del todo, "Conctact Administrator" nos permitirá abrir un ticket para que el administrador nos lo resuelva (si lo tiene activado, claro).

Hay que tener en cuenta que alguna de estas opciones no las tengan todos los reseller, por haberla desactivado en administrador en el paquete que ha asociado al reseller. Con esto doy por zanjado esta parte del panel y en el siguiente si me meteré con el usuario básico. ¡Hasta la próxima!

martes, 30 de agosto de 2011

Securizando servidores (V)

Hoy descansamos un poco del DirectAdmin y volvemos con algunos consejos de seguridad. Una de las rutas de acceso más vulnerables a nuestro servidor es el /tmp y /var/tmp. ¿Y porqué? Porque aprovechan aplicaciones web mal programadas, php o perl, que les permite ejecutar código remotamente. Y desgraciadamente es uno de los problemas que más adolecen los servidores. ¿Se puede solucionar esto? Lo más efectivo sería programando bien, pero todos sabemos que eso es más dificil ya que la mayoría de las veces no hacemos el codigo, generalmente por usar wordpress, joomla, osCommerce, etc... Esto no quiere decir que no se use, simplemente que hay que tenerlo actualizado para corregir errores de éste tipo. Pero tranquilos, con este pequeño tip nos quitaremos de encima a los "hackers"*, pero si es un hacker** de verdad encontrará otra forma de entrar.

Como he comentado antes, cuando usan las vulnerabilidades del php la carpeta a la que tienen acceso es la de los temporales, que en una instalación normal es igual a las demás carpetas y pueden ejecutar lo que suban, consiguiendo por ejemplo una shell remota con la que sí tendrán acceso completo. Así que lo que tenemos que hacer es quitar los permisos de ejecución a la carpeta. Si tienes esto en consideración a la hora de instalar el servidor, puedes crear una partición de 1GB por ejemplo para asignarla a /tmp y luego quitarle los permisos en el el fstab (luego veremos cómo). Pero claro, si tenemos el servidor ya montado desde hace años (o días o horas) no podemos volver a reinstalar todo, menuda pereza. ¿Se puede hacer algo? Venga, que es Linux, que preguntas...

Por si te lo preguntabas, la respuesta es sí. Podemos crear un archivo especial y hacer que sea un disco duro (esto por ejemplo se usa también en algunas máquinas virtuales), y luego montarlo para que albergue el /tmp protegiendolo. Es bien sencillo el proceso, primero creamos el archivo:
#dd if=/dev/zero of=/tmp_partition bs=1024 count=500000
Con esto crearemos un archivo lleno de ceros y que ocupe 500MB, podemos hacerlo del tamaño que necesitemos, pero con esto suele bastar.

Lo siguiente es darle formato para poder usarlo como disco duro, en este caso usaré ext3, pero puedes usar el que prefieras:
#mkfs.ext3 /tmp_partition
Con "tune2fs -c 200 -i 200 /tmp_partition" cambiaremos la frecuencia del chequeo del disco, en este caso cada 200 días.

Para probar que está correcto, podemos montar el archivo en una carpeta cualquiera:
#mkdir dd
#mount -o loop /tmp_partition dd ***
#ls dd
Nos tendría que salir sólo la carpeta de "Lost+Found", si es así está todo correcto.Desmontamos el la carpeta con "umount dd" y listo, ya lo tenemos casi hecho, sólo nos falta editar el archivo /etc/fstab con nuestro editor favorito y añadir:
/tmp_partition /tmp ext3 loop,noexec,nosuid,rw 0 2

Para poder montar /tmp nos tenemos que asegurar de que todos los servicios que escriben en /tmp están parados. Lo normal es parar Apache, Oracle, Vmware, etc. Podemos ver si hay más ficheros en uso con "lsof -n | grep tmp". Una vez esté libre /tmp, hacemos:
#mount /tmp
#chmod 1777 /tmp
#mv /var/tmp/* /tmp
#rmdir /var/tmp
#ln -s /tmp /var/tmp

Y ya lo tenemos todo listo. Si queremos probarlo creamos un archivo en /tmp, le damos permisos de ejecución y probamos a ejecutarlo: nos dira que nones.

Me dejo para el final si teniais una partición hecha para /tmp, sería añadir (o editar la linea) en el fstab:
/dev/hdaX /tmp ext3 nosuid,noexec,nodev,rw 0 2
Y poner estos comandos:
#cd /var
#mv /var/tmp/* /tmp
#rmdir tmp
#ln -s /tmp /var/tmp

Como éxtra, vamos a quitar permisos de ejecución a algunos binarios que son los que más usan, como el wget para descargar archivos o el gcc para compilar, entre otros. Simplemente tendremos que dejar que el root los ejecute:
#chmod 0700 /usr/bin/make
#chmod 0700 /usr/bin/gcc*
#chmod 0700 /usr/bin/as86
#chmod 0700 /usr/bin/lynx
#chmod 0700 /usr/bin/wget
#chmod 0700 /usr/bin/curl
#chmod 0700 /usr/bin/nc
Hay que tener cuidado si algun script de algun usuario utiliza esos comandos, ya que no se lo permitirá. Si fuese necesario dar permisos a ese usuario para que utilice sólo los binarios necesarios.

Con esto podremos dormir un poco más tranquilos. ¡Hasta la próxima!

* Entrecomillado porque me refiero a los niños de copian el código de la web hacker de turno.
** Sin comillas porque me refiero a los que se lo ganan.
*** Si nos da error posiblemente no esté cargado el modulo loop en el kernel, toca o cargarlo con modprobe loop y si no funciona, recompilar el kernel.

Fuente de la información: http://www.ran.es

lunes, 29 de agosto de 2011

DirectAdmin: Panel de Administrador (III)

Bueno, volvemos a la carga con el uso del DirectAdmin, seguimos dónde lo dejamos la última vez. Las siguientes opciones son menos importantes, por lo que no haremos mucho incapié en ellas.

La primera que nos encontramos es "Multi Server Setup", que es para tener varios servidores gestionados con el panel a modo cluster. No lo he tocado nunca aunque espero poder hacerlo. Si lo hago, lo explicaré por aquí. Si realmente lo necesitas, podrás encontrar información en los foros de DirectAdmin.

Siguiente, "Mail Queue Administration". Para ver la cola de mensajes que tiene pendiente por enviar. Un método visual de ver si se está mandando spam desde nuestro servidor ya que podemos revisar la información de los mensajes. Es el equivalente a "exim -bp" que usamos en consola. Si tenemos muchos mensajes encolados, se pueden seleccionar y con el botón "Delete" borrarlos. "Move Users between Resellers" nos permitirá cambiar de reseller a un usuario. No creo que se utilice mucho, la verdad, aunque es interesante tenerlo.

Ahora llegan unas opciones para controlar el estado del servidor: "System Information" nos indica las caracterísiticas de hardware del servidor y el estado de los programas instalados, pero no se puede interactuar más. Para poder iniciar, detener o reiniciar los servicios hay que ir a "Service Monitor", que nos mostrará el estado de los servicios instalados por DirectAdmin e incluso reiniciar la máquina.

Volviendo a los backups, la siguiente opción permite hacer un backup del sistema: "System Backup". Nos permitirá hacer una copia más a fondo del sistema, con archivos de configuración. No está mal tener alguna copia de estas, pero al ser tan
exahustiva tarda y sobrecarga el servidor. Lo ideal una copia de estas al mes y en un servidor externo. Las opciones son parecidas al backup normal, por lo que no pararé en explicarlas. Simplemente seleccionar que haga copia de todo y listo.

La siguiente opción vuelve a ser para monitorizar el servidor, en "Log Viewer" podremos ver los logs de los programas de DirectAdmin para ver si existe algún error o si queremos ver qué paso cuando se bloqueo el servidor.

"File Editor" nos permitirá editar a mano las configuraciones de apache, exim, etc... desde el navegador, ya que no siempre podremos acceder a un terminal, aunque a mi parecer es más comodo. No tocar esta parte si no se sabe qué se quiere hacer y cómo se hace, y tener siempre una copia del texto antes de modificarlo (puedes seleccionarlo todo y pegarlo en un bloc de notas de tu equipo) por si no funcionan bien los cambios. Y acabamos las opciones de "Admin tools" con "Process Monitor", que es un "top", es decir, muestra los procesos que se están ejecutando en tiempo real. Es como el "administrador de tareas" en windows (Alt+Ctrl+Supr).

Pasamos rápidmente a la última sección del panel de Administrador, las "Extra Features", básicamente más opciones. Hay algunas interesantes y útiles y otras que son más específicas. En "Complete Usage Statistics" nos muestra el estado del servidor: ancho de banda consumido, espacio en el disco, dominios que hay, etc. "Custom HTTPD Configurations" nos permite editar el archivo httpd para cada dominio, como siempre a la hora de editar archivos: 1. Haz copia por si falla, 2. Si no sabes usarlo, no lo toques. Si esta mal el archivo las webs de ese domino dejarán de verse, por eso es importante. "PHP SafeMode Configuration", esto lo dejo pendiente ya que no lo tengo muy claro y para no liar a nadie mejor dejarlo por defecto si no se sabe.

En la versión 1.39 de DirectAdmin añadieron la opción de "Brute Force Monitor" que es un registrode los ataques que recibe la máquina, entendiendo por ataque intentos de autentificación erroneas. No hay que alterarse, si se tiene una política de contraseñas medianamente segura (minusculas y numeros intercalados) no suele haber mucho peligro. Usuarios y contraseñas como: Pepe - pepe, Jose - 1234, no son seguras, ni mucho menos recomendables.

En "Administrator Settings" podemos cambiar la configuración del panel, veamos algunas:

"Notify all admins whenever a service goes down using the messaging/ticket system." - Si se cae algun servicio avisa por correo, generalmente querrás tenerla marcada ya que te indica que algo no funciona bien y que hay que resolverlo.

"Suspend a Reseller and his Users when the Reseller goes over his Bandwidth limit." - Importante, ya que si un reseller se pasa del ancho de banda bloquea todos los servicios de ese reseller y de sus usuarios. Marcado si quieres poner limite y no tener que controlarlo. El límite es mensual.

"Allow a Reseller to Backup/Restore his Users.(Separate from User Backup/Restore)" - Con esto marcado los resellers se pueden hacer cargo de las copias de seguridad de sus usuarios. Consejo: habilitarlo y que se encarguen los resellers de sus clientes.

Bajando a la sección "Security" es aconsejable habilitar esto:
"Blacklist IPs for excessive login attempts" y en el número poner unos 50 intentos. Son intentos de acceso por minuto desde una IP, los bots generalmente tratan de acceder bastante más veces. Si sobrepasan el umbral, se bloqueará el acceso mediante iptables. Para desbloquear las IPs cada cierto tiempo hay que poner un valor mayor que 0 a "Remove an IP from the blacklist after". Pasado un tiempo, puede que se nos hagan pesados los mensajes que envía DirectAdmin con avisos de ataquies, para quitarlos simplemente en la opción "Parse service logs for brute force attacks" seleccionamos "No" y dejará de enviarlos. Esta opción la deshabilitamos: "Enable Automatic Lost Password Recovery" si alguien pierde su contraseña que pida al reseller o al admin que les ponga otra nueva, toda la seguridad que se pueda tener alrededor de las contraseñas es poca. En la sección de "Mail" aparecen dos opciones: "Daily Email Limit per DirectAdmin User", que permite limitar el envío diario de correos de un USUARIO, esto es, TODAS las cuentas de correo suman. Si tenemos 10 cuentas que envían 50 mensajes al día contará como 500 correos enviados. Pasado eso, DirectAdmin no procesará los nuevos mensajes y dará error. Por último "Use RBL Blocking" comprueba las ips de los correos y si están listadas en algún servidor como spammers los rechaza. Útil también esta opción para combatir el spam.

Volvemos con el menú de adminstrador, ya quedas pocas opciones: De "Licensing / Updates" sólo nos interesará la opción de "Update DirectAdmin" que actualizará el panel si existe alguna versión nueva. Ojo, actualiza el panel, no los programas. "Plugin Manager" permite la utilización de plugins para DirectAdmin, nunca los he usado así que no puedo dar mucha información. Y ya sí, por último queda "All User Cron Jobs" que es la lista de todos los crons que están programados en la máquina.

Bueno, espero que con estos posts haya quedado claro el uso de esta parte del panel. Lo siguiente será el panel de usuario, pero tiene un poco menos de chicha asi que tranquilos. Si teneis alguna duda, no dudeis en comentar y si puedo os resolveré la duda, y si no, en los foros de DirectAdmin están muchas cosas resueltas :)

domingo, 28 de agosto de 2011

DirectAdmin: Panel de Administrador (II)

Seguimos con esta tanda de post dedicados a DirectAdmin. Ya vimos cómo crear usuarios y paquetes, asi que ahora pasaremos a otra parte más importante: la sección de "Admin Tools". Esta parte tiene uno de los puntos más importantes de la gestión del servidor, que no es otro que la realización y restauración de backups, pero empecemos por el primer punto

"IP Management" nos permite añadir IPs extra a nuestro servidor, ni que decir tiene que debemos tener esas IPs contratadas ya que si no podemos tener problemas no sólo con nuestro proveedor si no en el propio servidor, alguien puede usar esa IP y hacer que el servidor nuestro deje de funcionar bien. Cabe destacar que sólo se deben añadir las IPs desde aquí, no tenemos que añadirlas manualmente desde el terminal (para eso hay un script que habrá que usar, pero cuando lleguemos a la parte de administrar DirectAdmin por consola se explicará).

La siguiente opción es "DNS Administration", para gestionar las DNS de cada dominio. Hay que decir que para que podamos gestionar el dominio desde el panel hay que redireccionar las DNS del domino hacia este servidor, si no, la gestión se hará desde el panel que ofrezca el proveedor. Puedes añadir los dominios manualmente, simplemente introduce el nombre, la ip que tendrá asociada y el servidor DNS. Para editar las dns de un dominio, en la tabla en la que están listados pulsaremos sobre el nombre de éste. Nos llevará a una página nueva en la que podremos añadir o modificar subdominios.

Llegamos a la opción importante, "Admin Backup/Transfer". Como he dicho en otros post, hay que tener copias hasta debajo de las piedras. Con esta herramienta tendremos una forma cómoda de crearlas. Hay dos secciones bien diferenciadas, "Create Backup" y "Restore Backup" divididas en pasos. Empecemos creando la copia en la sección  "Create Backup":
"Step 1: Who" - De quien se harán las copias: "All Users" selecciona todos los usuarios de la máquina, cosa recomendada. "All users except selected users", los usuarios que se marquen en la lista no tendrán copia. "Selected Users", sólo se hará copia de los usuarios seleccionados, útil si se quiere hacer alguna modificación en un usuario concreto para tener una copia.
"Step 2: When" - Establece cuando se va a hacer la copia. "Now" indica que se hará en el momento y "Cron Schedule" nos creará una tarea en el cron para que se repita.
"Step 3: Where" - Dónde se almacenará la copia. "Local" la hará en nuestro servidor, ideal para las copias diarias ya que es rápido. Generalmente la hace en /home/admin/admin_backups, pero se puede poner en cualquier carpeta a la que tenga acceso el usuario admin. La otra opción es "Ftp" para hacerla en un servidor externo. Necesitaremos saber la ip (o el nombre del domino de la máquina), un usuario del servidor ftp, la contraseña y la ruta donde queremos guardar las copias (esta ruta tiene que exisitir) y el puerto que el servidor ftp tiene habilitado para la conexión, generalmente el 21. La ventaja de estas copias es que quedan fuera del servidor, por lo que si el disco fallase habría una copia fuera. Es vital hacer copias de este tipo, como muy poco una vez al mes, si no a la semana. No es estrictamente necesario hacerlas a diario, ya que al ser por red tarda bastante más que haciendolo en local y satura más la máquina durante más tiempo. Lo ideal es hacer las copias de madrugada o cuando menos conexiones existan.
"Step 4: What" - Queda por especificar de qué queremos que se haga la copia. Lo más cómodo es "All Data" ya que hará una copia de todos los datos (ahora diré cuales son exactamente). Realmente no es necesario hacer copia de todo, ya que se puede llenar el disco de copias. Para eso está la siguiente opción: "Selected Data" con la que se puede elegir de qué hacer la copia. Veamos las opciones:

Domains Directory - Contenido del directorio del dominio, vease, las páginas webs. No es realmente importante hacer copia de esto siempre ya que el código de las webs no varía y puede ocupar mucho.

Subdomain Lists - Contenido de las DNS del domino, lo mismo, no hace falta hacer copia diaria.

Ftp Accounts - Copia la lista de usuarios, no cambia a diario, por lo que no hace falta tampoco que se diaria.

Ftp Settings - Configuración del Ftp, lo mismo que antes.

Databases - Esto sí es importante ya que la mayoría de las webs que tienen páginas dinámicas tienen los datos en una base de datos y sí es normal que cambien a diario, añadiendo o quitando datos. Copia diaria.

Mailing Lists - Las listas de distribución, si las tienes habilitadas quizá quieras tener copia diaria.

E-Mail Accounts - Copia de las cuentas de correo, depende de la importancia que tengan los correos, pero se puede hacer diaria.

Forwarders - Esto ya da un poco más igual, depende de la cantidad de correos que tengas apuntados.

Autoresponders - Igual que antes, depende de la cantidad que se tengan creados.

Vacation Messages - Válido lo de "Autoresponders"

E-Mail Settings - Lo mismo que con "E-mail Accounts".

"Step 5 [submit]" - Pulsaremos el botón "Submit" para confimar la copia. En unos minutos empezará y si más abajo tenemos habilitada la casilla "Send a message when a backup has finished." mandará un correo cuando finalice la copia.

Resumen, lo más importante serían las bases de datos y los correos, por lo que programaría una copia diaria de éstos y una semanal completa siempre en el propio servidor y en el ftp, y si acaso, una de las bases de datos y del correo cada 3 días en el ftp.

Lo siguiente es restaurar las copias en la sección "Restore Backup", también está dividido en pasos, esta vez sólo tres:
"Step 1: From Where" - Hay que indicarle dónde están las copias,  si en el servidor local o en uno externo. Si esran en el propio servidor seleccionamos "Local" e indicamos la ruta donde están las copias almacenadas. Si está en un servidor externo hay seleccionar "Ftp" y poner los mismos datos que pusimos al crear la copia: IP del servidor, usuario, contraseña, ruta y puerto. Cuando lo tengamos pulsamos el botón "Update Files".

"Step 2: Select IP" - Hay dos opciones, la primera "Use the IP stored in the backup" asignará la IP que tiene el backup al dominio. Si fuese una migración y no se tiene la misma IP hay que seleccionar la segunda opción "Use the IP from the list" y seleccionar la que queramos. Si se quiere asignar una IP a varios dominios tiene que estar marcada como compartida (en IP Management).

"Step 3: Select File(s)" - Seleccionamos los usuarios que queremos restaurar.

"Step 4: [Submit]" - Cuando hayamos finalizado de rellenar todo, pulsamos el botón submit y en unos minutos empezará a restaurarlo todo. Como antes al crear el backup, si tenemos habilitada la casilla "Send a message when a backup has finished." mandará un correo cuando finalice la restauración.
Queda por ver la parte de "Current Backup Crons" que serían las copias programadas y "Backup / Restore Settings", que la primera opción es para que te mande un correo cuando finalice la acción y la otra es para que al restaurar un dominio te ponga como DNS las dns del servidor o deje las que trae el backup. Si los dominios los gestiona el servidor y se han traido de otra máquina seleccionar esta opción para que actualice la información.

Con esto acabamos por hoy con las tres primeras opciones de la seccion "Admin Tools", más adelante seguiremos explicando el resto de opciones.

sábado, 27 de agosto de 2011

DirectAdmin: Panel de Administrador (I)

Bueno, como dije, empezaremos usando el panel de administrador, ya que es el primero que necesitaremos usar para configurar nuestro hosting. Lo primero indicar que por defecto el DirectAdmin está en inglés y que para poder cambiarlo de idioma necesitaremos instalar un skin en el idioma que necesitemos. Lo difícil de ésto es encontrar un panel que esté en nuestro idioma y que sea útil, por lo que en principio no tengo planeado tocar el tema.

Tras instalar el panel en nuestro servidor, tendremos que acceder a él desde un navegador para configurarlo. Para ello, accederemos desde un navegador cualquiera a http://ipdelservidor:2222 y nos aparecerá un recuadro pidiendo el usuario y la contraseña. Accederemos como admin ya que por ahora es la única cuenta que tenemos creada con la contraseña que nos dió DirectAdmin o bien con la que le pusieramos al usuario admin. Existen tres subpaneles, "Admin Level", "Reseller Level" y "User Level" a los que podremos acceder desde la derecha. Nos centraremos ahora en el "Admin level" para empezar a usar nuestro servidor.

Se nos abrirá una página con tres secciones bien diferenciadas: "Server Management", "Admin tools" y "Extra features", con sus correspondientes apartados. De los botones que aparecen arriba sólo nos interesará de momento el botón "Home" que es la página que aparece. La sección de "Server Management" es básicamente para la creación de usuarios. Como hemos indicado en el otro post, este panel es para hosting, por lo que nos ofrece diversos de cuentas.

Los administradores son los usuarios con más acceso al panel, pudiendo modificar todo lo que aparece en el panel. Generalmente sólo debería haber uno, y sólo tener acceso a él el administrador del servidor o en su defecto un grupo pequeño de gente. Como siempre, todos los cambios que se hagan deberían quedar apuntados en el cuaderno de bitácora del servidor, esto es, un cuaderno de papel en el que se apuntará todo lo que pase en el servidor, con todos los detalles posibles y fechas, para futuras referencias. Luego están los usuarios, que son los que tendrán el hosting con su espacio web y correo. No hay mucho que detallar en el concepto, más adelante veremos qué opciones tienen. Por último, existe un usuario llamado reseller. No tiene tanto permiso como el administrador, ya que su función es para la reventa de hosting, por lo que su uso es el de crear usuarios normales.

Con ésto explicado, creo que las funciones de "Create Administrator" y "Create Reseller" quedan claras, es para la creación de usuarios con esas características, al igual que "List Administrators" y "List Resellers" sirve para mostrar y acceder a estos usuarios. Si entrarmos en "Create Administrator" vemos que nos pide 3 datos, nombre de usuario, email de éste y una contraseña.

Antes de crear un reseller hay que crear un paquete de reseller en "Manage Reseller Packages", ya que hay que establecer los límites que tendrán éstos a la hora de crear cosas. Recordemos que éstos usuarios son para revender el hosting, esto es, Pepito tiene una pequeña empresa y quiere vender alojamiento pero no quiere un servidor entero ya que no le compensa. Se le crea una cuenta de éstas y listo, él podrá crear tantos usuarios como se le permita. Pinchamos en "Manage Reseller Packages" y nos saldrá la lista de los paquetes que tenemos creados. La primera vez aparece vacío asi que vamos a crear uno pulsando en "Add Package". Hay un montón de opciones, asi que vamos a explicarlas una a una:

Bandwidth (MB) - Ancho de banda del que dispone el usuario, si se pasa, se le cortará el servicio hasta que pase el mes. Esto es útil si el servidor que tienes tiene un límite de ancho de banda mensual o si quieres limitarlo por alguna razón.

Disk Space (MB) - Espacio que tendrá el usuario para almacenar tanto web como correo. Si se pasa del espacio, se bloquea la cuenta y hay que borrar las cosas. Lo más importante es que si nos pasamos, dejará de funcionar el correo, así que cuidado.

Domains - Numero de dominios que puede gestionar el usuario desde el servidor. Como el panel nos ofrece servicio de DNS, como veremos más adelante, nos permite asignar un límite de dominios que puede tener un usuario. Lo normal para un usuario es 1.

Sub-Domains - Número de subdominios que puede tener cada domimio. Los subdominios son "www.", "ftp." "mail.", o lo que queramos poner. Lo normal será poner estos 3, pero se puede cambiar y en algunos casos hay gente que necesita más porque puede tener aplicaciones web o por ejemplo tener una version para movil de la web.

IPs - Numero de IPs que puede usar. Esto es por si tienes varias IPs en el servidor.

Email Accounts - Numero máximo de cuentas de correo que tendrá un usuario. Esto dependerá de lo que necesites o quieras vender. La mayoría de la gente se conformará con tener 5 cuentas, pero como digo, depende de lo que quieras vender.

Email Forwarders - Opcion para reenviar el correo que entra en una cuenta a otra, lo mismo de antes, lo que se necesite.

Mailing Lists - Para crear listas de distribución. Cuidado con ellas porque pueden hacer que listen el servidor como spammer, usar con cuidado.

AutoResponders - Para mandar mensajes automáticamente. Por ejemplo si se está de vacaciones o se quiere avisar al que envía el correo que se ha recibido.

MySQL Databases - Numero de bases de datos del que dispondrá el usuario, depende de las necesidades de cada uno.

Domain Pointers - Para redireccionar dominios desde el panel, por ejemplo para tener juntos el .com y el .es de nuestro dominio.

Ftp Accounts - Numero de cuentas ftp del que dispondrá. Con una suele ser suficiente.

Anonymous Ftp Accounts - Activar el acceso anonimo al ftp, esto es que no haga falta tener un usuario para poder subir y bajar cosas. Mejor dejarlo desactivado ya que pueden usarse para subir cosas que no se desean.

CGI Access - Habilitar el uso de CGIs, que son scripts para hacer algunas funciones como envíos de correos.

PHP Access - Habilitar el uso de PHP, en la mayoría de los casos necesario.

SpamAssassin - Habilita un programa para quitar el spam, a veces útil pero puede dar problemas si no se configura bien.

Catch-All E-mail - Cuenta de correo a la que irá todos los mails que se dirijan a cuentas que no existan en el dominio. Puede ser útil, o no.

SSL Access - Activa la seguridad SSL, hace falta tener un certificado y generalmente una IP dedicada.

SSH Access - Acceso SSH para el reseller.*

SSH Access for Users - Da la capacidad al reseller de que las cuentas de usuario que cree tengan acceso por ssh si quiere.*
* No recomiendo estas opciones, cuantas menos cuentas tengan acceso por ssh mejor.

Allow Overselling - Deja saltarse los límites pero avisando.

Cron Jobs - Habilita el cron, esto es, poder automatizar tareas.

System Info - Ver el estado del servidor. Yo lo deshabilitaría para que los clientes no molesten a la mínima, y la mayoría de veces sin saber.

DNS Control - Permite la edición de los datos de las DNS.

Personal DNS's        None
             Uses 2 IP's, domain uses one of them
             Uses 3 IP's, domain gets own IP
El usuario tiene un panel de DNS para él, mejor desactivarlo si sólo tenemos una IP.

Share Server IP - Para que el reseller cree las cuentas usando la IP del servidor.

Package Name - Nombre con el que guardaremos el paquete para usarlo más adelante.
Ahora vamos con la creación de un reseller ya que si no se alargará mucho. Simplemente cuando tengamos creado el paquete, en el menú principal seleccionaremos "Create Reseller", nos pedirá los datos: nombre, correo, contraseña, dominio, paquete que se asociará, IP que le daremos (Shared - server si sólo hay una) y si queremos editar el mail que se le envía. Da la opción de crearlo con características diferentes del paquete, pero son las mismas que he comentado anteriormente.

Por último un vistazo rápido a las opciones que quedan, ya que no hay mucho que contar. Con "Change Passwords" podremos cambiar la contraseña a cualquier usuario, y con "Show All Users" veremos todas las cuentas que tengamos creadas en nuestro servidor, pudiendo editarlas o lo más cómodo, loguearnos con ellas, por ejemplo para solventar errores o guiar al cliente a la vez mientras trata de hacer algo. La última opción que nos queda de ésta parte del panel es "Manage Tickets", una opción para gestionar las incidencias creando tickets, ya dependerá de cada uno si quiere usarlos o prefiere otro método de contacto.

PD: No se borra el usuario admin NUNCA, JAMAS DE LOS JAMASES, NEVER EVER IN THE EVER. Que se puede hacer, Linux lo permite, pero no significa que tengas que hacerlo. Si quieres tener un administrador con tu nombre lo puedes crear, pero dejando el de admin, que te cargas todo si lo borras.

viernes, 26 de agosto de 2011

Instalación de DirectAdmin

¿Qué es DirectAdmin, se preguntarán algunos? Bien sencillo, es un panel de gestión web con el que podremos gestionar algunos servicios de nuestro servidor Linyx de una manera sencilla. Es un panel pensado para hosting, por lo que ofrece lo necesario para tener y mantener páginas webs en el servidor. No es compatible con todas las versiones de Linux, podeis comprobar los que necesitais en su web, aunque explicaré lo necesario aquí.

Se necesita un servidor con un linux recien instalado, ya que el instalador usa sus propias versiones de los programas, por lo que si existiesen otros habrá conflictos y acabará siento necesario reinstalar. Supondremos una CentOS 5.5 x64, ya que ésta tiene unos pasos extra para que funcione por un problema con unas librerías. En la página explica un particionado, pero no es obligatorio, por lo que en la instalación del linux preferido podeis seleccionar lo que querais. Yo sólo hago 2 particiones, una para la swap y el resto para la raiz, ya que así se evitan futuros problemas de espacio mal calculado, con sus correspondientes pegas claro está, pero eso es otro cantar. Lo más importante para instalarlo es tener una licencia del panel (no es gratuito) adecuada a nuestro sistema (CentOS, Debian, ...), tener una IP pública y hacer una instalación básica, sin instalar el apache ni nada, sólo el paquete "base" y si acaso, las "Herramientas de desarrollo".

Lo primero necesitamos instalar las dependencias, principalmente el compilador gcc ya que se descarga el código fuente de los programas que usa y los compila él mismo para evitar problemas.
#yum install gcc gcc-c++ flex perl
Lo siguiente será descargar de su web el instalador y lanzarlo:
#wgetvhttp://www.directadmin.com/setup.sh
#chmod 755 setup.sh
#./setup.sh
Nos pedirá que introduzcamos nuestro usuario y licencia, así como el nombre de la máquina, que tiene que ser FQDN. Aquí viene el primer punto que hay que tener cuidado, el nombre tiene que ser del tipo servidor.dominio.es, no admite que sea ni dominio.es ni servidor. No tiene porqué existir el dominio, pero sí que se tiene que poner así, ya que si no dará problemas y muchos. Lo siguiente será decirle en qué tarjeta de red tenemos la IP asociada a la licencia, generalmente eth0, pero revisarlo por si acaso, ya que si no la instalación fallará. En algunos casos habrá que cambiarla, por tenerla en eth1 o por tener otra nomenclatura de tarjeta de red, como suele ser en algunos servidores virtuales. Ahora pedirá confirmación del sistema Linux, ya que tiene que coincidir con la licencia. Lo siguiente que hay que tener cuidado es cuando nos pregunta qué necesitamos instalar, si "customapache" o "custombuild". Para una instalación básica y fácil de mantener seleccionaremos "custom build" ya que es la versión que ahora mismo tiene soporte y de la que iré haciendo los posts. Por último, nos preguntará si queremos una instalación con los valores por defecto: apache 2.2 y php 5, contestaremos que sí y listo, se pondrá a compilar los programas él solo.

Si todo ha salido bien, nos dará saldrá un mensaje con la dirección con la que podemos acceder al panel y la contraseña del usuario admin. No hay que preocuparse mucho por esa contraseña, ya que podremos cambiarla desde el terminal por la que más nos apetezca con "passwd admin", ¡pero hay que recordar tener siempre una contraseña medianamente fuerte para evitar los ataques!

Hasta aquí tenemos una instalación normal, ahora le toca el turno a los pasos extra para el CentOS 5 de 64 bits. Hay ejecutar estos cuatro comandos:
#ln -sf /usr/lib64/libexpat.so /usr/lib/libexpat.so
#ln -sf /usr/lib64/libm.so /usr/lib/libm.so
#ln -sf /usr/lib64/libssl.so /usr/lib/libssl.so
#/usr/local/directadmin/custombuild/build all d
Volverá a recompilar todo y al finalizar ya podremos acceder desde un navegador a http://ipdelservidor:2222 y loguearnos con admin.

Uno de los detalles que hace interesante al DirectAdmin es que elimina la necesidad de utilizar al usuario root para la mayor parte de la administración, por lo que uno se puede olvidar del terminal... mentira. Cierto es que no haya que usarlo para la gestión del día a día, pero nunca nos tendremos que olvidar del usuario root, ya que será necesario para muchas acciones que necesitemos, sobre todo a la hora de instalar nuevas funcionalidades y evidentemente para mantener la seguridad del servidor, pero eso ¡será en otro post!

El siguiente que tengo planeado es referente al uso del panel en sí, empezaremos por el panel de administración, acto seguido trataremos el de usuario y para acabar con el de reseller, ya que es el que menos he usado. Tras esos posts, indagaremos un poco más en todas las opciones que trae "ocultas" el DirectAdmin y que son destinadas al administador del servidor, para añadir o modificar las características.

PD: El otro día me pasó, que tras pegarme y reinstalar varias veces el DirectAdmin porque no me dejaba acceder a la interfaz web, resulta que estaban activadas unas reglas en el iptables, por lo que es conveniente revisar que no esté activado ni el SELinux ni el firewall de CentOS a la hora de usar el DirectAdmin, o configurarlos para que no bloquee las conexiones.

sábado, 30 de julio de 2011

Securizando servidores (IV)

Volvemos a darle al blog tras un pequeño tiempo de inactividad y con un sueño que no es normal en un sabado por la mañana. Pero a lo que vamos.
Como hemos ido viendo, uno de los mayores quebraderos de cabeza a la hora de administrar un servidor es mantener un mínimo de seguridad en él, para evitar muchos intentos de intrusión. Está claro que con las medidas de seguridad que voy comentando no tendremos el servidor blindado al 100% contra todo ataque, pero sí que nos quitaremos de encima a bots y a la gente que busca entrar en servidores sin quebrarse la cabeza.
Hoy traigo un par de aplicaciones, mod_security y fail2ban. Mod_security es parecida a la que comenté en un post anterior, mod_evasive, y tiene un funcionamiento parecido. Es un añadido para el servidor apache que hará de firewall. Hay varias formas de instalarlo, compilandolo o mediante un paquete preconfigurado para la distribución que se use. Los paquetes son mantenidos por la comunidad, por lo que no siempre tiene que estar la última versión disponible o puede que no esté para tu distro. Puedes descargarlo y ver más información desde su página web: modsecurity.org
Fail2ban es otra especie de firewall. Analiza los logs buscando intentos de conexión fallidas para bloquear la IP. Analiza los logs de varios programas: ssh, diversos ftps, apache, etc. Se puede configurar el numero de intentos, el tiempo que la IP va a estar baneada, si quieres que una IP no se banee haga lo que haga, entre otras opciones. Con esta aplicación nos quitamos a los molestos bots que intentan sacar una contraseña por fuerza bruta o por diccionario, ya que al fallar se bloquea la IP atacante. Hace casi 2 años que no se actualiza, pero sigue siendo igual de efectiva. Para instalarlo, tenemos los métodos de siempre, compilarlo o descargar un paquete para nuestra distro favorita. Más info en su web: fail2ban.org
Siento no poner un paso a paso, y una pequeña explicación de la configuración, pero estoy muy perro para hacerlo, ya que no los tengo instalados y puf, solo de pensarlo me canso :P ¡Hasta la próxima, a saber cuando y con qué vuelvo!

martes, 12 de julio de 2011

Securizando servidores (III)

Seguimos con esta tanda de post dedicados a mantener una seguridad básica en nuestro servidor Linux. El lío del kernel del post anterior fue al final de fácil solución: pasando de actualizarlo. Así de sencillo, y luego nos extrañamos de que entre gente no deseada en nuestro servidor, pero cada uno a lo suyo.

Hoy una nota rápida para actualizar el kernel y en la próxima entrega ya pasaremos a ver programas más interesantes. Si nos toca actualizar el kernel a mano, lo que tendremos que tener instalado es el gcc.
Paso 1: Bajar el kernel de www.kernel.org.
Paso 2: Movemos lo descargado a /usr/src
mv linux-* /usr/src
Paso 3: Descomprimir el archivo
tar xivf linux-*
Paso 4: Entramos en la carpeta descomprimida
cd linux-*
Paso 5: Creamos el archivo de configuración para la posterior compilación
make config
Para una configuración por defecto pulsar enter hasta que acabe. (Habrá un método mejor, pero aún no lo conozco :P)

Paso 6: Compilamos el kernel
make
Paso 7: Compilamos los módulos
make modules_install
Paso 8: Instalamos el nuevo kernel
make install
Paso 9: Editamos el grub, en mi caso se añadio sóla la línea, simplemente faltaba por cambiar el orden de ejecución.
        title Fedora (2.6.39.3)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.39.3 ro root= #mas cosas
        initrd /boot/initramfs-2.6.39.3.img
Conviene copiar las líneas del antiguo kernel y modificarlas a la versión correcta.

En teoría ya debería de funcionar todo correctamente al ser una instalación básica, pero si hay tiempo y ganas, a la hora de crear el config se pueden modificar muchísimas cosas que harán que nuestro servidor sea más estable, aunque puede traer muchos quebraderos de cabeza con los maravillosos kernel panic.

viernes, 8 de julio de 2011

Mac OS X Lion, ¿Tan novedosas son sus novedades?

Vamos a meternos hoy un poco con los de Apple, con el permiso del Sr. Jobs, y es que he estado pensando, cosa rara. Me ha venido a la cabeza que el nuevo sistema operativo de Apple se va a actualizar por internet, y ¡menuda novedad!

O no, ya que el actualizar el sistema operativo sin necesidad de disco ya lo tenia desde hace tiempo Linux, con Ubuntu he pasado de la version 7.04  a 7.10 y sucesivas por medio de Wifi incluso, y con Fedora, Debian... ¿Y con Windows? Pues si se consideran los Service Pack...

Bueno, a lo que iba, que voy a meterme con Apple y no con Windows por una vez, aunque se lo merezca :P. Lo dicho, ahora Apple quiere revolucionar a todo el mundo ofreciendo la instalación por red de un sistema operativo (si no es por soporte físico, es por red) y la gente se maravilla sólo con pensarlo (uohhh, uaahhhh), pero, ¿Porqué Apple puede hacerlo y el resto no? Si nos fijamos en los productos de Apple, siempre han sido pocos modelos en comparación con el resto de la competencia. HP te saca un montón de modelos de PCs al año, Toshiba otros tantos, etc...

Toda esta amalgama* de ordenadores vienen con Windows, o si están perdidos con Linux, pero como los de Apple son más cerrados que nada, sus pocos productos vienen con su sistema operativo, con las ventajas que eso supone. Veamos los casos de actualizaciones de los 3 sistemas operativos:

Windows: Ya viene instalado en el PC y como la mayoría de la gente ni sabe ni quiere saber, les da igual estar desactualizados, caso a parte el que saquen nuevos sistemas operativos cada puf o más. El que quiere actualizarlo porque tiene el XP y el 7 mola mogollón, generalmente no pasa por caja. Y claro, ahí eso de instalar un 7 sin cd/dvd dificl... Y el resto, espera a comprase otro PC para actualizar el Windows. Caso cerrado.

Linux: Hay varios casos aquí también, y al menos para la primera instalación si hace falta tener un soporte físico para instalarlo. O bien es gente que tiene un PC con windows e instalan Linux aparte (o se cepillan el Windows a la primera de cambio como un servidor) o son gente más sensata y se compran el ordenador por piezas (de estos hay también en Windows, pero la mayoría tampoco parasá por caja...) y hay que instalar Linux de alguna forma. Se que hay varias maneras de instalación, pero las que yo conozco sí requieren al menos un pequeño usb para cargar el instalador, aunque el resto se baje de internet. Si ya tienes un Linux instalado, los siguientes sí te los puedes descargar e instalar.

Mac: ¿Y qué les hace a ellos tan especiales? Sencillo, que están más obligados a pasar por caja que los que usan Windows, y muy poca gente le quita el OS a un Mac (dadme tiempo) para meter otra cosa, por lo que teniendo un numero reducido de modelos es viable lanzar una actualización que se descargue en tu sistema operativo antiguo... ¿Sistema operativo antiguo? Anda, ahí está la trampa. La mayoría de usuarios de Mac actualizan el sistema pasando por caja, y con las mejoras que ofrece cada actualización, más razón aún. Por lo que para Mac si es viable tener la posibilidad de actualizarlo mediante sólo red. Se ahorran una pasta en distribución y en materiales y limpio para la saca. Pero como pasa en Linux, necesitamos tener una versión anterior para poder descargarlo, asi que, novedad lo que se dice novedad, no es.

Bueno, tras escribir unas cuantas chorradas insulsas, me despido antes de que alguien me apedree. ¡¡Hasta la próxima, que a saber cuando será!!

* Ni idea de lo que significa, pero queda chulo.

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 ¬¬

viernes, 20 de mayo de 2011

Criticas tesnológicas para todos: Hoy, HP Mini 110

Seguimos con esta sección, que supongo que se mantendrá en stand by hasta que consiga otro cacharro con el que trastear :P, vamos allá.

Ya he podido usar durante un tiempo prudencial mi netbook, un HP Mini 110 - 3600 3615, por lo que ya puedo sacar conclusiones de él. Empecemos por las características del hardware:
  • Procesador: Intel Atom N550, dual core a 1,50 Ghz.
  • Ram: 1Gb
  • Hdd: 250Gb
  • Gráfica: Intel Graphics Media Accelerator 3150 (Hasta 256 (sease, compartida >.<))
  • Red: Ethernet 100Mbps y Wifi b/g/n
Como se puede apreciar por las características no es ningún pepino de ordenador, cosa que influye también en el precio, que no está nada mal.

Trae por defecto instalado Windows 7 Starter, cosa que no me gusta, no por ser Starter, que también, si no por ser Windows. Pero admitiendo Windows 7 como animal de compañía, la experiencia de usar la versión Starter no es buena publicidad para Microsoft.

En Windows 7 Starter tiene muchas carencias, si bien se compensa supuestamente en el precio del producto, que es más bajo. Es lo menos configurable que he visto nunca, por no poder cambiar, no puedes cambiar ni el fondo de pantalla.
La administración de usuarios es básica, si bien aceptable para un usuario normal, pero si se quiere tener algo de control sobre los usuarios, hay que pegarse con él. Un punto a favor, que pese a que no le gusta a la gente, es el hecho de que al ejecutar algo pida confirmación, lo que no se es que tal funcionará eso con los virus, pero al menos si se te descarga algo por debajo y al ejecutarse te salta la ventanita de confirmación puedes cancelarlo (una medida de seguridad que ya estaba presente en otros SO, guiño guiño).

En cuanto a comparticiones en red, han creado los “Grupos en el hogar”, para facilitar supuestamente el compartir archivos dentro de la red. Pues resulta que en la versión Starter está capado, te deja unirte a un grupo, pero no te deja crearlo. Por lo menos la compartición de archivos en el grupo de trabajo si funciona, aunque parezca raro. Otro detalle importante es que, al menos a mi, no he tenido problemas en poder configurar los permisos de acceso a los ficheros, tanto a los referentes a red como a los de disco (seguridad NTFS). De los dominios mejor nos olvidamos con ésta version...

Bueno, que parece ésto una critica a Windows 7 en vez de al portatil. Volviendo al portatil, con el Windows 7 te trae instalado una suite de aplicaciones varias, made in HP. La que más me llama la atención es una que se llama “Recovery Manager”, que permite reinstalar todo si se llega a corromper. La parte que me interesa a mi, es la de crear un dvd/usb para poder dejar el equipo a cero, es decir, como salido de fábrica. Esta herramienta, que a priori parece un chollo, tiene varios aspectos negativos, tanto para usuarios normales como para avanzados, y es que sólo te deja hacer la copia una vez. Es decir, si perdemos el dvd o el usb que hayamos creado, vamos mal, ya que aunque el ordenador esté en perfecto estado, no podremos volver a crearlo. Otra cosa que implica y que tampoco me gusta, es que no ofrecen otra alternativa como en mi HP antiguo, que traia un puñado de dvds y entre ellos uno de instalación de Windows, que es el importante ya que no viene la clave de instalación de Windows por ninguna parte. Y direis, “Iván, eso no es mucho problema, hay aplicaciones con las que lo puedes sacar.” Vale, las hay, pero ya hay que estar buscandolas y no me parece bien, ya que deberían ofrecerlo ellos. Seguramente sea por alguna cosa de la licencia del Windows, la cual no me voy a leer, pero me molesta. En cuanto tenga la posibilidad hablaré con mi amigo Clonezilla a ver si resuelvo este punto.

En cuanto al apartado multimedia, que es importante en esta clase de equipos, la reproduccion de videos deja que desear. No se si es cosa del VLC, de los codec o que el ordenado no lo lleva bien, pero se me quedan colgados los videos y me extraña la verdad, ya que aunque no sea un ordenador potente, debería poder reproducir videos de una calidad normal sin quedarse pillado. Yo creo que esto es más debido al Windows 7 que al propio equipo, ya que “sólo” tiene 1Gb de RAM y la mayoría se la come éste. Con el OpenOffice abierto y el Chrome, se jala 600Mb de RAM, lo que hace también que tener varias aplicaciones abiertas a la vez sea un poco un suplicio. Espero que cuando quite el Windows mejore un poco, aunque tenga que poner algun escritorio ligero de Linux. Un minipunto para el software que trae de serie instalado es que trae una versión “Lite” del MS Office 2010 y gratuita. Trae el Word y el Excel, pero con la penalización de que meten anuncios.

La verdad es que llevo 15 dias con el netbook y ya estoy más que acostumbrado a él, y no esperaba hacerlo la verdad. Me viene de perlas cuando llego pronto al trabajo y tengo que esperar en el coche, ya que puedo ver algun capitulo o escribir en el blog (bueno, en el Writer para luego hacer copy paste en el blog :P) ya que aunque he probado a salir por internet a través del móvil, la conexión deja mucho que desear, aunque es normal y no me quejo por ello, para alguna emergencia vale.

No se si en vez de un netbook me hubiese comprado un tablet estaría tan contento con la compra. Creo que a los tablets aún le queda mucho por recorrer y es una pena que se esté comiendo el mercado de los netbooks, que pese a no ser tan portables como los tablet (según dicen, que yo no voy a ir por la calle usando el tablet) ofrecen las posibilidades de los Pcs de toda la vida mientras que los tablets por ahora ofrecen unos pajaros cabreados y poco más que pudiera comprobar.

Bueno, hasta la próxima entrada, ¿Dentro de un par de años? xDDD