Tal y como prometí, hoy hablaré del sistema operativo elegido, y de su configuración. De entre todos los sistemas operativos (por ejemplo, Unix, Linux, Windows, Solaris, BSD,...etc) elegiré un candidato de entre los dos más extendidos, primero por que el sistema no necesita grandes requerimientos, y segundo porque no todos los sistemas son fáciles de localizar de forma "normal". Está claro que usar Windows para una aplicación donde no se requiere una interactividad con el usuario, y donde precisamente lo que mas se necesitará es eficiencia en la E/S, no es lo más inteligente. Por otro lado tenemos al ya de antemano ganador: Linux.
Muchas veces he oido eso de: "¿qué Linux has instalado?". A ver, hay diferentes distribuciones, pero en realidad todos son sistemas operativos Linux. Y todos son prácticamente iguales. Sólo varían, básicamente y a grosso modo, en la ubicación de los archivos de configuración, y en el software que use para sincronizar e instalar los paquetes de software. Entrando un poco más en profundidad, ya si se pueden apreciar algunas diferencias, que son interesantes de tener en cuenta para sistemas mas críticos:
- Algunas distribuciones (por ejemplo Gentoo) permite una personalización al milímetro, compilando cada paquete de software que instales según unos criterios que fijas en el momento de la instalación.
- Según que distribución se elija, la "instalación básica" consumirá más o menos espacio (por ejemplo, Ubuntu es más tragón que Debian, y éste más que Gentoo). Por supuesto que, y siempre que sepamos lo que hacemos, podremos borrar cosas que no usemos.
- La cantidad de paquetes disponibles en cada distribución varia de una a otra. Aunque de todas formas cualquier distribución hoy día tiene las aplicaciones típica de un servidor (apache, webpy, bind, dhcp-server, etc). Y en cualquier caso, siempre te puedes compilar tu propio software a partir de las fuentes.
Teniendo en cuenta las exigencias y los requisitos de mi padre, cualquier distribución habría funcionado perfectamente. En nuestro caso, elijo un Ubuntu server LTS. De esta forma, conseguimos una instalación muy fácil, que no nos exige mucha configuración inicial, y una buena colección de paquetes, ya que no se qué cosas nuevas se le pueden 'antojar' a mi padre.
Sobre como instalar un sistema Linux basado en Ubuntu y con un sistema RAID software, os remito al post Instalación de Ubuntu Server + RAID de este mismo blog.
Configuración del servidor SSH.
Lo primero es instalar el servidor ssh, para ello se ejecutan las siguientes ordenes (todas como usuario root, o en su defecto, usando sudo para coger los permisos de root temporalmente):
apt-get update
apt-get install openssh-server
Tal y como se instala, con la configuración por defecto, ya nos podremos conectar con cualquier cliente ssh, simplemente indicando nuestro usuario y nuestra clave, de la siguiente manera:
usuario@mi_ip
Aun cuando la configuración por defecto es suficiente para la mayoría de los usuarios, hay algunas opciones interesantes, de cara a la seguridad, que vendría bien reseñar (aunque no las tomaré en consideración en el proyecto de mi padre):
Editando el archivo /etc/ssh/sshd_config
- PermitRootLogin. Esa opción fija la forma en la que permitiremos conectar a nuestro usuario root por ssh. Mi consejo es, siempre dejarlo como "no" (PermitRootLogin no). De esta forma solo podrá conectarse el usuario root en local, sin posibilidad de hacerlo remotamente. Imaginaos las consecuencias de tener un ssh escuchando en la IP publica, y permitiendo un 'logeo' del usuario root...o incluso que se produzca un acceso a otra maquina de la misma subred....etc. No es la mejor política de seguridad. Lo mejor es que solo los usuarios "normales" puedan conectarse por ssh. Si es necesario trabajar como usuario root, hacemos un cambio de usuario con el comando 'su', e introducimos la clave del usuario root (así, obligamos a que el intruso tenga que 'logearse', primero con el usuario 'normal' y luego como root). Ni que decir tiene que se desactivarían las funciones sudo. Otra opción es permitir que el usuario root acceda, usando una clave pública. En este caso lo único que conseguimos es facilitar la vida del que administra muchos equipos, ya que usaría la misma clave para acceder a cada uno de ellos.
- El puerto. Si dejamos el servidor ssh en el puerto por defecto, se lo pondremos en bandeja a cualquiera que quiera intentar acceder de forma ilícita. Al menos, hagamos que tenga que 'escanear' todos los puertos, para que a priori no sepa por donde atacar. Cambiar el puerto que trae por defecto hacia uno 'alto' es siempre una buena política de seguridad.
- MaxAuthTries. Con esta opción indicamos cuántos intentos fallidos de acceso permitimos. Una buena política es emplear 2 ó 3, pero no más.
- MaxStartUps. Con este parámetro indicamos cuántas conexiones no autenticadas permitimos de forma simultánea. Es decir, si por ejemplo "juan" esta accediendo, pero aun no ha terminado de escribir su contraseña, y simultáneamente lo esta intentando "pedro", deberemos seleccionar un valor mínimo de 2. De esta forma permitiremos dos conexiones no autenticadas (pero que están en proceso de ser autenticadas). Si dejamos un valor muy alto, estamos poniendo en bandeja de plata que los intrusos paralelicen el intento de ataque, probando múltiples claves simultáneamente. Un valor de 2 ó 3 es una buena política de seguridad.
Configuración del servidor SAMBA.
Comenzamos con la instalación del mismo (deberas ser el usuario root, o en su defecto ejecutar los siguientes comandos con los permisos de root, mediante sudo):
apt-get update
apt-get install samba
Editamos el archivo de configuracion de samba:
nano /etc/samba/smb.conf
Y añadimos las siguientes lineas al final:
[DATOS]
comment = Mis cositas varias
path = /home/datos
public = yes
writable = yes
browseable = yes
Si el directorio a compartir es otro, habría que cambiar /home/datos por el directorio deseado.
De esta forma conseguimos tener un recurso samba compartido, sin necesidad de utilizar un usuario y una contraseña para acceder, facilitando la conexión a todos aquellos usuarios que necesitan una solución doméstica, y no quieren pensar en usuarios y contraseñas. Ni que decir tiene que esta no es la opción recomendable en entornos empresariales.
Ahora, para acceder a nuestros datos, basta con que hagamos desde nuestro equipo windows domestico lo siguiente:
1) Abrir un explorador de archivos (por ejemplo "mi pc").
2) Escribir lo siguiente en la barra de direcciones: \\mi_ip\datos
De esta forma se listará todo su contenido como si fuera una carpeta cualquiera.
Dejo para otro post la configuración de samba en entornos empresariales.