doc/es_ES.ISO8859-1/htdocs/security/security.sgml
Gabor Kovesdan d7f1fde5eb - Add a cvs:keyword element to store the $FreeBSD$ keyword for later
processing
- Date is now obtained from cvs:keyword, so no need for the sed magic

Approved by:	doceng (implicit)
2012-08-04 22:42:35 +00:00

506 lines
26 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/sgml/xhtml10-freebsd.dtd" [
<!ENTITY base "..">
<!ENTITY title "Informaci&oacute;n de Seguridad en FreeBSD">
]>
<!-- $FreeBSD$ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>&title;</title>
<cvs:keyword xmlns:cvs="http://www.FreeBSD.org/XML/CVS">$FreeBSD$</cvs:keyword>
</head>
<body class="navinclude.support">
<h2>Introducción</h2>
<p>El objetivo de esta p&aacute;gina es orientar a los usuarios, tanto noveles
como experimentados, en el &aacute;rea de seguridad del Sistema Operativo
FreeBSD. El equipo de Desarrollo de FreeBSD se toma la seguridad muy en
serio y trabaja constantemente para hacer el Sistema Operativo tan
seguro como sea posible.</p>
<p>Aqu&iacute; podr&aacute;s encontrar informaci&oacute;n adicional, o enlaces
a informaci&oacute;n, acerca de c&oacute;mo proteger tu sistema contra varios
tipos de ataque del exterior, con qui&eacute;n contactar si encuentra un error
de software relacionado con la seguridad, etc. Tambi&eacute;n hay una
secci&oacute;n que trata de las distintas formas en que el programador de
sistemas puede concienciarse acerca de la seguridad, de modo que sea menos
probable la introducci&oacute;n de defectos de seguridad en el software.</p>
<h2>Contenidos</h2>
<ul>
<li><a href="#sec">Informaci&oacute;n acerca del FreeBSD Security Officer</a></li>
<li><a href="#adv">FreeBSD Security Advisories</a></li>
<li><a href="#ml">Informaci&oacute;n sobre Listas de Distribuci&oacute;n sobre seguridad en FreeBSD</a></li>
<li><a href="#tat">Consejos sobre seguridad en FreeBSD</a></li>
<li><a href="#spg">Pautas para la programaci&oacute;n segura</a></li>
<li><a href="#misc">Otra informaci&oacute;n relacionada con la seguridad</a></li>
</ul>
<a name="sec"></a>
<h2>El FreeBSD Security Officer</h2>
<p>Con el objetivo de coordinar mejor el intercambio de informaci&oacute;n con
otras personas o entidades relacionadas con el &aacute;mbito de la seguridad,
FreeBSD tiene un punto focal para las comunicaciones relacionadas con la
seguridad: el FreeBSD <a href="mailto:security-officer@FreeBSD.org">security officer</a>.
El puesto est&aacute; actualmente ocupado por un equipo de security officers
dedicados, siendo sus tareas principales emitir advisories cuando hay
defectos de seguridad conocidos y actuar ante los informes de posibles
problemas de seguridad con FreeBSD.</p>
<p>Si necesitas contactar con alguien del equipo de FreeBSD acerca
de un posible error de software relacionado con la seguridad por favor
hazlo por <a href="mailto:security-officer@FreeBSD.org"> correo al
Security Officer</a>, incluyendo una descripci&oacute;n de lo que has encontrado
y el tipo de vulnerabilidad que representa. El Security Officer tambi&eacute;n
est&aacute; en contacto con los diferentes equipos <a href="http://www.cert.org">
CERT </a>y <a href="http://www.first.org/"> FIRST</a> en todo el mundo,
con los que comparte informaci&oacute;n acerca de posibles vulnerabilidades en
FreeBSD o programas de utilidad usados por FreeBSD. Los Security Officers
tambi&eacute;n son miembros activos de dichas organizaciones.</p>
<p>Si necesitas contactar con el Security Officer acera de alg&uacute;n
asunto especialmente delicado, usa su <a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/public_key.asc">
clave PGP</a> para encriptar el mensaje antes de enviarlo.</p>
<a name="adv"></a>
<h2>FreeBSD Security Advisories</h2>
<p>Los FreeBSD Security Officers proporcionan security advisories para las
releases de FreeBSD siguientes:</p>
<ul>
<li> La release oficial de FreeBSD m&aacute;s reciente.</li>
<li> FreeBSD-current.</li>
<li> FreeBSD-stable, cuando hay al menos 2 releases basadas en &eacute;l.</li>
<li> FreeBSD-stable anterior cuando un "nuevo stable" aun no tiene
2 releases basadas en &eacute;l.</li>
</ul>
En este momento hay disponibles security advisories para:
<ul>
<li> FreeBSD 2.2.8</li>
<li> FreeBSD 3.1</li>
<li> FreeBSD 3.2</li>
<li> FreeBSD-current</li>
<li> FreeBSD-stable</li>
</ul>
<p>No hay mantenimiento para releases anteriores a estas. Se recomienda
a los usuarios se actualicen a una de las releases arriba mencionadas.
</p>
<p>Como todos los esfuerzos de desarrollo, las reparaciones de seguridad
se incorporan primero en la rama
<a href="../../handbook/cutting-edge.html#CURRENT">FreeBSD-current</a>.
Despu&eacute;s de un par de d&iacute;as de prueba la reparaci&oacute;n se
incorpora en las ramas FreeBSD-stable soportadas y se emite un advisory. </p>
<p>Los advisories se env&iacute;an a las siguientes listas de
distribuci&oacute;n de FreeBSD:</p>
<ul>
<li>FreeBSD-security-notifications@FreeBSD.org</li>
<li>FreeBSD-security@FreeBSD.org</li>
<li>FreeBSD-announce@FreeBSD.org</li>
</ul>
<p>Los advisories se firman siempre usando la
<a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/public_key.asc">
clave PGP</a> del FreeBSD Security Officer y se archivan, junto con los
patches asociados, en nuestro
<a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/index.html">
repositorio FTP CERT</a>. En el momento de escribir esto est&aacute;n
disponibles los advisories siguientes:</p>
<ul>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:01.sliplogin.asc">FreeBSD-SA-96:01.sliplogin.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:02.apache.asc">FreeBSD-SA-96:02.apache.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:03.sendmail-suggestion.asc">FreeBSD-SA-96:03.sendmail-suggestion.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:08.syslog.asc">FreeBSD-SA-96:08.syslog.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:09.vfsload.asc">FreeBSD-SA-96:09.vfsload.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:10.mount_union.asc">FreeBSD-SA-96:10.mount_union.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:11.man.asc">FreeBSD-SA-96:11.man.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:12.perl.asc">FreeBSD-SA-96:12.perl.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:13.comsat.asc">FreeBSD-SA-96:13.comsat.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:14.ipfw.asc">FreeBSD-SA-96:14.ipfw.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:15.ppp.asc">FreeBSD-SA-96:15.ppp.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:16.rdist.asc">FreeBSD-SA-96:16.rdist.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:17.rzsz.asc">FreeBSD-SA-96:17.rzsz.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:18.lpr.asc">FreeBSD-SA-96:18.lpr.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:19.modstat.asc">FreeBSD-SA-96:19.modstat.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:20.stack-overflow.asc">FreeBSD-SA-96:20.stack-overflow.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:21.talkd.asc">FreeBSD-SA-96:21.talkd.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:01.setlocale">FreeBSD-SA-97:01.setlocale</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:02.lpd.asc">FreeBSD-SA-97:02.lpd.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:03.sysinstall.asc">FreeBSD-SA-97:03.sysinstall.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:04.procfs.asc">FreeBSD-SA-97:04.procfs.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:05.open.asc">FreeBSD-SA-97:05.open.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:06.f00f.asc">FreeBSD-SA-97:06.f00f.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:01.land.asc">FreeBSD-SA-98:01.land.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:02.mmap.asc">FreeBSD-SA-98:02.mmap.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:03.ttcp.asc">FreeBSD-SA-98:03.ttcp.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:04.mmap.asc">FreeBSD-SA-98:04.mmap.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:05.nfs.asc">FreeBSD-SA-98:05.nfs.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:06.icmp.asc">FreeBSD-SA-98:06.icmp.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:07.rst.asc">FreeBSD-SA-98:07.rst.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:08.fragment.asc">FreeBSD-SA-98:08.fragment.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:01.chflags.asc">FreeBSD-SA-99:01.chflags.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:02.profil.asc">FreeBSD-SA-99:02.profil.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:03.ftpd.asc">FreeBSD-SA-99:03.ftpd.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:04.core.asc">FreeBSD-SA-99:04.core.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:05.fts.asc">FreeBSD-SA-99:05.fts.asc</a></li>
<li><a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:06.amd.asc">FreeBSD-SA-99:06.amd.asc</a></li>
</ul>
<a name="ml"></a>
<h2>Informaci&oacute;n acerca de las Listas de Distribuci&oacute;n sobre
Seguridad en FreeBSD</h2>
<p>Si eres administrador o usuario de uno o m&aacute;s sistemas FreeBSD,
quiz&aacute;s quieras suscribirte a alguna de las listas siguientes:</p>
<pre>
FreeBSD-security Discusiones relacionadas con la seguridad en general
FreeBSD-security-notifications Notificaciones sobre seguridad (lista moderada)
</pre>
Envíe un mensaje a <a href="mailto:majordomo@FreeBSD.org">
majordomo@FreeBSD.ORG</a> con
<pre>
subscribe &lt;nombre_de_la_lista&gt; [&lt;direcci&oacute;n_email_opcional&gt;]
</pre>
en el cuerpo del mensaje para suscribirse.
Por ejemplo:
<pre>
% echo "subscribe FreeBSD-security" | mail majordomo@FreeBSD.org
</pre>
y si quieres desuscribirte de una lista de distribuci&oacute;n:
<pre>
% echo "unsubscribe FreeBSD-security" | mail majordomo@FreeBSD.org
</pre>
<a name="spg"></a>
<h2>Pautas para la Programaci&oacute;n Segura</h2>
<p></p><ul>
<li>Nunca te f&iacute;es de ninguna fuente de entrada, i.e. argumentos en la
l&iacute;nea de comando, variables de entorno, ficheros de
configuraci&oacute;n, paquetes TCP/UDP/ICMP entrantes, argumentos de funciones,
etc. Si la longitud o el contenido de los datos recibidos est&aacute;n
sujetos, siquiera m&iacute;nimamente, al control desde el exterior, el
programa o la funci&oacute;n deber&iacute;a tenerlo en cuenta cuando maneja
dichos datos. Podemos considerar los apartados siguientes desde el punto de
vista de la seguridad:
<p></p>
<ul>
<li>Llamadas a strcpy() y sprintf() para datos de longitud ilimitada.
Usa strncpy() y snprintf() cuando la longitud sea conocida (o implementa
algun otro m&eacute;todo de control de l&iacute;mites cuando sea desconocida).
No uses nunca gets() ni sprintf(), punto. Si lo haces, te acosar&aacute;n sin
tregua duendes malvados.<p></p></li>
<li>Si tienes que validar los datos de entrada del usuario para evitar que
contengan caracteres err&oacute;neos de cualquier clase, NO valides la presencia
de dichos caracteres err&oacute;neos. Simplemente verifica que la entrada
consiste SOLO en los caracteres permitidos. La idea es: todo lo que no
est&aacute; expl&iacute;citamente permitido est&aacute; prohibido.
<p></p></li>
<li>Lee las p&aacute;ginas del manual para las llamadas strncpy() y strncat().
Aseg&uacute;rate de entender c&oacute;mo funcionan!!! As&iacute; como
strncpy() puede no a&ntilde;adir un \0 final, strncat() s&iacute; lo
a&ntilde;ade.
<p></p></li>
<li>Vigila el abuso de strvis() y getenv(). Con strvis() es f&aacute;cil cometer
un error con la cadena de destino, y getenv() podr&iacute;a devolver cadenas
mucho m&aacute;s largas de lo que el programa espera. Estas dos funciones son,
a menudo, una de las v&iacute;as principales de ataque contra un programa,
provocando que este sobreescriba la pila o las variables al recibir variables
de entorno con valores no contemplados. Si tu programa lee variables de
entorno, se paranoico. Se muy paranoico!
<p></p></li>
<li>Cada vez que uses las llamadas open() o stat() preg&uacute;ntate: " Y si es
un enlace simb&oacute;lico ?"
<p></p></li>
<li>Aseg&uacute;rate de usar mkstemp() en lugar de mktemp(), tempnam(),
etc. Aseg&uacute;rate tambi&eacute;n de buscar problemas de acceso
concurrente en general en /tmp, teniendo en cuenta que hay muy pocas
cosas que pueden ser at&oacute;micas en /tmp:
<ul>
<li>Crear un directorio. O funciona o no funciona.</li>
<li>Abrir un fichero O_CREAT | O_EXECL</li>
</ul>
Si se usa mkstemp() la funci&oacute;n tratar&aacute; por t&iacute; estos casos
adecuadamente. De aqu&iacute; que todos los ficheros temporales
deber&iacute;an usar mkstemp() para garantizar que no se produzcan problemas
de acceso concurrente y que los permisos son correctos.
<p></p></li>
<li>Un atacante que consiga que los paquetes vayan a/vengan de un
sistema arbitrario tendr&aacute; el control completo de los datos que recibimos,
por lo tanto <b>NINGUNO</b> de estos datos ser&aacute; de fiar.
<p></p></li>
<li>Nunca d&eacute;s por hecho que un fichero de configuraci&oacute;n
estar&aacute; correctamente formateado o que habr&aacute; sido generado por
el programa de utilidad apropiado. No conf&iacute;es en que las entradas del
usuario tales como nombres de terminal o cadenas del lenguaje estar&aacute;n
libres de '/' o '../../../' si hay la m&iacute;nima posibilidad de que puedan
ser usadas en un nombre de path. No conf&iacute;es en <b>NINGUN</b> path
proporcionado por el usuario cuando el programa se ejecuta setuid root.
<p></p></li>
<li>Busca fallos o puntos d&eacute;biles en la forma de almacenar los datos.
Todos los ficheros temporales deber&iacute;an tener permisos de la forma
600 para protegerlos de ojos curiosos.
<p></p></li>
<li>No te limites a buscar con grep los sospechosos habituales en
programas que se ejecutan con privilegios elevados. Busca los
posibles desbordamientos l&iacute;nea a l&iacute;nea, hay much&iacute;simas
m&aacute;s formas de provocar un desbordamiento de memoria adem&aacute;s de
mediante el abuso de strcpy() y sus amigos.
<p></p></li>
<li>El simple hecho de restringir privilegios en alg&uacute;n punto no
significa que no haya manera de explotar el recurso en cuesti&oacute;n.
El atacante podr&iacute;a colocar el c&oacute;digo necesario en la pila para
recuperar los privilegios antes de ejecutar /bin/sh.</li></ul>
<p></p></li>
<li>Administra los uid. Elimina privilegios tan pronto como sea posible,
y elim&iacute;nalos de verdad. Cambiar entre euid y uid NO es suficiente. Usa
setuid() siempre que puedas.
<p></p></li>
<li>Nunca muestres el contenido de ficheros de configuraci&oacute;n cuando
ocurra un error. Un n&uacute;mero de l&iacute;nea y quiz&aacute;s un contador
de posici&oacute;n es suficiente.
Esto mismo es igualmente cierto para todas las librer&iacute;as y todos los
programas suid/gid.
<p></p></li>
<li>Consejos para quienes revisen c&oacute;digo existente debido a problemas de
seguridad:<p></p><ul>
<li>Si no est&aacute;s seguro de tus reparaciones de seguridad, env&iacute;alas
para ser revisadas a alguien con quien as&iacute; lo hayas acordado
previamente. No entregues c&oacute;digo del que no est&aacute;s seguro, llegar
a estropear algo en nombre de las reparaciones de seguridad resulta bastante
embarazoso.
<p></p></li>
<li>Aquellos con privilegios de entrega ("commit") para CVS deber&iacute;an
asegurarse de que alguien con dichos privilegios est&eacute; entre los
&uacute;ltimos en revisar los cambios. Dicha persona revisar&aacute; e
incorporar&aacute; la versi&oacute;n final que se desea tener en el
&aacute;rbol.
<p></p></li>
<li>Cuando distribuyas cambios para ser revisados usa siempre diffs con
formato context o unidiff. De este modo los diffs pueden ser f&aacute;cilmente
proporcionados como entrada a patch(1). No te limites a enviar los ficheros
enteros. Los diffs son m&aacute;s f&aacute;ciles de leer y aplicar al
c&oacute;digo fuente local (especialmente a aquel en el que podr&iacute;an
tener lugar m&uacute;ltiples cambios simult&aacute;neamente). Todos los cambios
deber&iacute;an referirse a la rama de desarrollo -current.
<p></p></li>
<li>Prueba tu mismo todos los cambios (i.e. compila y ejecuta el
c&oacute;digo fuente afectado) antes de enviarlos a otra persona para que los
revise. A nadie le gusta que le env&iacute;en material averiado para revisar,
y adem&aacute;s produce la impresi&oacute;n de que el remitente ni siquiera se
fij&oacute; en lo que estaba haciendo (lo que no contribuye precisamente a dar
una sensaci&oacute;n de confianza). Si necesita una cuenta en una
m&aacute;quina donde hay una versi&oacute;n espec&iacute;fica que no tienes a
mano, simplemente pregunta. El proyecto tiene recursos asignados para ese
prop&oacute;sito en concreto.
<p></p></li>
<li>Nota para los responsables de la entrega de c&oacute;digo ("commit"): no
se debe olvidar incorporar a la rama -stable los patches hechos sobre
-current, de la forma que sea adecuada.
<p></p></li>
<li>No reescribas c&oacute;digo innecesariamente para acomodarlo a tu estilo/
gustos. Esto s&oacute;lo hace el trabajo de quienes lo revisan m&aacute;s
dif&iacute;cil.
Hazlo s&oacute;lo si hay razones claras para ello.</li></ul>
<p></p></li>
<li>Busca programas que hagan cosas complicadas con los gestores de
se&ntilde;ales. Muchas rutinas en varias bibliotecas no son lo suficientemente
reentrantes como para hacerlo con seguridad.
<p></p></li>
<li>Presta especial atenci&oacute;n al uso de realloc(). Lo habitual es no
usar la funci&oacute;n correctamente.
<p></p></li>
<li>Cuando uses &aacute;reas de memoria de longitud fija use sizeof() para
evitar p&eacute;rdidas cuando se cambia el tama&ntilde;o del &aacute;rea pero
no el c&oacute;digo que la usa. Por ejemplo:
<pre>
char buf[1024];
struct foo { ... };
...
MAL:
xxx(buf, 1024)
xxx(yyy, sizeof(struct foo))
BIEN:
xxx(buf, sizeof(buf))
xxx(yyy, sizeof(yyy))
</pre>
Ten cuidado al aplicar sizeof a un puntero cuando lo que quieres es
el tama&ntilde;o del objeto referenciado!
<p></p></li>
<li>Siempre que veas "char foo[###]", comprueba cada uso de foo para
asegurarte de que no se desbordar&aacute;. Si no puedes evitar el desbordamiento
(se han dado casos), usa malloc como mal menor para ubicar el &aacute;rea de
memoria, de este modo evitar&aacute;s sobreescribir la pila.
<p></p></li>
<li>Cierra siempre los descriptores de ficheros tan pronto como puedas, lo
que har&aacute; m&aacute;s probable que los contenidos del &aacute;rea de
memoria de entrada de stdio() sean desechados. En rutinas de biblioteca,
dispon siempre los descriptores de ficheros que abras de modo que se cierren
tras lanzar con &eacute;xito otro proceso.
<p></p></li>
</ul>
<a name="tat"></a>
<h2>Consejos sobre seguridad en FreeBSD</h2>
<p>Se deben ejecutar varios pasos para hacer seguro un sistema FreeBSD
(para el caso, cualquier sistema &unix;):</p>
<ul>
<li>Inhabilitar todo software potencialmente peligroso<br/><p></p>
Gran cantidad de software debe ser ejecutado con un usuario privilegiado
especial para poder hacer uso de recursos espec&iacute;ficos, haciendo el
ejecutable set-uid. Un ejemplo es el software UUCP o PPP, que hacen uso
del puerto serie, o sendmail, que tiene que escribir en el spool de correo
y conectar con un puerto de red privilegiado. Si no usas UUCP de poco
sirve tener en su sistema el software asociado; ser&iacute;a prudente
inhabilitarlo.
Desde luego, esto requiere saber a ciencia cierta lo que puede ser eliminado
y lo que no, as&iacute; como tener claro si se va a necesitar o no dicha
funcionalidad en el futuro.<br/><p></p>
Lo mismo se puede decir de aquellos programas de utilidad que no consideres
lo bastante &uacute;tiles y que supongan un posible riesgo para la seguridad,
como swapinfo. Si elminas el bit set-uid del ejecutable (por medio del
comando "chmod ug-s nombre-de-fichero") siempre habr&aacute; la posibildad de
que el usuario root pueda usar swapinfo. Sin embargo no es una buena idea
elminar tantos sbits que se haga necesario ser root cont&iacute;nuamente.<br/><p></p>
No s&oacute;lo elimines programas que no uses, elimina tambi&eacute;n servicios
que no quieras o necesites suministrar. Esto se puede hacer editando los
ficheros <tt>/etc/inetd.conf</tt> y <tt>/etc/rc.conf</tt> e inhabilitando los
servicios que no quieras usar.<p></p></li>
<li>Reparar el software con errores que afecten a la seguridad (o c&oacute;mo
mantenerse un paso por delante de los crackers)
<br/><p></p>
Aseg&uacute;rate de suscribirte a las diferentes <a href="#ml">Listas de
ditribuci&oacute;n sobre seguridad en FreeBSD</a> para obtener actualizaciones
relacionadas con los errores que afectan a la seguridad y reparaciones.
Aplica las reparaciones inmediatamente.<p></p></li>
<li>Copias de seguridad. Repare su sistema si una violación de la seguridad
llegara a ocurrir<br/><p></p>
Disponga siempre de copias de seguridad y de una versión limpia del sistema
operativo (por ejemplo en CD-Rom). Asegúrese de que sus copias de seguridad
no contienen datos alterados o modificados por el atacante.<p></p></li>
<li>Instala software pare vigilar el estado del sistema<br/><p></p>
Programas como tcp wrappers y tripwire (ambos en packages/ports) pueden
ayudarte a monitorizar la actividad en tu sistema. Esto hace m&aacute;s
f&aacute;cil la detecci&oacute;n de irrupciones. Lee tambi&eacute;n la salida
de los scripts de /etc/security, que se ejecutan diariamente y se env&iacute;an
por correo a la cuenta root.<p></p></li>
<li>Educa a la gente que trabaja en el sistema<br/><p></p>
Los usuarios deber&iacute;an ser conscientes de lo que hacen. Deber&iacute;as
indicarles que nunca revelen su password a nadie y que usen passwords
dif&iacute;ciles de adivinar. Hazles entender que la seguridad del
sistema/de la red est&aacute; parcialmente en sus manos.<p></p></li>
</ul>
<p>Tambi&eacute;n hay un documento PASO a PASO ("HowTo") sobre seguridad en
FreeBSD disponible que proporciona algunos consejos avanzados acerca de
c&oacute;mo mejorar la seguridad de su sistema. Puede ser consultado en
<a href="http://www.FreeBSD.org/~jkb/howto.html">
http://www.FreeBSD.org/~jkb/howto.html</a>.</p>
<p>La seguridad es un proceso cont&iacute;nuo. Aseg&uacute;rate de estar al
d&iacute;a con los avances en el campo de la seguridad.</p>
<a name="misc"></a>
<h2>Qu&eacute; hacer si detectas que la seguridad ha sido comprometida</h2>
<ul>
<li><b>Determina el alcance de la violaci&oacute;n de seguridad</b><br/>
Qu&eacute; privilegios consigui&oacute; el atacante ? Consigui&oacute;
acceso de root ?
Consigui&oacute; acceso s&oacute;lo en el nivel de usuario ?</li>
<li><b>Determina si se ha alterado el estado del sistema (&aacute;mbito del
kernel o de usuario)</b><br/>
Qu&eacute; software ha sido alterado? Se instal&oacute; un nuevo kernel ?
Ha sido modificado alguno de los archivos binarios del sistema (tales como
telnetd, login, etc.) ? Si sospechas que un atacante puede haber
causado cualquier alteraci&oacute;n en un sistema operativo, podr&iacute;as
considerar conveniente reinstalar el sistema operativo desde un medio seguro.</li>
<li><b>Averigua c&oacute;mo se logr&oacute; la irrupci&oacute;n</b><br/>
Ocurri&oacute; por medio de un error de seguridad bien conocido ? Si este es
el caso, aseg&uacute;rate de instalar los patches correctos. Tuvo &eacute;xito
la irrupci&oacute;n debido a una mala configuraci&oacute;n ? Fue el resultado
de un error desconocido hasta el momento ? Si sospechas que la
irrupci&oacute;n ocurri&oacute; por medio de un error nuevo, deber&iacute;as
advertir al <a href="mailto:security-officer@FreeBSD.org"> FreeBSD Security
Officer</a>.</li>
<li><b>Repara el defecto de seguridad</b><br/>
Instala nuevo software o aplica patches al antiguo para reparar los
problemas. Inhabilita las cuentas que ya han sido comprometidas.</li>
<li><b>Otros recursos</b><br/>
<a href="http://www.cert.org">CERT</a> tambi&eacute;n ofrece
<a href="http://www.cert.org/nav/recovering.html">informaci&oacute;n detallada</a>
acerca de qu&eacute; pasos seguir en caso de que un sistema se vea comprometido.
</li>
</ul>
<h2>Otra Informaci&oacute;n Relacionada Con La Seguridad</h2>
<ul>
<li><a href="http://www.cs.purdue.edu/coast/archive/index.html">El archivo
COAST</a> contiene una vasta colecci&oacute;n de materiales relacionados con la
securidad.</li>
<li><a href="http://www.cs.purdue.edu/coast/hotlist/">La COAST Security
Hotlist</a> es el lugar donde empezar a buscar materiales relacionados con
la seguridad. Contiene cientos de enlaces &uacute;tiles. Todo lo que siempre
quiso saber sobre seguridad ... y m&aacute;s.</li>
<li>Los diferentes equipos CERT tales como <a href="http://www.cert.org">
http://www.cert.org</a> y <a href="http://www.auscert.org.au">
http://www.auscert.org.au</a>.</li>
<li>Listas de distribuci&oacute;n como <a href="http://www.ecurityfocus.com/forums/bugtraq/intro.html">
Bugtraq</a> y <a href="http://www.nfr.net/forum/firewall-wizards.html">
Firewall Wizards</a>.</li>
</ul>
</body>
</html>