Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducción
Los pasos a seguir se indican en la siguiente lista, y cada uno de ellos se comenta en
detalle en las secciones siguientes.
El cortafuegos debería iniciarse antes de que te conectes a internet por primera vez.
Configuralo para denegar todos los paquetes entrantes a excepción de aquellos en estado
establecido (ESTABLISHED) o relacionado (RELATED). Esto te proporcionará máxima
protección mientras llevas a cabo el resto de los pasos para asegurar tu distribución. Una
vez que hayas completado todos los pasos requeridos puedes configurar el cortafuegos
según tus necesidades.
Una distribución Linux estándar puede incluir perfectamente más de 1,000 paquetes y
muchos de estos pueden tener nuevas versiones cuando vayas a instalarlos. La mayor
parte de estas actualizaciones consistirán en nuevas características y correcciones de
errores, pero algunas también incluirán parches para vulnerabilidades, y algunas de estas
vulnerabilidades pueden ser importantes. El asegurarse de que todos los paquetes
instalados estén en sus versiones mas recientes no es solo algo de lo que preocuparse a
la hora de la instalación sino que se debería tener en cuenta a lo largo de toda la vida útil
de nuestra nueva instalación. Esto puede llevarnos bastante tiempo pero afortunadamente
existen algunas utilidades que pueden hacer esto por nosotros automáticamente. Las dos
aplicaciones más utilizadas son APT (Advanced Package Tool) y Yum (Yellowdog
Updater, Modified).
Algunas distribuciones tienen sus propias utilidades para este propósito y en ese caso
puede que te sea más sencillo utilizar las herramientas por defecto de tu distribución. Por
ejemplo las distribuciones RedHat y Fedora vienen con up2date y la distribución Debian
utiliza APT.
Si quieres o tienes que instalar la herramienta por ti mismo te recomendaría APT que
puede ser utilizada con cualquier distribución Linux basada en RPM. También tendrás que
localizar algún repositorio que contenga los paquetes nuevos/actualizados para tu
distribución desde los que APT los pueda descargar e instalar. Una búsqueda rápida en
internet con el nombre de tu distribución y 'apt' o 'apt-get' debería ser suficiente para
localizar el binario de APT en formato RPM y un repositorio. Echa un vistazo a los enlaces
al final del artículo para ver algunos sitios web útiles y direcciones de repositorios.
Una vez que tengas APT instalado y los repositorios añadidos (normalmente en
/etc/apt/sources.list o similar), su uso es trivial y requiere de solo dos comandos (a
ejecutar como root):
$ apt-get update
$ apt-get upgrade
El primer comando descarga la información mas actual de los paquetes del repositorio y el
segundo utiliza esta información para descargar e instalar nuevas versiones de paquetes
ya instalados si estas están disponibles. Estos comandos deberían ejecutarse cada cierto
tiempo para asegurarnos de que nuestro sistema esté siempre actualizado.
Si quieres máxima protección deberías intentar utilizar siempre repositorios oficiales que
contenga paquetes firmados; esto es más sencillo de hacer si usas alguna de las
aplicaciones para actualizaciones automáticas que vienen con las distribuciones mas
populares. Cuando descargues paquetes individuales y archivos de internet, intenta
utilizar siempre md5sum (c.f. man md5sum). Un MD5SUM o suma de control MD5 es un
resumen de un archivo y la mayoría de los sitios de los que descargar archivos publican
las sumas de control de los archivos que tienen disponibles para descargar; comparalos
con los que generes de los archivos descargados para asegurarte de que no hayas
descargado una versión del archivo/paquete que incluya algún troyano.
Las distribuciones mas comunes y populares probablemente contarán con una aplicación
gráfica para configurar estos servicios; prueba a buscar en los menús Configuración o
Sistema de tu aplicación de escritorio.
En los sistemas RedHat, la utilidad de línea de comandos para configurar los servicios se
llama chkconfig. Para obtener una lista del estado actual de todos los servicios instalados,
ejecuta (como root):
Los números (0 a 6) que preceden a los dos puntos representan el "nivel de ejecución" del
sistema donde los dos de verdadero interés serán 3 y 5; si tu sistema arranca en consola
(sin interfaz gráfica) entonces se ejecuta en nivel 3 y viceversa si arranca una interfaz
gráfica corre en nivel 5.
Para activar un servicio (por ejemplo squid) en los niveles de ejecución 2,3,4 y 5
ejecutaríamos (como root):
Si no sabes qué hace alguno de los servicios que tengas activados intenta buscar
información en internet o usar el comando man con el nombre del servicio como palabra
clave (man -k). Algunas de las versiones gráficas puede que te ofrezcan una explicación
sobre qué es cada servicio.
Puedes ejecutar netstat -l después de deshabilitar todos los servicios innecesarios para
asegurarte de que has acabado con todos (este comando comprueba qué sockets están
escuchando esperando conexiones). Para cada uno de los servicios que aún estén
ejecutándose, asegurate de que están configurados correctamente (y de la forma más
restrictiva posible) y que el cortafuegos los proteja.
4. Localizar y borrar/modificar los ejecutables SUID/SGIDs innecesarios
Un ejecutable SUID (set user ID, establecer identificador de usuario) o SGID (set group
ID, establecer identificador de grupo) es aquel que permite a un usuario ordinario
ejecutarlo con privilegios mayores de los que tiene por defecto. Un ejemplo común es el
binario passwd el cual, entre otras cosas, permite a un usuario normal cambiar su
contraseña. Estas contraseñas están almacenadas en un archivo que solo puede ser
alterado (y algunas veces leído) por el usuario root y, por lo tanto, los usuarios que no
sean root no deberían ser capaces de cambiar sus contraseñas. Los permisos de acceso
para este ejecutable son:
Como puedes ver, el bit de dueño está establecido a 's' en lugar del 'x' normal, haciendo
que el binario sea SUID; es decir, cuando un usuario ordinario ejecuta passwd, se
ejecutará con los privilegios del dueño del archivo - en este caso el usuario root.
Ahora deberíamos recorrer cada uno de los elementos de la lista intentado reducir el
número de los archivos cuyo dueño sea el usuario root o que estén en el grupo root a lo
mínimo imprescindible bien borrando los binarios SUID/SGID innecesarios y/o borrando el
bit SUID/SGID.
Los paquetes que contengan ejecutables SUID/SGID y que no vayas a usar pueden
eliminarse buscando primero el paquete con, por ejemplo, rpm -q --whatprovides /usr/sbin/
kppp y después desinstalándolo con rpm -e package-name.
El bit SUID/SGID puede eliminarse con, por ejemplo, chmod -s /usr/sbin/kppp. El
ejecutable podrá iniciarse entonces por el usuario root cuando lo necesitemos.
5. Logwatch y Tripwire
Aunque hagamos todo lo que podamos para asegurar nuestro sistema, la realidad es que
por mucho que nos empeñemos nunca estaremos completamente seguros. Una mejor
estrategia que simplemente confiar en que no pase nada, es asegurarnos de que
sepamos si nuestro sistema ha sido comprometido y en el caso de que lo sea, cuándo.
Una fuente de información inestimable sobre lo que está ocurriendo en tu pc son los
archivos de registro (que normalmente se encuentran en /var/log). Todos los registros que
se llevan a cabo en un sistema Linux se manejan por el demonio syslogd y su archivo de
configuración /etc/syslog.conf. El archivo de configuración especifica sobre qué
subsistemas se deben grabar los mensajes (por ejemplo cron, daemon, mail, etc), qué
niveles de mensajes registrar (por ejemplo debug, info, warn, etc) y qué hacer con esos
mensajes (añadirlo a un archivo de registro, enviarlo a la impresora, etc). Si quieres
cambiar la configuración por defecto encontrarás bastante información en las páginas de
manual (syslogd(8), syslog.conf(5), syslog(2), syslog(3) y mas).
Syslog permite también el registro remoto; guardando tus archivos de registro en otros
pcs de la red. La ventaja de esto es que si tu sistema queda comprometido por alguien
serán incapaces de borrar sus pasos de tus archivos de registro haciendo mas sencillo el
buscar su origen y las acciones que llevaron a cabo.
Logwatch está instalado por defecto en las distribuciones más comunes y normalmente
generará por defecto informes diarios enviándolos al correo electrónico del usuario root.
Dado que estos informes son normalmente muy cortos deberían ser leídos cada día.
Resaltarán, dependiendo de la configuración, informacion del tipo intentos de login
inválidos, conexiones de red a varios demonios como SSHD, posibles escaneos de
puertos, etc. Su archivo de configuración suele estar situado en
/etc/log.d/conf/logwatch.conf y está bien documentado con comentarios que te ayudarán
en la configuración.
Hay otros sistemas de detección de intrusos que podrías querer considerar, como Snort -
http://www.snort.org/, puedes encontrarlos facilmente con una búsqueda rápida en
internet.
Observaciones Finales
La seguridad no es algo que consideras a la hora de la instalación y de lo que te olvidas
después; al contrario debe ser algo que esté siempre en tu cabeza en todo lo que hagas;
ya sea al asegurarte de que tu sistema esté actualizado, asegurarte de que usas políticas
adecuadas para las contraseñas, determinar a quién proporcionas acceso a tu sistema y
con qué nivel de acceso, leer tus logs, comprobar los registros de tripwire, leer la lista de
seguridad de tu distribución Linux, etc. Hay un viejo dicho que se adapta a la seguridad
informática bastante bien: "Una cadena es tan fuerte como su eslabón mas débil". Un solo
fallo por tu parte a la hora de aplicar esfuerzo y concentración a la tarea puede crear un
agujero de seguridad y echar a perder todo el trabajo.
Este artículo cubre los procedimientos más basicos e importantes que todo usuario
debería aplicar. Siempre hay mas cosas que se pueden hacer pero cada persona tendrá
que valorar la ventaja potencial contra el tiempo y esfuerzo que le suponga.
APT
http://moin.conectiva.com.br/ AptRpm - página web sobre el port de AptRpm de Conectiva
http://apt4rpm.sourceforge.net - Información general y scripts en Perl para crear
repositorios. También contiene una lista de repositorios para varias distribuciones pero
muchas de ellas pueden estar desfasadas.
http://www.nongnu.org/synaptic/ - Página web de Synaptic (un frontend gráfico para apt)
http://apt.freshrpms.net/ - RMPs de Apt y repositorios para Fedora, RedHat y Yellow Dog
http://www.usr-local-bin.org /apt.php - Instrucciones y un repositorio para SuSE Linux
Otras Utilidades de Seguridad
http://www.bastille-linux.org/ - Bastille intenta asegurar los sistemas operativos Unix/Linux.
Entre sus funciones están bastantes de las cosas que he enumerado antes y mucho más.
http://www.lids.org/ - The Linux Intrusion Defense System (Sistema de Defensa contra
Intrusos para Linux) es un parche para el kernel y una herramienta de administración que
mejora la seguridad del kernel implementando Mandatory Access Control.
http://www.chkrootkit.org - chkrootkit es una herramienta para buscar signos de de un
rootkit en local (un conjunto de utilidades que los atacantes pueden utilizar para ocultar
sus acciones en el sistema)
http://www.nessus.org/ - Un escaner de seguridad remoto libre, potente, actualizado y fácil
de usar; un escáner de seguridad es un producto software que inspecciona de forma
remota una red y determina si alguien (o algo - como un gusano) puede entrar de forma
no permitida en el sistema, o usarlo de manera indebida de alguna forma.