aboutsummaryrefslogtreecommitdiff
path: root/es_ES.ISO8859-1
diff options
context:
space:
mode:
authorJesus Rodriguez Cuesta <jesusr@FreeBSD.org>2005-11-12 20:32:25 +0000
committerJesus Rodriguez Cuesta <jesusr@FreeBSD.org>2005-11-12 20:32:25 +0000
commitbdcd5c76637933ec01382cfb9eef26f6b7934dc8 (patch)
tree6ecd5d15b607035fbeb98295833f0702a0d7ba5c /es_ES.ISO8859-1
parent9efc0abed58c65aa619e0e6c99b12e5be91f409e (diff)
Notes
Diffstat (limited to 'es_ES.ISO8859-1')
-rwxr-xr-xes_ES.ISO8859-1/books/handbook/advanced-networking/chapter.sgml8
-rwxr-xr-xes_ES.ISO8859-1/books/handbook/security/chapter.sgml5580
2 files changed, 5374 insertions, 214 deletions
diff --git a/es_ES.ISO8859-1/books/handbook/advanced-networking/chapter.sgml b/es_ES.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
index 8cd71b09fb..936b8a99fd 100755
--- a/es_ES.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
@@ -2091,10 +2091,10 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6...</screen>
<indexterm><primary>firewall</primary></indexterm>
<para>Si se desea utilizar el <quote>bridge</quote> como un
cortafuegos, se debe a&ntilde;adir adem&aacute;s la opci&oacute;n
- <literal>IPFIREWALL</literal>. Lea <xref
- linkend="firewalls"> para obtener informaci&oacute;n general sobre
- c&oacute;mo configurar el bridge para que act&uacute;e
- adem&aacute;s como cortafuegos.</para>
+ <literal>IPFIREWALL</literal>. Lea el cap&iacute;lo de
+ firewalls <!--<xref linkend="firewalls">--> para obtener
+ informaci&oacute;n general sobre c&oacute;mo configurar el
+ bridge para que act&uacute;e adem&aacute;s como cortafuegos.</para>
<para>Si adem&aacute;s queremos que los paquetes que no sean IP (por
ejemplo paquetes ARP) puedan atravesar el <quote>bridge</quote>
diff --git a/es_ES.ISO8859-1/books/handbook/security/chapter.sgml b/es_ES.ISO8859-1/books/handbook/security/chapter.sgml
index ce65008d95..6449c90059 100755
--- a/es_ES.ISO8859-1/books/handbook/security/chapter.sgml
+++ b/es_ES.ISO8859-1/books/handbook/security/chapter.sgml
@@ -2,7 +2,6 @@
The FreeBSD Documentation Project
$FreeBSD$
- $FreeBSDes: doc/es_ES.ISO8859-1/books/handbook/security/chapter.sgml,v 1.3 2004/08/25 18:46:11 carvay Exp $
-->
<chapter id="security">
@@ -12,27 +11,28 @@
<firstname>Matthew</firstname>
<surname>Dillon</surname>
<contrib>Gran parte de este cap&iacute;tulo ha sido
- tomado del manual de security(7) por </contrib>
+ tomado del manual de security(7) por</contrib>
</author>
</authorgroup>
- </chapterinfo>
+ </chapterinfo>
<title>Seguridad</title>
<indexterm><primary>seguridad</primary></indexterm>
<sect1 id="security-synopsis">
- <title>Sin&oacute;psis</title>
-
- <para>Este cap&iacute;tulo proveera una introducci&oacute;n b&aacute;sica
- a los conceptos de seguridad de sistema y algunos temas avanzados en
- &os;. Muchos de los temas se pueden aplicar a la seguridad del sistema
- asi como tambi&eacute;n a la de Internet en general. Internet ya no es
- un lugar <quote>amistoso</quote> en el cual cada qui&eacute;n desea ser
- un buen vecino. Asegurar su sistema es imprecindible para proteger sus
- datos, caracter&iacute;stica intelectual, tiempo, y mucho mas de las
+ <title>Sinopsis</title>
+
+ <para>Este cap&iacute;tulo brindar&aacute; una introducci&oacute;n
+ b&aacute;sica a los conceptos de seguridad de sistema y algunos temas
+ avanzados en &os;. Muchos de los temas cubiertos aqu&iacute;
+ pueden aplicarse a la seguridad del sistema asi como tambi&eacute;n
+ a la de Internet en general. Internet ya no es un lugar
+ <quote>amistoso</quote> en el cual cada qui&eacute;n desea ser un
+ buen vecino. Asegurar su sistema es imperativo para proteger sus
+ datos, propiedad intelectual, tiempo, y mucho m&aacute;s de las
manos de hackers y similares.</para>
- <para>FreeBSD proporciona un arcenal de utilidades y mecanisimos para
+ <para>FreeBSD proporciona un arsenal de utilidades y mecanismos para
asegurar la integridad y la seguridad de su sistema y red.</para>
<para>Despu&eacute;s de leer este cap&iacute;tulo, usted sabr&aacute;:
@@ -40,312 +40,5472 @@
<itemizedlist>
<listitem>
- <para>Conceptos b&aacute;sicos de seguridad, con respecto a &os;.
+ <para>Conceptos b&aacute;sicos de seguridad, con respecto a &os;.
</para>
</listitem>
<listitem>
- <para>Sobre algunos mecanisimos de encriptaci&oacute;n disponibles en
- &os;, como <acronym>DES</acronym> y <acronym>MD5</acronym>.</para>
+ <para>Acerca de varios mecanismos de encriptaci&oacute;n disponibles
+ en &os;, como <acronym>DES</acronym> y <acronym>MD5</acronym>.
+ </para>
</listitem>
<listitem>
- <para>Como instalar <application>KerberosIV</application> en versiones
- anteriores a 5.0.</para>
+ <para>Como configurar autentificaci&oacute;n de contrase&ntilde;as
+ para usar solo-una-vez.</para>
</listitem>
<listitem>
- <para>Como instalar <application>Kerberos5</application> en versiones
- posteriores a 5.0.</para>
+ <para>Como configurar <acronym>TCP</acronym> Wrappers para usar
+ con <command>inetd</command>.</para>
</listitem>
<listitem>
- <para>Como crear cortafuegos usando <acronym>IPFW</acronym>.</para>
+ <para>Como instalar <application>KerberosIV</application> en &os;
+ con versiones anteriores a 5.0.</para>
</listitem>
<listitem>
- <para>Como configurar IPsec y crear un <acronym>VPN</acronym> entre
- computadoras &os;/&windows;.</para>
+ <para>Como instalar <application>Kerberos5</application> en &os; con
+ versiones posteriores a 5.0.</para>
</listitem>
<listitem>
- <para>Como configurar y usar <acronym>OpenSSH</acronym>,
- implementaci&oacute;n de <acronym>SSH</acronym> en &os;.</para>
+ <para>Como configurar IPsec y crean una <acronym>VPN</acronym> entre
+ m&aacute;quinas &os;/&windows;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Como configurar y utilizar <application>OpenSSH</application>,
+ la implementaci&oacute;n <acronym>SSH</acronym> de &os;.</para>
</listitem>
<listitem>
- <para>Como configurar y cargar los modulos de extensi&oacute;n de
- control de acceso usando TrustedBSD <acronym>MAC</acronym>
- Framework.</para>
+ <para>Que son <acronym>ACL</acronym>s del sistema de archivos y como
+ utilizarlas.</para>
</listitem>
<listitem>
- <para>Que sistema de archivos <acronym>ACL</acronym>s son y como
- usarlos.</para>
+ <para>Como usar la utilidad <application>Portaudit</application>
+ para auditar paquetes de software de terceros instalados
+ desde la colecci&oacute;n de ports.</para>
</listitem>
<listitem>
- <para>Como utilizar las publicaciones de advertencias de seguridad en
- &os;.</para>
+ <para>Como utilizar las publicaciones de advertencias de seguridad en
+ &os;.</para>
</listitem>
+ <listitem>
+ <para>Tener una idea de lo que es contabilidad de
+ procesos y como habilitarla en &os;.</para>
+ </listitem>
</itemizedlist>
- <para>Antes de leer este cap&iacute;tulo, usted debe saber:</para>
+ <para>Antes de leer este cap&iacute;tulo, usted debe:</para>
<itemizedlist>
<listitem>
- <para>Conceptos b&aacute;sicos de &os; y el Internet.</para>
+ <para>Entender Conceptos b&aacute;sicos de &os; y el Internet.</para>
</listitem>
</itemizedlist>
-
+
+ <para>T&oacute;picos de seguridad adicionales son cubiertos a lo
+ largo de este libro. Por ejemplo, controles de acceso
+ obligatorio (Mandatory Access Control) son discutidos en <xref
+ linkend="mac"> y firewalls de internet son discutidos en el
+ cap&iacute;tulo de firewalls.
+ <!--<xref linkend="firewalls"> -->.</para>
</sect1>
<sect1 id="security-intro">
<title>Introducci&oacute;n</title>
- <para>La seguridad es una funci&oacute;n que comienza y termina con el
+ <para>La seguridad es una funci&oacute;n que comienza y termina con el
administrador de sistema. Mientras que los sistemas multi-usuario
- BSD &unix; tienen una inherente seguridad, el trabajo de construir y
- mantener mecanismos de seguridad adicionales para mantener a los
- usuarios de manera <quote>honesta</quote> es probablemente una de las
- unicas tareas del administrador del sistema. Los sistemas son tan
- seguros como uno los haga, los problemas de seguridad compiten con la
- necesidad humana de conveniencia. Los sistemas &unix; en general, son
- capaces de correr una gran cantidad de procesos simult&aacute;neos,
- de los cuales muchos de estos son servidores &ndash; lo que significa
- que entidades externas pueden conectarse y <quote>hablar</quote> con
- ellos. Asi como las mini-computadoras del ayer se convirtieron en los
- ahora escritorios de trabajo, y las computadoras se interconectaron,
- la seguridad cada ves se hace un problema mas grande.</para>
+ BSD &unix; tienen una seguridad inherente, el trabajo de construir y
+ mantener mecanismos de seguridad adicionales para hacer que los
+ usuarios sean <quote>honestos</quote> es probablemente una de las
+ tareas m&aacute;s grandes del administrador del sistema. Los sistemas
+ son tan seguros como uno los haga, los problemas de seguridad compiten
+ con la necesidad humana de conveniencia. Los sistemas &unix; en
+ general, son capaces de correr una gran cantidad de procesos
+ simult&aacute;neos, de los cuales muchos de estos son servidores
+ &ndash; lo que significa que entidades externas pueden conectarse y
+ <quote>hablar</quote> con ellos. Asi como las mini-computadoras del
+ ayer se convirtieron en los ahora escritorios de trabajo, y las
+ computadoras se interconectaron, la seguridad cada vez se hace un
+ problema m&aacute;s grande.</para>
<para>La seguridad es mejor implementada como <quote>cebolla</quote> en
capas. Basicamente, lo que se quiere hacer es crear la mayor cantidad
- posible de convenientes capas de seguridad para luego cuidadosamente
- monitorear el sistema para detectar intrusos. No es conveniente
- sobreconstruir la seguridad, ya que esta interferira con el aspecto
- de detecci&oacute;n, y la detecci&oacute;n es uno de los mas importantes
- aspectos de cualquier mecanismo de seguridad. Por ejemplo, no tiene
- mucho sentido usar los flags de <literal>schg</literal> (ver
- &man.chflags.1;) en cada sistema binario, ya que mientras este puede
- protejer los binarios temporalmente, hace que el algun cambio hecho
- por un atacante sea dif&iacute;cil de detectar y puede resultar que
- el mecanismo de seguridad no detecte al atacante en lo absoluto.</para>
+ posible de capas de seguridad como sea conveniente para luego
+ cuidadosamente monitorear el sistema para detectar intrusos. No es
+ conveniente sobreconstruir la seguridad, ya que esta interferir&aacute;
+ con el aspecto de detecci&oacute;n, y la detecci&oacute;n es uno de
+ los m&aacute;s importantes aspectos de cualquier mecanismo de
+ seguridad. Por ejemplo, no tiene mucho sentido activar la bandera
+ <literal>schg</literal> (ver &man.chflags.1;) en cada binario del
+ sistema, ya que mientras este puede protejer los binarios
+ temporalmente, hace que alg&uacute;n cambio hecho por un atacante,
+ que ha entrado al sistema,sea dif&iacute;cil de detectar y puede
+ resultar que el mecanismo de seguridad no detecte al atacante en
+ lo absoluto.</para>
<para>La seguridad del sistema depende tambi&eacute;n de estar preparado
- para diferentes formas de ataque, incluyendo intentos de quebrar el
+ para diferentes formas de ataque, incluyendo intentos de quebrar el
sistema, o hacer un sistema inservible, pero no intentos de comprometer
al usuario <username>root</username> (<quote>quebrar root</quote>). Los
problemas de seguridad estan separados en diferentes categorias:</para>
<orderedlist>
<listitem>
- <para>Ataques de Negaci&oacute;n de servicio (DoS).</para>
+ <para>Ataques de Negaci&oacute;n de servicio (DoS).</para>
</listitem>
<listitem>
- <para>Compromisos en cuentas de usuarios.</para>
+ <para>Comprometer cuentas de usuarios.</para>
</listitem>
<listitem>
- <para>Compromisos de root por medio de servidores accesibles.</para>
+ <para>Comprometer root a trav&eacute;s de servidores accesibles.
+ </para>
</listitem>
<listitem>
- <para>Compromisos de root por medio de cuentas de usuarios.</para>
+ <para>Comprometer root via cuentas de usuarios.</para>
</listitem>
<listitem>
- <para>Creaci&oacute;n de puertas de entrada.</para>
+ <para>Creaci&oacute;n de puertas traseras (Backdoors).</para>
</listitem>
</orderedlist>
<indexterm>
- <primary>Ataques DoS</primary>
- <see>Negaci&oacute;n de servicio (DoS)</see>
+ <primary>DoS attacks</primary>
+ <see>Denial of Service (DoS)</see>
</indexterm>
<indexterm>
- <primary>security</primary>
+ <primary>seguridad</primary>
<secondary>Ataques DoS</secondary>
- <see>Negaci&oacute;n de servicio (DoS)</see>
+ <see>Negaci&oacute;n de servicios (DoS)</see>
</indexterm>
- <indexterm><primary>Negaci&oacute;n de servicio (DoS)</primary></indexterm>
-
- <para>Un ataque de negaci&oacute;n de servicio es una acci&oacute;n que
- priva al sistema de los recursos requeridos. Generalmente, los ataques
- DoS son mecanismos de fuerza bruta que intentan quebrar el sistema
- forzando sus servidores. Algunos ataques DoS intentan aprovecharse de
- bugs en la red para quebrar el sistema con un solo paquete. Esto puede
- ser solucionado aplicando en el kernel una actualizaci&oacute;n que
- arregle el bug. Los ataques en servidores muchas veces pueden ser
- solucionados aplicando opciones apropiadas para limitar la carga del
- sistema en condiciones adversas. Los ataques de fuerza bruta en redes
- son mas complicados. Los ataques con paquetes enmascarados, por
- ejemplo, son casi imposible de detener, el cual puede desconectar el
- sistema de Internet. Pueden no quebrar el sistema, pero saturaran la
- conexi&oacute;n a Internet.</para>
+ <indexterm><primary>Negacion de servicio (DoS)</primary></indexterm>
+
+ <para>Un ataque de negaci&oacute;n de servicio es una acci&oacute;n que
+ priva al sistema de los recursos requeridos. Generalmente, los ataques
+ DoS son mecanismos de fuerza bruta que intentan quebrar el sistema
+ o hacerlo inutilizable sobrepasando la capacidad de sus servidores
+ o del stack de red.
+ Algunos ataques DoS intentan aprovecharse de
+ errores en el stack de red para quebrar el sistema con un solo paquete.
+ Lo &uacute;ltimo solo puede ser solucionado aplicando en el kernel
+ una actualizaci&oacute;n que arregle el error.
+ Los ataques en servidores muchas veces pueden ser
+ solucionados especificando opciones apropiadas para limitar la carga del
+ sistema en condiciones adversas. Los ataques de fuerza bruta en redes
+ son mas complicados. Los ataques con paquetes enmascarados, por
+ ejemplo, son casi imposible de detener, a menos que desconecte el
+ sistema de Internet. Puede ser que no tiren el sistema, pero
+ saturar&aacute;n la conexi&oacute;n a Internet.</para>
+
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>comprometer cuentas</secondary>
+ </indexterm>
+
+ <para>Comprometer una cuenta de usuario es mucho m&aacute;s com&uacute;n
+ que un ataque DoS. Muchos administradores de sistemas
+ todav&iacute;a corren servidores est&aacute;ndar
+ <application>telnetd</application>, <application>rlogind</application>,
+ <application>rshd</application> y <application>ftpd</application> en
+ sus m&aacute;quinas.
+ Estos servidores, por omisi&oacute;n, no
+ operan sobre conexiones encriptadas. El resultado es que si se
+ tiene una base de usuarios de tama&ntilde;o moderado, uno o
+ m&aacute;s de sus usuarios entrando al sistema desde una localidad
+ remota (que es la forma m&aacute;s com&uacute;n y conveniente de
+ entrar a un sistema) provocar&aacute; que su contrase&ntilde;a
+ sea descubierta.
+ El atento administrador de sistemas analizar&aacute; sus logs de
+ acceso remoto buscando por direcciones fuente sospechosas
+ incluso para entradas exitosas al sistema.</para>
+
+ <para>Se debe asumir siempre que una vez que un atacante tiene acceso
+ a una cuenta de usuario, el atacante puede comprometer
+ <username>root</username>. De todas formas, la realidad es que en
+ un sistema bien mantenido y asegurado, el acceso a una cuenta de
+ usuario no necesariamente da al atacante acceso a
+ <username>root</username>. La distinci&oacute;n es importante
+ porque sin acceso a <username>root</username> el atacante
+ generalmente no puede esconder sus huellas y puede, a lo mucho,
+ meterse con los archivos de usuarios, o estrellar la m&aacute;quina.
+ Comprometer cuentas de usuario es muy com&uacute;n porque los
+ usuarios tienden a no tomar las precauciones que el administrador
+ toma.</para>
+
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>backdoors</secondary>
+ </indexterm>
+
+ <para>Los administradores de sistema deben tener en mente que
+ existen muchas maneras potenciales de comprometer a
+ <username>root</username> en una m&aacute;quina. El atacante puede
+ conocer la contrase&ntilde;a de <username>root</username>, el u
+ atacante puede encontrar un error en un servidor ejecut&aacute;ndose
+ como root y ser capaz de comprometer <username>root</username> a
+ trav&eacute;s de una conexi&oacute;n de red a ese servidor, o el
+ atacante puede conocer un error en programa suid-root que le permita
+ comprometer <username>root</username> una vez que ha entrado
+ a una cuenta de usuario. Si un atacante ha encontrado una manera
+ de comprometer a <username>root</username> en una m&aacute;quina,
+ entonces puede no necesitar instalar una puerta trasera. Muchos de
+ los agujeros <username>root</username> encontrados y cerrados hasta
+ la fecha significan una cantidad considerable de trabajo por parte del
+ atacante para limpiar todo despues del ataque, as&iacute; que
+ la mayor&iacute;a de los atacantes instalan puertas traseras.
+ Una puerta trasera brinda al atacante una forma sencilla de
+ retomar acceso de <username>root</username> en el sistema,
+ pero tambi&eacute;n le proporciona al administrador de sistemas
+ inteligente una manera conveniente de detectar la intrusi&oacute;n.
+ Haciendole imposible a un atacante instalar una puerta trasera
+ puede en realidad ser en detrimento de su seguridad, porque
+ no cerrar&aacute; el agujero que el atacante encontr&oacute;
+ para entrar en primer lugar.</para>
+
+ <para>Los remedios de seguridad deben ser implementados
+ siempre con una aproximaci&oacute;n multicapa tipo
+ <quote>cebolla</quote> y puede ser categorizado
+ como sigue:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Aseguramiento de <username>root</username> y cuentas de staff.</para>
+ </listitem>
+ <listitem>
+ <para>Aseguramiento de servidores que se ejecutan como <username>root</username>
+ y binarios suid/sgid.</para>
+ </listitem>
+
+ <listitem>
+ <para>Aseguramiento de cuentas de usuarios.</para>
+ </listitem>
+
+ <listitem>
+ <para>Aseguramiento del archivo de contrase&ntilde;as.</para>
+ </listitem>
+
+ <listitem>
+ <para>Aseguramiento del Kernel, dispositivos crudos y
+ sistema de archivos.</para>
+ </listitem>
+
+ <listitem>
+ <para>Detecci&oacute;n r&aacute;pida de cambios inapropiados
+ hechos al sistema.</para>
+ </listitem>
+
+ <listitem>
+ <para>Paranoia.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>La siguiente secci6oacute;n de este cap&iacute;tulo cubrir&aacute;
+ los puntos de arriba con mayor profundidad.</para>
</sect1>
<sect1 id="securing-freebsd">
- <title>Asegurando FreeBSD</title>
+ <title>Asegurando &os;</title>
<indexterm>
<primary>seguridad</primary>
- <secondary>asegurando FreeBSD</secondary>
+ <secondary>asegurando &os;</secondary>
</indexterm>
<note>
- <title>Comando vs. Protocolo</title>
- <para>A trav&eacute;s de este documento usaremos el texto en
- <application>negrita</application> para referirnos a un comando o
- aplicaci&oacute;n. Esto se utiliza para casos tales como ssh, puesto
- que es tanto un protocolo como un comando.</para>
+ <title>Comando vs. protocolo</title>
+ <para>A trav&eacute;s de este documento usaremos el texto en
+ <application>negrita</application> para referirnos a un comando o
+ aplicaci&oacute;n, y una fuente <command>espaciada</command> para
+ referirnos a comandos espc&iacute;ficos. Los protocolos usar&aacute;n
+ una fuente normal. Esta distinci&oacute;n tipogr&aacute;fica es
+ &uacute;til para instancias como ssh, ya
+ que es tanto un protocolo como un comando.</para>
</note>
- <para>Las siguientes secciones cubrir&aacute;n los m&eacute;todos para
- asegurar su sistema FreeBSD que fueron mencionados en la
- <link linkend="security-intro"> secci&oacute;n anterior</link> a este
+ <para>Las siguientes secciones cubrir&aacute;n los m&eacute;todos para
+ asegurar su sistema &os; que fueron mencionados en la
+ <link linkend="security-intro"> secci&oacute;n anterior</link> a este
cap&iacute;tulo.</para>
- <sect2 id="security-ssh-tunneling">
- <title>Encapsulado SSH</title>
- <indexterm>
- <primary>OpenSSH</primary>
- <secondary>encapsulado</secondary>
- </indexterm>
- <para> </para>
- </sect2>
-
- <sect2 id="firewalls">
- <title>Cortafuegos</title>
+ <sect2 id="securing-root-and-staff">
+ <title>Asegurando la cuenta <username>root</username> y cuentas de staff</title>
+ <indexterm>
+ <primary><command>su</command></primary>
+ </indexterm>
+
+ <para>En primer lugar, no se moleste en asegurar las cuentas de
+ staff si no ha asegurado la cuenta <username>root</username>.
+ La mayor&iacute;a de los sistemas tienen una contrase&ntilde;a
+ asignada a la cuenta <username>root</username>. Lo primero que
+ se hace es asumir que la contrase&ntilde;a est&aacute;
+ <emphasis>siempre</emphasis> comprometida.
+ Esto no significa que debe eliminar la contrase&ntilde;a. La
+ contrase&ntilde;a es casi siempre necesaria para acceso de
+ consola a la m&aacute;quina. Lo que esto significa es que no se
+ debe hacer posible el uso de la contrase&ntilde;a fuera de la
+ consola o incluso posiblemente con el comando &man.su.1;.
+ Por ejemplo, aseg&uacute;rese que sus ptys esta&aacute;n
+ especificadas como inseguras en el archivo
+ <filename>/etc/ttys</filename> para que las entradas directas
+ de <username>root</username> v&iacute;a
+ <command>telnet</command> o <command>rlogin</command> no est&eacute;n
+ permitidas.
+ Si utiliza otros servicios de entrada como
+ <application>sshd</application>, aseg&uacute;rese que entradas directas
+ de <username>root</username> est&eacute;n tambi&eacute;n deshabilitadas.
+ Puede hacer esto editando su archivo
+ <filename>/etc/ssh/sshd_config</filename>, y asegur&aacute;ndose
+ que <literal>PermitRootLogin</literal> est&eacute; puesto a
+ <literal>NO</literal>. Considere cada m&eacute;todo de acceso &mdash;
+ servicios como FTP frecuentemente caen en las grietas.
+ Entradas directas de <username>root</username> solo deben
+ ser permitidas v&iacute;a consola.</para>
+ <indexterm>
+ <primary><groupname>wheel</groupname></primary>
+ </indexterm>
+
+ <para>Por supuesto, como administrador de sistema usted debe
+ ser capaz de accesar a <username>root</username>, asi que
+ abrimos algunos agujeros. Pero aseg&uacute;rese que estos
+ agujeros necesiten contrase&ntilde;as adicionales de
+ verificaci&oacute;n para operar. Una forma de hacer a <username>root</username>
+ accesible es agregar cuentas de staff apropiadas al
+ grupo <groupname>wheel</groupname> (en
+ <filename>/etc/group</filename>). Los miembros del staff colocados
+ en el grupo <groupname>wheel</groupname> tienen permitido
+ hacer <command>su</command> a <username>root</username>.
+ Nunca debe de proporcionar a miembros del staff acceso
+ nativo a <groupname>wheel</groupname> poni&eacute;ndolos
+ en el grupo <groupname>wheel</groupname> en su entrada de
+ contrase&ntilde;a. Las cuentas de staff deben ser colocadas
+ en un grupo <groupname>staff</groupname>, y entonces
+ agregadas al grupo <groupname>wheel</groupname> en el
+ archivo <filename>/etc/group</filename>. Solo aquellos
+ miembros del staff que en realidad necesiten tener acceso
+ de <username>root</username> deben ser colocados en el
+ grupo <groupname>wheel</groupname>. tambi&eacute;n es posible
+ al utilizar un m&eacute;todo de autentificaci&oacute;n como
+ Kerberos, usar el archivo <filename>.k5login</filename> en
+ la cuenta <username>root</username> para permitir un
+ &man.ksu.1; a <username>root</username> sin tener que
+ colocar a nadie en el grupo
+ <groupname>wheel</groupname>. Esta puede ser una mejor soluci&oacute;n
+ ya que el mecanismo <groupname>wheel</groupname> todav&iacute;a
+ permite a un atacante comprometer <username>root</username>
+ si el intruso ha conseguido el archivo de contrase&ntilde;as
+ y puede comprometer una cuenta de staff. Teniendo el
+ mecanismo <groupname>wheel</groupname> es mejor que no tener
+ nada del todo, aunque no es necesariamente la opci&oacute;n
+ m&aacute;s segura.</para>
+
+ <!-- XXX:
+ This will need updating depending on the outcome of PR bin/71147.
+ Personally I know what I'd like to see, which puts this in definite
+ need of a rewrite, but we'll have to wait and see. ceri@
+ -->
+
+ <para>Una manera indirecta de asegurar las cuentas de staff, y
+ el acceso a <username>root</username> es utilizar un m&eacute;todo
+ de acceso login alternativo y hacer lo que se conoce como
+ <quote>estrellado</quote> de las contrase&ntilde;as encriptadas
+ para las cuentas de staff. Usando el comando &man.vipw.8;
+ se puede reemplazar cada instancia de una contrase&ntilde;a
+ encriptada con un solo caracter <quote><literal>*</literal></quote>.
+ Este comando actualizar&aacute; el archivo
+ <filename>/etc/master.passwd</filename> y la base de datos
+ usuario/contrase&ntilde;a para deshabilitar logins
+ autenticados por contrase&ntilde;as.</para>
+
+ <para>Una entrada de una cuenta de estaff como:</para>
+
+ <programlisting>foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
+
+ <para>Debe ser cambiada a esto:</para>
+
+ <programlisting>foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
+
+ <para>Este cambio prevendr&aacute; que ocurran logins normales,
+ ya que la contrase&ntilde;a encriptada nunca corresponder&aacute;
+ con <quote><literal>*</literal></quote>. Hecho esto,
+ los miembros de staff deben usar otro mecanismo
+ para autentificarse tal como &man.kerberos.1; o
+ &man.ssh.1; utilizando un par de llave p&uacute;blica/privada.
+ Cuando se usa algo como Kerberos, generalmente se debe
+ asegurar la m&aacute;quina que corre los servidores Kerberos
+ y su estaci&oacute;n de trabajo de escritorio. Cuando se
+ usa un par de llave p&uacute;blica/privada con ssh,
+ generalmente se debe asegurar la m&aacute;quina <emphasis>desde</emphasis>
+ donde se hace el login (t&iacute;picamente nuestra estaci&oacute;n
+ de trabajo). Una capa adicional de protecci&oacute;n puede
+ ser a&ntilde;adida al par de llaves protegiendo con contrase&ntilde;a
+ la llave par al crearla con &man.ssh-keygen.1;.
+ La posibilidad de <quote>estrellado</quote> de las
+ contrase&ntilde;as de las cuentas de staff tambi&eacute;n
+ garantiza que los miembros del staff solo puedan entrar
+ a trav&eacute;s de m&eacute;todos de acceso que usted haya
+ configurado. Esto obliga a todos los miembros del staff
+ a utilizar conexiones seguras, encriptadas, para todas
+ sus sesiones, lo que cierra un importante agujero usado
+ por muchos intrusos: hacer un olfateo (sniffing) de la
+ red desde una m&aacute;quina no relacionada y menos
+ segura.</para>
+
+ <para>Los mecanismos de seguridad m&aacute;s indirectos tambi&eacute;n
+ asumen que se esta firmando desde un servidor m&aacute;s restrictivo
+ a un servidor menos restrictivo.
+ Por ejemplo, si su m&aacute;quina principal est&aacute; corriendo
+ toda clase de servidores, su estaci&oacute;n de trabajo no debe
+ de estar corriendo ninguno. Para que su estaci&oacute;n de trabajo
+ sea razonablemente segura debe correr los servidores m&iacute;nimos
+ posibles, hasta incluso ning&uacute;n servidor, y debe correr
+ un blanqueador de pantalla portegido por contrase&ntilde;a.
+ Por supuesto, dado un acceso f&iacute;sico a una estaci&oacute;n
+ de trabajo un atacante puede romper cualquier clase de seguridad
+ que se ponga. Esto es definitivamente un problema que debe
+ considerar, pero tambi&eacute;n debe considerar el hecho de que la
+ mayor&iacute;a de las intrusiones ocurren remotamente, a trav&eacute;s
+ de la red, de gente que no tiene acceso f&iacute;sico a su
+ estaci&oacute;n de trabajo o servidores.</para>
+ <indexterm><primary>KerberosIV</primary></indexterm>
+
+ <para>Usar algo como Kerberos tambi&eacute;n le brinda la habilidad
+ de deshabilitar o cambiar la contrase&ntilde;a para una cuenta
+ de staff en un lugar, y que tenga un efecto inmediato en todas
+ las m&aacute;quinas en las cuales el miembro de staff puede
+ tener una cuenta. Si la cuenta de un miembro de staff es
+ comprometida, la habilidad para cambiar instantaneamente su
+ contrase&ntilde;a en todas las m&aacute;quinas no debe ser
+ desestimada. Con contrase&ntilde;as discretas, el cambio
+ de una contrase&ntilde;a en N m&aacute;quinas puede ser un
+ problema. Tambi&eacute;n puede imponer restricciones de
+ re-contrase&ntilde;as con Kerberos: no solo se puede hacer un
+ ticket de Kerberos para expirar despues de un tiempo, tambi&eacute;n
+ el sistema Kerberos puede requerir que el usuario escoja una
+ nueva contrase&ntilde;a despues de cierto periodo de tiempo
+ (digamos, una vez al mes).</para>
+ </sect2>
+
+ <sect2>
+ <title>Asegurando servidores que se ejecutan como <username>root</username>
+ y binarios SUID/SGID</title>
+
+ <indexterm>
+ <primary><command>ntalk</command></primary>
+ </indexterm>
+ <indexterm>
+ <primary><command>comsat</command></primary>
+ </indexterm>
+ <indexterm>
+ <primary><command>finger</command></primary>
+ </indexterm>
+ <indexterm>
+ <primary>sandboxes</primary>
+ </indexterm>
+ <indexterm>
+ <primary><application>sshd</application></primary>
+ </indexterm>
+ <indexterm>
+ <primary><application>telnetd</application></primary>
+ </indexterm>
+ <indexterm>
+ <primary><application>rshd</application></primary>
+ </indexterm>
+ <indexterm>
+ <primary><application>rlogind</application></primary>
+ </indexterm>
+
+ <para>El administrador de sistemas prudente solo ejecuta los
+ servidores que necesita, no m&aacute;s, no menos. Dese cuenta
+ que los servidores de terceros son los m&aacute;s propensos
+ a contener errores. Por ejemplo, ejecutando una versi&oacute;n
+ antigua de
+ <application>imapd</application> o
+ <application>popper</application> es como dar un boleto universal
+ de <username>root</username> al mundo entero.
+ Nunca ejecute un servidor que no haya revisado cuidadosamente.
+ Muchos servidores no necesitan ejecutarse como
+ <username>root</username>. Por ejemplo, los daemons
+ <application>ntalk</application>,
+ <application>comsat</application> y
+ <application>finger</application> pueden ejecutarse en una
+ <firstterm>caja de arena (sandbox)</firstterm> especial de usuario.
+ Una caja de arena no es perfecta, a menos que pase por muchos
+ problemas, pero la aproximaci&oacute;n de cebolla a la seguridad
+ todav&iacute;a prevalece: Si alguien es capaz de penetrar a
+ trav&eacute;s de un servidor ejecut&aacute;ndose en una caja
+ de arena, todav&iacute;a tendr&iacute;a que salirse de la caja de
+ arena. Mientras m&aacute;s capas tenga que romper el atacante
+ es menor la posibilidad de su &eacute;xito. Los agujeros de
+ root han sido hallados historicamente en virtualmente
+ cualquier servidor que se ha ejecutado como <username>root</username>,
+ incluyendo servidores b&aacute;sicos del sistema.
+ Si est&aacute; ejecutando una m&aacute;quina a trav&eacute;s de
+ la cual la gente solo entra por
+ <application>sshd</application> y nunca entra por
+ <application>telnetd</application> o
+ <application>rshd</application> o
+ <application>rlogind</application>, entonces ¡apague esos
+ servicios!</para>
+
+ <para>&os; ahora por omisi&oacute;n ejecuta
+ <application>ntalkd</application>,
+ <application>comsat</application> y
+ <application>finger</application> en una caja de arena.
+ Otro programa que puede ser candidato para correr en una
+ caja de arena es &man.named.8;.
+ <filename>/etc/defaults/rc.conf</filename> incluye los
+ argumentos necesarios para correr <application>named</application>
+ en una caja de arena de una forma comentada. Dependiendo de si
+ est&aacute; instalando un nuevo sistema o actualizando un sistema
+ existente, las cuentas especiales de usuario utilizadas por
+ estas cajas de arena puede que no est&eacute;n instaladas.
+ El administrador de sistemas prudente debe investigar e
+ implementar cajas de arena para servidores siempre que sea
+ posible.</para>
+ <indexterm>
+ <primary><application>sendmail</application></primary>
+ </indexterm>
+
+ <para>Existen un n&uacute;mero de otros servidores que tipicamente
+ no se ejecutan en cajas de arena:
+ <application>sendmail</application>,
+ <application>imapd</application>, <application>ftpd</application>,
+ y otros. Existen alternativas para algunos de estos, pero
+ instalarlas puede requerir m&aacute;s trabajo del que tal vez
+ est&eacute; dispuesto a realizar (el factor conveniencia
+ ataca de nuevo). Tal vez tenga que correr estos servidores como
+ <username>root</username> y depender de otros mecanismos para
+ detectar intrusiones que puedan ocurrir a trav&eacute;s de
+ ellos.</para>
+
+ <para>Los otros grandes agujeros de <username>root</username>
+ potenciales en un sistema son los binarios
+ suid y sgid root instalados en el sistema. La mayor&iacute;a
+ de estos binarios, como <application>rlogin</application>,
+ residen en <filename>/bin</filename>, <filename>/sbin</filename>,
+ <filename>/usr/bin</filename> o <filename>/usr/sbin</filename>.
+ Aunque nada es 100% seguro, los binarios suid y sgid del
+ sistema por omisi&oacute;n pueden ser considerados razonablemente
+ seguros. Pero a&uacute;n as&iacute;,
+ agujeros <username>root</username> son encontrados
+ ocasionalmente en estos binarios. Un agujero <username>root</username>
+ fu&eacute; entontrado en <literal>Xlib</literal> en
+ 1998 que hizo a <application>xterm</application>
+ (que es tipicamente suid) vulnerable. Es mejor prevenir que
+ lamentar y el administrador de sistemas prudente restringir&aacute;
+ los binarios suid, que solo el staff debe de ejecutar, a un
+ grupo especial que solo el staff pueda accesar, y deshacerse
+ de cualquier binario suid (<command>chmod 000</command>)
+ que nadie utilice. Un servidor sin pantalla generalmente
+ no necesita un binario <application>xterm</application>.
+ Binarios sgid pueden ser igual de peligrosos. Si un
+ intruso puede comprometer un binario sgid-kmem, el intruso
+ podr&iacute;a ser capaz de leer <filename>/dev/kmem</filename>
+ y as&iacute; leer el archivo encriptado de contrase&ntilde;as,
+ comprometiendo potencialmente cualquier cuenta con
+ contrase&ntilde;a. Alternativamente, un intruso que compromete
+ el grupo <literal>kmem</literal> puede monitorear teclazos
+ mandados a trav&eacute;s de ptys, incluyendo ptys utilizados
+ por usuarios que accesan por m&eacute;todos seguros.
+ Un intruso que compromete el grupo <groupname>tty</groupname>
+ puede escribir a casi cualquier pty de usuarios.
+ Si un usuario est&aacute; corriendo un programa de terminal o
+ emulador con una propiedad de simulaci&oacute;n de teclado, el
+ intruso puede potencialmente generar un flujo de datos que
+ provoque que la terminal del usuario haga eco de un comando,
+ el cual es entonces ejecutado como ese usuario.</para>
+ </sect2>
+
+ <sect2 id="secure-users">
+ <title>Asegurando cuentas de usuarios</title>
+
+ <para>Las cuentas de usuario son usualmente las m&aacute;s
+ dif&iacute;ciles de asegurar. Aunque puede imponer restricciones
+ de acceso draconianas en su staff y <quote>estrellar</quote>
+ sus contrase&ntilde;as, tal vez no pueda hacerlo con cualquier
+ cuenta general de usuario que tenga. Si tiene suficiente control,
+ tal vez triunfe y sea capaz de asegurar las cuentas de
+ usuarios con propiedad. Si no, simplemente tiene que ser m&aacute;s
+ vigilante en el monitoreo de esas cuentas. El uso de ssh y
+ Kerberos para cuentas de usuario es m&aacute;s problem&aacute;tico
+ debido a la administraci&oacute;n adicional y soporte t&eacute;cnico
+ requerido, pero es todav&iacute;a una buena soluci&oacute;n
+ comparada a un archivo de contrase&ntilde;as encriptadas.</para>
+ </sect2>
+
+ <sect2>
+ <title>Asegurando el archivo de contrase&ntilde;as</title>
+
+ <para>La &uacute;nica manera segura es ponerle <literal>*</literal>
+ a tantas contrase&ntilde;as como sea posible y utilizar ssh o
+ Kerberos para accesar esas cuentas. Aunque el archivo
+ encriptado de contrase&ntilde;as (<filename>/etc/spwd.db</filename>)
+ solo puede ser le&iacute;do por <username>root</username>, puede
+ ser posible para un intruso obtener acceso de lectura a ese
+ archivo incluso si el etacante no puede obtener
+ acceso de escritura como root.</para>
+
+ <para>Sus scripts de seguridad deben revisar siempre por
+ cambios en el archivo de contrase&ntilde;as
+ (ver <link linkend="security-integrity">Revisando integridad de archivos</link> abajo)
+ y reportarlos.</para>
+ </sect2>
+
+ <sect2>
+ <title>Asegurando del Kernel, dispositivos crudos y
+ sistema de archivos</title>
+
+ <para>Si un atacante compromete <username>root</username> puede
+ hacer cualquier cosa,
+ pero existen ciertas conveniencias. Por ejemplo, la mayor&iacute;a
+ de los Kernels modernos tienen un dispositivo olfateador de
+ paquetes integrado. Bajo &os; es llamado dispositivo
+ <devicename>bpf</devicename>. Un intruso tratar&aacute;
+ comunmente de ejecutar un olfateador de paquetes en una
+ m&aacute;quina comprometida. No necesita darle a un intruso
+ la capacidad y la mayor&iacute;a de los sistemas no necesitan
+ que se compile el dispositivo <devicename>bpf</devicename>.</para>
+
+ <indexterm>
+ <primary><command>sysctl</command></primary>
+ </indexterm>
+ <para>Pero incluso si apaga el dispositivo <devicename>bpf</devicename>,
+ todav&iacute;a tiene que preocuparse por
+ <filename>/dev/mem</filename> y
+ <filename>/dev/kmem</filename>.
+ Para eso, el intruso puede todav&iacute;a escribir a
+ dispositivos de disco crudos. Tambi&eacute;n, existe otra
+ opci&oacute;n del kernel llamada cargador de m&oacute;dulos,
+ &man.kldload.8;. Un intruso con iniciativa puede usar un
+ m&oacute;dulo KLD para instalar su propio dispositivo
+ <devicename>bpf</devicename>, u otro dispositivo de
+ olfateo en un kernel en ejecuci&oacute;n.
+ Para prevenir estos problemas debe ejecutar el kernel en
+ un nivel de seguridad mayor, al menos en securelevel 1.
+ El securelevel puede ser activado con <command>sysctl</command>
+ en la variable <varname>kern.securelevel</varname>.
+ Una vez que ha activado securelevel a 1, los accesos de
+ escritura a dispositivos crudos ser&aacute;n denegados y
+ las banderas especiales <literal>schg</literal> ser&aacute;n
+ impuestas.
+ Tambi&eacute;n debe asegurar que la bandera
+ <literal>schg</literal> est&eacute; habilitada en archivos
+ binarios cr&iacute;ticos para el arranque, directorios y
+ scripts &mdash; todo lo que se ejecuta hasta el punto en que
+ se activa el securelevel. Esto puede ser una acci&oacute;n
+ exagerada, y actualizar el sistema es mucho m&aacute;s
+ complicado cuando se opera en un nivel de seguridad superior.
+ Puede comprometer y ejecutar el sistema a un nivel de seguridad
+ superior pero no activar la bandera <literal>schg</literal>
+ para cada archivo y directorio del sistema bajo el sol.
+ Otra posibilidad es simplemente montar <filename>/</filename> y
+ <filename>/usr</filename> de solo lectura.
+ Se debe notar que siendo demasiado draconiano en lo que trata
+ de proteger puede prevenir toda la detecci&oacute;n importante
+ de una intrusi&oacute;n.</para>
+ </sect2>
+
+ <sect2 id="security-integrity">
+ <title>Revisando integridad de archivos: binarios, archivos de
+ configuraci&oacute;n, etc.</title>
+
+ <para>Cuando se trata de protecci&oacute;n, solo se puede proteger
+ la configuraci&oacute;n central del sistema y archivos de
+ control hasta un punto antes de que el factor conveniencia
+ levante su fea cabeza. Por ejemplo, usando
+ <command>chflags</command> para activar el bit <literal>schg</literal>
+ en la mayor&iacute;a de los archivos en <filename>/</filename>
+ y <filename>/usr</filename> es probablemente contraproducente,
+ debido a que puede proteger los archivos, pero tambi&eacute;n
+ cierra una ventana de detecci&oacute;n.
+ La &uacute;ltima capa de su seguridad tipo cebolla es quiz&aacute;s
+ la m&aacute;s importante &mdash; detecci&oacute;n. El resto de
+ su seguridad es inutil (o, peor, darle un falso sentido de
+ seguridad) si no puede detectar incursiones potenciales.
+ La mitad del trabajo de la cebolla es alentar al atacante, en lugar
+ de detenerlo, para darle a la parte de la ecuaci&oacute;n de
+ detecci&oacute;n una oportunidad de atraparlo en el acto.</para>
+
+ <para>La mejor manera de detectar una incursi&oacute;n es buscar
+ archivos modificados, perdidos o inesperados. La mejor manera
+ de buscar archivos modificados es desde otro (muchas veces
+ centralizado) sistema con acceso limitado.
+ Escribiendo sus scripts de seguridad en un sistema extra-seguro
+ con acceso limitado los hace casi invisibles a atacantes
+ potenciales, y esto es importante. Para tomar m&aacute;xima
+ ventaja generalmente tiene que proporcionar a la m&aacute;quina
+ con acceso limitado acceso significativo a las otras m&aacute;quinas
+ en el negocio, usualmente ya sea haciendo una importaci&oacute;n
+ NFS de solo lectura de las otras m&aacute;quinas a la m&aacute;quina
+ de acceso limitado o configurando pares de llaves ssh para
+ permitir a la m&aacute;quina de acceso limitado hacer ssh a
+ las otras m&aacute;quinas. A excepci&oacute;n de su tr&aacute;fico
+ de red, NFS es el m&eacute;todo menos visible &mdash; permitiendo
+ monitorear los sistemas de archivos en cada m&aacute;quina cliente
+ virtualmente indetectado. Si su servidor de acceso limitado
+ est&aacute; conectado a las m&aacute;quinas cliente a trav&eacute;s
+ de un concentrador o a trav&eacute;s de varias capas de ruteo,
+ el m&eacute;todo NFS puede ser muy inseguro (network-wise)
+ y utilizar ssh puede ser la mejor opci&oacute;n incluso
+ con las huellas de auditor&iacute;a que ssh presenta.</para>
+
+ <para>Una vez que le da a una ma&aacute;quina de acceso limitado al
+ menos acceso de lectura a los sistemas cliente que se supone va
+ a monitorear, debe escribir scripts para hacer el monitoreo.
+ Dado un montaje NFS, puede escribir scripts con utilidades
+ simples como &man.find.1; y &man.md5.1;. Es mejor ejecutar
+ md5 fisicamente en los archivos de las m&aacute;quinas cliente
+ al menos una vez al d&iacute;a, y probar archivos de control
+ como los encontrados en <filename>/etc</filename> y
+ <filename>/usr/local/etc</filename> incluso m&aacute;s seguido.
+ Cuando se encuentren discrepancias, relativas a la informaci&oacute;n
+ base md5 que la m&aacute;quina de acceso limitado conoce como
+ v&aacute;lida, esto debe gritarle a un administrador de sistemas
+ que vaya a verificarlo. Un buen script de seguridad tambi&eacute;n
+ debe revisar por binarios suid inapropiados y por archivos nuevos
+ o borrados en particiones del sistema como <filename>/</filename>
+ y <filename>/usr</filename>.</para>
+
+ <para>Al utilizar ssh en lugar de NFS,
+ escribir el script de seguridad es mucho m&aacute;s complicado.
+ Esencialmente tiene que pasar por <command>scp</command> los
+ scripts a la m&aacute;quina cliente para poder ejecutarlos,
+ haci&eacute;ndolos visibles, y para seguridad tambi&eacute;n
+ necesita pasar por <command>scp</command> los binarios
+ (como find) que utilizan esos scripts. El cliente
+ <application>ssh</application> en la m&aacute;quina cliente
+ puede estar ya comprometida. Con todo, utilizar ssh
+ puede ser necesario al trabajar sobre enlaces
+ inseguros, pero tambi&eacute;n es mucho m&aacute;s dificil
+ de manejar.</para>
+
+ <para>Un buen script de seguridad revisar&aacute; tambi&eacute;n
+ por cambios a la configuraci&oacute;n de los archivos de acceso
+ de usuarios y miembros del staff:
+ <filename>.rhosts</filename>, <filename>.shosts</filename>,
+ <filename>.ssh/authorized_keys</filename> y dem&aacute;s;
+ archivos que caigan fuera del rango de revisi&oacute;n
+ <literal>MD5</literal>.</para>
+
+ <para>Si tiene una cantidad enorme de espacio en disco para usuarios,
+ puede tomar mucho tiempo recorrer cada archivo en esas
+ particiones. En este caso, configurando banderas de montaje
+ para deshabilitar binarios y dispositivos suid en esas particiones
+ es una buena idea. Las opciones <literal>nodev</literal> y
+ <literal>nosuid</literal> (vea &man.mount.8;) son lo que
+ necesita revisar. Probablemente debe escanearlos de todas
+ maneras, al menos una vez a la semana, ya que el objeto de esta
+ capa es detectar intrusiones ya sea que la instrusi&oacute;n
+ haya sido efectiva o no.</para>
+
+ <para>La contabilidad de procesos (vea &man.accton.8;) es una
+ opci&oacute;n relativamente con una carga ligera del sistema
+ operativo la cual puede ayudar como un mecanismo de
+ evaluaci&oacute;n post-intrusi&oacute;n. Es especialmente
+ &uacute;til para rastrear como un intruso en realidad
+ penetr&oacute; en un sistema, asumiendo que el archivo
+ est&eacute; todav&iacute;a intacto despues de que la
+ intrusi&oacute;n ocurri&oacute;.</para>
+
+ <para>Finalmente, los scripts de seguridad deben procesar los
+ archivos de log, y los mismo logs deben ser generados de una
+ manera lo m&aacute;s segura posible &mdash; un syslog remoto
+ puede ser muy &uacute;til. Un intruso trata de cubrir sus
+ huellas, y los archivos de log son cr&iacute;ticos para el
+ administrador de sistema tratando de rastrear la hora y el
+ m&eacute;todo de la intrusi&oacute;n inicial. Una manera de
+ mantener un registro permanente de los archivos de log es
+ ejecutar la consola del sistema en un puerto serial y
+ recolectar la informaci&oacute;n en una base continua
+ mediante una m&aacute;quina segura monitoreando las consolas.</para>
+ </sect2>
+
+ <sect2>
+ <title>Paranoia</title>
+
+ <para>Un poco de paranoia nunca lastima. Como una regla, un
+ administrador de sistema puede agregar cualquier n&uacute;mero
+ de mecanismos de seguridad, siempre que estos no afecten
+ la conveniencia, y puede agregar mecanismos de seguridad
+ que <emphasis>si</emphasis> afecten la conveniencia con
+ un buen razonamiento. Incluso m&aacute;s importante, un
+ administrador de seguridad debe mezclarlos un poco &mdash;
+ si utiliza recomendaciones como las dadas en este documento
+ exactamente, est&aacute; dando su metodolog&iacute;a al
+ posible atacante que tambi&eacute;n tenga acceso a este
+ documento.</para>
+ </sect2>
+
+ <sect2>
+ <title>Ataques de negaci&oacute;n de servicios</title>
+ <indexterm><primary>Ataques de negaci&oacute;n de servicios (DoS)</primary></indexterm>
+
+ <para>Esta secci&oacute;n cubre ataques de negaci&oacute;n de servicios.
+ Un ataque DoS es tipicamente un ataque de paquetes. Aunque no hay
+ mucho que pueda hacer acerca de ataques con paquetes imitados
+ (spoofed) que saturen su red, generalmente puede limitar el da&ntilde;o
+ asegur&aacute;ndose que los ataques no tiren sus servidores.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Limitando forks en el servidor.</para>
+ </listitem>
+
+ <listitem>
+ <para>Limitando ataques springboard (ataques de respuesta ICMP,
+ ping broadcast, etc.).</para>
+ </listitem>
+
+ <listitem>
+ <para>Cach&eacute; de ruteo del Kernel.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Un ataque com&uacute;n DoS es contra un servidor con instancias
+ (forking) que trata de provocar que el servidor consuma procesos, descriptores
+ de archivos y memoria, hasta que la m&aacute;quina muere.
+ <application>inetd</application> (vea &man.inetd.8;) tiene
+ varias opciones para limitar este tipo de ataque.
+ Se debe notar que mientras es posible prevenir que una m&aacute;quina
+ se caiga, generalmente no es posible prevenir que un servicio sea
+ interrumpido por el ataque. Lea la p&aacute;gina de manual
+ de <application>inetd</application> con cuidado y ponga atenci&oacute;n
+ especialmente las opciones <option>-c</option>, <option>-C</option>,
+ y <option>-R</option>. Note que los ataques con direcciones IP imitadas
+ rodear&aacute;n la opci&oacute;n <option>-C</option> de
+ <application>inetd</application>, as&iacute; que una
+ combinaci&oacute;n de opciones debe ser utilizada. Algunos
+ servidores que se ejecutan en solitario cuentan con
+ par&aacute;metros de autolimitaci&oacute;n de instancias.</para>
+
+ <para><application>Sendmail</application> tiene su opci&oacute;n
+ <option>-OMaxDaemonChildren</option>, la cual tiende a trabajar
+ mucho mejor que tratando de usar las opciones de l&iacute;mite
+ de carga de sendmail debido al retraso que provoca la carga.
+ Debe especificar un par&aacute;metro
+ <literal>MaxDaemonChildren</literal>, cuando inicia
+ <application>sendmail</application>, lo suficientemente alto
+ para manejar su carga esperada, pero no tan alto que la
+ computadora no pueda manejar ese n&uacute;mero de
+ <application>sendmails</application> sin caerse de boca.
+ Tambi&eacute;n es prudente ejecutar sendmail en modo de cola
+ (<option>-ODeliveryMode=queued</option>) y correr el daemon
+ (<command>sendmail -bd</command>)
+ de manera separada de las ejecuciones de cola
+ (<command>sendmail -q15m</command>). Si todav&iacute;a desea
+ entregas en tiempo real puede ejecutar la cola a un intervalo
+ menor, como <option>-q1m</option>, pero aseg&uacute;rese de
+ especificar una opci&oacute;n <literal>MaxDaemonChildren</literal>
+ razonable para <emphasis>ese</emphasis> sendmail y as&iacute;
+ prevenir fallas en cascada.</para>
+
+ <para><application>Syslogd</application> puede ser atacado directamente
+ y se recomienda fuertemente que utilice la opci&oacute;n
+ <option>-s</option> siempre que sea posible, y la opci&oacute;n
+ <option>-a</option> de otra manera.</para>
+
+ <para>Tambi&eacute;n debe ser extremadamente cuidadoso con servicios
+ de conexi&oacute;n inversa como ident inverso de
+ <application>TCP Wrapper</application>, que puede ser atacado
+ directamente. Generalmente no va a querer utilizar la
+ propiedad de ident inverso de
+ <application>TCP Wrapper</application> por esta raz&oacute;n.</para>
+
+ <para>Es una muy buena idea proteger los servicios internos
+ de acceso externo protegi&eacute;ndolos v&iacute;a firewall
+ en los ruteadores de los bordes.
+ La idea aqu&iacute; es prevenir ataques de saturaci&oacute;n
+ desde el exterior de la LAN, no tanto para proteger servicios
+ internos de comprometimientos <username>root</username> basados
+ en red. Siempre configure un firewall exclusivo, ej.,
+ <quote>restringir todo <emphasis>menos</emphasis> los puertos
+ A, B, C, D y M-Z</quote>. De esta manera puede restringir
+ todos sus puertos bajos exceptuando ciertos servicios espec&iacute;ficos
+ como <application>named</application> (si es el primario para
+ una zona), <application>ntalkd</application>,
+ <application>sendmail</application> y otros servicios accesibles
+ desde Internet. Si trata de configurar el firewall de la otra
+ manera &mdash; como un firewall inclusivo o permisivo, existe
+ una gran posibilidad de que olvide <quote>cerrar</quote> un
+ par de servicios, o de que agregue un nuevo servicio interno y
+ olvide actualizar el firewall. Puede incluso abrir el rango
+ de n&uacute;meros de puerto altos en el firewall para permitir
+ operaciones de tipo permisivas, sin comprometer sus puertos
+ bajos. Tambi&eacute;n tome nota que &os; le permite controlar
+ el rango de n&uacute;meros de puerto utilizados para asignaci&oacute;n
+ din&aacute;mica, a trav&eacute;s de <command>sysctl</command>
+ con <varname>net.inet.ip.portrange</varname>
+ (<command>sysctl -a | fgrep portrange</command>), lo cual
+ tambi&eacute;n facilita la complejidad de la configuraci&oacute;n
+ de su firewall. Por ejemplo, puede utilizar un rango normal
+ primero/&uacute;ltimo de 4000 o 5000, y un rango de puerto
+ alto de 49152 a 65535, entonces bloqu&eacute;e todo debajo de
+ 4000 en su firewall (excepto para ciertos puertos espec&iacute;ficos
+ accesibles desde Internet, por supuesto).</para>
+
+ <indexterm><primary>ICMP_BANDLIM</primary></indexterm>
+
+ <para>Otro ataque DoS com&uacute;n es llamado ataque springboard
+ &mdash; atacar un servidor de una manera que provoca que el
+ servidor genere respuestas que sobrecarguen al servidor, la
+ red local o alguna otra m&aacute;quina. Los ataques m&aacute;s
+ comunes de este tipo es el <emphasis>ataque ICMP ping broadcast</emphasis>.
+ El atacante imita paquetes ping enviados a la direcci&oacute;n
+ broadcast de su LAN con la direcci&oacute;n IP fuente puesta
+ a la de la m&aacute;quina que desean atacar. Si sus ruteadores
+ de borde no est&aacute;n configurados para atrapar pings a
+ direcciones de broadcast, su LAN termina generando suficientes
+ respuestas a la direcci&oacute;n fuente imitada para saturar
+ a la v&iacute;ctima, especialmente cuando el atacante utiliza
+ el mismo truco en varias docenas de direcciones broadcast en
+ varias docenas de redes diferentes a la vez. Ataques de
+ broadcast de m&aacute;s de ciento veinte megabits han sido
+ medidos. Un segundo ataque com&uacute;n springboard es contra
+ el sistema de reporte de error de ICMP. Mediante la construcci&oacute;n
+ de paquetes que generan respuestas de error ICMP, un atacante
+ puede saturar la conexi&oacute;n entrante de red de un servidor
+ y provocar que el servidor sature su conexi&oacute;n saliente
+ de red con respuestas ICMP. Este tipo de ataque tambi&eacute;n
+ puede estrellar el servidor agotando sus mbufs, especialmente
+ si el servidor no puede drenar las respuestas ICMP que
+ genera lo suficientemente r&aacute;pido. El kernel de &os;
+ tiene una nueva opci&oacute;n de compilaci&oacute;n de
+ kernel llamada <option>ICMP_BANDLIM</option> que limita la
+ efectividad de este tipo de ataques. La &uacute;ltima gran
+ clase de ataques springboard est&aacute; relacionada a
+ ciertos servicios de <application>inetd</application> como
+ el servicio de eco udp. Un atacante simplemente imita un paquete
+ UDP con la direcci&oacute;n fuente siendo el puerto de eco del
+ servidor A, y la direcci&oacute;n destino siendo el puerto de
+ eco del servidor B, donde servidor A y B est&aacute;n ambos
+ en su LAN. Los dos servidores entonces rebotan este paquete
+ de ida y vuelta entre ellos. El atacante puede sobrecargar
+ ambos servidores y la LAN simplemente inyectando un par de
+ paquetes de esta manera. Problemas similares existen con el
+ puerto <application>chargen</application>. Un administrador
+ de sistema competente apagar&aacute; todos estos servicios
+ de inetd internos de verificaci&oacute;n.</para>
+
+ <para>Los ataques de paquetes imitados pueden ser tambi&eacute;n
+ utilizados para sobrecargar el cach&eacute; de ruteo del kernel.
+ Refi&eacute;rase a los par&aacute;metros de <command>sysctl</command>
+ <varname>net.inet.ip.rtexpire</varname>,
+ <varname>rtminexpire</varname>, y
+ <varname>rtmaxcache</varname>.
+ Un ataques de paquetes imitados que utiliza una direcci&oacute;n
+ IP fuente aleatoria provocar&aacute; que el kernel genere una
+ ruta temporal en cach&eacute; en la tabla de ruteo, visible con
+ <command>netstat -rna | fgrep W3</command>. Estas rutas
+ tipicamente expiran en 1600 segundos m&aacute;s o menos. Si el
+ kernel detecta que la tabla de ruteo en cach&eacute; ya est&aacute;
+ demasiado grande reducir&aacute; dinamicamente <varname>rtexpire</varname>
+ pero nunca la decrementar&aacute; a menos del valor de
+ <varname>rtminexpire</varname>. Existen dos problemas:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>El kernel no reacciona con suficiente rapidez cuando
+ un servidor ligeramente cargado es atacado.</para>
+ </listitem>
+
+ <listitem>
+ <para>El <varname>rtminexpire</varname> no es lo suficientemente
+ bajo para que el kernel sobreviva a un ataque sostenido.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Si sus servidores est&aacute;n conectados al Internet
+ mediante un T3 o mejor, puede ser prudente corregir manualmente
+ <varname>rtexpire</varname> y <varname>rtminexpire</varname>
+ por medio de &man.sysctl.8;. Nunca ponga ambos par&aacute;metros
+ a cero (a menos que des&eacute;e estrellar la m&aacute;quina).
+ Configurar ambos par&aacute;metros a 2 segundos debe ser
+ suficiente para proteger la tabla de ruteo de ataques.</para>
+ </sect2>
+
+ <sect2>
+ <title>Detalles de acceso con Kerberos y SSH</title>
+ <indexterm><primary><command>ssh</command></primary></indexterm>
+ <indexterm><primary>KerberosIV</primary></indexterm>
+
+ <para>Existen un par de detalles con respecto a
+ Kerberos y ssh que necesitan ser analizados si
+ pretende utilizarlos. Kerberos V es un excelente
+ protocolo de autentificaci&oacute;n, pero existen
+ errores en la versi&oacute;n kerberizada de
+ <application>telnet</application> y
+ <application>rlogin</application> que las hacen
+ inapropiadas para manejar flujos binarios.
+ Tambi&eacute;n, por omisi&oacute;n Kerberos no encripta una
+ sesi&oacute;n a menos que utilice la opci&oacute;n
+ <option>-x</option>. <application>ssh</application>
+ encripta todo por omisi&oacute;n.
+
+ <para>ssh funciona bastante bien en
+ cada caso excepto que reenv&iacute;a llaves de encriptaci&oacute;n
+ por omisi&oacute;n. Lo que esto significa es que si usted tiene
+ una estaci&oacute;n de trabajo segura manteniendo llaves que
+ le dan acceso al resto del sistema, y hace ssh a una
+ m&aacute;quina insegura, sus llaves son usables. Las llaves en
+ s&iacute; no son expuestas, pero ssh instala un puerto de
+ reenv&iacute;o durante la duraci&oacute;n de su login, y si
+ un atacante ha comprometido a <username>root</username>
+ en la m&aacute;quina insegura puede utilizar ese puerto
+ para usar sus llaves y ganar acceso a cualquier otra
+ m&aacute;quina que sus llaves abran.</para>
+
+ <para>Recomendamos que utilice ssh en
+ combinaci&oacute;n con Kerberos siempre que sea posible
+ para logins de staff.
+ <application>ssh</application> puede ser compilado con
+ soporte de Kerberos. Esto reduce su dependencia en
+ llaves ssh expuestas mientras al mismo tiempo
+ protegen las contrase&ntilde;as v&iacute;a Kerberos.
+ Las llaves ssh deben ser utilizadas solamente para tareas
+ autom&aacute;ticas desde m&aacute;quinas seguras
+ (algo que Kerberos no hace por incompatibilidad). Recomendamos
+ tambi&eacute;n que desactive el reenv&iacute;o de llaves
+ en la configuraci&oacute;n de ssh, o que haga uso de la
+ opci&oacute;n <literal>from=IP/DOMAIN</literal> que
+ ssh permite en su archivo
+ <filename>authorized_keys</filename> para hacer la llave
+ usable solamente a entidades que se firmen desde m&aacute;quinas
+ espec&iacute;ficas.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="crypt">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Bill</firstname>
+ <surname>Swingle</surname>
+ <contrib>Partes reescritas y actualizadas por </contrib>
+ </author>
+ </authorgroup>
+ <!-- 21 Mar 2000 -->
+ </sect1info>
+
+ <title>DES, MD5 y Crypt</title>
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>crypt</secondary>
+ </indexterm>
+
+ <indexterm><primary>crypt</primary></indexterm>
+ <indexterm><primary>DES</primary></indexterm>
+ <indexterm><primary>MD5</primary></indexterm>
+
+ <para>Cada usuario en un sistema &unix; tiene una contrase&ntilde;a
+ asociada con su cuenta. Parece obvio que estas contrase&ntilde;as
+ necesiten ser conocidas solamente por el usuario y por el sistema
+ operativo. Para mantener estas contrase&ntilde;as secretas, son
+ encriptadas con lo que se conoce como un <quote>hash de una pasada</quote>,
+ esto es, solo pueden ser facilmente encriptadas pero no
+ desencriptadas. En otras palabras, lo que acabamos de decir fu&eacute;
+ tan obvio que ni siquiera es verdad: el sistema operativo mismo no
+ conoce <emphasis>realmente</emphasis> la contrase&ntilde;a.
+ Solamente conoce la forma <emphasis>encriptada</emphasis> de
+ la contrase&ntilde;a. La &uacute;nica manera de obtener la
+ contrase&ntilde;a en <quote>texto plano</quote> es por medio
+ de una b&uacute;squeda de fuerza bruta en el espacio de
+ contrase&ntilde;as posibles.</para>
+
+ <para>Desafortunadamente la &uacute;nica manera segura de encriptar
+ contrase&ntilde;as cuando &unix; empez&oacute; a hacerlo estaba
+ basada en DES, la encriptaci&oacute;n de datos est&aacute;ndar.
+ Esto no era tanto problema para usuarios residentes en EU, &os;
+ tuvo que buscar una manera de cumplir con las leyes de EU y
+ retener compatibilidad con todos las otras variantes de &unix;
+ que todav&iacute;a utilizaban DES.</para>
+
+ <para>La soluci&oacute;n fu&eacute; dividir las librer&iacute;as
+ de encriptaci&oacute;n para que los usuarios de EU pudieran
+ instalar las librer&iacute;as DES y utilizar DES pero los
+ usuarios internacionales todav&iacute;a ten&iacute;an un
+ m&eacute;todo de encriptaci&oacute;n que pod&iacute;a ser
+ exportado. As&iacute; es como &os; lleg&oacute; a usar
+ MD5 como su m&eacute;todo de encriptaci&oacute;n por
+ omisi&oacute;n. Se cree que MD5 es m&aacute;s seguro que
+ DES, as&iacute; que la instalaci&oacute;n de DES es ofrecida primordialmente
+ por razones de compatibilidad.</para>
+
+ <sect2>
+ <title>Reconociendo su mecanismo de encriptaci&oacute;n</title>
+
+ <para>Antes de &os;&nbsp;4.4 <filename>libcrypt.a</filename> era
+ un enlace simb&oacute;lico apuntando a la librer&iacute;a que era
+ utilizada para encriptaci&oacute;n. &os;&nbsp;4.4 cambi&oacute;
+ <filename>libcrypt.a</filename> para brindar una librer&iacute;a
+ configurable de autentificaci&oacute;n hash de contrase&ntilde;as.
+ Actualmente la librer&iacute;a soporta funciones hash DES, MD5 y
+ Blowfish. Por omisi&oacute;n &os; utiliza MD5 para encriptar
+ contrase&ntilde;as.</para>
+
+ <para>Es muy sencillo identificar que m&eacute;todo de
+ encriptaci&oacute;n &os; tiene configurado para usar.
+ Examinando las contrase&ntilde;as encriptadas en el archivo
+ <filename>/etc/master.passwd</filename> en una manera.
+ Contrase&ntilde;as encriptadas con el hash MD5 son m&aacute;s
+ largas que aquellas encriptadas con el hash DES y tambi&eacute;n
+ inician con los caracteres
+ <literal>&dollar;1&dollar;</literal>. Las contrase&ntilde;as
+ que inician con <literal>&dollar;2a&dollar;</literal> est&aacute;n
+ encriptadas con la funci&oacute;n hash de Blowfish. Las
+ cadenas de contrase&ntilde;as DES no tienen ninguna
+ caracter&iacute;stica particular, pero son m&aacute;s
+ cortas que las contrase&ntilde;as MD5, y est&aacute;n
+ codificadas con un alfabeto de 64 caracteres el cual no
+ incluye el caracter <literal>&dollar;</literal>, por eso
+ una cadena relativamente corta que inicie con un signo de
+ d&oacute;lar es muy probable que sea una contrase&ntilde;a
+ DES.</para>
+
+ <para>El formato de contrase&ntilde;a utilizado para nuevas
+ contrase&ntilde;as est&aacute; controlado por la capacidad
+ <literal>passwd_format</literal> en
+ <filename>/etc/login.conf</filename>, la cual toma valores
+ de <literal>des</literal>, <literal>md5</literal> o
+ <literal>blf</literal>. Vea la p&aacute;gina de manual
+ &man.login.conf.5; para mayor informaci&oacute;n acerca de
+ las capacidades de login.</para>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="one-time-passwords">
+ <title>Contrase&ntilde;as de una sola vez</title>
+ <indexterm><primary>Contrase&ntilde;as de una sola vez</primary></indexterm>
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>Contrase&ntilde;as de una sola vez</secondary>
+ </indexterm>
+
+ <para>S/Key es un esquema de contrase&ntilde;a de una sola vez
+ en una funci&oacute;n de hash de una pasada. &os; utiliza el
+ hash MD4 para compatibilidad pero otros sistemas han usado
+ MD5 y DES-MAC. S/Key ha sido parte del sistema base de &os;
+ desde la versi&oacute;n 1.1.5 y es usado tambi&eacute;n en
+ un n&uacute;mero creciente de otros sistemas operativos. S/Key
+ es una marca registrada de Bell Communications Research, Inc.</para>
+
+ <para>Desde la versi&oacute;n 5.0 de &os;, S/Key ha sido
+ reemplazado con la funcionalidad equivalente OPIE
+ (One-time Passwords In Everything). OPIE usa hash MD5
+ por omisi&oacute;n.</para>
+
+ <para>Existen tres tipos de contrase&ntilde;as las cuales ser&aacute;n
+ discutidas abajo. La primera es la contrase&ntilde;a usual estilo
+ &unix; o Kerberos; llamaremos a esta una <quote>contrase&ntilde;a &unix;</quote>.
+ El segundo tipo es la contrase&ntilde;a de una sola vez la cual es
+ generada por el programa <command>key</command> de S/Key o por
+ el programa &man.opiekey.1; de OPIE, y aceptada por los programas
+ <command>keyinit</command> u &man.opiepasswd.1; y el prompt de
+ login; llamaremos a esta una <quote>contrase&ntilde;a de una sola vez</quote>.
+ El &uacute;ltimo tipo de contrase&ntilde;a es la contrase&ntilde;a
+ secreta que le da a los programas <command>key</command>/<command>opiekey</command>
+ (y a veces
+ <command>keyinit</command>/<command>opiepasswd</command>) la cual
+ es utilizada para generar contrase&ntilde;as de una sola vez;
+ llamaremos a esta una <quote>contrase&ntilde;a secreta</quote>
+ o solamente <quote>contrase&ntilde;a</quote> no calificada.</para>
+
+ <para>La contrase&ntilde;a secreta no tiene nada que ver con su
+ contrase&ntilde;a &unix;; pueden ser la misma pero esto no es
+ recomendable. Las contrase&ntilde;as secretas S/Key y OPIE no
+ est&aacute;n limitadas a 8 caracteres como las contrase&ntilde;as
+ &unix; antiguas<footnote><para>Bajo &os; la contrase&ntilde;a del
+ login est&aacute;ndar puede ser de hasta 128 caracteres de
+ longitud.</para></footnote>, pueden ser tan largas como quiera.
+ Contrase&ntilde;as con frases de seis o siete palabras muy largas
+ son bastante comunes. En la mayor parte, el sistema S/Key o el
+ OPIE opera completamente independiente del sistema de contrase&ntilde;as
+ &unix;.</para>
+
+ <para>Adem&aacute;s de la contrase&ntilde;a, existen dos piezas m&aacute;s
+ de datos que son importante para S/Key y OPIE. Una es la que es
+ conocida como la <quote>semilla</quote> o <quote>llave</quote>,
+ consistente de dos letras y cinco d&iacute;gitos. La otra es la
+ que es llamada la <quote>cuenta iterativa</quote>, un n&uacute;mero
+ entre 1 y 100. S/Key genera la contrase&ntilde;a de una sola vez
+ concatenando la semilla y la contrase&ntilde;a secreta,
+ entonces aplica el hash MD4/MD5 tantas veces como especifique
+ la cuenta iterativa y convirtiendo el resultado en seis palabras
+ cortas en ingl&eacute;s. Estas seis palabras en ingl&eacute;s
+ son su contrase&ntilde;a de una sola vez. El sistema de autentificaci&oacute;n
+ (principalmente PAM) mantiene un registro del uso de contrase&ntilde;as
+ de una sola vez, y el usuario es autentificado si el hash de la
+ contrase&ntilde;a brindada por el usuario es igual a la
+ contrase&ntilde;a previa. Como se utiliza un hash de una pasada
+ es imposible generar contrase&ntilde;as de una sola vez futuras
+ si una contrase&ntilde;a usada con &eacute;xito es capturada;
+ la cuenta iterativa es decrementada despues de cada login exitoso
+ para mantener al usuario y al programa login en sincron&iacute;a.
+ Cuanto la cuenta iterativa llega a 1, S/Key y OPIE deben ser
+ reinicializados.</para>
+
+ <para>Hay tres programas involucrados en cada sistema los
+ cuales discutiremos abajo. Los programas <command>key</command>
+ y <command>opiekey</command> aceptan una cuenta iterativa,
+ una semilla y una contrase&ntilde;a secreta, y generan
+ una contrase&ntilde;a de una sola vez o una lista consecutiva
+ de contrase&ntilde;as de una sola vez. Los programas
+ <command>keyinit</command> y <command>opiepasswd</command>
+ son utilizados para inicializar S/Key y OPIE respectivamente,
+ y para cambiar contrase&ntilde;as, cuentas iterativas o
+ semillas; toman ya sea una frase secreta, o una cuenta
+ iterativa y una contrase&ntilde;a de una sola vez. Los programas
+ <command>keyinfo</command> y <command>opieinfo</command>
+ examinan los archivos de credenciales relevantes
+ (<filename>/etc/skeykeys</filename> o
+ <filename>/etc/opiekeys</filename>) e imprime la cuenta
+ iterativa y semilla actual del usuario invocante.</para>
+
+ <para>Existen cuatro tipos de operaciones diferentes que cubriremos.
+ La primera es usando <command>keyinit</command> o
+ <command>opiepasswd</command> a trav&eacute;s de una conexi&oacute;n
+ segura para configurar contrase&ntilde;as de una sola vez por
+ primera vez, o para cambiar su contrase&ntilde;a o semilla.
+ La segunda operaci&oacute;n es utilizando <command>keyinit</command>
+ o <command>opiepasswd</command> sobre una conexi&oacute;n insegura,
+ en conjunto con <command>key</command> u <command>opiekey</command>
+ sobre una conexi&oacute;n segura, para hacer lo mismo. La tercera
+ es usando <command>key</command>/<command>opiekey</command> para
+ conectarse a trav&eacute;s de una conexi&oacute;n insegura.
+ La cuarta es usando <command>opiekey</command> o <command>key</command>
+ para generar un n&uacute;mero de llaves las cuales pueden ser escritas
+ o impresas para llev&aacute;rselas con usted al ir a alg&uacute;n
+ lugar que no cuente con conexiones seguras a ning&uacute;n lado.</para>
+
+ <sect2>
+ <title>Inicializaci&oacute;n de conexiones seguras</title>
+
+ <para>Para inicializar S/Key por primera vez, cambie su contrase&ntilde;a,
+ o cambie su semilla mientras esta conectado a trav&eacute;s de
+ una conexi&oacute;n segura (ej., en la consola de una m&aacute;quina
+ o v&iacute;a <application>ssh</application>), use el comando
+ <command>keyinit</command> sin ning&uacute;n par&aacute;metro
+ mientras est&aacute; conectado con su cuenta:</para>
+
+ <screen>&prompt.user; <userinput>keyinit</userinput>
+Adding unfurl:
+Reminder - Only use this method if you are directly connected.
+If you are using telnet or rlogin exit with no password and use keyinit -s.
+Enter secret password:
+Again secret password:
+
+ID unfurl s/key is 99 to17757
+DEFY CLUB PRO NASH LACE SOFT</screen>
+
+ <para>Para OPIE, es utilizado <command>opiepasswd</command>:</para>
+
+ <screen>&prompt.user; <userinput>opiepasswd -c</userinput>
+[grimreaper] ~ $ opiepasswd -f -c
+Adding unfurl:
+Only use this method from the console; NEVER from remote. If you are using
+telnet, xterm, or a dial-in, type ^C now or exit with no password.
+Then run opiepasswd without the -c parameter.
+Using MD5 to compute responses.
+Enter new secret pass phrase:
+Again new secret pass phrase:
+ID unfurl OTP key is 499 to4268
+MOS MALL GOAT ARM AVID COED
+</screen>
+
+ <para>En <prompt>Enter new secret pass phrase:</prompt> o
+ <prompt>Enter secret password:</prompt>, debe ingresar
+ una contrase&ntilde;a o frase. Recuerde, que esta no es la
+ contrase&ntilde;a que utilizar&aacute; para entrar, esta es
+ usada para generar sus llaves de una sola vez. La l&iacute;nea
+ <quote>ID</quote> da los par&aacute;metros de su instancia
+ en particular: su nombre de login, la cuenta iterativa y
+ semilla. Al hacer login el sistema recordar&aacute; estos
+ par&aacute;metros y los presentar&aacute; de nuevo para que
+ no tenga que recordarlos. La &uacute;ltima l&iacute;nea da
+ las contrase&eacute;as de una sola vez en particular que
+ corresponden a esos par&aacute;metros y su contrase&ntilde;a
+ secreta; si fuera a hacer nuevamente login de manera inmediata,
+ esta contrase&ntilde;a de una sola vez es la que deber&iacute;a
+ usar.</para>
+ </sect2>
+
+ <sect2>
+ <title>Inicializaci&oacute;n de conexiones inseguras</title>
+
+ <para>Para inicializar o cambiar su contrase&ntilde;a secreta
+ a trav&eacute;s de una conexi&oacute;n insegura, necesitar&aacute;
+ tener alguna conexi&oacute;n segura a alg&uacute;n lugar
+ donde pueda correr <command>key</command> u <command>opiekey</command>;
+ esto podr&iacute;a ser en la forma de un accesorio de escritorio
+ en una &macintosh;, o un prompt de shell en una m&aacute;quina
+ en la cual conf&iacute;e. Tambi&eacute;n necesitar&aacute; hacer
+ una cuenta iterativa (100 es probablemente un buen valor), y puede
+ realizar su propia semilla o utilizar una generada de manera
+ aleatoria. A trav&eacute;s de una conexi&oacute;n insegura
+ (hacia la m&aacute;quina que est&aacute; inicializando), utilice
+ el comando <command>keyinit -s</command>:</para>
+
+ <screen>&prompt.user; <userinput>keyinit -s</userinput>
+Updating unfurl:
+Old key: to17758
+Reminder you need the 6 English words from the key command.
+Enter sequence count from 1 to 9999: <userinput>100</userinput>
+Enter new key [default to17759]:
+s/key 100 to 17759
+s/key access password:
+s/key access password:<userinput>CURE MIKE BANE HIM RACY GORE</userinput>
+</screen>
+
+ <para>Para OPIE, necesita usar <command>opiepasswd</command>:</para>
+
+ <screen>&prompt.user; <userinput>opiepasswd</userinput>
+
+Updating unfurl:
+You need the response from an OTP generator.
+Old secret pass phrase:
+ otp-md5 498 to4268 ext
+ Response: GAME GAG WELT OUT DOWN CHAT
+New secret pass phrase:
+ otp-md5 499 to4269
+ Response: LINE PAP MILK NELL BUOY TROY
+
+ID mark OTP key is 499 gr4269
+LINE PAP MILK NELL BUOY TROY
+</screen>
+
+ <para>Para aceptar la semilla por omisi&oacute;n (la que
+ el programa <command>keyinit</command> llama de
+ manera confusa una <literal>key</literal>), presione
+ <keycap>Enter</keycap>. Entonces antes de proporcionar
+ una contrase&ntilde;a de acceso, cambiese a su conexi&oacute;n
+ segura o accesorio de escritorio S/Key, y dele el mismo
+ par&aacute;metro:</para>
+
+ <screen>&prompt.user; <userinput>key 100 to17759</userinput>
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password: <userinput>&lt;secret password&gt;</userinput>
+CURE MIKE BANE HIM RACY GORE</screen>
+
+ <para>O para OPIE:</para>
+
+ <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
+Using the MD5 algorithm to compute response.
+Reminder: Don't use opiekey from telnet or dial-in sessions.
+Enter secret pass phrase:
+GAME GAG WELT OUT DOWN CHAT
+</screen>
+
+ <para>Ahora regrese a la conexi&oacute;n insegura y copie la
+ contrase&ntilde;a de una sola vez generada al programa
+ relevante.</para>
+ </sect2>
+
+ <sect2>
+ <title>Generando una sola contrase&ntilde;a de una sola vez</title>
+
+ <para>Una vez que ha inicializado S/Key u OPIE, cuando haga login
+ se le presentar&aacute; un prompt como este:</para>
+
+<screen>&prompt.user; <userinput>telnet example.com</userinput>
+Trying 10.0.0.1...
+Connected to example.com
+Escape character is '^]'.
+
+FreeBSD/i386 (example.com) (ttypa)
+
+login: <userinput>&lt;username&gt;</userinput>
+s/key 97 fw13894
+Password: </screen>
+
+ <para>O para OPIE:</para>
+
+<screen>&prompt.user; <userinput>telnet example.com</userinput>
+Trying 10.0.0.1...
+Connected to example.com
+Escape character is '^]'.
+
+FreeBSD/i386 (example.com) (ttypa)
+
+login: <userinput>&lt;username&gt;</userinput>
+otp-md5 498 gr4269 ext
+Password: </screen>
+
+ <para>Como una nota aparte, el prompt de S/Key u OPIE cuentan con una
+ opci&oacute;n &uacute;til (no mostrada aqu&iacute;): si presiona
+ <keycap>Enter</keycap> en el prompt de contrase&ntilde;a, el
+ prompt activar&aacute; el eco, para que pueda ver lo que est&aacute;
+ tecleando. Esto puede ser extremadamente &uacute;til si est&aacute;
+ intentando teclear una contrase&ntilde;a a mano, como desde una
+ forma impresa.</para>
+
+ <indexterm><primary>MS-DOS</primary></indexterm>
+ <indexterm><primary>Windows</primary></indexterm>
+ <indexterm><primary>MacOS</primary></indexterm>
+
+ <para>En este punto necesita generar su contrase&ntilde;a de una
+ sola vez para responder a este prompt de login. Esto debe hacerse
+ en un sistema confiable en el que pueda ejecutar <command>key</command>
+ u <command>opiekey</command>. (Existen versiones de estos para DOS,
+ &windows; y &macos; tambi&eacute;n.) Ambos necesitan la cuenta iterativa
+ y la semilla como opciones de l&iacute;nea de comando. Puede cortar
+ y pegar estas desde el prompt de login en la m&aacute;quina a la
+ que se esta firmando.</para>
+
+ <para>En el sistema confiable:</para>
+
+ <screen>&prompt.user; <userinput>key 97 fw13894</userinput>
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password:
+WELD LIP ACTS ENDS ME HAAG</screen>
+
+ <para>Para OPIE:</para>
+
+ <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
+Using the MD5 algorithm to compute response.
+Reminder: Don't use opiekey from telnet or dial-in sessions.
+Enter secret pass phrase:
+GAME GAG WELT OUT DOWN CHAT</screen>
+
+ <para>Ahora que tiene su contrase&ntilde;a de una sola vez puede
+ continuar con el login:</para>
+
+ <screen>login: <userinput>&lt;username&gt;</userinput>
+s/key 97 fw13894
+Password: <userinput>&lt;return to enable echo&gt;</userinput>
+s/key 97 fw13894
+Password [echo on]: WELD LIP ACTS ENDS ME HAAG
+Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... </screen>
+
+ </sect2>
+
+ <sect2>
+ <title>Generando m&uacute;ltiples contrase&ntilde;as de una sola vez</title>
+
+ <para>A veces usted tiene que ir a lugares donde no hay
+ acceso a una m&aacute;quina confiable o a una conexi&oacute;n
+ segura. En este caso, es posible utilizar los comandos
+ <command>key</command> y <command>opiekey</command> para
+ generar un n&uacute;mero de contrase&ntilde;as de una sola
+ vez con anticipaci&oacute;n para imprimirlar y llev&aacute;rselas
+ con usted. Por ejemplo:</para>
+
+ <screen>&prompt.user; <userinput>key -n 5 30 zz99999</userinput>
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password: <userinput>&lt;secret password&gt;</userinput>
+26: SODA RUDE LEA LIND BUDD SILT
+27: JILT SPY DUTY GLOW COWL ROT
+28: THEM OW COLA RUNT BONG SCOT
+29: COT MASH BARR BRIM NAN FLAG
+30: CAN KNEE CAST NAME FOLK BILK</screen>
+
+ <para>O para OPIE:</para>
+
+ <screen>&prompt.user; <userinput>opiekey -n 5 30 zz99999</userinput>
+Using the MD5 algorithm to compute response.
+Reminder: Don't use opiekey from telnet or dial-in sessions.
+Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
+26: JOAN BORE FOSS DES NAY QUIT
+27: LATE BIAS SLAY FOLK MUCH TRIG
+28: SALT TIN ANTI LOON NEAL USE
+29: RIO ODIN GO BYE FURY TIC
+30: GREW JIVE SAN GIRD BOIL PHI</screen>
+
+ <para>El <option>-n 5</option> pide cinco llaves en secuencia, la
+ opci&oacute;n <option>30</option> especifica que ese debe ser el
+ &uacute;ltimo n&uacute;mero de iteraci&oacute;n. Note que son
+ impresas en el orden <emphasis>inverso</emphasis> de uso
+ eventual. Si es realmente paranoico, tal vez quiera escribir los
+ resultados a mano; de otra manera puede cortar y pegar hacia <command>lpr</command>.
+ Note que cada l&iacute;nea muestra la cuenta iterativa y la
+ contrase&ntilde;a de una sola vez; puede encontrar c&oacute;modo
+ tachar las contrase&ntilde;as seg&uacute;n las vaya utilizando.</para>
+ </sect2>
+
+ <sect2>
+ <title>Restringiendo el uso de contrase&ntilde;as &unix;</title>
+
+ <para>S/Key puede colocar restricciones en el uso de contrase&ntilde;as
+ &unix; basandose en el nombre de equipo, nombre de usuario, puerto de
+ terminal o direcci&oacute;n IP de una sesi&oacute;n de login.
+ Estas restricciones pueden encontrarse en el archivo de configuracio&acute;n
+ <filename>/etc/skey.access</filename>. La p&aacute;gina de manual
+ &man.skey.access.5; contiene m&aacute;s informaci&oacute;n sobre el
+ formato completo del archivo y detalla tambi&eacute;n algunas
+ precauciones de seguridad que hay que tomar en cuenta dependiendo
+ de este archivo para la seguridad.</para>
+
+ <para>Si no existe un archivo <filename>/etc/skey.access</filename>
+ (esto es por omisi&oacute;n en sistemas &os;&nbsp;4.X), entonces
+ a todos los usuarios se les permitir&aacute; utilizar contrase&ntilde;as
+ &unix;. Si el archivo existe, de todas maneras, entonces a todos
+ los usuarios se les requerir&aacute; la utilizaci&oacute;n de
+ S/Key a menos que se permita explicitamente otra forma por las
+ declaraciones de configuraci&oacute;n en el archivo
+ <filename>skey.access</filename>. En todos los casos, las
+ contrase&ntilde;as &unix; son permitidas en la consola.</para>
+
+ <para>Aqu&iacute; hay una muestra del archivo de configuraci&oacute;n
+ <filename>skey.access</filename> que ilustra las tres formas m&aacute;s
+ comunes de declaraciones de configuraci&oacute;n:</para>
+
+ <programlisting>permit internet 192.168.0.0 255.255.0.0
+permit user fnord
+permit port ttyd0</programlisting>
+
+ <para>La primera l&iacute;nea (<literal>permit internet</literal>)
+ permite a usuarios cuyas direcciones IP fuentes (las cuales son
+ vulnerables a imitaci&oacute;n) concuerden con los valores
+ y m&aacute;scara especificados, utilizar contrase&ntilde;as &unix;.
+ Esto no debe ser considerado un mecanismo de seguridad, sino un
+ medio de recordarle a usuarios autorizados que est&aacute;n
+ usando una red insegura y necesitan utilizar S/Key para
+ autentificaci&oacute;n.</para>
+
+ <para>La segunda l&iacute;nea (<literal>permit user</literal>)
+ permite al nombre de usuario especificado, en este caso
+ <username>fnord</username>, utilizar contrase&ntilde;as &unix;
+ en cualquier momento. Generalmente hablando, esto solo debe ser
+ usado para gente que no puede usar el programa <command>key</command>,
+ como aquellos con terminales tontas o los que son ineducables.</para>
+
+ <para>La tercera l&iacute;nea (<literal>permit port</literal>)
+ permite a todos los usuarios firmados en la l&iacute;nea de
+ terminal especificada utilizar contrase&ntilde;as &unix;;
+ esto puede ser usado para dial-ups.</para>
+
+ <para>OPIE puede restringir el uso de contrase&ntilde;as &unix;
+ bas&aacute;ndose en la direcci&oacute;n IP de una sesi&oacute;n
+ de login justo como lo hace S/Key. El archivo relevante es
+ <filename>/etc/opieaccess</filename>, el cual est&aacute; presente
+ por omisi&oacute;n en sistemas &os;&nbsp;5.0 o posteriores. Por
+ favor revise &man.opieaccess.5; para mayor informaci&oacute;n sobre
+ este archivo y que consideraciones de seguridad debe tener presente
+ a la hora de usarlo.</para>
+
+ <para>Aqu&iacute; hay un archivo <filename>opieaccess</filename> de muestra:</para>
+
+ <programlisting>permit 192.168.0.0 255.255.0.0</programlisting>
+
+ <para>Esta l&iacute;nea le permie a usuarios cuya direcci&oacute;n
+ IP fuente (la cual es vulnerable a imitaci&oacute;n) concuerde
+ con los valores y m&aacute;scara especificados, utilizar
+ contrase&ntilde;as &unix; en cualquier momento.</para>
+
+ <para>Si no concuerda ninguna regla en <filename>opieaccess</filename>,
+ por omisi&oacute;n se niegan los logins no-OPIE.</para>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="tcpwrappers">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Escrito por: </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <indexterm><primary>TCP Wrappers</primary></indexterm>
+
+ <title>TCP Wrappers</title>
+
+ <para>Cualquiera familiarizado con &man.inetd.8; ha escuchado
+ probablemente de <acronym>TCP</acronym> Wrappers en alg&uacute;n
+ momento. Pero pocos individuos parecen comprender
+ completamente su utilidad en un ambiente de red. Parece que
+ todos quieren instalar un firewall para manejar conexiones
+ de red. Mientras un firewall tiene una amplia variedad de
+ usos, hay cosas que un firewall no maneja como el env&iacute;o
+ de texto de regreso al originador de la conexi&oacute;n.
+ El software <acronym>TCP</acronym> hace esto y m&aacute;s.
+ En las siguientes secciones varias de las opciones de
+ <acronym>TCP</acronym> Wrappers ser&aacute;n discutidas,
+ y, cuando aplique, se brindar&aacute;n ejemplos de
+ l&iacute;neas de configuraci&oacute;n.</para>
+
+ <para>El software <acronym>TCP</acronym> Wrappers extiende
+ las habilidades de <command>inetd</command> para brindar
+ soporte para cada servidor daemon bajo su control.
+ Utilizando este m&eacute;todo es posible proveer soporte de
+ logs, regresar mensajes a conexiones, permitir a un daemon
+ aceptar solamente conexiones internas, etc. Mientras algunas
+ de estas opciones pueden ser provistas implementando un
+ firewall, esto agregar&aacute; no solamente una capa extra
+ de protecci&oacute;n sino que ir&aacute; m&aacute;s all&aacute;
+ del nivel de control que un firewall puede brindar.</para>
+
+ <para>La funcionalidad agregada de <acronym>TCP</acronym> Wrappers
+ no debe ser considerada un reemplazo de un buen firewall.
+ <acronym>TCP</acronym> Wrappers puede ser utilizado en
+ conjunto con un firewall o otra mejor&iacute;a de seguridad
+ aunque solo puede servir como una capa extra de protecci&oacute;n
+ para el sistema.</para>
+
+ <para>Ya que es una extensi&oacute;n a la configuraci&oacute;n
+ de <command>inetd</command>, se espera que el lector haya
+ leido la secci&oacute;n
+ <link linkend="network-inetd">configuraci&oacute;n de inetd</link>.</para>
+
+ <note>
+ <para>Mientras programas ejecutados por &man.inetd.8; no son
+ exactamente <quote>daemons</quote>, han sido llamados
+ tradicionalmente daemons. Este es el t&eacute;rmino que
+ usaremos en esta secci&oacute;n tambi&eacute;n.</para>
+ </note>
+
+ <sect2>
+ <title>Configuraci&oacute;n inicial</title>
+
+ <para>El &uacute;nico requerimiento para usar
+ <acronym>TCP</acronym> Wrappers en &os; es asegurarse
+ que el servidor <command>inetd</command> sea iniciado
+ desde <filename>rc.conf</filename> con la opci&oacute;n
+ <option>-Ww</option>; esta es la configuraci&oacute;n
+ por omisi&oacute;n. Por supuesto, se espera que
+ <filename>/etc/hosts.allow</filename> est&eacute; propiamente
+ configurado, pero &man.syslogd.8; aventar&aacute; mensajes
+ a los logs del sistema en estos casos.</para>
+
+ <note>
+ <para>A diferencia de otras implementaciones de <acronym>TCP</acronym>
+ Wrappers, el uso de <filename>hosts.deny</filename> ha sido
+ descontinuado. Todas las opciones de configuraci&oacute;n
+ deben ser colocadas en <filename>/etc/hosts.allow</filename>.</para>
+ </note>
+
+ <para>En la configuraci&oacute;n m&aacute;s simple, las
+ pol&iacute;ticas de conexi&oacute;n de daemons est&aacute;n
+ configuradas ya sea a permitir o bloquear, dependiendo de
+ las opciones en <filename>/etc/hosts.allow</filename>.
+ La configuraci&oacute;n por omisi&oacute;n en &os; es
+ permitir una conexi&oacute;n a cada daemon iniciado con
+ <command>inetd</command>. Cambiar esta configuraci&oacute;n
+ ser&aacute; discutido solamente despues de cubrir la
+ configuraci&oacute;n b&aacute;sica.</para>
+
+ <para>La configuraci&oacute;n b&aacute;sica usualmente
+ toma la forma de
+ <literal>daemon : direcci&oacute;n : acci&oacute;n</literal>.
+ Donde <literal>daemon</literal> es el nombre de daemon
+ el cual inicia <command>inetd</command>. La
+ <literal>direcci&oacute;n</literal> puede ser un nombre
+ de equipo v&aacute;lido, una direcci&oacute;n IP o
+ IPv6 encerrada en corchetes ([&nbsp;]). El campo de
+ acci&oacute;n puede ser permitir o denegar para el
+ dar el acceso apropiado. Tenga en mente que la
+ configuraci&oacute;n funciona en base a la primera
+ concordancia encontrada en la regla de sem&aacute;ntica,
+ esto significa que el archivo de configuraci&oacute;n es
+ explorado en orden ascendente por una regla que
+ concuerde. Cuando se encuentra una concordancia la
+ regla es aplicada y el proceso se detendr&aacute;.</para>
+
+ <para>Existen muchas otras opciones pero estas ser&aacute;n
+ explicadas en una secci&oacute;n posterior. Una l&iacute;nea
+ de configuraci&oacute;n simple puede ser facilmente
+ construida desde esa informaci&oacute;n solamente. Por
+ ejemplo para permitir conexiones <acronym>POP</acronym>3
+ por medio del daemon <filename role="package">mail/qpopper</filename>,
+ las siguientes l&iacute;neas deben ser agregadas a
+ <filename>hosts.allow</filename>:</para>
+
+ <programlisting># This line is required for POP3 connections:
+qpopper : ALL : allow</programlisting>
+
+ <para>Despues de a&ntilde;adir esta l&iacute;nea, <command>inetd</command>
+ necesitar&aacute; reiniciar. Esto puede lograrse usando el
+ comando &man.kill.1;, o con el par&aacute;metro <parameter>restart</parameter>
+ con <filename>/etc/rc.d/inetd</filename>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configuraci&oacute;n avanzada</title>
+
+ <para><acronym>TCP</acronym> Wrappers tiene
+ opciones avanzadas tambi&eacute;n; estas permitir&aacute;n
+ mayor control sobre la forma en que son manejadas las
+ conexiones. En algunos casos puede ser una buena idea
+ regresar un comentario a ciertos equipos o conexiones
+ de daemons. En otros casos, quiz&aacute;s se deba
+ registrar un archivo de log o enviar un correo al
+ administrador. Otras situaciones pueden requerir
+ el uso de un servicio para conexiones locales
+ solamente. Todo esto es posible a trav&eacute;s del
+ uso de opciones de configuraci&oacute;n conocidas
+ como <literal>comodines</literal>, caracteres de expansi&oacute;n
+ y ejecuci&oacute;n de comandos externos. Las diguientes dos
+ secciones est&aacute;n escritas para cubrir estas
+ situaciones.</para>
+
+ <sect3>
+ <title>Comandos externos</title>
+
+ <para>Suponga que ocurre una situaci&oacute;n donde una
+ conexi&oacute;n debe ser negada pero se debe mandar una raz&oacute;n
+ al individuo que intent&oacute; establecer esa conexi&oacute;n.
+ ¿Como se puede lograr? Esa acci&oacute;n puede hacerse
+ posible utilizando la opci&oacute;n <option>twist</option>.
+ Cuando un intento de conexi&oacute;n es hecha, se llamar&aacute;
+ a <option>twist</option> para ejecutar un comando de shell
+ o un script. Existe ya un ejemplo en el archivo
+ <filename>hosts.allow</filename>:</para>
+
+ <programlisting># The rest of the daemons are protected.
+ALL : ALL \
+ : severity auth.info \
+ : twist /bin/echo "No es bienvenido a utilizar %d desde %h."</programlisting>
+
+ <para>Este ejemplo muestra que el mensaje,
+ <quote>No es bienvenido a utilizar <literal>daemon</literal>
+ desde <literal>nombre de equipo</literal>.</quote> ser&aacute;
+ retornado para cualquier daemon no configurado previamente
+ en el archivo de acceso.
+ Esto es extremadamente &uacute;til para enviar una respuesta
+ de regreso al iniciador de la conexi&oacute;n justo despues
+ que la conexi&oacute;n establecida es tirada. Note que
+ cualquier mensaje regresado <emphasis>debe</emphasis>
+ ser encerrado entre comillas <literal>"</literal>;
+ no existen excepciones a esta regla.</para>
+
+ <warning>
+ <para>Puede ser posible lanzar un ataque de negaci&oacute;n
+ de servicio en el servidor si un atacante o grupo de
+ atacantes pueden sobrecargar estos daemons con peticiones
+ de conexi&oacute;n.</para>
+ </warning>
+
+ <para>Otra posibilidad es usar la opci&oacute;n <option>spawn</option>
+ en estos casos. Al igual que <option>twist</option>,
+ <option>spawn</option> niega implicitamente la conexi&oacute;n
+ y puede ser utilizada para correr comandos de shell externos
+ o scripts. A diferencia de <option>twist</option>,
+ <option>spawn</option> no mandar&aacute; una respuesta de
+ regreso al individuo que ha establecido la conexi&oacute;n.
+ Por ejemplo, considere la siguiente l&iacute;nea de
+ configuraci&oacute;n:</para>
+
+ <programlisting># No permitimos conexiones desde example.com:
+ALL : .example.com \
+ : spawn (/bin/echo %a from %h attempted to access %d &gt;&gt; \
+ /var/log/connections.log) \
+ : deny</programlisting>
+
+ <para>Esto negar&aacute; todos los intentos de conexi&oacute;n
+ desde el dominio <hostid role="fqdn">*.example.com</hostid>;
+ simultaneamente haciendo un log del nombre del equipo,
+ direcci&oacute;n <acronym>IP</acronym> y el daemon al
+ que se intent&oacute; accesar en el archivo
+ <filename>/var/log/connections.log</filename>.</para>
+
+ <para>Adem&aacute;s de la sustituci&oacute;n de caracteres ya
+ explicada arriba, ej. %a, existen unas cuantas m&aacute;s.
+ Vea la p&aacute;gina de manual &man.hosts.access.5; para
+ la lista completa.</para>
+ </sect3>
+
+ <sect3>
+ <title>Opciones comod&iacute;n</title>
+
+ <para>Hasta el momento el ejemplo <literal>ALL</literal> ha sido
+ utilizado continuamente a lo largo de los ejemplos. Existen
+ otras opciones que extienden un poco m&aacute;s la funcionalidad.
+ Para ejemplificar, <literal>ALL</literal> puede ser usado para
+ concordar con cualquier instancia ya sea de daemon, dominio o
+ direcci&oacute;n <acronym>IP</acronym>. Otro comod&iacute;n
+ dsponible es <literal>PARANOID</literal> el cual puede ser
+ usado para concordar con cualquier equipo que brinde una
+ direcci&oacute;n <acronym>IP</acronym> que puede estar
+ falsificada. En otras palabras, <literal>paranoid</literal>
+ puede ser usado para definir una acci&oacute;n a tomar
+ siempre que una conexi&oacute;n sea hecha desde una
+ direcci&oacute;n <acronym>IP</acronym> que difiera de su
+ nombre de equipo. El siguiente ejemplo puede arrojar m&aacute;s
+ luz en esta discusi&oacute;n:</para>
+
+ <programlisting># Bloquear peticiones posiblemente falsificadas a sendmail:
+sendmail : PARANOID : deny</programlisting>
+
+ <para>En ese ejemplo todas las peticiones de conexi&oacute;n
+ a <command>sendmail</command> que tengan una
+ direcci&oacute;n <acronym>IP</acronym> que var&iacute;e
+ de su nombre de equipo seran negadas.</para>
+
+ <caution>
+ <para>Utilizando <literal>PARANOID</literal> puede invalidar
+ servidores si el cliente o servidor tiene una configuraci&oacute;n
+ de <acronym>DNS</acronym> da&ntilde;ada. Se recomienda
+ precauci&oacute;n del administrador.</para>
+ </caution>
+
+ <para>Para aprender m&aacute;s acerca de comodines y sus
+ funcionalidades asociadas, vea la p&aacute;gina de
+ manual &man.hosts.access.5;.</para>
+
+ <para>Antes de que cualquiera de las l&iacute;neas de
+ configuraci&oacute;n espec&iacute;fica de arriba
+ funcione, la primera l&iacute;nea debe ser comentada
+ en <filename>hosts.allow</filename>. Esto fu&eacute;
+ especificado al principio de esta secci&oacute;n.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="kerberosIV">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Mark</firstname>
+ <surname>Murray</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Mark</firstname>
+ <surname>Dapoz</surname>
+ <contrib>Basado en una contribuci&oacute;n de </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title><application>KerberosIV</application></title>
+
+ <para>Kerberos es un sistema/protocolo agregado para red que le permite
+ a usuarios autentificarse a trav&eacute;s de los servicios de un
+ servidor seguro. Servicios como login remoto, copia remota, copias
+ de archivo inter-sistemas seguras y otras tareas de riesgo son
+ hechas considerablemente seguras y m&aacute;s controlables.</para>
+
+ <para>Las siguientes instrucciones pueden usarse como una gu&iacute;a
+ para configurar Kerberos como se distribuye para &os;. De todas
+ maneras, debe referirse a las p&aacute;ginas de manual relevantes
+ para una descripci&oacute;n completa.</para>
+
+ <sect2>
+ <title>Instalando <application>KerberosIV</application></title>
+
+ <indexterm><primary>MIT</primary></indexterm>
+ <indexterm>
+ <primary>KerberosIV</primary>
+ <secondary>instalaci&oacute;n</secondary>
+ </indexterm>
+ <para>Kerberos es un componente &oacute;ptimo de &os;. La manera
+ m&aacute;s f&aacute;cil de instalar este software es
+ seleccionando la distribuci&oacute;n <literal>krb4</literal> o
+ <literal>krb5</literal> en <application>sysinstall</application>
+ durante la instalaci&oacute;n inicial de &os;. Esto
+ instalar&aacute; la implementaci&oacute;n de Kerberos
+ <quote>eBones</quote> (KerberosIV) o
+ <quote>Heimdal</quote> (Kerberos5).
+ Estas implementaciones son incluidas debido a que est&aacute;n
+ desarrolladas fuera de EU/Canada y estaban as&iacute; disponibles
+ para propietarios de sistemas fuera de estos pa&iacute;ses
+ durante la era restrictiva de control de exportaciones en c&oacute;digo
+ criptogr&aacute;fico desde EU.</para>
+
+ <para>Alternativamente, la implementaci&oacute;n de Kerberos
+ del MIT est&aacute; disponible en la colecci&oacute;n
+ de ports como
+ <filename role="package">security/krb5</filename>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Creando la base de datos inicial</title>
+
+ <para>Esto es hecho en el servidor Kerberos solamente. Primero
+ aseg&uacute;rese que no tiene bases de datos antiguas de
+ Kerberos. Debe cambiarse al directorio <filename>/etc/kerberosIV</filename>
+ y revisar que solo los siguientes archivos est&eacute;n
+ presentes:</para>
+
+ <screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput>
+&prompt.root; <userinput>ls</userinput>
+README krb.conf krb.realms</screen>
+
+ <para>Si existe cualquier archivo adicional (como <filename>principal.*</filename>
+ o <filename>master_key</filename>), entonces utilice el
+ comando <command>kdb_destroy</command> para destruir la base
+ de datos antigua de Kerberos, o si Kerberos no est&aacute;
+ corriendo, simplemente borre los archivos adicionales.</para>
+
+ <para>Ahora debe editar los archivos <filename>krb.conf</filename>
+ y <filename>krb.realms</filename> para definir su dominio
+ Kerberos. En este caso el dominio ser&aacute; <literal>EXAMPLE.COM</literal>
+ y el servidor es <hostid role="fqdn">grunt.example.com</hostid>.
+ Editamos o creamos el archivo <filename>krb.conf</filename>:</para>
+
+ <screen>&prompt.root; <userinput>cat krb.conf</userinput>
+EXAMPLE.COM
+EXAMPLE.COM grunt.example.com admin server
+CS.BERKELEY.EDU okeeffe.berkeley.edu
+ATHENA.MIT.EDU kerberos.mit.edu
+ATHENA.MIT.EDU kerberos-1.mit.edu
+ATHENA.MIT.EDU kerberos-2.mit.edu
+ATHENA.MIT.EDU kerberos-3.mit.edu
+LCS.MIT.EDU kerberos.lcs.mit.edu
+TELECOM.MIT.EDU bitsy.mit.edu
+ARC.NASA.GOV trident.arc.nasa.gov</screen>
+
+ <para>En este caso, los otros dominios no necesitan estar ah&iacute;.
+ Est&aacute;n aqu&iacute; como un ejemplo de como puede hacerse a una
+ m&aacute;quina consciente de dominios m&uacute;ltiples. Tal vez
+ no des&eacute;e incluirlos por simplicidad.</para>
+
+ <para>La primera l&iacute;nea nombra el dominio en el cual el
+ sistema trabaja. Las otras l&iacute;neas contienen entradas
+ dominio/equipo. El primer componente en una l&iacute;nea es un
+ dominio, y el segundo es un equipo en ese dominio que est&aacute;
+ actuando como un <quote>centro de distribuci&oacute;n de llaves</quote>.
+ Las palabras <literal>admin server</literal> que siguen al
+ nombre de equipo significan que ese equipo tambi&eacute;n
+ brinda un servidor de base da datos administrativo. Para una
+ explicaci&oacute;n m&aacute;s completa de estos t&eacute;rminos,
+ consulte por favor las p&aacute;ginas de manual de Kerberos.</para>
+
+ <para>Ahora tenemos que agregar <hostid role="fqdn">grunt.example.com</hostid>
+ al dominio <literal>EXAMPLE.COM</literal> y tambi&eacute;n agregar
+ una entrada para poner todos los equipos en el dominio
+ <hostid role="domainname">.example.com</hostid>
+ Kerberos <literal>EXAMPLE.COM</literal>. El archivo
+ <filename>krb.realms</filename> puede ser actualizado como
+ sigue:</para>
+
+ <screen>&prompt.root; <userinput>cat krb.realms</userinput>
+grunt.example.com EXAMPLE.COM
+.example.com EXAMPLE.COM
+.berkeley.edu CS.BERKELEY.EDU
+.MIT.EDU ATHENA.MIT.EDU
+.mit.edu ATHENA.MIT.EDU</screen>
+
+ <para>De nuevo, los otros dominios no necesitan estar ah&iacute;. Est&aacute;n
+ aqu&iacute; como un ejemplo de como una m&aacute;quina puede hacerse consciente
+ de dominios m&uacute;ltiples. Tal vez des&eacute;e eliminarlos para
+ simplificar las cosas.</para>
+
+ <para>a primera l&iacute;nea pone al sistema <emphasis>espec&iacute;fico</emphasis>
+ en el dominio nombrado. El resto de las l&iacute;neas muestran como
+ poner por omisi&oacute;n sistemas de un subdominio particular
+ a un dominio Kerberos.</para>
+
+ <para>Ahora estamos listos para crear la base de datos. Esta solo
+ necesita correr en el servidor Kerberos (o centro de distribuci&oacute;n
+ de llaves). Ejecute el comando <command>kdb_init</command> para
+ hacer esto:</para>
+
+ <screen>&prompt.root; <userinput>kdb_init</userinput>
+<prompt>Realm name [default ATHENA.MIT.EDU ]:</prompt> <userinput>EXAMPLE.COM</userinput>
+You will be prompted for the database Master Password.
+It is important that you NOT FORGET this password.
+
+<prompt>Enter Kerberos master key:</prompt> </screen>
+
+ <para>Ahora tenemos que salvar la llave para que los servidores en
+ la m&aacute;quina local puedan recogerla. Use el comando
+ <command>kstash</command> para hacer esto:</para>
+
+ <screen>&prompt.root; <userinput>kstash</userinput>
+
+<prompt>Enter Kerberos master key:</prompt>
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!</screen>
+
+ <para>Esto salva la contrase&ntilde;a encriptada
+ maestra en <filename>/etc/kerberosIV/master_key</filename>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Haciendo que corra todo</title>
+
+ <indexterm>
+ <primary>KerberosIV</primary>
+ <secondary>encendido inicial</secondary>
+ </indexterm>
+
+ <para>
+ <para>Dos datos principales necesitan ser agregados a la base de
+ datos para <emphasis>cada</emphasis> sistema que estar&aacute;
+ asegurado con Kerberos. Sus nombres son <literal>kpasswd</literal> y
+ <literal>rcmd</literal>. Estos dos datos est&aacute;n hechos para
+ cada sistema, con la instancia siendo el nombre del sistema
+ individual.</para>
+
+ <para>Estos daemons, <application>kpasswd</application> y
+ <application>rcmd</application> le permiten a otros sistemas
+ cambiar contrase&ntilde;as de Kerberos y ejecutar comandos
+ como &man.rcp.1;, &man.rlogin.1; y &man.rsh.1;.</para>
+
+ <para>Ahora vamos a a&ntilde;adir estas entradas:</para>
+
+ <screen>&prompt.root; <userinput>kdb_edit</userinput>
+Opening database...
+
+<prompt>Enter Kerberos master key:</prompt>
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+<prompt>Principal name:</prompt> <userinput>passwd</userinput>
+<prompt>Instance:</prompt> <userinput>grunt</userinput>
+
+&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>
+
+Principal: passwd, Instance: grunt, kdc_key_ver: 1
+<prompt>New Password:</prompt> &lt;---- enter RANDOM here
+Verifying password
+
+<prompt>New Password:</prompt> &lt;---- enter RANDOM here
+
+<prompt>Random password [y] ?</prompt> <userinput>y</userinput>
+
+Principal's new key version = 1
+<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
+<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
+<prompt>Attributes [ 0 ] ?</prompt>
+Edit O.K.
+<prompt>Principal name:</prompt> <userinput>rcmd</userinput>
+<prompt>Instance:</prompt> <userinput>grunt</userinput>
+
+&lt;Not found&gt;, <prompt>Create [y] ?</prompt>
+
+Principal: rcmd, Instance: grunt, kdc_key_ver: 1
+<prompt>New Password:</prompt> &lt;---- enter RANDOM here
+Verifying password
+
+<prompt>New Password:</prompt> &lt;---- enter RANDOM here
+
+<prompt>Random password [y] ?</prompt>
+
+Principal's new key version = 1
+<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
+<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
+<prompt>Attributes [ 0 ] ?</prompt>
+Edit O.K.
+<prompt>Principal name:</prompt> &lt;---- null entry here will cause an exit</screen>
+ </sect2>
+
+ <sect2>
+ <title>Creando el archivo de servidor</title>
+
+ <para>Ahora tenemos que extraer todas las instancias que definen
+ los servicios en cada m&aacute;quina. Para esto usamos el
+ comando <command>ext_srvtab</command>. Esto crear&aacute; un
+ archivo que debe ser copiado o movido <emphasis>por medios
+ seguros</emphasis> a cada cliente de Kerberos
+ en el directorio <filename>/etc/kerberosIV</filename>.
+ Este archivo debe estar presente en cada servidor y cliente, y es
+ crucial para la operaci&oacute;n de Kerberos.</para>
+
+
+ <screen>&prompt.root; <userinput>ext_srvtab grunt</userinput>
+<prompt>Enter Kerberos master key:</prompt>
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Generating 'grunt-new-srvtab'....</screen>
+
+ <para>Ahora, este comando solo genera un archivo temporal el cual
+ debe ser renombrado a <filename>srvtab</filename> para que todos
+ los servidores puedan recogerlo. Utilice el comando
+ &man.mv.1; para moverlo al lugar correcto en el sistema
+ original:</para>
+
+ <screen>&prompt.root; <userinput>mv grunt-new-srvtab srvtab</userinput></screen>
+
+ <para>Si el archivo es para un sistema cliente, y la red no se considera
+ segura, entonces copie el
+ <filename><replaceable>client</replaceable>-new-srvtab</filename> a un
+ medio removible y transportelo por medios f&iacute;sicos seguros.
+ Aseg&uacute;rese de renombrarlo a <filename>srvtab</filename> en el
+ directorio <filename>/etc/kerberosIV</filename> del cliente, y
+ aseg&uacute;rese que tiene modo 600:</para>
+
+ <screen>&prompt.root; <userinput>mv grumble-new-srvtab srvtab</userinput>
+&prompt.root; <userinput>chmod 600 srvtab</userinput></screen>
+ </sect2>
+
+ <sect2>
+ <title>Poblando la base de datos</title>
+
+ <para>Ahora tenemos que agregar algunas entradas de usuarios en la
+ base de datos. Primero vamos a crear una entrada para el usuario
+ <username>jane</username>. Utilice el comando
+ <command>kdb_edit</command> para hacer esto:</para>
+
+ <screen>&prompt.root; <userinput>kdb_edit</userinput>
+Opening database...
+
+<prompt>Enter Kerberos master key:</prompt>
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+<prompt>Principal name:</prompt> <userinput>jane</userinput>
+<prompt>Instance:</prompt>
+
+&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>
+
+Principal: jane, Instance: , kdc_key_ver: 1
+<prompt>New Password:</prompt> &lt;---- enter a secure password here
+Verifying password
+
+<prompt>New Password:</prompt> &lt;---- re-enter the password here
+Principal's new key version = 1
+<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
+<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
+<prompt>Attributes [ 0 ] ?</prompt>
+Edit O.K.
+<prompt>Principal name:</prompt> &lt;---- null entry here will cause an exit</screen>
+ </sect2>
+
+ <sect2>
+ <title>Prob&aacute;ndolo todo</title>
+
+ <para>Primero tenemos que iniciar los daemons de Kerberos. Note que
+ si tiene correctamente editado su <filename>/etc/rc.conf</filename>
+ entonces esto suceder&aacute; automaticamente cuando reinicie.
+ Esto solamente es necesario el el servidor Kerberos. Los clientes
+ Kerberos tomar&aacute;n automaticamente lo que necesiten desde
+ el directorio <filename>/etc/kerberosIV</filename>.</para>
+
+ <screen>&prompt.root; <userinput>kerberos &amp;</userinput>
+Kerberos server starting
+Sleep forever on error
+Log file is /var/log/kerberos.log
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+
+Current Kerberos master key version is 1
+Local realm: EXAMPLE.COM
+&prompt.root; <userinput>kadmind -n &amp;</userinput>
+KADM Server KADM0.0A initializing
+Please do not use 'kill -9' to kill this job, use a
+regular kill instead
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!</screen>
+
+ <para>Ahora podemos tratar usando el comando <command>kinit</command>
+ para obtener un boleto para el ID <username>jane</username>
+ que creamos arriba:</para>
+
+ <screen>&prompt.user; <userinput>kinit jane</userinput>
+MIT Project Athena (grunt.example.com)
+Kerberos Initialization for "jane"
+<prompt>Password:</prompt> </screen>
+
+ <para>Trate de listar los tokens usando <command>klist</command> para ver
+ si realmente los tenemos:</para>
+
+ <screen>&prompt.user; <userinput>klist</userinput>
+Ticket file: /tmp/tkt245
+Principal: jane@EXAMPLE.COM
+
+ Issued Expires Principal
+Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
+
+ <para>Ahora trate de cambiar la contrase&ntilde;a usando
+ &man.passwd.1; para revisar si el daemon <application>kpasswd</application>
+ puede obtener autorizaci&oacute;n para la base de datos
+ Kerberos:</para>
+
+ <screen>&prompt.user; <userinput>passwd</userinput>
+realm EXAMPLE.COM
+<prompt>Old password for jane:</prompt>
+<prompt>New Password for jane:</prompt>
+Verifying password
+<prompt>New Password for jane:</prompt>
+Password changed.</screen>
+ </sect2>
+
+ <sect2>
+ <title>A&ntilde;adiendo privilegios <command>su</command></title>
+
+ <para>Kerberos nos permite dar a <emphasis>cada</emphasis>
+ usuario que necesite privilegios de <username>root</username>
+ su propia contrase&ntilde;a &man.su.1; <emphasis>separada</emphasis>.
+ Ahora podemos agregar un ID que est&eacute; autorizado a
+ &man.su.1; <username>root</username>. Esto es controlado
+ teniendo una instancia de <username>root</username>
+ asociada con una principal. Usando <command>kdb_edit</command>
+ podemos crear la entrada <literal>jane.root</literal> en la
+ base de datos Kerberos:</para>
+
+ <screen>&prompt.root; <userinput>kdb_edit</userinput>
+Opening database...
+
+<prompt>Enter Kerberos master key:</prompt>
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+<prompt>Principal name:</prompt> <userinput>jane</userinput>
+<prompt>Instance:</prompt> <userinput>root</userinput>
+
+&lt;Not found&gt;, Create [y] ? y
+
+Principal: jane, Instance: root, kdc_key_ver: 1
+<prompt>New Password:</prompt> &lt;---- enter a SECURE password here
+Verifying password
+
+<prompt>New Password:</prompt> &lt;---- re-enter the password here
+
+Principal's new key version = 1
+<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
+<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt> <userinput>12</userinput> &lt;--- Keep this short!
+<prompt>Attributes [ 0 ] ?</prompt>
+Edit O.K.
+<prompt>Principal name:</prompt> &lt;---- null entry here will cause an exit</screen>
+
+ <para>Ahora trate de obtener los tokens para asegurarse que funcione:</para>
+
+ <screen>&prompt.root; <userinput>kinit jane.root</userinput>
+MIT Project Athena (grunt.example.com)
+Kerberos Initialization for "jane.root"
+<prompt>Password:</prompt></screen>
+
+ <para>Ahora necesitamos agregar al usuario al archivo de <username>root</username>
+ <filename>.klogin</filename>:</para>
+
+ <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
+jane.root@EXAMPLE.COM</screen>
+
+ <para>Ahora trate de hacer &man.su.1;:</para>
+
+ <screen>&prompt.user; <userinput>su</userinput>
+<prompt>Password:</prompt></screen>
+
+ <para>y heche un vistazo a que tokens tenemos:</para>
+
+ <screen>&prompt.root; <userinput>klist</userinput>
+Ticket file: /tmp/tkt_root_245
+Principal: jane.root@EXAMPLE.COM
+
+ Issued Expires Principal
+May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
+ </sect2>
+
+ <sect2>
+ <title>Utilizando otros comandos</title>
+
+ <para>En un ejemplo anterior, creamos creamos un principal
+ llamado <literal>jane</literal> con una instancia <literal>root</literal>.
+ Esto fu&eacute; basado en un usuario con el mismo nombre del
+ principal, y esto es por omisi&oacute;n en Kerberos; que
+ <literal>&lt;principal&gt;.&lt;instancia&gt;</literal> de la
+ forma
+ <literal>&lt;nombre de usuario&gt;.</literal><username>root</username>
+ permitir&aacute; que <literal>&lt;nombre de usuario&gt;</literal>
+ haga &man.su.1; a <username>root</username> si las entradas necesarias
+ est&aacute;n en el archivo <filename>.klogin</filename> en el
+ directorio home de <username>root</username>:</para>
+
+ <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
+jane.root@EXAMPLE.COM</screen>
+
+ <para>De la misma manera, si un usuario tiene en su propio directorio home
+ l&iacute;neas de la forma:</para>
+
+ <screen>&prompt.user; <userinput>cat ~/.klogin</userinput>
+jane@EXAMPLE.COM
+jack@EXAMPLE.COM</screen>
+
+ <para>Esto permite a cualquiera en el dominio <literal>EXAMPLE.COM</literal>
+ que se ha autentificado como <username>jane</username> o como
+ <username>jack</username> (v&iacute;a <command>kinit</command>, ver
+ arriba) para accesar la cuenta de <username>jane</username> o
+ archivos en este sistema (<hostid>grunt</hostid>) v&iacute;a
+ &man.rlogin.1;, &man.rsh.1; o
+ &man.rcp.1;.</para>
+
+ <para>Por ejemplo, <username>jane</username> se firma ahora en otro sistema
+ usando Kerberos:</para>
+
+ <screen>&prompt.user; <userinput>kinit</userinput>
+MIT Project Athena (grunt.example.com)
+<prompt>Password:</prompt>
+&prompt.user; <userinput>rlogin grunt</userinput>
+Last login: Mon May 1 21:14:47 from grumble
+Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+
+FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
+
+ <para>O <username>jack</username> se firma a la cuenta de <username>jane</username> en la misma
+ m&aacute;quina (<username>jane</username> habiendo
+ configurado el archivo <filename>.klogin</filename>
+ como est&aacute; arriba, y la persona a cargo de
+ Kerberos habiendo configurado un principal
+ <emphasis>jack</emphasis> con una instancia nula):</para>
+
+ <screen>&prompt.user; <userinput>kinit</userinput>
+&prompt.user; <userinput>rlogin grunt -l jane</userinput>
+MIT Project Athena (grunt.example.com)
+<prompt>Password:</prompt>
+Last login: Mon May 1 21:16:55 from grumble
+Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="kerberos5">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tillman</firstname>
+ <surname>Hodgson</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Mark</firstname>
+ <surname>Murray</surname>
+ <contrib>Basado en una contribuci&oacute;n de </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title><application>Kerberos5</application></title>
+
+ <para>Cada release de &os; posterior a &os;-5.1 incluye
+ soporte solamente para <application>Kerberos5</application>.
+ Por esta raz&oacute;n <application>Kerberos5</application> es
+ la &uacute;nica versi&oacute;n inclu&iacute;da, y su configuraci&oacute;n
+ es similar en muchos aspectos a la de <application>KerberosIV</application>.
+ La siguiente informaci&oacute;n solo aplica a
+ <application>Kerberos5</application> en releases de
+ &os;-5.0 o posteriores. Los usuarios que des&eacute;en
+ utilizar <application>KerberosIV</application> pueden
+ instalar el port
+ <filename role="package">security/krb4</filename>.</para>
+
+ <para><application>Kerberos</application> es un sistema/protocolo
+ agregado para red que le permite
+ a usuarios autentificarse a trav&eacute;s de los servicios de un
+ servidor seguro. Servicios como login remoto, copia remota, copias
+ de archivo inter-sistemas seguras y otras tareas de riesgo son
+ hechas considerablemente seguras y m&aacute;s controlables.</para>
+
+ <para><application>Kerberos</application> puede ser descrito como
+ un sistema proxy identificador-verificador. Tambi&eacute;n
+ puede ser descrito como un sistema confiable de autentificaci&oacute;n
+ de terceros.
+ <application>Kerberos</application> brinda solamente
+ una funci&oacute;n &mdash; la autenficaci&oacute;n segura de
+ usuarios en la red. No proporciona funciones de autorizaci&oacute;n
+ (lo que los usuarios tienen permitido hacer) o funciones de
+ auditor&iacute;a (lo que esos usuarios hicieron).
+ Despues de que un servidor y cliente han usado
+ <application>Kerberos</application> para probar su identidad,
+ pueden tambi&eacute;n encriptar todas sus comunicaciones para
+ asegurar privacidad e integridad de datos mientras continuan
+ con sus funciones.</para>
+
+ <para>Por lo tanto es altamente recomendable que
+ <application>Kerberos</application> sea utilizado con otros
+ m&eacute;todos de seguridad que brinden servicios de
+ autorizaci&oacute;n y auditor&iacute;a.</para>
+
+ <para>Las siguientes instrucciones pueden utilizarse como una gu&iacute;a
+ para configurar <application>Kerberos</application> como se
+ distribuye en &os;. De todas maneras, se debe dirigir a las p&aacute;ginas
+ de manual relevantes para una descripci&oacute;n completa.</para>
+
+ <para>Para prop&oacute;sitos de demostrar una instalaci&oacute;n
+ <application>Kerberos</application>, los varios espacios de
+ nombre ser&aacute;n manejados como sigue:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>El dominio <acronym>DNS</acronym> (<quote>zona</quote>)
+ ser&aacute; example.org.</para>
+ </listitem>
+
+ <listitem>
+ <para>El dominio <application>Kerberos</application> (realm)
+ ser&aacute; EXAMPLE.ORG.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Por favor utilice nombres de dominio reales al
+ configurar <application>Kerberos</application> incluso si
+ pretende ejecutarlo internamente. Esto evita problemas
+ de <acronym>DNS</acronym> y asegura la interoperaci&oacute;n
+ con otros dominios <application>Kerberos</application>.</para>
+ </note>
+
+ <sect2>
+ <title>Historia</title>
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>history</secondary>
+ </indexterm>
+
+ <para><application>Kerberos</application> fu&eacute; creado
+ por el <acronym>MIT</acronym> como una soluci&oacute;n
+ a los problemas de seguridad de la red.
+ El protocolo <application>Kerberos</application> utiliza
+ criptograf&iacute;a fuerte para que un cliente pueda
+ probar su identidad a un servidor (y viceversa) a
+ trav&eacute;s de una conexi&oacute;n de red insegura.</para>
+
+ <para><application>Kerberos</application> es el nombre de un
+ protocolo de autentificaci&oacute;n de red y un adjetivo
+ para describir programas que implementan el programa
+ (<application>Kerberos</application> telnet, por ejemplo).
+ La versi&oacute;n actual del protocolo es la 5, descrita en
+ <acronym>RFC</acronym>&nbsp;1510.</para>
+
+ <para>Varias implementaciones libres de este protocolo est&aacute;n
+ disponibles, cubriendo un amplio rango de sistemas operativos.
+ El Massachusetts Institute of Technology (<acronym>MIT</acronym>),
+ donde <application>Kerberos</application> fu&eacute; originalmente
+ desarrollado, continua desarrollando su paquete
+ <application>Kerberos</application>. Es comunmente usado en los
+ <acronym>EU</acronym> como un producto criptogr&aacute;fico, y
+ como tal ha sido historicamente afectado por las regulaciones de
+ exportaci&oacute;n de <acronym>EU</acronym>.
+ El <application>Kerberos</application> del <acronym>MIT</acronym>
+ est&aacute; disponible como un port
+ (<filename role="package">security/krb5</filename>). Heimdal
+ <application>Kerberos</application> es otra implementaci&oacute;n
+ de la versi&oacute;n 5, y fue desarrollada explicitamente fuera
+ de los <acronym>EU</acronym> para evitar las regulaciones de
+ exportaci&oacute;n (y es por eso inclu&iacute;da en variantes
+ &unix; no comerciales). La distribuci&oacute;n Heimdal
+ <application>Kerberos</application> est&aacute; disponible
+ como un port
+ (<filename role="package">security/heimdal</filename>), y una
+ instalaci&oacute;n m&iacute;nima viene inclu&iacute;da en la
+ instalaci&oacute;n base de &os;.</para>
+
+ <para>Para alcanzar la mayor audiencia, estas instrucciones asumen
+ el uso de la distribuci&oacute;n Heimdal inclu&iacute;da en &os;.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Configurando un <acronym>KDC</acronym> Heimdal</title>
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>Dentro de distribuci&oacute;n de llaves</secondary>
+ </indexterm>
+
+ <para>El centro de distribuci&oacute;n de llaves (<acronym>KDC</acronym>,
+ Key Distribution Center) es el servicio centralizado de autentificaci&oacute;n
+ que proporciona <application>Kerberos</application> &mdash; es
+ la computadoras que emite boletos <application>Kerberos</application>.
+ El <acronym>KDC</acronym> est&aacute; considerado como <quote>confiable</quote>
+ por todas las otras computadoras en el dominio <application>Kerberos</application>,
+ y por eso tiene consideraciones de seguridad m&aacute;s elevados.</para>
+
+ <para>Note que mientras la ejecuaci&oacute;n del servidor
+ <application>Kerberos</application> requiere muy pocos recursos
+ computacionales, una m&aacute;quina dedicada actuando solamente
+ como <acronym>KDC</acronym> es recomendada por razones de
+ seguridad.</para>
+
+ <para>Para empezar a configurar un <acronym>KDC</acronym>, aseg&uacute;rese
+ que su archivo <filename>/etc/rc.conf</filename> contiene las
+ configuraciones correctas para actuar como un <acronym>KDC</acronym>
+ (tal vez necesite ajustar algunas rutas para reflejar su propio
+ sistema):</para>
+
+ <programlisting>kerberos5_server_enable="YES"
+kadmind5_server_enable="YES"
+kerberos_stash="YES"</programlisting>
+
+ <note>
+ <para><option>kerberos_stash</option> est&aacute; solamente
+ disponible en &os;&nbsp;4.X.</para>
+ </note>
+
+ <para>A continuaci&oacute;n configuraremos el archivo de
+ configuraci&oacute;n de <application>Kerberos</application>,
+ <filename>/etc/krb5.conf</filename>:</para>
+
+ <programlisting>[libdefaults]
+ default_realm = EXAMPLE.ORG
+[realms]
+ EXAMPLE.ORG = {
+ kdc = kerberos.example.org
+ admin_server = kerberos.example.org
+ }
+[domain_realm]
+ .example.org = EXAMPLE.ORG</programlisting>
+
+ <para>Note que este archivo <filename>/etc/krb5.conf</filename>
+ implica que su <acronym>KDC</acronym> tendr&aacute; el nombre
+ de equipo completo calificado de <hostid role="fqdn">kerberos.example.org</hostid>.
+ Necesitar&aacute; agregar una entrada CNAME (alias) a su archivo
+ de zona para lograr esto si su <acronym>KDC</acronym> tiene un
+ nombre de equipo diferente.</para>
+
+ <note>
+ <para>Para redes grandes con un servidor <acronym>DNS</acronym>
+ <acronym>BIND</acronym> propiamente configurado, el ejemplo
+ de arriba puede ser recortado a:</para>
+
+ <programlisting>[libdefaults]
+ default_realm = EXAMPLE.ORG</programlisting>
+
+ <para>Con las l&iacute;neas siguientes agregadas al
+ archivo de zona <hostid role="fqdn">example.org</hostid>:</para>
+
+ <programlisting>_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
+_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
+_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
+_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
+_kerberos IN TXT EXAMPLE.ORG</programlisting></note>
+
+ <note>
+ <para>Para que los clientes sean capaces de encontrar los
+ servicios <application>Kerberos</application>,
+ <emphasis>debe</emphasis> tener ya sea un
+ <filename>/etc/krb5.conf</filename> completamente configurado o
+ un <filename>/etc/krb5.conf</filename> configurado de forma
+ m&iacute;nima <emphasis>y</emphasis> un servidor DNS
+ configurado correctamente.</para>
+ </note>
+
+ <para>A continuaci&oacute;n crearemos la base de datos
+ <application>Kerberos</application>. Esta base de datos contiene
+ las llaves de todos los principales encriptadas con una
+ contrase&ntilde;a maestra. No se requiere que usted recuerde
+ esta contrase&ntilde;a, ser&aacute; almacenada en un archivo
+ (<filename>/var/heimdal/m-key</filename>). Para crear la llave
+ maestra, ejecute <command>kstash</command> e introduzca una
+ contrase&ntilde;a.</para>
+
+ <para>Una vez que se ha creado la llave maestra, puede inicializar
+ la base de datos usando el programa <command>kadmin</command>
+ con la opci&oacute;n <literal>-l</literal> (que significa
+ <quote>local</quote>). Esta opci&oacute;n le instruye a
+ <command>kadmin</command> que modifique los archivos de la base
+ de datos directamente en lugar de ir a trav&eacute;s del servicio
+ de red <command>kadmind</command>. Esto maneja el problema del
+ huevo y la gallina de tratar de conectar a la base de datos
+ antes de que &eacute;sta sea creada. Una vez que tiene el prompt
+ de <command>kadmin</command>, utilice el comando <command>init</command>
+ para crear su base de datos de dominios iniciales.</para>
+
+ <para>Finalmente, mientras est&aacute; todav&iacute;a en <command>kadmin</command>,
+ puede crear su primer principal utilizando el comando <command>add</command>.
+ Ap&eacute;guese a las opciones por omisi&oacute;n para los
+ principales por ahora, puede cambiarlas despues con el comando
+ <command>modify</command>. Note que puede usar el comando
+ <literal>?</literal> en cualquier prompt para ver las opciones
+ disponibles.</para>
+
+ <para>Una sesi&oacute;n de ejemplo de creaci&oacute;n de una
+ base de datos es mostrada abajo:</para>
+
+ <screen>&prompt.root; <userinput>kstash</userinput>
+Master key: <userinput>xxxxxxxx</userinput>
+Verifying password - Master key: <userinput>xxxxxxxx</userinput>
+
+&prompt.root; <userinput>kadmin -l</userinput>
+kadmin> <userinput>init EXAMPLE.ORG</userinput>
+Realm max ticket life [unlimited]:
+kadmin> <userinput>add tillman</userinput>
+Max ticket life [unlimited]:
+Max renewable life [unlimited]:
+Attributes []:
+Password: <userinput>xxxxxxxx</userinput>
+Verifying password - Password: <userinput>xxxxxxxx</userinput></screen>
+
+ <para>Ahora es tiempo de iniciar los servicios <acronym>KDC</acronym>.
+ Ejecute <command>/etc/rc.d/kerberos start</command> y
+ <command>/etc/rc.d/kadmind start</command> para levantar los
+ servicios. Note que no tendr&aacute; ning&uacute;n daemon
+ kerberizado corriendo en este punto pero debe ser capaz de confirmar
+ que el <acronym>KDC</acronym> est&aacute; funcionando obteniendo
+ y listando un boleto para el principal (usuario) que acaba de crear
+ desde la l&iacute;nea de comando del mismo <acronym>KDC</acronym>:</para>
+
+ <screen>&prompt.user; <userinput>k5init <replaceable>tillman</replaceable></userinput>
+tillman@EXAMPLE.ORG's Password:
+
+&prompt.user; <userinput>k5list</userinput>
+Credentials cache: FILE:<filename>/tmp/krb5cc_500</filename>
+ Principal: tillman@EXAMPLE.ORG
+
+ Issued Expires Principal
+Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen>
+
+ </sect2>
+
+ <sect2>
+ <title><application>Kerberos</application> habilitando un servidor con
+ servicios Heimdal</title>
+
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>habilitando servicios</secondary>
+ </indexterm>
+
+ <para>Primero, necesitamos una copia del archivo de configuraci&oacute;n
+ de <application>Kerberos</application>, <filename>/etc/krb5.conf</filename>.
+ Para eso, simplemente copielo a la computadora cliente desde el
+ <acronym>KDC</acronym> de una manera segura (utilizando utilidades
+ de red como &man.scp.1;, o fisicamente con un disco flexible).</para>
+
+ <para>A continuaci&oacute;n necesita un archivo <filename>/etc/krb5.keytab</filename>.
+ Esta es la diferencia m&aacute;s grande entre un servidor
+ proporcionando daemons habilitados con <application>Kerberos</application>
+ y una estaci&oacute;n de trabajo &mdash; el servidor debe
+ tener un archivo <filename>keytab</filename>. Este archivo
+ contiene las llaves de equipo del servidor, las cuales
+ le permiten a &eacute;l y al <acronym>KDC</acronym>
+ verificar la identidad entre ellos. Debe ser transmitidos al
+ servidor de una manera segura, ya la seguridad en el servidor
+ puede ser comprometida si la llave es hecha p&uacute;blica.
+ Esto significa explicitamente que transfiriendola por medio
+ de un canal de texto claro, como <acronym>FTP</acronym>, es
+ una muy mala idea.</para>
+
+ <para>Tipicamente, transfiere al <filename>keytab</filename>
+ al servidor usando el programa <command>kadmin</command>.
+ Esto es pr&aacute;ctico porque tambi&eacute;n necesita crear
+ el principal del equipo (el final <acronym>KDC</acronym> del archivo
+ <filename>krb5.keytab</filename>) usando <command>kadmin</command>.</para>
+
+ <para>Note que debe ya debe haber obtenido un boleto y que este boleto
+ debe tener permitido utilizar la interface <command>kadmin</command>
+ en <filename>kadmind.acl</filename>. Vea la secci&oacute;n titulada
+ <quote>administraci&oacute;n remota</quote> en la p&aacute;gina de
+ info de Heimdal (<command>info heimdal</command>) para los detalles
+ de diseño de listas de control de acceso. Si no quiere habilitar
+ acceso remoto <command>kadmin</command>, puede simplemente conectar
+ de manera segura al <acronym>KDC</acronym> (por medio de consola
+ local, &man.ssh.1; o &man.telnet.1; <application>Kerberos</application>)
+ y realizar localmente la administraci&oacute;n utilizando
+ <command>kadmin -l</command>.</para>
+
+ <para>Despues de instalar el archivo <filename>/etc/krb5.conf</filename>,
+ puede usar <command>kadmin</command> desde el servidor
+ <application>Kerberos</application>. el comando
+ <command>add --random-key</command> le permitir&aacute; agregar
+ el principal del equipo servidor, y el comando <command>ext</command>
+ le permitir&aacute; extraer el principal del equipo servidor a su
+ propio keytab. Por ejemplo:</para>
+
+ <screen>&prompt.root; <userinput>kadmin</userinput>
+kadmin><userinput> add --random-key host/myserver.example.org</userinput>
+Max ticket life [unlimited]:
+Max renewable life [unlimited]:
+Attributes []:
+kadmin><userinput> ext host/myserver.example.org</userinput>
+kadmin><userinput> exit</userinput></screen>
+
+ <para>Note que el comando <command>ext</command> (diminutivo
+ de <quote>extract</quote>) almacena la llave extra&iacute;da
+ en <filename>/etc/krb5.keytab</filename> por omisi&oacute;n.</para>
+
+ <para>Si no tiene <command>kadmind</command> corriendo en el
+ <acronym>KDC</acronym> (posiblemente por razones de seguridad)
+ y por lo tanto no tiene acceso a <command>kadmin</command>
+ remotamente, puede a&ntilde;adir el principal de equipo
+ (<username>host/myserver.EXAMPLE.ORG</username>) directamente
+ en el <acronym>KDC</acronym> y entonces extraerlo a un archivo
+ temporal (para evitar sobreescribir <filename>/etc/krb5.keytab</filename>
+ en el <acronym>KDC</acronym>) usando algo como esto:</para>
+
+ <screen>&prompt.root; <userinput>kadmin</userinput>
+kadmin><userinput> ext --keytab=/tmp/example.keytab host/myserver.example.org</userinput>
+kadmin><userinput> exit</userinput></screen>
+
+ <para>Puede entonces copiar de manera segura el keytab al
+ servidor (usando <command>scp</command> o un disco
+ flexible, por ejemplo). Aseg&uacute;rese de especificar
+ un nombre de keytab diferente para evitar sobreescribir
+ el keytab en el <acronym>KDC</acronym>.</para>
+
+ <para>En este punto su servidor puede comunicarse con el
+ <acronym>KDC</acronym> (debido a su archivo
+ <filename>krb5.conf</filename>) y puede probar su propia
+ identidad (debido al archivo <filename>krb5.keytab</filename>).
+ Ahora est&aacute; listo para que usted habilite algunos
+ servicios <application>Kerberos</application>.
+ Para este ejemplo habilitaremos el servicio <command>telnet</command>
+ poniendo una l&iacute;nea como esta en su
+ <filename>/etc/inetd.conf</filename> y reiniciando el
+ servicio &man.inetd.8; con
+ <command>/etc/rc.d/inetd restart</command>:</para>
+
+ <programlisting>telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user</programlisting>
+
+ <para>La parte cr&iacute;tica es <command>-a</command>
+ (por autentificaci&oacute;n) de tipo usuario. Consulte
+ la p&aacute;gina de manual &man.telnetd.8; para
+ m&aacute;s detalles.</para>
+
+ </sect2>
+
+ <sect2>
+ <title><application>Kerberos</application> habilitando un cliente con Heimdal</title>
+
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>configurar clientes</secondary>
+ </indexterm>
+
+ <para>Configurar una computadora cliente es trivialmente f&aacute;cil.
+ En lo que se refiera a configuraci&oacute;n de
+ <application>Kerberos</application>, solamente necesita el
+ archivo de configuraci&oacute;n de <application>Kerberos</application>,
+ localizado en <filename>/etc/krb5.conf</filename>.
+ Simplemente copielo de manera segura a la computadora cliente
+ desde el <acronym>KDC</acronym>.</para>
+
+ <para>Pruebe su computadora cliente tratando de usar
+ <command>kinit</command>, <command>klist</command>, y
+ <command>kdestroy</command> desde el cliente para obtener,
+ mostrar y entonces borrar un boleto para el principal que
+ cre&oacute; arriba. Debe ser capaz de usar aplicaciones
+ <application>Kerberos</application> para conectar a
+ servidores habilitados con <application>Kerberos</application>,
+ aunque si eso no funciona y obtener el boleto hace el problema,
+ lo m&aacute;s seguro es que el problema est&eacute; en el
+ servidor y no en el cliente o el <acronym>KDC</acronym>.</para>
+
+ <para>Al probar una aplicaci&oacute;n como <command>telnet</command>,
+ trate de usar un olfateador de paquetes ( como &man.tcpdump.1;)
+ para confirmar que su contrase&ntilde;a no sea enviada en claro.
+ Trate de usar <command>telnet</command> con la opci&oacute;n
+ <literal>-x</literal>, que encripta el flujo de datos por
+ entero (similarmente a <command>ssh</command>).</para>
+
+ <para>Las aplicaciones clientes <application>Kerberos</application>
+ principales (tradicionalmente llamadas <command>kinit</command>,
+ <command>klist</command>, <command>kdestroy</command> y
+ <command>kpasswd</command>) est&aacute;n incluidas en
+ la instalaci&oacute;n base de &os;. Note que versiones de &os;
+ anteriores a 5.0 las renombran a <command>k5init</command>,
+ <command>k5list</command>, <command>k5destroy</command>,
+ <command>k5passwd</command> y <command>k5stash</command>
+ (aunque es tipicamente utilizado solo una vez).</para>
+
+ <para>Varias aplicaciones clientes <application>Kerberos</application>
+ no principales tambi&eacute;n est&aacute;n instaladas por
+ omisi&oacute;n. Aqu&iacute; es donde la naturaleza
+ <quote>m&iacute;nima</quote> de la instalaci&oacute;n base de
+ Heimdal es sentida: <command>telnet</command> es el &uacute;nico
+ servicio <application>Kerberos</application> habilitado.</para>
+
+ <para>El port Heimdal agrega algunas de las aplicaciones cliente
+ faltantes: versiones <application>Kerberos</application> habilitadas
+ de <command>ftp</command>, <command>rsh</command>,
+ <command>rcp</command>, <command>rlogin</command> y algunos
+ otros programas menos comunes. El port de <acronym>MIT</acronym>
+ tambi&eacute;n contiene una suite completa de aplicaciones
+ cliente de <application>Kerberos</application>.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Archivos de configuraci&oacute;n de usuario: <filename>.k5login</filename> y <filename>.k5users</filename></title>
+
+ <indexterm>
+ <primary><filename>.k5login</filename></primary>
+ </indexterm>
+
+ <indexterm>
+ <primary><filename>.k5users</filename></primary>
+ </indexterm>
+
+ <para>Usuarios dentro de un dominio tipicamente
+ tienen su principal <application>Kerberos</application>
+ (como <username>tillman@EXAMPLE.ORG</username>) mapeado
+ a una cuenta de usuario local (como una cuenta local
+ llamada <username>tillman</username>). aplicaciones cliente
+ como <command>telnet</command> usualmente no requieren un
+ nombre de usuario o un principal.</para>
+
+ <para>Ocasionalmente, de todas maneras, tal vez quiera dar acceso
+ a una cuenta de usuario local a alguien que no tiene un
+ principal <application>Kerberos</application> que concuerde.
+ Por ejemplo, <username>tillman@EXAMPLE.ORG</username> puede
+ necesitar acceso a la cuenta de usuario local <username>webdevelopers</username>.
+ Otros principales tal vez necesiten acceso a esas
+ cuentas locales.</para>
+
+ <para>Los archivos <filename>.k5login</filename> y
+ <filename>.k5users</filename>, colocados en el directorio
+ home del usuario, pueden ser usados de manera similar a
+ una combinaci&oacute;n potente de
+ <filename>.hosts</filename> y <filename>.rhosts</filename>,
+ resolviendo el problema. Por ejemplo, si un
+ <filename>.k5login</filename> con el siguiente
+ contenido:</para>
+
+ <screen>tillman@example.org
+jdoe@example.org</screen>
+
+ <para>Fuera a ser colocado en el directorio home del usuario
+ local <username>webdevelopers</username> entonces ambos
+ principales listados tendr&iacute;an acceso a esa cuenta
+ sin requerir una contrase&ntilde;a compartida.</para>
+
+ <para>La lectura de las p&aacute;ginas de manual para estos
+ comando es recomendado. Note que la p&aacute;gina de manual
+ de <command>ksu</command> cubre
+ <filename>.k5users</filename>.</para>
+
+ </sect2>
+
+ <sect2>
+ <title><application>Kerberos</application> Tips, Trucos y soluci&oacute;n de problemas</title>
+
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>soluci&oacute;n de problemas</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para>Al utilizar ya sea los ports de Heimdal o <application>Kerberos</application>
+ del <acronym>MIT</acronym> aseg&uacute;rese que su
+ variable de ambiente <envar>PATH</envar> liste las
+ versiones de <application>Kerberos</application> de las
+ aplicaciones clientes antes que las versiones del
+ sistema.</para>
+ </listitem>
+
+ <listitem>
+ <para>¿Todas las computadoras en su dominio Kerberos tienen
+ la hora sincronizada? Si no, la autentificaci&oacute;n
+ puede fallar.
+ <xref linkend="network-ntp"> describe como sincronizar
+ los relojes utilizando <acronym>NTP</acronym>.</para>
+ </listitem>
+
+ <listitem>
+ <para><acronym>MIT</acronym> y Heimdal interoperan bien.
+ Excepto por <command>kadmin</command>, el protocola para
+ el cual no est&aacute; estandarizado.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si cambia su nombre de equipo, necesita cambiar tambi&eacute;n
+ su <username>equipo/</username> principal y actualizar su
+ keytab. Esto tambi&eacute;n aplica a entradas especiales
+ en keytab como <username>www/</username> principal
+ utilizado para <filename role="package">www/mod_auth_kerb</filename>
+ de Apache.</para>
+ </listitem>
+
+ <listitem>
+ <para>Todos los equipos en su dominio Kerberos deben resolver
+ (normal y reverso) en el <acronym>DNS</acronym> (o en
+ <filename>/etc/hosts</filename> como m&iacute;nimo).
+ Los CNAMEs funcionar&aacute;n, pero los registros A y PTR
+ deben estar correctos y en su lugar. El mensaje de error
+ no es muy intuitivo:
+ <errorname>Kerberos5 refuses authentication because Read req
+ failed: Key table entry not found</errorname>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Algunos sistemas operativos que pueden estar actuando
+ como clientes de su <acronym>KDC</acronym> no activan
+ los permisos para <command>ksu</command> de manera
+ setuid <username>root</username>. Esto significa que
+ <command>ksu</command> no funciona, lo cual es una
+ buena idea de seguridad pero un tanto molesta. Este no es un
+ error de <acronym>KDC</acronym>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Con <application>Kerberos</application> del
+ <acronym>MIT</acronym>, si usted desea permitir que un
+ principal tenga un boleto con una vida m&aacute;s larga
+ que el valor por omisi&oacute;n de diez horas, debe usar
+ <command>modify_principal</command> en <command>kadmin</command>
+ para cambiar maxlife tanto del principal en cuesti&oacute;n
+ como del principal <username>krbtgt</username>. Entonces
+ el principal puede utilizar la opci&oacute;n
+ <literal>-l</literal> con <command>kinit</command> para
+ solicitar un boleto con m&aacute;s tiempo de vida.</para>
+ </listitem>
+
+ <listitem>
+ <note><para>Si ejecuta un olfateador de paquetes en su
+ <acronym>KDC</acronym> para ayudar con la resoluci&oacute;n
+ de problemas y ejecuta <command>kinit</command> desde una
+ estaci&oacute;n de trabajo, se podr&aacute; dar cuenta
+ que su <acronym>TGT</acronym> es enviado inmediatamente
+ despues de correr <command>kinit</command> &mdash;
+ ¡incluso antes de que escriba su contrase&ntilde;a! La
+ explicaci&oacute;n es que el servidor <application>Kerberos</application>
+ transmite libremente un <acronym>TGT</acronym> (Ticket Granting
+ Ticket) a cualquier petici&oacute;n no autorizada; de todas
+ maneras, cada <acronym>TGT</acronym> est&aacute; encriptado
+ en un llave derivada de la contrase&ntilde;a de usuario.
+ Por lo tanto, cuando un usuario teclea su contrase&ntilde;a
+ no est&aacute; siendo enviada al <acronym>KDC</acronym>,
+ est&aacute; siendo usada para desencriptar el <acronym>TGT</acronym>
+ que <command>kinit</command> ya obtuvo. Si el proceso de
+ desencriptaci&oacute;n resulta en un boleto v&aacute;lido con
+ una marca de tiempo v&aacute;lida, el usuario tiene
+ credenciales <application>Kerberos</application> v&aacute;lidas.
+ Estas credenciales incluyen una llave de sesi&oacute;n para
+ establecer comunicaciones seguras con el servidor
+ <application>Kerberos</application> en el futuro, as&iacute;
+ como tambi&eacute;n el boleto otorgar-boleto (TGT) en s&iacute;,
+ el cual es encriptado con la llave del propio servidor
+ <application>Kerberos</application>. Esta segunda capa de
+ encriptaci&oacute;n es desconocida para el usuario, pero
+ es lo que permite al servidor <application>Kerberos</application>
+ verificar la autenticidad de cada <acronym>TGT</acronym>.</para></note>
+ </listitem>
+
+ <listitem>
+ <para>Si desea utilizar boletos con tiempo de vida larga (una
+ semana, por ejemplo) y est&aacute; utilizando <application>OpenSSH</application>
+ para conectarse a la m&aacute;quina donde su boleto est&aacute;
+ almacenado, aseg&uacute;rese que <application>Kerberos</application>
+ <option>TicketCleanup</option> est&eacute; puesto a <literal>no</literal>
+ en su <filename>sshd_config</filename> o de lo contrario
+ sus boletos ser&aacute;n eliminados cuando termine la
+ sesi&oacute;n.</para>
+ </listitem>
+
+ <listitem>
+ <para>Recuerde que los principales de equipos pueden tener
+ un tiempo de vida mas largo tambi&eacute;n. Si su principal
+ de usuario tiene un tiempo de vida de una semana pero
+ el equipo al que se es&aacute; conectando tiene un
+ tiempo de vida de nueve horas, tendr&aacute; un principal de
+ equipo expirado en su cach&eacute; y el cach&eacute; de
+ boleto no funcionar&aacute; como se espera.</para>
+ </listitem>
+
+ <listitem>
+ <para>Cuando est&eacute; configurando un archivo
+ <filename>krb5.dict</filename> para prenevir especificamente
+ el uso de malas contrase&ntilde;as (la p&aacute;gina de manual
+ de <command>kadmind</command> cubre esto brevemente), recuerde
+ que solamente aplica a principales que tienen una pol&iacute;tica
+ de contrase&ntilde;as asignada a ellos. El formato de archivos
+ <filename>krb5.dict</filename> es simple: una cadena por
+ l&iacute;nea. Creando un enlace simb&oacute;lico a
+ <filename>/usr/share/dict/words</filename> puede ser
+ de utilidad.</para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2>
+ <title>Diferencias con el port del <acronym>MIT</acronym></title>
+
+ <para>Las diferencias m&aacute;s grandes entre las instalaciones
+ <acronym>MIT</acronym> y Heimdal se relacionan al programa
+ <command>kadmin</command> el cual tiene un conjunto
+ diferente (pero equivalente) de comandos y utiliza un protocolo
+ diferente. Esto tiene implicaciones muy grandes si su
+ <acronym>KDC</acronym> es <acronym>MIT</acronym> ya que no
+ podr&aacute; utilizar el programa <command>kadmin</command>
+ de Heimdal para administrar remotamente su <acronym>KDC</acronym>
+ (o viceversa, para ese caso).</para>
+
+ <para>Las aplicaciones cliente pueden tambi&eacute;n tomar
+ diferentes opciones de l&iacute;nea de comando para
+ lograr las mismas tareas. Seguir las instrucciones de
+ la p&aacute;gina web de <application>Kerberos</application>
+ del <acronym>MIT</acronym>
+ (<ulink url="http://web.mit.edu/Kerberos/www/"></ulink>)
+ se recomienda. Sea cuidadoso con los parches: el port
+ del <acronym>MIT</acronym> se instala en
+ <filename>/usr/local/</filename> por omisi&oacute;n, y las
+ aplicaciones <quote>normales</quote> del sistema pueden
+ ser ejecutadas en lugar de las del <acronym>MIT</acronym>
+ si su variable de ambiente <envar>PATH</envar> lista los
+ directorios del sistema primero.</para>
+
+ <note><para>Con el port del <acronym>MIT</acronym>
+ <filename role="package">security/krb5</filename>
+ proporcionado por &os;, aseg&uacute;rese de leer el archivo
+ <filename>/usr/local/share/doc/krb5/README.FreeBSD</filename>
+ instalado por el port si quiere entender por qu&eacute; los
+ login v&iacute;a <command>telnetd</command> y
+ <command>klogind</command> se comportan un tanto
+ extra&ntilde;o. M&aacute;s importante, corrigiendo la
+ conducta de <quote>permisos incorrectos en el archivo
+ cach&eacute;</quote> requiere que el binario
+ <command>login.krb5</command> sea usado para autentificaci&oacute;n
+ para que pueda cambiar correctamente los permisos de
+ propiedad para credenciales reenviadas.</para></note>
+
+ </sect2>
+
+ <sect2>
+ <title>Mitigando limitaciones encontradas en <application>Kerberos</application></title>
+
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>limitaciones y deficiencias</secondary>
+ </indexterm>
+
+ <sect3>
+ <title><application>Kerberos</application> es un enfoque todo-o-nada</title>
+
+ <para>Cada servicio habilitado en la red debe ser modificado
+ para funcionar con <application>Kerberos</application> (o de
+ otra manera ser asegurado contra ataques de red) o de lo
+ contrario las credenciales de usuario pueden ser robadas y
+ reutilizadas. Un ejemplo de esto podr&iacute;a ser que
+ <application>Kerberos</application> habilite todos los shells
+ remotos ( v&iacute;a <command>rsh</command> y <command>telnet</command>,
+ por ejemplo) pero que no cubra el servidor de correo
+ <acronym>POP3</acronym> el cual manda contrase&ntilde;as
+ en texto plano.</para>
+
+ </sect3>
+
+ <sect3>
+ <title><application>Kerberos</application> est&aacute; planeado para estaciones de trabajo mono-usuario</title>
+
+ <para>En un ambiente multi-usuario,
+ <application>Kerberos</application> es menos seguro.
+ Esto se debe a que almacena los boletos en el
+ directorio <filename>/tmp</filename>, el cual puede
+ ser le&iacute;do por todos los usuarios. Si un
+ usuario est&aacute; compartiendo una computadora con
+ varias gentes simultaneamente (ej., multi-user), es posible
+ que los boletos de usuario sean robados (copiados) por otro
+ usuario.</para>
+
+ <para>Esto puede ser sobrepasado con la opci&oacute;n de l&iacute;nea
+ de comando <literal>-c</literal> nombre-de-archivo o
+ (de preferencia) la variable de ambiente
+ <envar>KRB5CCNAME</envar>, pero esto raramente es
+ hecho. En principal, almacenar los boletos en el
+ directorio home de los usuarios y utilizar permisos
+ de archivo simples pueden mitigar este problema.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>El KDC es un punto de falla &uacute;nico</title>
+
+ <para>Por dise&ntilde;o, el <acronym>KDC</acronym> debe ser tan
+ seguro como la base de datos de contrase&ntilde;a maestra que
+ contiene. El <acronym>KDC</acronym> no debe tener ning&uacute;n
+ otro servicio corriendo en &eacute;l y debe ser fisicamente
+ seguro. El peligro es grande debido a que <application>Kerberos</application>
+ almacena todas las contrase&ntilde;as encriptadas con la
+ misma llave (la llave <quote>maestra</quote>, la cual a su
+ vez est&aacute; almacenada como un archivo en el
+ <acronym>KDC</acronym>).</para>
+
+ <para>Como nota aparte, una llave maestra comprometida no es
+ tan malo como se podr&iacute;a temer. La llave maestra solo
+ es utilizada para encriptar la base de datos <application>Kerberos</application>
+ y como semilla para el generador de n&uacute;meros aleatorios.
+ Mientras el acceso a su <acronym>KDC</acronym> sea seguro,
+ un atacante no puede hacer mucho con la llave maestra.</para>
+
+ <para>Adicionalmente, si el <acronym>KDC</acronym> no est&aacute;
+ disponible (quiz&aacute;s debido a un ataque de negaci&oacute;n
+ de servicio o problemas de red) los servicios de red son inusables
+ ya que no se puede efectuar la autentificaci&oacute;n, una receta
+ para un ataque de negaci&oacute;n de servicios. Esto puede ser
+ aliviado con m&uacute;ltiples <acronym>KDC</acronym>s (un
+ maestro &uacute;nico y uno o m&aacute;s esclavos) y con
+ una implementaci&oacute;n cautelosa de secundarios o
+ autentificaci&oacute;n de respaldo (<acronym>PAM</acronym> es
+ excelente para esto).</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Limitaciones de <application>Kerberos</application></title>
+
+ <para><application>Kerberos</application> le permite a usuarios,
+ equipos y servicios autentificarse entre ellos. No tiene un
+ mecanismo para autentificar el <acronym>KDC</acronym> a los
+ usuarios, equipos o servicios. Esto significa que a
+ <command>kinit</command> con un troyano (por ejemplo) puede
+ grabar todos los usuarios y contrase&ntilde;as. Algo como
+ <filename role="package">security/tripwire</filename> o
+ alguna otra herramienta de revisi&oacute;n de integridad
+ de sistemas de archivo puede aliviar esto.</para>
+
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Recursos y m&aacute;s informaci&oacute;n</title>
+
+ <indexterm>
+ <primary>Kerberos5</primary>
+ <secondary>recursos externos</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink
+ url="http://www.faqs.org/faqs/Kerberos-faq/general/preamble.html">
+ La FAQ de <application>Kerberos</application></ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://web.mit.edu/Kerberos/www/dialogue.html">Dise&ntilde;ando
+ un sistema de autentificaci&oacute;n: un dialogo en cuatro escenas</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://www.ietf.org/rfc/rfc1510.txt?number=1510">RFC 1510,
+ The <application>Kerberos</application> Network Authentication Service
+ (V5)</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://web.mit.edu/Kerberos/www/">P&aacute;gina web de <acronym>MIT</acronym>
+ <application>Kerberos</application></ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://www.pdc.kth.se/heimdal/">P&aacute;gina web de Heimdal
+ <application>Kerberos</application></ulink></para>
+ </listitem>
+
+ </itemizedlist>
+ </sect2>
+ </sect1>
+
+ <sect1 id="openssl">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Escrito por: </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <title>OpenSSL</title>
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>OpenSSL</secondary>
+ </indexterm>
+
+ <para>Una propiedad que muchos usuarios pasan por alto
+ es el conjunto de herramientas <application>OpenSSL</application>
+ inclu&iacute;das en &os;. <application>OpenSSL</application>
+ brinda capa de transporte encriptada encima de la capa
+ de comunicaciones normal; permitiendo as&iacute; que sea
+ combinada con muchas aplicaciones y servicios de red.</para>
+
+ <para>Algunos usos de <application>OpenSSL</application> pueden
+ incluir autentificaci&oacute;n encriptada de clientes de
+ correo, transacciones basadas en web como pagos de tarjetas
+ de cr&eacute;dito y m&aacute;s. Muchos ports, como
+ <filename role="package">www/apache13-ssl</filename> y
+ <filename role="package">mail/sylpheed-claws</filename>
+ ofrecen soporte de compilaci&oacute;n para construirse
+ con <application>OpenSSL</application>.</para>
+
+ <note>
+ <para>En la mayor&iacute;a de los casos la colecci&oacute;n
+ de ports tratar&aacute; de construir el port
+ <filename role="package">security/openssl</filename> a menos
+ que la variable de make <makevar>WITH_OPENSSL_BASE</makevar>
+ sea puesta explicitamente a <quote>yes</quote>.</para>
+ </note>
+
+ <para>La versi&oacute;n de <application>OpenSSL</application>
+ inclu&iacute;da en &os; soporta los protocolos de seguridad
+ de red Secure Sockets Layer v2/v3 (SSLv2/SSLv3) y
+ Transport Layer Security v1 (TLSv1) y puede ser utilizada como
+ una librer&iacute;a criptogr&aacute;fica general.</para>
+
+ <note>
+ <para>Mientras <application>OpenSSL</application> soporta el
+ algoritmo <acronym>IDEA</acronym>, est&aacute;a deshabilitado
+ por omisi&oacute;n debido a patentes de Estados Unidos. Para
+ utilizarlo, la licencia debe ser revisada, y si las
+ restricciones son aceptables, la variable
+ <makevar>MAKE_IDEA</makevar> debe ser activada en
+ <filename>make.conf</filename>.</para>
+ </note>
+
+ <para>Uno de los usos m&aacute;s comunes de
+ <application>OpenSSL</application> es brindar certificados para
+ usar con aplicaciones de software. Estos certificados aseguran
+ que las credenciales de la compa&ntilde;ia o individuo son
+ v&aacute;lidos y no fraudulentos. Si el certificado en
+ cuesti&oacute;n no ha sido verificado por uno de las varias
+ <quote>autoridades de certificados</quote>,
+ o <acronym>CA</acronym>s, usualmente se produce una advertencia.
+ Una autoridad de certificados es una compa&ntilde;ia, como
+ <ulink url="http://www.verisign.com">VeriSign</ulink>, la cual
+ firmar&aacute; certificados para validar credenciales de individuos
+ o compa&ntilde;ias. Este proceso tiene un costo asociado y no es
+ definitivamente un requisito para usar certificados; de todas
+ maneras, puede darle un poco de tranquilidad a los usuarios
+ m&aacute;s paran&oacute;icos.</para>
+
+ <sect2>
+ <title>Generando certificados</title>
+
+ <indexterm>
+ <primary>OpenSSL</primary>
+ <secondary>generaci&oacute;n de certificados</secondary>
+ </indexterm>
+
+ <para>Para generar un certificado, el siguiente comando est&aacute;
+ disponible:</para>
+
+ <screen>&prompt.root; <userinput>openssl req -new -nodes -out req.pem -keyout cert.pem</userinput>
+Generating a 1024 bit RSA private key
+................++++++
+.......................................++++++
+writing new private key to 'cert.pem'
+-----
+You are about to be asked to enter information that will be incorporated
+into your certificate request.
+What you are about to enter is what is called a Distinguished Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.
+-----
+Country Name (2 letter code) [AU]:<userinput><replaceable>US</replaceable></userinput>
+State or Province Name (full name) [Some-State]:<userinput><replaceable>PA</replaceable></userinput>
+Locality Name (eg, city) []:<userinput><replaceable>Pittsburgh</replaceable></userinput>
+Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput><replaceable>My Company</replaceable></userinput>
+Organizational Unit Name (eg, section) []:<userinput><replaceable>Systems Administrator</replaceable></userinput>
+Common Name (eg, YOUR name) []:<userinput><replaceable>localhost.example.org</replaceable></userinput>
+Email Address []:<userinput><replaceable>trhodes@FreeBSD.org</replaceable></userinput>
+
+Please enter the following 'extra' attributes
+to be sent with your certificate request
+A challenge password []:<userinput><replaceable>SOME PASSWORD</replaceable></userinput>
+An optional company name []:<userinput><replaceable>Another Name</replaceable></userinput></screen>
+
+ <para>Note que la respuesta directamente despues del
+ prompt <quote>Common Name</quote> muestra un nombre
+ de dominio. Este prompt requiere que se introduzca
+ un nombre de servidor para prop&oacute;sitos de
+ verificaci&oacute;n; colocando cualquier cosa menos
+ un nombre de dominio producir&aacute; un certificado
+ inv&aacute;lido. Otras opciones, por ejemplo tiempo
+ de expiraci&oacute;n, alternan algoritmos de encriptaci&oacute;n,
+ etc, est&aacute;n disponibles. Una lista completa
+ puede obtenerse viendo la p&aacute;gina de manual
+ &man.openssl.1;.</para>
+
+ <para>Deben existir ahora dos archivos
+ en el directorio en el que el comando anterior fu&eacute;
+ ejecutado. La petici&oacute;n de certificado, <filename>req.pem</filename>,
+ puede ser enviado a una autoridad de certificados que validar&aacute;
+ las credenciales que introdujo, firmar&aacute; la petici&oacute;n y le
+ regresar&aacute; el certificado. El segundo archivo creado ser&aacute;
+ nombrado <filename>cert.pem</filename> y es la llave privada para
+ el certificado y debe ser protegida a toda costa; si esta cae en las
+ manos de otros puede ser utilizada para impersonarlo a usted (o a
+ sus servidores).</para>
+
+ <para>En los casos donde una firma de una <acronym>CA</acronym>
+ no es requerida, un certificado auto firmado puede ser creado.
+ Primero, genere la llave <acronym>RSA</acronym>:</para>
+
+ <screen>&prompt.root; <userinput>openssl dsaparam -rand -genkey -out <filename>myRSA.key</filename> 1024</userinput></screen>
+
+ <para>A continuaci&oacute;n genere la llave <acronym>CA</acronym>:</para>
+
+ <screen>&prompt.root; <userinput>openssl gendsa -des3 -out <filename>myca.key</filename> <filename>myRSA.key</filename></userinput></screen>
+
+ <para>Utilice esta llave para crear el certificado:</para>
+
+ <screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key <filename>myca.key</filename> -out <filename>new.crt</filename></userinput></screen>
+
+ <para>Los dos nuevos archivos deben aparecer en el directorio:
+ un archivo de firma de autoridad de certificados,
+ <filename>myca.key</filename> y el certificado en s&iacute;,
+ <filename>new.crt</filename>. Estos deben ser colocados en un
+ directorio, de preferencia bajo
+ <filename class="directory">/etc</filename>, el cual es
+ le&iacute;ble solo por <username>root</username>. Permisos de
+ 0700 deben ser suficientes para este y pueden ser puestos con
+ la utilidad <command>chmod</command>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Usando certificados, un ejemplo</title>
+
+ <para>¿Entonces que pueden hacer estos archivos? Un buen uso
+ ser&iacute;a encriptar conexiones al <acronym>MTA</acronym>
+ <application>Sendmail</application>. Esto disolver&iacute;a
+ el uso de autentificaci&oacute;n de texto claro para usuarios
+ que mandan correo a trav&eacute;s del <acronym>MTA</acronym>
+ local.</para>
+
+ <note>
+ <para>Este no es el mejor uso en el mundo ya que algunos
+ <acronym>MUA</acronym>s presentar&aacute;n al usuario
+ un error si no tienen instalado los certificados
+ localmente. Refi&eacute;rase a la documentaci&oacute;n
+ inclu&iacute;da con el software para mayor informaci&oacute;n
+ de la instalaci&oacute;n de certificados.</para>
+ </note>
+
+ <para>Las siguientes l&iacute;neas deben ser colocadas
+ dentro del archivo local <filename>.mc</filename>:</para>
+
+ <programlisting>dnl SSL Options
+define(`confCACERT_PATH',`/etc/certs')dnl
+define(`confCACERT',`/etc/certs/new.crt')dnl
+define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
+define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
+define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting>
+
+ <para>Donde <filename class="directory">/etc/certs/</filename>
+ es el directorio a ser utilizado para almacenamiento de
+ los archivos de certificado y llave de manera local.
+ Los &uacute;ltimos requerimientos son una reconstrucci&oacute;n
+ del archivo <filename>.cf</filename> local. Esto es facilmente
+ logrado tecleando <command>make</command>
+ <parameter>install</parameter> dentro del directorio
+ <filename class="directory">/etc/mail</filename>.
+ A continuaci&oacute;n ejecute un <command>make</command>
+ <parameter>restart</parameter> que debe reiniciar el
+ daemon de <application>Sendmail</application>.</para>
+
+ <para>Si todo estuvo bien no habr&aacute; mensajes de error
+ en el archivo <filename>/var/log/maillog</filename>
+ y <application>Sendmail</application> aparecer&aacute; en
+ la lista de procesos.</para>
+
+ <para>Para una prueba sencilla, simplemente conecte al
+ servidor de correo usando la utilidad &man.telnet.1;:</para>
+
+ <screen>&prompt.root; <userinput>telnet <replaceable>example.com</replaceable> 25</userinput>
+Trying 192.0.34.166...
+Connected to <hostid role="fqdn">example.com</hostid>.
+Escape character is '^]'.
+220 <hostid role="fqdn">example.com</hostid> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
+<userinput>ehlo <replaceable>example.com</replaceable></userinput>
+250-example.com Hello example.com [192.0.34.166], pleased to meet you
+250-ENHANCEDSTATUSCODES
+250-PIPELINING
+250-8BITMIME
+250-SIZE
+250-DSN
+250-ETRN
+250-AUTH LOGIN PLAIN
+250-STARTTLS
+250-DELIVERBY
+250 HELP
+<userinput>quit</userinput>
+221 2.0.0 <hostid role="fqdn">example.com</hostid> closing connection
+Connection closed by foreign host.</screen>
+
+ <para>Si la l&iacute;nea <quote>STARTTLS</quote> aparece en la
+ salida entonces todo est&aacute; funcionando correctamente.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="ipsec">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Nik</firstname>
+ <surname>Clayton</surname>
+ <affiliation>
+ <address><email>nik@FreeBSD.org</email></address>
+ </affiliation>
+ <contrib>Escrito por </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <indexterm>
+ <primary>IPsec</primary>
+ </indexterm>
+
+ <title>VPN sobre IPsec</title>
+ <para>Creando una VPN entre dos redes, separadas por la Internet
+ utilizando gateways FreeBSD.</para>
+
+ <sect2>
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Hiten M.</firstname>
+ <surname>Pandya</surname>
+ <affiliation>
+ <address><email>hmp@FreeBSD.org</email></address>
+ </affiliation>
+ <contrib>Escrito por </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>Entendiendo IPsec</title>
+
+ <para>Esta secci&oacute;n le guiar&aacute; a trav&eacute;s del
+ proceso de configuraci&oacute;n de IPsec, y de su uso en un
+ ambiente que consista en m&aacute;quinas FreeBSD y
+ <application>&microsoft.windows; 2000/XP</application>, para
+ hacer que se comuniquen de manera segura. Para configurar
+ IPsec, es necesario que est&eacute; familiarizado con los
+ conceptos de construcci&oacute;n de un kernel personalizado
+ (vea <xref linkend="kernelconfig">).</para>
+
+ <para><emphasis>IPsec</emphasis> es un protocolo que se sienta
+ encima de la capa del protocolo de Internet (IP). Le permite
+ a dos o mas equipos comunicarse de manera segura (de ah&iacute;
+ el nombre). La <quote>pila de red</quote> IPsec de FreeBSD est&aacute;
+ basada en la implementaci&oacute;n
+ <ulink url="http://www.kame.net/">KAME</ulink>, la cual tiene
+ soporte para las dos familias de protocolos, IPv4 e IPv6.</para>
+
+ <note>
+ <para>FreeBSD 5.X contiene una pila IPsec <quote>acelerada
+ por hardware</quote>, conocida como <quote>Fast
+ IPsec</quote>, que fu&eacute; obtenida de OpenBSD.
+ Emplea hardware criptogr&aacute;fico (cuando es posible)
+ a trav&eacute;s del subsistema &man.crypto.4; para
+ optimizar el desempe&ntilde;o de IPsec. Este subsistema es
+ nuevo, y no soporta todas las opciones que est&aacute;n
+ disponibles en la versi&oacute;n KAME de IPsec. De todas
+ maneras, para habilitar IPsec acelerado por hardware, se
+ tienen que agregar las siguientes opciones de kernel al
+ archivo de configuraci&oacute;n de kernel:</para>
+
+ <indexterm>
+ <primary>opciones de kernel</primary>
+ <secondary>FAST_IPSEC</secondary>
+ </indexterm>
+
+ <screen>
+options FAST_IPSEC # new IPsec (cannot define w/ IPSEC)
+ </screen>
+
+ <para>Note que actualmente no es posible utilizar el subsistema
+ <quote>Fast IPsec</quote> junto con la implementaci&oacute;n
+ KAME de IPsec. Consulte la p&aacute;gina de manual
+ &man.fast.ipsec.4; para mayor informaci&oacute;n.</para>
+
+ </note>
+
+ <indexterm>
+ <primary>IPsec</primary>
+ <secondary>ESP</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>IPsec</primary>
+ <secondary>AH</secondary>
+ </indexterm>
+
+ <para>IPsec consiste de dos sub-protocolos:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Encapsulated Security Payload
+ (ESP)</emphasis>, protege los datos del paquete IP
+ de interferencias de terceros, encriptando el contenido
+ utilizando algoritmos de criptograf&iacute;a sim&eacute;trica
+ (como Blowfish, 3DES).</para>
+ </listitem>
+ <listitem>
+ <para><emphasis>Authentication Header (AH)</emphasis>,
+ protege la cabecera del paquete IP de interferencias de
+ terceros e imitaci&oacute;n (spoofing), computando un
+ checksum criptogr&aacute;fico y aplicando a los campos
+ de cabecera IP una funci&oacute;n hash segura. Esto es
+ entonces seguido por una cabecera adicional que contiene
+ el hash, para permitirle a la informaci&oacute;n en el
+ paquete ser autentificada.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para><acronym>ESP</acronym> y <acronym>AH</acronym> pueden
+ ser utilizados de manera conjunta o separada, dependiendo
+ del ambiente.</para>
+
+ <indexterm>
+ <primary>VPN</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Red privada virtual</primary>
+ <see>VPN</see>
+ </indexterm>
+
+ <para>IPsec puede ser utilizado ya sea para encriptar directamente
+ el tr&aacute;fico entre dos equipos (conocido como
+ <emphasis>modo de transporte</emphasis>); o para construir
+ <quote>t&uacute;neles virtuales</quote> entre dos subredes,
+ las cuales pueden ser usadas para comunicaci&oacute;n segura
+ entre dos redes corporativas (conocido como <emphasis>modo
+ de tunel</emphasis>). Este &uacute;ltimo es comunmente
+ conocido como una <emphasis>red privada virtual (Virtual
+ Private Network, VPN)</emphasis>. La p&aacute;gina de manual
+ &man.ipsec.4; debe ser consultada para informaci&oacute;n
+ detallada sobre el subsistema IPsec en FreeBSD.</para>
+
+ <para>Para agregar soporte de IPsec a su kernel, agregue las
+ siguientes opciones a su archivo de configuraci&oacute;n
+ de kernel:</para>
+
+ <indexterm>
+ <primary>opciones de kernel</primary>
+ <secondary>IPSEC</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>opciones de kernel</primary>
+ <secondary>IPSEC_ESP</secondary>
+ </indexterm>
+
+ <screen>
+options IPSEC #IP security
+options IPSEC_ESP #IP security (crypto; define w/ IPSEC)
+ </screen>
+
+ <indexterm>
+ <primary>opciones de kernel</primary>
+ <secondary>IPSEC_DEBUG</secondary>
+ </indexterm>
+
+ <para>Si se desea soporte para la depuraci&oacute;n de
+ errores, la siguiente opci&oacute;n tambi&eacute;n debe
+ ser agregada:</para>
+
+ <screen>
+options IPSEC_DEBUG #debug for IP security
+ </screen>
+ </sect2>
+
+ <sect2>
+ <title>El Problema</title>
+
+ <para>No existe un est&aacute;ndar para lo que constituye una VPN.
+ VPNs pueden ser implementadas utilizando un n&uacute;mero de
+ tecnolog&iacute;as diferentes, cada una de las cuales tiene sus
+ propias fortalezas y debilidades. Esta secci&oacute;n presenta un
+ escenario, y las estrategias usadas para implementar una VPN
+ para este escenario.</para>
+ </sect2>
+
+ <sect2>
+ <title>El escenario: dos redes, conectadas por Internet, para
+ comportarse como una sola</title>
+
+ <indexterm>
+ <primary>VPN</primary>
+ <secondary>creando</secondary>
+ </indexterm>
+
+ <para>La premisa es como sigue:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Usted tiene al menos dos sitios</para>
+ </listitem>
+ <listitem>
+ <para>Ambos sitios est&aacute;n utilizando IP internamente</para>
+ </listitem>
+ <listitem>
+ <para>Ambos sitios est&aacute;n conectados al Internet, a
+ trav&eacute;s de un gateway que esta corriendo FreeBSD.</para>
+ </listitem>
+ <listitem>
+ <para>El gateway en cada red tiene al menos una direcci&oacute;n
+ IP p&uacute;blica.</para>
+ </listitem>
+ <listitem>
+ <para>Las direcciones internas de las dos redes pueden ser
+ direcciones IP p&uacute;blicas o privadas, no importa.
+ Puede ejecutar NAT en la m&aacute;quina gateway de ser
+ necesario.</para>
+ </listitem>
+ <listitem>
+ <para>Las direcciones IP internas de las dos redes
+ <emphasis>no colisionan</emphasis>. Aunque espero
+ que sea posible teoricamente utilizar una combinaci&oacute;n
+ de tecnolog&iacute;a VPN y NAT para hacer funcionar
+ esto, espero que sea una pesadilla de
+ configuraci&oacute;n.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Si encuentra que est&aacute; tratando de conectar dos redes,
+ donde ambas utilizan el mism rango de direcciones IP privadas
+ (ej., las dos usan <hostid
+ role="ipaddr">192.168.1.x</hostid>), entonces una de las dos redes
+ debe ser renumerada.</para>
+
+ <para>La topolog&iacute;a de red puede verse de manera similar
+ a esto:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="security/ipsec-network" align="center">
+ </imageobject>
+
+ <textobject>
+<literallayout class="monospaced">Network #1 [ Internal Hosts ] Private Net, 192.168.1.2-254
+ [ Win9x/NT/2K ]
+ [ UNIX ]
+ |
+ |
+ .---[fxp1]---. Private IP, 192.168.1.1
+ | FreeBSD |
+ `---[fxp0]---' Public IP, A.B.C.D
+ |
+ |
+ -=-=- Internet -=-=-
+ |
+ |
+ .---[fxp0]---. Public IP, W.X.Y.Z
+ | FreeBSD |
+ `---[fxp1]---' Private IP, 192.168.2.1
+ |
+ |
+Network #2 [ Internal Hosts ]
+ [ Win9x/NT/2K ] Private Net, 192.168.2.2-254
+ [ UNIX ]</literallayout>
+ </textobject>
+ </mediaobject>
+
+ <para>Note las dos direcciones IP p&uacute;blicas. Usar&eacute; las
+ letras para referirme a ellas en el resto de este art&iacute;culo.
+ El cualquier lugar que vea esas letras en este art&iacute;culo,
+ reemplacelas con su propia direcci&oacute;n IP p&uacute;blica.
+ Note tambi&eacute;n que internamente, las dos m&aacute;quinas
+ gateway tienen la direcci&oacute;n IP .1, y que las dos redes
+ tienen direcciones IP privadas diferentes (<hostid
+ role="ipaddr">192.168.1.x</hostid> y <hostid
+ role="ipaddr">192.168.2.x</hostid> respectivamente). Todas las
+ m&aacute;quinas en las redes privadas han sido configuradas para
+ utilizar la m&aacute;quina <hostid role="ipaddr">.1</hostid>
+ como su gateway por omisi&oacute;n.</para>
+
+ <para>La intenci&oacute;n es que, desde el punto de vista de la
+ red, cada red debe ver las m&aacute;quinas en la otra red como
+ si estuvieran directamente conectadas al mismo ruteador --
+ aunque sea un ruteador ligeramente lento con una tendencia
+ ocasional a tirar paquetes.</para>
+
+ <para>Esto significa que (por ejemplo), la m&aacute;quina
+ <hostid role="ipaddr">192.168.1.20</hostid> debe ser
+ capaz de ejecutar</para>
+
+ <programlisting>ping 192.168.2.34</programlisting>
+
+ <para>y recibir una respuesta, transparentemente. Las m&aacute;quinas
+ &windows; deben ser capaces de ver a las m&aacute;quinas en la
+ otra red, accesar a archivos compartidos, y dem&aacute;s,
+ exactamente de la misma manera en que accesan a las
+ m&aacute;quinas en la red local.</para>
+
+ <para>Y todo la cosa debe ser segura. Esto significa que el
+ tr&aacute;fico entre las dos redes tiene que ser
+ encriptado.</para>
+
+ <para>Crear una VPN entre estas dos redes es un proceso multi-paso.
+ Las etapas son las siguientes:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Crear un enlace de red <quote>virtual</quote> entre las dos
+ redes, a trav&eacute;s de Internet. Probarlo, usando herramientas
+ como &man.ping.8;, para asegurarse que funcione.</para>
+ </listitem>
+
+ <listitem>
+ <para>Aplicar pol&iacute;ticas de seguridad para asegurarse
+ que el tr&aacute;fico entre las dos redes sea transparentemente
+ encriptado y desencriptado seg&uacute;n sea necesario.
+ Probar esto, usando herramientas como &man.tcpdump.1;,
+ para asegurarse que el tr&aacute;fico est&eacute; encriptado.</para>
+ </listitem>
+
+ <listitem>
+ <para>Configurar software adicional en los gateways FreeBSD,
+ para permitir a las m&aacute;quinas &windows; verse entre
+ ellas a trav&eacute;s de la VPN.</para>
+ </listitem>
+ </orderedlist>
+
+ <sect3>
+ <title>Paso 1: Creando y probando un enlace de red <quote>virtual</quote></title>
+
+ <para>Suponga que usted est&aacute; en la m&aacute;quina gateway
+ en la red #1 (con direcci&oacute;n IP p&uacute;blica <hostid
+ role="ipaddr">A.B.C.D</hostid>, direcci&oacute;n IP privada
+ <hostid role="ipaddr">192.168.1.1</hostid>), y ejecuta
+ <command>ping 192.168.2.1</command>, que es la direcci&oacute;n
+ privada de la m&aacute;quina con direcci&oacute;n IP
+ <hostid role="ipaddr">W.X.Y.Z</hostid>. ¿Que necesita suceder
+ para que esto funcione?</para>
+
+ <orderedlist>
+ <listitem>
+ <para>La m&aacute;quina gateway necesita saber como alcanzar
+ a <hostid role="ipaddr">192.168.2.1</hostid>. En otras
+ palabras, necesita tener una ruta a <hostid
+ role="ipaddr">192.168.2.1</hostid>.</para>
+ </listitem>
+ <listitem>
+ <para>Las direcciones IP privadas, como aquellas en el rango
+ <hostid role="ipaddr">192.168.x</hostid> no se supone
+ que aparezcan en Internet sueltas. En lugar de eso, cada
+ paquete que mande a <hostid role="ipaddr">192.168.2.1</hostid>
+ necesitar&aacute; ser encerrado dentro de otro paquete.
+ Este paquete necesitar&aacute; aparecer como si fuera
+ enviado desde <hostid role="ipaddr">A.B.C.D</hostid>,
+ y tendr&aacute; que ser enviado a <hostid
+ role="ipaddr">W.X.Y.Z</hostid>. Este proceso es llamado
+ <firstterm>encapsulaci&oacute;n</firstterm>.</para>
+ </listitem>
+ <listitem>
+ <para>Una vez que este paquete llega a
+ <hostid role="ipaddr">W.X.Y.Z</hostid> necesitar&aacute;
+ ser <quote>desencapsulado</quote>, y entregado a
+ <hostid role="ipaddr">192.168.2.1</hostid>.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Puede pensar en ello como si se necesitara un <quote>tunel</quote>
+ entre las dos redes. Las dos <quote>bocas del tunel</quote> son
+ las direcciones IP <hostid role="ipaddr">A.B.C.D</hostid> y
+ <hostid role="ipaddr">W.X.Y.Z</hostid>, y se debe decir al tunel
+ las direcciones de las direcciones IP privadas que ser&aacute;n
+ permitidas que pasen a trav&eacute;s de &eacute;l. El tunel es
+ usado para transferir tr&aacute;fico con direcciones IP
+ privadas a trav&eacute;s del Internet p&uacute;blico.</para>
+
+ <para>Este tunel es creado utilizando la interfaz gen&eacute;rica,
+ o dispositivo <devicename>gif</devicename> en FreeBSD. Como
+ puede imaginarse, la interfaz <devicename>gif</devicename>
+ en cada equipo gateway debe ser configurada con cuatro
+ direcciones IP; dos para las direcciones IP p&uacute;blicas,
+ y dos para las direcciones IP privadas.</para>
+
+ <para>El soporte para el dispositivo gif debe ser compilado
+ en el kernel de &os; para ambas m&aacute;quinas. Puede
+ hacer esto agregando la l&iacute;nea:</para>
+
+ <programlisting>device gif</programlisting>
+
+ <para>a los archivos de configuraci&oacute;n del kernel en
+ ambas m&aacute;quinas, y entonces compilarlo, instalarlo
+ y reiniciar normalmente.</para>
+
+ <para>La configuraci&oacute;n del tunel es un proceso de dos
+ partes. Primero se le debe decir al tunel cuales son las
+ direcciones IP exteriores (o p&uacute;blicas), utilizando
+ &man.gifconfig.8;. Luego, las direcciones IP deben ser
+ configuradas usando &man.ifconfig.8;.</para>
+
+ <note>
+ <para>En &os;&nbsp;5.X, la funcionalidad brindada por la
+ utilidad &man.gifconfig.8; ha sido fusionada a
+ &man.ifconfig.8;.</para></note>
+
+ <para>En la m&aacute;quina gateway de la red #1 debe ejecutar
+ los siguientes dos comandos para configurar el tunel.</para>
+
+ <programlisting>gifconfig gif0 A.B.C.D W.X.Y.Z
+ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
+ </programlisting>
+
+ <para>En la otra m&aacute;quina gateway ejecute los mismos
+ comandos, pero con el orden las direcciones IP
+ invertidas.</para>
+
+ <programlisting>gifconfig gif0 W.X.Y.Z A.B.C.D
+ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
+ </programlisting>
+
+ <para>Entonces puede ejecutar:</para>
+
+ <programlisting>gifconfig gif0</programlisting>
+
+ <para>para ver la configuraci&oacute;n. Por ejemplo, en el
+ gateway de la red #1, usted ver&iacute;a algo como esto:</para>
+
+ <screen>&prompt.root; <userinput>gifconfig gif0</userinput>
+gif0: flags=8011&lt;UP,POINTTOPOINT,MULTICAST&gt; mtu 1280
+inet 192.168.1.1 --&gt; 192.168.2.1 netmask 0xffffffff
+physical address inet A.B.C.D --&gt; W.X.Y.Z
+ </screen>
+
+ <para>Como puede ver, se ha creado un tunel entre las direcciones
+ f&iacute;sicas <hostid role="ipaddr">A.B.C.D</hostid> y
+ <hostid role="ipaddr">W.X.Y.Z</hostid>, y el tr&aacute;fico
+ permitido a trav&eacute;s del tunel es entre
+ <hostid role="ipaddr">192.168.1.1</hostid> y
+ <hostid role="ipaddr">192.168.2.1</hostid>.</para>
+
+ <para>Esto tambi&eacute;n habr&aacute; agregado una entrada en
+ la tabla de ruteo en ambas m&aacute;quinas, la cual puede
+ examinar con el comando <command>netstat -rn</command>.
+ Esta salida es de la m&aacute;quina gateway en la red #1.</para>
+
+ <screen>&prompt.root; <userinput>netstat -rn</userinput>
+Routing tables
+
+Internet:
+Destination Gateway Flags Refs Use Netif Expire
+...
+192.168.2.1 192.168.1.1 UH 0 0 gif0
+...
+ </screen>
+
+ <para>Como el valor de <quote>Flags</quote> lo indica, esta
+ es una ruta de equipo, lo que significa que cada gateway
+ conoce como alcalzar al otro gateway, pero no saben como
+ alcanzar el resto de sus respectivas redes. Ese problema
+ ser&aacute; solucionado proximamente.</para>
+
+ <para>Es posible que usted est&eacute; ejecutando un
+ firewall en ambas m&aacute;quinas. Esto necesitar&aacute;
+ ser transpasado por el tr&aacute;fico VPN. Tal vez des&eacute;e
+ permitir todo el tr&aacute;fico entre ambas redes, o tal
+ vez quiera incluir reglas en el firewall que protejan ambos
+ extremos de la VPN del otro.</para>
+
+ <para>Las pruebas se simplifican enormemente si configura
+ el firewall para permitir todo el tr&aacute;fico a
+ trav&eacute;s de la VPN. Siempre puede apretar las cosas
+ despues. Si est&aacute; utilizando &man.ipfw.8; en las
+ m&aacute;quinas gateway entonces un comando como</para>
+
+ <programlisting>ipfw add 1 allow ip from any to any via gif0</programlisting>
+
+ <para>permitir&aacute; todo el tr&aacute;fico entre los dos
+ extremos de la VPN, sin afectar sus otras reglas del
+ firewall. Obviamente necesitar&aacute; ejecutar este comando
+ en ambos equipos gateway.</para>
+
+ <para>Esto es suficiente para permitir a cada m&aacute;quina
+ gateway hacer un ping entre ellas. En <hostid role="ipaddr">192.168.1.1</hostid>,
+ usted debe ser capaz de ejecutar</para>
+
+ <programlisting>ping 192.168.2.1</programlisting>
+
+ <para>y obtener una respuesta, y debe ser capaz de hacer lo
+ mismo en la otra m&aacute;quina gateway.</para>
+
+ <para>De todas maneras, no ser&aacute; capaz de alcanzar
+ m&aacute;quinas internas en cada red todav&iacute;a. Esto
+ se debe al ruteo -- aunque las m&aacute;quinas gateway
+ saben como alcanzarse entre ellas, no saben como alcanzar
+ la red detr&aacute;s de cada una.</para>
+
+ <para>Para resolver este problema debe a&ntilde;adir una ruta
+ est&aacute;tica en cada m&aacute;quina gateway. El comando
+ para hacer esto en el primer gateway podr&iacute;a ser:</para>
+
+ <programlisting>route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
+ </programlisting>
+
+ <para>Esto significa <quote>Para alcanzar los equipos en
+ la red <hostid role="ipaddr">192.168.2.0</hostid>, env&iacute;a
+ los paquetes al equipo <hostid role="ipaddr">192.168.2.1</hostid></quote>.
+ Necesitar&aacute; ejecutar un comando similar en el otro
+ gateway, pero con las direcciones
+ <hostid role="ipaddr">192.168.1.x</hostid>.</para>
+
+ <para>El tr&aacute;fico IP de equipos en una red no ser&aacute;
+ capaz de alcanzar equipos en la otra red.</para>
+
+ <para>Eso ha creado ahora dos tercios de una VPN entre las dos
+ redes, de la misma manera que es <quote>virtual</quote> y
+ es una <quote>network</quote>. Todav&iacute;a no es privada.
+ Puede probar esto utilizando &man.ping.8; y &man.tcpdump.1;.
+ Abra una sesi&oacute;n en el equipo gateway y ejecute</para>
+
+ <programlisting>tcpdump dst host 192.168.2.1</programlisting>
+
+ <para>En otra sesi&oacute;n en el mismo equipo ejecute</para>
+
+ <programlisting>ping 192.168.2.1</programlisting>
+
+ <para>Ver&aacute; una salida que se parece algo a esta:</para>
+
+ <programlisting>
+16:10:24.018080 192.168.1.1 &gt; 192.168.2.1: icmp: echo request
+16:10:24.018109 192.168.1.1 &gt; 192.168.2.1: icmp: echo reply
+16:10:25.018814 192.168.1.1 &gt; 192.168.2.1: icmp: echo request
+16:10:25.018847 192.168.1.1 &gt; 192.168.2.1: icmp: echo reply
+16:10:26.028896 192.168.1.1 &gt; 192.168.2.1: icmp: echo request
+16:10:26.029112 192.168.1.1 &gt; 192.168.2.1: icmp: echo reply
+ </programlisting>
+
+ <para>Como puede ver, los mensajes ICMP van y vienen sin
+ encriptar. Si hubiera usado el par&aacute;metro <option>-s</option>
+ en &man.tcpdump.1; para tomar m&aacute;s bytes de datos de
+ estos paquetes, ver&iacute;a m&aacute;s informaci&oacute;n.</para>
+
+ <para>Obviamente esto es inaceptable. La siguiente secci&oacute;n
+ discutir&aacute; el aseguramiento del enlace entre las dos
+ redes para que todo el tr&aacute;fico sea encriptado
+ automaticamente.</para>
+
+ <itemizedlist>
+ <title>Sumario:</title>
+ <listitem>
+ <para>Configure ambos kernels con <quote>pseudo-device
+ gif</quote>.</para>
+ </listitem>
+ <listitem>
+ <para>Edite <filename>/etc/rc.conf</filename> en el equipo
+ gateway #1 y agregue las siguientes l&iacute;neas
+ (reemplazando direcciones IP seg&uacute;n sea necesario).</para>
+ <programlisting>gifconfig_gif0="A.B.C.D W.X.Y.Z"
+ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
+static_routes="vpn"
+route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
+ </programlisting>
+ </listitem>
+
+ <listitem>
+ <para>Edite su script de firewall
+ (<filename>/etc/rc.firewall</filename>, o similar) en ambos
+ equipos, y agregue</para>
+
+ <programlisting>ipfw add 1 allow ip from any to any via gif0</programlisting>
+ </listitem>
+ <listitem>
+ <para>Realice cambios similares a
+ <filename>/etc/rc.conf</filename> en el equipo gateway
+ #2, invirtiendo el orden de las direcciones IP.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Paso 2: Asegurando el enlace</title>
+
+ <para>Para asegurar el enlace usaremos IPsec. IPsec brinda un
+ mecanismo para que dos equipos coincidan en una llave de
+ encriptaci&oacute;n, y entonces usar esta llave para
+ encriptar los datos entre los dos equipos.</para>
+
+ <para>Existen dos &aacute;reas de configuraci&oacute;n a considerar
+ aqu&iacute;.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Debe existir un mecanismo para que los dos equipos
+ se pongan de acuerdo en el mecanismo de encriptaci&oacute;n
+ a utilizar. Una vez que los dos equipos se han puesto de
+ acuerdo en este mecanismo se dice que existe una
+ <quote>asociaci&oacute;n de seguridad</quote>
+ entre ellos.</para>
+ </listitem>
+ <listitem>
+ <para>Debe existir un mecanismo para especificar que tr&aacute;fico
+ debe ser encriptado. Obviamente, usted no desea encriptar
+ todo su tr&aacute;fico saliente -- usted solo desea
+ encriptar el tr&aacute;fico que es parte de la VPN. Las
+ reglas que usted pone para determinar que tr&aacute;fico
+ ser&aacute; encriptado son llamadas <quote>pol&iacute;ticas
+ de seguridad</quote>.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Las asociaciones de seguridad y las pol&iacute;ticas
+ son mantenidas por el kernel, y pueden ser modificadas
+ por programas de usuario. De todas maneras, antes de que usted
+ pueda hacer esto debe configurar el kernel para soportar IPsec y
+ el protocolo ESP (Encapsulated Security Payload). Esto es
+ realizado configurando el kernel con:</para>
+
<indexterm>
- <primary>Firewalls</primary>
+ <primary>opciones de kernel</primary>
+ <secondary>IPSEC</secondary>
</indexterm>
- <para> </para>
- </sect2>
- <sect2 id="ipsec">
- <title>IPsec</title>
+ <programlisting>options IPSEC
+options IPSEC_ESP
+ </programlisting>
+
+ <para>y recompilando, resintalando y reiniciando. Como se dijo
+ anteriormente, necesitar&aacute; hacer esto al kernel de los
+ dos equipos gateway.</para>
+
<indexterm>
- <primary>IPsec</primary>
+ <primary>IKE</primary>
</indexterm>
- <para> </para>
+
+ <para>Tiene dos opciones cuando se trata de configurar
+ asociaciones de seguridad. Puede configurarlas a mano entre
+ los dos equipos, lo que significa elegir el algoritmo de
+ encriptaci&oacute;n, llaves de encriptaci&oacute;n, y dem&aacute;s,
+ o puede utilizar daemons que implementan el protocolo
+ de intercambio de llaves de Internet (IKE, Internet Key Exchange)
+ para que lo hagan por usted.</para>
+
+ <para>Yo recomiendo lo &uacute;ltimo. Aparte de cualquier otra
+ cosa, es m&aacute;s f&aacute;cil de configurar.</para>
+
+ <indexterm>
+ <primary>IPsec</primary>
+ <secondary>pol&iacute;ticas de seguridad</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary><command>setkey</command></primary>
+ </indexterm>
+
+ <para>Editar y desplegar pol&iacute;ticas de seguridad es llevado
+ a cabo usando &man.setkey.8;. Como una analog&iacute;a,
+ <command>setkey</command> es a las tablas de pol&iacute;ticas de
+ seguridad del kernel lo que &man.route.8; es a las tablas de
+ ruteo del kernel. <command>setkey</command> tambi&eacute;n puede
+ desplegar las asociaciones de seguridad actuales, y para
+ continuar con la analog&iacute;a, similarmente a
+ <command>netstat -r</command> es ese aspecto.</para>
+
+ <para>Existen un n&uacute;mero de opciones de daemons para
+ administrar las asociaciones de seguridad en FreeBSD. Este
+ art&iacute;culo describir&aacute; como usar una de ellas,
+ racoon&nbsp;&mdash; el cual est&aacute; disponible como
+ <filename role="package">security/racoon</filename> en la
+ colecci&oacute;n de ports de &os;.</para>
+
+ <indexterm>
+ <primary>racoon</primary>
+ </indexterm>
+
+ <para>El software <filename role="package">security/racoon</filename>
+ debe ser ejecutado en los dos equipos gateway. En cada equipo es
+ configurado con la direcci&oacute;n IP del otro extremo de la
+ VPN, y una llave secreta (la cual usted elije, y debe ser la misma
+ en ambos gateways).</para>
+
+ <para>Los dos daemons entonces se contactan entre ellos, confirman
+ que son quienes dicen ser (utilizando la llave secreta que usted
+ configur&oacute;). Los daemons entonces generan una nueva llave
+ secreta, y la utilizan para encriptar el tr&aacute;fico a
+ trav&eacute;s de la VPN. Periodicamente intercambian este
+ secreto, para que incluso si un atacante fuera a comprometer una
+ de las llaves (lo cual es teoricamente cercano a imposible) no
+ le har&iacute;a mucho bien -- para cuando haya crackeado la
+ llave los daemons ya habr&aacute;n escogido una nueva.</para>
+
+ <para>El archivo de configuraci&oacute;n para racoon
+ est&aacute; almacenado en <filename>${PREFIX}/etc/racoon</filename>.
+ Debe encontrar un archivo de configuraci&oacute;n ah&iacute;
+ el cual no debe necesitar ser cambiado mucho. El otro
+ componente de la configuraci&oacute;n de racoon, la cual
+ necesitar&aacute; cambiar, es la <quote>llave
+ precompartida</quote>.</para>
+
+ <para>La configuraci&oacute;n por omisi&oacute;n de racoon
+ espera encontrar esto en el archivo <filename>${PREFIX}/etc/racoon/psk.txt</filename>.
+ Es importante notar que la llave precompartida <emphasis>no</emphasis>
+ es la llave que ser&aacute; utilizada para encriptar su
+ tr&aacute;fico a trav&eacute;s del enlace VPN, solamente es un
+ s&iacute;mbolo que permite le a los daemons que administran las
+ llaves confiar el uno en el otro.</para>
+
+ <para><filename>psk.txt</filename> contiene una l&iacute;nea
+ por cada sitio remoto con el que est&eacute; tratando. En
+ este ejemplo, donde existen dos sitios, cada archivo
+ <filename>psk.txt</filename> contendr&aacute; una l&iacute;nea
+ (porque cada extremo de la VPN solo est&aacute; tratando
+ con un sitio en el otro extremo).</para>
+
+ <para>En el equipo gateway #1 esta l&iacute;nea deber&iacute;a
+ parecerse a esta:</para>
+
+ <programlisting>W.X.Y.Z secret</programlisting>
+
+ <para>Esto es, la direcci&oacute;n IP <emphasis>p&uacute;blica</emphasis>
+ en el extremo remoto, espacio en blanco, y un texto de cadena que
+ proporcina el secreto. Obviamente, no debe utilizar <quote>secret</quote>
+ como su llave -- las reglas normales para escoger una contrase&ntilde;a
+ aplican.</para>
+
+ <para>En el equipo gateway #2 la l&iacute;nea se parecer&iacute;a
+ a esta</para>
+
+ <programlisting>A.B.C.D secret</programlisting>
+
+ <para>Esto es, la direcci&oacute;n IP p&uacute;blica del
+ extremo remoto, y la misma llave secreta. <filename>psk.txt</filename>
+ debe tener modo <literal>0600</literal> (ej., solo modo
+ lectura/escritura para <username>root</username>) antes de
+ que racoon corra.</para>
+
+ <para>Debe ejecutar racoon en ambas m&aacute;quinas gateway.
+ Tambi&eacute;n necesitar&aacute; agregar algunas reglas de
+ firewall para permitir el tr&aacute;fico IKE, el cual es
+ transportado sobre UDP al puerto ISAKMP (Internet Security
+ Association Key Management Protocol). De nuevo, esto debe estar
+ al principio de la lista de reglas del firewall.</para>
+
+ <programlisting>ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
+ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
+ </programlisting>
+
+ <para>Una vez que racoon este corriendo puede tratar de dar un
+ ping a un equipo gateway desde el otro. La conexi&oacute;n
+ todav&iacute;a no est&aacute; encriptada, pero entonces racoon
+ crear&aacute; las asociaciones de seguridad entre los dos
+ equipos -- esto puede tomar un momento, y puede que lo vea
+ como un corto retraso antes de que los comandos ping
+ empiecen a responder.</para>
+
+ <para>Una vez que se han creado las asociaciones de seguridad
+ puede verlas utilizando &man.setkey.8;. Ejecute</para>
+
+ <programlisting>setkey -D</programlisting>
+
+ <para>en cualquiera de los equipos para ver la informaci&oacute;n de
+ la asociaci&oacute;n de seguridad.</para>
+
+ <para>Eso es la mitad del problema. La otra mitad es configurar
+ sus pol&iacute;ticas de seguridad.</para>
+
+ <para>Para crear una pol&iacute;tica de seguridad sensible, vamos
+ a revisar lo que se ha configurado hasta el momento. Esta
+ discusi&oacute;n cuenta para ambos extremos del enlace.</para>
+
+ <para>Cada paquete IP que usted manda tiene una cabecera que
+ contiene datos acerca del paquete. La cabecera incluye la
+ direcci&oacute;n IP del destino y de la fuente. Como ya sabemos,
+ las direcciones IP privadas, como el rango
+ <hostid role="ipaddr">192.168.x.y</hostid> no se supone que
+ aparezcan en el Internet p&uacute;blico. En vez de eso, primero
+ deben ser encapsulados dentro de otro paquete. Este paquete
+ debe tener la direcci&oacute;n IP p&uacute;blica de destino y fuente
+ sustituidas por las direcciones privadas.</para>
+
+ <para>As&iacute; que si su paquete saliente empez&oacute; luciendo como este:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="security/ipsec-out-pkt" align="center">
+ </imageobject>
+
+ <textobject>
+ <literallayout class="monospaced">
+ .----------------------.
+ | Src: 192.168.1.1 |
+ | Dst: 192.168.2.1 |
+ | &lt;other header info&gt; |
+ +----------------------+
+ | &lt;packet data&gt; |
+ `----------------------'</literallayout>
+ </textobject>
+ </mediaobject>
+
+ <para>Entonces ser&aacute; encapsulado dentro de otro paquete,
+ luciendo como este:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="security/ipsec-encap-pkt" align="center">
+ </imageobject>
+
+ <textobject>
+ <literallayout class="monospaced">
+ .--------------------------.
+ | Src: A.B.C.D |
+ | Dst: W.X.Y.Z |
+ | &lt;other header info&gt; |
+ +--------------------------+
+ | .----------------------. |
+ | | Src: 192.168.1.1 | |
+ | | Dst: 192.168.2.1 | |
+ | | &lt;other header info&gt; | |
+ | +----------------------+ |
+ | | &lt;packet data&gt; | |
+ | `----------------------' |
+ `--------------------------'</literallayout>
+ </textobject>
+ </mediaobject>
+
+ <para>Esta encapsulaci&oacute;n es llevada a cabo
+ por el dispositivo <devicename>gif</devicename>. Como puede
+ ver, el paquete ahora tiene una direcci&oacute;n IP real en
+ el exterior, y nuestro paquete original ha sido envuelto
+ como dato dentro del paquete que ser&aacute; puesto en
+ Internet.</para>
+
+ <para>Obviamente, queremos que todo el tr&aacute;fico entre
+ las VPNs est&eacute; encriptado. Tal vez pueda tratar
+ de poner esto en palabras, como:</para>
+
+ <para><quote>Si un paquete sale desde <hostid
+ role="ipaddr">A.B.C.D</hostid>, y est&aacute; destinado para
+ <hostid role="ipaddr">W.X.Y.Z</hostid>, entonces encr&iacute;ptalo,
+ utilizando las asociaciones de seguridad necesarias.</quote></para>
+
+ <para><quote>Si un paquete llega desde <hostid
+ role="ipaddr">W.X.Y.Z</hostid>, y est&aacute; destinado para
+ <hostid role="ipaddr">A.B.C.D</hostid>, entonces desencr&iacute;ptalo,
+ utilizando las asociaciones de seguridad necesarias.</quote></para>
+
+ <para>Eso es un aproximado, pero no del todo correcto. Si hace esto,
+ todo el tr&aacute;fico desde y hacia <hostid role="ipaddr">W.X.Y.Z</hostid>,
+ incluso tr&aacute;fico que no es parte de la VPN, ser&aacute;
+ encriptado. Eso no es exactamente lo que quiere. La pol&iacute;tica
+ correcta es como sigue</para>
+
+ <para><quote>Si un paquete sale desde <hostid
+ role="ipaddr">A.B.C.D</hostid>, y ese paquete est&aacute;
+ encapsulando a otro paquete, y esta destinado para
+ <hostid role="ipaddr">W.X.Y.Z</hostid>, entonces encr&iacute;ptalo,
+ utilizando las asociaciones de seguridad necesarias.</quote></para>
+
+ <para><quote>Si un paquete llega desde <hostid
+ role="ipaddr">W.X.Y.Z</hostid>, y ese paquete est&aacute;
+ encapsulando a otro paquete, y esta destinado para
+ <hostid role="ipaddr">A.B.C.D</hostid>, entonces desencr&iacute;ptalo,
+ utilizando las asociaciones de seguridad necesarias.</quote></para>
+
+ <para>Un cambio sutil, pero necesario.</para>
+
+ <para>Las pol&iacute;ticas de seguridad tambi&eacute;n son
+ puestas utilizando &man.setkey.8;. &man.setkey.8; proporciona
+ un lenguaje de configuraci&oacute;n para definir la
+ pol&iacute;tica. Puede ya sea introducir las instrucciones de
+ configuraci&oacute;n v&iacute;a stdin, o puede usar la opci&oacute;n
+ <option>-f</option> para especificar un nombre de archivo que
+ contenga las instrucciones de configuraci&oacute;n.</para>
+
+ <para>La configuraci&oacute;n en el equipo gateway #1 (el cual
+ tiene la direcci&oacute;n IP p&uacute;blica
+ <hostid role="ipaddr">A.B.C.D</hostid>) para forzar que todo
+ el tr&aacute;fico saliente hacia <hostid role="ipaddr">W.X.Y.Z</hostid>
+ sea encriptado es:</para>
+
+ <programlisting>
+spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
+ </programlisting>
+
+ <para>Ponga estos comando en un archivo (ej.,
+ <filename>/etc/ipsec.conf</filename>) y entonces ejecute</para>
+
+ <screen>&prompt.root; <userinput>setkey -f /etc/ipsec.conf</userinput></screen>
+
+ <para><option>spdadd</option> le dice a &man.setkey.8; que
+ queremos agregar una regla a la base de datos de pol&iacute;ticas
+ segura. El resto de esta l&iacute;nea especifica que paquetes
+ se ajustar&aacute;n a esta pol&iacute;tica.
+ <hostid role="ipaddr">A.B.C.D/32</hostid> y
+ <hostid role="ipaddr">W.X.Y.Z/32</hostid> son las direcciones IP
+ y m&aacute;scaras de red que identifican la red o equipos a los
+ que esta pol&iacute;tica se aplicar&aacute;. En este caso, queremos
+ aplicarla al tr&aacute;fico entre estos dos equipos.
+ <option>-P out</option> dice que esta pol&iacute;tica aplica
+ a paquetes salientes, e <option>ipsec</option> dice que el
+ paquete ser&aacute; asegurado.</para>
+
+ <para>La segunda l&iacute;nea especifica como este paquete
+ ser&aacute; encriptado. <option>esp</option> es el
+ protocolo que ser&aacute; utilizado, mientras que
+ <option>tunnel</option> indica que el paquete ser&aacute;
+ despues encapsulado en un paquete IPsec. El uso repetido de
+ <hostid role="ipaddr">A.B.C.D</hostid> y
+ <hostid role="ipaddr">W.X.Y.Z</hostid> es utilizado para
+ seleccionar la asociaci&oacute;n de seguridad a usar, y
+ por &uacute;ltimo <option>require</option> exige que los
+ paquetes deben ser encriptados si concuerdan con esta
+ regla.</para>
+
+ <para>Esta regla solo concuerda con paquetes salientes.
+ Necesitar&aacute; una regla similar para los paquetes
+ entrantes.</para>
+
+ <programlisting>spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;</programlisting>
+
+ <para>Note el <option>in</option> en lugar del <option>out</option>
+ en este caso, y la inversi&oacute;n necesaria de las direcciones
+ IP.</para>
+
+ <para>El otro equipo gateway (el cual tiene la direcci&oacute;n
+ IP p&uacute;blica <hostid role="ipaddr">W.X.Y.Z</hostid>)
+ necesitar&aacute; reglas similares.</para>
+
+ <programlisting>spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
+spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;</programlisting>
+
+ <para>Finalmente, necesita a&ntilde;adir reglas de firewall
+ para permitir la circulaci&oacute;n de paquetes ESP e IPENCAP
+ de ida y vuelta. Estas reglas necesitar&aacute;n ser agregadas
+ a ambos equipos.</para>
+
+ <programlisting>ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
+ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
+ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
+ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
+ </programlisting>
+
+ <para>Debido a que las reglas son sim&eacute;tricas puede utilizar
+ las mismas reglas en cada equipo gateway.</para>
+
+ <para>Los paquetes salientes se ver&aacute;n ahora como esto:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="security/ipsec-crypt-pkt" align="center">
+ </imageobject>
+
+ <textobject>
+ <literallayout class="monospaced">
+ .------------------------------. --------------------------.
+ | Src: A.B.C.D | |
+ | Dst: W.X.Y.Z | |
+ | &lt;other header info&gt; | | Encrypted
+ +------------------------------+ | packet.
+ | .--------------------------. | -------------. | contents
+ | | Src: A.B.C.D | | | | are
+ | | Dst: W.X.Y.Z | | | | completely
+ | | &lt;other header info&gt; | | | |- secure
+ | +--------------------------+ | | Encap'd | from third
+ | | .----------------------. | | -. | packet | party
+ | | | Src: 192.168.1.1 | | | | Original |- with real | snooping
+ | | | Dst: 192.168.2.1 | | | | packet, | IP addr |
+ | | | &lt;other header info&gt; | | | |- private | |
+ | | +----------------------+ | | | IP addr | |
+ | | | &lt;packet data&gt; | | | | | |
+ | | `----------------------' | | -' | |
+ | `--------------------------' | -------------' |
+ `------------------------------' --------------------------'
+ </literallayout>
+ </textobject>
+ </mediaobject>
+
+ <para>cuando son recibidos por el extremo m&aacute;s lejano de la
+ VPN primero ser&aacute;n desencriptados (utilizando las
+ asociaciones de seguridad que han sido negociadas por racoon).
+ Entonces entrar&aacute;n a la interfaz <devicename>gif</devicename>,
+ la cual desenvuelve la segunda capa, hasta que le deja con el
+ paquete m&aacute;s interno, el cual puede entonces viajar a
+ la red interna.</para>
+
+ <para>Puede revisar la seguridad utilizando la misma prueba de
+ &man.ping.8; anterior. Primero, inicie una sesi&oacute;n en
+ la m&aacute;quina gateway <hostid role="ipaddr">A.B.C.D</hostid>,
+ y ejecute:</para>
+
+ <programlisting>tcpdump dst host 192.168.2.1</programlisting>
+
+ <para>En otra sesi&oacute;n en la misma m&aacute;quina ejecute</para>
+
+ <programlisting>ping 192.168.2.1</programlisting>
+
+ <para>Esta vez debe ver una salida similar a la siguiente:</para>
+
+ <programlisting>XXX tcpdump output</programlisting>
+
+ <para>ahora, como puede ver, &man.tcpdump.1; muestra los paquetes ESP.
+ Si trata de examinarlos con la opci&oacute;n <option>-s</option>
+ ver&aacute; basura (aparentemente), debido a la encriptaci&oacute;n.</para>
+
+ <para>Felicitaciones. Acaba de configurar una VPN entre dos sitios
+ remotos.</para>
+
+ <itemizedlist>
+ <title>Sumario</title>
+ <listitem>
+ <para>Configure ambos kernels con:</para>
+
+ <programlisting>options IPSEC
+options IPSEC_ESP
+ </programlisting>
+ </listitem>
+ <listitem>
+ <para>Instale <filename role="package">security/racoon</filename>.
+ Edite <filename>${PREFIX}/etc/racoon/psk.txt</filename> en ambos
+ equipos gateway, agregando una entrada para la direcci&oacute;n
+ IP del equipo remoto y una llave secreta que ambos conozcan.
+ Aseg&uacute;rese que este archivo tenga modo 0600.</para>
+ </listitem>
+ <listitem>
+ <para>A&ntilde;ada las siguientes l&iacute;neas a
+ <filename>/etc/rc.conf</filename> en cada equipo:</para>
+
+ <programlisting>ipsec_enable="YES"
+ipsec_file="/etc/ipsec.conf"
+ </programlisting>
+ </listitem>
+ <listitem>
+ <para>Cr&eacute;e un <filename>/etc/ipsec.conf</filename> en
+ cada equipo que contenga las l&iacute;neas spdadd necesarias.
+ En el equipo gateway #1 esto ser&iacute;a:</para>
+
+ <programlisting>
+spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
+ esp/tunnel/A.B.C.D-W.X.Y.Z/require;
+spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
+ esp/tunnel/W.X.Y.Z-A.B.C.D/require;
+</programlisting>
+
+ <para>En el equipo gateway #2 esto ser&iacute;a:</para>
+
+<programlisting>
+spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
+ esp/tunnel/W.X.Y.Z-A.B.C.D/require;
+spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
+ esp/tunnel/A.B.C.D-W.X.Y.Z/require;
+</programlisting>
+ </listitem>
+ <listitem>
+ <para>Agregue reglas de firewall para permitir el
+ tr&aacute;fico IKE, ESP e IPENCAP en ambos equipos:</para>
+
+ <programlisting>
+ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
+ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
+ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
+ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
+ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
+ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
+ </programlisting>
+ </listitem>
+ </itemizedlist>
+
+ <para>Los dos pasos previos deben ser suficiente para levantar la
+ VPN. Las m&aacute;quinas en cada red se&aacute;n capaces de
+ referirse una a otra utilizando direcciones IP, y todo el tr&aacute;fico
+ a trav&eacute;s del enlace ser&aacute; automatica y seguramente
+ encriptado.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="openssh">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Chern</firstname>
+ <surname>Lee</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ <!-- 21 April 2001 -->
+ </authorgroup>
+ </sect1info>
+
+ <title>OpenSSH</title>
+ <indexterm><primary>OpenSSH</primary></indexterm>
+ <indexterm>
+ <primary>seguridad</primary>
+ <secondary>OpenSSH</secondary>
+ </indexterm>
+
+ <para><application>OpenSSH</application> es un conjunto de herramientas de conectividad
+ utilizadas para accesar m&aacute;quinas remotas de manera segura. Puede ser usado
+ como un reemplzado directo para <command>rlogin</command>,
+ <command>rsh</command>, <command>rcp</command> y
+ <command>telnet</command>. Adicionalmente, cualquier otra conexi&oacute;n
+ TCP/IP puede ser tuneleada/reenviada de manera segura a trav&eacute;s
+ de SSH. <application>OpenSSH</application> encripta todo el tr&aacute;fico para
+ eliminar efectivamente el espionaje, secuestro de conexiones, y otros ataques
+ a nivel de red.</para>
+
+ <para><application>OpenSSH</application> es mantenido por el proyecto OpenBSD, y est&aacute;
+ basado sobre SSH v1.2.12 con todos errores recientes corregidos y actualizaciones.
+ Es compatible con los protocolos SSH 1 y 2. <application>OpenSSH</application> ha
+ estado en el sistema base desde FreeBSD&nbsp;4.0.</para>
+
+ <sect2>
+ <title>Ventajas de utilizar OpenSSH</title>
+
+ <para>Normalmente, al utilizar &man.telnet.1; o &man.rlogin.1;,
+ los datos son enviados a trav&eacute;s de la red de una
+ forma clara, no encriptada. Cualquier olfateador de red
+ entre el cliente y el servidor puede robar la informaci&oacute;n
+ de usuario/contrase&ntilde;a o los datos transferidos en
+ su sesi&oacute;n. <application>OpenSSH</application> ofrece una
+ variedad de m&eacute;todos de autentificaci&oacute;n y
+ encriptaci&oacute;n para prevenir que esto suceda.</para>
</sect2>
- <sect2 id="seuring-root-and-staff">
- <title>Asegurando la cuenta <username>root</username> y las cuentas de
- staff</title>
+ <sect2>
+ <title>Habilitando sshd</title>
<indexterm>
- <primary><command>su</command></primary>
+ <primary>OpenSSH</primary>
+ <secondary>habilitando</secondary>
</indexterm>
- <para>Ant&eacute;s que nada, no se preocupe en asegurar las cuentas
- del staff si aun no ha asegurado la cuenta <username>root</username>.
- La mayor parte de los sistemas tienen asignada una clave de acceso
- a la cuenta <username>root</username>. Lo primero que usted debe
- asumir es que la contrase&ntilde;a <emphasis>siempre</emphasis>
- est&aacute; comprometida. Esto no significa que tenga que
- eliminar la contrase&ntilde;a. La contrase&ntilde;a es casi siempre
- necesaria para el acceso a la c&oacute;nsola de la computadora. Esto
- significa que usted no debe permitir utilizar la contrase&ntilde;a
- fuera de la c&oacute;nsola o usarla posiblemente con el comando
- &man.su.1;. Por ejemplo, cerciorese de que sus ptys sean
- correctamente especificados como inseguros en el archivo
- <filename>/etc/ttys</filename> para rechazar conexiones directas a
- <username>root</username> v&iacute;a <command>telnet</command> o
- <command>rlogin</command>. Si se usan otros servicios tales como
- <application>sshd</application>, asegurese de que las conexiones
- directas a <username>root</username> est&eacute;n deshabilitadas. Es
- posible hacer esto editando el fichero
- <filename>/etc/ssh/sshd_config</filename>, asegurando que
- <literal>PermitRootLogin</literal> est&eacute; fijado como
- <literal>NO</literal>. Considere cada m&eacute;todo de acceso
- - Servicios como FTP puedes tener problemas de seguridad. Las
- conexiones directas a <username>root</username> deben ser s&oacute;lo
- permitidas f&iacute;sicamente en la c&oacute;nsola de sistema.</para>
+ <para>El daemon <application>sshd</application> est&aacute;
+ habilitado por omisi&oacute;n en &os;&nbsp;4.X y puede
+ ser habilitado o no durante la instalaci&oacute;n por el
+ usuario en &os;&nbsp;5.X. Para ver si est&aacute; habilitado,
+ revise el archivo <filename>rc.conf</filename> por:</para>
+
+ <screen>sshd_enable="YES"</screen>
+
+ <para>Esto cargar&aacute; &man.sshd.8;, el programa daemon de <application>OpenSSH</application>,
+ la pr&oacute;xima vez que su sistema inicie. Alternativamente,
+ puede simplemente correr directamente el daemon <application>sshd</application>
+ tecleando <command>sshd</command> en la l&iacute;nea de comando.</para>
+ </sect2>
+
+ <sect2>
+ <title>Cliente SSH</title>
<indexterm>
- <primary><groupname>wheel</groupname></primary>
+ <primary>OpenSSH</primary>
+ <secondary>cliente</secondary>
</indexterm>
- <para>Por supuesto, como administrador de sistema usted debe poder
- acceder como <username>root</username>, y nosotros tenemos algunas
- formas de conseguirlo. Nos aseguraremos de que &eacute;stas formas
- tengan autenticaci&oacute;n adicional. Una de las formas de hacer
- <username>root</username> accesible es agregar cuentas apropiadas del
- staff al grupo <groupname>wheel</groupname> (en
- <filename>/etc/group</filename>). Se permite a los miembros del
- staff puestos en el grupo <groupname>wheel</groupname> usar el
- comando <command>su</command> para acceder <username>root</username>.
- Nunca debe dar a miembros del staff acceso nativo a
- <groupname>wheel</groupname> cuando se crea la cuenta. Las cuentas
- del staff deben estar colocadas en grupos de
- <groupname>staff</groupname>, para despu&eacute;s agregar a aquellos
- deseados al grupo <groupname>wheel</groupname> en el fichero
- <filename>/etc/group</filename>. Solamente a aquellos que realmente
- se necesiten en este grupo deben ser agregados. Es tambi&eacute;n
- posible usar un m&eacute;todo de autentificaci&oacute;n tal como
- Kerberos, utilizar el fichero <filename>.k5login</filename> en la
- cuenta <username>root</username> para permitir a &man.ksu.1; que
- <username>root</username> no necesite a nadie en el grupo
- <groupname>wheel</groupname>. Esta puede ser una mejor
- soluci&oacute;n puesto que el mecanismo de
- <groupname>wheel</groupname> todav&iacute;a permite al intruso romper
- <username>root</username>, si el intruso ha conseguido quebrar el
- archivo de contrase&ntilde;as y el grupo del staff. Mientr&aacute;s
- que usar el mecanismo de <groupname>wheel</groupname> es mejor que no
- tener nada en lo absoluto, no es necesariamente la opci&oacute;n mas
- segura.</para>
-
- <para>Una manera indirecta de asegurar las cuentas del staff y usar el
- acceso a <username>root</username> de ultima instancia es usar un
- m&eacute;todo de acceso alternativo conocido como
- <quote>starring</quote>. Este m&eacute;todo marca las
- contrase&ntilde;as cifradas con un solo
- <quote><literal>*</literal></quote>. Este comando actualizar&aacute;
- fichero de <filename>/etc/master.passwd</filename> y la base de datos
- de usuario/contrase&ntilde;a para desabilitar los logins con
- autentificaci&oacute;n de contrase&ntilde;a.</para>
-
- <para>Una cuenta del staff como esta:</para>
+ <para>La utilidad &man.ssh.1; funciona de manera
+ similar a &man.rlogin.1;.</para>
- <programlisting>foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
+ <screen>&prompt.root; <userinput>ssh <replaceable>user@example.com</replaceable></userinput>
+Host key not found from the list of known hosts.
+Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput>
+Host 'example.com' added to the list of known hosts.
+user@example.com's password: <userinput>*******</userinput></screen>
- <para>Debe ser cambiada a:</para>
-
- <programlisting>foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/home/local/bin/tcsh</programlisting>
-
- <para>Este cambio evitar&aacute; que las conexiones normales ocurran,
- ya que la contrase&ntilde;a cifrada nunca coincidir&aacute; con
- <quote><literal>*</literal></quote>. Habiendo hecho esto, los
- miembros del staff deber&aacute;n usar otros m&eacute;todos de
- autentificaci&oacute;n como &man.kerberos.1; o &man.ssh.1;, usando
- pares de claves p&uacute;blicas/privadas. Al usar algo como
- Kereberos, uno debe asegurar generalmente las m&aacute;quinas que
- corran los servidores Kereberos, asi como tambi&eacute;n su
- estaci&oacute;n de trabajo. Al usar pares de claves
- p&uacute;blicas/privadas con ssh, uno debe asegurar generalmente la
- m&aacute;quina usada para hacer el login (generalmente una
- estaci&oacute;n de trabajo). Una capa adicional de protecci&oacute;n
- se puede agregar a los pares de claves
- p&uacute;blicas/privadas protegiendolas con contrase&ntilde;a en el
- momento de crearlas con &man.ssh-keygen.1;. Pudiendo
- <quote>marcar</quote> las contrase&ntilde;as de las cuentas del staff
- tambi&eacute;n garantiza que los miembros del staff solamente pueden
- acceder al sistema por medio de un m&eacute;todo seguro. Esto fuerza
- a los miembros del staff a acceder al sistema usando solamente formas
- seguras y conexiones cifradas para todas sus sesiones, lo que
- protege de una de las vulnerabilidades m&aacute;s usadas por
- los intrusos.</para>
+ <para>El login continuar&aacute; como si lo har&iacute;a si fuera
+ una sesi&oacute;n utilizando <command>rlogin</command> o
+ <command>telnet</command>. SSH utiliza un sistema de huellas de
+ llaves para verificar la autenticidad del servidor cuando el
+ cliente se conecta. Al usuario se le pide que introduzca
+ <literal>yes</literal> solamente la primera vez que se
+ conecta. Todos los intentos futuros de login son verificados
+ contra la huella de la llave salvada. El cliente SSH le alertar&aacute;
+ si la huella guardada difiere de la huella recibida en intentos
+ de login futuros. Las huellas son almacenadas en
+ <filename>~/.ssh/known_hosts</filename>, o en
+ <filename>~/.ssh/known_hosts2</filename> para huellas
+ SSH v2.</para>
+
+ <para>Por omisi&oacute;n, versiones recientes de
+ los servidores <application>OpenSSH</application> solamente
+ aceptan conexiones SSH v2. El cliente utilizar&aacute; la
+ versi&oacute;n 2 de ser posible y pasar&aacute; como
+ respaldo a la versi&oacute;n 1. El cliente puede tambi&eacute;n
+ ser forzado a utilizar una u otra pas&aacute;ndole <option>-1</option>
+ o <option>-2</option> para versi&oacute;n 1 o versi&oacute;n 2
+ respectivamente. La compatibilidad de versi&oacute;n 1 es
+ mantenida en el cliente para compatibilidad con versiones
+ antiguas.</para>
+ </sect2>
+
+ <sect2>
+ <title>Copia segura</title>
+ <indexterm>
+ <primary>OpenSSH</primary>
+ <secondary>copia segura</secondary>
+ </indexterm>
+ <indexterm><primary><command>scp</command></primary></indexterm>
+
+ <para>El comando &man.scp.1; funciona de manera
+ similar a &man.rcp.1;; copia un archivo desde o hacia
+ una m&aacute;quina remota, excepto que lo hace de
+ una forma segura.</para>
+
+ <screen>&prompt.root; <userinput> scp <replaceable>user@example.com:/COPYRIGHT COPYRIGHT</replaceable></userinput>
+user@example.com's password: <userinput>*******</userinput>
+COPYRIGHT 100% |*****************************| 4735
+00:00
+&prompt.root;</screen>
+
+ <para>Ya que la huella fu&eacute; ya salvada para este equipo en
+ el ejemplo anterior, es verificada al utilizar &man.scp.1;
+ aqu&iacute;.</para>
+
+ <para>Los argumentos pasados a &man.scp.1; son similares
+ a &man.cp.1;, con el archivo o archivos en el primer
+ argumento, y el destino en el segundo. Ya que el archivo
+ es transferido a trav&eacute;s de la red, a trav&eacute;s de
+ SSH, uno o m&aacute;s argumentos toman la forma
+ <option>user@host:&lt;ruta_al_archivo_remoto&gt;</option>.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Configuraci&oacute;n</title>
+ <indexterm>
+ <primary>OpenSSH</primary>
+ <secondary>configuraci&oacute;n</secondary>
+ </indexterm>
+
+ <para>Los archivos de configuraci&oacute;n del sistema
+ para el daemon <application>OpenSSH</application> y el
+ cliente reside dentro del directorio <filename>/etc/ssh</filename>.</para>
+
+ <para><filename>ssh_config</filename> configura las opciones
+ del cliente, mientras que <filename>sshd_config</filename>
+ configura el daemon.</para>
+
+ <para>Adicionalmente, las opciones <option>sshd_program</option>
+ (<filename>/usr/sbin/sshd</filename> por omisi&oacute;n),
+ y <option>sshd_flags</option> de <filename>rc.conf</filename>
+ pueden brindar m&aacute;s niveles de configuraci&oacute;n.</para>
+ </sect2>
+
+ <sect2 id="security-ssh-keygen">
+ <title>ssh-keygen</title>
+
+ <para>En lugar de utilizar contrase&ntilde;as, &man.ssh-keygen.1;
+ puede ser utilizado para generar llaves DSA o RSA para
+ autentificar a un usuario:</para>
+
+ <screen>&prompt.user; <userinput>ssh-keygen -t <replaceable>dsa</replaceable></userinput>
+Generating public/private dsa key pair.
+Enter file in which to save the key (/home/user/.ssh/id_dsa):
+Created directory '/home/user/.ssh'.
+Enter passphrase (empty for no passphrase):
+Enter same passphrase again:
+Your identification has been saved in /home/user/.ssh/id_dsa.
+Your public key has been saved in /home/user/.ssh/id_dsa.pub.
+The key fingerprint is:
+bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com
+</screen>
+
+ <para>&man.ssh-keygen.1; crear&aacute; un par de llaves
+ p&uacute;blica y privada para usar en la autentificaci&oacute;n.
+ La llave privada es almacenada en
+ <filename>~/.ssh/id_dsa</filename> o en
+ <filename>~/.ssh/id_rsa</filename>, mientras que la llave
+ p&uacute;blica es almacenada en <filename>~/.ssh/id_dsa.pub</filename>
+ o en <filename>~/.ssh/id_rsa.pub</filename>, respectivamente para
+ tipos de llave DSA y RSA. La llave p&uacute;blica debe ser
+ colocada en <filename>~/.ssh/authorized_keys</filename> de la
+ m&aacute;quina remota para que la configuraci&oacute;n funcione.
+ Similarmente, llaves RSA versi&oacute;n 1 deben ser colocadas en
+ <filename>~/.ssh/authorized_keys</filename>.</para>
+
+ <para>Esto permitir&aacute; conexiones a la m&aacute;quina remota
+ bas&aacute;ndose en llaves SSH en lugar de contrase&ntilde;as.</para>
+
+ <para>Si una frase es utilizada en &man.ssh-keygen.1;, se le
+ pedir&aacute; al usuario una contrase&ntilde;a cada
+ vez para poder utilizar la llave privada. &man.ssh-agent.1;
+ puede aliviar el esfuerzo de introducir repetidamente
+ frases largas, y esto es explorado en la secci&oacute;n
+ <xref linkend="security-ssh-agent"> abajo.</para>
+
+ <warning><para>Las varias opciones y archivos pueden ser
+ diferentes de acuerdo a la versi&oacute;n de <application>OpenSSH</application>
+ que tenga en su propio sistema; para evitar problemas debe
+ consultar la p&aacute;gina de manual &man.ssh-keygen.1;.</para></warning>
+ </sect2>
+
+ <sect2 id="security-ssh-agent">
+ <title>ssh-agent y ssh-add</title>
+
+ <para>Las utilidades &man.ssh-agent.1; y &man.ssh-add.1; brindan
+ m&eacute;todos para que llaves <application>SSH</application>
+ sean cargadas en memoria para su uso, sin tener que necesitar
+ el tecleo de la frase cada vez.</para>
+
+ <para>La utilidad &man.ssh-agent.1; manejar&aacute; la
+ autentificaci&oacute;n utilizando la llave(s) privada que se
+ le carg&oacute;. &man.ssh-agent.1; debe ser utilizado para
+ lanzar otra aplicaci&oacute;n. En el nivel m&aacute;s b&aacute;sico,
+ puede generar un shell o a un nivel m&aacute;s avanzado, un
+ manejador de ventanas.<para>
+
+ <para>Para usar &man.ssh-agent.1; en un shell, primero necesitar&aacute;
+ ser generado con un shell como argumento. Segundo, la
+ identidad necesita ser a&ntilde;adida ejecutando &man.ssh-add.1;
+ y brindando la frase para la llave privada. Una vez que se han
+ completado estos pasos el usuario ser&aacute; capaz de hacer
+ &man.ssh.1; a cualquier equipo que tenga instalada la llave
+ p&uacute;blica correspondiente. Por ejemplo:</para>
+
+ <screen>&prompt.user; ssh-agent <replaceable>csh</replaceable>
+&prompt.user; ssh-add
+Enter passphrase for /home/user/.ssh/id_dsa:
+Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
+&prompt.user;</screen>
+
+ <para>Para utilizar &man.ssh-agent.1; en X11, una
+ llamada a &man.ssh-agent.1; necesitar&aacute; ser
+ colocada en <filename>~/.xinitrc</filename>. Esto
+ brindar&aacute; los servicios de &man.ssh-agent.1;
+ a todos los programas lanzados en X11.
+ Un archivo <filename>~/.xinitrc</filename> de ejemplo
+ podr&iacute;a lucir como este:</para>
+
+ <programlisting>exec ssh-agent <replaceable>startxfce4</replaceable></programlisting>
+
+ <para>Esto lanzar&iacute;a &man.ssh-agent.1;, el cual a su
+ vez lanzar&iacute;a <application>XFCE</application>, cada
+ vez que inicie X11. Entonces una vez que se ha hecho y X11
+ ha sido reiniciado para que los cambios tomen efecto,
+ simplemente ejecute &man.ssh-add.1; para cargar todas sus
+ llaves SSH.</para>
+ </sect2>
+
+ <sect2 id="security-ssh-tunneling">
+ <title>T&uacute;neles SSH</title>
+ <indexterm>
+ <primary>OpenSSH</primary>
+ <secondary>t&uacute;neles</secondary>
+ </indexterm>
+
+ <para><application>OpenSSH</application> tiene la habilidad de crear un tunel para
+ encapsular otro protocolo en una sesi&oacute;n encriptada.</para>
+
+ <para>El siguiente comando le dice a &man.ssh.1; que realice un
+ tunel para <application>telnet</application>:</para>
+
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5023:localhost:23 user@foo.example.com</replaceable></userinput>
+&prompt.user;</screen>
+
+ <para>El comando <command>ssh</command> es utilizado con
+ las siguientes opciones:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-2</option></term>
+
+ <listitem>
+ <para>Obliga a <command>ssh</command> a utilizar la
+ versi&oacute;n 2 del protocolo. (No utilizar si
+ est&aacute; trabajando con servidores SSH antiguos)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-N</option></term>
+
+ <listitem>
+ <para>Indica no comando, o solamente tunel. Si se omite,
+ <command>ssh</command> iniciar&iacute;a una sesi&oacute;n
+ normal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-f</option></term>
+
+ <listitem>
+ <para>Obliga a <command>ssh</command> a ejecutarse
+ en segundo plano.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-L</option></term>
+
+ <listitem>
+ <para>Indica un tunel local de la manera
+ <replaceable>puerto local:equipo remoto:puerto remoto</replaceable>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>user@foo.example.com</option></term>
+
+ <listitem>
+ <para>El servidor SSH remoto.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+
+ <para>Un tunel SSH funciona creando un socket que escucha
+ en <hostid>localhost</hostid> en el puerto especificado.
+ Entonces reenv&iacute;a cualquier conexi&oacute;n
+ recibida en el puerto/equipo local v&iacute;a la
+ conexi&oacute;n SSH al puerto o equipo remoto especificado.</para>
+
+ <para>En el ejemplo, el puerto <replaceable>5023</replaceable> en
+ <hostid>localhost</hostid> est&aacute; diendo reenviado al
+ puerto <replaceable>23</replaceable> en el <hostid>localhost</hostid>
+ de la m&aacute;quina remota. Ya que <replaceable>23</replaceable> es
+ <application>telnet</application>, esto crear&iacute;a una sesi&oacute;n
+ <application>telnet</application> segura a trav&eacute;s de un tunel
+ SSH.</para>
+
+ <para>Esto puede ser utilizado para envolver cualquier
+ n&uacute;mero de protocolos inseguros TCP como SMTP,
+ POP3, FTP, etc.</para>
+
+ <example>
+ <title>Usando SSH para crear un t&uacute;nel seguro para SMTP</title>
+
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5025:localhost:25 user@mailserver.example.com</replaceable></userinput>
+user@mailserver.example.com's password: <userinput>*****</userinput>
+&prompt.user; <userinput>telnet localhost 5025</userinput>
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+220 mailserver.example.com ESMTP</screen>
+
+ <para>Esto puede utilizarse junto con
+ &man.ssh-keygen.1; y cuentas de usuario adicional para
+ crear un ambiente m&aacute;s transparente/libre de problemas.
+ Las llaves pueden ser usadas en lugar de teclear una
+ contrase&ntilde;a, y los t&uacute;neles pueden ser
+ ejecutados como un usuario separado.</para>
+ </example>
+
+ <sect3>
+ <title>Ejemplos pr&aacute;cticos de t&uacute;neles SSH</title>
+
+ <sect4>
+ <title>Acceso seguro a un servidor POP3</title>
+
+ <para>En el trabajo hay un servidor SSH que acepta
+ conexiones desde el exterior. En la misma red de la
+ oficina reside un servidor de correo corriendo un
+ servidor POP3. La red, o ruta de red entre su casa y
+ oficina puede o no ser completamente confiable. Debido
+ a esto, necesita revisar su correo electr&oacute;nico
+ de manera segura. La soluci&oacute;n es crear una
+ conexi&oacute;n SSH al servidor SSH de su oficina, y
+ llegar por un t&uacute;nel al servidor de correo.</para>
+
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>2110:mail.example.com:110 user@ssh-server.example.com</replaceable></userinput>
+user@ssh-server.example.com's password: <userinput>******</userinput></screen>
+
+ <para>cuando el t&uacute;nel est&eacute; levantado y funcionando,
+ puede apuntar su cliente de correo para enviar peticiones
+ POP3 a <hostid>localhost</hostid> en el puerto 2110.
+ Una conexi&oacute;n ser&aacute; reenviada de manera segura
+ a trave&eacute;s del t&uacute;nel a <hostid>mail.example.com</hostid>.</para>
+ </sect4>
+
+ <sect4>
+ <title>Salt&aacute;ndose un firewall draconiano</title>
+
+ <para>Algunos administradores de red imponen reglas de
+ firewall extremadamente draconianas, filtrando no
+ solamente conexiones entrantes, sino tambi&eacute;n
+ conexiones salientes. Tal vez solo se le otorgue acceso
+ para contactar m&aacute;quinas remotas en los puertos 22
+ y 80 para ssh y navegar en web.</para>
+
+ <para>Tal vez quiera accesar otros (quiz&aacute;s no
+ relacionados al trabajo) servicios, como un servidor
+ Ogg Vorbis para escuchar m&uacute;sica. Si este
+ servidor Ogg Vorbis est&aacute; transmitiendo en alg&uacute;n
+ otro puerto diferente de 22 y 80, no podr&aacute; tener
+ acceso a &eacute;l.</para>
+
+ <para>La soluci&oacute;n es crear una conexi&oacute;n SSH
+ fuera del firewall de su red, y utilizarla para hacer un
+ t&uacute;nel al servidor Ogg Vorbis.</para>
+
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>8888:music.example.com:8000 user@unfirewalled-system.example.org</replaceable></userinput>
+user@unfirewalled-system.example.org's password: <userinput>*******</userinput></screen>
+
+ <para>Su cliente de m&uacute;sica puede ahora ser
+ apuntado a <hostid>localhost</hostid> puerto 8888,
+ el cual ser&aacute; reenviado a <hostid>music.example.com</hostid>
+ puerto 8000, evadiendo con &eacute;xito el firewall.</para>
+ </sect4>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>La opci&oacute;n de usuarios <varname>AllowUsers</varname></title>
+
+ <para>Es siempre una buena idea limitar que usuarios pueden
+ entrar y desde donde. La opci&oacute;n <literal>AllowUsers</literal>
+ es una buena manera de lograr esto. Por ejemplo, para permitir
+ solamente entrada al usuario <username>root</username> desde
+ <hostid role="ipaddr">192.168.1.32</hostid>, algo como esto
+ podr&iacute;a ser apropiado en el archivo
+ <filename>/etc/ssh/sshd_config</filename>:</para>
+
+ <programlisting>AllowUsers root@192.168.1.32</programlisting>
+
+ <para>Para permitir al usuario <username>admin</username> la
+ entrada desde cualquier lugar, solamente liste el nombre
+ de usuario:</para>
+
+ <programlisting>AllowUsers admin</programlisting>
+
+ <para>M&uacute;ltiples usuarios pueden ser listados en la misma
+ l&iacute;nea, como:</para>
+
+
+ <programlisting>AllowUsers root@192.168.1.32 admin</programlisting>
+
+ <note>
+ <para>Es importante que liste cada usuario que necesite entrar
+ a esta m&aacute;quina; de otra forma no podr&aacute;n entrar.</para>
+ </note>
+
+ <para>Despues de hacer los cambios a
+ <filename>/etc/ssh/sshd_config</filename> debe decirle a
+ &man.sshd.8; que cargue de nuevo sus archivos de
+ configuraci&oacute;n ejecutando:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/sshd reload</userinput></screen>
+ </sect2>
+
+ <sect2>
+ <title>M&aacute;s lecturas</title>
+ <para><ulink url="http://www.openssh.com/">OpenSSH</ulink></para>
+ <para>&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
+ &man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5;</para>
+ <para>&man.sshd.8; &man.sftp-server.8; &man.sshd.config.5;</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="fs-acl">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <indexterm>
+ <primary>ACL</primary>
+ </indexterm>
+ <title>Listas de control de acceso a sistemas de archivos</title>
+
+ <para>Junto a mejoramientos del sistema de archivos como instant&aacute;neas
+ (snapshots), FreeBSD 5.0 y posteriores ofrecen la seguridad de
+ listas de control de acceso a sistemas de archivos
+ (<acronym>ACLs, Access Control Lists</acronym>).</para>
+
+ <para>Las listas de control de acceso extienden el modelo de
+ permisos est&aacute;ndar de &unix; de una manera altamente
+ compatible (&posix;.1e). Esta opci&oacute;n le permite a un
+ administrador hacer uso y tomar ventaja de un modelo de
+ seguridad m&aacute;s sofisticado.</para>
+
+ <para>Para habilitar soporte de <acronym>ACL</acronym> para sistemas
+ de archivos <acronym>UFS</acronym>, la siguiente opci&oacute;n:</para>
+
+ <programlisting>options UFS_ACL</programlisting>
+
+ <para>debe ser compilada en el kernel. Si esta opci&oacute;n
+ no ha sido compilada, un mensaje de advertencia ser&aacute;
+ desplegado cuando se intente montar un sistema de archivos
+ soportando <acronym>ACLs</acronym>. Esta opci&oacute;n es
+ incluida en el kernel <filename>GENERIC</filename>.
+ <acronym>ACLs</acronym> dependen que atributos extendidos sean
+ habilitados en el sistema de archivos. Los atributos extendidos
+ est&aacute;n soportados nativamente en la pr&oacute;xima
+ generaci&oacute;n de sistemas de archivos &unix;, <acronym>UFS2</acronym>.</para>
+
+ <note><para>Un nivel mas elevado de carga adminitrativa es requerido
+ para configurar atributos extendidos en <acronym>UFS1</acronym>
+ que en <acronym>UFS2</acronym>. El desempe&ntilde;o de atributos
+ extendidos en <acronym>UFS2</acronym> tambi&eacute;n es substancialmente
+ m&aacute;s elevado. Como resultado, <acronym>UFS2</acronym> es
+ generalmente recomendado respecto a <acronym>UFS1</acronym>
+ en preferencia para su uso con listas de control de acceso.</para></note>
+
+ <para><acronym>ACLs</acronym> son habilitadas por la bandera administrativa
+ al momento de montaje, <option>acls</option>, la cual puede ser a&ntilde;adida
+ a <filename>/etc/fstab</filename>. La bandera de montaje puede tambi&eacute;n
+ ser automaticamente activada de una manera persistente utilizando
+ &man.tunefs.8; para modificar una bandera de superbloque <acronym>ACLs</acronym>
+ en la cabecera del sistema de archivos. En general, es preferible utilizar
+ la bandera de superbloque por varias razones:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>La bandera de montaje <acronym>ACLs</acronym> no puede ser cambiada
+ por un remontaje (&man.mount.8; <option>-u</option>), solamente con
+ un completo &man.umount.8; y un &man.mount.8; fresco. Esto significa
+ que no se pueden habilitar <acronym>ACLs</acronym> en el sistema de
+ archivos ra&iacute;z despues del arranque. Tambi&eacute;n significa
+ que no puede cambiar la disposici&oacute;n de un sistema de archivos
+ una vez que est&aacute; en uso.</para>
+ </listitem>
+
+ <listitem>
+ <para>Activando la bandera de superbloque provocar&aacute; que el sistema
+ de archivos sea siempre montado con <acronym>ACLs</acronym> habilitadas
+ incluso si no existe una entrada en <filename>fstab</filename> o si los
+ dispositivos se reordenan. Esto previene un montado accidental del
+ sistema de archivos sin tener las <acronym>ACLs</acronym> habilitadas,
+ lo cual puede resultar en que se impongan de manera inadecuada las
+ <acronym>ACLs</acronym>, y por consecuencia un problema de seguridad.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note><para>Podemos cambiar el comportamiento de las <acronym>ACLs</acronym> para
+ permitirle a la bandera ser habilitada sin un &man.mount.8; completo, pero
+ lo consideramos deseable para deshalentar montados accidentales sin
+ <acronym>ACLs</acronym> habilitadas, porque puede disparase a los pies muy
+ feamente si habilita <acronym>ACLs</acronym>, luego las deshabilita, luego las
+ habilita nuevamente sin borrar los atributos extendidos. En general, una vez que
+ que se han habilitado <acronym>ACLs</acronym> en un sistema de archivos, no deben
+ ser dehabilitadas, ya que la protecci&oacute;n de archivos resultante puede no
+ ser compatible con aquellas pretendidas por los usuarios del sistema, y rehabilitando
+ las <acronym>ACLs</acronym> pueden re-pegar las <acronym>ACLs</acronym> previas
+ a archivos que han tenido cambios en sus permisos desde eso, resultando en
+ otra conducta impredecible.</para></note>
+
+ <para>Los sistemas de archivos con <acronym>ACLs</acronym> habilitadas mostrar&aacute;n
+ un signo <literal>+</literal> (m&aacute;s) en sus configuraciones de permisos
+ al visualizarlos. Por ejemplo:</para>
+
+ <programlisting>drwx------ 2 robert robert 512 Dec 27 11:54 private
+drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
+drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
+drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
+drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
+
+ <para>Aqu&iacute; vemos que los directorios <filename>directory1</filename>,
+ <filename>directory2</filename>, y <filename>directory3</filename>
+ est&aacute;n todos tomando ventaja de las <acronym>ACLs</acronym>.
+ El directorio <filename>public_html</filename> no.</para>
+
+ <sect2>
+ <title>Haciendo uso de <acronym>ACL</acronym>s</title>
+
+ <para>Las <acronym>ACL</acronym>s del sistema de archivo pueden
+ ser visualizadas por la utilidad &man.getfacl.1;. Por ejemplo,
+ para ver las configuraciones de <acronym>ACL</acronym> en el
+ archivo <filename>test</filename>, uno podr&iacute;a
+ usar el comando:</para>
+
+ <screen>&prompt.user; <userinput>getfacl <filename>test</filename></userinput>
+ #file:test
+ #owner:1001
+ #group:1001
+ user::rw-
+ group::r--
+ other::r--</screen>
+
+ <para>Para cambiar las configuraciones <acronym>ACL</acronym> en
+ este archivo, invoque la utilidad &man.setfacl.1;. Observe:</para>
+
+ <screen>&prompt.user; <userinput>setfacl -k <filename>test</filename></userinput></screen>
+
+ <para>La bandera <option>-k</option> eliminar&aacute; todas
+ las <acronym>ACL</acronym>s definidas actualmente de un
+ archivo o sistema de archivos. El m&eacute;todo m&aacute;s
+ preferible ser&iacute;a utilizar <option>-b</option> ya que
+ deja los campos b&aacute;sicos requeridos para que
+ funcionen las <acronym>ACL</acronym>s.</para>
+
+ <screen>&prompt.user; <userinput>setfacl -m u:trhodes:rwx,group:web:r--,o::--- <filename>test</filename></userinput></screen>
+
+ <para>En el comando antes mencionado, la opci&oacute;n
+ <option>-m</option> fu&eacute; usada para modificar las
+ entradas <acronym>ACL</acronym> por omisi&oacute;n.
+ Debido a que no hubieron entradas predefinidas, como
+ fueron removidas por el comando previo, esto restaurar&aacute;
+ las opciones por omisi&oacute;n y asignar&aacute; las
+ opciones listadas. Tome precauciones para notar que si agrega
+ un usuario o grupo el cual no existe en el sistema,
+ un error de <errorname>Invalid argument</errorname> ser&aacute;
+ impreso en <devicename>stdout</devicename>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="security-portaudit">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <indexterm>
+ <primary>Portaudit</primary>
+ </indexterm>
+ <title>Monitoreando asuntos de seguridad de terceros</title>
+
+ <para>En a&ntilde;os recientes, el mundo de la seguridad ha hecho
+ muchos mejoramientos en como se maneja la evaluaci&oacute;n de
+ vulnerabilidades. La amenaza de instrusiones al sistema
+ incrementa cuando utilidades de terceros son instaladas
+ y configuradas para virtualmente cualquier sistema operativo
+ disponible hoy en d&iacute;a.</para>
+
+ <para>La evaluaci&oacute;n de vulnerabilidades es un factor
+ clave en la seguridad, y mientras &os; libera advertencias
+ para el sistema base, hacerlo para cada utilidad de terceros
+ est&aacute; mas all&aacute; de la capacidad del proyecto
+ &os;. Existe una manera de mitigar las vulnerabilidades de
+ terceros y advertir a los administradores de incidentes de
+ seguridad conocidos. Una utilidad agregada de &os; conocida
+ como <application>Portaudit</application> existe solamente
+ con este prop&oacute;sito.</para>
+
+ <para>El port <filename role="port">security/portaudit</filename>
+ consulta una base de datos, actualizada y mantenida por el
+ equipo de seguridad y por los desarrolladores de &os;, por
+ incidentes de seguridad conocidos.</para>
+
+ <para>Para empezar a usar <application>Portaudit</application>,
+ primero se debe instalar desde la colecci&oacute;n de ports:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/security/portaudit && make install clean</userinput></screen>
+
+ <para>Durante el proceso de instalaci&oacute;n, los archivos
+ de configuraci&oacute;n para &man.periodic.8; ser&aacute;n
+ actualizados, permitiendole a <application>Portaudit</application>
+ aparecer en la ejecuci&oacute;n diaria de seguridad. Aseg&uacute;rese
+ que el correo de la ejecuci&oacute;n diaria de seguridad, el cual
+ es enviado a la cuenta de correo de <username>root</username>, sea
+ le&iacute;do. No se requiere ninguna otra configuraci&oacute;n
+ aqu&iacute;.</para>
+
+ <para>Despues de la instalaci&oacute;n, un administrador debe
+ actualizar la base de datos almacenada localmente en
+ <filename role="directory">/var/db/portaudit</filename> invocando
+ el siguiente comando:</para>
+
+ <screen>&prompt.root; <userinput>portaudit -F</userinput></screen>
+
+ <note>
+ <para>La base de datos ser&aacute; automaticamente actualizada
+ durante la ejecuci&oacute;n de &man.periodic.8;; as&iacute;
+ que el comando anterior es completamente opcional. Solo es
+ requerido para los siguientes ejemplos.</para>
+ </note>
+
+ <para>Para auditar las utilidades de terceros instaladas como
+ parte de la colecci&oacute;n de ports, un administrador solo
+ necesita correr el siguiente comando:</para>
+
+ <screen>&prompt.root; <userinput>portaudit -a</userinput></screen>
+
+ <para>Este es un ejemplo de la salida:</para>
+
+ <programlisting>Affected package: cups-base-1.1.22.0_1
+Type of problem: cups-base -- HPGL buffer overflow vulnerability.
+Reference: &lt;http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html&gt;
+
+1 problem(s) in your installed packages found.
+
+You are advised to update or deinstall the affected package(s) immediately.</programlisting>
+
+ <para>Apuntando un navegador de web a la <acronym>URL</acronym>
+ mostrada, un administrador puede obtener m&aacute;s informaci&oacute;n
+ acerca de la vulnerabilidad en cuesti&oacute;n. Esto incluir&aacute;
+ versiones afectadas, por versi&oacute;n de port de &os;, junto con
+ otros sitios web que contengan advertencias de seguridad.</para>
+
+ <para>En corto, <application>Portaudit</application> es una utilidad
+ poderosa y extremadamente &uacute;til cuando se acopla con el
+ port <application>Portupgrade</application>.</para>
+ </sect1>
+
+ <sect1 id="security-advisories">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <indexterm>
+ <primary>Advertencias de seguridad en FreeBSD</primary>
+ </indexterm>
+ <title>&os; Security Advisories</title>
+
+ <para>Como muchos sistemas operativos con calidad de producci&oacute;n,
+ &os; publica <quote>advertencias de seguridad</quote>. Estas
+ advertencias son usualmente enviadas por correo a las listas de
+ seguridad y anotadas en la Errata solamente despues de que la
+ release apropiada ha sido parchada. Esta secci&oacute;n trabajar&aacute;
+ para explicar que es una advertencia de seguridad, como entenderla
+ y que medidas hay que tomar para parchar el sistema.</para>
+
+ <sect2>
+ <title>¿Como se ve una advertencia?</title>
+
+ <para>Las advertencias de seguridad en &os; se ven de manera
+ similar a la de abajo, tomada de la lista de correos
+ &a.security-notifications.name;.</para>
+
+ <programlisting>=============================================================================
+&os;-SA-XX:XX.UTIL Security Advisory
+ The &os; Project
+
+Topic: denial of service due to some problem<co id="co-topic">
+
+Category: core<co id="co-category">
+Module: sys<co id="co-module">
+Announced: 2003-09-23<co id="co-announce">
+Credits: Person@EMAIL-ADDRESS<co id="co-credit">
+Affects: All releases of &os;<co id="co-affects">
+ &os; 4-STABLE prior to the correction date
+Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
+ 2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
+ 2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
+ 2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
+ 2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
+ 2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
+ 2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
+ 2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
+ 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co id="co-corrected">
+&os; only: NO<co id="co-only">
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit
+http://www.FreeBSD.org/security/.
+I. Background<co id="co-backround">
+
+
+II. Problem Description<co id="co-descript">
+
+
+III. Impact<co id="co-impact">
+
+
+IV. Workaround<co id="co-workaround">
+
+
+V. Solution<co id="co-solution">
+
+
+VI. Correction details<co id="co-details">
+
+
+VII. References<co id="co-ref"></programlisting>
+
+
+ <calloutlist>
+ <callout arearefs="co-topic">
+ <para>El campo <literal>Topic</literal> indica cual es el problema exaxtamente.
+ Es basicamente una introducci&oacute;n a la advertencia de seguridad actual
+ y anota la utilidad con la vulnerabilidad.</para>
+ </callout>
+
+ <callout arearefs="co-category">
+ <para><literal>Category</literal> se refiere a la parte afectada del sistema
+ la cual puede ser <literal>core</literal>, <literal>contrib</literal> o
+ <literal>ports</literal>. La categor&iacute;a <literal>core</literal>
+ significa que la vulnerabilidad afecta a un componente central del
+ sistema operativo &os;. La categor&iacute;a <literal>contrib</literal>
+ significa que la vulnerabilidad afecta a software contribuido al
+ proyecto &os;, como <application>sendmail</application>. Finalmente
+ la categor&iacute;a <literal>ports</literal> indica que la
+ vulnerabilidad afecta a software agregado como parte de la
+ colecci&oacute;n de ports.</para>
+ </callout>
+
+ <callout arearefs="co-module">
+ <para>El campo <literal>Module</literal> se refiere a la ubicaci&oacute;n del
+ componente, por ejemplo <literal>sys</literal>. En este ejemplo, vemos que
+ el m&oacute;dulo, <literal>sys</literal>, es afectado; por lo tanto, esta
+ vulnerabilidad afecta a componentes utilizados dentro del kernel.</para>
+ </callout>
+
+ <callout arearefs="co-announce">
+ <para>El campo <literal>Announced</literal> refleja la fecha en que esa
+ advertencia de seguridad fu&eacute; publicada, o anunciada al mundo.
+ Esto significa que el equipo de seguridad ha verificado que el
+ problema exista y que un parche ha sido enviado al repositorio
+ de c&oacute;digo fuente de &os;.</para>
+ </callout>
+
+ <callout arearefs="co-credit">
+ <para>El campo <literal>Credits</literal> le da el cr&eacute;dito al
+ individuo u organizaci&oacute;n que descubri&oacute; y report&oacute;
+ la vulnerabilidad.</para>
+ </callout>
+
+ <callout arearefs="co-affects">
+ <para>El campo <literal>Affects</literal> explica a que releases de &os;
+ afecta esta vulnerabilidad. Para el kernel, una r&aacute;pida
+ revisi&oacute;n a la salida de <command>ident</command> en
+ los archivos afectados ayudar&aacute; determinando la
+ revisi&oacute;n. Para ports, el n&uacute;mero de versi&oacute;n
+ est&aacute; listado despues del nombre del port en
+ <filename>/var/db/pkg</filename>. Si el sistema no se
+ sincroniza con el repositorio <acronym>CVS</acronym> de
+ &os; y se reconstruye diariamente, existe la posibilidad de
+ que est&eacute; afectado.</para>
+ </callout>
+
+ <callout arearefs="co-corrected">
+ <para>El campo <literal>Corrected</literal> indica la fecha, hora, zona
+ horaria y release que fu&eacute; corregido.</para>
+ </callout>
+
+ <callout arearefs="co-only">
+ <para>El campo <literal>&os; only</literal> indica si esta vulnerabilidad afecta
+ solamente a &os;, o si afecta tambi&eacute;n a otros sistemas operativos.</para>
+ </callout>
+
+ <callout arearefs="co-backround">
+ <para>El campo <literal>Background</literal> da informaci&oacute;n acerca de
+ que es exactamente la utilidad afectada. La mayor parte del
+ tiempo se refiere a por qu&eacute; la utilidad existe en &os;,
+ para que es utilizada, y un poco de informaci&oacute;n de
+ como lleg&oacute; a convertirse en utilidad.</para>
+ </callout>
+
+ <callout arearefs="co-descript">
+ <para>El campo <literal>Problem Description</literal> explica el agujero
+ de seguridad en profundiad. Esto puede incluir informaci&oacute;n de
+ c&oacute;digo fallado, o incluso como la utilidad puede ser
+ usada maliciosamente para abrir un agujero de seguridad.</para>
+ </callout>
+
+ <callout arearefs="co-impact">
+ <para>El campo <literal>Impact</literal> describe el tipo de impacto
+ que el problema puede tener en un sistema. Por ejemplo,
+ esto puede desde un ataque de negaci&oacute;n de servicio,
+ hasta privilegios extras para usuarios, o incluso brindar
+ al atacante acceso de superusuario.</para>
+ </callout>
+
+ <callout arearefs="co-workaround">
+ <para>El campo <literal>Workaround</literal> ofrece una soluci&oacute;n
+ temporal posible para administradores de sistemas que tal vez no
+ puedan actualizar el sistema. Esto puede ser debido a
+ falta de tiempo, disponibilidad de red, o a muchas otras
+ razones. Sin importar eso, la seguridad no de debe tomar
+ a la ligera, y un sistema afectado debe ser parchado o
+ una soluci&oacute;n temporal para el agujero de seguridad
+ debe ser implementado.</para>
+ </callout>
+
+ <callout arearefs="co-solution">
+ <para>El campo <literal>Solution</literal> ofrece instrucciones para
+ parchar el sistema afectado. Este es un m&eacute;todo paso a
+ paso, probado y verificado para parchar un sistema y que
+ trabaje seguro.</para>
+ </callout>
+
+ <callout arearefs="co-details">
+ <para>El campo <literal>Correction Details</literal> despliega
+ la rama del <acronym>CVS</acronym> o el nombre del release
+ con los puntos cambiados a guiones bajos. Tambi&eacute;n
+ muestra el n&uacute;mero de revisi&oacute;n de los archivos
+ afectados dentro de cada rama.</para>
+ </callout>
+
+ <callout arearefs="co-ref">
+ <para>El campo <literal>References</literal> usualmente ofrece fuentes de
+ informaci&oacute;n. Esto puede incluir <acronym>URL</acronym>s
+ de web, libros, listas de correos y grupos de noticias.</para>
+ </callout>
+ </calloutlist>
+ </sect2>
+ </sect1>
+
+ <sect1 id="security-accounting">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Contribuido por </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <indexterm>
+ <primary>Contabilidad de procesos</primary>
+ </indexterm>
+ <title>Contabilidad de procesos</title>
+
+ <para>Contabilidad de procesos es un m&eacute;todo de
+ seguridad en el cual un administrador puede llevar
+ seguimiento de los recursos del sistema utilizados,
+ su distribuci&oacute;n entre los usuarios, brindar
+ monitoreo para el sistema y minimamente rastrear
+ los comandos de los usuarios.</para>
+
+ <para>Esto en realidad tiene sus puntos positivos y negativos.
+ Uno de los positivos es que una intrusi&oacute;n puede ser
+ minimizada al punto de entrada. Uno negativo es la cantidad
+ de logs generados por la contabilidad de procesos, y el
+ espacio en disco que requieren. Esta secci&oacute;n
+ llevar&aacute; a un administrador a trav&eacute;s de
+ las bases de la contabilidad de procesos.</para>
+
+ <sect2>
+ <title>Habilitando y utilizando la contabilidad de procesos</title>
+
+ <para>Antes de hacer uso de la contabilidad de procesos,
+ debe ser habilitada. Para hacer esto, ejecute el
+ siguiente comando:</para>
+
+ <screen>&prompt.root; <userinput>touch <filename>/var/account/acct</filename></userinput>
+
+&prompt.root; <userinput>accton <filename>/var/account/acct</filename></userinput>
+
+&prompt.root; <userinput>echo 'accounting_enable="YES"' &gt;&gt; <filename>/etc/rc.conf</filename></userinput></screen>
+
+ <para>Una vez habilitada, la contabilidad de procesos
+ empezar&aacute; a seguir el rastro de estad&iacute;sticas
+ del <acronym>CPU</acronym>, comandos, etc. Todos los logs
+ de contabilidad est&aacute;n en un formato ilegible
+ para humanos y pueden ser visualizados usando la utilidad
+ &man.sa.8;. Si se ejecuta sin opciones, <command>sa</command>
+ imprimir&aacute; informaci&oacute;n relativa al n&uacute;mero
+ de llamadas por usuario, el tiempo total transcurrido en
+ minutos, tiempo total de <acronym>CPU</acronym> y de usuario
+ en minutos, n&uacute;mero promedio de operaciones de E/S,
+ etc.</para>
+
+ <para>Para ver informaci&oacute;n acerca de los comandos
+ siendo ejecutados, uno podr&iacute;a usar la utilidad
+ &man.lastcomm.1;. <command>lastcomm</command> puede ser
+ utilizado para imprimir comandos ejecutados por usuarios
+ en &man.ttys.5;, espec&iacute;ficos, por ejemplo:</para>
+
+ <screen>&prompt.root; <userinput>lastcomm ls
+ <username>trhodes</username> ttyp1</userinput></screen>
+
+ <para>Imprimir&iacute;a todos los usos conocidos de <command>ls</command>
+ por el usuario <username>trhodes</username> en la terminal
+ ttyp1.</para>
+
+ <para>Existen muchas otras opciones &uacute;tiles y son explicadas
+ en las p&aacute;ginas de manual &man.lastcomm.1;, &man.acct.5;
+ y &man.sa.8;.</para>
+ </sect2>
+ </sect1>
</chapter>
-<!--
+<!--
Local Variables:
mode: sgml
- sgml-declaration: "../chapter.decl"
+ sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
- End:
+ End:
-->
+