Este artículo fue enviado por abc a Tod-OS
Son muchos los que al actualizar su computadora, buscan una utilidad práctica a su viejo ordenador, o simplemente deciden que lo utilizarán para experimentos (léase probar sistemas operativos alternativos). Si bien algunos pueden seguir siendo utilizados como sistemas de escritorio decentes, esta opción puede quedar algo grande en los PCs más antiguos. En mi caso lo que hice fue crear mi propio servidor…
En este artículo (howto) describiré como utilizar una computadora de baja potencia para tener un servidor http, ftp y ssh funcionando sin problemas y con cierto nivel de seguridad. Aviso desde ya que toda la configuración se hará desde la línea de comandos y gran parte de ella desde un ordenador externo haciendo uso de un cliente ssh.
Prácticamente todo lo que comentaré está más detallado en el FAQ de la web oficial (el FAQ en español está algo anticuado, pero sigue siendo útil),incluyendo una guía detallada de la instalación, así que no dejéis de ir si con este artículos os quedáis cortos.
Ya que este artículo lo que hace es básicamente describir lo que yo hice para montar dicho servidor, comenzaré por el hardware que utilicé:
AMD k5 100 MHz
24 MB de RAM
2 discos duros, uno de 2 GB y otro de 400 MB
Tarjeta de red 10 mbps
Disquetera 3 1/2
Ya que tengo cierta experiencia con el, elegí para el servidor OpenBSD, que va muy bien en sistemas de poca potencia y ofrece un buen nivel de estabilidad y seguridad. Como no tengo lector de CDs en tal ordenador utilizaré un disquete para realizar una instalación desde internet. Lo primero es descargarse una imagen del disco de arranque:
ftp://ftp.rediris.es/mirror/OpenBSD/3.7/...loppy37.fs
Para poder utilizarla se puede usar el rawrite para Windows o el dd en sistemas UNIX. Una vez ha sido creado el disquete bastará con iniciar el ordenador con el dentro y esperar un ratito a que nos pregunte si queremos iniciar la instalación del sistema (en ingles claro). Le damos que sí y a continuación hay que decirle que queremos cambiar el idioma por defecto del teclado por el español. A continuación hay que elegir los discos y las particiones que utilizará el sistema. Para dividir el disco primero hay tener tener una idea de cuales serán las prioridades teniendo en cuenta que el contenido del servidor web estará en /var y el del servidor ftp estará en /home/ftp.
Los siguientes pasos serán la configuración de la red, la clave del superusuario y la elección de los paquetes básicos que se instalarán, donde los paquetes relacionados con el sistema gráfico pueden ser quitados. Por último la activación del servidor ssh y la zona horaria son los pasos con los que se termina la instalación.
Lo primero tras reiniciar es crear un usuario con el que trabajaremos cuando no sea necesario tener privilegios root, para ello se usa el comando “adduser” teniendo en cuanta que si queremos permitirle usar “su” para cambiar a usuario root, tendremos que invitarle al grupo “wheel\".
En este punto he decidido seguir realizando la instalación desde otra computadora usando ssh, donde será más cómodo gestionar el servidor. En UNIX podéis usar el cliente de ssh en la linea de comandos sin problemas, mientras que en Windows recomiendo usar putty.

Un programa que siempre es práctico y utilizaremos más adelante es el wget, un gestor de descargas para http y ftp bien conocido en el mundo UNIX. Para instalarlo usé:
pkg_add ftp://ftp.usa.openbsd.org/pub/OpenBSD/3....-1.8.2.tgz
Una de las primeras cosas que se deben hacer para tener un servidor seguro es antes de servir nada buscar las últimas actualizaciones de seguridad del sistema. OpenBSD ofrece actualizaciones en forma de corrección del código fuente del sistema, así que primero hay que tener disponible el árbol de fuentes:
wget ftp://ftp.usa.openbsd.org/pub/OpenBSD/3.7/src.tar.gz
wget ftp://ftp.usa.openbsd.org/pub/OpenBSD/3.7/sys.tar.gz
mv sys.tar.gz /usr/src/
mv src.tar.gz /usr/src/
cd /usr/src
tar xzf sys.tar.gz
tar xzf src.tar.gz
Ahora es momento de aplicar los parches. Para ello buscamos los archivos en la web oficial y los aplicamos a las fuentes. Si vemos el parche en un editor de texto vemos que trae las instrucciones para instalarlo. Para el primer parche de OpenBSD 3.7:
cd /usr/src
patch -p0 < 001_cvs.patch
cd gnu/usr.bin/cvs
make -f Makefile.bsd-wrapper obj
make -f Makefile.bsd-wrapper
make -f Makefile.bsd-wrapper install
Tanto el servidor ssh, como el http y ftp vienen incorporados en las instalación por defecto en OpenBSD, sin embargo mientras ssh se activa y configura durante la instalación, http y ftp requieren un poco más de gestión. Comenzaré comentando la puesta en marcha del http.
A pesar de que el servidor básico viene con la instalación, para tener un sistema algo más moderno instalé algunos complementos para Apache:
pkg_add ftp://ftp.usa.openbsd.org/pub/OpenBSD/3....4.3.11.tgz
pkg_add ftp://ftp.usa.openbsd.org/pub/OpenBSD/3....no_x11.tgz
Estos dos comandos instalan php y graphics libraries, para terminar de configurarlos hay que seguir las instrucciones que aparecen en pantalla justo después de instalar cada paquete, para el caso de php por ejemplo:
/usr/local/sbin/phpxs -s
cp /usr/local/share/examples/php4/php.ini-recommended /var/www/conf/php.ini
To enable parsing of PHP scripts, add the following to
/var/www/conf/httpd.conf:
AddType application/x-httpd-php .php

Igualmente se hará para instalar otros paquetes clásicos para la web:
pkg_add ftp://ftp.usa.openbsd.org/pub/OpenBSD/3....4.3.11.tgz
pkg_add ftp://ftp.usa.openbsd.org/pub/OpenBSD/3....0.23p1.tgz
Ya tengo el servidor web instalado y configurado (aun no está funcionando), ya solo falta el ftp.
La configuración para el servidor ftp que describiré se corresponde con un servidor mixto que permite conexiones anónimas y conexiones a algunos usuarios.
Para el anónimo hay que crear una cuenta donde estén los contenidos del servidor, pero ya que al crear la cuenta nos pedirá un interprete de línea de comandos y por seguridad no queremos que nadie pueda acceder a la cuenta si no es por ftp, usaremos un interprete de comandos inexistente, para ello:
echo /usr/bin/false >> /etc/shells
Siguiendo las instrucciones de la web oficial de OpenBSD, creé un usuario llamado ftp para tal efecto:
Enter username []: ftp
Enter full name []: anonymous ftp
Enter shell csh false ksh nologin sh tcsh zsh [sh]: false
Uid [1002]: Enter
Login group ftp [ftp]: Enter
Login group is “ftp\'’. Invite ftp into other groups: guest no
[no]: no
Login class auth-defaults auth-ftp-defaults daemon default staff
[default]: Enter
Enter password []: Enter
Set the password so that user cannot logon? (y/n) [n]: y
Name: ftp
Password: ****
Fullname: anonymous ftp
Uid: 1002
Gid: 1002 (ftp)
Groups: ftp
Login Class: default
HOME: /home/ftp
Shell: /usr/bin/false
OK? (y/n) [y]: y
Added user “ftp\'’
Copy files from /etc/skel to /home/ftp
Add another user? (y/n) [y]: n
Goodbye!
Todo lo que hay dentro de /home/ftp (servidor anónimo) debe ser del root y tener permisos 555, para ello, dentro del directorio:
chown root *
chmod 555 *
Ha llegado el momento de modificar /etc/rc.conf para indicar los servidos que queremos que se inicien en el arranque. Para el servidor http y para el ftp respectivamente:
httpd_flags=\"”
ftpd_flags=\"-DllUSA”
En mi caso no uso sendmail, asi que aprovecho para quitarlo del arranque. Decir que ahora mismo el servidor ftp solo acepta conexiones ftp anónimas, para que algunos usuarios tengan acceso ftp se añadirán los nombres de usuario al archivo “/etc/ftpchroot\".
Si todo ha ido bien, tras reiniciar el equipo tendremos funcionando los servidores ssh, ftp y http. Debo decir que tal cual queda ahora funcionando el sistema he tenido algunos meses mi servidor sin ningún problema, sin embargo, para añadir algo más de seguridad, utilizaremos PF (incorporado por defecto) para crear un cortafuegos muy básico pero efectivo:
La configuración de PF está en el archivo /etc/pf.conf (necesitas ser root incluso para editarlo), en el he escrito las reglas:
#Mi configuracion
ext_if=\"ne3″
scrub in
#Estas reglas las pongo yo
block log all
pass quick on lo0 all
# Aceptando SSH
pass in log quick on $ext_if proto tcp from any to any
port = 22 keep state
# Aceptando HTTP
pass in log quick on $ext_if proto tcp from any to any
port = 80 keep state
# Aceptando FTP pasivo
pass in on $ext_if proto tcp from any to any port 21 keep state
pass in on $ext_if proto tcp from any to any port > 49151
keep state
#Fin
Con estas reglas todo paquete que no esté relacionado con alguno de los tres servicios será bloqueado. Debo decir que una vez sea activado PF, ni wget ni pkg_add funcionarán.
Por supuesto que PF es mucho más potente y versátil que lo que muestra mi pf.conf, de hecho Pf es un sistema router-firewall, sin embargo para la auto protección de servidor bastará con esto. Si queréis profundizar en el FAQ de la web oficial hay mucha documentación.

Finalmente para que PF se ejecute durante el arranque hay que añadir a rc.conf:
pf=YES

Decir que el artículo podría seguir un poco más con algunas mejoras como modificar el núcleo o utilizar programas compilados optimizados, pero además de que suponen un gran trabajo para una pequeña mejora, se saldría de los objetivos.
Como veis con un ordenador de baja potencia como el mío se puede construir un buen servidor con una seguridad decente sin problemas (algo tedioso eso si), de forma que vuestros viejos PCs tengan una segunda vida.