Академический Документы
Профессиональный Документы
Культура Документы
Ante todo Linux es un sistema multiusuario real. Puede haber varios usuarios distintos
trabajando a la vez cada uno desde su terminal. El sistema tiene la obligacin de proteger a
unos usuarios frente a otros y protegerse a s mismo.
Linux es una excelente estacin de trabajo aislada, pero lo habitual es que cada mquina
linux est conectada a una red y adems est prestando servicios de red. El sistema tiene la
obligacin de garantizar los servicios que presta.
Adems, con la generalizacin de las conexiones con Internet y el rpido desarrollo del
software, la seguridad se est convirtiendo en una cuestin cada vez ms importante. Ahora,
la seguridad es un requisito bsico, ya que la red global es insegura por definicin. Mientras
sus datos estn almacenados en un soporte informtico, mientras sus datos vayan desde un
sistema X a otro sistema Y a travs de un medio fsico, Internet, por ejemplo, puede pasar
por ciertos puntos durante el camino proporcionando a otros usuarios la posibilidad de
interceptarlos, e incluso alterar la informacin contenida. Incluso algn usuario de su
sistema puede modificar datos de forma maliciosa para hacer algo que nos pueda resultar
perjudicial. Con el acceso masivo y barato a Internet se han reducido notablemente los
costes de un atacante para asaltar un sistema en red, a la vez que ha aumentado
paralelamente el nmero de potenciales atacantes. Resumiendo, a nadie le gustara que
desconocidos abran su correo privado, que miren en sus cajones, que se hagan copias de las
llaves de su escritorio o de la tarjeta de crdito. Pues todo esto es aplicable en la misma
medida a las redes telemticas.
Tambin queremos remarcar el carcter dinmico de la seguridad de los sistemas en red.
Continuamente aparecen nuevos mtodos para conseguir accesos indebidos o comprometer
el correcto funcionamiento de la red. Esto obliga a estar actualizado permanentemente, y
consultar las publicaciones electrnicas que informan de los ltimos sucesos detectados.
Evidentemente, estas publicaciones informan principalmente sobre actividades que ya se
han llevado a cabo, por lo que esperamos que no sea el primero en sufrirlas. Pero tambin
se puede encontrar informacin sobre debilidades detectadas antes de que se lleven a cabo.
Por todo esto, este curso no pretende proporcionar una lista actualizada de programas o
servicios potencialmente inseguros o de programas que afectan a la seguridad
(denominados exploits). Como continuamente aparecen nuevos programas para
comprometer la seguridad de las redes y de las comunicaciones, lo que s haremos ser
indicar los lugares ms habituales donde buscar una informacin actualizada de ese tipo, y
algunos mtodos generales para prevenir que esos programas tengan xito en su sistema.
Primero, tenga en cuenta que ningn sistema es "completamente" seguro. El nico sistema
seguro es aquel que no est conectado en red, que est apagado y encerrado bajo llave.
Desde esta perspectiva, partimos de que todo lo nico que puede hacer es aumentar la
dificultad para que alguien pueda comprometer la seguridad de su sistema. Tampoco todos
los usuarios tienen las mismas necesidades de seguridad en sus entornos. Por ejemplo, los
usuarios domsticos de Linux, no necesitan demasiado trabajo para mantener alejados a los
crackers ocasionales, mientras que para los usuarios muy especializados de Linux, como
por ejemplo servidores de Internet, bancos, compaas de telecomunicaciones, etc., se
necesita un trabajo mucho ms detallado para garantizar la seguridad en los trminos
previstos.
Tambin tenemos que tener en cuenta que existe una relacin inversa entre seguridad y
funcionalidad. Tiene que decidir dnde est el equilibrio entre la facilidad de uso de su
sistema y su seguridad. Por ejemplo, puede necesitar que cualquiera que llame por el
mdem a su sistema, y nuestro mdem tenga que devolver la llamada a su nmero de casa.
Este mecanismo garantiza un mayor nivel de seguridad, pero si alguien no est en casa, le
hace ms difcil conectarse. Otra forma de aumentar la seguridad sera no tener conexin
con Internet, pero seguro que no es eso lo que queremos.
Tambin existe una relacin inversa entre el nivel de seguridad y el nmero de servicios
distintos que presta un sistema. Cada servicio prestado por un sistema puede ser susceptible
de ser utilizado contra el propio equipo servidor, como puede ser el caso de bloqueos
intencionados, conocidos como ataque de denegacin de servicio (DoS). Pero un sistema
servidor que no presta servicios es menos servidor.
En el caso de administrar un instalacin mediana o grande conviene establecer una "Poltica
de Seguridad" que fije el nivel de seguridad que requiere ese sitio y que sistema de
comprobacin se realiza. Puede encontrar un ejemplo muy conocido de poltica de
seguridad en el RFC 2196.
Gracias a esto, Linux es conocido por su alto nivel de estabilidad que parte del propio
ncleo del sistema operativo (lo que propiamente es Linux).
Servicios en Linux
Linux tiene disponible todos los servicios habituales en una red:
Bases de datos.
Servicios de internet.
Pero adems hay que resear que cada servicio funciona sin afectar al resto de los servicios.
Vd. puede modificar la direccin IP de su equipo, las rutas, aadir, parar o reiniciar un
servicio concreto sin que el resto de los servicios se vean afectados. Slo es necesario
detener el equipo para realizar operaciones con el hardware, como aadir un disco duro, o
utilizar un nuevo ncleo. No tendr, pues, la necesidad de tener que ser Vd. mismo el
atacante de su propio sistema, a diferencia de lo que ocurre en otros sistemas operativos.
Qu Quiere Proteger?
La amenaza proviene de alguien que tiene motivos para obtener acceso sin
autorizacin a su red o equipo. Debe decidir en quin confa para dotar de acceso a
su sistema y qu amenaza puede representar.
Las amenazas proceden de varios tipos de intrusos, y es til tener en mente sus
diferentes caractersticas cuando est asegurando sus sistemas.
o El Curioso - Este tipo de intruso est interesado bsicamente en qu tipo de
sistema y datos posee.
o El Malicioso - Este tipo de intruso pretender, bien hacerle caer su sistema,
modificar su pgina web o cualquier otra cosa que le cueste tiempo y dinero
recuperar.
o El Intruso muy personalizado - Este tipo de intruso trata de usar su sistema
para ganar popularidad o mala fama. Puede usar su sistema para
promocionar sus habilidades.
o La Competencia - Este tipo de intruso est interesado en los datos que tiene
en su sistema. Puede ser alguien que piense que tiene algo que le puede
interesar financieramente o de otra forma.
Las primeras medidas de seguridad que necesita tener en cuenta son las de seguridad fsica
de sus sistemas. Hay que tomar en consideracin quines tienen acceso fsico a las
mquinas y si realmente deberan acceder.
El nivel de seguridad fsica que necesita en su sistema depende de su situacin concreta. Un
usuario domstico no necesita preocuparse demasiado por la proteccin fsica, salvo
proteger su mquina de un nio o algo as. En una oficina puede ser diferente.
Linux proporciona los niveles exigibles de seguridad fsica para un sistema operativo:
Un arranque seguro
Seguridad en el arranque
Cuando alguien inicia el sistema operativo Linux se encuentra con una pantalla de login: el
sistema est pidiendo que se identifique. Si es un usuario conocido, podr iniciar una sesin
y trabajar con el sistema. Si no lo es, no tendr opcin de hacer absolutamente nada.
Adems, el sistema registra todos los intentos de acceso (fallidos o no), por lo que no
pasarn desapercibidos intentos repetidos de acceso no autorizado.
LILO (Linux Loader) es el encargado de cargar el sistema operativo en memoria y pasarle
informacin para su inicio. A su vez, Vd. puede pasarle parmetros a LILO para modificar
su comportamiento.
Por ejemplo, si alguien en el indicador de LILO aade init single, el sistema se inicia en
modo monousuario y proporciona una shell de root sin contrasea. Si en su entorno de
trabajo cree necesario evitar que alguien pueda iniciar el sistema de esta forma, debera
utilizar el parmetro restricted en el fichero de configuracin de LILO (habitualmente
/etc/lilo.conf). Este parmetro le permite iniciar normalmente el sistema, salvo en el caso de
que se hayan incluido argumentos en la llamada a LILO, que solicita una clave. Esto
proporciona un nivel de seguridad razonable: permite iniciar el sistema, pero no manipular
el arranque. Si tiene mayores necesidades de seguridad puede incluir la opcin password.
De esta forma necesitar una clave para iniciar el sistema. En estas condiciones, slo podr
iniciar el sistema quien conozca la clave.
Puede encontrar ms detalles en las pginas del manual lilo y lilo.conf. Para ello,
introduzca en la lnea de comandos las siguientes rdenes:
# man lilo
# man lilo.conf
Prepare un disco de arranque del sistema. Es muy fcil, simplemente tiene que
copiar el ncleo del sistema operativo en el disco, sin sistema de ficheros, e
indicarle cual es la particin raz del sistema.
# dd if=/boot/vmlinuz of=/dev/fd0
# rdev /dev/fd0 /dev/hdXY
Suponiendo que estemos usando un disco duro IDE, X indica el disco (a,b,c, o d), Y
indica la particin (1,2,...).
Tenga en cuenta que ningn sistema es realmente seguro si alguien, con los
conocimientos necesarios, puede usar su propio disco para arrancar.
Si tiene una mquina servidora, y tiene una clave para el arranque, la mquina no se
reiniciar sin suministrar la clave y tendr que acudir a introducirla en el caso de
una parada no prevista.
Bloqueo de la consola
En los entornos Unix es conocido el truco de ejecutar en una teminal, que alguien ha dejado
inocentemente abierto, un guion que simule la pantalla de presentacin al sistema. Entonces
un usuario incauto introudcir su nombre y clave, que quedarn a merced del autor del
engao.
Si se aleja de su mquina de vez en cuando, estara bien poder bloquear su consola para que
nadie pueda manipularla o mirar su trabajo. Dos programas que hacen esto son xlock y
vlock.
bloquea la pantalla cuando nos encontramos en modo grfico. Est incluido en la
mayora de las distribuciones Linux que soportan X. En general puede ejecutar xlock desde
cualquier xterm de su consola y bloquear la pantalla de forma que necesitar su clave para
desbloquearla. Mire la pgina de manual para ver ms detalles, algunos curiosos.
xlock
es un simple programa que le permite cerrar alguna o todas las consolas virtuales de
su mquina Linux. Puede bloquear slo aqulla en la que est trabajando o todas. Si slo
cierra una, las otras se pueden abrir y utilizar la consola, pero no se podr usar su vty hasta
que no la desbloquee.
vlock
Desde luego, bloquear una consola prevendr que alguien manipule su trabajo, pero no
previene de reinicios de la mquina u otras formas de deteriorar su trabajo.
Seguridad local
Introduccin
Linux es un sistema operativo multiusuario real: puede haber varios usuarios trabajando
simultneamente con l, cada uno en su terminal. Esto obliga a tener en cuenta medidas de
seguridad adicionales. Adems, segn hablan las estadsticas, el mayor porcentaje de
violaciones de un sistema son realizadas por usuarios locales. Pero no slo hay que
protegerse de las violaciones intencionadas, sino que el sistema debe protegernos de
operaciones accidentales debidas a decuidos o ignorancia de los usuarios.
En este aspecto de la seguridad, Linux dispone de todas las caractersticas de los sistemas
Unix: un control de acceso a los usuarios verificando una pareja de usuario y clave; cada
fichero y directorio tienen sus propietario y permisos.
Por otro lado, la meta de la mayora de los ataques es conseguir acceso como root, lo que
garantiza un control total sobre el sistema. Primero se intentar conseguir acceso como
usuario "normal" para posteriormente ir incrementando sus niveles de privilegio utilizando
las posibles debilidades del sistema: programas con errores, configuraciones deficientes de
los servicios o el descifrado de claves cifradas. Incluso se utilizan tcnicas denominadas
"ingeniera social", consistentes en convencer a ciertos usuarios para que suministren una
informacin que debiera ser mantenida en secreto, como sus nombres de usuario y
contraseas.
En este apartado de seguridad local pretendemos dar unas ideas generales de los riesgos
existentes, mecanismos para su solucin y unas directrices de actuacin que deberan
convertirse en hbitos cotidianos.
Cuentas de usuario, grupos
Cada usuario del sistema est definido por una lnea en el fichero /etc/passwd y cada
grupo por otra lnea en el fichero /etc/group. Cada usuario pertenece a uno o varios
grupos y cada recurso pertenece a un usuario y un grupo. Los permisos para un recurso se
pueden asignar al propietario, al grupo y a otros (resto de los usuarios). Ahora bien, para
mantener un sistema seguro, pero funcional, tendremos que realizar las combinaciones
necesarias entre el propietario y grupo de un recurso con los permisos de los propietarios,
grupos y otros. Por ejemplo, la unidad de disco flexible tiene las siguientes caractersticas:
Cuando queramos que un usuario pueda escribir en la unidad de disco, slo tendremos que
incluirlo en el grupo floppy. Cualquier otro usuario que no pertenezca al grupo floppy
(salvo root) slo podr leer el disquete.
El administrador tiene que conocer las necesidades de cada uno de sus usuarios y asignarle
los mnimos privilegios para que pueda realizar su trabajo sin resultar un peligro para otros
usuarios o el sistema. Ms abajo veremos otro mecanismo para poder utilizar un recurso
sobre el cual no tenemos privilegios.
No se asuste. Los valores que traen por defecto las distribuciones de Linux son suficiente
para mantener el sistema seguro.
Otro peligro potencial para el sistema es mantener cuentas abiertas que se han dejado de
utilizar. Estas cuentas pueden constituir un buen refugio para un potencial atacante y pasar
desapercibidas sus acciones.
Seguridad de las claves
La seguridad de una sola cuenta puede comprometer la seguridad de todo el sistema. Esto
es una realidad ante la que debemos protegernos.
Por un lado tenemos que asegurarnos de que nuestros usuarios utilizan claves slidas:
Para comprobar que este requisito se verifica en nuestro sistema, podemos usar los mismos
mecanismos que utilizan los atacantes. Existen varios programas que van probando varias
palabras de diccionario, claves habituales y combinaciones de caracteres, que son cifrados
con el mismo algoritmo que usa el sistema para mantener sus claves; despus son
comparadas con el valor de la clave cifrada que quermos averiguar hasta que el valor
obtenido de un cifrado coincide con una clave cifrada. Posteriormente notificaremos al
usuario que su clave es dbil y le solicitaremos que la modifique.
Usando este mecanismo, al menos podemos garantizar que no estaremos en inferioridad de
condiciones con respecto a los atacantes locales.
Un conocido programa para realizar el descifrado de claves es John the Ripper.
Por otro lado, las claves cifradas se almacenan en el fichero /etc/passwd. Cualquier
usuario del sistema tiene permiso de lectura sobre este fichero. Lo que es peor, agujeros en
los navegadores permiten que se puedan leer ficheros arbitrarios de una mquina
(evidentemente, que el usuario de navegador tenga permiso para leer), de manera que
lleguen hasta un hacker que cree pginas web que exploten estos agujeros. No te pierdas
una demostracin para Netscape 4.5. Entonces puede parecer a primera vista que nos
encontramos con un grave agujero de seguridad. El atacante, una vez obtenido el fichero
/etc/passwd no tiene ms que ejecutar su programa revientaclaves favorito y sentarse a
esperar hasta que empiecen a aparecer nombres de usuario con sus respectivas contraseas,
algo que suele pasar muy rpidamente. Con suerte, si el administrador es ingenuo o dejado,
incluso dar con la clave del root, abrindosele as las puertas a la mquina objetivo. Para
solucionar esta vulnerabilidad, podemos recurrir a contraseas en la sombra (shadow
passwords), un mecanismo consistente en extraer las claves cifradas del fichero
/etc/passwd y situarlas en otro fichero llamado /etc/shadow, que slo puede leer el root
y dejar el resto de la informacin en el original /etc/passwd. El fichero /etc/shadow slo
tiene: Das transcurridos antes de que la clave tenga que ser modificada.
99999 : 7 : -1 : -1 :
ftp://i17linuxb.ists.pwr.wroc.pl/pub/linux/shadow/shadow-current.tar.gz
ftp://ftp.icm.edu.pl/pub/Linux/shadow/shadow-current.tar.gz
ftp://iguana.hut.fi/pub/linux/shadow/shadow-current.tar.gz
ftp://ftp.cin.net/usr/ggallag/shadow/shadow-current.tar.gz
ftp://ftp.netural.com/pub/linux/shadow/shadow-current.tar.gz
Para activar contraseas en la sombra, tiene que ejecutar pwconv como root; accin que
crear su fichero /etc/shadow. Si su distribucin de Linux no incluye contraseas en la
sombra o encuentra alguna dificultad para incorporar esta caracterstica, existe un
Esto quiere decir que cuando se ejecute, el proceso correspondiente va a tener los
privilegios del propietario del comando (es decir, el root), no del usuario que lo lanz. En
otras palabras, el proceso generado por passwd pertenece a root. A primera vista, esto
puede parecer una seria brecha de seguridad. Y lo es. Si el programa funciona
correctamente, no tiene por qu dar problemas; pero pequeos defectos en el programa
pueden ser utilizados por alguien para tratar de ejecutar otro cdigo distinto con los
privilegios de este proceso. El mtodo suele ser el desbordamiento de la pila (buffer
overflow).
Cualquier atacante que haya entrado en un sistema de forma ilegtima intentar dejar una
shell con el bit SUID para mantener ese nivel de privilegio cuando vuelva a entrar en el
sistema.
SGID es lo mismo que SUID, pero aplicado al grupo.
As pues, tenga cuidado con los programas con el bit SUID/SGIG. Puede encontrarlos con
root# find / -type f \( -perm -04000 -o -perm -02000 \)
-print
Tenga en cuenta que algunos programas (como passwd) tienen que tener el bit SUID.
Compruebe en los lugares habituales, (que indicamos en la seccin correspondiente) que
ninguno de los programas propiedad del root o SUID que utiliza en su sistema, tiene un
fallo de seguridad conocido que pueda ser explotado.
Nunca debe permitir que quede una shell SUID corriendo en el sistema. Si el root deja
desatendida la consola durante unos instantes (recuerde, debe utilizar siempre xlock), un
intruso podra escribir lo siguiente:
# cp /bin/sh /tmp/cuenta-root
# chmod 4755 /tmp/cuenta-root
crendose una versin SUID de la shell sh. En el futuro, cuando el atacante ejecute ese
programa, cuenta-root, se convertir en root! Si lo escondiera en un directorio oculto, la
nica forma de encontrarlo sera escaneando el sistema completo como se ha explicado
antes.
Y recuerde, nuca escriba guiones de shell SUID.
Seguridad del root
No use la cuenta de root por norma. Evtela. Intente primero cualquier accin como
un usuario normal, y si ve que no tiene permiso, piense porqu y use el comando su
si es necesario.
Ciertos mandatos admiten una opcin (-i) para actuar de forma interactiva. Actvela,
si no lo est ya aadiendo estas lneas a su fichero de recursos par la shell:
o
Evite que la clave del root viaje por una red sin cifrar. Utilice ssh u otro canal
seguro.
Limite los terminales desde los que se puede conectar root. Es preferible limitarlo a
la consola del sistema. Esto se puede decidir en /etc/securetty. Si necesita una
sesin remota como root, entre como usuario normal y luego use su.
Acte de forma lenta y meditada cuando sea root. Sus acciones podran afectar a un
montn de cosas. Pinselo antes de teclear!
Hay herramientas como sudo que permiten a ciertos usuarios utilizar comandos
privilegiados sin necesidad de ser root, como montar o desmontar dispositivos. Adems
registra las actividades que se realizan, lo que ayuda a determinar qu hace realmente este
usuario.
Seguridad del sistema de archivos
Introduccin
Una norma bsica de seguridad radica en la asignacin a cada usuario slo de los permisos
necesarios para poder cubrir las necesidades de su trabajo sin poner en riesgo el trabajo de
los dems.
Como se puede poner en riesgo el correcto funcionamiento del sistema?
Podemos apuntar algunas ideas: violando la privacidad de la informacin, obteniendo unos
privilegios que no le correspoden a un usuario, haciendo un uso desmedido de los recursos
o modificando informacin legtima contenida en una mquina, como pueden ser el
contenido de una pgina web o una base de datos.
Cmo podemos mantener un almacenamiento seguro?
La respuesta no puede ser concreta, pero s que se pueden tomar ciertas medidas que
garanticen un mnimo de seguridad y funcionalidad. Si Vd. va a administrar un sistema
Linux para dar servicio a diversos usuarios, debera tener algunas nociones sobre sistemas
de ficheros, que pasamos a explicar a continuacin.
El rbol de directorios
Para quienes no estn familiarizados con las caractersticas del sistema de almacenamiento
de informacin en sistemas Unix, hay que indicar que se organizan en un nico rbol de
directorios. Cada soporte, disco, particin, disquete o CD tiene su propia organizacin
lgica, un sistema de ficheros. Para poder usar uno de estos soportes tenemos que
"montarlo" en un directorio existente. El contenido de la particin nos aparecer como el
contenido del directorio.
Un primer criterio para mantener un sistema seguro sera hacer una correcta distribucin
del espacio de almacenamiento. Esto limita el riesgo de que el deterioro de una particin
afecte a todo el sistema. La prdida se limitara al contenido de esa particin. No hay unas
normas generales aplicables; el uso al que vaya destinado el sistema y la experiencia son las
bases de la decisin adecuada, aunque s podemos dar algn consejo:
Algunos directorios son necesarios en la particin raz. Contienen datos que son
necesarios durante el proceso de arranque del sistema. Son /dev/, /etc, /bin,
/sbin, /lib, /boot.
Permisos
en el servidor; pues bien, si este fichero tiene permiso de lectura para otro usuario que no
sea el propietario, fetchmail no funcionar.
Otras aplicaciones, como por ejemplo inn (un servidor de noticias de Internet) tampoco
funcionar si el propietario de sus ficheros es otro usuario distinto a news. Todo esto est
perfectamente documentado en cada uno de los programas, por lo que es conveniente leer
la documentacin que aporta y las pginas del manual.
Permisos de ficheros y directorios
Como decamos anteriormente, tenemos que asegurarnos de que los ficheros del sistema y
los de cada usuario slo son accesibles por quienes tienen que hacerlo y de la forma que
deben. No slo hay que protegerse de ataques o miradas indiscretas, tambin hay que
protegerse de acciones accidentales.
En general, cualquier sistema UNIX divide el control de acceso a ficheros y directorios en
tres elementos: propietario, grupo y otros. Tanto el propietario como el grupo sn
nicos para cada fichero o directorio. Eso s, a un grupo pueden pertenecer mltiples
usuarios. Otros hace referencia a los usuarios que ni son el propietario ni pertenecen al
grupo.
Todas estas caractersticas se almacenan en el sistema de ficheros, en particular en un inodo, que es un elemento que describe las caractersticas de un fichero en disco (salvo su
nombre).
Una rpida explicacin de los permisos Unix:
Propiedad:
Qu usuario y grupo posee el control de los permisos del i-nodo. Se
almacenan como dos valores numricos, el uid (user id) y gid (group id).
Permisos:
Bits individuales que definen el acceso a un fichero o directorio. Los
permisos para directorio tienen un sentido diferente a los permisos para
ficheros. Ms abajo se explican algunas diferencias.
Lectura (r):
o
Escritura (w):
Ejecucin(x):
o
Nota:
Tenga mucho cuidado con aquellos directorios que tengan permiso de
escritura. Cualquiera podra borrar un fichero, aunque no sea de su
propiedad y esto puede ser un riesgo, tanto para el sistema como para
los datos de los usuarios.
Adems tenemos otros bits de permisos que no podemos pasar por alto cuando estamos
tratando de temas de seguridad.
Sticky bit:
El sticky bit tiene su significado propio cuando se aplica a directorios. Si
el sticky bit est activo en un directorio, entonces un usuario slo puede
borrar ficheros que son de su propiedad o para los que tiene permiso
explcito de escritura, incluso cuando tiene acceso de escritura al
directorio. Esto est pensado para directorios como /tmp, que tienen
permiso de escritura global, pero no es deseable permitir a cualquier
usuario borrar los ficheros que quiera. El sticky bit aparece como 't' en
los listados largos de directorios.
drwxrwxrwt 19 root root 8192 Jun 24 14:40 tmp
pero segn los permisos que observamos en este fichero, slo root puede escribir y
modificar en l. Entonces sera imposible que un usuario pudiera cambiar su clave si
no puede modificar este fichero. La solucin para este problema consiste en activar
el bit SUID para este fichero:
-r-s--x--x 1 root root 10704 Apr 14 23:21 /usr/bin/passwd
leer los
rutas de
propietario.
acceso de
Los ficheros de configuracin del sistema (normalmente en /etc) es habitual que tengan el
modo 640 (-rw-r-----), y que sean propiedad del root. Dependiendo de los requisitos de
seguridad del sistema, esto se puede modificar. Nunca deje un fichero del sistema con
permiso de escritura para un grupo o para otros. Algunos ficheros de configuracin,
incluyendo /etc/shadow, slo deberan tener permiso de lectura por root, y los directorios de
/etc no deberan ser accesibles, al menos por otros.
SUID Shell Scripts
Los scripts de shell SUID son un serio riesgo de seguridad, y por esta
razn el ncleo no los acepta. Sin importar lo seguro que piense que es
su script de shell, puede ser utilizado para que un cracker pueda obtener
acceso a una shell de root.
Enlaces
Los sistemas de ficheros de tipo Unix permiten crear enlaces entre ficheros. Los enlaces
pueden ser duros o simblicos.
El primer caso consiste en asignar ms de un nombre a los mismos datos en disco. Un
enlace duro no consume ms espacio adicional que el que pueda representar el nuevo
nombre que le damos a unos datos y slo es vlido para ficheros que estn en el mismo
sistema de ficheros, es decir, la misma particin. Los enlaces simblicos son ficheros que
apuntan a otro fichero o directorio. Crean un nuevo fichero pequeo que contiene la ruta del
fichero destino.
Una forma cmoda de detectar ataques locales (y tambin de red) en su sistema es ejecutar
un programa que verifique la integridad de la informacin almacenada en los ficheros, tal
como Tripwire. El programa Tripwire ejecuta varios cheksums de todos los binarios
importantes y ficheros de configuracin y los compara con una base de datos con valores de
referencia aceptados como buenos. As se detecta cualquier cambio en los ficheros.
Es buena idea instalar tripwire en un disquete y protegerlo fsicamente. De esta forma no se
puede alterar tripwire o modificar su base de datos. Una vez que tripwire se ha configurado,
es buena idea ejecutarlo como parte de de los deberes habituales de administracin para ver
si algo ha cambiado.
Incluso puede aadir una entrada a crontab para ejecutar tripwire desde su disquete todas
las noches y enviar por correo los resultados y verlos por la maana, algo como esto:
MAILTO=gonzalo
15 05 * * * root /usr/local/bin/tripwire
que le enviar por correo un informe cada maana a las 5:15 am.
Tripwire puede ser una de la mejores herramientas para detectar intrusos antes de que tenga
otro tipo de noticias de ellos. Como son muchos los ficheros que se modifican en su
sistema, debera tener cuidado para discernir lo que es la actividad de un cracker y lo que es
la activiadad normal del sistema.
Limitar el espacio asignado a los usuarios
Una ataque posible a cualquier sistema es intentar consumir todo el espacio del disco duro.
Una primera proteccin contra este ataque es separar el rbol de directorios en diversos
discos y particiones. Pero esto puede no ser suficiente y por eso el ncleo del sistema
proporciona la posibilidad de controlar el espacio de almacenamiento por usuario o grupo.
Lo primero que tendramos que hacer es asegurarnos de que nuestro ncleo tiene soporte
para las cuotas de usuarios.
# dmesg | grep quotas
VFS: Diskquotas version dquot_6.4.0 initialized
En caso contrario, el ncleo no ha sido compilado con soporte para el sistema de cuotas
para usuarios. En este caso ser necesario compilar un nuevo ncleo Linux.
El resto del procedimiento de instalacin se puede realizar utilizando la documentacin
existente.
Ahora es necesario editar el fichero /etc/fstab y aadir usrquota o grpquota en la
particin o particiones en las que nos interese limitar el espacio de almacenamiento.
El siguiente ejemplo establece el sistema de cuotas para el uso del directorio /home
montado en la particin /dev/hda3:
/dev/hda3 /home ext2 defaults,usrquota 1 2
Ya est activo el sistema de cuotas y la prxima vez que se inicie el sistema, se activarn
automticamente en todas las particiones que se hayan definido. Ya no ser necesario
volver a ejecutar manualmente este comando, ya que el sistema lo hara de forma
automtica al comprobar y montar cada uno de los sistemas de ficheros desde el fichero
/etc/rc.d/rc.sysinit. El siguiente paso es definir la cuotas para cada usuario. Para ello
existen dos mtodos.
El primero consiste en editar la quota de cada usuario. Por ejemplo, para editar la cuota del
usuario antonio, se ejecuta desde el usuario root el comando:
# edquota -u antonio
Quotas for user antonio:
/dev/hda3: blocks in use:15542,limits (soft=0,hard=0)
inodes in use: 2139, limits (soft = 0, hard = 0)
De una forma anloga, podramos modificar la cuota de espacio asignada al grupo users
con:
# edquota -g users
Aunque sea necesario tener claros los conceptos y dedicarle algo de tiempo a una correcta
planificacin, tampoco los pelligros expuestos tienen por qu asustar a nadie. Todas las
distribuciones de Linux traen unos valores por defecto que son ms que razonables para
cubrir unas necesidades normales.
umask
Configure la mscara de creacin de ficheros para que sea lo ms restrictiva posible.
Son habituales 022, 033, y la ms restictiva 077, y aadirla a /etc/profile.
El comando umask se puede usar para determinar el modo de creacin de ficheros
por defecto en su sistema. Es el complemento octal a los modos de fichero deseado.
Si los ficheros se crean sin ningn miramiento de estado de permisos, el usuario, de
forma inadvertida, podr asignar permisos de lectura o escritura a alguien que no
debera tenerlos. De forma tpica, el estado de umask incluye 022, 027 y 077, que es
lo ms restrictivo. Normalmente umask se pone en /etc/profile y por tanto se aplica a
todos los usuarios del sistema. Por ejemplo, puede tener una lnea parecida a la
siguiente:
# Pone el valor por defecto de umask del usuario
umask 033
Est seguro de que el valor umask de root es 077, lo cual desactiva los permisos de
lectura, escritura y ejecucin para otros usuarios, salvo que explcitamente use
chmod(1).
Si est usando , y utiliza su esquema de creacin de idetificador de grupos y
usuarios (User Private Groups), slo es necesario usar 002 para umask. Esto se debe
a que al crear un usuario se crea un grupo exclusivo para ese usuario.
Limitar recursos
Ponga el lmites al sistema de ficheros en lugar de 'ilimitado' como est por defecto.
Puede controlar el lmite por usuario utilizando el mdulo PAM de lmite de
recursos y /etc/pam.d/limits.conf. Por ejemplo, los lmites para un grupo `users'
podra parecer a esto:
@users hard core 0
@users hard nproc 50
@users hard rss 5000
wtmp, utmp
Los ficheros /var/log/wtmp y /var/run/utmp contienen los registros de conexin
de todos los usuarios de su sistema. Se debe mantener su integridad, ya que
determinan cundo y desde dnde entr en su sistema un usuario o un potencial
intruso. Los ficheros deberan tener los permisos 644, sin afectar a la normal
operacin del sistema.
Sticky bit
El sticky bit se puede usar para prevenir borrados accidentales o proteger un
fichero para sobreescritura. Tambin previene que alguien cree enlaces simblicos a
un fichero, que ha sido el origen de ataques basados en el borrado de los ficheros
/etc/passwd o /etc/shadow. Vea la pgina del manual de chattr(1) para tener
ms informacin.
SUID y SGID
Los ficheros SUID y SGID de su sistema son potenciales riesgos de seguridad y
deberan ser controlados. Como estos programas garantizan privilegios especiales al
usuario que los ejecuta, es necesario estar seguro que no hay instalados programas
inseguros. Un truco favorito de los crackers es explotar programas con el bit SUID,
y entonces dejar un programa SUID como puerta trasera para entrar la prxima vez,
incluso aunque el agujero original ya est tapado.
Puede eliminar los permisos SUID o SGIG de un programa con chmod(1), y siempre
puede devolverlo a su estado original si piensa que es absolutamente necesario.
Permisos de escritura
Los ficheros con permiso de escritura global, particularmente los del sistema,
pueden ser un agujero de seguridad si un cracker obtiene acceso a su sistema y los
modifica. Adems, los directorios con permiso de escritura global son peligrosos, ya
que permiten a un cracker aadir y borrar los ficheros que quiera. Para localizar los
ficheros con permiso de escritura global, use el siguiente comando:
root# find / -perm -2 -print
y est seguro de saber por qu tienen esos permisos de escritura. En el curso normal
de una operacin los ficheros tendrn permisos de escritura, incluidos algunos de
/dev y enlaces simblicos.
Ficheros extraos
Los ficheros sin propietario tambin pueden ser un indicio de que un intruso ha
accedido a su sistema. Puede localizar los ficheros de su sistema que no tienen
propietario o que no pertenecen a un grupo con el comando:
root# find / -nouser -o -nogroup -print
Ficheros peligrosos
La localizacin de ficheros .rhosts debera ser uno de los deberes regulares de la
administracin de su sistema, ya que estos ficheros no se deberan permitir en sus
sistema. Recuerde que un cracker slo necesita una cuenta insegura para
potencialmente obtener acceso a toda su red. Puede localizar todos los ficheros
.rhosts de su sistema con el siguiente comando:
root# find /home -name .rhosts -print
Permisos
Finalmente, antes de cambiar permisos en cualquier sistema de ficheros, est seguro
de que entiende lo que hace. Nunca cambie permisos de un fichero simplemente
porque parezca la forma fcil de hacer que algo funcione. Siempre debe determinar
porqu el fichero tiene esos permisos y propietario antes de modificarlos.
Linux tiene la gran ventaja de tener disponible el cdigo fuente del ncleo; en realidad
Linux propiamente dicho es slo el ncleo. Esto nos permite la posibilidad de crear ncleos
a medida de nuestras necesidades. Y parte de nuestras necesidades ser la mejora de la
seguridad.
Para compilar el ncleo primero tendremos que configurar las opciones que nos interesen.
Los fuentes del ncleo se guardan habitualmente en el directorio /usr/src/linux, y una vez
situados en l, tendremos que ejecutar make menuconfig (o make xconfig si estamos en
modo grfico). As nos aparecen todas las opciones de configuracin. Dentro de ellas nos
vamos a fijar en las que estn relacionadas con la seguridad, viendo una breve explicacin
de lo que hacen y cmo se usan.
Como el ncleo controla las caractersticas de red de su sistema, es importante que el
ncleo tenga las opciones que garanticen la seguridad y que el propio ncleo no pueda ser
comprometido. Para prevenir algunos de los ltimos ataques de red, debe intentar mantener
una versin del ncleo actualizada. Puede encontrar las nuevas versiones del ncleo en The
Linux Kernel Archives.
Una de las caractersticas ms interesantes del ncleo Linux es la posibilidad de realizar
enmascaramiento de direcciones. Con esta tcnica podremos dar acceso a Internet a una red
local con direcciones privadas de forma transparente, es decir, sin ningn tipo de
modificacin en la configuracin de las aplicaciones clientes, a diferencia de los proxies
clsicos. Consiste en que el sistema Linux que posee la conexin hacia el exterior recibe las
peticiones de conexin desde los equipos de la red local que tienen direcciones no vlidas
para Internet. El equipo Linux rehace la peticin poniendo su propia direccin IP y
modificando el puerto al que tiene que responder el equipo remoto. Cuando Linux recibe la
respuesta del equipo remoto, mira el puerto al que va destinado y vuelve a rehacer el
paquete para enviarlo al equipo concreto de la red local que solicit la conexin. De esta
forma podemos mantener un nivel aceptable de proteccin para los equipos de la red local,
ya que slo podrn recibir respuestas a peticiones que ellos mismos originaron.
Opciones de compilacin del ncleo
IP: Drop source routed frames (CONFIG_IP_NOSR)
Esta opcin debera estar activada. Source routed frames contienen la ruta completa de sus
destinos dentro del paquete. Esto significa que los enrutadores a travs de los que circula el
paquete no necesitan inspeccionarlo, y slo lo reenvan. Esto podra ocasionar que los datos
que entran a su sistema puedan ser un exploit potencial.
IP: Firewalling (CONFIG_IP_FIREWALL)
Ese fichero (y muchos otros ficheros de /proc) aparecer con longitud cero, pero en
realidad no es un fichero en el sentido clsico, sino que son datos guardados en memoria.
IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE)
Esta opcin le suministra informacin sobre los paquetes que su cortafuegos recibe, como
remitente, destinatario, puerto, etc. As podremos rastrear los orgenes de los posibles
intentos de ataque.
Generalmente esta opcin est desactivada, pero si est construyendo un host cortafuegos o
para enmascaramiento, deber activarla. Cuando se envan paquetes de un host a otro, no
siempre se envan como simples paquetes de datos, sino que se fragmentan en varios trozos.
El problema es que los nmeros de puerto slo se almacenan en el primer fragmento. Esto
significa que alguien puede insertar informacin en el resto de los paquetes para su
conexin que se supone que no deberan estar all.
IP: syn cookies (CONFIG_SYN_COOKIES)
Esto imprimir seis caracteres aleatorios en la consola, vlidos para la generacin de una
clave.
Seguridad de Red
Para atender las solicitudes de conexin que llegan a nuestro equipo existe un demonio
llamado inetd que est a la escucha de todos los intentos de conexin que se realicen a su
mquina. Cuando le llega una solicitud de conexin ir dirigida a un puerto (nmero de
servicio, quizs sea ms claro que puerto), por ejemplo, el 80 sera una solicitud al servidor
de pginas web, 23 para telnet, 25 para smtp, etc. Los servicios de red que presta su
mquina estn descritos en /etc/inetd.conf (y en /etc/services los nmeros de
puertos). Por ejemplo, en /etc/inetd.conf podemos encontrar las siguientes lneas:
(...)
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
# imap stream tcp nowait root /usr/sbin/tcpd imapd
(...)
Esto quiere decir que, cuando llegue una solicitud de conexin al puerto 110 (pop3) se
ejecutar el programa /usr/sbin/tcpd ipop3d. Sin embargo, el servicio imap est
deshabilitado (est comentado con un # delante), por lo que el sistema no le responde.
TCP Wrapper
poniendo la anterior lnea en el fichero /etc/ppp/ip-up (y ipchains -F input en ipdown) estaramos aadiendo (-A) un filtro de entrada (input), que deniega (-j DENY) desde
cualquier sitio de internet (-s 0/0) dirigidas a nuestro equipo (-d $4/32) al puerto telnet
(23) por tcp (-p tcp) que lleguen desde internet (en este caso -i ppp0) y que adems las
anote en el registro de incidencias (-l) ($4 es la direccin IP que obtenemos
dinmicamente).
El mecanismo de filtrado de conexiones se realiza en el ncleo del sistema operativo y si ha
sido compilado con estas opciones. Normalmente lo est. Este filtrado se realiza a nivel de
red y transporte: cuando llega un paquete por un interfaz de red se analiza siguiendo los
filtros de entrada. Este paquete puede ser aceptado, denegado o rechazado, en este ltimo
caso se avisa al remitente. Si los filtros de entrada aceptan el paquete, pasa al sistema si era
su destino final o pasa por los filtros de reenvo o enmascaramiento, donde se vuelve a
repetir una de las acciones. Por ltimo, los paquetes que proceden del propio sistema o los
que han sido aceptados por los filtros de reenvo o enmascaramiento pasan al filtro de
salida. En cualesquiera de estos filtros se puede indicar que lo anote en el registro de
incidencias.
Registro y conocimiento de incidencias
A parte de todo esto, puede conocer las incidencias que ocurren durante el funcionamiento
del sistema. Por un lado conviene familiarizarse con los procesos que se ejecutan
habitualmente en una mquina. Es una buena costumbre ejecutar peridicamente ps axu.
Cualquier cosa extraa debiramos aclararla. Puede matar cualquier proceso con la orden
kill -9 pid (o killall -9 nombre_proceso). Pero en caso de ataque activo, lo mejor
es desconectar de la red inmediatamente, si es posible, claro est.
Despus tenemos los registros de incidencias (las ubicaciones pueden ser diferentes
dependiendo del sistema, pero no radicalmente distintas) de /var/log.
Trabajando en modo texto se puede hacer en una consola virtual (como root)
tail -f /var/log/messages
y
tail -f /var/log/secure
y de esta forma podemos ir viendo las incidencias del sistema. Conviene tambin
familiarizarse con las anotaciones que aparecen habitualmente para diferenciarlas de las
que puedan presentar un problema.
En modo grfico hay un programa llamado ktail que le muestra las incidencias de una
forma similar a la anterior.
Comunicaciones seguras
Por ltimo, nos interesar mantener unas comunicaciones seguras para garantizar la
privacidad e integridad de la informacin. Actualmente existen las herramientas necesarias
para cada necesidad.
Podemos usar cifrados simtricos como pgp y gpg para documentos, correo electrnico y
comunicaciones sobre canales inseguros
Podemos crear canales de comunicacin seguros de distinto tipo:
SSH (Secure Shell), stelnet: SSH y stelnet son programas que le permiten efectuar
conexiones con sistemas remotos y mantener una conexin cifrada. Con esto
evitamos, entre otras cosas, que las claves circulen por la red sin cifrar.
Cryptographic IP Encapsulation (CIPE): CIPE cifra los datos a nivel de red. El viaje
de los paquetes entre hosts se hace cifrado. A diferencia de SSH que cifra los datos
por conexin, lo hace a nivel de socket. As un conexin lgica entre programas que
se ejecutan en hosts diferentes est cifrada. CIPE se puede usar en tunnelling para
crear una Red Virtual Privada. El cifrado a bajo nivel tiene la ventaja de poder hacer
trabajar la red de forma transparente entre las dos redes conectadas en la RVP sin
ningn cambio en el software de aplicacin.
SSL: o Secure Sockets Layer, fue diseado y propuesto en 1994 por Netscape
Communications Corporation junto con su primera versin del Navigator como un
protocolo para dotar de seguridad a las sesiones de navegacin a travs de Internet.
Sin embargo, no fue hasta su tercera versin, conocida como SSL v3.0 que alcanz
su madurez, superando los problemas de seguridad y las limitaciones de sus
predecesores. En su estado actual proporciona los siguientes servicios:
o Cifrado de datos: la informacin transferida, aunque caiga en manos de un
atacante, ser indescifrable, garantizando as la confidencialidad.
o Autenticacin de servidores: el usuario puede asegurarse de la identidad del
servidor al que se conecta y al que posiblemente enve informacin personal
confidencial.
o Integridad de mensajes: se impide que modificaciones intencionadas o
accidentales en la informacin mientras viaja por Internet pasen
inadvertidas.
o Opcionalmente, autenticacin de cliente: permite al servidor conocer la
identidad del usuario, con el fin de decidir si puede acceder a ciertas reas
protegidas.
Consejos finales
Limite las acciones que realice como root al mnimo imprescindible, y sobre todo no
ejecute programas desconocidos. Por ejemplo, en un juego (el quake) que distribua una
revista haba un programa llamado runme que enviaba por mail las caractersticas de la
mquina a una direccin de correo. En este caso se trataba de un troyano inofensivo, pero
ofrece una idea de lo que puede hacer un programa ejecutado sin saberse lo que hace.
Linux tambin tiene la posibilidad de proporcionar acceso transparente a Internet a una red
local mediante IP masquerade. En este caso, si usamos direcciones de red privadas, nos
aseguramos que los equipos de la red interna no son accesibles desde Internet si no es a
travs del equipo Linux.
Tambin podemos instalar un servidor proxy con cach, que a la vez que acta de filtro de
conexiones a nivel de aplicacin, puede acelerar el acceso a servicios desde la red local.
Seguridad del Root
Introduccin
A menudo, el mayor enemigo del sistema es el propio administrador del sistema, s, tiene
todos los privilegios y cualquier accin puede ser irreversible y hacerle perder
posteriormente mucho ms tiempo que el que hubiera perdido por realizar las tareas de
forma segura. Puede borrar cualquier fichero e incluso destruir el propio sistema, mientras
que un usuario normal slo puede perjudicarse a s mismo. Por estos motivos, conseguir
privilegios de root es la meta de cualquier ataque.
Tampoco hay que alarmarse. Piense que en un sistema operativo monousuario cualquiera
podra darle formato al disco duro y perder toda la informacin almacenada o borrar
cuaquier fichero necesario para el funcionamiento del sistema. En un sistema estilo Unix,
como Linux, esto slo lo podra hacer el usuario root.
Hbitos seguros
La seguridad del administrador es simple, en mayor medida consiste en tener unos hbitos
seguros y tambin en utilizar herramientas seguras.
Una primera norma que siempre debera tener presente es usar la cuenta de root slo para
realizar tareas concretas y breves y el resto hacerlo como usuario normal. Es una costumbre
muy peligrosa usar todo el tiempo la cuenta de root. Al principio, a los usuarios de Linux
les gusta sentir todo el poder de la cuenta de root, les molesta que su propio sistema les
deniegue el permiso para hacer algo, pero van cambiando de opinin poco a poco,
conforme se van familiarizando con el sistema o cuando han realizado un destrozo de esos
que nos hacen proferir insultos contra nosotros mismos acompaados de un desesperado
puetazo en la mesa (o en el teclado). Piense que cuando el sistema le deniega alguna
operacin es porque puede conllevar algn riesgo. El sistema le avisa para que piense dos
veces lo que est haciendo.
En los casos de tareas que necesiten privilegios de administrador para realizar una
operacin concreta, podemos usar la orden su (Super Usuario) o tambin sudo. De esta
forma podremos acceder a los privilegios de root slo cuando nos interese.
Consejos
Asegrese de que en los borrados de ficheros por parte del root se pide
confirmacin. Esto lo puede hacer poniendo alias rm="rm -i". Esto es lo habitual
para el root. Si en alguna ocasin tiene que borrar muchos ficheros y no quiere
confirmar cada uno de ellos, puede usar la opcin -f para no pedir confirmacin,
deshacer el alias con alias rm=rm o bien usando la orden yes, poniendo yes|
rm ficheros para ir confirmando automticamente cada una de las preguntas de la
orden.
Procure prever los resultados de una orden, sobre todo si usa comodines,
intentndolo antes una forma no irreversible. Por ejemplo, si quiere borrar todos los
ficheros terminados en ~ ejecute primero ls -la *~ y una vez que haya
verificado a qu va a afectar la orden, ejecute rm *~.
Limite las ubicaciones desde donde alguien se puede conectar como root al sistema.
En el fichero /etc/securetty puede especificar la lista de terminales desde las cuales
se puede conectar el root. Las teminales predeterminadas para conectarse como root
slo incluyen las consolas virtuales (vtys). Si tuviera que conectarse como root
desde una ubicacin distinta a la consola, hgalo como usuario normal primero y
luego utilice su para acceder a los privilegios de root. De esta forma un posible
atacante tendra que conocer el nombre de un usuario del sistema, conocer su clave
y tambin conocer la clave del root. Esto pone ms dificultades para obtener
privilegios remotos en su sistema.
Evite siempre dar la clave de root, no lo haga bajo ningn concepto por mucha
confianza que tenga con esa persona. Si tiene que otorgar privilegios a algn usuario
para realizar alguna tarea de administracin, como montar un CD u otro dispositivo
similar, utilice sudo para permitirlo con la propia clave del usuario. As puede
decidir qu usuario tiene acceso a una determinada orden.
Desactive todos los servicios que no vaya a prestar, en particular revise los ficheros
/etc/inittab, /etc/inetd.conf y los demonios que se lanzan durante el arranque. Si no est
realmente seguro de lo que hace, mejor no haga nada; las distribuciones ms modernas
incorporan unos mnimos de seguridad aceptables para un usuario medio.
No tiene sentido tener abierto un servicio del que no va a hacer uso ningn usuario legal.
Puede que est consumiendo recursos de su sistema para ofrecer a algn atacante la
posibilidad de violarlo.
Puede usar un analizador de puertos para ver qu parte de su sistema es visible desde el
exterior. Existen utilidades como SATAN, Nessus o nmap que realizan esta labor.
Trinux es una minidistribucin de Linux totalmente portable que se puede llevar en 2 3
disquetes y se ejecuta por completo en RAM, puedindose usar desde cualquier equipo para
la red. Se arranca desde el disquete y no utiliza el disco duro para nada. Contiene las
ltimas versiones de algunas herramientas muy prcticas enfocadas a la seguridad en redes.
Nos permitir analizar el trfico de la red, analizar puertos e incluso ver el contenido de los
paquetes que circulan por la red.
Proteger los ficheros importantes
Existe un parche para el ncleo Linux que impide que ciertos ficheros puedan ser
modificados, incluso por el propio root. El ncleo parcheado de esta forma puede
garantizarnos la integridad de la informacin almacenada incluso en el caso de que alguien
consiguiera privilegios de root en nuestro sistema. Este parche se puede obtener, junto con
la informacin necesaria para su instalacin, en LIDS.
Si no queremos aplicar el parche, s que deberamos vigilar los permisos de ficheros y
directorios.
Software actualizado
La gran mayora del sofware que acompaa a Linux es de cdigo fuente pblico, como el
propio ncleo. Esto es una garanta de seguridad en s. Cientos de expertos analizan
minuciosamente el cdigo para detectar alguna pega que poder publicar en las listas de
correo sobre seguridad ms prestigiosas, y se corrigen con gran rapidez. De esta forma nos
garantizamos un software de calidad y no una mera seguridad aparente. Esto por otro lado
nos obliga a ir sustituyendo las versiones defectuosas por otras corregidas y que mejoran las
Existen acontecimientos de los que nos puede resultar muy difcil protegernos como son los
desastres naturales, nicamente podremos seguir una serie de pasos para evitar que su
incidencia sea lo menor posible. La mejor solucin es mantener un buen conjunto de copias
de seguridad sobre toda la informacin necesaria del sistema. Hay que pensar que las
copias de seguridad no slo nos protegen de desastres naturales, tambin de los desastres
que pueda ocasionar algn intruso en nuestro sistema, de cualquier ataque a la
disponibilidad o integridad de la informacin del sistema.
Si los datos tienen un tamao inferior a 650Mb, puede ser una buena opcin grabarlos en
un CD, bien permanente (ya que es ms difcil de falsificar con posterioridad, y si estn
almacenados de forma adecuada pueden durar mucho tiempo) o regrabable. Las cintas y
otros medios sobre los que se puede escribir deberan protegerse tan pronto como se
completa la copia y se verifica para evitar la falsificacin. Tenga cuidado y almacene su
copia de seguridad en un sitio seguro. Una buena copia de seguridad le asegura que tiene un
buen punto desde el que restaurar su sistema.
Hay que insistir en la seguridad de las copias de seguridad. Si las copias de seguridad no
estn almacenadas en un sitio seguro, puede que el posible intruso no tenga necesidad de
idear mtodos sofisticados para obtenerla, si le basta con copiar o sustraer un CD.
Caractersticas de las copias de seguridad
algn cambio importante o aade datos importantes a su sistema tambin sera adecuado
efectuar una copia.
Copiar las Bases de Datos del Sistema
Instalar cortafuegos.
En resumen
Ahora, una vez vistas las caractersticas generales de seguridad, lo que queda es aplicar el
sentido comn. Tenemos que ver nuestra situacin y respondernos a una serie de preguntas:
Qu queremos proteger?
Ahora vamos a ver qu se puede hacer en caso de haber sufrido o estar sufriendo un ataque.
No es una situacin agradable, y aunque siempre sera preferible que no hubiera sucedido,
conviene tener en mente una serie de normas que nos permitan una actuacin rpida y
certera que disminuya las consecuencias del incidente. Como norma general hay que
conservar la calma. No conviene tomar medidas apresuradas que puedan aumentar el
impacto del ataque.
Vamos a distinguir una serie de situaciones posibles y cmo se debe actuar. Una vez visto
esto nos queda aplicar el sentido comn.
Deteccin de un ataque activo
Nos ponemos en situacin: acabamos de detectar un ataque que est actualmente en curso.
El ataque puede ser de diversa naturaleza. Dejaremos aparte los casos genricos como
detectar alguien manipulando fsicamente el ordenador.
Ataque local
Cuando detectamos un ataque local tendremos que verificar la identidad del atacante. No
conviene sacar conclusiones precipitadas y culpar a alguien de atacar el sistema cuando
slo puede que sea una negligencia a la hora de seleccionar una clave o abandonar abierta
una consola.
Hay que verificar el origen de la conexin, los registros del sistema y los procesos que tiene
activos. Tendremos que comprobar si son los habituales y qu es lo que se sale de lo
normal. Despus nos dirigiremos a esa persona, por telfono o personalmente, para
preguntar qu est haciendo y pedir que cese en la actividad. Si no tiene una conexin
activa y no tiene idea de lo que le estamos diciendo, habr que profundizar en la
investigacin porque cabe la posibilidad de que alguien haya utilizado esa cuenta de forma
ilegtima. Si reconoce el incidente, que le informe de los mecanismos que ha utilizado, las
acciones que ha realizado y acte en consecuencia.
Nunca se precipite para hacer acusaciones. Recopile todas las pruebas que haya detectado
en los registros, procesos, modificaciones de informacin, etc. Sea rpido, pero seguro. Est
en juego su sistema y su prestigio.
Ataque en red
direccin el intruso lo podra interpretar como un error de red, ms que una deteccin del
ataque. Si no se pudiera limitar el acceso a las direcciones que usa el intruso, intente cerrar
la cuenta del usuario. Observe que cerrar una cuenta no es una cosa simple. Tiene que tener
en cuenta los ficheros .rhosts, el acceso FTP y otras posibles puertas traseras.
En general no es aconsejable apagar el sistema. Por supuesto, nunca apagarlo en caliente;
esto podra hacernos perder la informacin que tenemos en memoria. En Linux podemos
ver la lista de procesos que hay en ejecucin y matar aquellos que puedan estar daando al
sistema.
Somos el destino del ataque o somos un punto intermedio?
Se puede dar la situacin que nuestra mquina no sea el destino final del ataque. Puede que
el intruso la haya utilizado como punto intermedio para atacar a otros sistemas e intentar
dificultar el seguimiento de las pistas. En este caso, adems de limitar las acciones del
atacante deberamos notificarlo al administrador del destino del ataque y conservar todas
las pruebas existentes por si se pudieran reclamar judicialmente.
En cualquier caso, si queremos dar validez legal a las pruebas obtenidas, sera conveniente
la intervencin judicial.
Es habitual que durante los prximos minutos el atacante vuelva a intentar continuar con
sus acciones, tal vez usando una cuenta diferente y/o una direccin de red distinta.
El ataque ha concluido
Determine los medios que us el atacante para acceder a su sistema. Deber analizar
cuidadosamente los ficheros de registro del sistema. En ellos debera haber una informacin
valiosa para seguir la pista de las actividades del intruso en nuestra mquina. Las causas
ms habituales son una mala configuracin de algn servicio, un programa defectuoso o la
negligencia de algn usuario con respecto a su clave de acceso.
Compruebe por los cauces ms conocidos, que se pueden consultar en la pgina sobre
recursos de seguridad bajo Linux, la existencia de algn nuevo exploit que pueda ser la
causa u otros fallos que tenga que corregir.
El siguiente paso que hay que realizar es la evaluacin de los efectos que ha tenido el
ataque. Tiene que tener en mente la naturaleza del ataque para evaluar los efectos. Si ha
sido una denegacin de servicio es probable que el atacante no haya tenido acceso a la
informacin local. Si tena instalado algn programa, estilo Tripwire, que verifica la
integridad, su trabajo ahora sera ms cmodo. En caso contrario tendr que verificar todos
sus datos importantes. Verifique las fechas de creacin de los ficheros binarios y si detecta
alguna incongruencia con la fecha de instalacin puede empezar a sospechar. Si tiene la
posibilidad, compare los tamaos de los ficheros con otro sistema limpio y por supuesto,
no trate de verificar los programas ejecutndolos como root.
Unas buena alternativa es volver a instalar el sistema. Guarde los ficheros de configuracin
para tener una funcionalidad idntica a la previa al ataque. En Linux, los ficheros de
configuracin se almacenan en modo texto por lo que no son susceptibles de contener
caballos de Troya. Eso s, debera verificar que las configuraciones son las originales y no
han sido manipuladas por el atacante. Reinstale el sistema y utilice las copias de seguridad
para reponer los datos de los usuarios.
Hay que tener especial cuidado con las copias de seguridad. Tiene que estar seguro de que
las copias de seguridad que est utilizando son previas a cualquier ataque. No se arriesgue a
restaurar unas copias de seguridad que pudieran tener algn caballo de Troya; tenga un
cuidado especial con los ficheros binarios que restaura.
Avisar
Si cree que ha sido objeto de un ataque que no est documentado, debera notificarlo a
alguna organizacin de seguridad como CERT o similar para que se pueda solucionar lo
antes posible y evitar que otros sistemas lo puedan padecer.
Y aunque sea un hecho documentado con anterioridad, no dude en pedir consulta a alguna
de la mltiples lista de correo que tratan temas de seguridad en general y de Linux en
particular. En Espaa resulta especialmente recomendada la lista CERT-ES de RedIris.
Si ha conseguido informacin sobre el atacante, se lo debera notificar al administrador del
dominio del intruso. Puede buscar este contacto con whois, con la base de datos del Internic
o en RedIris. Podra enviarles un mensaje de correo con todos los registros relacionados
con el incidente, fechas y horas. Si conoce alguna otra informacin sobre su intruso, podra
mencionarla tambin. En ciertas situaciones, tras enviar el correo podra llamar por telfono
al administrador del sistema que origin el incidente. Si el admininistrador localiza a su
atacante, podra hacerle las cosas mucho ms fciles.
Los buenos hackers con frecuencia usan sistemas intermedios. Algunos (o muchos) puede
que ni sepan que han sido comprometidos. Intentar seguir la pista de un cracker hasta su
origen puede ser difcil. Siendo educado con los administradores, le puede facilitar la
obtencin de la ayuda necesaria.
De todas formas, esperamos que la lectura de este captulo sea totalmente innecesaria, si ha
seguido unas normas adecuadas de seguridad.
Recursos
Con esta lista de recursos perseguimos dos objetivos fundamentales, tener una buena gua
para saber dnde consultar y obtener informacin, y por otro lado, obtener la informacin
sobre las novedades que van ocurriendo, nuevos fallos descubiertos, los exploits que
aparecen y los mecanismos para poderlos solucionar.
En SeguriNet se puede encontrar una traduccin en castellano de la Gua de Seguridad del
Administrador de Linux. En ella tenemos una documentacin valiosa donde completar
aspectos ms concretos, as como una buena lista de recursos.
Por otro lado en CICA tenemos la mejor lista de correo sobre seguridad en castellano que
hay sobre linux. No es un foro de discusin, no est pensada para realizar consultas, sino
para recibir de forma rpida y clara todos los avisos sobre nuevas vulnerabilidades que se
detectan en Linux, los efectos que pueden tener y cmo se pueden solucionar. No queremos
desaprovechar la oportunidad de agradecerles el trabajo que realizan. Podis suscribiros en
Caldera OpenLinux
RedHat
SuSE
Debian
Slackware
Frum Slackware
TurboLinux
Stampede GNU/Linux
Mandrake
LinuxPPC
Linux Pro
LinuxWare
MKLinux
Yggdrasil
Connectiva
DLD
Eurielec
Kheops Linux
MNIS Linux
nmap
ftpcheck, relaycheck
cheops
nessus
saint
SBScan
HUNT
Administracin
rpm
Logcheck
bgcheck
COAS
Webmin
Linuxconf
super
YaST
Cortafuegos
ipchains y otros
Servicios de Red
sendmail
apache
BIND/DHCPD/DHCPCD
secure syslog
openssl
ncftp, ncdftp
qmail
postfix
ProFTPD
rsync
PPP
Servicios de internet
CIPE
ECLiPt
SSL
SSLeay
Ftp oficial
Servicios/Cifrado de datos
CFS
Herramientas de Seguridad
audit
Kernel
stackguard
Deteccin de intrusos
port sentry
host sentry
USA - CERT
INTERNATIONAL - HERT
AUSTRALIA - AUSCERT
SINGAPORE - SINGCERT
L0pht
Root Shell
Infowar UK
buenos documentos
BRU
Quickstart
Arkeia
CTAR
CTAR:NET
Backup Professional
Aplicaciones
Varios
Wietse's
Ftp de ES-CERT
The Hacker FA
Bugtraq
First
Hacking
CPSR
Underground
Defcon