Seguridad: No pasaran!


candado.jpg
Este tema lo trate alguna vez en los foros de psicofxp pero me parece interesante recordarlo.
La mayoría de los que usamos GNU/linux nos jactamos de que es un sistema mucho más seguro aun en su instalación por defecto. Sin ir más lejos esto es una realidad, si comparamos una instalación de un windows XP professional por defecto contra cualquier distro y tomamos el tiempo de cuanto tarda en ser comprometida una y otra. La instalación de Windows tarda en agarrarse cualquier peste unos 8 minutos, mientras la instalación del amigo pingüino continua inmutable por semanas.
Claro que la comparación no es justa. Estamos comparando un sistema que tiene un atraso tecnológico de 5 o 6 años contra cualquier distro de ahora. Además sabemos que la finalidad de windows no es precisamente la seguridad sino de darle cierta facilidad al usuario a la hora de utilizar un sistema. Esto ultimo también es discutible pero en este momento no nos interesa este punto, tal vez para futuras notas.
Ahora porque queremos tener un sistema seguro?
Si somos usuarios comunes y corrientes que navegamos por internet, redactamos un documento, imprimimos, etc una instalación por defecto de Ubuntu, Mandriva o la que elijan ya vienen por defecto bastante segura.
Ahora si somos administradores y estamos en un ambiente corporativo. Tenemos grandes servidores en producción que manejan información critica acá la cosa cambia.

Paso a detallar algunos puntos importantes a tener en cuenta:

-Si van a armar un servidor de producción elijan distros destinadas a dicho fin.
De las recomendadas son: Debian, Slackware o Gentoo. Instalen el sistema base y empiecen a trabajar a partir de ahí.
Generalmente tienen una espiral de desarrollo mas lenta que distros derivadas de ellas y orientadas al escritorio. No aparecen nuevas versiones con mucha frecuencia pero se destacan por ser muy probadas tanto en estabilidad y seguridad antes de salir un nuevo Release.

-Suscribanse a las listas de seguridad de la distro que utilicen (debian / Slack / fedora /etc).
Nos vamos a enterar antes que cualquiera de las ultimas vulnerabilidades, inclusive pueden encontrarse consejos de como arreglar en forma provisoria el problema encontrado hasta que salga la solución oficial. Tengan en cuenta que muchas veces los parches salen un par de horas después no como en plataformas privativas que pueden tardar hasta varias semanas.

-Siempre que instalen una distro vean que servicios les deja abiertos por defecto.
Para que quiero tener un servidor ftp, de correo o samba si no voy a brindar esos servicios.

-Usen passwords seguras para Root, generen un usuario común cuando instalan una distro.
Traten de no estar logueados todo el tiempo como Root ya que a la larga van a terminar haciendo lio.
Usen herramientas como “sudo” que le permite al usuario ejecutar los comandos definidos bajo la identidad de otro usuario, así como root. O “su” para convertirse directamente en root para hacer cosas administrativas. Sudo es muy versátil y muy configurable. Man sudo, revisen también el archivo de configuración /etc/suders se puede determinar quien, que corre, que no corre y como quien. Man sudoers.
Otra opción es desactivar directamente la cuenta root,

-Usen herramientas como nmap contra su propia máquina para ver que puertos están abiertos.

-Revisen que carga al inicio el sistema y maten demonios inútiles/peligrosos (por ejemplo sendmail, nfs-kernel,etc)

-Revisen el /etc/inetd.conf y comenten # todo los servicios inseguros o que no quieran brindar
Si pueden reemplazar inetd por xinetd mejor.

-Armen kernels a medida con lo justo. Si el equipo es de producción es totalmente inseguro que tenga habilitado los puertos usb, sonido, etc. Eviten tener el kernel modularizado en estos casos y deshabiliten la posibilidad de cargar módulos externos. Así se evitan los problemas de los rootkits y módulos sospechosos consumiendo memoria.

-Si el equipo es muy critico y son superparanoicos activen Grsecurity en el kernel o en su defecto SElinux que ya viene el kernel 2.6.x. Estos módulos activan mecanismos de seguridad adicionales a nivel usuario y procesos.

- Armen firewalls restrictivos. usen la política deniego todo, luego voy abriendo lo que necesito. Como segunda política usen tcpwrapper.
Tcpwapper funciona filtrando las peticiones a determinado servicio y se puede determinar que hacer según de donde provengan, permitir o denegar. Editen el /etc/host.deny y /etc/host.allow según lo que quieran hacer. Man hosts.allow man hosts.deny para saber un poco mas.

- No esta de mas correr cada tanto algún chequeador de rootkits y troyanos o verificar los archivos del sistema para ver si fueron modificados como tripwire o aide. Coloquenlo en el cron para que lo ejecute cada x tiempo.
Les recomiendo el troyan scan (http://www.derks.it/tools.html), es un simple script que utiliza el comando lsof para detectar que procesos están corriendo con acceso a internet. Cuando encuentra un proceso que no definimos en el archivo de configuración dispara un mail informando.

- Traten de armar particiones para:
/
/home
/var montada como nodev,nosuid,noexec
/var/log montada como nodev,nosuid,noexec
/tmp
el tmp montarlo sin derechos de ejecucion: con esto se puede detener el 80% de los ataques de gusanos.
Ejemplo de como debería quedar el fstab para que quede montado de esta manera:

dev/hda7 /tmp ext3 nosuid,noexec,nodev,rw 0 2

-Busquen binarios que tienen activado el bit suid/sgid
Lo cual significa que se ejecutan con todos los derechos no importa el nivel de usuario.
find / -perm +4000 -user root -type f -print
find / -perm +2000 -user root -type f -print

del listado que les de le pueden sacar el bit Suid con el siguiente comando:
chmod u-s archivo

para el bit sgid
chmod g-s archivo
Hay scripts que se encargan de hacer esto en forma automática como por ejemplo Bastile linux.

-Asegúrense que las herramientas de compilación no tengan derechos para otro usuario mas que para el usuario root. Lo recomendable es, una vez que tengan todo andando bien y no tengan que compilar nada, directamente desinstalar los paquetes. Con esto nos evitamos que algún script kiddie baje algo y lo compile en nuestra maquina.

-Si van a correr apache, php, mysql presten mucha atención en los derechos sobre los directorios, también quiten scripts y módulos peligrosos que puedan ser utilizados para correr algún exploit.
Pueden armar un entorno chroot para correr servicios. En caso de que un atacante lograra entrar a través de un exploit no lograría comprometer el sistema completo.

-Usen quotas así evitamos usuarios o proceso mal intencionado que llenen el espacio disponible.

-Si necesitan administrar un server en forma remota eviten las conexiones inseguras, usen ssh y si son paranoicos ssh + vpn

Si cumplen con estos consejos van a tener un sistema muy seguro que puede durar mucho tiempo sin ser comprometido o alterado. Recuerden que la seguridad total no existe.

Cordialmente
Sebastian Balza
Linux User Group Zona Norte

ESTE TEXTO SE PUBLICA BAJO LICENCIA CREATIVE COMMONS BY-NC-SA 2.5 AR.

Por lo tanto, usted es libre de: 1) Copiarlo, distribuirlo y exhibirlo. 2) Hacer obras derivadas. Bajo las siguientes condiciones: 1) Debe dar atribución mencionando el nombre del autor y del LUG Zona Norte. En caso de las notas que no llevan firma, mencionar sólo el nombre del LUG.
2) Usted no puede usar esta obra con fines comerciales. 3) Si usted altera, transforma, o crea sobre este texto, sólo podrá distribuir la obra derivada resultante bajo una licencia idéntica a ésta.

Más detalles y texto legal de la licencia en: http://creativecommons.org/licenses/by-nc-sa/2.5/ar

  1. #1 by La cotorra loca on 07/11/2006 - 0:53

    Buen articulo, cultural y entretenido :P

  2. #2 by Scan on 09/11/2006 - 18:10

    jajaja que name “la cotorra loca” :P

(will not be published)
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 6 + 12 ?
Please leave these two fields as-is: