Montando mini-servidor web casero con Linux Capítulo 1: Razones, elementos necesarios y preparación.
Desde hace mucho que vengo con la idea de montar un mini servidor web casero con la finalidad de adentrarme un poco más en los aspectos de seguridad, configuración y mantenimiento de un servidor bajo Linux. Aunque es de esperarse que se establezcan diferencias entre un servidor web, un servidor de una red u dominio y un servidor de respaldos; no puedo aprender todos los procesos con 1 solo pero para eso tengo varios computadores y poder hacer pruebas con cada uno.
Siempre me han llamado la atención los servidores web y nunca me había realmente mentalizado en crear uno para uso personal, siempre eran ideas esporádicas pero nunca como ahora que ya más o menos voy teniendo experiencia en el campo de linux.
Anteriormente quería comenzar con un servidor de dominio bajo Windows 2003 server y Active Directory pero naaaa, ya estoy algo harto de Wintendo y es hora de estar un rato con Linux.
Razones:
Comienzo por mencionar las razones para hacer un servidor web y de ficheros; la idea principal es que yo pueda hacer pruebas web desde otro pc que no sea el de uso cotidiano y que siempre esté disponible. A su vez, quisiera que cada vez que quiera acceder desde otro lugar a mis datos, instaladores, programas etc… pueda hacerlo. La parte de aprendizaje también es muy importante, conocer como se monta y administra de manera muy básica un servidor es una experiencia bastante divertida y sé que me ayudará a entender muchas cosas.
Elementos necesarios:
Básicamente lo que se necesita es un computador extra, mucha paciencia y dedicación. Yo actualmente dispongo de:
Consideraciones:
Antes de hacer todo el proceso debemos pensar un poco como vamos a hacer las cosas; tener una idea de como será el proyecto, los programas a instalar, las configuraciones de seguridad y todo ese tipo de cosas. Yo no he empezado todo esto sin antes haber leido y experimentado un poco sobre cada cosa; principalmente porque no quiero llegar perdido a hacer un servidor. Lo que yo quiero hacer es lo siguiente:
- Montar un servidor con las siguientes opciones y programas:
Preparación:
Lo primero de todo es elegir una distribución; para mi caso particular elegí Debian Etch 4. ¿Por qué Debian?, porque siempre ha sido mi distribución favorita, es muy buena distribución para servidores por su estabilidad y seguridad; los desarrolladores de Debian son bastante dedicados cuando se trata de seguridad y estabilidad. Probablemente no sea la mejor distribución para servidores, pero es una de las mejores.
Antes de comenzar a montar o instalar todo debemos tomar en cuenta cada punto y tratar en la medida de lo posible hacerlo lo más parecido a un servidor web profesional; probablemente las cosas que yo mencione sean muy básicas e incluyan muchas otras opciones que en un servidor web profesional no incluyan, pero la idea principal es poseer un servidor web muy funcional.
Comenzaremos por lo más básico, como en todo sistema son las particiones :). Debemos tomar en consideración cómo dividiremos las particiones y qué sistema de archivos usaremos en cada una así como las opciones de montaje, todo esto en pro del rendimiento / seguridad del sistema. Recordemos algunas de las opciones de montaje y sus funciones:
Lista sacada de: Utilizando las opciones de mount como método de seguridad
Yo he decidido dividir todo de la siguiente forma:
/boot
A la partición de /boot le asigné 90Mb bajo un sistema de archivos EXT2 ya que no necesita Journaling. A su vez en el punto de montaje la coloqué como ro (Read Only - Solo lectura-). Ésto es bueno hacerlo únicamente luego de que ya hayamos configurado e instalado el kernel a nuestro gusto.
/home
Al /home le asigné unos 15Gb bajo el sistema de archivos ReiserFS gracias a su muy buena velocidad con ficheros de poco tamaño; en ésta partición montaré todos los datos personales y las webs. La partición la monté con nosuid,noexec,nodev.
/var
a /var le asigné 5Gb bajo un sistema de archivos JSF ya que es bastante bueno con el manejo de bases de datos. A parte la monté con las siguientes opciones nosuid,noexec,nodev.
/tmp
Le asigné 500Mb bajo sistema de archivos EXT3 y con las siguientes opciones de montaje nodev,nosuid,noexec,data=writeback (esta configuración podría acarrear problemas al compilar paquetes).
/dev/hdb1
Con su permiso me tomaré la molestia de montar a /dev/sdb bajo un sistema de ficheros cifrado y exclusivamente para uso personal, la idea es montarlo única y exclusivamente cuando requiera acceso a él desde otro computador y poder acceder a los datos de ahí. Para los curiosos, no, no meteré porno, solo quiero probar como funciona un sistema de ficheros cifrado :).
Siguiente paso:
Lo siguiente que hay que hacer es preparar el sistema para compilar instalando los paquetes:
apt-get install build-essential make kernel-package libncurses5-dev gcc g++ libglade2-dev
Ahora lo que haremos luego de tener los paquetes necesarios será compilar un kernel optimizado, yo elegí el 2.6.18. En un servidor no necesitas realmente tener un kernel actuaizado a la última versión (en este caso la 2.6.25), a menos que necesites un X soporte que solo te brinde dicha versión. Siempre y cuando el kernel tenga los parches adecuados y el soporte que necesitas estará bien.
Quité el soporte para tarjetas de vídeo y aceleradores gráficos porque no los necesito, no instalaré una interfáz; tampoco hay soporte para ALSA ni OSS, no IPv6, no soporte para hardware multimedia ni para mouse, tampoco para unidades SCSI ni SATA mucho menos SAS, no soporte para puerto paralelo y muchas otras cosas más que no usaré.
Agregué soporte para SeLinux, para Netfilter, configuré el kernel para trabajar con procesador Pentium III y agregué algunas cosas extra que necesito. Salió un kernel bastante pequeño ciertamente y con solo el soporte necesario.
Bueno, a penas llevo la primera parte del servidor, a medida que vaya sacando más capítulos iré explicando como voy haciendo las demás configuraciones, espero poder hacerlo bien ;).
Salu2
