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 directamente desde la GUI de 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 la GUI como de la línea de comandos a través de la consola (incluyendo 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 [2], 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 el Informe del Estado del Sistema 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 [3] para comprobar la accesibilidad de nuestro servidor desde el exterior.
Podemos también usar hping3 [4] 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. Estas 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] | Monitorización de Zentyal: https://wiki.zentyal.org/wiki/Zentyal_server_monitoring_with_Zabbix |
[3] | Nmap: https://nmap.org/ |
[4] | Hping3: https://tools.kali.org/information-gathering/hping3 |