doc/es_ES.ISO8859-1/htdocs/security/security.sgml
Hiroki Sato 35babe0ae5 - Set svn:ketwords and svn:mime-type. Note that application/octet-stream is
set on some files as a workaround for binary check.
- Fix pathname for svn co in the webupdate script.

Approved by:	doceng (implicit)
2012-05-17 19:12:14 +00:00

501 lines
25 KiB
Text

<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD$">
<!ENTITY title "Informaci&oacute;n de Seguridad en FreeBSD">
<!ENTITY % navinclude.support "INCLUDE">
]>
<!-- $FreeBSD$ -->
<html>
&header;
<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> FreeBSD-current.
<LI> FreeBSD-stable, cuando hay al menos 2 releases basadas en &eacute;l.
<LI> FreeBSD-stable anterior cuando un "nuevo stable" aun no tiene
2 releases basadas en &eacute;l.
</UL>
En este momento hay disponibles security advisories para:
<UL>
<LI> FreeBSD 2.2.8
<LI> FreeBSD 3.1
<LI> FreeBSD 3.2
<LI> FreeBSD-current
<LI> FreeBSD-stable
</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:
<UL>
<LI>FreeBSD-security-notifications@FreeBSD.org
<LI>FreeBSD-security@FreeBSD.org
<LI>FreeBSD-announce@FreeBSD.org
</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;):
<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>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>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>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>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>
</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>
&footer
</body>
</html>