Apéndice C: Prácticas recomendadas

En esta sección repasamos una serie de ‘buenas practicas’ que podemos valorar en función de nuestras propias necesidades para decidir, o no, su implantación.

1. Definir cuidadosamente el particionado

Debemos definir meticulosamente el particionado que tendrá el servidor, pensando en las previsibles necesidades de espacio en disco a medio-largo plazo. Es altamente recomendable usar LVM [1].

2. Diseñar bien el sistema de archivos

Debemos tener un buen diseño del sistema de archivos. Es muy importante definir las carpetas que contendrán los datos de usuario, mailboxes, recursos compartidos, etc. y (manteniendo la jerarquía estándar del sistema de ficheros Debian) decidir cuáles de ellas se montarán en particiones separadas.

Las tareas de migración entre servidores son facilitadas en muy alto grado si tomamos las decisiones adecuadas al configurar el disco.

3. Usar RAID

Deberíamos usar algún tipo de RAID para garantizar la seguridad de los datos en el disco.

4. Instalar únicamente los módulos necesarios

Deberíamos instalar únicamente los módulos que vayamos a utilizar. Un módulo añadido y no utilizado agrega complejidad, consume recursos y, en general, disminuye el nivel de seguridad del servidor.

5. Mantener un servidor de pruebas

Es muy recomendable mantener un servidor de pruebas con la misma configuración que el de producción. De esta forma podemos realizar sin riesgo las pruebas que consideremos necesarias. Ésto es especialmente útil cuando pretendemos implementar una nueva funcionalidad, actualizar el servidor o realizar cualquier cambio que pueda poner en peligro la estabilidad o el rendimiento del servidor.

6. Establecer una política de actualizaciones

Debemos definir una política de actualizaciones del servidor: cuándo se hará, cómo se hará y quién lo realizará.

7. Establecer una política de copias de seguridad

Debemos establecer una política de copias de seguridad (tanto de la configuración del Servidor Zentyal como de los datos que gestiona). Debemos recordar que es posible realizar estas operaciones desde Zentyal:

8. Tener un plan de recuperación de desastres

Es absolutamente necesario tener un plan de recuperación de desastres del servidor probado y documentado. No podemos permitir que un fallo crítico nos sorprenda y tengamos que improvisar con un sistema en producción.

9. Definir acceso de administrador

Determinamos qué usuarios tendrán acceso con privilegios administrativos al Servidor Zentyal, tanto a través de “webadmin” como de la línea de comandos a través de la consola o SSH.

Debemos recordar que cualquier usuario que incluyamos en el grupo “sudo” tendrá la capacidad de operar el servidor como administrador.

10. Definir política de contraseñas

Debemos definir una política de contraseñas, tanto de los usuarios locales como de los del dominio (en caso de usar este módulo).

11. Monitorizar el servidor

Deberíamos monitorizar el servidor cada día. Aunque es altamente recomendable tener el servidor monitorizado por un sistema completo (Zabbix, Nagios, etc.), Zentyal también proporciona una pequeña utilidad que nos permitirá tener un conocimiento básico del estado del sistema:

12. Revisar el estado del servidor

Comprobamos a menudo el estado de nuestro Servidor Zentyal. Para este fin nos será muy útil esta función de Zentyal:

13. Analizar los logs

Es importante que analicemos los logs de nuestro servidor para detectar posibles errores tan precozmente como sea posible.

14. Revisar rotación de los logs

Debemos analizar la rotación de los archivos de log y configurarlas conforme a las políticas de nuestra organización. Debemos recordar que (dependiendo de la actividad y del marco legal) podemos estar obligados a conservar los logs durante períodos más o menos dilatados de tiempo. Una mala configuración de “logrotate” podría hacernos perder datos importantes.

15. Limitar tráfico

Configuramos una política por defecto de “deny” para nuestro cortafuegos. No debemos permitir más tráfico que el estrictamente imprescindible. Esto reducirá las posibilidades de accesos y/o ataques no deseados.

Deberíamos utilizar periódicamente utilidades como Nmap [2] para comprobar la accesibilidad de nuestro servidor desde el exterior.

Podemos usar Hping3 [3] para probar la idoneidad de la configuración del cortafuegos. Este software nos permitirá probar nuestro cortafuegos produciendo paquetes TCP/IP con la configuración que deseamos.

16. Asegurar el servicio SSH

Cambiar el puerto por defecto, permitir únicamente el acceso mediante clave pública y deshabilitar el acceso del usuario ‘root’ son algunas prácticas imprescindibles si necesitamos tener acceso SSH a disposición de manera permanente.

17. Al usar el módulo de Controlador de Dominio

Si utilizamos el módulo de Controlador de Dominio, deberíamos tener en cuenta los siguientes puntos:

  • Diseñamos cuidadosamente la estructura de nuestro dominio: Usamos las Unidades Organizativas y los grupos de seguridad para replicar la estructura de nuestra organización. Ello redundará en una administración más sencilla.
  • Revisamos regularmente las altas y bajas de usuarios y deshabilitamos o eliminamos las cuentas pertinentes.
  • Definimos cuotas de disco para los usuarios.
  • Analizamos regularmente los permisos definidos en los recursos compartidos. Si deseamos controlar la actividad de los usuarios sobre los recursos compartidos, habilitamos la opción “full_audit” en Compartición de Ficheros -> Samba settings.
  • Nos informamos sobre las posibilidades que nos ofrecen las GPOs para controlar los equipos Windows unidos al dominio.
[1]LVM https://es.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
[2]Nmap https://nmap.org/
[3]Hping3 https://tools.kali.org/information-gathering/hping3