Ultima modificación: 14 Noviembre, 2002
Este documento reside en http://webdiis.unizar.es/~spd/sec/linux-sec.html
La antigua versión, referida principalmente a Red Hat 6, aún puede encontrarse en http://webdiis.unizar.es/~spd/sec/linux-sec-6.html
Hoy en día, la proliferación de distribuciones de Linux "fáciles" hace que cualquiera pueda instalarse un Unix en su despacho; pero el mantener ese Unix con un mínimo de garantías ya no es tan trivial.
Existen multitud de recursos en Internet sobre como hacer un sistema Unix seguro, al final de este documento se incluyen algunos links de obligada lectura; aparte de eso veremos ahora unos mínimos consejos al respecto. Se ha tomado como referencia un sistema Linux Red Hat 8.0. Los conceptos son similares para otros Unix o distribuciones de Linux, aunque los detalles pueden variar.
Crea una cuenta de usuario, preferiblemente usando los mismos nombre de usuario, UID y GID que tengas en alguna otra cuenta Unix del departamento. Cuando necesites ejecutar cosas como root, hazlo usando "su" desde dicha cuenta (o "ssh localhost -l root")
Desactiva todos los servicios. No los necesitas. De hecho casi podrías
no ejecutar inetd. Solo cuando veas que necesitas realmente un servicio,
activalo (tras revisar sus opciones de log y de control de acceso).
Si necesitas algún tipo de acceso remoto a tu Unix, utiliza ssh para
sesiones interactivas y scp para transferencia de ficheros.
Jamás uses telnet ni ftp, que, entre otras cosas, mandan tu password en texto claro por la red. Red Hat 7.2 y posteriores incluyen OpenSSH de serie. Utilízalo.
Ademas, puedes leer mas sobre el uso de ssh en http://webdiis.unizar.es/~spd/sec/ssh.txt
Red Hat, desde la versión 7, incluye de serie un firewall; además, pregunta durante la instalación si se desea activar. Lo recomendado es activarlo y permitir únicamente (como mucho) trafico de entrada ssh.
Si no lo activaste durante la instalación, puedes activarlo mediante:
rpm -qa | grep iptables
rpm -ivh iptables-1.2.6a-2 (p.e.)
chkconfig iptables on
lokkit
/etc/init.d/iptables start
Nota: si sabes que solo vas a acceder desde determinadas IP's puedes ajustar aun más la configuración editando a mano el fichero /etc/sysconfig/iptables. Ejemplo:
# Permitir cualquier conexion desde 155.210.152.20 -A INPUT -s 155.210.152.20 -j ACCEPT # Permitir ssh desde la red unizar -A INPUT -s 155.210.0.0/255.255.0.0 -p tcp -m tcp --dport 22 --syn -j ACCEPT
Linux o un Unix con tcpwrappers instalados tiene dos ficheros
/etc/hosts.allow y /etc/hosts.deny. Utilizalos.
Por defecto, deniega todo y solo cuando veas que tienes que acceder
a algun servicio desde determinada IP, dale permiso.
Un ejemplo de estos ficheros sería:
--------------------------------------------------------------------------- /etc/hosts.allow # # Known trusted hosts # ALL: \ localhost \ : ALLOW sshd,sshdfwd-X11: \ localhost, \ unix-de-al-lado.unizar.es \ : severity auth.notice : ALLOW --------------------------------------------------------------------------- /etc/hosts.deny ALL: UNKNOWN : severity auth.warning : DENY ALL: PARANOID : severity auth.alert : DENY ALL:ALL:DENY ---------------------------------------------------------------------------
El tema de la seguridad en X11 es algo extenso y conviene entenderlo a fondo. Se recomienda la lectura de http://webdiis.unizar.es/~spd/sec/X11.txt
Cuando uses Netscape, procura dejar Java y JavaScript desactivado; igualmente desactiva todo lo que sea "smart" (smart updates, internet keywords, etc)
Lamentablemente, esto es así. No te basta con instalarlo y olvidarte,
periodicamente van apareciendo bugs que hay que parchear.
Si tu máquina solo tiene un usuario (tú) y si has eliminado todos
los servicios, puede que te puedas tomar con mas calma el tema de
las actualizaciones; pero aun así conviene que estes al día.
Para nuestro caso, las direcciones de interes son:
Esto es algo que sabemos todos pero que muchos no cumplen. Utiliza passwords que no sean palabras de diccionario, que tengan mayúsculas y minúsculas así como números y caracteres no alfanuméricos, etc. etc.
Además no uses el mismo password en todas las máquinas. Especialmente no utilices el mismo que en maquinas inherentemente inseguras. Estas ultimas comprenden:
Si programas servicios y/o CGI's asegurate de documentarte al respecto para no introducir más puertas de entrada.
Algunos links:
En muchos casos, los intrusos son gente que aplica a ciegas programas que aprovechan los bugs existentes, sin tener mucha idea de lo que están haciendo; por lo que no borran rastros de ningún tipo.
execve("/bin/ls", ["ls", "-d", "/"], [/* 48 vars */]) = 0 /es una mala señal.