Ultima modificación: 13 Septiembre, 2000
Este documento reside en http://webdiis.unizar.es/~spd/sec/linux-sec.html
Recientemente (Agosto de 2000) un grupo de italianos ha estado entrando en máquinas Unix del CPS y del CCUZ. Sus actividades han consistido básicamente en lo siguiente:
Conviene hacer notar que la puerta de entrada utilizada para la
entrada inicial han sido los PC's con Linux que usuarios particulares
tienen en sus despachos como estaciones de trabajo personales, máquinas
instaladas sin tener en cuenta ningún tipo de consideración sobre
seguridad.
Este hecho es bastante importante, ya que ayuda a ver el porque
la preocupación por la seguridad de una máquina, aunque sea personal,
es importante. Aunque a alguien pueda no importarle que entren en su
máquina porque no tiene información importante, como se ve, lo que
está en juego es la seguridad de toda la red, no la de su máquina.
Siguiendo los rastros que iban dejando por las máquinas atacadas, he llegado a localizarlos e incluso a hablar con ellos (el "cabecilla" es un chaval de 15 años, según dice). Mientras no han realizado ninguna actividad directamente destructiva sobre las máquinas invadidas, las consecuencias de sus actos han sido:
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 6.2. 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. Instala ssh y utilizalo.
Instalar ssh es algo tan simple como esto:
:~> wget ftp://ftp.cps.unizar.es/pub/unix/security/ssh-1.2.32.tar.gz :~> tar xvzf ssh-1.2.32.tar.gz :~> cd ssh-1.2.32 :~/ssh-1.2.30> ./configure --with-libwrap --disable-scp-stats :~/ssh-1.2.30> make :~/ssh-1.2.30> su :~/ssh-1.2.30# make install :~/ssh-1.2.30# cat > /etc/rc.d/init.d/ssh <<EOF #!/bin/sh # # /etc/rc.d/init.d/ssh - Start/Stop the ssh daemon # # SPD, Tue May 14 15:18:08 MET DST 1996 # # # chkconfig: 345 50 50 # description: Secure Shell # # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ \${NETWORKING} = "no" ] && exit 0 case \$1 in 'start') if [ -f /usr/local/sbin/sshd ] then touch /var/lock/subsys/ssh /usr/local/sbin/sshd fi ;; 'stop') if [ -f /etc/sshd.pid ] then kill \`cat /etc/sshd.pid\` else pid=\`/bin/ps ax | /bin/grep sshd | \\ /bin/sed -e 's/^ *//' -e 's/ .*//'\` if test "\$pid" then kill \$pid fi fi rm -f /var/lock/subsys/ssh ;; *) echo "usage: \$0 {start|stop}" ;; esac EOF :~/ssh-1.2.30# chmod 755 /etc/rc.d/init.d/ssh :~/ssh-1.2.30# chkconfig ssh on :~/ssh-1.2.30# /etc/rc.d/init.d/ssh start :~/ssh-1.2.30# exit
Ademas, puedes leer mas sobre el uso de ssh en http://webdiis.unizar.es/~spd/sec/ssh.txt
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.
[1] DoS:ataque consistente en "tirar" una máquina o uno de sus servicios, no para consiguir acceder, si no simplemente para que deje de funcionar.
[2] Debido a esto se esta considerando muy seriamente limitar el acceso a los servicios "r" de las máquinas que administro a únicamente las máquinas que administro.