Consejos de seguridad para el nuevo Sysadmin

Cuando nos adentramos al mundo de la tecnología llegará un punto donde tendremos que administrar, manejar e incluso desplegar páginas web u otros servicios en un servidor que utilice el sistema operativo Gnu/Linux.

Mantén tus canales de comunicación seguros

Todos, absolutamente TODOS los datos que se transmiten en la red pueden ser interceptados o monitoreados. Como primer consejo que podemos darte, intenta siempre cifrar los datos en la medida de lo posible utilizando contraseñas, pares de llaves o certificados:

  1. Para transferir archivos usa scp, sftp o rsync para transferir archivos de tu computadora al servidor.
  2. Intenta crear una clave GPG (GnuPG) o un certificado de OpenSSL para cifrar y firmar tus datos o comunicaciones. Puedes encontrar un tutorial de como usar GPG para git, correo y cifrar archivos.
  3. Puedes proteger tu tráfico de datos por OpenVPN, esto nos permitirá conectarnos de manera segura, incluso en redes públicas. Además, si se configura de forma correcta, puede ser un recurso útil para proteger la infraestructura de los servidores o para acceder a contenido exclusivo de otros países. Puedes encontrar un instalador de OpenVPN aquí.

Evita usar servicios antiguos como ftp, telnet o rlogin en tu servidor, como estos protocolos son algo viejos y configurarlos para que su funcionamiento sea 100% seguro puede ser una tarea ardua es mejor sustituirlos por sus variantes más seguras como OpenSSH o SFTP. Utiliza los siguientes comandos como superusuario para eliminar los servicios no deseados de su servidor:

Para CentOS, Scientific Linux, Fedora y Red Hat Enterprise Linux
# dnf remove xinetd ypserv tftp-server telnet-server rsh-server 
Para Debian, Ubuntu, Linux Mint, Pop! OS, etc…
$ sudo apt remove --autoremove --purge xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

Protege tu servidor físico de cambios “inesperados”

La nube está en su época de oro estos tiempos, sin embargo existen personas que aún utilizan servidores físicos o que desean comenzar su propio negocio de renta de servidores.

Si caes en alguno de estos dos grupos te recomendamos que configures la BIOS de tu máquina para deshabilitar el arranque desde CD’s, DVD’s, USB, etc. Como paso extra te sugerimos colocarle una contraseña a tu BIOS y a tu gestor de arranque.

Desactiva la cuenta de root

A menos de que seas un sysadmin muy bueno en su trabajo, te recomendamos que, por motivos de seguridad deshabilites la cuenta de root. POR NINGUN MOTIVO ELIMINES LA CUENTA DE ROOT.

Para cualquier sistema (asegúrate de ejecutar esto con un usuario que tenga permisos de sudo)
$ sudo passwd -l root

Mantén las cosas al mínimo

Si vas a manejar un servidor, procura siempre hacer una instalación mínima, esto por que es mas fácil mantener un servidor añadiendo lo que se necesita en lugar de eliminar lo que sobra en el mismo. Además, otra ventaja de las instalaciones mínimas es que (usualmente) el uso de recursos del servidor es menor, se utiliza menos epsacio en el disco y menos ancho de banda (dependiendo de otros factores.

NO instales interfaces gráficas

Si vas a utilizar una instalación de Gnu/Linux como un servidor evita instalar una interfaz gráfica. Algunas personas podrían argumentar en contra de este punto, aludiendo a cosas como la “facilidad de uso” o la “amabilidad con el usuario“. Ambos puntos totalmente errados desde el punto de vista de administración de servidores. Instalar una interfaz gráfica implica instalar decenas (o, a veces cientos) de paquetes adicionales y algunos pueden contener fallas de seguridad silenciosas. Además, una interfaz gráfica en un servidor va a generar un gasto extra de recursos dependiendo del entorno que se esté ejecutando.

Mejora la configuración de PHP

Puede que no sea un lenguaje tan popular como antes, pero PHP sigue estando muy presente en el internet actual y, si eres un sysadmin lo más probable es que, en algún punto necesites desplegar uno o varios servicios creados en este lenguaje. Para mejorar la configuración es necesario editar el archivo php.ini, si deseamos saber donde está dicho archivo es necesario ejecutar la siguiente orden como superusuario:

# locate php.ini
Habilitar el modo seguro

El modo seguro en nuestra configuración de PHP deberá estar habilitado. Este modo revisa archivos y restringe ejecutables que podrían ejecutarse por scripts de PHP. Además ayuda a limitar la exposición que tienen los scripts de PHP a la consola. Para habilitiarlo las siguientes líneas deberán de quedar de la siguiente manera:

safe_mode = On
safe_mode_gid = On
sql.safe_mode = On
Deshabilitar las variables globales

Las variables globales no son una buena idea, son inseguras y fáciles de romper en PHP si es que no sabemos lo que estamos haciendo, por lo tanto deberán de estar desactivadas.

register_globals = Off
Esconder la información de PHP

Algunos ataques informáticos pueden ocurrir por la exposición de información, como versiones que estemos usando o códigos de error, PHP nos permite restringir esta información sensible.

expose_php = Off
track_errors = Off
html_errors = Off
display_errors = Off
Apagar funcionalidades de PHP

Existen funcionalidades de PHP que pueden ser inseguras. Si poseen vulnerabilidades pueden ser utilizadas para dañar tu servidor. Del mismo modo deshabilitarlas de forma arbitraria puede ocasionar funcionamiento no deseado.

disable_functions = system,exec,shell_exec,php_uname,getmyuid,getmypid,leak,listen,diskfreespace,link,ignore_user_abord,dl,set_time_limit,highlight_file,source,show_source,passthru,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,phpinfo
Apaga las magic_quotes

Esta opción deberá estar siempre apagada.

magic_quotes_gpc = Off

Con estas pequeñas configuraciones tu servidor de PHP debería tener una mejor seguridad.

Deshabilita los compiladores

Los compiladores pueden ser utilizados o llamados por “visitantes no esperados” en nuestro servidor para construir software malicioso como rootkits o mineros de criptomonerdas. Si uno o más compiladores están instalados y no puedes eliminarlos a través del gestor de paquetes te recomendamos restringirlos usando chmod:

$ sudo chmod 000 /usr/bin/byacc
$ sudo chmod 000 /usr/bin/yacc
$ sudo chmod 000 /usr/bin/bcc
$ sudo chmod 000 /usr/bin/kgcc
$ sudo chmod 000 /usr/bin/cc
$ sudo chmod 000 /usr/bin/gcc
$ sudo chmod 000 /usr/bin/*c++
$ sudo chmod 000 /usr/bin/*g++

Si necesitas utilizarlos por alguna razón puedes volver a habilitarlos con la siguiente orden:

sudo chmod 755 /usr/bin/<compilador>

El firewall es obligatorio

En Debian, Ubuntu y derivados el firewall por defecto es ufw. Caso contrario en Red Hat, Fedora y CentOS el firewall por defecto es firewalld. Sea cual sea el firewall que use tu distribución…úsalo. Esta herramienta protege tu sistema de conexiones o paquetes no deseados a través de instrucciones. Este tipo de firewalls pueden ser un poco molestos o tediosos al inicio, sobre todo al momento de probar la conectividad entre sistemas. Pero creenos, esos pequeños momentos de frustración valen la pena a la larga.

Apparmor y SELinux son necesarios

La mayoría de distribuciones de Gnu/Linux vienen equipadas con parches de seguridad que pueden ser utilizados para proteger la instalación contra errores de programas mal configurados o vulnerables. Procura no deshabilitar por completo estos servicios. AppArmor y SELinux son una barrera de defensa contra escalado de privilegios, malware o ataques basados en errores de memoria.

Paso extra para Apparmor

Si estás usando apparmor en una distribución como Debian o Ubuntu te recomendamos instalar los perfiles

Particiona tu disco correctamente

Es importante tener particiones diferentes en tu disco principal del servidor. Esto no solo mejora la flexibilidad de la instalación, además protege los datos del servidor en caso de que cualquier desastre pase. Si ocurre un error en la partición swap o /var/ solo se corromperán los datos de esa partición y no se corromperá todo nuestro sistema de archivos.

Esquema de particiones recomendado
/
/boot
/usr
/var
/home
/tmp
/opt

Asegura tus conexiones SSH

De nuevo, te recomendamos evitar la configuración por defecto de SSH ya que es una entrada muy común para los pentesters (no, no son hackers), como SSH estará ejecutándose constantemente en tu servidor es mejor cambiar algunas configuraciones por defecto.

Las reglas básicas de una configuración SSH segura son:

  • Deshabilitar el acceso a la cuenta root
  • No permitir el acceso por contraseña, solo por par de llaves
  • Registrar TODOS los intentos de acceso no autorizado
  • (Opcional) Solo permitir ciertas direcciones IP en SSH
sudo nano /etc/ssh/sshd_config
: Port <port>
: Protocol 2
: LogLevel VERBOSE
: PermitRootLogin no
: StrictModes yes
: RSAAuthentication yes
: IgnoreRhosts yes
: RhostsAuthentication no
: RhostsRSAAuthentication no
: PermitEmptyPasswords no
: PasswordAuthentication no
: ClientAliveInterval 300
: ClientAliveCountMax 0
: AllowTcpForwarding no
: X11Forwarding no
: UseDNS no

Finalmente reiniciamos nuestro servidor ssh:

sudo systemctl restart ssh

Conclusiones

La seguridad es una de las principales preocupaciones de un administrador de sistemas y lo decimos en serio, no es algo para tomarse a la ligera. Como nuevo sysadmin deberías de hacer este tema tu prioridad número uno, sobre todo cuando comiences a exponer tus servidores o comiences a desplegar aplicaciones en producción.

Si te gustó el blog te invitamos a presionar el botón me gusta, compartirlo con tus amigos en redes sociales o añadirnos a tu lista de excepciones en adblock. ¿Qué otras prácticas de seguridad conoces? Te invitamos a compartirlas en los comentarios del blog.

¡Nos vemos en la siguiente entrada!

4 comentarios en “Consejos de seguridad para el nuevo Sysadmin”

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: