Sei sulla pagina 1di 159

Red Hat Enterprise Linux 5 D eployment Guide

Red Hat Enterprise Linux 5


Deployment Guide
Deployment, configuration and administration of Red Hat Enterprise Linux 5

Edio 6

Nota Legal

Nota Legal
Copyright 2007, 2008, 2009, 2010 Red Hat Inc.. T he text of and illustrations in this document are licensed by Red Hat under a Creative Commons AttributionShare Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux is the registered trademark of Linus T orvalds in the United States and other countries. Java is a registered trademark of Oracle and/or its affiliates. XFS is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners. 1801 Varsity Drive Raleigh, NC 27606-2072 USA Phone: +1 919 754 3700 Phone: 888 733 4281 Fax: +1 919 754 3701

Red Hat Enterprise Linux 5 D eployment Guide

Resumo
T he Deployment Guide documents relevant information reegarding the deployment, configuration and administration of Red Hat Enterprise Linux 5.

ndice

ndice
Introduo 1. Convenes de Documentos 2. Envie-nos sua Opinio I. Autenticao e Segurana 1. Viso Geral de Segurana 1.1. Avaliao de Vulnerabilidade 1.1.1. Pensando Como o Inimigo 1.1.2. Definindo Avaliao e T estes 1.1.3. Avaliando as Ferramentas 1.2. Atacantes e Vulnerabilidades 1.2.1. Uma Breve Histria sobre Hackers 1.2.2. Ameaas Segurana da Rede 1.2.3. Ameaas Segurana do Servidor 1.2.4. Ameaas Segurana de Estaes de T rabalho e PCs 1.3. Exploits e Ataques Freqentes 1.4. Atualizaes de Segurana 1.4.1. Atualizando Pacotes 2. Assegurando sua Rede de T rabalho 2.1. Segurana de Estaes de T rabalho 2.1.1. Avaliando a Segurana de Estaes de T rabalho 2.1.2. Segurana do BIOS e do Carregador de Inicializao 2.1.3. Segurana da Senha 2.1.4. Controles Administrativos 2.1.5. Servios de Rede Disponveis 2.1.6. Firewalls Pessoais 2.1.7. Ferramentas de Comunicao com Segurana Aprimorada 2.2. Segurana do Servidor 2.2.1. Protegendo Servios com T CP Wrappers e xinetd 2.2.2. Protegendo o Portmap 2.2.3. Protegendo o NIS 2.2.4. Protegendo o NFS 2.2.5. Protegendo o Servidor HT T P Apache 2.2.6. Protegendo o FT P 2.2.7. Protegendo o Sendmail 2.2.8. Verificando Quais Portas esto Escutando 2.3. Single Sign-on (SSO) 2.3.1. Introduo 2.3.2. Iniciando seu Carto Inteligente 2.3.3. Como Funciona o Registro do Carto Inteligente 2.3.4. Como Funciona a Autenticao do Carto Inteligente 2.3.5. Configurando o Firefox para usar o Kerberos para SSO. 2.4. Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM) 2.4.1. Vantagens do PAM 2.4.2. Arquivos de Configurao do PAM 2.4.3. Formato do Arquivo de Configurao do PAM 2.4.4. Exemplos de Arquivos de Configurao do PAM 2.4.5. Criando Mdulos PAM 2.4.6. O PAM e o Caching de Credenciais Administrativas

Red Hat Enterprise Linux 5 D eployment Guide

2.4.7. O PAM e a Propriedade de Dispositivos 2.4.8. Recursos Adicionais 2.5. T CP Wrappers e xinetd 2.5.1. T CP Wrappers 2.5.2. Arquivos de Configurao do T CP Wrappers 2.5.3. xinetd 2.5.4. Arquivos de Configurao do xinetd 2.5.5. Recursos Adicionais 2.6. Kerberos 2.6.1. O que o Kerberos? 2.6.2. T erminologia do Kerberos 2.6.3. Como o Kerberos Funciona 2.6.4. Kerberos e PAM 2.6.5. Configurando o Servidor Kerberos 5 2.6.6. Configurando um Cliente Kerberos 5 2.6.7. Mapeamento Domnio-para-territrio 2.6.8. Configurando KDCs Secundrios 2.6.9. Configurando a Autenticao Cross-Realm - (Cross Realm Authentication) 2.6.10. Recursos Adicionais 2.7. Redes Privadas Virtuais (Virtual Private Networks - VPNs) 2.7.1. Como um VPN Funciona? 2.7.2. VPNs e o Red Hat Enterprise Linux 2.7.3. IPsec 2.7.4. Criando uma Conexo IPsec 2.7.5. Instalao do IPsec 2.7.6. Configurao Host-a-Host do IPsec 2.7.7. Configurao Rede-a-Rede do IPsec 2.7.8. Iniciando e Parando uma Conexo IPsecConnection 2.8. Firewalls 2.8.1. Netfilter 6 2.8.2. Configuraes Bsicas de Firewall 2.8.3. Usando IPT ables 2.8.4. Filtros de IPT ables Comuns 2.8.5. Regras FORWARD e NAT 2.8.6. Software Malicioso e Endereos IP Falsificados (spoofed) 2.8.7. IPT ables e Rastreamento de Conexo 2.8.8. IPv6 2.8.9. Recursos Adicionais 2.9. IPT ables 2.9.1. Filtragem de Pacotes 2.9.2. Diferenas entre IPT ables e IPChains 2.9.3. Opes de Comando para o IPT ables 2.9.4. Salvando Regras do IPT ables 2.9.5. Scripts de Controle do IPT ables 2.9.6. IPT ables e IPv6 2.9.7. Recursos Adicionais 3. Segurana e SELinux 3.1. Mecanismos de Controle de Acesso (ACM) 3.1.1. Controle de Acesso Discricionrio (DAC) 3.1.2. Controle de Acesso Obrigatrio (MAC) 3.1.3. Controle de Acesso baseado na Funo (RBAC) 3.1.4. Segurana de Nvel Mltiplo (MLS)

ndice

3.2. Introduo ao SELinux 3.2.1. Viso Geral do SELinux 3.2.2. Arquivos Relacionados ao SELinux 3.2.3. Recursos Adicionais 3.3. Breves Fundamentos e Histria do SELinux 3.4. Segurana de Nvel Mltiplo (MLS) 3.4.1. Porque Nvel Mltiplo? 3.4.2. Nveis de Segurana, Objetos e Assuntos. 3.4.3. Poltica MLS 3.4.4. Certificao LSPP 4. Padronizando a Poltica do SELinux 4.1. Apresentao 4.1.1. Poltica modular 4.2. Construindo um Mdulo de Poltica Local 4.2.1. Usar o audit2 permite a Construo de um Mdulo de Poltica Local. 4.2.2. Analisando o Arquivo T ipo Enforcement (T E) 4.2.3. Carregando o Pacote de Poltica 5. Referncias A. Revision History 6. Colophon

Red Hat Enterprise Linux 5 D eployment Guide

Introduo
Bem-vindo ao Guia de Implementao do Red Hat Enterprise Linux . O Guia de Implementao do Red Hat Enterprise Linux contm informaes sobre como padronizar seu sistema do Red Hat Enterprise Linux para melhor se adequar s suas necessidades. Se voc estiver procura de um guia compreensivo e prtico para configurar e padronizar seu sistema, este manual se adequa perfeitamente voc. Este guia presume que voc possui um entendimento bsico de seu sistema Red Hat Enterprise Linux. Se voc precisar de ajuda para instalar o Red Hat Enterprise Linux, consulte o Guia de Instalao do Red Hat Enterprise Linux .

1. Convenes de Documentos
Neste manual, certas palavras so representadas em fontes diferentes, tipo de letras, tamanhos e pesos. Este realce sistemtico pois palavras diferentes so representadas no mesmo estilo para indicar sua incluso em uma categoria especfica. Os tipos de palavras que so representados desta forma incluem o seguinte: com m and Os comandos Linux (e outros comandos de sistema de operao, quando usados) so representados desta forma. Este estilo deve lhe indicar que voc pode digitar a palavra ou frase na linha de comando e pressionar Enter para invocar um comando. As vezes, um comando contm palavras isoladas que poderiam aparecer com um estilo diferente (como nomes de arquivos). Nestes casos, eles so considerados como parte do comando, portanto a frase inteira apresentada como um comando. Por exemplo: Use o comando cat testfile para visualizar o contedo de um arquivo, chamado testfile , no diretrio de trabalho atual. file nam e Nomes de arquivos, nomes de diretrios, caminhos e nomes de pacotes RPM so representados desta forma. Este estilo indica que um arquivo em particular ou diretrio existem com aquele nome no seu sistema. Exemplos: O arquivo .bashrc em seu diretrio home contm definies de janelas bash e aliases para seu prprio uso. O arquivo /etc/fstab contm informaes sobre diferentes dispositivos de sistemas e sistemas de arquivo. Instale o RPM webalizer se voc deseja usar um programa de anlise de arquivo de registro de um servidor da Web. application Este estilo indica que o programa um aplicativo de usurio final (oposto ao software de sistemas). Por exemplo: Use Mozilla para navegar na Web. key

Introduo

Uma tecla do teclado apresentada neste estilo. Por exemplo: Para usar a concluso T ab , para listar arquivos especficos em um diretrio, digite ls seguido de umcaractere e finalmente pressione a tecla T ab . Seu terminal mostrar a lista de arquivos no diretrio que comear com esta letra. key+ com bination A combinao de teclas representada da seguinte forma: A combinao das teclas Ctrl + Alt+ Backspace sai da sesso grfica e retorna para sua tela de registro grfico ou para o console. text found on a GUI interface Um ttulo, palavra ou frase, encontrada em uma tela ou janela de interface GUI so exibidos neste estilo. O texto exibido neste estilo indica uma tela ou um elemento GUI em especfico em uma tela GUI (tal como o texto associado caixa de seleo ou campo). Exemplo: Selecione o tem Requer Senha se voc quiser que seu descanso de tela requeira uma senha antes de parar. top level of a menu on a GUI screen or window Uma palavra neste estilo indica que a palavra o nvel mais alto de um menu suspenso. Se voc clicar em uma palavra na tela GUI, dever aparecer o restante do menu. Dentro de um Arquivo em um terminal GNOME, a opo Nova Aba permite que voc abra mltiplas janelas de comando, na mesma janela. As instrues para inserir uma sequncia de comandos a partir do menu GUI, se parecem com o exemplo a seguir: Go to Applications (the main menu on the panel) > Programming > Emacs T ext Editor to start the Emacs text editor. button on a GUI screen or window Este estilo indica que um texto pode ser encontrado em um boto clicvel em uma tela GUI. Por exemplo: Clique no boto Retornar para retornar ltima pgina da web vista. com puter output O texto neste estilo indica o texto exibido para uma janela de comando, tais como mensagens de erro e respostas comandos. Por exemplo: O comando ls exibe o contedo de um diretrio. Por exemplo:
Desktop about.html Mail backupfiles logs mail paulwesterberg.png reports

A sada retornou em resposta ao comando (neste caso, o contedo do diretrio) apresentado neste estilo.

Red Hat Enterprise Linux 5 D eployment Guide

prom pt A prompt, which is a computer's way of signifying that it is ready for you to input something, is shown in this style. Examples: $ # [stephen@ m aturin stephen]$ leopard login: user input O texto que o usurio digita, tanto na linha de comando quanto na caixa de texto em uma tela GUI, exibida neste estilo. No seguinte exemplo, text exibido neste estilo: Para inicializar seu sistema no texto baseado no programa de instalao, voc deve digitar no comando text no prompt boot: <replaceable> T ext used in examples that is meant to be replaced with data provided by the user is displayed in this style. In the following example, <version-number> is displayed in this style: T he directory for the kernel source is /usr/src/kernels/<version-number>/, where <version-number> is the version and type of kernel installed on this system.

Alm disso, utilizamos de diferentes estratgias para chamar sua ateno sobre algumas informaes especficas. Em ordem de urgncia, estes tens so marcados como uma nota, dica, importante, ateno ou aviso. Por exemplo:

Nota
Lembre-se que o Linux diferencia entre maisculas e minsculas. Em outras palavras, uma rosa no uma ROSA e nem uma rOsA.

Tip
O diretrio /usr/share/doc/ contm documentao adicional para pacotes instalados em seu sistema.

Importante
Se voc modificar o arquivo de configurao DHCP, as mudanas no surtem efeito at que voc reinicie o daemon DHCP.

10

Introduo

Ateno
No realize as tarefas de rotina com uma conta de usurio root , use uma conta de usurio regular, a no ser que voc precise usar a conta root para realizar tarefas de administrao de sistemas.

Aviso
T enha cuidado para remover somente parties necessrias. A remoo de outras parties poderia resultar em perda de dados ou um ambiente de sistemas corrompido.

2. Envie-nos sua Opinio


Se voc encontrar um erro de digitao no Guia de Implementao do Red Hat Enterprise Linux ou se pensou em algo que possa melhorar este manual, ns adoraramos saber! Por favor submeta um relatrio no Bugzilla (http://bugzilla.redhat.com /bugzilla/) sobre o componente Deploym ent_Guide . Se voc tiver alguma sugesto para melhorar a documentao, tente ser o mais especfico possvel. Se encontrou um erro, por favor inclua o nmero da seo e alguns trechos do texto prximo ao erro para que possamos encontr-lo facilmente.

Red Hat Enterprise Linux 5 D eployment Guide

11

Parte I. Autenticao e Segurana


A Red Hat Enterprise Linux oferece uma variedade de ferramentas e mtodos para servir como parte de uma estratgia de segurana compreensiva, no importando se os administradores de sistema precisam assegurar seus sistemas de misso crtica, servios ou dados. Este captulo oferece uma apresentao geral da segurana e especificamente a partir do ponto de vista do Red Hat Enterprise Linux. Ele oferece informao conceitual nas reas de avaliao de segurana, exploits comuns e resposta intruso e incidentes. T ambm oferece informao sobre configurao especfica e conceitual para incrementar a segurana de implementaes Workstation, Server, VPN, firewall, dentre outras, utilizando o SELinux. Este captulo presume que os usurios j possuam um conhecimento bsico de segurana de T I e conseqentemente oferece somente cobertura mnima de prticas de segurana comum, tais como, controle de acesso fsico, polticas e procedimentos profundos de contabilidade, auditoria, etc. Quando apropriado, a consulta realizada nos recursos externos para esta e qualquer outra informao relacionada.

12

Captulo 1. Viso Geral de Segurana

Captulo 1. Viso Geral de Segurana


Indstrias de segurana de computadores pessoais e de rede formaram-se devido ao aumento na dependncia de computadores potentes, em rede, para auxiliar na administrao de negcios e manter controle sobre informaes pessoais. Empresas angariaram o conhecimento e a percia de especialistas em segurana para conduzir a auditoria de sistemas de forma adequada e fornecer solues sob medida para as exigncias operacionais da organizao. Devido natureza dinmica da maioria das organizaes, com funcionrios acessando recursos de T I, tanto dentro da empresa quanto remotamente, houve uma maior demanda de ambientes seguros de computao. Infelizmente, a maioria das organizaes (assim como indivduos) consideram aspectos de segurana tarde demais, ignorando este processo em favor de mquinas mais velozes, e por questes de produtividade e oramentrias. Protocolos de segurana adequados so normalmente efetivados postmortem aps a ocorrncia de uma intruso no autorizada. Especialistas em segurana concordam que a tomada de medidas corretas antes de conectar um site uma rede no confivel, como a internet, uma forma eficiente de frustrar a maioria das tentativas de intruso.

1.1. Avaliao de Vulnerabilidade


Dados o tempo, os recursos e a motivao necessrios, um cracker pode violar praticamente qualquer sistema. No final das contas, todos os procedimentos e tecnologias de segurana atualmente disponveis no podem garantir que quaisquer sistemas estejam protegidos contra intrusos. Roteadores ajudam a proteger suas portas de comunicao (gateways) com a Internet. Firewalls ajudam a proteger os limites da rede. Redes Privadas Virtuais podem transferir dados com segurana atravs de informaes criptografadas. Sistemas de deteco de intruso podem alert-lo sobre atividades malficas. No entanto, o sucesso de cada uma destas tecnologias depende de diversas variveis, incluindo: A percia dos funcionrios responsveis pela configurao, monitorao e manuteno das tecnologias A habilidade em consertar e atualizar servios e kernels eficiente e rapidamente A habilidade dos responsveis em manter viglia constante sobre a rede Dado o dinamismo de sistemas e tecnologias de dados, proteger recursos corporativos pode ser bastante complexo. Devido essa complexidade, geralmente difcil encontrar peritos para todos os seus sistemas. Enquanto possvel ter pessoal com conhecimento em muitas reas de segurana da informao em um alto nvel, difcil reter funcionrios que so peritos em mais do que algumas reas. Isto ocorre principalmente porque cada rea de segurana da informao requer constante ateno e foco. A segurana da informao no para. 1.1.1. Pensando Como o Inimigo Suppose that you administer an enterprise network. Such networks are commonly comprised of operating systems, applications, servers, network monitors, firewalls, intrusion detection systems, and more. Now imagine trying to keep current with each of these. Given the complexity of today's software and networking environments, exploits and bugs are a certainty. Keeping current with patches and updates for an entire network can prove to be a daunting task in a large organization with heterogeneous systems. Com a combinao da necessidade de contar com peritos e a tarefa de manter-se sempre atualizado, torna-se inevitvel que incidentes adversos ocorram, sistemas sejam violados, dados corrompidos e servios interrompidos. Para aprimorar as tecnologias de segurana e auxiliar na proteo de sistemas, redes e dados, voc deve pensar como um cracker e medir a segurana de seus sistemas verificando suas fraquezas. Avaliaes preventivas de vulnerabilidades em seus prprios sistemas e recursos de rede podem

Red Hat Enterprise Linux 5 D eployment Guide

13

revelar questes potenciais a serem consideradas antes de um cracker explor-las. Se tivesse que executar uma avaliao de vulnerabilidade da sua casa, voc provavelmente verificaria cada uma das portas para certificar-se de que elas esto fechadas e trancadas. Voc tambm checaria cada janela, assegurando que esto completamente fechadas e corretamente travadas. O mesmo conceito se aplica aos sistemas, redes e dados eletrnicos. Usurios maldosos so os ladres e vndalos de seus dados. Foque em suas ferramentas, mentalidade e motivaes, e voc poder reagir rapidamente s suas aes. 1.1.2. Definindo Avaliao e T estes As avaliaes de vulnerabilidade podem ser divididas em dois tipos: De fora olhando para dentro e de dentro olhando ao redor. When performing an outside looking in vulnerability assessment, you are attempting to compromise your systems from the outside. Being external to your company provides you with the cracker's viewpoint. You see what a cracker sees publicly-routable IP addresses, systems on your DMZ , external interfaces of your firewall, and more. DMZ stands for "demilitarized zone", which corresponds to a computer or small subnetwork that sits between a trusted internal network, such as a corporate private LAN, and an untrusted external network, such as the public Internet. T ypically, the DMZ contains devices accessible to Internet traffic, such as Web (HT T P ) servers, FT P servers, SMT P (e-mail) servers and DNS servers. Ao executar uma avaliao de vulnerabilidade de dentro olhando ao redor, voc est, de certa maneira, em vantagem j que voc interno e seu status elevado a confivel. Esse o ponto de vista que voc e seus colegas de trabalho tm ao se autenticarem em seus sistemas. Voc v servidores de impresso, servidores de arquivos, bancos de dados e outros recursos. H diferenas notveis entre estes dois tipos de avaliao de vulnerabilidade. Quando voc est dentro de sua empresa, voc possui privilgios mais elevados que qualquer entidade externa. Ainda hoje em algumas empresas, a segurana configurada de modo a manter os intrusos fora. Muito pouco feito para proteger os internos da empresa (tais como firewalls departamentais, controles de acesso no nvel de usurio, procedimentos de autenticao para recursos internos e outros). Geralmente, h muito mais recursos quando estamos dentro olhando ao redor dado que a maioria dos sistemas so internos uma empresa. Uma vez que voc se coloca fora da empresa, imediatamente ter o status no confivel. Os sistemas e recursos disponveis a voc externamente so freqentemente muito limitados. Considere a diferena entre as avaliaes de vulnerabilidade e testes de penetrao. Pense em uma avaliao de vulnerabilidade como o primeiro passo de um teste de penetrao. As informaes obtidas na avaliao sero utilizadas nos testes. Enquanto a avaliao verifica deficincias e vulnerabilidades potenciais, os testes de penetrao tentam explorar os resultados. O processo de avaliao da infra-estrutura de rede dinmico. A segurana de ambos, da informao e fsica, dinmica. Executar uma avaliao traz uma viso geral, que pode incluir falsos positivos e falsos negativos. Administradores de segurana so to bons quanto as ferramentas que usam e o conhecimento que possuem. Pegue qualquer uma das ferramentas de avaliao disponveis, execute-as em seu sistema, e quase certo que haja pelo menos alguns falsos positivos. O resultado o mesmo, seja por erro do programa ou do usurio. A ferramenta pode encontrar vulnerabilidades que na realidade no existem (falsos positivos) ou, pior ainda, ela pode no detectar vulnerabilidades que realmente existem (falsos negativos). Agora que a diferena entre avaliao de vulnerabilidade e teste de penetrao est definida, recomendvel revisar os resultados da avaliao cuidadosamente antes de conduzir um teste de penetrao como parte de sua nova ttica para as melhores prticas.

14

Captulo 1. Viso Geral de Segurana

Ateno
T entar explorar vulnerabilidades em recursos de produo pode resultar em efeitos adversos na produtividade e eficincia de seus sistemas e rede. A lista a seguir examina alguns dos benefcios em executar avaliaes de vulnerabilidade. Cria foco pr-ativo na segurana da informao Encontra exploits potenciais antes que os crackers os encontrem Resulta em sistemas sendo mantidos atualizados e consertados Promove o crescimento e ajuda a desenvolver as habilidades dos funcionrios Reduz perdas financeiras e publicidade negativa 1.1.2.1. Estabelea uma Metodologia Para auxiliar na seleo de ferramentas para a avaliao de vulnerabilidade, til estabelecer uma metodologia de avaliao de vulnerabilidade. Infelizmente, no h nenhuma metodologia pr-definida ou aprovada pelo setor no momento, porm bom senso e as melhores prticas podem agir suficientemente como guias. Qual o alvo? Ns estamos verificando um servidor, ou verificando nossa rede inteira e tudo que h nesta rede? Somos internos ou externos empresa? As respostas estas questes so importantes, pois ajudam a determinar no apenas quais ferramentas selecionar, mas tambm a maneira como so utilizadas. Para aprender mais sobre o estabelecimento de metodologias, consulte os seguintes sites: http://www.isecom.org/projects/osstmm.htm The Open Source Security Testing Methodology Manual (O Manual de Metodologia de T estes de Segurana Open Source) http://www.owasp.org/ The Open Web Application Security Project (O Projeto Livre de Segurana de Aplicaes Web) 1.1.3. Avaliando as Ferramentas Uma avaliao pode comear com o uso de alguma forma de ferramenta de coleta de informaes. Ao avaliar a rede inteira, primeiramente mapeie o layout para encontrar mquinas que estejam rodando. Aps localiz-las, examine cada mquina separadamente. O exame de cada uma destas mquinas requer um outro conjunto de ferramentas. Saber quais ferramentas utilizar pode ser o passo crucial para encontrar vulnerabilidades. Assim como em qualquer aspecto do cotidiano, h muitas ferramentas diferentes que desempenham a mesma funo. Este conceito tambm se aplica execuo das avaliaes de vulnerabilidade. H ferramentas especficas para sistemas operacionais, para aplicaes e at mesmo para redes (baseadas nos protocolos utilizados). Algumas ferramentas so gratuitas e outras no. Algumas ferramentas so intuitivas e fceis de utilizar, enquanto outras so enigmticas e mal documentadas, mas possuem funcionalidades que outras no possuem. Encontrar as ferramentas corretas pode ser uma tarefa desalentadora, e no final das contas, a experincia conta. Se possvel, monte um laboratrio de testes e experimente quantas ferramentas puder, anotando os pontos fortes e fracos de cada uma. Examine o arquivo README ou a pgina man da ferramenta. Alm disso, procure na Internet por mais informaes, como artigos, manuais passo-apasso ou at mesmo listas de discusso especficas da ferramenta. As ferramentas explanadas abaixo so apenas uma pequena amostra das ferramentas disponveis.

Red Hat Enterprise Linux 5 D eployment Guide

15

1.1.3.1. Escaneando hosts com Nmap Nmap uma ferramenta popular includa no Red Hat Enterprise Linux que pode ser usada para determinar o layout de uma rede. O Nmap j existe h muitos anos e provavelmente a ferramenta mais utilizada na coleta de informaes. H uma pgina man excelente que oferece uma descrio detalhada de suas opes e usos. Administradores podem usar o Nmap em uma rede para encontrar sistemas host e portas abertas nestes sistemas. O Nmap um primeiro passo eficaz na avaliao de vulnerabilidade. Voc pode mapear todas as mquinas dentro de sua rede, e inclusive passar uma opo que permite ao Nmap tentar identificar o sistema operacional rodando numa determinada mquina. O Nmap uma boa base para estabelecer normas de uso de servios seguros e para parar servios no usados. 1.1.3.1.1. Usando o Nmap O Nmap pode ser executado a partir de um prompt do shell, digitando nm ap seguido do nome ou endereo IP da mquina que voc deseja escanear.
nmap foo.example.com

Os resultados do scan (que podem levar at alguns minutos, dependendo de onde o host est localizado) devem se parecer com o seguinte:
Starting nmap V. 3.50 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1591 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 25/tcp open smtp 111/tcp open sunrpc 443/tcp open https 515/tcp open printer 950/tcp open oftep-rpc 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds

O Nmap testa as portas de comunicao mais comuns numa rede por servios de escuta ou de espera. Esse conhecimento pode ser til a um administrador que deseja encerrar servios desnecessrios ou no usados. Para mais informaes sobre o uso do Nmap, consulte o site oficial no seguinte endereo: http://www.insecure.org/ 1.1.3.2. Nessus O Nessus um scanner de segurana 'full-service'. Sua arquitetura plug-in permite que usurios o personalizem para seus sistemas e redes. Assim como qualquer scanner, o Nessus to bom quanto o banco de dados de assinaturas com o qual ele conta. Felizmente, o Nessus freqentemente atualizado e conta com relatrio completo, escaneamento do host e buscas de vulnerabilidades em tempo real. Lembre-se que podem haver falsos positivos e falsos negativos, mesmo numa ferramenta to poderosa e freqentemente atualizada como o Nessus.

16

Captulo 1. Viso Geral de Segurana

Nota
O Nessus no est includo no Red Hat Enterprise Linux e no suportado. Foi includo neste documento como uma referncia para usurios que possam se interessar por esta aplicao to conhecida. Para mais informaes sobre o Nessus, consulte o site oficial no endereo: http://www.nessus.org/ 1.1.3.3. Nikto O Nikto um excelente scanner de scripts CGI. O Nikto no tem apenas a capacidade de verificar vulnerabilidades CGI, mas tambm de faz-lo de maneira evasiva, para enganar sistemas de deteco de intruso. Acompanha uma documentao excelente que deve ser revisada cuidadosamente antes de executar o programa. Se voc tem servidores Web servindo scripts CGI, o Nikto pode ser um excelente recurso para checar a segurana destes servidores.

Nota
O Nikto no est includo no Red Hat Enterprise Linux e no suportado. Foi includo neste documento como uma referncia para usurios que possam se interessar por esta aplicao to conhecida. Mais informaes sobre o Nikto podem ser encontradas no seguinte endereo: http://www.cirt.net/code/nikto.shtml 1.1.3.4 . VLAD the Scanner O VLAD um scanner de vulnerabilidades desenvolvido pela equipe RAZ OR na Bindview, Inc., que verifica a lista das dez questes mais comuns de segurana da SANS (questes do SNMP, compartilhamento de arquivos, etc.). Vale a pena investigar o VLAD, apesar de no ter tantas funcionalidades quanto o Nessus.

Nota
O VLAD no est includo no Red Hat Enterprise Linux e no suportado. Foi includo neste documento como uma referncia para usurios que possam se interessar por esta aplicao to conhecida. Mais informaes sobre o VLAD podem ser encontradas no site da equipe RAZ OR no seguinte endereo: http://www.bindview.com/Support/Razor/Utilities/ 1.1.3.5. Antecipando suas Necessidades Futuras Depending upon your target and resources, there are many tools available. T here are tools for wireless networks, Novell networks, Windows systems, Linux systems, and more. Another essential part of performing assessments may include reviewing physical security, personnel screening, or voice/PBX network assessment. New concepts, such as war walking scanning the perimeter of your enterprise's physical structures for wireless network vulnerabilities are some emerging concepts that you can

Red Hat Enterprise Linux 5 D eployment Guide

17

investigate and, if needed, incorporate into your assessments. Imagination and exposure are the only limits of planning and conducting vulnerability assessments.

1.2. Atacantes e Vulnerabilidades


Para planejar e implementar uma boa estratgia de segurana, comece entendendo algumas das questes que atacantes determinados e motivados exploram para comprometer sistemas. Mas antes de detalhar estas questes, precisamos definir a terminologia utilizada ao identificar um atacante. 1.2.1. Uma Breve Histria sobre Hackers O significado moderno da palavra hacker tem origem nos anos 60 no T ech Model Railroad Club do Instituto de T ecnologia de Massachusetts (MIT ), que desenvolveu modelos de trens de alta fidelidade e com detalhes complexos. Hacker era o nome usado para os membros do clube que vinham a descobrir um novo truque ou uma nova forma de resolver um problema. Desde ento o termo hacker descreve de tudo, desde entusiastas a programadores talentosos. Um aspecto comum dentre a maioria dos hackers a vontade de explorar detalhadamente as funes dos sistemas e redes de computador com pouco ou nenhum estmulo exterior. Desenvolvedores de software de cdigo aberto geralmente consideram-se hackers e utilizam esta palavra como um termo respeitvel. T ipicamente, os hackers seguem uma espcie de tica hacker, que dita que a misso por conhecimento e informao essencial, e compartilhar este conhecimento o dever dos hackers para com a comunidade. Durante esta misso em busca do conhecimento, alguns hackers entretem-se com desafios acadmicos, como driblar controles de segurana em sistemas de computadores. Por esta razo, a imprensa freqentemente usa o termo hacker para descrever aqueles que acessam sistemas e redes ilicitamente com intenes inescrupulosas, maldosas ou criminosas. O termo mais correto para este tipo de hacker cracker um termo criado por hackers em meados dos anos 80 para diferenciar as duas comunidades. 1.2.1.1. T onalidades de Cinza Within the community of individuals who find and exploit vulnerabilities in systems and networks are several distinct groups. T hese groups are often described by the shade of hat that they "wear" when performing their security investigations and this shade is indicative of their intent. O hacker de chapu branco aquele que testa redes e sistemas para examinar a performance e a vulnerabilidade potenciais intruses. Geralmente, hackers de chapu branco violam seus prprios sistemas ou sistemas de um cliente que os empregou especificamente para executar uma auditoria de segurana. Pesquisadores acadmicos e profissionais da rea de consultoria de segurana so dois exemplos de hackers de chapu branco. Um hacker de chapu preto sinnimo de um cracker. Em geral, crackers so menos focados em programao e no aspecto acadmico de violar sistemas. Eles geralmente contam com programas de quebra de segurana e exploram vulnerabilidades conhecidas em sistemas para descobrir informaes importantes para ganho pessoal ou para danificar o sistema ou rede alvos. O hacker de chapu cinza, por outro lado, tem as habilidades e intenes de um hacker de chapu branco na maioria dos casos, mas por vezes utiliza seu conhecimento para propsitos menos nobres. Um hacker de chapu cinza pode ser descrito como um hacker de chapu branco que s vezes veste um chapu preto para atingir seus prprios objetivos. Hackers de chapu cinza tipicamente se enquadram em outro tipo de tica, que diz ser aceitvel violar sistemas desde que o hacker no cometa roubo ou viole a privacidade. Alguns argumentam, no entanto, que o ato de invadir um sistema por si s j anti-tico. Independentemente da inteno do intruso, importante saber quais as fraquezas que um cracker

18

Captulo 1. Viso Geral de Segurana

geralmente tentar explorar. O resto do captulo concentra-se nestas questes. 1.2.2. Ameaas Segurana da Rede Desateno ao configurar os seguintes aspectos de uma rede podem aumentar os riscos de um ataque. 1.2.2.1. Arquiteturas Inseguras Uma rede mal configurada um ponto de entrada bsico para usurios no autorizados. Deixar uma rede local baseada na confiana aberta e vulnervel uma rede altamente insegura como a Internet, o mesmo que deixar uma porta entreaberta em uma vizinhana perigosa talvez nada acontea por um perodo, mas eventualmente algum explorar a oportunidade. 1.2.2.1.1. Redes de T ransmisso Administradores de sistemas freqentemente no percebem a importncia do hardware de rede em seus esquemas de segurana. Simples componentes de hardware como concentradores e roteadores baseiam-se no princpio da difuso ou no-comutao, ou seja, sempre que um n transmitir dados atravs da rede para um n receptor, o concentrador ou roteador difunde os pacotes de dados at que o n receptor os receba e processe. Este mtodo o mais vulnervel falsificao (spoofing) de endereos ARP (Address Resolution Protocol - Protocolo de Resoluo de Endereo) e MAC (Media Access Control - Controle de Acesso a Mdia), tanto por parte de intrusos externos quanto por parte de usurios no autorizados em hosts locais. 1.2.2.1.2. Servidores Centralizados Outra potencial armadilha na rede o uso da computao centralizada. Uma forma comum de corte de gastos em muitas empresas consolidar todos os servios em apenas uma mquina potente. Isto pode ser conveniente, pois mais fcil e bem mais barato gerenciar uma nica mquina do que configuraes em servidores mltiplos. Entretanto, um servidor centralizado tambm significa um ponto nico de falha na rede. Se o servidor central for comprometido, pode danificar a rede ou inutiliz-la, ou pior ainda, torn-la vulnervel manipulao ou roubo de dados. Nestas situaes, um servidor central torna-se uma porta aberta permitindo acesso toda a rede. 1.2.3. Ameaas Segurana do Servidor Server security is as important as network security because servers often hold a great deal of an organization's vital information. If a server is compromised, all of its contents may become available for the cracker to steal or manipulate at will. T he following sections detail some of the main issues. 1.2.3.1. Servios No Utilizados e Portas Abertas Uma instalao completa do Red Hat Enterprise Linux contm mais de mil pacotes de aplicaes e bibliotecas. No entanto, a maioria dos administradores de servidor optam por no instalar todos os pacotes da distribuio; preferindo ao invs disso instalar os pacotes bsicos, incluindo diversas aplicaes para servidor. 1.2.3.2. Servios Desatualizados A maioria das aplicaes de servidor inclusas em uma instalao padro so slidas unidades de software testadas exaustivamente. T endo sido utilizadas em ambientes de produo por muitos anos, seus cdigos vem tendo sido constantemente refinados e muitos dos erros (bugs) foram encontrados e consertados. Entretanto, no existe software perfeito e sempre h espao para mais aprimoramento. Alm disso, programas mais novos freqentemente no so rigorosamente testados como se espera, porque chegaram recentemente a ambientes de produo ou porque talvez no sejam to populares quanto

Red Hat Enterprise Linux 5 D eployment Guide

19

outros programas de servidor. Desenvolvedores e administradores de sistemas freqentemente encontram erros explorveis em aplicaes de servidor e publicam a informao em sites de rastreamento de erros e relacionados segurana, como a lista de discusso 'Bugtraq' (http://www.securityfocus.com) ou o site do CERT , 'Computer Emergency Response T eam' (http://www.cert.org). Apesar destes mecanismos serem maneiras efetivas de alertar a comunidade sobre vulnerabilidades de segurana, responsabilidade dos administradores atualizarem seus sistemas prontamente. Isto porque os crackers tm acesso aos mesmos servios de rastreamento de vulnerabilidades e utilizaro estas informaes para violar sistemas desatualizados sempre que puderem. Uma boa administrao de sistemas requer vigilncia, constante rastreamento de erros, e manuteno apropriada para assegurar um ambiente computacional mais seguro. Refer to Seo 1.4, Atualizaes de Segurana for more information about keeping a system up-todate. 1.2.3.3. Administrao Desatenta Administrators who fail to patch their systems are one of the greatest threats to server security. According to the System Administration Network and Security Institute (SANS), the primary cause of computer security vulnerability is to "assign untrained people to maintain security and provide neither the training nor the time to make it possible to do the job." [1] T his applies as much to inexperienced administrators as it does to overconfident or amotivated administrators. Alguns administradores no atualizam seus servidores e estaes de trabalho, enquanto outros no monitoram as mensagens de registro do kernel do sistema ou trfego de rede. Outro erro comum deixar senhas ou chaves padro de servios inalteradas. Por exemplo, alguns bancos de dados tm senhas de administrao padro porque seus desenvolvedores assumem que o administrador de sistemas ir alter-las imediatamente aps a instalao. Se um administrador de banco de dados deixar de alterar esta senha, at mesmo um cracker inexperiente pode utilizar uma senha padro conhecida para obter privilgios administrativos ao banco de dados. Estes so apenas alguns dos exemplos de como uma administrao desatenta pode levar ao comprometimento de servidores. 1.2.3.4 . Servios Essencialmente Inseguros At a empresa mais atenta pode ser vtima de vulnerabilidades se os servios de rede que elas optarem por usar forem essencialmente inseguros. Por exemplo, h muitos servios desenvolvidos sob a suposio de que sero utilizados atravs de redes confiveis, mas essa suposio deixa de ser verdadeira a partir do momento em que o servio for disponibilizado atravs da Internet que por si s essencialmente no confivel. Uma categoria de servios de rede inseguros e composta por aqueles servios que requerem nomes de usurio e senha no criptografados para autenticao. T elnet e FT P so dois exemplos deste tipo de servio. Se um software de farejamento de pacotes est monitorando o trfego entre o usurio remoto e um destes tipos de servio, dados como nomes de usurio e senhas podem ser interceptados facilmente. Inherently, such services can also more easily fall prey to what the security industry terms the man-inthe-middle attack. In this type of attack, a cracker redirects network traffic by tricking a cracked name server on the network to point to his machine instead of the intended server. Once someone opens a remote session to the server, the attacker's machine acts as an invisible conduit, sitting quietly between the remote service and the unsuspecting user capturing information. In this way a cracker can gather administrative passwords and raw data without the server or the user realizing it. Another category of insecure services include network file systems and information services such as NFS or NIS, which are developed explicitly for LAN usage but are, unfortunately, extended to include WANs (for remote users). NFS does not, by default, have any authentication or security mechanisms configured to prevent a cracker from mounting the NFS share and accessing anything contained therein.

20

Captulo 1. Viso Geral de Segurana

NIS, as well, has vital information that must be known by every computer on a network, including passwords and file permissions, within a plain text ASCII or DBM (ASCII-derived) database. A cracker who gains access to this database can then access every user account on a network, including the administrator's account. 1.2.4 . Ameaas Segurana de Estaes de T rabalho e PCs Workstations and home PCs may not be as prone to attack as networks or servers, but since they often contain sensitive data, such as credit card information, they are targeted by system crackers. Workstations can also be co-opted without the user's knowledge and used by attackers as "slave" machines in coordinated attacks. For these reasons, knowing the vulnerabilities of a workstation can save users the headache of reinstalling the operating system, or worse, recovering from data theft. 1.2.4 .1. Senhas Inadequadas 1.2.4 .2. Aplicaes Cliente Vulnerveis Although an administrator may have a fully secure and patched server, that does not mean remote users are secure when accessing it. For instance, if the server offers T elnet or FT P services over a public network, an attacker can capture the plain text usernames and passwords as they pass over the network, and then use the account information to access the remote user's workstation. Mesmo ao utilizar protocolos seguros, como o SSH, um usurio remoto pode estar vulnervel a determinados ataques se ele no mantiver suas aplicaes cliente atualizadas. Por exemplo, clientes SSH v.1 (verso 1) so vulnerveis a um ataque X-forwarding de servidores SSH malficos. Uma vez conectado ao servidor, o atacante pode capturar, sem ser percebido, quaisquer teclas pressionadas e cliques de mouse efetuados pelo cliente atravs da rede. Este problema foi consertado na verso SSH v.2, mas ainda assim depende do usurio monitorar aplicaes com tais vulnerabilidades e atualiz-las quando necessrio.

1.3. Exploits e Ataques Freqentes


T abela 1.1, Exploits Freqentes details some of the most common exploits and entry points used by intruders to access organizational network resources. Key to these common exploits are the explanations of how they are performed and how administrators can properly safeguard their network against such attacks.

Red Hat Enterprise Linux 5 D eployment Guide

21

T abela 1.1. Exploits Freqentes Exploit Senhas em Branco ou Padro Descrio Deixar senhas administrativas em branco ou usar a senha padro provida pelo fabricante. Isto mais comum em hardware, como roteadores e firewalls, porm alguns dos servios que rodam no Linux podem conter senhas padro de administrador (apesar do Red Hat Enterprise Linux 5 no inclu-las). Notas Freqentemente associadas com hardware de rede como roteadores, firewalls, VPNs, e equipamentos Network Attached Storage (NAS). Freqente em vrias verses antigas de sistemas operacionais, especialmente aquelas que agrupam servios (como UNIX e Windows). Administradores s vezes criam contas de usurio privilegiadas s pressas e deixam a senha com valor nulo, o que apresenta um perfeito ponto de entrada para usurios maliciosos que venham a descobrir tal conta. Chaves Compartilhadas Padro Servios seguros s vezes incluem chaves de segurana padro com a finalidade de facilitar o exerccio de desenvolvimento ou testes de avaliao. Se estas chaves permanecerem inalteradas e estiverem localizadas em um ambiente de produo na Internet, quaisquer usurios com as mesmas chaves padro tem acesso quele recurso de chave compartilhada assim como a quaisquer informaes importantes l contidas. Uma mquina remota age como um n na sua rede local, encontra vulnerabilidades em seus servidores, e instala um programa do tipo backdoor ou cavalo de tria para obter o controle dos seus recursos de rede. Mais comum em pontos de acesso de redes sem fio e equipamentos de servidor seguros preconfigurados.

Falsificao (Spoofing) do IP

Falsificao do IP um tanto quanto difcil, uma vez que requer que o atacante preveja os nmeros T CP/IP SYN-ACK para coordenar conexes ao sistema alvo, entretanto algumas ferramentas esto disponveis para assistir crackers em explorar tal vulnerabilidade. Requer que sistemas alvo rodem servios (tais como rsh , telnet, FT P e outros) que usem tcnicas de autenticao baseadas na fonte, o que no recomendado quando comparado ao PKI ou outras formas de autenticao criptografada usadas no ssh ou SSL/T LS.

Eavesdropping

Coleta no autorizada de dados que trafegam entre dois ns ativos em uma rede atravs da prtica do eavesdropping na conexo entre estes dois ns.

Esta forma de ataque funciona predominantemente com protocolos base de transmisso de texto sem formatao, como T elnet, FT P e HT T P.

22

Captulo 1. Viso Geral de Segurana

O atacante remoto deve obter acesso a um sistema comprometido em uma LAN de modo a perpetrar tal ataque; normalmente o cracker usou um ataque ativo (como a falsificao do IP ou o man-in-the-middle) para comprometer um sistema na LAN. Medidas preventivas incluem servios com troca de chave criptogrfica, senhas de uso nico, ou autenticao criptografada para prevenir que senhas fiquem vulnerveis pratica do snooping. O uso de criptografia de alto nvel durante a transmisso tambm recomendado. Vulnerabilidades em Servios Um atacante encontra uma falha ou uma deficincia em um servio executado atravs da Internet; atravs desta vulnerabilidade, o atacante compromete o sistema inteiro e quaisquer dados que este possa conter; e pode possivelmente comprometer outros sistemas na rede. HT T P-based services such as CGI are vulnerable to remote command execution and even interactive shell access. Even if the HT T P service runs as a non-privileged user such as "nobody", information such as configuration files and network maps can be read, or the attacker can start a denial of service attack which drains system resources or renders it unavailable to other users. Servios s vezes podem ter vulnerabilidades que passam despercebidas durante as fases de desenvolvimento e teste; estas vulnerabilidades (tais como estouro de buffer, onde atacantes induzem a pane de um servio atravs do uso de valores arbitrrios que enchem o buffer de memria de uma aplicao, dando ao atacante uma linha de comando interativa de onde ele pode executar comandos arbitrrios) podem dar completo controle administrativo a um atacante. Administradores devem ter certeza de que servios no sejam executados como usurio root, e devem ficar alertas atualizaes e erratas de provedores ou organizaes de segurana tais como CERT e CVE. Vulnerabilidades em Aplicaes Atacantes encontram falhas em aplicaes de computadores pessoais e estaes de trabalho (como clientes de e-mail) e executam cdigo arbitrrio, implantam cavalos de tria para comprometimento futuro, ou causam a Estaes de trabalho e computadores pessoais so mais propensos explorao porque os funcionrios no tm a mesma percia ou experincia para prevenir ou detectar um comprometimento; essencial informar

Red Hat Enterprise Linux 5 D eployment Guide

23

pane de sistemas. Exploraes adicionais podem ocorrer se a estao de trabalho comprometida tiver privilgios administrativos sobre o restante da rede.

comprometimento; essencial informar indivduos sobre os riscos que correm ao instalar software no autorizado ou abrir arquivos anexos de e-mails no solicitados. possvel implementar medidas de segurana para garantir que um software cliente de e-mail no abra ou execute anexos automaticamente. Alm disso, a atualizao automtica de software de estaes de trabalho atravs do Red Hat Network ou outros servios de gerenciamento de sistemas podem aliviar as sobrecargas oriundas de implantaes de segurana em ambientes multiusurio.

Ataques de Negao de Servio (DoS)

Attacker or group of attackers coordinate against an organization's network or server resources by sending unauthorized packets to the target host (either server, router, or workstation). T his forces the resource to become unavailable to legitimate users.

O caso de negao de servio mais relatado nos EUA ocorreu no ano de 2000. Diversos sites comerciais e governamentais de alto trfego foram tirados do ar por um ataque coordenado de envio em massa de comandos ping usando vrios sistemas comprometidos com conexes de largura de banda alta agindo como zombies, ou ns de difuso redirecionados. Pacotes oriundos da fonte so normalmente adulterados (assim como redifundidos), dificultando uma investigao em busca da verdadeira fonte do ataque. Avanos em ingress filtering (IET F rfc2267) usando iptables e sistemas de deteco de intruso (IDSes) de rede como o snort assistem administradores em descobrir e prevenir ataques distribudos de negao de servio.

1.4. Atualizaes de Segurana


Conforme as vulnerabilidades de segurana so descobertas, o software afetado deve ser atualizado para limitar quaisquer potenciais riscos de segurana. Se o software parte de um pacote de uma distribuio da Red Hat Enterprise Linux atualmente suportada, a Red Hat, Inc. compromete-se a lanar, assim que possvel, pacotes atualizados que consertem as vulnerabilidades. Freqentemente, comunicados referentes a um exploit de segurana so acompanhados de um conserto (ou cdigofonte que conserte o problema). Este conserto ento aplicado ao pacote Red Hat Enterprise Linux, testado pela equipe de controle de qualidade da Red Hat e lanado como uma atualizao de errata. Entretanto, se um comunicado no inclui um conserto, um desenvolvedor da Red Hat trabalha junto com o mantedor do software para resolver o problema. Aps o problema ser resolvido, o pacote testado e

24

Captulo 1. Viso Geral de Segurana

lanado como uma atualizao de errata. Se for lanada uma atualizao de errata para um software utilizado em seu sistema, altamente recomendvel que voc atualize os pacotes afetados assim que possvel para minimizar o tempo durante o qual o seu sistema fique potencialmente vulnervel. 1.4 .1. Atualizando Pacotes Ao atualizar o software de um sistema, importante fazer o download da atualizao de uma fonte confivel. Um atacante pode facilmente reconstruir um pacote com o mesmo nmero de verso daquele que deveria resolver o problema, mas com um exploit de segurana diferente no pacote, e depois lanlo na Internet. Se isto acontecer, o uso de medidas de segurana como checar os arquivos contra o RPM original no servem para detectar o exploit. Portanto, muito importante que se use apenas fontes confiveis, como a Red Hat, para downloads de RPMs, e que se cheque a assinatura do pacote para verificar sua integridade. A Red Hat oferece duas maneiras de encontrar informaes sobre as atualizaes de errata: 1. Listadas e disponveis para download no Red Hat Network 2. Listadas mas sem link no site de Erratas da Red Hat

Nota
A partir da linha de produtos Red Hat Enterprise Linux, os pacotes atualizados podem ser baixados somente do Red Hat Network. Embora o site de Erratas da Red Hat contenha informaes atualizadas, ele no contm os pacotes para download.

1.4 .1.1. Usando o Red Hat Network O Red Hat Network permite que a maior parte do processo de atualizao seja automatizado. Ele determina quais pacotes RPM so necessrios para o sistema, faz o download destes a partir de um repositrio seguro, verifica-lhes a assinatura para assegurar que os mesmos no foram corrompidos, e os atualiza. A instalao de pacotes pode ser feita imediatamente ou pode ser agendada durante um determinado perodo de tempo. O Red Hat Network requer um Perfil do Sistema para cada mquina a ser atualizada. O Perfil do Sistema contm informao sobre o hardware e o software do sistema. Essa informao mantida confidencialmente, sendo usada somente para determinar quais atualizaes de errata so aplicveis a cada sistema. Sem o perfil, o Red Hat Network no pode determinar se um sistema precisa de atualizaes. Quando uma errata de segurana (ou qualquer tipo de errata) lanada, o RHN envia um email com a descrio da errata assim como uma lista de sistemas afetados por ela. Para aplicar a atualizao, use o Agente de Atualizaes Red Hat ou agende a atualizao do pacote pelo site http://rhn.redhat.com.

Tip
O Red Hat Enterprise Linux inclui a Ferramenta de Notificao de Alertas Red Hat Network, um cone conveniente no painel que exibe alertas quando h uma atualizao para um sistema Red Hat Enterprise Linux registrado. Consulte a seguinte URL para mais informaes sobre este applet:https://rhn.redhat.com/rhn/help/quickstart.jsp

Red Hat Enterprise Linux 5 D eployment Guide

25

Importante
Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to Seo 1.4.1.5, Aplicando as Alteraes for general instructions about applying the changes made by an errata update.

1.4 .1.2. Usando o Site de Erratas da Red Hat Quando relatrios de erratas de segurana so lanados, so publicados no site de Erratas da Red Hat disponvel em http://www.redhat.com/security/. A partir desta pgina, selecione o produto e a verso de seu sistema, e ento selecione segurana no topo da pgina para exibir apenas os Relatrios de Segurana do Red Hat Enterprise Linux. Se a sinopse de um dos relatrios descreve um pacote usado em seu sistema, clique na sinopse para ver mais detalhes. A pgina de detalhes descreve o exploit de segurana e quaisquer instrues especiais a serem executadas para atualizar o pacote e consertar a brecha na segurana. Para fazer o download do(s) pacote(s) atualizado(s), clique no link para se logar no Red Hat Network, clique no(s) nome(s) do(s) pacote(s) e salve-os no disco rgido. altamente recomendvel que voc crie um novo diretrio como /tm p/updates e salve ali todos os pacotes baixados. 1.4 .1.3. Verificando Pacotes Assinados T odos os pacotes do Red Hat Enterprise Linux so assinados com a chave GPG da Red Hat, Inc. GPG significa GNU Privacy Guard, ou GnuPG, um pacote de software livre usado para garantir a autenticidade de arquivos distribudos. Por exemplo, uma chave privada (chave secreta) mantida pela Red Hat chaveia o pacote enquanto a chave pblica abre e verifica. Se a chave pblica distribuda pela Red Hat no confere com a chave privada durante a verificao do RPM, o pacote pode ter sido alterado e, portanto, no confivel. O utilitrio RPM do Red Hat Enterprise Linux tenta automaticamente verificar a assinatura GPG de um pacote RPM antes de instal-lo. Se a chave GPG da Red Hat no estiver instalada, instale-a a partir de uma localidade segura e esttica, como o CD-ROM de instalao do Red Hat Enterprise Linux. Assumindo que o CD-ROM esteja montado em /m nt/cdrom use o seguinte comando para import-la para o chaveiro (um banco de dados do sistema com chaves confiveis):
rpm --import /mnt/cdrom/RPM-GPG-KEY-redhat-release

Para exibir uma lista com todas as chaves instaladas para verificao de RPMs, execute o seguinte comando:
rpm -qa gpg-pubkey*

Para a chave da Red Hat, o resultado na tela inclui o seguinte:


gpg-pubkey-37017186-45761324

Para exibir detalhes sobre uma chave especfica, use o comando rpm -qi seguido do output do comando anterior, conforme este exemplo:
rpm -qi gpg-pubkey-37017186-45761324

extremamente importante verificar a assinatura dos arquivos RPM antes de instal-los para ter certeza de que eles no foram alterados depois do lanamento dos pacotes pela Red Hat, Inc. Para

26

Captulo 1. Viso Geral de Segurana

verificar todos os pacotes baixados de uma s vez, submeta o seguinte comando:


rpm -K /tmp/updates/*.rpm

For each package, if the GPG key verifies successfully, the command returns gpg OK. If it doesn't, make sure you are using the correct Red Hat public key, as well as verifying the source of the content. Packages that do not pass GPG verifications should not be installed, as they may have been altered by a third party. Aps verificar as chaves GPG e fazer o download de todos os pacotes associados ao relatrio da errata, instale os pacotes como root em uma janela de comandos. 1.4 .1.4 . Instalando Pacotes Assinados A instalao da maioria dos pacotes pode ser feita com segurana (exceto pacotes do kernel) atravs do seguinte comando:
rpm -Uvh /tmp/updates/*.rpm

Para pacotes do kernel, use o seguinte comando:


rpm -ivh /tmp/updates/<kernel-package>

Replace <kernel-package> in the previous example with the name of the kernel RPM. Aps reinicializar a mquina com sucesso usando o novo kernel, o kernel antigo deve ser removido usando o seguinte comando:
rpm -e <old-kernel-package>

Replace <old-kernel-package> in the previous example with the name of the older kernel RPM.

Nota
No necessrio remover o kernel antigo. O gerenciador de inicializao padro, GRUB, permite que mltiplos kernels sejam instalados e depois escolhidos atravs de um menu durante a inicializao da mquina.

Importante
Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to Seo 1.4.1.5, Aplicando as Alteraes for general instructions about applying the changes made by an errata update.

1.4 .1.5. Aplicando as Alteraes Aps fazer o download e instalar as erratas de segurana atravs da Red Hat Network ou do site de erratas da Red Hat, importante parar de usar o software antigo e passar a usar o novo. O modo como isso feito depende do tipo de software que foi atualizado. A lista a seguir aponta as categorias gerais de software e oferece instrues para usar as verses atualizadas aps uma atualizao de pacotes.

Red Hat Enterprise Linux 5 D eployment Guide

27

Nota
Em geral, reinicializar o sistema a maneira mais certa de garantir que a verso mais recente de um pacote de software seja usada; entretanto, esta opo nem sempre est disponvel ao administrador do sistema. Aplicativos Aplicativos em espao de usurio so quaisquer programas que possam ser iniciados por um usurio do sistema. Geralmente, estes aplicativos so usados somente quando um usurio, um script ou um utilitrio de tarefas automatizadas os lana, e no persistem por longos perodos. Aps tal aplicao em espao de usurio ser atualizada, pare todas as instncias da aplicao no sistema e lance o programa novamente a fim de usar a verso atualizada. Ncleo O kernel o componente central do software do sistema operacional Red Hat Enterprise Linux. Ele gerencia o acesso memria, ao processador, e a perifricos, e tambm agenda todas as tarefas. Devido sua funo central, o kernel no pode ser reiniciado sem tambm parar o computador. Portanto, uma verso atualizada do kernel no pode ser usada at que o sistema seja reinicializado. Bibliotecas Compartilhadas Bibliotecas compartilhadas so unidades de cdigo, como a glibc , que so usadas por diversos aplicativos e servios. Os aplicativos que utilizam uma biblioteca compartilhada geralmente carregam o cdigo compartilhado quando o aplicativo iniciado, portanto todos os aplicativos que usam a biblioteca compartilhada devem ser parados e relanados. Para determinar quais aplicativos esto relacionados a uma determinada biblioteca, use o comando lsof , conforme o exemplo a seguir:
lsof /usr/lib/libwrap.so*

Este comando retorna uma lista de todos os programas sendo executados que usam T CP wrappers para controle de acesso ao host. Portanto, quaisquer programas listados devem ser parados e relanados se o pacote tcp_wrappers for atualizado. Servios SysV Servios SysV so programas persistentes de servidor lanados durante o processo de inicializao. Exemplos de servios SysV incluem sshd , vsftpd e xinetd . Como estes programas geralmente persistem na memria enquanto a mquina inicializada, cada servio SysV atualizado deve ser parado e relanado aps a atualizao do pacote. Isto pode ser feito usando a Ferramenta de Configurao de Servios ou se logando a uma janela de comandos root e submetendo o comando /sbin/service como no exemplo seguinte:
/sbin/service <service-name> restart

28

Captulo 1. Viso Geral de Segurana

In the previous example, replace <service-name> with the name of the service, such as sshd . Servios xinetd Os servios controlados pelo super servio xinetd rodam somente quando h uma conexo ativa. Exemplos de servios controlados pelo xinetd incluem T elnet, IMAP e POP3. Como novas instncias destes servios so lanadas pelo xinetd cada vez que um novo pedido recebido, as conexes que ocorrem depois de uma atualizao so feitas pelo software atualizado. Entretanto, se houverem conexes ativas no momento em que o servio controlado xinetd atualizado, elas so feitas pela verso antiga do software. Para terminar instncias antigas de um servio em particular controlado pelo xinetd , faa a atualizao do pacote do servio e ento pare todos os processos sendo executados. Primeiro, determine se o processo est rodando, usando o comando ps e ento use o comando kill ou killall para parar as instncias atuais do servio. Por exemplo: se os pacotes da errata de segurana im ap so lanados, faa a atualizao dos pacotes e ento digite o seguinte comando como root em uma janela de comandos:
ps -aux | grep imap

Este comando retorna todas as sesses IMAP ativas. Sesses individuais podem ento ser terminadas com o seguinte comando:
kill <PID>

Se este comando falhar em terminar a sesso, use o seguinte comando em seu lugar:
kill -9 <PID>

In the previous examples, replace <PID> with the process identification number (found in the second column of the ps command) for an IMAP session. Para terminar todas as sesses IMAP ativas, submeta o seguinte comando:
killall imapd

[1] So urc e: http ://www.s ans .o rg /s ec urity-res o urc es /mis takes .p hp

Red Hat Enterprise Linux 5 D eployment Guide

29

Captulo 2. Assegurando sua Rede de Trabalho


2.1. Segurana de Estaes de Trabalho
A segurana de um ambiente Linux comea pela estao de trabalho. Na proteo de sua mquina pessoal ou sistema corporativo, uma boa poltica de segurana comea pelo computador individual. Afinal de contas, uma rede de computadores to segura quanto seu n mais vulnervel. 2.1.1. Avaliando a Segurana de Estaes de T rabalho Ao avaliar a segurana de uma estao de trabalho do Red Hat Enterprise Linux, considere os seguintes fatores: Segurana do BIOS e do Carregador de Inicializao Um usurio no autorizado pode acessar fisicamente a mquina e inicializ-la como um usurio simples ou no modo de recuperao sem uma senha? Segurana de Senhas At que ponto as senhas de conta de usurio na mquina esto seguras? Controles Administrativos Quem possui uma conta no sistema e qual o controle administrativo que estas contas possuem? Servios de Rede Disponveis Quais os servios disponveis para solicitaes advindas da rede? Eles deveriam mesmo estar ativos? Firewalls Pessoais Caso seja necessrio, que tipo de firewall devo escolher? Ferramentas de Comunicao com Segurana Aprimorada Quais ferramentas devem ser utilizadas para a comunicao entre estaes de trabalho e quais devem ser evitadas? 2.1.2. Segurana do BIOS e do Carregador de Inicializao A proteo de senhas para o BIOS (ou componente equivalente) e para o carregador de inicializao, pode evitar que usurios no autorizados, sem acesso fsico a sistemas, inicializem a mquina com mdia removvel ou obtenham privilgios root atravs do modo de usurio simples. As medidas de segurana a serem tomadas para proteger o sistema contra ataques deste tipo, dependem da confidencialidade das informaes que a estao de trabalho armazena e da localizao da mesma. For example, if a machine is used in a trade show and contains no sensitive information, then it may not be critical to prevent such attacks. However, if an employee's laptop with private, unencrypted SSH keys for the corporate network is left unattended at that same trade show, it could lead to a major security breach with ramifications for the entire company. Por outro lado, se a estao de trabalho estiver localizada em um lugar onde somente pessoas confiveis e autorizadas possuem acesso, ento proteger o BIOS ou o carregador de inicializao pode no ser necessrio. 2.1.2.1. Senhas do BIOS As duas razes principais para proteger o BIOS de um computador atravs do uso de uma senha so
[2 ]

: 1. Impedir Alteraes na Configurao do BIOS Se um intruso tem acesso ao BIOS, o mesmo pode configur-lo para ser iniciado por um disquete ou CD-ROM. Isto possibilita que ele entre no modo de recuperao ou de usurio simples, o que por sua vez permite que ele inicie programas arbitrariamente no sistema ou copie informaes confidenciais. 2. Impedir a Inicializao do Sistema Alguns BIOS permitem que voc proteja o processo de inicializao da mquina com uma senha. Quando ativado, um atacante forado a inserir uma senha antes do BIOS executar o carregador de inicializao.

30

Captulo 2. Assegurando sua Rede de Trabalho

Because the methods for setting a BIOS password vary between computer manufacturers, consult the computer's manual for specific instructions. Se voc esquecer a senha do BIOS, ela pode ser restaurada com jumpers na placa-me ou desligando a bateria do CMOS. Por esta razo, aconselhvel prevenir (por exemplo, chavear) o acesso aos componentes internos do computador, se possvel. Entretanto, consulte o manual do computador ou da placa-me antes de tentar desligar a bateria do CMOS. 2.1.2.1.1. Segurana de Plataformas No-x86 Outras arquiteturas usam programas diferentes para executar tarefas de nvel baixo, mais ou menos equivalentes quelas do BIOS em sistemas x86. Por exemplo, computadores baseados na Intel Itanium usam o shell EFI (Interface de Firmware Extensivo). For instructions on password protecting BIOS-like programs on other architectures, refer to the manufacturer's instructions. 2.1.2.2. Senhas do Carregador de Inicializao Veja a seguir as principais razes para proteger um carregador de inicializao Linux com senha: 1. Impedir Acesso ao Modo de Usurio Simples Se os atacantes puderem inicializar o sistema no modo de usurio simples, eles sero autenticados automaticamente como o usurio root sem que precisem digitar a senha root. 2. Impedir Acesso ao Console do GRUB Se uma mquina utilizar o GRUB como um carregador de inicializao, um atacante poder usar a interface do editor para mudanas de configurao ou para obter informaes atravs do comando cat. 3. Impedir Acesso Sistemas Operacionais No-Seguros Em sistemas de inicializao dupla, um atacante pode selecionar um sistema operacional na hora da inicializao (como o DOS, por exemplo), que ignora controles de acesso e permisses de arquivo. O Red Hat Enterprise Linux para a plataforma x86 vem com o carregador de inicializao GRUB. Para informaes detalhadas sobre o GRUB, consulte o Guia de Instalao Red Hat. 2.1.2.2.1. Senha para Proteo do GRUB You can configure GRUB to address the first two issues listed in Seo 2.1.2.2, Senhas do Carregador de Inicializao by adding a password directive to its configuration file. T o do this, first choose a strong password, open a shell, log in as root, and then type the following command:
/sbin/grub-md5-crypt

Quando solicitado, digite a senha do GRUB e pressione Enter . Isto retornar um hash MD5 da senha. Em seguida, edite o arquivo de configurao do GRUB /boot/grub/grub.conf . Abra o arquivo e, abaixo da linha de comando tim eout na seo principal do documento, adicione a seguinte linha:
password --md5 <password-hash>

Replace <password-hash> with the value returned by /sbin/grub-m d5-crypt[3 ]. De agora em diante, durante a inicializao do sistema, o menu do GRUB no permitir acesso ao editor ou interface de comandos sem que primeiro a tecla p seja pressionada, seguida da senha do GRUB. Infelizmente, esta soluo no impede que um atacante inicialize um sistema operacional no seguro em um ambiente de inicializao dupla. Para lidar com este cenrio, outra parte do arquivo /boot/grub/grub.conf deve ser editada.

Red Hat Enterprise Linux 5 D eployment Guide

31

Procure a linha title do sistema operacional ao qual voc deseja adicionar segurana, e adicione abaixo desta uma linha contendo a diretiva lock. Para um sistema DOS, a estrofe deve comear da seguinte forma:
title DOS lock

Ateno
Para que este mtodo funcione adequadamente, uma linha password deve constar na seo principal do arquivo /boot/grub/grub.conf . Do contrrio, um atacante poder acessar a interface de edio do GRUB e remover a linha lock. Para criar uma senha diferente para um kernel ou sistema operacional especfico, adicione uma linha lock na estrofe, seguida de uma linha para a senha. Cada estrofe que voc proteger com uma senha nica deve comear com linhas similares ao exemplo seguinte:
title DOS lock password --md5 <password-hash>

2.1.3. Segurana da Senha Passwords are the primary method that Red Hat Enterprise Linux uses to verify a user's identity. T his is why password security is so important for protection of the user, the workstation, and the network. Por motivos de segurana, o programa de instalao configura o sistema para usar o Algoritmo Message-Digest (MD5) e senhas shadow. altamente recomendvel que voc no altere estas configuraes. Se durante a instalao, as senhas MD5 forem desativadas, ser usado o formato Data Encryption Standard (DES). Este formato limita as senhas em at oito caracteres alfanumricos (no permitindo caracteres especiais como pontuao e outros), e oferece um nvel de criptografia modesto, de 56 bits. Se voc no selecionar as senhas shadow durante a instalao, todas as senhas sero armazenadas como hashing unidirecional em um arquivo /etc/passwd legvel por todos, o que torna o sistema vulnervel a ataques offline de cracking de senhas. Se um intruso puder obter acesso a uma mquina como um usurio comum, ele pode copiar o arquivo /etc/passwd para sua prpria mquina e rodar inmeros programas de cracking neste arquivo. Se houver uma senha desprotegida no arquivo, apenas uma questo de tempo at que o cracker a descubra. Senhas shadow eliminam a ameaa deste tipo de ataque, armazenando as senhas em um arquivo /etc/shadow, legvel somente pelo usurio root. Isto fora um atacante potencial a tentar quebrar a senha remotamente se autenticando em um servio de rede na mquina, como SSH ou FT P. Este tipo de ataque de fora bruta bem mais lento e deixa rastros bvios, j que centenas de tentativas de autenticao mal-sucedidas so registradas nos arquivos do sistema. Claro que, se o cracker comear um ataque no meio da noite em um sistema com senhas fracas, ele pode obter acesso e editar os arquivos de registro para apagar seus rastros antes da luz do dia. Alm das questes de formato e armazenamento, h tambm a questo de contedo. A coisa mais importante que um usurio pode fazer para proteger sua conta contra o cracking de senha criar uma senha robusta. 2.1.3.1. Criando Senhas Robustas

32

Captulo 2. Assegurando sua Rede de Trabalho

Ao criar uma senha robusta, uma boa idia seguir estas instrues: No Use Apenas Palavras ou Nmeros Nunca use somente palavras ou nmeros em uma senha. Alguns exemplos de senhas inseguras: 8675309 juan hackme No Use Palavras Reconhecveis Palavras como nomes prprios, palavras de dicionrio ou at termos de programas de televiso ou novelas devem ser evitados, mesmo que sejam finalizados com nmeros. Alguns exemplos de senhas inseguras: john1 DS-9 mentat123 No Use Palavras em Idiomas Estrangeiros Programas de quebra de senhas freqentemente checam listas de palavras que incluem dicionrios de muitos idiomas. Confiar em idiomas estrangeiros para proteger senhas no seguro. Alguns exemplos de senhas inseguras: cheguevara bienvenido1 1dumbKopf No Use Terminologia de Hacker Se voc se acha parte de uma elite por utilizar terminologia de hacker tambm chamada de linguajar l337 (LEET ) em sua senha, repense. Muitas listas de palavras incluem palavras do linguajar LEET . Alguns exemplos de senhas inseguras: H4X0R 1337 No Use Informaes Pessoais No use informaes pessoais em suas senhas. Se o atacante souber quem voc , ele ter mais facilidade em descobrir sua senha. A seguir, veja uma lista de tipos de informao a evitar na criao de uma senha: Alguns exemplos de senhas inseguras: Seu nome Nomes de animais de estimao Nomes de familiares Quaisquer datas de aniversrio Seu nmero de telefone ou cdigo postal No Inverta Palavras Reconhecveis Bons verificadores de senha sempre revertem palavras comuns, portanto reverter uma senha ruim no a torna mais segura. Alguns exemplos de senhas inseguras: R0X4H nauj 9-DS No Anote Sua Senha Nunca guarde uma senha em papel. bem mais seguro memoriz-la. No Use a Mesma Senha Para Todas as Mquinas importante criar senhas separadas para cada mquina. Desta maneira, se um sistema for comprometido, todas as outras mquinas no estaro em risco imediato. As seguintes diretrizes lhe ajudaro a criar uma senha robusta: Crie uma Senha de no Mnimo Oito Caracteres Quanto mais longa a senha, melhor. Se voc

Red Hat Enterprise Linux 5 D eployment Guide

33

estiver usando senhas MD5, as mesmas devem ter 15 ou mais caracteres. Para senhas DES, use o tamanho mximo (oito caracteres). Misture Letras Maisculas e Minsculas O Red Hat Enterprise Linuxdiferencia entre maisculas e minsculas, portanto misture-as para criar uma senha mais robusta. Misture Letras e Nmeros Adicionar nmeros a senhas, especialmente no meio delas (no apenas no comeo e fim), pode aumentar a robustez da senha. Include Non-Alphanumeric Characters Special characters such as &, $, and > can greatly improve the strength of a password (this is not possible if using DES passwords). Escolha uma Senha que Voc Possa Lembrar A melhor senha do mundo de nada adianta se voc no conseguir lembr-la. Ento, use acrnimos ou outros dispositivos mnemnicos para ajud-lo a memorizar senhas. Com todas estas regras, parece difcil criar uma senha que siga todos os critrios e evitar as caractersticas de uma senha ruim. Felizmente, existem alguns passos simples que podem ser seguidos para gerar uma senha fcil de lembrar e segura. 2.1.3.1.1. Metodologia de Criao de Senhas Seguras H muitos mtodos usados para criar senhas seguras. Um dos mais conhecidos envolve acrnimos. Por exemplo: Pense em uma frase que seja fcil de lembrar, como: "over the river and through the woods, to grandmother's house we go." Em seguida, transforme-a num acrnimo (incluindo a pontuao). otrattw,tghwg. Adicione complexidade substituindo letras por nmeros e smbolos no acrnimo. Por exemplo: substitua n por 9 e a letra d pelo smbolo arroba (@ ): o7r@ 77w,7ghwg. Adicione mais complexidade colocando pelo menos uma das letras em maiscula, como F . o7r@ 77w,7gHwg. Finalmente, nunca use o exemplo acima em um de seus sistemas. Criar senhas seguras imperativo, mas gerenci-las apropriadamente tambm importante, especialmente para administradores de sistemas em grandes organizaes. A prxima seo detalha boas prticas para criar e gerenciar senhas de usurios em uma organizao. 2.1.3.2. Criando Senhas de Usurios Dentro de uma Empresa Se houver um nmero significativo de usurios em uma organizao, os administradores de sistemas tm duas opes bsicas para forar o uso de boas senhas. Eles podem criar senhas para os usurios, ou podem deixar que os usurios criem suas prprias senhas, enquanto verificam se as senhas tm qualidade aceitvel. Criar senhas para os usurios garante que as senhas sejam boas, mas torna-se uma tarefa complicada conforme a empresa cresce. T ambm aumenta o risco dos usurios anotarem suas senhas. Por estas razes, a maioria dos administradores de sistema prefere que os usurios criem suas prprias senhas, mas ativamente verificam se as senhas so boas e, em alguns casos, foram os usurios a trocarem suas senhas periodicamente conforme as senhas vo envelhecendo. 2.1.3.2.1. Forando Senhas Robustas T o protect the network from intrusion it is a good idea for system administrators to verify that the passwords used within an organization are strong ones. When users are asked to create or change

34

Captulo 2. Assegurando sua Rede de Trabalho

passwords, they can use the command line application passwd , which is Pluggable Authentication Manager (PAM ) aware and therefore checks to see if the password is too short or otherwise easy to crack. T his check is performed using the pam _cracklib.so PAM module. Since PAM is customizable, it is possible to add more password integrity checkers, such as pam _passwdqc (available from http://www.openwall.com/passwdqc/) or to write a new module. For a list of available PAM modules, refer to http://www.kernel.org/pub/linux/libs/pam/modules.html. For more information about PAM, refer to Seo 2.4, Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM). A verificao de senhas executada durante sua criao no descobre senhas fracas to efetivamente quanto a verificao atravs da execuo de um programa de quebra de senhas contra as mesmas. H muitos programas de quebra de senhas que rodam no Red Hat Enterprise Linux, embora nenhum seja distribudo junto com o sistema operacional. Abaixo h uma breve lista de alguns dos programas de cracking de senhas mais conhecidos:

Nota
Nenhuma destas ferramentas fornecida com o Red Hat Enterprise Linux, e portanto no so suportadas pela Red Hat, Inc. de maneira nenhuma. John The Ripper Um programa de quebra de senhas rpido e flexvel. Permite o uso de listas de palavras mltiplas e capaz de quebrar senhas usando fora bruta. Est disponvel online em http://www.openwall.com/john/. Crack Perhaps the most well known password cracking software, Crack is also very fast, though not as easy to use as John T he Ripper . It can be found online at http://www.openwall.com/john/. Slurpie O Slurpie similar ao John T he Ripper e ao Crack, mas foi criado para rodar em vrios computadores simultaneamente, criando um ataque de quebra de senhas distribudo. Pode ser encontrado online, juntamente outras ferramentas de avaliao de segurana contra ataques distribudos, em http://www.ussrback.com/distributed.htm.

Ateno
Sempre obtenha autorizaes por escrito antes de tentar quebrar senhas dentro de uma empresa.

2.1.3.2.2. Vencimento de Senhas O vencimento de senhas uma outra tcnica usada por administradores de sistema para se combater o uso de senhas fracas dentro de uma empresa. O vencimento de senhas significa que aps um determinado tempo (geralmente 90 dias), o usurio obrigado a criar uma nova senha. Na teoria, se o usurio forado a trocar sua senha periodicamente, uma quebra de senha ser til para um intruso somente por um tempo limitado. A desvantagem desta tcnica, no entanto, que usurios tendem a anotar suas senhas. Existem dois programas principais usados para efetivar o uso do vencimento de senhas no Red Hat Enterprise Linux: o comando chage ou o aplicativo grfico Gerenciador de Usurios (system config-users). T he -M option of the chage command specifies the maximum number of days the password is valid. For example, to set a user's password to expire in 90 days, use the following command:
chage -M 90 <username>

In the above command, replace <username> with the name of the user. T o disable password expiration,

Red Hat Enterprise Linux 5 D eployment Guide

35

In the above command, replace <username> with the name of the user. T o disable password expiration, it is traditional to use a value of 99999 after the -M option (this equates to a little over 273 years). Voc tambm pode usar o comando chage em modo interativo para modificar o vencimento e detalhes de vrias senhas ao mesmo tempo. Use o seguinte comando para entrar em modo interativo:
chage <username>

O trecho a seguir um exemplo de uma sesso interativa usando este comando:


[root@interch-dev1 ~]# chage davido Changing the aging information for davido Enter the new value, or press ENTER for the default Minimum Password Age [0]: 10 Maximum Password Age [99999]: 90 Last Password Change (YYYY-MM-DD) [2006-08-18]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [1969-12-31]: [root@interch-dev1 ~]#

Consulte a pgina man do chage para maiores informaes sobre as opes disponveis. Voc tambm pode usar o grfico do aplicativo Gerente de Usurio para criar uma poltica de vencimento de senha, como se segue. Note: voc precisar dos privilgios do Administrador para aplicar este procedimento. 1. Clique no menu Sistema no Painel, escolha Administrao e clique em Usurios e Grupos para mostrar o Gerente de Usurio. Como outra alternativa, digite o comando system -configusers na janela de comandos. 2. Clique na aba Usurios, e selecione o usurio requerido na lista de usurios. 3. Clique em Propriedades na barra de ferramentas para mostrar a caixa de dilogo das Propriedades do Usurio ( ou escolha Propriedades no menu Arquivo ). 4. Em seguida, clique na aba Inform aes de Senhas e insira o nmero de dias antes da senha vencer, conforme mostra a Figura 2.1, Especificando as opes de vencimento da senha. 5. Insira o valor solicitado no campo Dias antes da solicitao de m udana e clique em OK.

36

Captulo 2. Assegurando sua Rede de Trabalho

Figura 2.1. Especificando as opes de vencimento da senha

2.1.4 . Controles Administrativos When administering a home machine, the user must perform some tasks as the root user or by acquiring effective root privileges via a setuid program, such as sudo or su. A setuid program is one that operates with the user ID (UID) of the program's owner rather than the user operating the program. Such programs are denoted by an s in the owner section of a long format listing, as in the following example:
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su

Nota
O s pode ser maisculo ou minsculo. Se for maisculo, significa que o bit de permisso adjacente no foi definido. For the system administrators of an organization, however, choices must be made as to how much administrative access users within the organization should have to their machine. T hrough a PAM module called pam _console.so , some activities normally reserved only for the root user, such as rebooting and mounting removable media are allowed for the first user that logs in at the physical console (refer to Seo 2.4, Mdulos de Autenticao Plugveis (Pluggable Authentication Modules PAM) for more information about the pam _console.so module.) However, other important system administration tasks, such as altering network settings, configuring a new mouse, or mounting network devices, are not possible without administrative privileges. As a result, system administrators must decide how much access the users on their network should receive. 2.1.4 .1. Permitindo Acesso Root Se os usurios de uma organizao so de confiana e bem treinados em relao ao uso de computadores, permitir que eles gozem de acesso root talvez no seja uma preocupao. Permitir que usurios tenham acesso root significa que atividades corriqueiras, como a adio de dispositivos ou configurao de interfaces de rede, sejam administradas por cada usurio, deixando administradores de sistemas livres para lidar com a segurana de rede e outras questes importantes. Por outro lado, a permisso de acesso root usurios individuais pode levantar as seguintes questes: M Configurao da Mquina Usurios com acesso root podem configurar suas mquinas incorretamente e precisar de assistncia para resolver problemas, ou pior, abrir buracos na segurana sem saber. Execuo de Servios Inseguros Usurios com acesso root podem rodar servios inseguros, como FT P ou T elnet, em suas mquinas, potencialmente colocando em risco nomes de usurios e senhas. Estes servios transmitem informao atravs da rede usando modo texto sem formatao. Execuo de Anexos de E-mails como Root Apesar de raros, existem vrus de e-mail que afetam o Linux. A nica hora em que eles representam uma ameaa, no entanto, quando so executados pelo usurio root. 2.1.4 .2. Impedindo Acesso Root If an administrator is uncomfortable allowing users to log in as root for these or other reasons, the root password should be kept secret, and access to runlevel one or single user mode should be disallowed through boot loader password protection (refer to Seo 2.1.2.2, Senhas do Carregador de Inicializao for more information on this topic.) T abela 2.1, Mtodos para Desativar a Conta Root describes ways that an administrator can further

Red Hat Enterprise Linux 5 D eployment Guide

37

ensure that root logins are disallowed:

38

Captulo 2. Assegurando sua Rede de Trabalho

T abela 2.1. Mtodos para Desativar a Conta Root Mtodo Alterando o shell do root. Descrio Edite o arquivo /etc/passwd e altere o shell de /bin/bash para /sbin/nologin . Efeitos Previne o acesso ao shell do root e mantm um log de quaisquer tentativas. Os seguintes programas no tm permisso para acessar a conta do root: login gdm kdm xdm su ssh scp vsftpd Desativando acesso root atravs de qualquer dispositivo de console (tty). Um arquivo /etc/securetty vazio impede a autenticao como root a quaisquer dispositivos conectados ao computador. Impede acesso conta do root atravs do console ou rede. Os seguintes programas no tem acesso conta do root: login gdm kdm su xdm sudo Outros servios de rede que abram um tty ssh scp vsftpd Desativando autenticaes root SSH. Edite o arquivo /etc/ssh/sshd_config e defina o parmetro Perm itRootLogin para no . Impede o acesso root atravs do conjunto de ferramentas Open SSH. Os seguintes programas no tem acesso conta do root: ssh Isto impede somente o acesso root ao conjunto de ferramentas OpenSSH. Os seguintes programas tm permisso para acessar a conta do root: Programas que no autentiquem-se como root, mas executam tarefas administrativas atravs de programas setuid ou outros mecanismos. No Afeta Programas que no requerem um shell, como clientes FT P, clientes de e-mail, e outros tantos programas setuid. Os seguintes programas tm permisso para acessar a conta do root: sudo Clientes FT P Clientes de e-mail

Red Hat Enterprise Linux 5 D eployment Guide

39

scp vsftpd Utilizar o PAM para limitar o acesso root aos servios. Edit the file for the target service in the /etc/pam .d/ directory. Make sure the pam _listfile.so is required for authentication.[a ] Impede o acesso root a servios de rede que ofeream integrao com o PAM. Os seguintes servios no podem acessar a conta do root: Clientes FT P Clientes de e-mail login gdm kdm xdm ssh scp vsftpd Quaisquer servios que ofeream integrao com o PAM (PAM aware)
[a] Refer to Se o 2.1.4.2.4, Des ab ilitand o o Ac es s o d o Ro o t ao PAM fo r d etails .

Programas e servios que no ofeream integrao com o PAM.

2.1.4 .2.1. Desativando o Shell do Root T o prevent users from logging in directly as root, the system administrator can set the root account's shell to /sbin/nologin in the /etc/passwd file. T his prevents access to the root account through commands that require a shell, such as the su and the ssh commands.

Importante
Programas que no requerem acesso ao shell, como clientes de e-mail ou o comando sudo , ainda podem acessar a conta root.

2.1.4 .2.2. Desabilitando Autenticaes Root T o further limit access to the root account, administrators can disable root logins at the console by editing the /etc/securetty file. T his file lists all devices the root user is allowed to log into. If the file does not exist at all, the root user can log in through any communication device on the system, whether via the console or a raw network interface. T his is dangerous, because a user can log in to his machine as root via T elnet, which transmits the password in plain text over the network. By default, Red Hat

40

Captulo 2. Assegurando sua Rede de Trabalho

Enterprise Linux's /etc/securetty file only allows the root user to log in at the console physically attached to the machine. T o prevent root from logging in, remove the contents of this file by typing the following command:
echo > /etc/securetty

Ateno
Um arquivo /etc/securetty em branco no impede que o usurio root autentique-se remotamente usando o conjunto de ferramentas OpenSSH porque o console s aberto aps a autenticao.

2.1.4 .2.3. Desabilitando Autenticaes do Root Atravs do SSH T o prevent root logins via the SSH protocol, edit the SSH daemon's configuration file (/etc/ssh/sshd_config ). Change the line that reads:
# PermitRootLogin yes

para o seguinte:
PermitRootLogin no

2.1.4 .2.4 . Desabilitando o Acesso do Root ao PAM O PAM permite grande flexibilidade para recusar contas especficas atravs do mdulo /lib/security/pam _listfile.so . O administrador pode usar este mdulo para listar os usurios que no tm permisso para autenticao. Abaixo est um exemplo de como o mdulo usado para o servidor FT P vsftpd no arquivo /etc/pam .d/vsftpd de configurao do PAM (o caractere \ no final da primeira linha no seguinte exemplo no necessrio se o comando ocupar apenas uma linha):
auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed

Isto diz ao PAM para consultar o arquivo /etc/vsftpd.ftpusers e recusar a qualquer usurio l listado o acesso ao servio. O administrador pode alterar o nome deste arquivo e pode manter listas separadas para cada servio ou usar uma lista central para recusar o acesso a mltiplos servios. Se o administrador quiser recusar o acesso a mltiplos servios, pode-se adicionar uma linha similar aos arquivos de configurao do PAM, como /etc/pam .d/pop e /etc/pam .d/im ap para clientes de e-mail ou /etc/pam .d/ssh para clientes SSH. For more information about PAM, refer to Seo 2.4, Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM). 2.1.4 .3. Limitando o Acesso Root Ao invs de recusar completamente o acesso ao usurio root, o administrador pode permitir o acesso apenas atravs de programas setuid, como o su ou o sudo . 2.1.4 .3.1. O Comando su Quando um usurio executa o comando su, o mesmo precisa entrar com a senha root e, aps a autenticao, recebe uma solicitao de janela da root.

Red Hat Enterprise Linux 5 D eployment Guide

41

Uma vez autenticado atravs do comando su, o usurio o usurio root e tem acesso administrativo total ao sistema[4 ]. Alm disso, ao se tornar um usurio root, possvel que ele use o comando su para assumir a identidade de qualquer outro usurio no sistema sem precisar entrar com a respectiva senha. Como este programa to poderoso, administradores dentro de uma empresa talvez queiram limitar quem pode acess-lo. Uma das maneiras mais simples de fazer isso adicionar usurios ao grupo administrativo especial chamado wheel. Para fazer isso, digite o seguinte comando como root:
usermod -G wheel <username>

In the previous command, replace <username> with the username you want to add to the wheel group. Voc tambm pode usar o Gerente de Usurio para modificar os membros do grupo, como se segue. Note: voc precisar dos privilgios do Administrador para aplicar este procedimento. 1. Clique no menu Sistema no Painel, escolha Administrao e clique em Usurios e Grupos para mostrar o Gerente de Usurio. Como outra alternativa, digite o comando system -configusers na janela de comandos. 2. Clique na aba Usurios, e selecione o usurio requerido na lista de usurios. 3. Clique em Propriedades na barra de ferramentas para mostrar a caixa de dilogo das Propriedades do Usurio ( ou escolha Propriedades no menu Arquivo ). 4. Click the Groups tab, select the check box for the wheel group, and then click OK. Refer to Figura 2.2, Adding users to the "wheel" group.. 5. Em seguida, abra o arquivo de configurao do PAM para o su (/etc/pam .d/su) em um editor de texto e remova o comentrio # da seguinte linha:
auth required /lib/security/$ISA/pam_wheel.so use_uid

Isso permitir que somente membros do grupo administrativo wheel usem o programa.

Figura 2.2. Adding users to the "wheel" group.

Nota
O usurio root parte do grupo wheel de acordo com a configurao padro.

42

Captulo 2. Assegurando sua Rede de Trabalho

2.1.4 .3.2. O Comando sudo O comando sudo oferece outra abordagem para permitir que usurios tenham acesso administrativo. Quando um usurio confivel precede um comando administrativo com sudo , o sistema pede que o usurio entre a sua prpria senha. Ento, aps a autenticao, e assumindo que seja permitido, o comando administrativo executado como se o usurio fosse o root. O formato bsico do comando sudo o seguinte:
sudo <command>

In the above example, <command> would be replaced by a command normally reserved for the root user, such as m ount.

Importante
Usurios do comando sudo devem tomar cuidado extra para fazer o logout antes de deixarem suas mquinas, j que possvel usar o comando novamente sem precisar indicar a senha, por um perodo de cinco minutos. Esta configurao pode ser alterada atravs do arquivo de configurao /etc/sudoers. T he sudo command allows for a high degree of flexibility. For instance, only users listed in the /etc/sudoers configuration file are allowed to use the sudo command and the command is executed in the user's shell, not a root shell. T his means the root shell can be completely disabled, as shown in Seo 2.1.4.2.1, Desativando o Shell do Root. T he sudo command also provides a comprehensive audit trail. Each successful authentication is logged to the file /var/log/m essages and the command issued along with the issuer's user name is logged to the file /var/log/secure . Outra vantagem do comando sudo que um administrador pode permitir que usurios acessem diferentes comandos especficos de acordo com suas necessidades. Administradores que queiram editar o arquivo de configurao do sudo , o /etc/sudoers, devem usar o comando visudo . Para que algum tenha todos os privilgios administrativos, digite visudo e adicione uma linha similar na seguinte na seo de especificao de privilgios do usurio:
juan ALL=(ALL) ALL

Este exemplo estabelece que o usurio juan pode usar o sudo em qualquer mquina e executar qualquer comando. O exemplo abaixo ilustra a granularidade possvel ao configurar o sudo :
%users localhost=/sbin/shutdown -h now

Este exemplo estabelece que qualquer usurio pode submeter o comando /sbin/shutdown -h now desde que o faa pelo console. A pgina man do sudoers tem uma lista detalhada das opes para este arquivo. 2.1.5. Servios de Rede Disponveis

Red Hat Enterprise Linux 5 D eployment Guide

43

O controle administrativo de acesso dos usurios uma questo sria para administradores de sistemas dentro de uma empresa. No entanto, o controle de quais servios de rede esto ativos de suma importncia para qualquer administrador e operador do sistema Linux. Muitos servios comportam-se como servidores de rede sob o Red Hat Enterprise Linux. Se um servio de rede estiver rodando em uma mquina, ento consequentemente um aplicativo de servidor (ou daemon) estar ouvindo conexes em uma ou mais portas de rede. Cada um destes servidores deve ser tratado como uma potencial via de ataque. 2.1.5.1. Riscos aos Servios Servios de rede podem representar muitos riscos aos sistemas Linux. Veja abaixo uma lista dos principais problemas: Ataques de Negao de Servio (Denial of Service, ou DoS) Ao inundar um servio com pedidos, um ataque de negao de servio pode inutilizar um sistema enquanto este tenta registrar e responder cada solicitao. Ataques de Vulnerabilidade de Script Se um servidor estiver usando scripts para executar aes no lado do servidor, como servidores Web geralmente fazem, um cracker pode montar um ataque contra scripts escritos inapropriadamente. Estes ataques de vulnerabilidade de script podem levar condio de estouro de buffer ou permitir que o atacante altere arquivos no sistema. Ataques de Estouro de Buffer Servios que se conectam portas numeradas de 0 a 1023 devem ser executados por um usurio administrativo. Se o aplicativo tiver uma vulnerabilidade de estouro de buffer, um atacante pode obter acesso ao sistema como o usurio rodando o daemon. Devido existncia de vulnerabilidades de estouro de buffer, os crackers usam ferramentas automatizadas para identificar sistemas com vulnerabilidades, e aps obterem acesso ao sistema, utilizam rootkits automatizados para mant-lo.

Nota
A ameaa das vulnerabilidades de estouro de buffer amenizada no Red Hat Enterprise Linux pelo ExecShield, uma tecnologia de segmentao e proteo da memria executvel suportada pelos kernels de mono ou multi-processadores x86. O ExecShield reduz o risco de estouro de buffer dividindo a memria virtual em segmentos executveis e no-executveis. Qualquer cdigo de programa que tentar executar fora do segmento executvel (como cdigo malfico de um exploit baseado em estouro de buffer) aciona uma falha de segmentao e terminado. O Execshield tambm inclui suporte para a tecnologia No eXecute (NX) nas plataformas AMD64 e para a tecnologia eXecute Disable (XD) em sistemas Itanium e Intel 64. Estas tecnologias trabalham em conjunto com o ExecShield para impedir que cdigo maldoso rode na poro executvel da memria virtual com uma granularidade de 4KB de cdigo executvel, diminuindo o risco de ataques exploits furtivos de estouro de buffer.

Tip
Para limitar a exposio a ataques atravs da rede, todos os servios que no estiverem sendo usados, devem ser desligados.

2.1.5.2. Identificando e Configurando Servios Para aumentar a segurana, a maioria dos servios de rede instalados com o Red Hat Enterprise Linux so desligados por meio da configurao padro. No entanto, h algumas excees notveis: cupsd O servidor de impresso padro do Red Hat Enterprise Linux.

44

Captulo 2. Assegurando sua Rede de Trabalho

lpd Um servidor de impresso alternativo. xinetd Um super servidor que controla conexes uma gama de servidores subordinados, como gssftp e telnet. sendm ail O Agente de T ransporte de Correio (Mail Transport Agent ou MT A) Sendmail habilitado pela configurao padro, mas somente escuta por conexes a partir do localhost. sshd O servidor OpenSSH, um substituto seguro para o T elnet. Ao determinar se estes servios devem ou no ser deixados rodando, melhor usar o bom senso e pecar pela precauo. Por exemplo, se uma impressora no est disponvel, no deixe o cupsd rodando. O mesmo vale para o portm ap . Se voc no monta volumes NFSv3 ou no usa o NIS (o servio ypbind ), ento o portm ap deve ser desabilitado.

Figura 2.3. Services Configuration T ool If unsure of the purpose for a particular service, the Services Configuration T ool has a description field, illustrated in Figura 2.3, Services Configuration T ool, that provides additional information. Checking which network services are available to start at boot time is only part of the story. You should also check which ports are open and listening. Refer to Seo 2.2.8, Verificando Quais Portas esto Escutando for more information. 2.1.5.3. Servios Inseguros Alguns protocolos de rede so essencialmente mais inseguros que outros. Estes incluem quaisquer servios que: Transmitam Nomes de Usurio e Senhas No Criptografados atravs de uma Rede Muitos protocolos antigos, como T elnet e FT P, no criptografam a seo de autenticao e devem ser evitados sempre que possvel. Transmit Sensitive Data Over a Network Unencrypted Many protocols transmit data over the network unencrypted. T hese protocols include T elnet, FT P, HT T P, and SMT P. Many network file systems, such as NFS and SMB, also transmit information over the network unencrypted. It is the user's responsibility when using these protocols to limit what type of data is transmitted. Servios remotos de despejo de memria, como o netdum p , passam o contedo da memria no

Red Hat Enterprise Linux 5 D eployment Guide

45

criptografado atravs da rede. Despejos de memria podem conter senhas ou, pior ainda, informaes de bancos de dados ou outras informaes confidenciais. Outros servios como finger e rwhod revelam informaes sobre os usurios do sistema. Entre os exemplos de servios inseguros herdados, incluem rlogin , rsh , telnet, and vsftpd . All remote login and shell programs (rlogin , rsh , and telnet) should be avoided in favor of SSH. Refer to Seo 2.1.7, Ferramentas de Comunicao com Segurana Aprimorada for more information about sshd . FT P is not as inherently dangerous to the security of the system as remote shells, but FT P servers must be carefully configured and monitored to avoid problems. Refer to Seo 2.2.6, Protegendo o FT P for more information about securing FT P servers. Os seguintes servios devem ser cuidadosamente implementados e colocados atrs de um firewall: finger authd (chamado de identd em lanamentos anteriores do Red Hat Enterprise Linux) netdum p netdum p-server nfs rwhod sendm ail sm b (Samba) yppasswdd ypserv ypxfrd More information on securing network services is available in Seo 2.2, Segurana do Servidor. A prxima seo aborda as ferramentas disponveis para a configurao de um firewall simples. 2.1.6. Firewalls Pessoais Aps o trmino da configurao de servios de rede necessrios, importante que se implemente um firewall.

Importante
Voc deve configurar os servios necessrios e implementar um firewall antes de se conectar Internet ou qualquer outra rede no confivel. Firewalls prevent network packets from accessing the system's network interface. If a request is made to a port that is blocked by a firewall, the request is ignored. If a service is listening on one of these blocked ports, it does not receive the packets and is effectively disabled. For this reason, care should be taken when configuring a firewall to block access to ports not in use, while not blocking access to ports used by configured services. For most users, the best tool for configuring a simple firewall is the graphical firewall configuration tool which ships with Red Hat Enterprise Linux: the Security Level Configuration T ool (system config-securitylevel ). T his tool creates broad iptables rules for a general-purpose firewall using a control panel interface.

46

Captulo 2. Assegurando sua Rede de Trabalho

Na mesma proporo em que cresceu o tamanho e a popularidade da Internet, cresceu tambm a ameaa da interceptao de comunicaes. Atravs dos anos, ferramentas foram desenvolvidas para criptografar comunicaes durante sua transmisso atravs de redes de comunicao. O Red Hat Enterprise Linux distribudo com duas ferramentas bsicas que usam algoritmos de alto nvel e baseados em criptografia de chave pblica para proteger dados enquanto estes trafegam pela rede. OpenSSH Uma verso gratuita do protocolo SSH para criptografar comunicaes de rede. GNU Privacy Guard (GPG) Uma implementao gratuita de aplicativo de criptografia PGP (Pretty Good Privacy) para criptografar dados. OpenSSh uma maneira mais segura de acessar uma mquina remota e substitui servios no criptografados como telnet e rsh . OpenSSH inclui um servio de rede chamado sshd , e trs aplicaes cliente de linha de comandos: ssh Um cliente de acesso seguro a consoles remotos. scp Um comando seguro de cpia remota. sftp Um cliente pseudo-ftp seguro que permite sees interativas de transferncia de arquivos. GPG uma maneira de garantir a privacidade da comunicao por e-mail. Pode ser usado tanto para enviar e-mail com dados privativos atravs de redes pblicas como para proteger dados confidenciais em discos rgidos.

2.2. Segurana do Servidor


Quando um sistema usado como um servidor em um rede pblica, torna-se um alvo de ataques. Por esta razo solidificar e trancar os servios de suma importncia para o administrador de sistemas. Antes de aprofundar em questes especficas, voc deve revisar as seguintes dicas gerais para aumentar a segurana do servidor: Mantenha todos os servios atualizados para proteg-los contra as ameaas recentes. Use protocolos seguros sempre que possvel. Oferea apenas um tipo de servio de rede por mquina sempre que possvel. Monitore todos os servidores cuidadosamente e atente para atividades suspeitas. 2.2.1. Protegendo Servios com T CP Wrappers e xinetd TCP wrappers oferecem controle de acesso a vrios servios. A maioria dos servios de rede modernos, como SSH, T elnet e FT P, utilizam T CP wrappers, que ficam de guarda entre a entrada de um pedido e o servio requisitado. Os benefcios oferecidos por T CP wrappers aumentam quando este usado junto ao xinetd , um super servidor que oferece acesso adicional, registro, vinculao, redirecionamento e controle de utilizao de recursos. As sub-sees seguintes assumem um conhecimento bsico de cada tpico e concentram-se nas opes de segurana especficas. 2.2.1.1. Aumentando a Segurana com T CP Wrappers Os T CP wrappers so capazes de fazer muitas outras coisas alm de simplesmente negar acesso aos servios. Esta seo ilustra como eles podem ser utilizados para enviar banners de conexo, alertar ataques em hosts especficos e aprimorar a funcionalidade de autenticao. Consulte a pgina man hosts_options para obter uma lista completa das funcionalidades e linguagem de controle do T CP

Red Hat Enterprise Linux 5 D eployment Guide

47

Wrapper. 2.2.1.1.1. T CP Wrappers e Banners de Conexo Enviar um banner apropriado quando os usurios se conectarem a um servio uma boa forma de informar atacantes em potencial que o administrador de sistemas est sob viglia. Voc tambm pode controlar se as informaes sobre o sistema esto sendo disponibilizadas aos usurios.Para implementar um banner do T CP Wrappers para um servio, use a opo banner . Este exemplo implementa um banner para o vsftpd . Para comear, crie um arquivo de banner. Pode estar em qualquer lugar do sistema, mas deve levar o mesmo nome que o daemon. Neste exemplo, o arquivo chamado /etc/banners/vsftpd e contm as seguintes linhas:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use will result in your access privileges being removed.

A expresso %c oferece uma gama de informaes do cliente, tais como nome de usurio e nome de host ou nome de usurio e endereo IP, para intimidar ainda mais a conexo. Para que este banner seja apresentado em futuras conexes, adicione a seguinte linha ao arquivo /etc/hosts.allow:
vsftpd : ALL : banners /etc/banners/

2.2.1.1.2. T CP Wrappers e Alertas de Ataque Se um determinado host ou rede for flagrado atacando o servidor, o T CP wrappers pode ser usado para alertar o administrador sobre ataques subseqentes deste host ou rede atravs da diretiva spawn . Neste exemplo, assuma que um cracker da rede 206.182.68.0/24 foi pego tentando atacar o servidor. Ao inserir a seguinte linha no arquivo /etc/hosts.deny, a tentativa de conexo a partir daquela rede negada e registrada em um arquivo especial:
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert

A expresso %d traz o nome do servio que o atacante estava tentando acessar. Para permitir a conexo e registr-la, insira diretiva spawn no arquivo /etc/hosts.allow.

Nota
J que a diretiva spawn executa qualquer comando de linha, crie um script especial para notificar o administrador ou para executar uma srie de comandos quando um determinado cliente tentar conectar ao servidor.

2.2.1.1.3. T CP Wrappers e Registro Aprimorado Se determinados tipos de conexes so mais preocupantes que outras, o nvel de registro pode ser elevado para estes servios atravs da opo severity. Neste exemplo, considere que qualquer um tentando conectar porta 23 (a porta do T elnet) em um servidor FT P um cracker. Para denotar isso, insira um sinal em erg nos arquivos de registro ao invs do sinal padro, info , e negue a conexo.

48

Captulo 2. Assegurando sua Rede de Trabalho

Para fazer isso, insira a seguinte linha no arquivo /etc/hosts.deny:


in.telnetd : ALL : severity emerg

Isto usa a facilidade de registro authpriv padro, mas eleva a prioridade do valor padro info para em erg , o que envia mensagens de registro diretamente ao console. 2.2.1.2. Aumentando a Segurana com o xinetd Esta seo concentra-se no uso do xinetd para configurar um servio armadilha e us-lo para controlar nveis de recursos disponveis para quaisquer servios xinetd . Estabelecer limites de recursos para servios pode ajudar a frustrar ataques de Negao de Servio (Denial of Service, ou DoS). Consulte as pginas man para o xinetd e o xinetd.conf para uma lista de opes disponveis. 2.2.1.2.1. Montando uma Armadilha Uma importante caracterstica do xinetd sua habilidade em adicionar hosts uma lista global no_access. Aos hosts desta lista so negadas as conexes subseqentes aos servios gerenciados pelo xinetd por um determinado perodo ou at o xinetd ser reiniciado. Isto feito usando o atributo SENSOR . Esta tcnica uma maneira fcil de bloquear hosts que tentarem scanear o servidor. O primeiro passo para definir um SENSOR escolher um servio que voc no planeja utilizar. Neste exemplo, usamos o T elnet. Edite o arquivo /etc/xinetd.d/telnet e altere a linha flags para:
flags = SENSOR

Adicione a seguinte linha:


deny_time = 30

Isto nega a conexo do host que tentou conectar porta por 30 minutos. Outros valores aceitveis para o atributo deny_tim e so FOREVER (sempre), que mantm o banimento efetivo at que o xinetd seja reiniciado, e NEVER (nunca), que permite a conexo e a registra. Finalmente, a ltima linha deve ser:
disable = no

Isto habilita a armadilha. Apesar do uso do SENSOR ser uma boa maneira de detectar e parar conexes de hosts perigosos, h duas desvantagens: No funciona contra scans secretos. Um atacante ciente de que voc est rodando o SENSOR pode montar um ataque de Negao de Servio contra determinados hosts forjando seus endereos IP e conectando porta proibida. 2.2.1.2.2. Controlando Recursos de Servidor Outra caracterstica importante do xinetd sua habilidade em controlar a quantidade de recursos que os servios sob seu controle podem utilizar. Ele o faz atravs das seguintes diretivas:

Red Hat Enterprise Linux 5 D eployment Guide

49

cps = <num ber_of_connections> <wait_period> Limits the rate of incoming connections. T his directive takes two arguments: <num ber_of_connections> T he number of connections per second to handle. If the rate of incoming connections is higher than this, the service is temporarily disabled. T he default value is fifty (50). <wait_period> T he number of seconds to wait before re-enabling the service after it has been disabled. T he default interval is ten (10) seconds. instances = <num ber_of_connections> Specifies the total number of connections allowed to a service. T his directive accepts either an integer value or UNLIMIT ED . per_source = <num ber_of_connections> Specifies the number of connections allowed to a service by each host. T his directive accepts either an integer value or UNLIMIT ED . rlim it_as = <num ber[K|M]> Specifies the amount of memory address space the service can occupy in kilobytes or megabytes. T his directive accepts either an integer value or UNLIMIT ED . rlim it_cpu = <num ber_of_seconds> Specifies the amount of time in seconds that a service may occupy the CPU. T his directive accepts either an integer value or UNLIMIT ED . O uso destas diretivas pode ajudar a prevenir que qualquer servio xinetd sobrecarregue o sistema, resultando em negao de servio. 2.2.2. Protegendo o Portmap O servio portm ap um daemon de atribuio dinmica de portas para servios RPC, como o NIS e o NFS. T em mecanismos de autenticao fracos e tem habilidade para delegar uma vasta gama de portas para os servios que controla. Por estas razes, difcil de proteger.

Nota
Proteger o portm ap afeta somente as implementaes do NFSv2 e NFSv3, j que o NFSv4 no o requer mais. Se voc planeja implementar um servidor NFSv2 ou NFSv3, o portm ap necessrio e a seo seguinte vlida. Se voc est rodando servios RPC, siga estas regras bsicas. 2.2.2.1. Proteja o portmap com T CP Wrappers importante usar T CP Wrappers para limitar quais redes ou hosts tm acesso ao servio portm ap j que este no possui uma forma de autenticao prpria. Alm disso, use somente endereos IP ao limitar acesso para o servio. Evite usar estes nomes de host, j que eles podem ser forjados atravs da adulterao do DNS e outros mtodos. 2.2.2.2. Proteja o portmap com iptables Para restringir ainda mais o acesso ao servio portm ap , uma boa idia adicionar regras do iptables ao servidor e restringir o acesso redes especficas. Abaixo encontram-se dois exemplos de comandos do iptables. O primeiro permite conexes T CP porta 111 (usada pelo servio portm ap ) a partir da rede 192.168.0.0/24. O segundo permite conexes T CP mesma porta a partir do host local. Isto necessrio para o servio sgi_fam usado pelo Nautilus. T odos os outros pacotes so descartados.
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT

50

Captulo 2. Assegurando sua Rede de Trabalho

Para limitar o trfego UDP similarmente, use o seguinte comando.


iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP

2.2.3. Protegendo o NIS T he Network Information Service (NIS) is an RPC service, called ypserv,--> which is used in conjunction with portm ap and other related services to distribute maps of usernames, passwords, and other sensitive information to any computer claiming to be within its domain. Um servidor NIS composto de diversas aplicaes. Elas incluem as seguintes: /usr/sbin/rpc.yppasswdd T ambm chamado de servio yppasswdd , esse daemon permite que os usurios alterem suas senhas NIS. /usr/sbin/rpc.ypxfrd T ambm chamado de servio ypxfrd , esse daemon responsvel pelas transferncias de mapa do NIS atravs da rede. /usr/sbin/yppush Essa aplicao propaga bancos de dados NIS alterados para servidores NIS mltiplos. /usr/sbin/ypserv Este o servidor daemon do NIS. NIS is somewhat insecure by today's standards. It has no host authentication mechanisms and transmits all of its information over the network unencrypted, including password hashes. As a result, extreme care must be taken when setting up a network that uses NIS. T his is further complicated by the fact that the default configuration of NIS is inherently insecure. It is recommended that anyone planning to implement an NIS server first secure the portm ap service as outlined in Seo 2.2.2, Protegendo o Portmap, then address the following issues, such as network planning. 2.2.3.1. Planejar Cuidadosamente a Rede Como o NIS passa informaes confidenciais sem criptografia atravs da rede, importante que o servio seja executado por trs de uma firewall e numa rede segmentada e segura. T oda vez que informaes do NIS so passadas atravs de uma rede insegura, h o risco de serem interceptadas. O design cuidadoso da rede neste aspecto pode ajudar a prevenir srias violaes segurana. 2.2.3.2. Use um Nome de Domnio e Nome de Host NIS parecido com uma senha Any machine within an NIS domain can use commands to extract information from the server without authentication, as long as the user knows the NIS server's DNS hostname and NIS domain name. Por exemplo, se algum conectar um laptop a uma rede ou violar a rede por fora (e conseguir falsificar um endereo IP interno), o seguinte comando revela o mapa de /etc/passwd :
ypcat -d <NIS_domain> -h <DNS_hostname> passwd

Se este atacante for um usurio root, poder obter o arquivo /etc/shadow digitando o seguinte comando:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow

Nota
Se o Kerberos for usado, o arquivo /etc/shadow no estar armazenado em um mapa NIS.

Red Hat Enterprise Linux 5 D eployment Guide

51

Para dificultar o acesso aos mapas NIS a um atacante, crie uma srie randmica de caracteres para o nome de host DNS, tal como o7hfawtgm hwg.dom ain.com . Similarmente, crie um nome diferente de domnio NIS randomizado . Isto dificulta bastante o acesso de um atacante ao servidor NIS. 2.2.3.3. Edite o Arquivo /var/yp/securenets Se o arquivo /var/yp/securenets estiver vazio, ou no existir (como o caso logo aps uma instalao padro), o NIS escuta todas as redes. Uma das primeiras coisas a serem feitas colocar pares de rede/mscara de rede no arquivo para que o ypserv apenas responda pedidos de redes apropriadas. Veja abaixo um exemplo de entrada de um arquivo /var/yp/securenets:
255.255.255.0 192.168.0.0

Alerta
Nunca inicie um servidor NIS pela primeira vez sem criar o arquivo /var/yp/securenets. Essa tcnica no oferece proteo contra ataque de spoofing de IP, mas pelo menos impe limites a quais redes o servidor NIS serve. 2.2.3.4 . Atribuir Portas Estticas e Usar Regras do iptables T odos os servidores relacionados ao NIS podem ter portas especficas, exceto o rpc.yppasswdd o daemon que permite a usurios alterarem suas senhas de autenticao. Atribuir portas para os outros dois daemons do servidor NIS, rpc.ypxfrd e ypserv, permite criar regras de firewall para proteger futuramente os daemons do servidor NIS contra intrusos. Para fazer isto, adicione as seguintes linhas a /etc/sysconfig/network:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"

As seguintes regras do iptables podem ser determinadas para reforar a qual rede o servidor escuta para estas portas:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP --dport 835 -j DROP

Isto significa que o servidor apenas permite conexes s portas 834 e 835 casos os pedidos venham da rede 192.168.0.0/24, independentemente do protocolo. 2.2.3.5. Use Autenticao do Kerberos Uma das desvantagens mais gritantes ao usar NIS para autenticao que sempre que um usurio se autentica numa mquina, um hash de senha enviado do mapa /etc/shadow atravs da rede. Se um intruso obtiver acesso a um domnio NIS e bisbilhotar o trfego de rede, os hashes de senha e nomes de usurios podem ser discretamente coletados. Com tempo suficiente, um programa de quebra de senhas pode adivinhar senhas fceis e um atacante pode obter acesso a uma conta vlida na rede. Since Kerberos uses secret-key cryptography, no password hashes are ever sent over the network, making the system far more secure. Refer to Seo 2.6, Kerberos for more information about Kerberos. 2.2.4 . Protegendo o NFS

52

Captulo 2. Assegurando sua Rede de Trabalho

Importante
T he version of NFS included in Red Hat Enterprise Linux, NFSv4, no longer requires the portm ap service as outlined in Seo 2.2.2, Protegendo o Portmap. NFS traffic now utilizes T CP in all versions, rather than UDP, and requires it when using NFSv4. NFSv4 now includes Kerberos user and group authentication, as part of the RPCSEC_GSS kernel module. Information on portm ap is still included, since Red Hat Enterprise Linux supports NFSv2 and NFSv3, both of which utilize portm ap .

2.2.4 .1. Planejar Cuidadosamente a Rede Agora que o NFSv4 tem a habilidade de passar todas as informaes criptografadas usando o Kerberos atravs da rede, importante que o servio seja configurado corretamente se estiver atrs de um firewall ou numa rede segmentada. O NFSv2 e NFSv3 ainda passam dados de forma insegura e seus riscos devem ser considerados. Um planejamento cuidadoso da rede neste aspecto pode ajudar a prevenir violaes segurana. 2.2.4 .2. Cuidado com Erros de Sintaxe O servidor NFS determina quais sistemas de arquivo e quais hosts exportar para estes diretrios atravs do arquivo /etc/exports. Cuidado para no adicionar espaos extras ao editar este arquivo. Por exemplo, a linha a seguir no arquivo /etc/exports compartilha o diretrio /tm p/nfs/ com o host bob.exam ple.com com permisses de leitura e escrita.
/tmp/nfs/ bob.example.com(rw)

Por outro lado, esta linha do arquivo /etc/exports compartilha o mesmo diretrio com o host bob.exam ple.com com permisso somente-leitura, e o compartilha com o mundo com permisses leitura e escrita devido um nico caractere de espao aps o nome de host.
/tmp/nfs/ bob.example.com (rw)

bom praticar a verificao de quaisquer compartilhamentos NFS usando o comando showm ount para checar o que est sendo compartilhado:
showmount -e <hostname>

2.2.4 .3. No Use a Opo no_root_squash Por padro, compartilhamentos NFS alteram o usurio root para o usurio nfsnobody, uma conta de usurio sem privilgios. Isto muda o proprietrio de todos os arquivos criados pelo root para nfsnobody, que previne o carregamento de programas com o setuid definido. Se no_root_squash usado, os usurios root remotos podero alterar qualquer arquivo do sistema de arquivo compartilhado e deixar aplicativos infectados por trojans, para que outros usurios os executem inadvertidamente. 2.2.5. Protegendo o Servidor HT T P Apache O Servidor HT T P Apache um dos servios mais estveis e seguros distribudos com o Red Hat Enterprise Linux. H um nmero exorbitante de opes e tcnicas disponveis para proteger o Servidor HT T P Apache muito numerosos para serem explorados em detalhes aqui. Administradores de Sistemas devem ter cuidado ao utilizar as seguintes opes:

Red Hat Enterprise Linux 5 D eployment Guide

53

Administradores de Sistemas devem ter cuidado ao utilizar as seguintes opes: 2.2.5.1. FollowSym Links Esta diretiva habilitada por padro, portanto tenha cuidado ao criar links simblicos para a raiz dos documentos do servidor Web. Por exemplo, uma m idia prover um link simblico para /. 2.2.5.2. A Diretiva Indexes Esta diretiva habilitada por padro, mas pode no ser desejvel. Para prevenir que visitantes naveguem pelos arquivos no servidor, remova esta diretiva. 2.2.5.3. A Diretiva UserDir A diretiva UserDir desabilitada por padro porque esta pode confirmar a presena de uma conta de usurio no sistema. Para possibilitar a navegao pelos diretrios do usurio no servidor, use as seguintes diretivas:
UserDir enabled UserDir disabled root

Estas diretivas ativam a navegao em todos os diretrios de usurio, exceto no /root/. Para adicionar usurios lista de contas desativadas, adicione uma lista de usurios delimitada por espao na linha UserDir disabled . 2.2.5.4 . No Remova a Diretiva IncludesNoExec Por padro, o mdulo Server-Side Includes (SSI) no pode executar comandos. No recomendado alterar esta configurao a no ser que seja absolutamente necessrio, j que pode, potencialmente, possibilitar que um atacante execute comandos no sistema. 2.2.5.5. Permisses Restritas para Diretrios Executveis Certifique-se de conceder permisses de gravao (write) apenas para o usurio root em todos os diretrios contendo scripts ou CGIs. Isto pode ser feito digitando os seguintes comandos:
chown root <directory_name> chmod 755 <directory_name>

Importante
T ambm verifique sempre se todos os scripts rodando no sistema funcionam como planejado antes de coloc-los em produo.

2.2.6. Protegendo o FT P T he File Transfer Protocol (FT P) is an older T CP protocol designed to transfer files over a network. Because all transactions with the server, including user authentication, are unencrypted, it is considered an insecure protocol and should be carefully configured. O Red Hat Enterprise Linux oferece trs servidores FT P. gssftpd Um FT P daemon kerberizado baseado no xinetd que no passa informaes de autenticao atravs da rede. Red Hat Content Accelerator (tux) Um servidor Web de espao de kernel com capacidades de FT P.

54

Captulo 2. Assegurando sua Rede de Trabalho

vsftpd Uma implementao auto-suficiente do servio FT P orientada segurana. As orientaes de segurana a seguir referem-se configurao do servio FT P vsftpd . 2.2.6.1. Banner de Saudao do FT P Antes de submeter um nome de usurio e senha, apresentado um banner de saudao a todos os usurios. Por padro, este banner inclui informaes da verso teis para crackers tentando identificar fraquezas num sistema. Para alterar o banner de saudao do vsftpd , adicione a seguinte diretiva ao arquivo /etc/vsftpd/vsftpd.conf :
ftpd_banner=<insert_greeting_here>

Replace <insert_greeting_here> in the above directive with the text of the greeting message. Para banners com muitas linhas, melhor usar um arquivo de banner. Para simplificar o gerenciamento de banners mltiplos, coloque todos os banners em um novo diretrio chamado /etc/banners/. O arquivo de banners para conexes FT P, neste exemplo, /etc/banners/ftp.m sg . O exemplo abaixo mostra como este arquivo se parece:
########## Hello, all activity on ftp.example.com is logged. #########

Nota
It is not necessary to begin each line of the file with 220 as specified in Seo 2.2.1.1.1, T CP Wrappers e Banners de Conexo. Para referenciar este arquivo de banners de saudao do vsftpd , adicione a seguinte diretiva ao arquivo /etc/vsftpd/vsftpd.conf :
banner_file=/etc/banners/ftp.msg

Importante
Make sure that you specify the path to the banner file correctly in /etc/vsftpd/vsftpd.conf , or else every attempt to connect to vsftpd will result in the connection being closed immediately and a 500 OOPS: cannot open banner <path_to_banner_file> error message. Note that the banner_file directive in /etc/vsftpd/vfsftpd.conf takes precedence over any ftpd_banner directives in the configuration file: if banner_file is specified, then ftpd_banner is ignored. It also is possible to send additional banners to incoming connections using T CP Wrappers as described in Seo 2.2.1.1.1, T CP Wrappers e Banners de Conexo. 2.2.6.2. Acesso Annimo A presena do diretrio /var/ftp/ ativa a conta annima. A maneira mais fcil de criar este diretrio instalar o pacote vsftpd . Este pacote define uma rvore de diretrio para usurios annimos e configura as permisses dos diretrios para somente-leitura para usurios annimos.

Red Hat Enterprise Linux 5 D eployment Guide

55

Por padro, a conta do usurio annimo no pode escrever em nenhum diretrio.

Ateno
Se voc possibilitar o acesso annimo a um servidor FT P, tome cuidado onde armazena os dados importantes.

2.2.6.2.1. Upload Annimo Para permitir que usurios annimos faam upload, recomendado criar um diretrio somente-gravao (write-only) em /var/ftp/pub/. Para faz-lo, use o seguinte comando:
mkdir /var/ftp/pub/upload

A seguir, modifique as permisses para que usurios annimos no possam visualizar o contedo do diretrio:
chmod 730 /var/ftp/pub/upload

Uma lista do diretrio em formato longo deve se parecer com o seguinte:


drwx-wx--2 root ftp 4096 Feb 13 20:05 upload

Alerta
Administradores que permitem a usurios annimos ler e gravar em diretrios, freqentemente percebem que seu servidor se torna um depsito de software roubado. Adicionalmente, abaixo de vsftpd , adicione a seguinte linha ao arquivo /etc/vsftpd/vsftpd.conf :
anon_upload_enable=YES

2.2.6.3. Contas de Usurio J que o FT P passa nomes de usurio e senhas no criptografados atravs de redes inseguras para autenticao, uma boa idia proibir usurios do sistema acessarem o servidor atravs de suas contas de usurio. Para desativar contas de usurio em vsftpd , adicione a seguinte diretiva a /etc/vsftpd/vsftpd.conf :
local_enable=NO

2.2.6.3.1. Restringindo Contas de Usurio T ambm possvel desativar contas de usurio dentro de cada servio diretamente. Para desativar contas de usurio especficas em vsftpd , adicione o nome do usurio a /etc/vsftpd.ftpusers.

56

Captulo 2. Assegurando sua Rede de Trabalho

2.2.6.4 . Use T CP Wrappers para Controlar Acesso Use T CP Wrappers to control access to either FT P daemon as outlined in Seo 2.2.1.1, Aumentando a Segurana com T CP Wrappers. 2.2.7. Protegendo o Sendmail O Sendmail um Agente de T ransporte de Correspondncia (Mail T ransport Agent - MT A) que utiliza o Protocolo de T ransporte de Correspondncia Simples (Simple Mail T ransport Protocol - SMT P) para entregar mensagens eletrnicas entre outros MT As e para enviar e-mails a clientes ou agentes de entrega. Apesar de muitos MT As serem capazes de criptografar trfego entre eles, a maioria no o faz, portanto enviar e-mail atravs de qualquer rede pblica considerado uma forma de comunicao essencialmente insegura. recomendado a qualquer um planejando implementar um servidor Sendmail, resolver as seguintes questes. 2.2.7.1. Limitar um Ataque Denial of Service Devido natureza de e-mails, um determinado atacante pode facilmente mandar uma enxurrada de correspondncia para o servidor e causar um ataque de negao de servio. Ao determinar limites para as diretivas a seguir em /etc/m ail/sendm ail.m c , a efetividade de ataques deste tipo limitada. confCONNECT ION_RAT E_T HROT T LE O nmero de conexes que o servidor pode receber por segundo. Por padro, o Sendmail no limita o nmero de conexes. Se um limite for definido e alcanado, conexes subseqentes tero que esperar. confMAX_DAEMON_CHILDREN O nmero mximo de processos filho que podem ser gerados pelo servidor. Por padro, o Sendmail no determina um nmero limite de processos filho. Se um limite for definido e alcanado, conexes futuras tero que esperar. confMIN_FREE_BLOCKS O nmero mnimo de blocos livres que devem estar disponveis para que o servidor aceite correspondncia. O valor padro 100 blocos. confMAX_HEADERS_LENGT H O tamanho mximo aceitvel (em bytes) para o cabealho de uma mensagem. confMAX_MESSAGE_SIZE O tamanho mximo aceitvel (em bytes) para qualquer mensagem. 2.2.7.2. NFS e Sendmail Nunca coloque o diretrio spool de correspondncia, /var/spool/m ail/, em um volume NFS compartilhado. Because NFSv2 and NFSv3 do not maintain control over user and group IDs, two or more users can have the same UID, and receive and read each other's mail.

Nota
Isso no ocorre com o NFSv4 usando Kerberos, j que o mdulo de kernel SECRPC_GSS no utiliza a autenticao baseada no UID. Entretanto, uma boa idia no colocar o diretrio spool de correspondncia em volumes NFS compartilhados.

2.2.7.3. Usurios Mail-only Para ajudar a prevenir exploits locais no servidor Sendmail, melhor que usurios de mail acessem o Sendmail usando apenas um programa de email. Contas shell no devem ser permitidas no servidor de correspondncia e todos os usurios shell do arquivo /etc/passwd devem ser definidos para /sbin/nologin (com a possvel exceo do usurio root).

Red Hat Enterprise Linux 5 D eployment Guide

57

2.2.8. Verificando Quais Portas esto Escutando After configuring network services, it is important to pay attention to which ports are actually listening on the system's network interfaces. Any open ports can be evidence of an intrusion. H duas formas bsicas de listar as portas que esto escutando a rede. A menos confivel questionar a lista da rede ao digitar comandos como netstat -an ou lsof -i . Este mtodo menos confivel j que estes programas no conectam mquina pela rede, mas checam o que est sendo executado no sistema. Por esta razo, estas aplicaes so alvos freqentes de substituio por atacantes. Desta maneira, os crackers tentam cobrir seus passos se abrirem portas de rede no autorizadas atravs da substituio do netstat e do lsof pelas suas prprias verses modificadas. Uma forma mais confivel de listar quais portas esto escutando a rede usar um scanner de portas como o nm ap . O comando a seguir, submetido em um console, determina quais portas esto escutando conexes FT P pela rede:
nmap -sT -O localhost

O output deste comando se parece com o seguinte:


Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT Interesting ports on localhost.localdomain (127.0.0.1): (The 1653 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 631/tcp open ipp 834/tcp open unknown 2601/tcp open zebra 32774/tcp open sometimes-rpc11 Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7) Uptime 12.857 days (since Sat Sep 11 17:16:20 2004) Nmap run completed -- 1 IP address (1 host up) scanned in 5.190 seconds

Este output mostra que o sistema est rodando o portm ap devido presena do servio sunrpc . No entanto, tambm h um servio misterioso na porta 834. Para verificar se a porta est associada lista oficial de servios conhecidos, digite:
cat /etc/services | grep 834

Este comando no retorna nenhum output. Isto indica que enquanto a porta est no intervalo reservado (de 0 a 1023) e requer acesso root para abrir, no est associada a um servio conhecido. Em seguida, verifique as informaes sobre a porta usando netstat ou lsof . Para verificar a porta 834 usando netstat, use o seguinte comando:
netstat -anp | grep 834

O comando retorna o seguinte output:


tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind

58

Captulo 2. Assegurando sua Rede de Trabalho

A presena da porta aberta em netstat afirma que um cracker que abrir clandestinamente uma porta num sistema violado provavelmente no permitir que esta seja revelada atravs deste comando. A opo [p] tambm revela o id do processo (PID) do servio que abriu a porta. Neste caso, a porta aberta pertence ao ypbind (NIS), que um servio RPC administrado juntamente ao servio portm ap . O comando lsof revela informaes similares ao netstat j que capaz de ligar portas abertas a servios:
lsof -i | grep 834

Veja abaixo a parte relevante do output deste comando:


ypbind (LISTEN) ypbind (LISTEN) ypbind (LISTEN) ypbind (LISTEN) 653 655 656 657 0 0 0 0 7u 7u 7u 7u IPv4 IPv4 IPv4 IPv4 1319 1319 1319 1319 TCP *:834 TCP *:834 TCP *:834 TCP *:834

Estas ferramentas podem revelar muitas informaes sobre o estado dos servios rodando em uma mquina. Estas ferramentas so flexveis e podem prover uma riqueza de informaes sobre os servios e configuraes da rede. Consulte as pginas man do lsof , do netstat, do nm ap , e do services para maiores informaes.

2.3. Single Sign-on (SSO)


2.3.1. Introduo A funcionalidade SSO de Red Hat Enterprise Linux, reduz a quantidade de vezes que os usurios de desktop Red Hat Enterprise Linux precisam inserir suas senhas. Muitos aplicativos aproveitam a mesma autenticao adjacente e mecanismos de autorizao para os usurios se registrarem no Red Hat Enterprise Linux a partir da tela de registro, assim no precisaro reinserir suas senhas. Estes aplicativos esto detalhados abaixo: Alm disso, os usurios podem se registrar em suas mquinas at quando no houver rede de trabalho (mdulo offline) ou onde a conectividade da rede de trabalho no for confivel, por exemplo, no acesso wireless. Nos casos mais recentes, os servios iro degradar vagarosamente. 2.3.1.1. Aplicativos suportados Os aplicativos seguintes so suportados atualmente pelo esquema de registro unificado em Red Hat Enterprise Linux: Registro Proteo de tela Firefox e T hunderbird 2.3.1.2. Mecanismos de Autenticao Suportados Red Hat Enterprise Linux atualmente suporta os seguintes mecanismos de autenticao: Nome de Kerberos/registro de senha Carto Inteligente/ Registro de PIN

Red Hat Enterprise Linux 5 D eployment Guide

59

2.3.1.3. Cartes Inteligentes Suportados Red Hat Enterprise Linux foi testado com o carto e leitor e-gate Cyberflex, mas qualquer carto que seja compatvel ao carto Java 2.1.1 e especificaes de Plataforma Global 2.0.1, devem operar corretamente, como qualquer outro leitor que seja suportado pelo PCSC-lite. Red Hat Enterprise Linux tambm foi testado com Cartes de Acesso Comuns (CAC). O leitor suportado para CAC o Leitor SCM SCR 331 USB. As of Red Hat Enterprise Linux 5.2, Gemalto smart cards (Cyberflex Access 64k v2, standard with DER SHA1 value configured as in PKCSI v2.1) are now supported. T hese smart cards now use readers compliant with Chip/Smart Card Interface Devices (CCID). 2.3.1.4 . Vantagens do Single Sign-on Red Hat Enterprise Linux Diversos mecanismos de segurana que existem atualmente, utilizam um grande nmero de protocolos e armazenamentos credenciais. Alguns exemplos incluem: SSL, SSH, IPsec e Kerberos. O SSO do Red Hat Enterprise Linux enfoca a unificao destes esquemas para suportar os requerimentos listados acima. Isto no significa substituir os Kerberos por certificados X.509v3, e sim uni-los para reduzir a carga, tanto dos usurios de sistemas e administradores como daqueles que os gerenciam. Para atingir este objetivo , Red Hat Enterprise Linux Oferece uma instncia nica compartilhada das bibliotecas criptogrficas NSS em cada sistema operacional . Ships the Certificate System's Enterprise Security Client (ESC) with the base operating system. T he ESC application monitors smart card insertion events. If it detects that the user has inserted a smart card that was designed to be used with the Red Hat Enterprise Linux Certificate System server product, it displays a user interface instructing the user how to enroll that smart card. Unifica o Kerberos e NSS, para os usurios que se registrarem no sistema operacional usando o carto inteligente tambm obtenham uma credencial Kerberos (que permite que se registrem nos servidores de arquivo, etc.) 2.3.2. Iniciando seu Carto Inteligente Ante que voc utilize seu carto inteligente para se registrar em seu sistema e se beneficiar com as diversas opes de segurana que esta tecnologia oferece, voc precisar fazer algumas instalaes bsicas e passos de configurao, como descrito abaixo:

Nota
Esta seo oferece uma ampla viso de como utilizar seu carto inteligente. Maiores informaes detalhadas esto disponveis no Guia de Segurana do Cliente da Red Hat Certificate System Enterprise. 1. Registre-se com seu nome e senha do Kerberos 2. T enha a certeza de que os pacotes nss-tools esto carregados. 3. Faa o download e instalao dos certificados root especficos para empresas. Utilize o seguinte comando para instalar o certificado root CA:
certutil -A -d /etc/pki/nssdb -n "root ca cert" -t "CT,C,C" -i ./ca_cert_in_base64_format.crt

4. Verifique se voc possui os seguintes RPMs instalados em seu sistema: esc, pam_pkcs11, coolkey, ifd-egate, ccid, gdm, authconfig, and authconfig-gtk. 5. Habilite o Suporte de Registro do Carto Inteligente

60

Captulo 2. Assegurando sua Rede de Trabalho

a. On the Gnome T itle Bar, select System->Administration->Authentication. b. T ype your machine's root password if necessary. c. No dilogo de Configurao de Autenticao, clique na aba Autenticao . d. Selecione o Habilitar o Suporte ao Carto Inteligente e. Clique no boto Configurar o Carto Inteligente... para obter o dilogo da Configurao do Carto Inteligente e especifique as configuraes solicitadas: Solicitar um carto inteligente para efetuar o registro Desabilite a opo. Depois que voc se registrar com seu carto inteligente voc pode selecionar esta opo para evitar que usurios se registrem sem um carto inteligente. Ao de Rem oo do Carto Esta opo controla o que acontece quando voc remove um carto inteligente depois de ter se registrado. As opes disponveis so as seguintes: Bloquear A remoo do carto inteligente pode bloquear a tela X. Ignorar A remoo do carto inteligente no tem efeito. 6. Se voc precisar habilitar o Protocolo de Status do Certificado Online (OCSP), abra o arquivo /etc/pam _pkcs11/pam _pkcs11.conf e procure pela seguinte linha: enable_ocsp = false; Mude este valor para verdadeiro, como segue abaixo: enable_ocsp = true; 7. Registre seu carto inteligente 8. Se voc estiver usando um carto CAC, voc tambm precisar aplicar estes passos a seguir: a. Mude para a conta root e crie um arquivo chamado /etc/pam _pkcs11/cn_m ap . b. Adicione a seguinte entrada ao arquivo cn_m ap : MY.CAC_CN.123454 -> myloginid onde o MY.CAC_CN.123454 o Nome Comum em seu CAC e myloginid seu ID de registro UNIX 9. Sair 2.3.2.1. Resolvendo Problemas Se voc tiver problemas para colocar seu carto inteligente em funcionamento, tente usar o seguinte comando para localizar a fonte do problema:
pklogin_finder debug

Se voc executar a ferramenta pklogin_finder no modo depurador, enquanto um carto inteligente registrado estiver conectado, ela tentar enviar informaes sobre a validade dos certificados. Se a tarefa for bem sucedida, ela tentar mapear um ID de registro dos certificados que estiverem no carto. 2.3.3. Como Funciona o Registro do Carto Inteligente Cartes inteligentes so registrados ao receberem um certificado apropriado, assinado por uma Autoridade de Certificado vlida (CA). Isto envolve diversos passos que esto descritos a seguir. 1. O usurio insere seus cartes inteligentes no leitor de carto inteligente na estao de trabalho. Este evento reconhecido pelo Cliente de Segurana Empresarial (ESC). 2. T he enrollment page is displayed on the user's desktop. T he user completes the required details and the user's system then connects to the T oken Processing System (T PS) and the CA. 3. O T PS registra o carto inteligente usando um certificado assinado pelo CA.

Red Hat Enterprise Linux 5 D eployment Guide

61

Figura 2.4 . Como Funciona o Registro do Carto Inteligente

2.3.4 . Como Funciona a Autenticao do Carto Inteligente Esta seo oferece uma viso geral breve do processo de autenticao ao utilizar um carto inteligente. 1. When the user inserts their smart card into the smart card reader, this event is recognized by the PAM facility, which prompts for the user's PIN. 2. T he system then looks up the user's current certificates and verifies their validity. T he certificate is then mapped to the user's UID. 3. Ele validado pelo KDC e pelas autenticaes adquiridas.

Figura 2.5. Como Funciona a Autenticao do Carto Inteligente

62

Captulo 2. Assegurando sua Rede de Trabalho

Nota
Voc no pode se autenticar com um carto que no tenha sido registrado, mesmo que j tenha sido formatado. Voc precisa se autenticar com um carto registrado e formatado, ou ento sem um carto inteligente at que possa registrar um novo carto. Refer to Seo 2.6, Kerberos and Seo 2.4, Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM) for more information on Kerberos and PAM. 2.3.5. Configurando o Firefox para usar o Kerberos para SSO. Voc pode configurar o Firefox para usar Kerberos para um Single Sign-on. Para que funcione corretamente, voc precisa configurar seu navegador da web para enviar suas credenciais Kerberos para o KDC apropriado. A seo a seguir, descreve as mudanas de configurao e outros requerimentos para obter este resultado. 1. Nesta barra de endereos do Firefox, digite about:config para exibir a lista de opes de configurao atual. 2. No campo Filtro , digite negociate para restringir a lista de opes. 3. Clique duas vezes na entrada network.negotiate-auth.trusted-uris para exibir a caixa de dilogo Digite o valor da faixa 4. Digite o nome do domnio pelo qual queira autenticar, por exemplo, .exemplo.com. 5. Repita o procedimento acima para a entrada network.negotiate-auth.delegation-uris usando o mesmo domnio.

Nota
Voc pode deixar este valor em branco, pois permite a passagem do ticket do Kerberos, a qual no requerida. Se voc no puder visualizar estas duas opes de configurao listadas, a verso do Firefox que voc possui pode ser muito antiga para suportar a autenticao Negotiate, e voc deve considerar uma atualizao.

Figura 2.6. Configurando o Firefox para o SSO com Kerberos Voc agora precisa assegurar-se de que voc possui os tickets do Kerberos. Em uma janela de comando, digite kinit para recuperar os tickets do Kerberos. Para obter a lista de permisses

Red Hat Enterprise Linux 5 D eployment Guide

63

disponveis, digite klist. A seguir veja um exemplo do resultado destes comandos:


[user@host ~] $ kinit Password for user@EXAMPLE.COM: [user@host ~] $ klist Ticket cache: FILE:/tmp/krb5cc_10920 Default principal: user@EXAMPLE.COM Valid starting Expires Service principal 10/26/06 23:47:54 10/27/06 09:47:54 krbtgt/USER.COM@USER.COM renew until 10/26/06 23:47:54 Kerberos 4 ticket cache: /tmp/tkt10920 klist: You have no tickets cached

2.3.5.1. Resolvendo Problemas Se voc tiver seguido os passos de configurao acima mencionados e a autenticao Negotiate ainda no estiver funcionando, voc pode habilitar o login verbal do processo de autenticao. Isto pode ajud-lo a encontrar a causa do problema. Para habilit-lo, utilize o seguinte procedimento: 1. Feche todas as instncias do Firefox 2. Abra uma janela de comando, e insira os seguintes comandos:
export NSPR_LOG_MODULES=negotiateauth:5 export NSPR_LOG_FILE=/tmp/moz.log

3. Reinicie o Firefox a partir desta janela, e visite o website que voc no conseguiu autenticar anteriormente. As informaes sero registradas no arquivo /tm p/m oz.log , e podero lhe dar algumas pistas para a soluo do problema. Por exemplo:
-1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken() -1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure No credentials cache found

Isto indica que voc no possui os tickets do Kerberos, e precisa execut-las kinit. Se voc conseguir executar o kinit com xito a partir de sua mquina mas no conseguir autentic-lo, procure por algo como isto no arquivo de registro:
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken() -1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure Server not found in Kerberos database

Isto geralmente indica um problema de configurao no Kerberos. Esteja certo de que voc possui as entradas corretas na seo [domain_realm] do arquivo /etc/krb5.conf . Por exemplo:
.example.com = EXAMPLE.COM example.com = EXAMPLE.COM

Se no aparecer nada no registro, possvel que voc esteja atrs de um proxy e que o mesmo esteja apagando os cabealhos HT T P requeridos pela autenticao Negotiate. Para driblar este problema, voc pode tentar conectar ao servidor usando o HT T PS, o que permitir que as solicitaes permaneam intactas. Ento proceda a depurao, utilizando o arquivo de registro, como descrito acima.

64

Captulo 2. Assegurando sua Rede de Trabalho

2.4. Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM)


Programs that grant users access to a system use authentication to verify each other's identity (that is, to establish that a user is who they say they are). Historicamente, cada programa possua a sua prpria maneira de autenticar usurios. No Red Hat Enterprise Linux, vrios programas so configurados para usar um mecanismo de autenticao centralizado chamado Mdulos de Autenticao Plugveis (Pluggable Authentication Modules - PAM). O PAM usa uma arquitetura modular plugvel que permite que o administrador do sistemas tenha mxima flexibilidade ao estabelecer polticas de autenticao para o sistema. In most situations, the default PAM configuration file for a PAM-aware application is sufficient. Sometimes, however, it is necessary to edit a PAM configuration file. Because misconfiguration of PAM can compromise system security, it is important to understand the structure of these files before making any modifications. Refer to Seo 2.4.3, Formato do Arquivo de Configurao do PAM for more information. 2.4 .1. Vantagens do PAM O PAM oferece as seguintes vantagens: um esquema de autenticao comum que pode ser usado com uma variada gama de aplicativos. flexibilidade e controle significativos da autenticao tanto para administradores de sistemas como para desenvolvedores de aplicativos. uma biblioteca nica e bem documentada que permite que desenvolvedores escrevam programas sem ter que criar seus prprios esquemas de autenticao. 2.4 .2. Arquivos de Configurao do PAM O diretrio /etc/pam .d/ contm os arquivos de configurao do PAM para cada aplicativo que use o PAM. Em verses mais antigas do PAM, o /etc/pam .conf era usado, mas este arquivo agora est obsoleto e usado apenas se o diretrio /etc/pam .d/ no existir. 2.4 .2.1. Arquivos de Servio do PAM Cada aplicativo, ou servio que use o PAM possui um arquivo no diretrio /etc/pam .d/. Cada arquivo neste diretrio tem o mesmo nome que o servio ao qual ele controla o acesso. O programa que usa o PAM responsvel por definir o seu nome de servio e instalar o seu prprio arquivo de configurao do PAM no diretrio /etc/pam .d/. Por exemplo, o programa login define o seu nome de servio como login e instala o arquivo de configurao do PAM /etc/pam .d/login . 2.4 .3. Formato do Arquivo de Configurao do PAM Cada arquivo de configurao do PAM contm um grupo de diretivas no seguinte formato:
<module interface> <control flag> <module name> <module arguments>

Cada um destes elementos ser explanado nas prximas sees. 2.4 .3.1. Interface de Mdulo Existem atualmente quatro tipos de interfaces de mdulo PAM. Cada uma destas corresponde a um aspecto diferente do processo de autorizao:

Red Hat Enterprise Linux 5 D eployment Guide

65

auth Esta interface de mdulo autentica usurios. Por exemplo, ela pede por uma senha e ento verifica a sua validade. Mdulos com essa interface tambm podem estabelecer credenciais, tais como a associao grupos, ou tickets do Kerberos. account Esta interface de mdulo verifica se o acesso permitido. Por exemplo, ela pode verificar se uma conta de usurio venceu ou se um usurio tem permisso para se autenticar durante um determinado perodo do dia. password Esta interface de mdulo usada para mudar as senhas dos usurios. session T his module interface configures and manages user sessions. Modules with this interface can also perform additional tasks that are needed to allow access, like mounting a user's home directory and making the user's mailbox available.

Nota
Um mdulo individual pode fornecer qualquer uma ou todas as interfaces de mdulo. Por exemplo, pam _unix.so fornece todas as quatro interfaces de mdulo. Em um arquivo de configurao do PAM, o campo da interface de mdulo o primeiro a ser definido. Por exemplo, uma linha tpica em uma configurao pode se parecer com o seguinte:
auth required pam_unix.so

T his instructs PAM to use the pam _unix.so module's auth interface. 2.4 .3.1.1. Agregando o Uso de Interfaces de Mdulo Module interface directives can be stacked, or placed upon one another, so that multiple modules are used together for one purpose. If a module's control flag uses the "sufficient" or "requisite" value (refer to Seo 2.4.3.2, Sinalizador de Controle for more information on these flags), then the order in which the modules are listed is important to the authentication process. A agregao permite que um administrador exija a existncia de certas condies antes de permitir que um usurio se autentique. Por exemplo, o comando reboot normalmente usa vrios mdulos agregados, o que pode ser verificado no seu arquivo de configurao do PAM:
[root@MyServer ~]# cat /etc/pam.d/reboot #%PAM-1.0 auth sufficient pam_rootok.so auth required pam_console.so #auth include system-auth account required pam_permit.so

A primeira linha apenas um comentrio e no processada. auth sufficient pam _rootok.so Esta linha usa o mdulo pam _rootok.so para determinar se o usurio atual o root, verificando se a UID do usurio 0. Se este teste for bem sucedido, nenhum outro mdulo consultado e o comando executado. Se este teste falhar, o prximo mdulo consultado. auth required pam _console.so Esta linha usa o mdulo pam _console.so para tentar autenticar o usurio. Se este usurio j estiver autenticado no console, o pam _console.so verifica se existe um arquivo no diretrio /etc/security/console.apps/ com o mesmo nome do servio em si (reboot). Se tal arquivo existir, a autenticao efetuada com sucesso e o controle passado ao prximo mdulo. #auth include system -auth Esta linha apenas um comentrio e no processada. account required pam _perm it.so Esta linha usa o mdulo pam _perm it.so para permitir que o usurio root ou qualquer um que esteja conectado ao console possa reinicializar o sistema.

66

Captulo 2. Assegurando sua Rede de Trabalho

2.4 .3.2. Sinalizador de Controle T odos os mdulos PAM geram um resultado de sucesso ou falha ao serem chamados. Sinalizadores de controle dizem ao PAM o que fazer com o resultado. Mdulos podem ser agregados em uma certa ordem, e os sinalizadores de controle determinam a importncia do sucesso ou da falha de um mdulo especfico em relao ao objetivo maior de efetuar a autenticao do usurio ao servio. Existem quatro sinalizadores de controle pr-definidos: required O resultado do mdulo deve ser bem sucedido para que a autenticao continue. Se o teste falhar esta altura, o usurio no notificado at que os resultados dos testes de todos os mdulos, que faam referncia quela interface, estejam completos. requisite O resultado do mdulo deve ser bem sucedido para que a autenticao continue. Entretanto, se um teste falhar esta altura, o usurio notificado imediatamente com uma mensagem refletindo o primeiro teste de mdulo required ou requisite que tenha falhado. sufficient O resultado do mdulo ignorado se falhar. Entretanto, se o resultado de um mdulo sinalizado como sufficient de sucesso e nenhum mdulo prvio sinalizado como required falhou, ento nenhum outro resultado necessrio e o usurio autenticado ao servidor. optional O resultado do mdulo ignorado. Um mdulo sinalizado como optional torna-se necessrio autenticao bem sucedida apenas quando nenhum outro mdulo faz referncia interface.

Importante
A ordem na qual mdulos required so chamados no crtica. Apenas os sinalizadores de controle sufficient e requisite fazem com que a ordem torne-se importante. Uma nova sintaxe para sinalizadores de controle que permite controle de maior preciso agora disponvel ao PAM. T he pam .d man page, and the PAM documentation, located in the /usr/share/doc/pam -<versionnumber>/ directory, where <version-number> is the version number for PAM on your system, describe this newer syntax in detail. 2.4 .3.3. Nome do Mdulo O nome do mdulo fornece ao PAM o nome do mdulo plugvel contendo a interface de mdulo especfica. Em verses mais antigas do Red Hat Enterprise Linux, o caminho completo para o mdulo era fornecido no arquivo de configurao do PAM. Entretanto, desde a chegada dos sistemas multilib, os quais armazenam mdulos PAM de 64 bits no diretrio /lib64 /security/, o nome do diretrio omitido porque o aplicativo vinculado verso certa do libpam , o qual capaz de encontrar a verso correta do mdulo. 2.4 .3.4 . Argumentos do Mdulo O PAM usa argumentos para passar informaes a um mdulo plugvel durante a autenticao para alguns mdulos. Por exemplo, o mdulo pam _userdb.so usa informaes armazenadas em um arquivo Berkeley DB para autenticar o usurio. O Berkeley DB um sistema banco de dados de cdigo aberto incorporado a vrios aplicativos. O mdulo leva um argumento db de forma que o Berkeley DB saiba qual banco de dados usar para o servio requisitado.

Red Hat Enterprise Linux 5 D eployment Guide

67

T he following is a typical pam _userdb.so line in a PAM configuration. T he <path-to-file> is the full path to the Berkeley DB database file:
auth required pam_userdb.so db=<path-to-file>

Argumentos invlidos so geralmente ignorados e no afetam de maneira nenhuma o sucesso ou a falha do mdulo PAM. Alguns mdulos, entretanto, podem falhar ao encontrarem argumentos invlidos. A maioria dos mdulos relatam erros no arquivo /var/log/secure . 2.4 .4 . Exemplos de Arquivos de Configurao do PAM Veja a seguir um exemplo de arquivo de configurao do PAM para um aplicativo:
#%PAM-1.0 auth required pam_securetty.so auth required pam_unix.so nullok auth required pam_nologin.so account required pam_unix.so password required pam_cracklib.so retry=3 password required pam_unix.so shadow nullok use_authtok session required pam_unix.so

A primeira linha um comentrio, conforme indicado pela cerquilha (# ) no incio da linha. As linhas 2 4 agregam trs mdulos para a autenticao do login. auth required pam _securetty.so Este mdulo garante que se o usurio est tentando se autenticar como root, o tty ao qual o usurio est tentando se autenticar, est listado no arquivo /etc/securetty, se tal arquivo existir. Se o tty no estiver listado no arquivo, qualquer tentativa de autenticao como root, ir falhar com uma mensagem Autenticao Incorreta . auth required pam _unix.so nullok Este mdulo solicita que o usurio fornea uma senha e ento verifica a senha, se ela existir, no /etc/shadow, usando a informao contida no /etc/passwd .. O argumento nullok faz com que o mdulo pam _unix.so permita uma senha nula. auth required pam _nologin.so Este o ltimo passo da autenticao, e verifica se o arquivo /etc/nologin existe. Se existir, e o usurio no for o root, a autenticao irfalhar.

Nota
Neste exemplo, todos os trs mdulos auth so verificados, mesmo se o primeiro mdulo auth falhe. Isto impede que o usurio fique sabendo em qual estgio a sua autenticao falhou. T al informao nas mos de um atacante pode permitir que ele deduza mais facilmente como violar a segurana do sistema. account required pam _unix.so Este mdulo executa quaisquer verificaes de conta necessrias. Por exemplo, se senhas shadow foram habilitadas, a interface account do mdulo pam _unix.so verifica se a conta venceu ou se o usurio no mudou sua senha dentro do perodo de carncia permitido. password required pam _cracklib.so retry=3 Se uma senha estiver vencida, o componente de senha do mdulo pam _cracklib.so solicita o fornecimento de uma nova senha. Logo aps, testa a nova senha para ver se a mesma pode ser facilmente determinada por um programa de quebra de senhas baseado em um dicionrio. O argumento retry=3 especifica que se o teste falhar na primeira vez, o usurio tem mais duas chances para criar uma senha mais robusta.

68

Captulo 2. Assegurando sua Rede de Trabalho

password required pam _unix.so shadow nullok use_authtok T his line specifies that if the program changes the user's password, it should use the password interface of the pam _unix.so module to do so. T he argument shadow instructs the module to create shadow passwords when updating a user's password. O argumento nullok faz com que o mdulo permita que o usurio mude a sua senha a partir de uma senha em branco, caso contrrio, uma senha em branco tratada como um bloqueio para a conta. O ltimo argumento desta linha , use_authtok, fornece um bom exemplo da importncia da ordem ao agregar mdulos PAM. Este argumento faz com que o mdulo no solicite que o usurio fornea uma nova senha. Ao invs disto, aceita qualquer senha que tenha sido registrada anteriormente por um mdulo de senha. Desta forma, todas as novas senhas devem passar o teste pam _cracklib.so para senhas seguras antes de serem aceitas. session required pam _unix.so A ltima linha faz com que a interface session do mdulo pam _unix.so gerencie a sesso. Este mdulo registra o nome de usurio e o tipo de servio em /var/log/secure no incio e no fim de cada sesso. Este mdulo pode ser suplementado com funcionalidades adicionais ao ser agregado a outros mdulos de sesso. 2.4 .5. Criando Mdulos PAM Voc pode criar ou adicionar novos mdulos PAM a qualquer momento para serem usados por aplicativos que utilizem o PAM. Por exemplo, um desenvolvedor pode criar um mtodo de criao de senhas de uso nico e escrever um mdulo PAM para suport-lo. Programas que usem o PAM podem usar o mdulo e mtodo de senha novos imediatamente, sem serem recompilados ou modificados de qualquer maneira. Isto permite que desenvolvedores e administradores de sistema usem e testem combinaes de mtodos de autenticao para programas diferentes sem precisar recompil-los. Documentation on writing modules is included in the /usr/share/doc/pam -<version-number>/ directory, where <version-number> is the version number for PAM on your system. 2.4 .6. O PAM e o Caching de Credenciais Administrativas Uma srie de ferramentas administrativas grficas do Red Hat Enterprise Linux permitem que usurios tenham privilgios elevados por at cinco minutos usando o mdulo pam _tim estam p.so . importante entender como este mecanismo funciona, uma vez que se um usurio abandona um terminal enquanto o pam _tim estam p.so estiver em funcionamento, deixa a mquina vulnervel manipulao por parte de qualquer um que tenha acesso fsico ao console. No esquema de carimbo de data e hora (timestamp) do PAM, a interface grfica do aplicativo administrativo solicita que o usurio fornea a senha do root ao ser lanado. Uma vez que o usurio tenha sido autenticado, o mdulo pam _tim estam p.so cria um arquivo de carimbo de data e hora. Por padro, este arquivo criado no diretrio /var/run/sudo/. Se o arquivo de carimbo de data e hora j existir, programas administrativos grficos no solicitam uma senha. Ao invs disto, o mdulo pam _tim estam p.so atualiza o arquivo de carimbo de data e hora, reservando mais cinco minutos de acesso administrativo inquestionvel ao usurio. You can verify the actual state of the timestamp file by inspecting the /var/run/sudo/<user> file. For the desktop, the relevant file is unknown:root. If it is present and its timestamp is less than five minutes old, the credentials are valid. A existncia do arquivo de carimbo de data e hora indicada atravs de um cone de autenticao, o qual aparece na rea de notificao do painel.

Red Hat Enterprise Linux 5 D eployment Guide

69

Figura 2.7. O cone de Autenticao

2.4 .6.1. Removendo o Arquivo de Carimbo de Data e Hora Antes de abandonar um console onde um carimbo de data e hora do PAM esteja ativo, recomendvel que o arquivo de carimbo de data e hora seja destrudo. Para fazer isto em um ambiente grfico, clique no cone de autenticao no painel. Isto faz com que uma caixa de dilogo aparea. Clique no boto Desistir da Autorizao para destruir o arquivo de carimbo de data e hora ativo.

Figura 2.8. Dilogo Cancelamento de Autenticao Note o seguinte em relao ao arquivo de carimbo de data e hora do PAM: Se voc estiver autenticado no sistema remotamente usando o ssh , use o comando /sbin/pam _tim estam p_check -k root para destruir o arquivo de carimbo de data e hora. Voc precisa executar o comando /sbin/pam _tim estam p_check -k root da mesma janela de terminal de onde o aplicativo com privilgios foi lanado. Voc deve estar autenticado como o usurio que originalmente invocou o mdulo pam _tim estam p.so para poder usar o comando /sbin/pam _tim estam p_check -k. No autentique-se como root para usar este comando. Se voc quiser terminar com as credencias na rea de trabalho (sem usar o boto Desistir da Autorizao ), use o seguinte comando:
/sbin/pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null

Se este comando no for executado, apenas as credenciais (se existirem) do pty onde voc rodar o comando sero removidas. Consulte a pgina man do pam _tim estam p_check para maiores informaes sobre a destruio de um arquivo de carimbo de data e hora usando o pam _tim estam p_check. 2.4 .6.2. Diretivas Comuns do pam_timestamp O mdulo pam _tim estam p.so aceita vrias diretivas. Veja a seguir as duas opes mais utilizadas: tim estam p_tim eout Especifica o perodo (em segundos) durante o qual o arquivo de carimbo de data e hora vlido. O valor padro 300 (cinco minutos). tim estam pdir Especifica o diretrio no qual o arquivo de carimbo de data e hora armazenado. O valor padro /var/run/sudo/. Refer to Seo 2.4.8.1, Documentao Instalada for more information about controlling the pam _tim estam p.so module. 2.4 .7. O PAM e a Propriedade de Dispositivos

70

Captulo 2. Assegurando sua Rede de Trabalho

No Red Hat Enterprise Linux, o primeiro usurio que se autenticar no console fsico da mquina pode manipular certos dispositivos e executar certas tarefas normalmente reservadas ao usurio root. Isto controlado por um mdulo PAM chamado pam _console.so . 2.4 .7.1. Propriedade de Dispositivos Quando um usurio se autentica em um sistema Red Hat Enterprise Linux, o mdulo pam _console.so invocado pelos programas login ou pelos programas grficos de autenticao, gdm, kdm, e xdm. Se este usurio for o primeiro a se autenticar no console fsico tambm chamado de usurio do console o mdulo d ao usurio a propriedade sobre uma gama de dispositivos normalmente de propriedade do root. O usurio do console torna-se o dono destes dispositivos at que a ltima sesso local para aquele usurio termine. Aps este usurio ter feito o logoff, a propriedade dos dispositivos reverte novamente para o usurio root. Os dispositivos afetados incluem, entre outros, placas de som, e drives de disquete e de CD-ROM. Esta facilidade permite que um usurio local manipule estes dispositivos sem obter acesso root, simplificando assim tarefas comuns para o usurio do console. Voc pode modificar a lista de dispositivos controlados pelo pam _console.so editando os seguintes arquivos: /etc/security/console.perm s /etc/security/console.perm s.d/50-default.perm s Voc pode mudar a permisso de dispositivos que no estejam listados nos arquivos acima, ou sobrescrever os padres especificados. Ao invs de modificar o arquivo 50-default.perm s, voc deve criar um novo arquivo (por exemplo, xx-nam e.perm s) e introduzir as modificaes necessrias. O nome do novo arquivo padro deve iniciar com um nmero maior do que 50 (por exemplo, 51default.perm s). Isto sobrescrever os valores padro no arquivo 50-default.perm s.

Ateno
If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at runlevel 5, it is advisable to change the <console> and <xconsole> directives in the /etc/security/console.perm s to the following values:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0 <xconsole>=:0\.[0-9] :0

Isto previne que usurios remotos ganhem acesso a dispositivos e aplicativos restritos na mquina. If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at any multiple user runlevel other than 5, it is advisable to remove the <xconsole> directive entirely and change the <console> directive to the following value:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*

2.4 .7.2. Acesso a Aplicativos O usurio do console tambm tem acesso a certos programas configurados no diretrio /etc/security/console.apps/.

Red Hat Enterprise Linux 5 D eployment Guide

71

Este diretrio contm arquivos de configurao que possibilitam que o usurio do console possa rodar certos aplicativos em /sbin e /usr/sbin . Estes arquivos de configurao tm o mesmo nome dos aplicativos que eles configuram. Um notvel grupo de aplicativos aos quais o usurio do console tem acesso so trs programas usados para desligar ou reinicializar o sistema: /sbin/halt /sbin/reboot /sbin/poweroff Uma vez que estes aplicativos usam o PAM, eles fazem com que uma chamada ao mdulo pam _console.so seja obrigatria para o seu uso. Refer to Seo 2.4.8.1, Documentao Instalada for more information. 2.4 .8. Recursos Adicionais Os seguintes recursos contm informaes adicionais sobre a utilizao do PAM. Alm destes recursos, leia os arquivos de configurao do PAM do sistema para entender melhor a maneira como so estruturados. 2.4 .8.1. Documentao Instalada Pginas man relacionadas ao PAM Existem vrias pginas man para os diversos aplicativos e arquivos de configurao envolvidos com o PAM. Veja a seguir uma lista contendo algumas das pginas man mais importantes. Arquivos de Configurao pam Boas informaes introdutrias sobre o PAM, incluindo a estrutura e a finalidade dos arquivos de configurao do PAM. Note que esta pgina man discute ambos tanto o /etc/pam .conf como arquivos de configurao individuais no diretrio /etc/pam .d/. Por padro, o Red Hat Enterprise Linux usa os arquivos de configurao individuais no diretrio /etc/pam .d/, ignorando o /etc/pam .conf , caso exista. pam _console Descreve a finalidade do mdulo pam _console.so , assim como a sintaxe adequada para uma entrada num arquivo de configurao do PAM. console.apps Descreve o formato e as opes disponveis para o arquivo de configurao /etc/security/console.apps, o qual define quais aplicativos so acessveis pelo usurio do console atribudo pelo PAM. console.perm s Descreve o formato e as opes disponveis par o arquivo de configurao /etc/security/console.perm s, o qual especifica as permisses do usurio do console atribudas pelo PAM. pam _tim estam p Descreve o mdulo pam _tim estam p.so . /usr/share/doc/pam -<version-number> Contains a System Administrators' Guide, a Module Writers' Manual, and the Application Developers' Manual, as well as a copy of the PAM standard, DCE-RFC 86.0, where <version-number> is the version number of PAM. /usr/share/doc/pam -<version-number>/txts/README.pam _tim estam p Contains information about the pam _tim estam p.so PAM module, where <version-number> is the version number of PAM. 2.4 .8.2. Sites teis

72

Captulo 2. Assegurando sua Rede de Trabalho

http://www.kernel.org/pub/linux/libs/pam/ O site de distribuio principal para o projeto Linux-PAM, contendo informaes sobre vrios mdulos PAM, uma FAQ, e documentaes adicionais do PAM.

Nota
A documentao do site acima aplica-se ao ltimo lanamento do PAM e pode no ser 100% precisa em relao verso do PAM includa no Red Hat Enterprise Linux.

2.5. TCP Wrappers e xinetd


Controlling access to network services is one of the most important security tasks facing a server administrator. Red Hat Enterprise Linux provides several tools for this purpose. For example, an iptables-based firewall filters out unwelcome network packets within the kernel's network stack. For network services that utilize it, TCP Wrappers add an additional layer of protection by defining which hosts are or are not allowed to connect to " wrapped" network services. One such wrapped network service is the xinetd super server. T his service is called a super server because it controls connections to a subset of network services and further refines access control. Figura 2.9, Controle de Acesso a Servios de Rede is a basic illustration of how these tools work together to protect network services.

Figura 2.9. Controle de Acesso a Servios de Rede

2.5.1. T CP Wrappers O pacote T CP Wrappers (tcp_wrappers) faz parte da instalao padro e oferece controle de de acesso a servios de rede baseado no host. O componente mais importante do pacote a biblioteca

Red Hat Enterprise Linux 5 D eployment Guide

73

/usr/lib/libwrap.a . Em termos gerais, um servio que use o T CP Wrappers um que foi compilado com vinculao biblioteca libwrap.a . When a connection attempt is made to a T CP-wrapped service, the service first references the host's access files (/etc/hosts.allow and /etc/hosts.deny) to determine whether or not the client is allowed to connect. In most cases, it then uses the syslog daemon (syslogd ) to write the name of the requesting client and the requested service to /var/log/secure or /var/log/m essages. Se um cliente tiver permisso para conectar, o T CP Wrappers passa o controle da conexo ao servio que fez o pedido e no participa mais na comunicao entre o cliente e o servidor. Alm de controle de acesso e registro, o T CP Wrappers pode executar comandos para interagir com o cliente antes de negar ou passar o controle da conexo ao servio de rede requisitado. Because T CP Wrappers are a valuable addition to any server administrator's arsenal of security tools, most network services within Red Hat Enterprise Linux are linked to the libwrap.a library. Some such applications include /usr/sbin/sshd , /usr/sbin/sendm ail , and /usr/sbin/xinetd .

Nota
Para determinar se um binrio de servio de rede est vinculado libwrap.a , digite o seguinte comando como usurio root.
ldd <binary-name> | grep libwrap

Replace <binary-name> with the name of the network service binary. Se o comando no retornar nenhuma sada, o servio de rede no est vinculado libwrap.a . O exemplo a seguir indica que o /usr/sbin/sshd est vinculado libwrap.a :
[root@myserver ~]# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00655000) [root@myserver ~]#

2.5.1.1. Vantagens do T CP Wrappers O T CP Wrappers oferece as seguintes vantagens em relao outras tcnicas de controle de servios de rede: Transparncia tanto para o cliente como para o servio de rede embrulhado O cliente que est conectando e o servio de rede embrulhado no esto cientes de que o T CP Wrappers est sendo usado. Usurios legtimos so autenticados e conectados ao servio requisitado, enquanto conexes a partir de clientes banidos falham. Gerenciamento centralizado de vrios protocolos O T CP Wrappers opera independentemente dos servios de rede que protege, permitindo que vrios aplicativos de servidor compartilhem um grupo comum de arquivos de configurao de controle de acesso, conseqentemente facilitando o gerenciamento. 2.5.2. Arquivos de Configurao do T CP Wrappers Para determinar se um cliente tem permisso para se conectar um servio, o T CP Wrappers consulta os dois arquivos seguintes, os quais so normalmente chamados de arquivos de acesso hosts: /etc/hosts.allow /etc/hosts.deny

74

Captulo 2. Assegurando sua Rede de Trabalho

Um servio que use o T CP Wrappers executa os seguintes passos ao receber um pedido de um cliente: 1. Consulta o /etc/hosts.allow. O servio usurio do T CP Wrappers analisa o arquivo /etc/hosts.allow seqencialmente e aplica a primeira regra especificada para aquele servio. Se encontra uma regra correspondente, permite a conexo. Caso contrrio, continua com o prximo passo. 2. Consulta o /etc/hosts.deny. O servio T CP Wrappers analisa o arquivo /etc/hosts.deny seqencialmente. Se encontra uma regra correspondente, nega a conexo. Caso contrrio, permite acesso ao servio. importante considerar os seguintes pontos importantes ao contemplar o uso do T CP Wrappers para proteger servios de rede: As regras de acesso em hosts.allow tem precedncia sobre as regras especificadas em hosts.deny porque elas so aplicadas primeiro. Conseqentemente, se o acesso a um servio for permitido em hosts.allow, uma regra negando o acesso aquele mesmo servio em hosts.deny ignorada. As regras de cada arquivo so lidas de cima para baixo, e a primeira regra correspondente a um servio a nica a ser aplicada. A ordem das regras extremamente importante. O acesso ao servio permitido se nenhuma regra para o servio for encontrada em qualquer um dos dois arquivos, ou se nenhum dos dois arquivos existir. Servios usurios do T CP Wrappers no fazem o cache das regras dos arquivos de acesso hosts, portanto quaisquer mudanas ao hosts.allow ou hosts.deny tem efeito imediato sem precisar reiniciar servios de rede.

Ateno
Se a ltima linha de um arquivo de acesso hosts no um caractere de mudana de linha (criado pela tecla Enter ), a ltima regra do arquivo falha e uma mensagem de erro registrada em /var/log/m essages ou /var/log/secure . Isto tambm aplica-se regras que usem mais de uma linha sem usar o caractere de barra invertida. O seguinte exemplo ilustra a parte relevante de uma mensagem de registro para a falha de uma regra devido a qualquer uma destas circunstncias.
warning: /etc/hosts.allow, line 20: missing newline or line too long

2.5.2.1. Formatando Regras de Acesso O formato do /etc/hosts.allow e do /etc/hosts.deny idntico. Cada regra deve ser especificada na sua prpria linha. Linhas em branco ou que comecem com uma cerquilha (#) so ignoradas. Cada regra usa o seguinte formato bsico para controlar o acesso aos servios de rede:
<daemon list>: <client list> [: <option>: <option>: ...]

<daemon list> A comma-separated list of process names (not service names) or the ALL wildcard. T he daemon list also accepts operators (refer to Seo 2.5.2.1.4, Operadores) to allow greater flexibility. <client list> A comma-separated list of hostnames, host IP addresses, special patterns, or wildcards which identify the hosts affected by the rule. T he client list also accepts operators listed in Seo 2.5.2.1.4, Operadores to allow greater flexibility.

Red Hat Enterprise Linux 5 D eployment Guide

75

<option> An optional action or colon-separated list of actions performed when the rule is triggered. Option fields support expansions, launch shell commands, allow or deny access, and alter logging behavior.

Nota
Mais informaes sobre os termos especficos discutidos acima podem ser encontradas neste guia nas seguintes localizaes: Seo Seo Seo Seo 2.5.2.1.1, Curingas 2.5.2.1.2, Padres 2.5.2.2.4, Expanses 2.5.2.2, Campos de Opo

Veja a seguir uma regra bsica de acesso a hosts:


vsftpd : .example.com

Esta regra faz com que o T CP Wrappers procure por conexes ao daemon do FT P (vsftpd ) a partir de qualquer host no domnio exam ple.com . Se esta regra aparece no hosts.allow, a conexo aceita. Se esta regra aparece no hosts.deny, a conexo rejeitada. A prxima regra de acesso a hosts mais complexa e usa dois campos de opo:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny

Note que cada campo de opo precedido pela barra invertida (\). O uso da barra invertida previne a falha da regra devido ao comprimento. T his sample rule states that if a connection to the SSH daemon (sshd ) is attempted from a host in the exam ple.com domain, execute the echo command to append the attempt to a special log file, and deny the connection. Because the optional deny directive is used, this line denies access even if it appears in the hosts.allow file. Refer to Seo 2.5.2.2, Campos de Opo for a more detailed look at available options. 2.5.2.1.1. Curingas Curingas permitem que o T CP Wrappers faa a correspondncia de grupos de daemons ou hosts mais facilmente. Eles so usados mais freqentemente no campo da lista de clientes de regras de acesso. Os seguintes curingas esto disponveis: ALL Corresponde a tudo. Pode ser usado tanto com a lista de daemons como com a lista de clientes. LOCAL Faz a correspondncia de qualquer host que no contenha um ponto (.), como, por exemplo, localhost. KNOWN Faz a correspondncia de qualquer host onde o nome e endereo do host ou o usurio so conhecidos. UNKNOWN Faz a correspondncia de qualquer host onde o nome ou endereo do host so desconhecidos, ou o usurio desconhecido. PARANOID Faz a correspondncia de qualquer host onde o nome de host no corresponde ao endereo do host.

76

Captulo 2. Assegurando sua Rede de Trabalho

Ateno
Os curingas KNOWN , UNKNOWN , e PARANOID devem ser usados com cuidado porque eles baseiam-se na operao correta de um servidor DNS para operar corretamente. Qualquer interrupo resoluo de nomes pode impedir que usurios legtimos ganhem acesso a um servio.

2.5.2.1.2. Padres Padres podem ser usados no campo de clientes de regras de acesso para especificar grupos de hosts clientes mais precisamente. Veja a seguir uma lista de padres normalmente usados no campo de clientes: Nome de host comeando com um ponto (.) Um ponto no comeo de um nome de host faz a correspondncia de todos os hosts compartilhando os componentes listados do nome. O seguinte exemplo aplica-se a qualquer host no domnio exam ple.com :
ALL : .example.com

Endereo IP terminando com um ponto (.) Um ponto no fim de um endereo IP faz a correspondncia de todos os hosts compartilhando os grupos numricos iniciais de um endereo IP. O seguinte exemplo aplica-se a qualquer host dentro da rede 192.168.x.x:
ALL : 192.168.

Um par endereo IP/mscara de rede Expresses de mscara de rede tambm podem ser usadas como um padro para controlar o acesso grupo especfico de endereos IP. O seguinte exemplo aplica-se a qualquer host num intervalo de endereo de 192.168.0.0 a 192.168.1.255 :
ALL : 192.168.0.0/255.255.254.0

Importante
As declaraes de endereo/comprimento de prefixo (prefixlen), (notao CIDR) no so suportadas no espao de endereos IPv4. Apenas regras IPv6 podem usar este formato. Um par [IPv6 address]/prefixlen Pares [net]/prefixlen tambm podem ser usados como um padro para controlar o acesso a um grupo especfico de endereos IPv6. O seguinte exemplo aplica-se a qualquer host num intervalo de endereo de 3ffe:505:2:1:: a 3ffe:505:2:1:ffff:ffff:ffff:ffff :
ALL : [3ffe:505:2:1::]/64

O asterisco (*) Asteriscos podem ser usados para a correspondncia de grupos inteiros de nomes de hosts ou endereos IP, sob a condio de que eles no sejam misturados em uma lista de clientes contendo outros tipos de padres. O seguinte exemplo aplica-se a qualquer host dentro do domnio exam ple.com :
ALL : *.example.com

A barra (/) Se uma lista de clientes comea com uma barra, tratada como um nome de arquivo. Isto til se for necessrio usar regras especificando um grande nmero de hosts. O seguinte

Red Hat Enterprise Linux 5 D eployment Guide

77

exemplo encaminha o T CP Wrappers ao arquivo /etc/telnet.hosts para todas as conexes T elnet:


in.telnetd : /etc/telnet.hosts

Outros padres menos usados tambm so aceitos pelo T CP Wrappers. Consulte a pgina man do hosts_access(5) para maiores informaes.

Ateno
T enha muito cuidado ao usar nomes de host e nomes de domnio. Atacantes podem usar uma variedade de truques para driblar a resoluo de nomes precisa. Alm disso, a interrupo ao servio de DNS previne que mesmo cliente autorizados possam usar servios de rede. Por estas razes, melhor usar endereos IP sempre que for possvel.

2.5.2.1.3. Portmap e o T CP Wrappers Portm ap 's implementation of T CP Wrappers does not support host look-ups, which means portm ap can not use hostnames to identify hosts. Consequently, access control rules for portmap in hosts.allow or hosts.deny must use IP addresses, or the keyword ALL, for specifying hosts. Mudanas s regras de controle de acesso do portm ap podem no entrar em vigor imediatamente. T alvez voc precise reiniciar o servio portm ap . Servios amplamente utilizados, como o NIS e o NFS, dependem do portm ap para operar. Portanto, esteja ciente destas limitaes. 2.5.2.1.4 . Operadores No momento, regras de controle de acesso aceitam um operador, EXCEPT . Este operador pode ser usado tanto na lista de daemons como na lista de clientes de uma regra. O operador EXCEPT permite excees especficas para correspondncias mais genricas na mesma regra. No seguinte exemplo de um arquivo hosts.allow, todos os hosts exam ple.com , exceto cracker.exam ple.com , tm permisso para se conectar a todos os servios:
ALL: .example.com EXCEPT cracker.example.com

Em outro exemplo de um arquivo hosts.allow, clientes da rede 192.168.0.x podem usar todos os servios, exceto o FT P:
ALL EXCEPT vsftpd: 192.168.0.

Nota
Em termos organizacionais, normalmente mais fcil evitar o uso de operadores EXCEPT . Isto permite que outros administradores inspecionem os arquivos apropriados para determinar quais hosts tem ou no permisso para acessar servios sem ter que lidar com operadores EXCEPT .

2.5.2.2. Campos de Opo

78

Captulo 2. Assegurando sua Rede de Trabalho

Alm das regras bsicas que permitem e negam acesso, a implementao do T CP Wrappers no Red Hat Enterprise Linux suporta extenses linguagem de controle de acesso atravs de campos de opo. O uso de campos de opo em regras de acesso de hosts permite que administradores de sistemas executem uma variedade de tarefas, como alterar o comportamento dos registros, consolidar o controle de acesso, e lanar comandos do shell. 2.5.2.2.1. Registros Campos de opo permitem que os administradores alterem com facilidade o alvo de registro e o nvel de prioridade de uma regra usando a diretiva severity. No exemplo a seguir, conexes ao daemon do SSH a partir de qualquer host no domnio exam ple.com so registradas no alvo padro authpriv syslog (uma vez que nenhum valor de alvo especificado) com prioridade em erg :
sshd : .example.com : severity emerg

T ambm possvel especificar um alvo usando a opo severity. O seguinte exemplo registra qualquer tentativa de conexo SSH a partir de hosts no domnio exam ple.com no alvo local0 com prioridade alert:
sshd : .example.com : severity local0.alert

Nota
Na prtica, este exemplo no funciona at que o daemon syslog syslogd ) seja configurado para registrar no alvo local0 . Consulte a pgina man syslog.conf para informaes sobre configurao de alvos de registro personalizados.

2.5.2.2.2. Controle de Acesso Campos de opo tambm permitem que administradores permitam ou neguem hosts explicitamente em uma nica regra atravs da adio das diretivas allow ou deny como opo final. Por exemplo, as duas regras seguintes permitem conexes SSH a partir de client-1.exam ple.com , mas negam conexes a partir de client-2.exam ple.com :
sshd : client-1.example.com : allow sshd : client-2.example.com : deny

Ao possibilitar o controle de acesso regra por regra, o campo de opo permite que administradores consolidem todas as regras de acesso em um nico arquivo: ou hosts.allow ou hosts.deny. Alguns administradores consideram isto uma maneira mais fcil de organizar regras de acesso. 2.5.2.2.3. Comandos do Shell Campos de opo permitem que regras de acesso lancem comandos do shell atravs das seguintes duas diretivas: spawn Lana um comando do shell como um processo filho. Esta diretiva pode executar tarefas como usar o /usr/sbin/safe_finger para obter mais informaes sobre o cliente fazendo o pedido ou criar arquivos de registro especiais usando o comando echo . No seguinte exemplo, clientes tentando acessar servios T elnet a partir do domnio exam ple.com so silenciosamente registrados em um arquivo especial:

Red Hat Enterprise Linux 5 D eployment Guide

79

in.telnetd : .example.com \ : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \ : allow

twist Replaces the requested service with the specified command. T his directive is often used to set up traps for intruders (also called "honey pots"). It can also be used to send messages to connecting clients. T he twist directive must occur at the end of the rule line. No exemplo a seguir, clientes tentando acessar servios de FT P a partir do domnio exam ple.com recebem mensagens criadas com o comando echo :
vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"

Para maiores informaes sobre opes de comandos do shell, consulte a pgina man hosts_options. 2.5.2.2.4 . Expanses Expanses. quando usadas com as diretivas spawn e twist, oferecem informaes sobre o cliente, o servidor, e os processos envolvidos. A lista a seguir apresenta as expanses suportadas: %a Returns the client's IP address. %A Returns the server's IP address. %c Retorna uma variedade de informaes sobre clientes, como o nome de usurio e o nome de host, ou o nome de usurio e o endereo IP. %d Retorna o nome do processo do daemon. %h Returns the client's hostname (or IP address, if the hostname is unavailable). %H Returns the server's hostname (or IP address, if the hostname is unavailable). %n Returns the client's hostname. If unavailable, unknown is printed. If the client's hostname and host address do not match, paranoid is printed. %N Returns the server's hostname. If unavailable, unknown is printed. If the server's hostname and host address do not match, paranoid is printed. %p Returns the daemon's process ID. %s Retorna vrios tipos de informaes sobre o servidor, como o processo do daemon e o host ou endereo IP do servidor. %u Returns the client's username. If unavailable, unknown is printed. No exemplo a seguir, a regra usa uma expanso junto com o comando spawn para identificar o host cliente em um arquivo personalizado. Quando conexes ao daemon do SSH (sshd ) so tentadas a partir de um host no domnio exam ple.com , o comando echo executado para registrar a tentativa, incluindo o nome de host (obtido atravs do uso da expanso %h ), em um arquivo especial:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \ : deny

De maneira semelhante, expanses podem ser usadas para personalizar mensagens enviadas de volta ao cliente. No exemplo seguinte, clientes que estejam tentando acessar servios de FT P a partir do domnio exam ple.com so informados que eles foram banidos do servidor.

80

Captulo 2. Assegurando sua Rede de Trabalho

vsftpd : .example.com \ : twist /bin/echo "421 %h has been banned from this server!"

Para uma explicao completa sobre todos as expanses disponveis, bem como opes adicionais de controle de acesso, consulte a seo 5 das pginas man do hosts_access (m an 5 hosts_access) e a pgina man do hosts_options. Refer to Seo 2.5.5, Recursos Adicionais for more information about T CP Wrappers. 2.5.3. xinetd O daemon xinetd um super servio usurio do T CP Wrappers que controla o acesso a um subconjunto de servios de rede populares, incluindo o FT P, o IMAP, e o T elnet. O xinetd tambm oferece opes de configurao especficas a servios para o controle de acesso, registro aprimorado, vinculao, redirecionamento, e controle de utilizao de recursos. Quando um cliente tenta conectar a um servio de rede controlado pelo xinetd , o super servio recebe o pedido e verifica a existncia de quaisquer regras de controle de acesso do T CP Wrappers . Se o acesso permitido, o xinetd verifica se a conexo permitida sob as suas prprias regras de acesso para o servio em questo. O xinetd tambm verifica se o servio pode ter mais recursos alocados e certifica-se de que o servio no est violando nenhuma regra definida. Se todas estas condies forem satisfeitas (ou seja, o acesso permitido ao servio, o servio no atingiu seus limites de recursos, e o servio no est violando nenhuma regra definida), o xinetd ento inicia uma instncia do servio e passa o controle da conexo para o mesmo. Aps a conexo ter sido estabelecida, o xinetd no participa mais da comunicao entre o cliente e o servidor. 2.5.4 . Arquivos de Configurao do xinetd Os arquivos de configurao do xinetd so os seguintes: /etc/xinetd.conf O arquivo de configurao global do xinetd . /etc/xinetd.d/ O diretrio contendo todos os arquivos de servios especficos. 2.5.4 .1. O arquivo /etc/xinetd.conf T he /etc/xinetd.conf file contains general configuration settings which affect every service under xinetd 's control. It is read when the xinetd service is first started, so for configuration changes to take effect, you need to restart the xinetd service. T he following is a sample /etc/xinetd.conf file:
defaults { instances log_type log_on_success log_on_failure cps } includedir /etc/xinetd.d = = = = = 60 SYSLOG authpriv HOST PID HOST 25 30

Estas linhas controlam os seguintes aspectos do xinetd : instances Especifica o nmero mximo de pedidos simultneos que o xinetd pode processar. log_type Configura xinetd para que use o alvo de registro authpriv, o qual escreve entradas de registro no arquivo /var/log/secure . A incluso de uma diretiva como FILE /var/log/xinetdlog criaria um arquivo de registro personalizado chamado xinetdlog no

Red Hat Enterprise Linux 5 D eployment Guide

81

diretrio /var/log/. log_on_success Configures xinetd to log successful connection attempts. By default, the remote host's IP address and the process ID of the server processing the request are recorded. log_on_failure Configura o xinetd para que registre tentativas de conexo mal-sucedidas ou recusadas. cps Configura o xinetd para que permita no mais do que 25 por segundo para qualquer servio. Se este limite for excedido, o servio aposentado por 30 seconds. includedir /etc/xinetd.d/ Includes options declared in the service-specific configuration files located in the /etc/xinetd.d/ directory. Refer to Seo 2.5.4.2, O Diretrio /etc/xinetd.d/ for more information.

Nota
Often, both the log_on_success and log_on_failure settings in /etc/xinetd.conf are further modified in the service-specific configuration files. More information may therefore appear in a given service's log file than the /etc/xinetd.conf file may indicate. Refer to Seo 2.5.4.3.1, Opes de Registro for further information.

2.5.4 .2. O Diretrio /etc/xinetd.d/ O diretrio /etc/xinetd.d/ contm os arquivos de configurao para cada servio gerenciado pelo xinetd , e os nomes dos arquivos relacionados ao servio. Assim como o xinetd.conf , este diretrio lido apenas quando o servio xinetd iniciado. Para que quaisquer alteraes sejam efetivadas, o administrador deve reiniciar o servio xinetd . O formato dos arquivos no diretrio /etc/xinetd.d/ usa a mesma conveno do que o /etc/xinetd.conf . A razo principal pela qual a configurao de cada servio armazenada em uma arquivo separado para facilitar a personalizao e reduzir o risco de interferncia na configurao de outros servios. Para entender como estes arquivos so estruturados, considere o arquivo /etc/xinetd.d/krb5telnet:
service telnet { flags socket_type wait user server log_on_failure disable }

= REUSE = stream = no = root = /usr/kerberos/sbin/telnetd += USERID = yes

Estas linhas controlam vrios aspectos do servio telnet: service Especifica o nome do servio, normalmente um dos nomes listados no arquivo /etc/services. flags Estabelece uma srie de atributos para a conexo. O REUSE informa ao xinetd para reutilizar o soquete para uma conexo T elnet.

82

Captulo 2. Assegurando sua Rede de Trabalho

Nota
O sinalizador REUSE obsoleto, uma vez que todos os servios agora o usam implicitamente.. socket_type Estabelece o tipo de soquete de rede para stream . wait Especfica se o servio single-thread (yes) ou multi-thread (no ). user Especifica o ID do usurio sob o qual o processo est rodando. server Especifica qual executvel binrio deve ser lanado. log_on_failure Especifica os parmetros de registro para log_on_failure alm daquela j definidos em xinetd.conf . disable Especifica se o servio est desabilitado (yes) ou habilitado (no ). Consulte a pgina man do xinetd.conf para mais informaes sobre o uso destas opes. 2.5.4 .3. Alterando os Arquivos de Configurao do xinetd Uma srie de diretivas est disponvel para os servios protegidos pelo xinetd . Esta seo destaca algumas das opes mais usadas. 2.5.4 .3.1. Opes de Registro As seguintes opes de registro esto disponveis para o /etc/xinetd.conf e para os arquivos de configurao de servio especficos no diretrio /etc/xinetd.d/. Veja a seguir a lista de algumas das opes de registro mais usadas: AT T EMPT Registra o fato de que uma tentativa mal-sucedida foi feita (log_on_failure ). DURAT ION Registra a durao do uso do servio usado por um sistema remoto (log_on_success). EXIT Registra o estado de sada ou sinal de trmino do servio (log_on_success). HOST Logs the remote host's IP address (log_on_failure and log_on_success). PID Registra o ID do processo do servidor recebendo o pedido (log_on_success). USERID Registra o usurio remoto usando o mtodo definido no RFC 1413 para servios multithread de fluxo (log_on_failure andlog_on_success). Para uma lista completa de opes de registro, consulte a pgina man do xinetd.conf . 2.5.4 .3.2. Opes de Controle de Acesso Users of xinetd services can choose to use the T CP Wrappers hosts access rules, provide access control via the xinetd configuration files, or a mixture of both. Refer to Seo 2.5.2, Arquivos de Configurao do T CP Wrappers for more information about T CP Wrappers hosts access control files. Esta seo discute o uso do xinetd para controlar o acesso a servios.

Red Hat Enterprise Linux 5 D eployment Guide

83

Nota
Ao contrrio do T CP Wrappers, mudanas ao controle de acesso entram em vigor apenas se o administrador do xinetd reiniciar o servio. Alm disso, ao contrrio do T CP Wrappers, controle de acesso atravs do xinetd afeta apenas os servios controlados pelo xinetd . T he xinetd hosts access control differs from the method used by T CP Wrappers. While T CP Wrappers places all of the access configuration within two files, /etc/hosts.allow and /etc/hosts.deny, xinetd 's access control is found in each service's configuration file in the /etc/xinetd.d/ directory. As seguintes opes de acesso a hosts so suportadas pelo xinetd : only_from Permite que apenas os hosts especificados usem o servio. no_access No permite que os hosts listados usem o servio access_tim es Especifica o intervalo de tempo durante o qual um determinado servio pode ser usado. O intervalo de tempo deve ser especificado no formato 24 horas, HH:MM-HH:MM. As opes only_from e no_access podem usar uma lista de endereos IP ou nomes de host, ou podem especificar um rede inteira. Assim como o T CP Wrappers, a combinao do controle de acesso atravs do xinetd com a configurao aprimorada de registros pode aumentar a segurana atravs do bloqueio de pedidos a partir de hosts e do registro detalhado de cada tentativa de conexo. Por exemplo, o seguinte arquivo /etc/xinetd.d/telnet pode ser usado para bloquear acesso ao T elnet a partir de um determinado grupo de rede e para restringir o intervalo de tempo total que at mesmo usurios com permisso podem permanecer conectados:
service telnet { disable flags socket_type wait user server log_on_failure no_access log_on_success access_times }

= no = REUSE = stream = no = root = /usr/kerberos/sbin/telnetd += USERID = 172.16.45.0/24 += PID HOST EXIT = 09:45-16:15

Neste exemplo, quando um sistema cliente da rede 10.0.1.0/24 , como 10.0.1.2 tenta o acesso ao servio T elnet, recebe a seguinte mensagem:
Connection closed by foreign host.

Alm disso, as tentativas de autenticao do cliente so registradas no /var/log/m essages da seguinte maneira:
Sep 7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)

Ao usar o T CP Wrappers junto com os controles de acesso do xinetd , importante entender a

84

Captulo 2. Assegurando sua Rede de Trabalho

relao entre os dois mecanismos de controle de acesso. Veja a seguir a seqncia de eventos seguida pelo xinetd quando um cliente solicita uma conexo: 1. O daemon xinetd acessa as regras de acesso a hosts o T CP Wrappers usando uma chamada da biblioteca libwrap.a . Se uma regra de negao (deny rule) corresponde ao cliente, a conexo abandonada. Se um regra de permisso (allow rule) corresponde ao cliente, a conexo passada para o xinetd . 2. O daemon xinetd verifica as suas prprias regras de controle de acesso tanto para o servio xinetd como para o servio requisitado. Se uma regra de negao corresponder ao cliente, a conexo abandonada. Caso contrrio, o xinetd inicia uma instncia do servio requisitado e passa o controle da conexo para aquele servio.

Importante
Deve-se tomar cuidado ao usar os controles de acesso do T CP Wrappers junto com os controles de acesso do xinetd . A m configurao pode causar efeitos indesejveis.

2.5.4 .3.3. Opes de Vinculao e Redirecionamento Os arquivos de configurao de servios para o xinetd oferecem suporte vinculao do servio a um endereo IP e o redirecionamento de pedidos de entrada para aquele servio para outro endereo IP, nome de host, ou porta. A vinculao controlada com a opo bind nos arquivos de configurao de servio especficos e liga o servio a um endereo IP no sistema. Quando configurado, a opo bind permite apenas que pedidos ao endereo IP correto acessem o servio. Voc pode usar este mtodo para vincular vrios servios vrias interfaces de rede conforme for necessrio. Isto especialmente til para sistemas com vrios adaptadores de rede ou com vrios endereos IP. Em tais sistemas, servios inseguros (por exemplo, o T elnet), podem ser configurados para que escutem somente na interface conectada rede privativa e no na interface conectada Internet. A opo redirect aceita um endereo IP ou nome de host seguido por um nmero de porta. A opo configura o servio para que redirecione quaisquer pedidos por este servio para host e nmero de porta especificados. Esta funcionalidade pode ser usada para fazer o redirecionamento para outra porta no sistema, para redirecionar o pedido para um endereo IP diferente na mesma mquina, mandar o pedido para um sistema e um nmero de porta totalmente diferentes, ou qualquer combinao destas opes. Um usurio que esteja conectando a um sistema pode portanto ser redirecionado para outro sistema sem interrupo. O daemon xinetd pode realizar este redirecionamento atravs da gerao de um processo que mantm-se vivo por toda a durao da conexo entre a mquina cliente que fez o pedido e o host oferecendo o servio, transferindo dados entre os dois sistemas. As vantagens das opes bind e redirect so mais evidentes quando usadas ao mesmo tempo. Ao vincular um servio a um endereo IP especfico em um sistema, e ento redirecionar pedidos por este servio para uma segunda mquina que apenas a primeira mquina saiba que exista, um sistema interno pode ser usado para oferecer servios para uma rede totalmente diferente. Alternativamente, estas opes podem ser usadas para limitar a exposio de um servio especfico em uma mquina com diversas bases a um endereo IP conhecido, bem como para redirecionar quaisquer pedidos por aquele servio para outra mquina configurada especialmente para esta finalidade. Por exemplo, considere um sistema que seja usado como um firewall com esta configurao para o servio T elnet:

Red Hat Enterprise Linux 5 D eployment Guide

85

service telnet { socket_type = stream wait = no server = /usr/kerberos/sbin/telnetd log_on_success += DURATION USERID log_on_failure += USERID bind = 123.123.123.123 redirect = 10.0.1.13 23 }

As opes bind e redirect neste arquivo garantem que o servio T elnet na mquina vinculado ao endereo IP externo (123.123.123.123 ), o qual faz a interface com a Internet. Alm disso, quaisquer pedidos por servios T elnet enviados ao 123.123.123.123 so redirecionados atravs de um segundo adaptador de rede para um endereo IP interno (10.0.1.13 ) que apenas o firewall e sistemas internos podem acessar. O firewall ento envia a conexo entre os dois sistemas, e o sistema que est se conectando pensa que est conectado ao 123.123.123.123 , quando na verdade est conectado uma mquina diferente. Esta funcionalidade til especialmente para usurios com conexes de banda larga mas somente um endereo IP fixo. Ao usar a Converso de Endereos de Rede (Network Address T ranslation - NAT ), os sistemas atrs do firewall, os quais esto usando endereos IP de uso apenas interno, no ficam disponveis no exterior do sistema de gateway. Entretanto, quando certos servios controlados pelo xinetd so configurados com as opes bind e redirect, o gateway pode fazer o papel de proxy entre sistemas externos e uma mquina interna especfica configurada para oferecer o servio. Alm disso, as vrias opes de controle de acesso e registro do xinetd tambm esto disponveis para proteo adicional. 2.5.4 .3.4 . Opes de Gerenciamento de Recursos O daemon xinetd pode adicionar um nvel de proteo bsico contra ataques de Negao de Servio (Denial of Service - DoS). Veja a seguir uma lista de diretivas que podem ajudar a limitar a efetividade de tais ataques: per_source Define o nmero mximo de instncias para um servio por endereo IP fonte. Aceita apenas valores inteiros como argumento e pode ser usado tanto no xinetd.conf como nos arquivos de configurao de servio especficos no diretrio xinetd.d/. cps Define o nmero mximo de conexes por segundo. esta diretiva usa dois argumentos (valores inteiros), separados por um espao. O primeiro argumento o nmero mximo de conexes por segundo permitidas ao servio. O segundo argumento o nmero de segundos que o xinetd deve deixar passar antes de reabilitar o servio. A diretiva aceita apenas valores inteiros como argumento, e pode ser usada tanto no arquivo xinetd.conf como nos arquivos de configurao de servio especficos no diretrio xinetd.d/. m ax_load Define o uso da CPU ou o limiar de carga mdia para um servio. A diretiva aceita um nmero de ponto flutuante como argumento. A carga mdia uma medida aproximada de quantos processos esto ativos em um determinado momento. Consulte as pginas man dos comandos uptim e , who , e procinfo para mais informaes sobre a carga mdia (load average). Existem ainda mais opes de gerenciamento de recursos disponveis ao xinetd . Consulte a pgina man do xinetd.conf para mais informaes. 2.5.5. Recursos Adicionais Mais informaes sobre o T CP Wrappers e o xinetd esto disponveis na documentao do sistema e na Internet.

86

Captulo 2. Assegurando sua Rede de Trabalho

2.5.5.1. Documentao Instalada A documentao do seu sistema um bom lugar para comear a procurar por opes de configurao adicionais para o T CP Wrappers, xinetd , xinetd , controle de acesso. /usr/share/doc/tcp_wrappers-<version>/ T his directory contains a README file that discusses how T CP Wrappers work and the various hostname and host address spoofing risks that exist. /usr/share/doc/xinetd-<version>/ T his directory contains a README file that discusses aspects of access control and a sam ple.conf file with various ideas for modifying service-specific configuration files in the /etc/xinetd.d/ directory. Pginas man relacionadas ao T CP Wrappers e ao xinetd Uma srie de pginas man existem para os vrios aplicativos e arquivos de configurao relacionados ao T CP Wrappers e ao xinetd . Veja a seguir algumas das pginas man mais importantes: Aplicaes de Servidor m an xinetd A pgina man para o xinetd . Arquivos de Configurao m an 5 hosts_access A pgina man dos arquivos de controle de acesso hosts do T CP Wrappers. m an hosts_options A pgina man para os campos de opes do T CP Wrappers. m an xinetd.conf A pgina man com a listagem das opes de configurao do xinetd .

2.5.5.2. Sites teis http://www.xinetd.org/ O lar do xinetd , contendo amostras de arquivos de configurao, uma lista completa de funcionalidades, e uma FAQ bem til. http://www.macsecurity.org/resources/xinetd/tutorial.shtml Um tutorial minucioso que discute vrias formas diferentes sobre como otimizar os arquivos de configurao do xinetd para atingir metas de segurana especficas. 2.5.5.3. Livros Relacionados Hacking Linux Exposed por Brian Hatch, James Lee, e George Kurtz; Osbourne/McGraw-Hill Um excelente recurso de segurana com informaes sobre o T CP Wrappers e o xinetd .

2.6. Kerberos
A segurana e a integridade de sistemas dentro de uma rede podem ser difceis de administrar. Acompanhar os servios sendo executados em uma rede, assim como a maneira como os mesmos estejam sendo usados pode ocupar o tempo de vrios administradores. Alm disso, a autenticao de usurios a servios de rede pode representar um perigo quando o mtodo usado pelo protocolo inerentemente inseguro, conforme evidenciado pela transferncia de senhas no criptografadas atravs de uma rede usando os protocolos FT P ou T elnet. O Kerberos uma maneira de eliminar a necessidade de usar protocolos que permitam mtodos de autenticao inseguros, melhorando assim a segurana geral da rede. 2.6.1. O que o Kerberos? O Kerberos um protocolo de autenticao de rede criado pelo MIT , que utiliza criptografia de chave

Red Hat Enterprise Linux 5 D eployment Guide

87

simtrica [5 ] para autenticar usurios a servios de rede, o que significa que as senhas em si nunca so enviadas atravs da rede. Conseqentemente, quando usurios se autenticam em servios de rede usando o Kerberos, os usurios no autorizados, que esto tentando obter senhas atravs da monitorao do trfego de rede, so impedidos de forma efetiva. 2.6.1.1. Vantagens do Kerberos A maioria dos servios de rede convencionais usa esquemas de autenticao de senhas. Estes esquemas requerem que o usurio se autentique em uma rede fornecendo seu nome de usurio e senha. Infelizmente, o envio de informaes de autenticao para diversos servios, realizado sem criptografia. Para que um esquema destes seja seguro, a rede deve estar inacessvel para pessoas de fora, assim como todos os computadores e usurios da rede devem ser confiveis. Mesmo se este for o caso, uma vez que a rede est conectada Internet, no pode mais ser considerada segura. Qualquer atacante que obtiver acesso rede pode usar um simples analisador de pacotes (tambm conhecido como 'packet sniffer') para interceptar nomes de usurios e senhas enviados desta maneira, assim comprometendo as contas de usurios e a integridade de toda a infraestrutura de segurana. O objetivo principal do design do Kerberos a eliminao da transmisso de senhas no criptografadas atravs da rede. Se for usado adequadamente, o Kerberos elimina efetivamente a ameaa que programas tipo packet sniffers representariam rede caso o Kerberos no fosse usado. 2.6.1.2. Desvantagens do Kerberos Apesar do Kerberos eliminar uma ameaa severa e comum, pode ser de difcil implementao devido uma gama de motivos: Migrar senhas de usurio de um banco de dados UNIX padro, como o /etc/passwd ou o /etc/shadow, para um banco de dados de senhas Kerberos pode ser entediante, pois no h um mecanismo automatizado para executar esta tarefa. Para mais informaes, consulte a Questo 2.23 no FAQ online do Kerberos: http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html Kerberos has only partial compatibility with the Pluggable Authentication Modules (PAM) system used by most Red Hat Enterprise Linux servers. Refer to Seo 2.6.4, Kerberos e PAM for more information about this issue. O Kerberos presume que cada usurio confivel e est usando uma mquina no confivel em uma rede no confivel. Seu objetivo principal evitar que senhas no criptografadas sejam enviadas pela rede. No entanto, se algum alm do usurio legtimo tiver acesso mquina que emite tickets usados para autenticao chamada de centro de distribuio de chave (KDC) o sistema de autenticao inteiro do Kerberos estar em risco. Para que um aplicativo use o Kerberos, sua fonte deve ser alterada para fazer as chamadas apropriadas s bibliotecas do Kerberos. Os aplicativos modificados desta maneira so considerados kerberizados. Para alguns aplicativos, isto pode ser bastante problemtico devido ao tamanho ou design do aplicativo. Para outros aplicativos incompatveis, as alteraes devem ser feitas na maneira como o lado servidor e cliente se comunicam. Vale frisar que isto pode requerer uma programao extensiva. Aplicativos de cdigo fechado que no tm suporte ao Kerberos por padro so geralmente os mais problemticos. O Kerberos uma soluo 'tudo ou nada'. Se ele for utilizado na rede, quaisquer senhas no criptografadas transferidas a um servio no-kerberizado esto em risco. Portanto, a rede no se beneficia do uso do Kerberos. Para proteger uma rede com o Kerberos, deve-se utilizar verses kerberizadas de todos os aplicativos cliente/servidor que enviam senhas no criptografadas ou no usar nenhum aplicativo do tipo cliente/servidor.

88

Captulo 2. Assegurando sua Rede de Trabalho

2.6.2. T erminologia do Kerberos O Kerberos tem sua prpria terminologia para definir os diversos aspectos do servio. Antes de aprender como o Kerberos funciona, importante aprender os seguintes termos. servidor de autenticaes - (AS) Um servidor que emite os tickets para um servio desejado, que por sua vez so dados para usurios acessarem o servio. O AS responde aos pedidos de clientes que no tm ou no enviam as credenciais com um pedido. usado geralmente para obter acesso ao servio Servidor de Concesso de T icket (T icket-Granting Server), ou simplesmente T GS, emitindo um T icket de Concesso de T ickets (T icket-Granting T icket), ou T GT . O AS geralmente roda no mesmo host que o Centro de Distribuio de Chaves (Key Distribution Center), ou KDC. texto criptografado (ciphertext) Dados criptografados. cliente Uma entidade na rede (um usurio, uma mquina ou um aplicativo) que pode receber um ticket do Kerberos. credenciais Um conjunto temporrio de credenciais eletrnicas que verificam a identidade de um cliente para um determinado servio. T ambm chamadas de tickets. cache das credenciais ou arquivo de tickets Um arquivo que contm as chaves para criptografar as comunicaes entre um usurio e vrios servios de rede. O Kerberos 5 suporta uma estrutura de trabalho para usar outros tipos de cache, como memria compartilhada, mas os arquivos so melhor suportados. crypt hash Um hash de mo nica usado para autenticar usurios. Estes so mais seguros do que usar dados no criptografados, mas para um cracker experiente eles ainda so relativamente fceis de decifrar. (AS) GSS-API 'T he Generic Security Service Application Program Interface' (definida na RFC-2743 publicada pela T he Internet Engineering T ask Force) um conjunto de funes, que oferece servios de segurana usados por clientes para se autenticarem nos servios. Esta API tambm usada pelos clientes e servios para autenticao mtua sem a necessidade de que os mesmos tenham conhecimento especfico sobre o mecanismo subjacente de cada um. Se um servio de rede (como o cyrus-IMAP) usa a GSS-API, o mesmo pode autenticar usando o Kerberos. hash T ambm chamado de valor de hash. Um valor gerado passando uma faixa por uma funo de hash. Estes valores so tipicamente usados para garantir que os dados transmitidos no tenham sido adulterados.

Red Hat Enterprise Linux 5 D eployment Guide

89

funo de hash A way of generating a digital "fingerprint" from input data. T hese functions rearrange, transpose or otherwise alter data to produce a hash value. key Informao usada ao criptografar ou descriptografar outros dados. Dados criptografados no podem ser descriptografados sem a chave apropriada ou atravs de muita sorte por parte do cracker. centro de distribuio de chave (KDC) Um servio que emite tickets do Kerberos e geralmente roda no mesmo host que o servidor de concesso de ticket (T GS). keytab (ou keytable) Um arquivo que contm uma lista no criptografada de principais e suas chaves. Servidores obtm as chaves necessrias dos arquivos keytab ao invs de usar o kinit. O arquivo keytab padro o /etc/krb5.keytab . O servidor de administrao do KDC, /usr/kerberos/sbin/kadm ind , o nico servio que usa qualquer outro arquivo (usa o /var/kerberos/krb5kdc/kadm 5.keytab ). kinit O comando kinit permite que um principal que j tenha se conectado obtenha o ticket de concesso de ticket (T GT ) inicial e armazene-o no cache. Para mais informaes sobre o uso do comando kinit, consulte sua pgina man. principal (ou nome do principal) T he principal is the unique name of a user or service allowed to authenticate using Kerberos. A principal follows the form root[/instance]@ REALM . For a typical user, the root is the same as their login ID. T he instance is optional. If the principal has an instance, it is separated from the root with a forward slash ("/"). An empty string ("") is considered a valid instance (which differs from the default NULL instance), but using it can be confusing. All principals in a realm have their own key, which for users is derived from a password or is randomly set for services. territrio (realm) Uma rede que usa o Kerberos, composta de um ou mais servidores - chamados KDCs - e um nmero potencialmente grande de clientes. servio Um programa acessado atravs da rede. ticket Um conjunto temporrio de credenciais eletrnicas que verificam a identidade de um cliente para um determinado servio. T ambm chamado de credenciais.

90

Captulo 2. Assegurando sua Rede de Trabalho

servidor de concesso de ticket (T GS) Um servidor que emite tickets para um servio desejado, que por sua vez so dados aos usurios para acessarem um servio. O T GS geralmente roda na mesma mquina que o KDC. ticket de concesso de ticket (T GT ) Um ticket especial que permite ao cliente obter tickets adicionais sem requisit-los pelo KDC. senha no criptografada Uma senha em formato de texto simples, legvel.

2.6.3. Como o Kerberos Funciona Kerberos differs from username/password authentication methods. Instead of authenticating each user to each network service, Kerberos uses symmetric encryption and a trusted third party (a KDC), to authenticate users to a suite of network services. When a user authenticates to the KDC, the KDC sends a ticket specific to that session back to the user's machine, and any Kerberos-aware services look for the ticket on the user's machine rather than requiring the user to authenticate using a password. Quando um usurio de uma rede kerberizada se autentica em sua estao de trabalho, seu principal enviado ao KDC como parte de um pedido de T GT ao Servidor de Autenticao (AS). Este pedido pode ser enviado pelo programa de login, sendo assim transparente para o usurio, ou pode ser enviado pelo programa kinit aps o usurio se logar. T he KDC then checks for the principal in its database. If the principal is found, the KDC creates a T GT , which is encrypted using the user's key and returned to that user. T he login or kinit program on the client then decrypts the T GT using the user's key, which it computes from the user's password. T he user's key is used only on the client machine and is not transmitted over the network. T he T GT is set to expire after a certain period of time (usually ten to twenty-four hours) and is stored in the client machine's credentials cache. An expiration time is set so that a compromised T GT is of use to an attacker for only a short period of time. After the T GT has been issued, the user does not have to reenter their password until the T GT expires or until they log out and log in again. Sempre que um usurio precisar de acesso a um servio de rede, o software cliente usa o T GT para pedir um novo ticket para este servio especfico ao T GS. O ticket do servio ento usado para autenticar o usurio de forma transparente a este servio.

Aviso
O sistema do Kerberos pode ser comprometido se um usurio da rede se autenticar em um servio no-kerberizado enviando a senha em formato texto. O uso de servios nokerberizados altamente desestimulado. T ais servios incluem T elnet e FT P. Porm, o uso de outros protocolos criptografados, como os servios protegidos SSH ou SSL, aceitvel apesar de no ser ideal. T his is only a broad overview of how Kerberos authentication works. Refer to Seo 2.6.10, Recursos Adicionais for links to more in-depth information.

Red Hat Enterprise Linux 5 D eployment Guide

91

Nota
O Kerberos depende dos seguintes servios de rede para funcionar corretamente. Sincronizao aproximada de relgio, entre as mquinas da rede. A clock synchronization program should be set up for the network, such as ntpd . Refer to /usr/share/doc/ntp-<version-number>/index.htm l for details on setting up Network T ime Protocol servers (where <version-number> is the version number of the ntp package installed on your system). Servio de Nome do Domnio (DNS). You should ensure that the DNS entries and hosts on the network are all properly configured. Refer to the Kerberos V5 System Administrator's Guide in /usr/share/doc/krb5server-<version-number> for more information (where <version-number> is the version number of the krb5-server package installed on your system).

2.6.4 . Kerberos e PAM Atualmente, os servios kerberizados no utilizam Mdulos de Autenticao Plugveis (PAM) os servios kerberizados ignoram completamente o PAM. Entretanto, os aplicativos que usam PAM podem usar o Kerberos para autenticao se o mdulo pam _krb5 (oferecido no pacote pam _krb5 ) est instalado. O pacote pam _krb5 contm arquivos de amostra de configurao que permitem a servios como o login e o gdm autenticarem usurios e obterem as credenciais iniciais usando suas senhas. Se o acesso a servios de rede sempre executado usando servios kerberizados ou servios que usam GSS-API, como o IMAP, a rede pode ser considerada razoavelmente segura.

Tip
Os administradores devem ter cuidado para no permitir que usurios se autentiquem na maioria dos servios de rede usando senhas do Kerberos. Muitos protocolos usados por estes servios no criptografam a senha antes de envi-la atravs da rede, destruindo os benefcios do sistema Kerberos. Por exemplo: usurios no devem ter a permisso de se autenticar no T elnet usando a mesma senha usada para o Kerberos.

2.6.5. Configurando o Servidor Kerberos 5 Antes de configurar o Kerberos, instale o KDC. Se for preciso configurar servidores escravos (secundrios), instale primeiro um mestre (primrios). Para configurar um servidor Kerberos bsico, siga estes passos: 1. Certifique-se de que a sincronizao do relgio e DNS estejam funcionando em todas as mquinas cliente e servidor antes de configurar o Kerberos. Preste ateno especial sincronizao do horrio entre o servidor Kerberos e seus clientes. Se a diferena entre os relgios do servidor e do cliente for maior que cinco minutos (essa quantidade padro configurvel no Kerberos 5), os clientes do Kerberos no podero se autenticar no servidor. Essa sincronizao do relgio se faz necessria para evitar que um atacante use um ticket antigo do Kerberos para se mascarar como um usurio vlido. It is advisable to set up a Network T ime Protocol (NT P) compatible client/server network even if Kerberos is not being used. Red Hat Enterprise Linux includes the ntp package for this purpose. Refer to /usr/share/doc/ntp-<version-number>/index.htm l (where <version-number> is the version number of the ntp package installed on your system) for details about how to set up Network T ime Protocol servers, and http://www.ntp.org for more information about NT P.

92

Captulo 2. Assegurando sua Rede de Trabalho

2. Instale os pacotes krb5-libs, krb5-server , e krb5-workstation na mquina dedicada que executa o KDC. Essa mquina precisa ser muito segura se possvel, no deve executar nenhum outro servio alm do KDC. 3. Edite os arquivos de configurao /etc/krb5.conf e /var/kerberos/krb5kdc/kdc.conf para refletir o nome do territrio e o mapeamento de domnio-territrio. Um territrio simples pode ser construdo substituindo as instncias de EXEMPLO.COM e exemplo.com pelo nome de domnio correto certificando de manter os nomes em caixas alta e baixa no formato correto e alterando o KDC de kerberos.exemplo.com para o nome do servidor do Kerberos. Por conveno, todos os nomes de territrio so escritos em caixa alta e todos os nomes DNS de mquinas e de domnio so escritos em caixa baixa. Para uma explanao completa sobre os formatos destes arquivos, consulte as respectivas pginas man. 4. Crie o banco de dados usando o utilitrio kdb5_util em uma janela de comandos:
/usr/kerberos/sbin/kdb5_util create -s

O comando create cria o banco de dados usado para armazenar as chaves para o territrio do Kerberos. A opo -s fora a criao de um arquivo stash no qual a chave do servidor mestre est armazenada. Se no houver nenhum arquivo stash a partir do qual pode-se ler a chave, o servidor do Kerberos (krb5kdc ) pede ao usurio a senha do servidor mestre (que pode ser usada para recriar a chave) toda vez que este iniciar. 5. Edite o arquivo /var/kerberos/krb5kdc/kadm 5.acl . Este arquivo usado pelo kadm ind para determinar quais principais tm acesso administrativo ao banco de dados do Kerberos e seus nveis de acesso. A maioria das empresas podem fazer isso com uma nica linha:
*/admin@EXAMPLE.COM *

Most users are represented in the database by a single principal (with a NULL, or empty, instance, such as joe@EXAMPLE.COM ). In this configuration, users with a second principal with an instance of admin (for example, joe/admin@EXAMPLE.COM ) are able to wield full power over the realm's Kerberos database. Uma vez iniciado o kadm ind no servidor, qualquer usurio pode acessar seus servios, executando kadm in em quaisquer clientes ou servidores no territrio. Entretanto, somente os usurios listados no arquivo kadm 5.acl podem modificar o banco de dados de qualquer maneira, exceto alterar suas prprias senhas.

Nota
O utilitrio kadm in se comunica com o servidor kadm ind atravs da rede e usa o Kerberos para autenticao. Por este motivo, o primeiro principal j deve existir antes de conectar ao servidor atravs da rede para administr-lo. Crie o primeiro principal com o comando kadm in.local , que especificamente desenvolvido para ser usado na mesma mquina que o KDC e no utiliza o Kerberos para autenticao. Digite o seguinte comando kadm in.local no terminal do KDC para criar o primeiro principal:
/usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"

6. Inicie o Kerberos usando os seguintes comandos:


/sbin/service krb5kdc start /sbin/service kadmin start /sbin/service krb524 start

7. Adicione principais para os usurios com o comando addprinc do kadm in . O kadm in e o kadm in.local so interfaces de linha de comando do KDC. Conseqentemente, muitos

Red Hat Enterprise Linux 5 D eployment Guide

93

comandos como o addprinc tornam-se disponveis aps o lanamento do programa kadm in . Consulte a pgina man do kadm in para mais informaes. 8. Verifique se o KDC est emitindo tickets. Primeiro, execute kinit para obter um ticket e armazen-lo em um arquivo cache de credenciais. Em seguida, use o klist para visualizar a lista de credenciais no cache e use o kdestroy para destruir o cache e as credenciais ali contidas.

Nota
By default, kinit attempts to authenticate using the same system login username (not the Kerberos server). If that username does not correspond to a principal in the Kerberos database, kinit issues an error message. If that happens, supply kinit with the name of the correct principal as an argument on the command line (kinit <principal>). Uma vez que estes passos estejam completos, o servidor do Kerberos deve estar pronto e funcionando. 2.6.6. Configurando um Cliente Kerberos 5 Configurar um cliente Kerberos 5 menos complexo que um servidor. No mnimo, deve-se instalar os pacotes de cliente e prover um arquivo de configurao krb5.conf vlido para cada cliente. Apesar de se preferir os mtodos de instalao remota ssh e slogin para sistemas de clientes, as verses kerberizadas de rsh e rlogin tambm requerem algumas alteraes de configurao. 1. Be sure that time synchronization is in place between the Kerberos client and the KDC. Refer to Seo 2.6.5, Configurando o Servidor Kerberos 5 for more information. In addition, verify that DNS is working properly on the Kerberos client before configuring the Kerberos client programs. 2. Instale os pacotes krb5-libs e krb5-workstation em todas as mquinas cliente. Fornea um arquivo /etc/krb5.conf vlido para cada cliente (geralmente este pode ser o mesmo arquivo krb5.conf usado pelo KDC). 3. Before a workstation in the realm can use Kerberos to authenticate users who connect using ssh or Kerberized rsh or rlogin , it must have its own host principal in the Kerberos database. T he sshd , kshd , and klogind server programs all need access to the keys for the host service's principal. Additionally, in order to use the kerberized rsh and rlogin services, that workstation must have the xinetd package installed. Using kadm in , add a host principal for the workstation on the KDC. T he instance in this case is the hostname of the workstation. Use the -randkey option for the kadm in 's addprinc command to create the principal and assign it a random key:
addprinc -randkey host/blah.example.com

Agora que o principal foi criado, as chaves podem ser extradas para a estao de trabalho executando o kadm in na prpria estao de trabalho, e usando o comando ktadd no kadm in :
ktadd -k /etc/krb5.keytab host/blah.example.com

4. Para usar outros servios de rede kerberizados necessrio inici-los. Veja abaixo uma lista com alguns dos servios kerberizados mais comuns e instrues para habilit-los: ssh OpenSSH uses GSS-API to authenticate users to servers if the client's and server's configuration both have GSSAPIAuthentication enabled. If the client also has GSSAPIDelegateCredentials enabled, the user's credentials are made available on the remote system. rsh e rlogin Para usar as verses kerberizadas do rsh e do rlogin , habilite klogin ,

94

Captulo 2. Assegurando sua Rede de Trabalho

eklogin , e kshell . T elnet Para usar o T elnet kerberizado, o krb5-telnet deve estar habilitado. FT P Para prover acesso ao FT P, crie e extraia uma chave para o principal com uma raiz de ftp . Certifique-se de definir a instncia para o nome da mquina do servidor FT P, e ento habilite o gssftp . IMAP Para usar um servidor IMAP kerberizado, o pacote cyrus-im ap usa o Kerberos 5 se o pacote cyrus-sasl-gssapi tambm estiver instalado. O pacote cyrus-sasl-gssapi contm os plugins do Cyrus SASL os quais oferecem suporte autenticao usando a GSSAPI. O Cyrus IMAP deve funcionar adequadamente com o Kerberos conquanto o usurio cyrus possa encontrar a chave apropriada em /etc/krb5.keytab , e a root (raiz) para o principal esteja configurada para im ap (criada com kadm in ). Uma alternativa para o cyrus-im ap pode ser o pacote dovecot, o qual tambm includo no Red Hat Enterprise Linux. Este pacote contm um servidor IMAP mas at o momento no suporta a GSS-API e o Kerberos. CVS Para usar um servidor CVS kerberizado, o gserver usa um principal com uma raiz (root) cvs e idntico ao CVS pserver em todos os outros aspectos. 2.6.7. Mapeamento Domnio-para-territrio Quando um client tenta acessar um servio que esteja rodando em um server especfico, ele sabe o nome do servio (host) e o nome do server (foo.example.com ), mas como possvel que mais de um territrio seja implementado na sua rede de trabalho, ele precisa adivinhar o nome do territrio, no qual o servio se encontra. Por padro, o nome do territrio o mesmo do domnio DNS do server, com letras maisculas. foo.example.org EXAMPLE.ORG foo.example.com EXAMPLE.COM foo.hq.example.com HQ.EXAMPLE.COM In some configurations, this will be sufficient, but in others, the realm name which is derived will be the name of a non-existant realm. In these cases, the mapping from the server's DNS domain name to the name of its realm must be specified in the domain_realm section of the client system's krb5.conf . For example:
[domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

T he above configuration specifies two mappings. T he first mapping specifies that any system in the "example.com" DNS domain belongs to the EXAMPLE.COM realm. T he second specifies that a system with the exact name "example.com" is also in the realm. (T he distinction between a domain and a specific host is marked by the presence or lack of an initial ".".) T he mapping can also be stored directly in DNS. 2.6.8. Configurando KDCs Secundrios For a number of reasons, you may choose to run multiple KDCs for a given realm. In this scenario, one KDC (the master KDC) keeps a writable copy of the realm database and runs kadm ind (it is also your realm's admin server), and one or more KDCs (slave KDCs) keep read-only copies of the database and run kpropd . O procedimento de propagao do mestre-escravo, faz com que o KDC mestre despeje seu banco de dados em um arquivo de despejo temporrio e ento transfira este arquivo para cada um de seus escravos, que iro por conseqncia sobrescrever suas cpias de somente leitura, previamente recebidas, do banco de dados com o contedo do arquivo de despejo.

Red Hat Enterprise Linux 5 D eployment Guide

95

T o set up a slave KDC, first ensure that the master KDC's krb5.conf and kdc.conf files are copied to the slave KDC. Start kadm in.local from a root shell on the master KDC and use its add_principal command to create a new entry for the master KDC's host service, and then use its ktadd command to simultaneously set a random key for the service and store the random key in the master's default keytab file. T his key will be used by the kprop command to authenticate to the slave servers. You will only need to do this once, regardless of how many slave servers you install.

# kadm in.local r EXAMPLE.COM Authenticating as principal root/adm in@ EXAMPLE.COM with passwo rd. kadm in: add_principal randkey host/m asterkdc.exam ple.com Principal "host/host/m asterkdc.exam ple.co m @ EXAMPLE.COM" created. kadm in: ktadd host/m asterkdc.exam ple.com Entry for principal host/m asterkdc.exam ple.com with kvno 3, encryption type T riple DES cbc m ode with \ HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/m asterkdc.exam ple.com with kvno 3, encryption type ArcFour w ith HMAC/m d5 \ added to keytab WRFILE:/etc/krb5.keytab. Entry for principal h ost/m asterkdc.exam ple.com with kvno 3, encryption type DES with HMAC/sha1 add ed \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/m asterkdc.ex am ple.com with kvno 3, encryption type DES cbc m ode with RSAMD5 \ added to keytab WRFILE:/etc/krb5.keytab. kadm in: quit Start kadm in from a root shell on the slave KDC and use its add_principal command to create a new entry for the slave KDC's host service, and then use kadm in 's ktadd command to simultaneously set a random key for the service and store the random key in the slave's default keytab file. T his key is used by the kpropd service when authenticating clients.

# kadm in -p jim bo/adm in@ EXAMPLE.COM r EXAMPLE.COM Authenticating as principal jim bo/adm in@ EXAMPLE.COM with passw ord. Password for jim bo/adm in@ EXAMPLE.COM: kadm in: add_principal randkey host/slavekdc.exam ple.com Principal "host/slavekdc.exam ple.com @ EXAMP LE.COM" created. kadm in: ktadd host/slavekdc.exam ple.com @ EXAMPLE.COM Entry for principal host/slavekdc.exam ple.com with kvno 3, encryption type T riple DES cbc m ode with \ HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.exam ple.com with kvno 3, encryption type ArcFour with HMAC/m d5 added \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.exam ple.com with kvno 3, encryption type DES with HMAC/sha1 ad ded \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.ex am ple.com with kvno 3, encryption type DES cbc m ode with RSAMD5 added \ to keytab WRFILE:/etc/krb5.keytab. kadm in: quit With its service key, the slave KDC could authenticate any client which would connect to it. Obviously, not all of them should be allowed to provide the slave's kprop service with a new realm database. T o restrict access, the kprop service on the slave KDC will only accept updates from clients whose principal names are listed in /var/kerberos/krb5kdc/kpropd.acl . Add the master KDC's host service's name to that file.

# echo host/m asterkdc.exam ple.com @ EXAMPLE.COM > /var/kerberos/krb5kdc/kprop d.acl Once the slave KDC has obtained a copy of the database, it will also need the master key which was used to encrypt it. If your KDC database's master key is stored in a stash file on the master KDC

96

Captulo 2. Assegurando sua Rede de Trabalho

(typically named /var/kerberos/krb5kdc/.k5.REALM , either copy it to the slave KDC using any available secure method, or create a dummy database and identical stash file on the slave KDC by running kdb5_util create -s (the dummy database will be overwritten by the first successful database propagation) and supplying the same password. Ensure that the slave KDC's firewall allows the master KDC to contact it using T CP on port 754 (krb5_prop), and start the kprop service. T hen, double-check that the kadm in service is disabled. Agora faa um teste manual de propagao de banco de dados, despejando o banco de dados do territrio, dentro do KDC mestre, para o arquivo de dados padro que ser lido pelo comando kprop (/var/kerberos/krb5kdc/slave_datatrans) e use o comando kprop para transferir seu contedo para o KDC escravo.

# /usr/kerberos/sbin/kdb5_util dum p /var/kerberos/krb5kdc/slave_datatrans # kprop slavekdc.exam ple.com Usando o kinit, certifique-se que um sistema cliente contendo um krb5.conf que liste apenas o KDC escravo na sua lista de KDCs para o seu territrio, pode obter, corretamente, credenciais iniciais a partir do KDC escravo. Concluindo isto, simplesmente crie um script que despeja o banco de dados do territrio e executa o comando kprop para transferir o banco de dados para cada KDC escravo, um de cada vez, e configure o servio cron para executar o script periodicamente. 2.6.9. Configurando a Autenticao Cross-Realm - (Cross Realm Authentication) Autenticao cross-realm um termo utilizado para descrever situaes em que os clientes (usurios comuns) de um territrio usam o Kerberos para autenticar servios (geralmente processos de server rodando um um sistema server especfico) que pertencem a um outro territrio. No caso mais simples, para que um cliente de um territrio A.EXAMPLE.COM possa acessar um servio no territrio B.EXAMPLE.COM , ambos devem ter uma chave de um principal krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM e ambas as chaves devem possuir o mesmo nmero de verso da chave associado a eles. Para concluir esta tarefa, selecione uma senha segura e uma frase secreta, e crie uma entrada para o principal em ambos os territrios, usando o kadmin.

# kadm in -r A.EXAMPLE.COM kadm in: add_principal krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM Enter password for principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM": Re-enter password for principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM": Principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM" created. quit # kadm in -r B.EXAMPLE.COM kadm in: add_principal krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM Enter password for principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM": Re-enter password for principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM": Principal "krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM" created. quit Use o comando get_principal para se certificar que ambas as entradas possuem nmeros de verses de chaves que combinem (valores kvno ) e tipos de criptografia.

Red Hat Enterprise Linux 5 D eployment Guide

97

Dumping the Database Doesn't Do It


Security-conscious administrators may attempt to use the add_principal command's randkey option to assign a random key instead of a password, dump the new entry from the database of the first realm, and import it into the second. T his will not work unless the master keys for the realm databases are identical, as the keys contained in a database dump are themselves encrypted using the master key. Clientes do territrio A.EXAMPLE.COM podem agora autenticar servios no territrio B.EXAMPLE.COM . Ou seja, o territrio B.EXAMPLE.COM pode agora confiar no territrio A.EXAMPLE.COM ou ainda em outras palavras, B.EXAMPLE.COM agora confia no A.EXAMPLE.COM . Isto nos leva a um ponto crucial: a confiana cross-realm unidirecional por padro. O KDC do territrio B.EXAMPLE.COM pode confiar em clientes do A.EXAMPLE.COM para se autenticarem em servios no territrio B.EXAMPLE.COM , mas na verdade no importa se os clientes no territrio B.EXAMPLE.COM so confiveis para se autenticarem em servios no territrio A.EXAMPLE.COM ou no. Para estabelecer confiana no inverso, ambos os territrios deveriam precisar compartilhar chaves para o servio krbtgt/A.EXAMPLE.COM@ B.EXAMPLE.COM (observe a ordem inversa dos dois territrios comparado ao exemplo acima). If direct trust relationships were the only method for providing trust between realms, networks which contain multiple realms would be very difficult to set up. Luckily, cross-realm trust is transitive. If clients from A.EXAMPLE.COM can authenticate to services in B.EXAMPLE.COM , and clients from B.EXAMPLE.COM can authenticate to services in C.EXAMPLE.COM , then clients in A.EXAMPLE.COM can also authenticate to services in C.EXAMPLE.COM , even if C.EXAMPLE.COM doesn't directly trust A.EXAMPLE.COM. T his means that, on a network with multiple realms which all need to trust each other, making good choices about which trust relationships to set up can greatly reduce the amount of effort required. Now you face the more conventional problems: the client's system must be configured so that it can properly deduce the realm to which a particular service belongs, and it must be able to determine how to obtain credentials for services in that realm. Antes de mais nada: o nome principal para um servio fornecido por um sistema de servidor especfico em um territrio se parece com este a seguir: service/server.example.com@EXAMPLE.COM Neste exemplo, o servio o nome do protocolo em uso (outros valores comums incluem ldap, imap, cvs e HTTP), que pode ser substitudo por host. O server.example.com o nome do domnio do sistema totalmente qualificado, que executa o servio e EXAMPLE.COM o nome do territrio. Para deduzir o territrio do servio ao qual ele pertence, os clientes iro consultar o DNS ou a seo dom ain_realm do /etc/krb5.conf para mapear tanto um hostname (server.example.com ) quanto um nome de domnio DNS (.example.com ) para o nome de um territrio (EXAMPLE.COM ). Aps determinar a que territrio o servio pertence, um cliente precisa ento determinar o conjunto de territrios que ele precisa para contatar, e em qual ordem ele deve faz-lo para obter credenciais para o uso ao autenticar o servio. Isto pode ser feito de duas maneiras. O mtodo padro, que no requer configurao explcita, deve nomear os territrios dentro de uma hierarquia compartilhada. Por exemplo, suponha que se tenha territrios chamados A.EXAMPLE.COM , B.EXAMPLE.COM e EXAMPLE.COM . Quando um cliente no territrio A.EXAMPLE.COM , tentar autenticar o servio em B.EXAMPLE.COM , ele ir, por padro, primeiro tentar obter credenciais para o territrio

98

Captulo 2. Assegurando sua Rede de Trabalho

EXAMPLE.COM , e depois usar estas credenciais para obter outras, para usar no territrioB.EXAMPLE.COM . T he client in this scenario treats the realm name as one might treat a DNS name. It repeatedly strips off the components of its own realm's name to generate the names of realms which are "above" it in the hierarchy until it reaches a point which is also "above" the service's realm. At that point it begins prepending components of the service's realm name until it reaches the service's realm. Each realm which is involved in the process is another "hop". Por exemplo, usando credenciais em A.EXAMPLE.COM , autenticando um servio em B.EXAMPLE.COM : A.EXAMPLE.COM EXAMPLE.COM B.EXAMPLE.COM A.EXAMPLE.COM e EXAMPLE.COM compartilha chave para krbtgt/EXAMPLE.COM@ A.EXAMPLE.COM EXAMPLE.COM e B.EXAMPLE.COM compartilha uma chave para krbtgt/B.EXAMPLE.COM@ EXAMPLE.COM Outro exemplo usando credenciais em SIT E1.SALES.EXAMPLE.COM , autenticando um servio em EVERYWHERE.EXAMPLE.COM : SIT E1.SALES.EXAMPLE.COM SALES.EXAMPLE.COM EXAMPLE.COM EVERYWHERE.EXAMPLE.COM SIT E1.SALES.EXAMPLE.COM e SALES.EXAMPLE.COM compartilham uma chave para krbtgt/SALES.EXAMPLE.COM@ SIT E1.SALES.EXAMPLE.COM SALES.EXAMPLE.COM e EXAMPLE.COM compartilham uma chave para krbtgt/EXAMPLE.COM@ SALES.EXAMPLE.COM EXAMPLE.COM e EVERYWHERE.EXAMPLE.COM compartilham uma chave para krbtgt/EVERYWHERE.EXAMPLE.COM@ EXAMPLE.COM Outro exemplo, desta vez usando nomes de territrios que no compartilham de um sufixo em comum (DEVEL.EXAMPLE.COM e PROD.EXAMPLE.ORG ): DEVEL.EXAMPLE.COM EXAMPLE.COM COM ORG EXAMPLE.ORG PROD.EXAMPLE.ORG DEVEL.EXAMPLE.COM e EXAMPLE.COM compartilham uma chave para krbtgt/EXAMPLE.COM@ DEVEL.EXAMPLE.COM EXAMPLE.COM e COM compartilham uma chave para krbtgt/COM@ EXAMPLE.COM COM e ORG compartilham uma chave para krbtgt/ORG@ COM ORG e EXAMPLE.ORG compartilham uma chave para krbtgt/EXAMPLE.ORG@ ORG EXAMPLE.ORG e PROD.EXAMPLE.ORG compartilham uma chave para krbtgt/PROD.EXAMPLE.ORG@ EXAMPLE.ORG O mtodo mais complicado, porm mais flexvel, envolve a configurao da seo capaths do /etc/krb5.conf , para que os clientes que tiverem credenciais para um territrio, possam procurar qual territrio o prximo na corrente que ir finalmente levar autenticao dos servidores. T he format of the capaths section is relatively straightforward: each entry in the section is named after a realm in which a client might exist. Inside of that subsection, the set of intermediate realms from which the client must obtain credentials is listed as values of the key which corresponds to the realm in which a service might reside. If there are no intermediate realms, the value "." is used. Here's an example: [capaths]

Red Hat Enterprise Linux 5 D eployment Guide

99

[capaths] A.EXAMPLE.COM = { B.EXAMPLE.COM = . C.EXAMPLE.COM = B.EXAMPLE.COM D.EXAMPLE.COM = B.EXAMPLE.COM D.EXAMPLE.COM = C.EXAMPLE.COM } Neste exemplo, clientes no territrio A.EXAMPLE.COM podem obter credenciais cross-realm para B.EXAMPLE.COM diretamente do KDC A.EXAMPLE.COM . Se estes clientes desejarem contatar um servio no territrio C.EXAMPLE.COM , eles precisaro obter credenciais do territrio B.EXAMPLE.COM (a existncia de um krbtgt/B.EXAMPLE.COM@ A.EXAMPLE.COM crucial) e ento usar estascredenciais para obter credenciais a serem usadas no territrio C.EXAMPLE.COM (usando krbtgt/C.EXAMPLE.COM@ B.EXAMPLE.COM ). Se estes clientes desejarem contatar um servio no territrio D.EXAMPLE.COM eles primeiro precisaro obter credenciais do territrio B.EXAMPLE.COM , e ento credenciais do territrio C.EXAMPLE.COM , antes de finalmente obter as credenciais para uso no territrio D.EXAMPLE.COM .

Nota
Sem uma entrada capath indicando o oposto, o Kerberos presume que os relacionamentos de confiana do cross-realm formam uma hierarquia. Clients in the A.EXAMPLE.COM realm can obtain cross-realm credentials from B.EXAMPLE.COM realm directly. Without the "." indicating this, the client would instead attempt to use a hierarchical path, in this case: A.EXAMPLE.COM EXAMPLE.COM B.EXAMPLE.COM

2.6.10. Recursos Adicionais Para mais informaes sobre o Kerberos, consulte os seguintes recursos. 2.6.10.1. Documentao Instalada T he Kerberos V5 Installation Guide and the Kerberos V5 System Administrator's Guide in PostScript and HT ML formats. T hese can be found in the /usr/share/doc/krb5-server-<versionnumber>/ directory (where <version-number> is the version number of the krb5-server package installed on your system). T he Kerberos V5 UNIX User's Guide in PostScript and HT ML formats. T hese can be found in the /usr/share/doc/krb5-workstation-<version-number>/ directory (where <versionnumber> is the version number of the krb5-workstation package installed on your system). Pginas man do Kerberos H diversas pginas man para os diversos aplicativos e arquivos de configurao envolvidos na implementao do Kerberos. A seguir uma lista com algumas das pginas man mais importantes. Aplicativos de Cliente m an kerberos Uma introduo ao sistema Kerberos que descreve o funcionamento das credenciais e fornece recomendaes para obter e destruir tickets do Kerberos. O final da pgina man referencia diversas pginas man relacionadas. m an kinit Descreve como usar este comando para obter e criar o cache de um ticket-granting ticket. m an kdestroy Descreve como usar este comando para destruir credenciais do

100

Captulo 2. Assegurando sua Rede de Trabalho

Kerberos. m an klist Descreve como usar este comando para listar credenciais cacheadas do Kerberos. Aplicativos Administrativos m an kadm in Descreve como usar este comando para administrar o banco de dados do Kerberos V5. m an kdb5_util Descreve como usar este comando para criar e executar funes administrativas de nvel baixo no banco de dados do Kerberos V5. Aplicativos de Servidor m an krb5kdc Descreve as opes de linha de comando disponveis para o Kerberos V5 KDC. m an kadm ind Descreve as opes de linha de comando do servidor de administrao do Kerberos V5. Arquivos de Configurao m an krb5.conf Descreve o formato e as opes do arquivo de configurao da biblioteca do Kerberos V5. m an kdc.conf Descreve o formato e as opes disponveis do arquivo de configurao do AS e do KDC do Kerberos V5.

2.6.10.2. Sites teis A pgina da web do MIT http://web.mit.edu/kerberos/www/ Kerberos:The Network Authentication Protocol. http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html As Perguntas Mais Freqentes do Kerberos (FAQ). ftp://athena-dist.mit.edu/pub/kerberos/doc/usenix.PS A verso PostScript de Kerberos: An Authentication Service for Open Network Systems de Jennifer G. Steiner, Clifford Neuman e Jeffrey I. Schiller. Este o documento original que descreve o Kerberos. http://web.mit.edu/kerberos/www/dialogue.html Designing an Authentication System: a Dialogue in Four Scenes originally by Bill Bryant in 1988, modified by T heodore T s'o in 1997. T his document is a conversation between two developers who are thinking through the creation of a Kerberos-style authentication system. T he conversational style of the discussion make this a good starting place for people who are completely unfamiliar with Kerberos. http://www.ornl.gov/~jar/HowT oKerb.html How to Kerberize your site uma boa referncia para kerberizar uma rede. http://www.networkcomputing.com/netdesign/kerb1.html Kerberos Network Design Manual uma viso geral completa do sistema Kerberos.

2.7. Redes Privadas Virtuais (Virtual Private Networks - VPNs)


Empresas com vrios escritrios satlite freqentemente conectam-se com linhas dedicadas por razes de eficincia e de proteo de dados privativos em trnsito. Por exemplo, vrias empresas usam linhas frame relay ou Asynchronous Transfer Mode (AT M) como uma soluo de rede de ponta-a-ponta para interligar escritrios. Isto pode ser uma alternativa cara, especialmente para pequenas e mdias empresas que queiram expandir sem arcar com os altos custos associados a circuitos digitais dedicados, de nvel corporativo. Para atender esta necessidade, foram desenvolvidas as Redes Privadas Virtuais (Virtual Private Networks - VPNs). Seguindo os mesmos princpios funcionais dos circuitos dedicados, as VPNs

Red Hat Enterprise Linux 5 D eployment Guide

101

permitem a comunicao digital protegida entre duas partes (ou redes), criando uma Rede Geograficamente Distribuda (Wide Area Network - WAN) a partir de Redes de reas Locais (LANs) existentes. Ela difere do frame relay ou do AT M em seu meio de transporte. As VPNs transmitem atravs de IP usando datagramas como a camada de transporte, tornando-o um condutor seguro atravs da Internet, para um determinado destino. A maioria das implementaes VPN de software livre incorporam mtodos de criptografia de padro aberto para mascarar ainda mais os dados em trnsito. Algumas empresas aplicam solues VPN de hardware para aumentar a segurana, enquanto outras usam software ou implementaes baseadas em protocolos. H diversos fabricantes de solues VPNde hardware como Cisco, Nortel, IBM e Checkpoint. Existe uma soluo VPN baseada em software livre para Linux chamada FreeS/Wan, que utiliza uma implementao Internet Protocol Security (IPSec). Estas solues VPN, independentemente de serem baseadas em hardware ou software, atuam como roteadores especializados situados entre as conexes IP de dois escritrios. 2.7.1. Como um VPN Funciona? Quando um pacote transmitido a partir de um cliente, enviado atravs do roteador ou gateway VPN, o qual adiciona um Cabealho de Autenticao (Authentication Header - AH) para o roteamento e autenticao. Os dados so ento criptografados e, finalmente, fechados com um Encapsulating Security Payload (ESP). Este ltimo estabelece as instrues de descriptografia e manuseio. O roteador VPN receptor depura as informaes de cabealho, descriptografa os dados e os roteia ao destino pretendido (uma estao de trabalho ou um n em uma rede). Usando uma conexo rede-arede, o n receptor da rede local recebe os pacotes descriptografados e prontos para processar. O processo de criptografia/descriptografia numa conexo VPN rede-a-rede transparente para o n local. Com um nvel to elevado de segurana, no basta ao cracker interceptar o pacote, mas tambm descriptografar o pacote. Intrusos que aplicarem um ataque man-in-the-middle entre um servidor e o cliente tambm devem ter acesso pelo menos uma das chaves privadas para sesses de autenticao. Como aplicam diversas camadas de autenticao e criptografia, as VPNs so um meio seguro e efetivo para conectar mltiplos ns remotos para atuar como uma intranet unificada. 2.7.2. VPNs e o Red Hat Enterprise Linux Os usurios do Red Hat Enterprise Linux tm vrias opes em termos de implementao de uma soluo de software para conectar sua WAN com segurana. A Segurana do Protocolo de Internet, ou IPsec, a implementao VPN suportada pelo Red Hat Enterprise Linux que atende s necessidades de usabilidade de empresas com filiais ou usurios remotos. 2.7.3. IPsec O Red Hat Enterprise Linux suporta o IPsec para conectar hosts e redes remotos entre si usando um tnel seguro em uma rede de transporte comum, como a Internet. O IPsec pode ser implementado usando uma configurao host-a-host (uma estao de trabalho conectada a outra) ou rede-a-rede (uma LAN/WAN conectada outra). A implementao do IPsec no Red Hat Enterprise Linux usa Troca de Chave de Internet (Internet Key Exchange, IKE), um protocolo implementado pelo IET F (Internet Engineering T ask Force) para ser usado em autenticao mtua e proteger associaes entre sistemas conectados. 2.7.4 . Criando uma Conexo IPsec An IPsec connection is split into two logical phases. In phase 1, an IPsec node initializes the connection with the remote node or network. T he remote node or network checks the requesting node's credentials and both parties negotiate the authentication method for the connection. Nos sistemas Red Hat Enterprise Linux, uma conexo IPsec usa o mtodo de chave pr-compartilhada (pre-shared key) para autenticao do n IPsec. Numa conexo IPsec com chave pr-compartilhada,

102

Captulo 2. Assegurando sua Rede de Trabalho

ambos hosts devem usar a mesma chave para prosseguir segunda fase da conexo IPsec. Durante a fase 2 de uma conexo IPsec criada uma associao de segurana (security association, SA) entre os ns IPsec. Essa fase estabelece um banco de dados de SAs com informaes de configurao, como o mtodo de criptografia, parmetros de troca de chaves de sesses secretas, dentre outras. Essa fase administra a conexo IPsec entre ns e redes remotas. A implementao do IPsec no Red Hat Enterprise Linux usa IKE para compartilhar chaves entre hosts ao longo da Internet. O daemon do chaveiro racoon responsvel pela distribuio e troca de chaves IKE. Consulte a pgina man do racoon para maiores informaes sobre este daemon. 2.7.5. Instalao do IPsec A implementao do IPsec requer a instalao do pacote RPM ipsec-tools em todas os hosts IPsec (se usar uma configurao host-a-host) ou roteadores IPsec (se usar uma configurao rede-a-rede). O pacote RPM contm bibliotecas, daemons e arquivos de configurao essenciais para auxiliar na configurao da conexo IPsec , incluindo: /sbin/setkey manipula o gerenciamento da chave e atributos de segurana do IPsec no kernel. Este executvel controlado pelo daemon de gerenciamento da chave racoon . Para mais informaes, consulte a pgina man (8) do setkey. /usr/sbin/racoon the IKE key management daemon, used to manage and control security associations and key sharing between IPsec-connected systems. /etc/racoon/racoon.conf o arquivo de configurao do daemon do racoon usado para configurar vrios aspectos da conexo IPsec, incluindo mtodos de autenticao e algoritmos de criptografia usados na conexo. Para uma lista completa das diretivas disponveis, consulte a pgina man (5) do racoon.conf . Para configurar o IPsec no Red Hat Enterprise Linux, voc pode usar a Ferramenta de Administrao de Rede , ou editar manualmente os arquivos de configurao de rede e do IPsec. T o connect two network-connected hosts via IPsec, refer to Seo 2.7.6, Configurao Host-a-Host do IPsec. T o connect one LAN/WAN to another via IPsec, refer to Seo 2.7.7, Configurao Rede-a-Rede do IPsec. 2.7.6. Configurao Host-a-Host do IPsec O IPsec pode ser configurado para conectar um computador pessoal ou estao de trabalho a outra atravs de uma conexo host-a-HOST . Este tipo de conexo utiliza a rede qual cada host est conectado para criar um tnel seguro entre eles. Os requisitos de uma conexo host-a-host so mnimos, assim como a configurao do IPsec em cada host. Os hosts precisam somente de uma conexo dedicada a uma rede de transporte (como a Internet) e do Red Hat Enterprise Linux para criar a conexo do IPsec. 2.7.6.1. Conexo Host-a-Host Uma conexo host-a-host do IPsec uma conexo criptografada entre dois sistemas ambos rodando o IPsec com a mesma chave de autenticao. Enquanto a conexo do IPsec estiver ativa, qualquer trfego na rede entre os dois hosts criptografado. Para configurar um conexo host-a-host do IPsec, use os seguintes passos em cada host:

Red Hat Enterprise Linux 5 D eployment Guide

103

Nota
Voc deve executar os seguintes procedimentos na mquina que voc estiver configurando. Evite a tentar configurar e estabelecer conexes IPsec remotamente. 1. Em uma janela de comandos, digite system -config-network para iniciar a Ferramenta de Administrao de Rede . 2. Na aba IPsec , clique no boto Nova para iniciar o assistente de configurao do IPsec. 3. Clique em Avanar para iniciar a configurao de uma conexo host-a-host do IPsec. 4. Digite um nome nico para a conexo, por exemplo, ipsec0 . Se necessrio, selecione a caixa de verificao para ativar a conexo automaticamente quando o computador iniciar. Clique em Avanar para continuar. 5. Selecione Criptografia Host a Host como tipo de conexo, e ento clique em Avanar . 6. Selecione o tipo de criptografia a ser usado: manual ou automtico. Se voc selecionar criptografia manual, uma chave de criptografia deve ser fornecida mais tarde durante o processo. Se voc selecionar criptografia automtica, o daemon do racoon gerencia a chave de criptografia. O pacote ipsec-tools deve ser instalado se voc quiser usar criptografia automtica. Clique em Avanar para continuar. 7. Digite o endereo IP do host remoto. Para determinar o endereo IP do host remoto, use o seguinte comandono host remoto:
[root@myServer ~] # /sbin/ifconfig <device>

where <device> is the Ethernet device that you want to use for the VPN connection. Se houver apenas uma placa de Ethernet no sistema, o nome do dispositivo normalmente eth0. O seguinte exemplo, mostra as informaes relevantes deste comando (note que isto apenas um exemplo de sada):
eth0 Link encap:Ethernet HWaddr 00:0C:6E:E8:98:1D inet addr:172.16.44.192 Bcast:172.16.45.255 Mask:255.255.254.0

O endereo IP o nmero que aparece aps a etiqueta inet addr:.

Nota
Para conexes de host-to-host, ambos os hosts devem possuir um endereo rotvel pblico. Como forma alternativa, ambos os hosts podem ter um endereo no-rotvel privado (por exemplo, das classes 10.x.x.x or 192.168.x.x) desde que estejam na mesma LAN. If the hosts are on different LANs, or one has a public address while the other has a private address, refer to Seo 2.7.7, Configurao Rede-a-Rede do IPsec. Clique em Avanar para continuar. 8. If manual encryption was selected in step 6, specify the encryption key to use, or click Generate to create one. a. Especifique um chave de autenticao ou clique em Gerar para criar uma. Pode ser qualquer combinao de nmeros e letras. b. Clique em Avanar para continuar. 9. Verifique a informao na pgina IPsec Resum o e ento clique em Aplicar .

104

Captulo 2. Assegurando sua Rede de Trabalho

10. Click File > Save to save the configuration. Voc pode precisar reiniciar a rede para que as mudanas surtam efeito. Para reiniciar a rede, use o seguinte comando:
[root@myServer ~]# service network restart

11. Selecione a conexo IPsec na lista e clique no boto Ativar . 12. Repeat the entire procedure for the other host. It is essential that the same keys from step 8 be used on the other hosts. Otherwise, IPsec will not work. After configuring the IPsec connection, it appears in the IPsec list as shown in Figura 2.10, IPsec Connection.

Figura 2.10. IPsec Connection Os seguintes arquivos so criados quando a conexo IPsec for configurada: /etc/sysconfig/network-scripts/ifcfg-<nickname> /etc/sysconfig/network-scripts/keys-<nickname> /etc/racoon/<remote-ip>.conf /etc/racoon/psk.txt Se a criptografia automtica tambm for selecionada, /etc/racoon/racoon.conf tambm criado. When the interface is up, /etc/racoon/racoon.conf is modified to include <remote-ip>.conf . 2.7.6.2. Configurao Manual Host-a-Host do IPsec O primeiro passo para criar uma conexo coletar as informaes de sistemas e de rede de cada estao de trabalho. Para uma conexo host-a-host, voc precisa das seguintes informaes:

Red Hat Enterprise Linux 5 D eployment Guide

105

O endereo IP de cada host Um nome nico, por exemplo, ipsec1 . Este nome usado para identificar a conexo IPsec e para distingu-la de outros dispositivos ou conexes. Uma chave fixa de criptografia ou uma gerada automaticamente pelo racoon . Uma chave de autenticao pr-compartilhada, usada durante o estgio inicial da conexo e para trocar chaves de criptografia durante a sesso. Por exemplo, suponha que as estaes de trabalho A e B queiram se interconectar atravs de um tnel IPsec. Elas querem se conectar usando uma chave pr-compartilhada com o valor Key_Value01 e os usurios concordam em deixar que o racoon gere automaticamente e compartilhe uma chave de autenticao entre cada host. Usurios de ambos os hosts decidem chamar suas conexes de ipsec1 .

Nota
Voc deve escolher uma PSK que use uma mistura de caracteres de caixa alta e baixa, nmeros e pontuao. Uma PSK fcil de adivinhar constitui um risco segurana. No necessrio usar a mesmo nome de conexo para cada host. Voc deve escolher um nome que seja conveniente e significativo para a sua instalao. Veja a seguir o arquivo de configurao do IPsec da Estao de T rabalho A para uma conexo host-ahost do IPsec com a Estao de T rabalho B. O nome nico para identificar a conexo, neste exemplo, ipsec1, e portanto o arquivo resultante chamado /etc/sysconfig/network-scripts/ifcfgipsec1 .
DST=X.X.X.X TYPE=IPSEC ONBOOT=no IKE_METHOD=PSK

A Estao de T rabalho A substituir X.X.X.X pelo endereo IP da estao de trabalho B, enquanto esta deve substituir X.X.X.X pelo endereo IP da estao de trabalho A. Esta conexo no est configurada para iniciar na inicializao (ONBOOT =no ) e usa o mtodo de autenticao de chave prcompartilhada (IKE_MET HOD=PSK). Veja a seguir o contedo do arquivo da chave pr-compartilhada (chamado /etc/sysconfig/network-scripts/keys-ipsec1 ) que ambas estaes de trabalho precisam para autenticarem-se entre si. O contedo deste arquivo deve ser idntico nas duas estaes de trabalho, e somente o usurio root deve poder acessar ou gravar (read or write) este arquivo.
IKE_PSK=Key_Value01

Importante
Para alterar o arquivo keys-ipsec1 para que somente o usurio root possa acess-lo ou editlo, execute o seguinte comando aps criar o arquivo:
[root@myServer ~] # chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Para alterar a chave de autenticao a qualquer momento, edite o arquivo keys-ipsec1 nas duas estaes de trabalho. As duas chaves devem ser idnticas para que a conexo funcione apropriadamente.

106

Captulo 2. Assegurando sua Rede de Trabalho

O prximo exemplo mostra a configurao especfica para a conexo da fase 1 ao host remoto. O arquivo nomeado como X.X.X.X.conf , onde X.X.X.X substitudo pelo endereo IP do host IPsec remoto. Note que este arquivo gerado automaticamente quando o tnel IPsec ativado e no deve ser editado diretamente.
remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } }

O arquivo de configurao padro da fase 1, criado quando uma conexo IPsec iniciada, contm as seguintes declaraes usadas pela implementao IPsec do Red Hat Enterprise Linux: remote X.X.X.X Especifica que as declaraes subseqentes deste arquivo de configurao aplicam-se somente ao n remoto identificado pelo endereo IP X.X.X.X. exchange_mode aggressive A configurao padro do IPsec no Red Hat Enterprise Linux usa um mtodo de autenticao agressivo, que reduz a sobrecarga da conexo enquanto permite a configurao de diversas conexes IPsec com hosts mltiplos. my_identifier address Define o mtodo de identificao a ser usado na autenticao dos ns. O Red Hat Enterprise Linux usa endereos IP para identificar os ns. encryption_algorithm 3des Define a cifra de criptografia usada durante a autenticao. Por padro, o Triple Data Encryption Standard (3DES) usado. hash_algorithm sha1; Especifica o algoritmo de hash usado durante a negociao entre ns da fase 1. Por padro, usa-se o Secure Hash Algorithm verso 1. authentication_method pre_shared_key Define o mtodo de autenticao usado durante a negociao dos ns. Por padro, o Red Hat Enterprise Linux usa chaves pr-compartilhadas para autenticao. dh_group 2 Especifica o nmero do grupo Diffie-Hellman para estabelecer chaves de sesses geradas dinamicamente. Por padro, modp1024 (grupo 2) usado.

Red Hat Enterprise Linux 5 D eployment Guide

107

2.7.6.2.1. O Arquivo de Configurao do Racoon T he /etc/racoon/racoon.conf files should be identical on all IPsec nodes except for the include "/etc/racoon/X.X.X.X.conf" statement. T his statement (and the file it references) is generated when the IPsec tunnel is activated. For Workstation A, the X.X.X.X in the include statement is Workstation B's IP address. T he opposite is true of Workstation B. T he following shows a typical racoon.conf file when the IPsec connection is activated.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf";

Este arquivo racoon.conf padro inclui localidades definidas para a configurao do IPsec, arquivos de chaves pr-compartilhadas e certificados. Os campos sainfo anonym ous descrevem a SA da fase 2 entre os ns IPsec a natureza da conexo IPsec (incluindo os algoritmos suportados de criptografia usados) e o mtodo de troca de chaves. A lista a seguir define os campos da fase 2: sainfo anonymous Denota que a SA pode iniciar anonimamente com qualquer par desde que as credenciais IPsec coincidam. pfs_group 2 Define o protocolo Diffie-Hellman de troca de chaves, o que determina o mtodo atravs do qual os ns do IPsec estabelecem uma chave de sesso temporria mtua para a segunda fase da conectividade IPsec. Por padro, a implementao IPsec do Red Hat Enterprise Linux usa o grupo 2 (ou m odp1024 ) dos grupos de troca de chave criptogrfica Diffie-Hellman. O grupo 2 usa uma exponenciao modular de 1024 bits, evitando que atacantes descriptografem transmisses IPsec anteriores, mesmo que uma chave privada seja comprometida. lifetime time 1 hour Este parmetro especifica o ciclo de vida de uma SA e pode ser quantificado por hora ou bytes de dados. A implementao IPsec do Red Hat Enterprise Linux especifica o tempo de uma hora. encryption_algorithm 3des, blowfish 4 4 8, rijndael Especifica as cifras de criptografia suportadas para a fase 2. O Red Hat Enterprise Linux suporta 3DES, 448-bit Blowfish e Rijndael (a cifra usada no Advanced Encryption Standard ou AES).

108

Captulo 2. Assegurando sua Rede de Trabalho

authentication_algorithm hmac_sha1, hmac_md5 Lista os algoritmos de hash suportados para autenticao. Os modos suportados so os cdigos de autenticao de mensagem sha1 e md5 hashed (HMAC). compression_algorithm deflate Define o algoritmo Deflate de compresso para suporte IP Payload Compression (IPCOMP), que permite a transmisso potencialmente mais rpida de datagramas IP atravs de conexes lentas.

Para iniciar a conexo, execute o seguinte comando em cada host:


[root@myServer ~]# /sbin/ifup <nickname>

where <nickname> is the name you specified for the IPsec connection. Para testar a conexo IPsec, execute o utilitrio tcpdum p para visualizar os pacotes de rede sendo transferidos entre os hosts (ou redes) e verificar se esto criptografados usando o IPsec. O pacote deve incluir um cabealho AH e deve ser exibido como pacotes ESP. ESP significa que est criptografado. Por exemplo,
[root@myServer ~]# tcpdump -n -i eth0 host <targetSystem> IP 172.16.45.107 > 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)

2.7.7. Configurao Rede-a-Rede do IPsec IPsec can also be configured to connect an entire network (such as a LAN or WAN) to a remote network using a network-to-network connection. A network-to-network connection requires the setup of IPsec routers on each side of the connecting networks to transparently process and route information from one node on a LAN to a node on a remote LAN. Figura 2.11, A network-to-network IPsec tunneled connection shows a network-to-network IPsec tunneled connection.

Figura 2.11. A network-to-network IPsec tunneled connection O diagrama mostra duas LANs separadas pela Internet. Estas LANs usam roteadores IPsec para autenticar e iniciar uma conexo, usando um tnel seguro atravs da Internet. Os pacotes interceptados em trnsito requerem descriptografia de fora bruta para quebrar a cifra protegendo os pacotes entre estas LANs. O processo de comunicao entre um n no intervalo de IP 192.168.1.0/24 e outro no 192.168.2.0/24 completamente transparente aos ns, j que o processamento, criptografia/descriptografia e roteamento dos pacotes IPsec so executados inteiramente pelo roteador IPsec. As informaes necessrias para uma conexo rede-a-rede incluem:

Red Hat Enterprise Linux 5 D eployment Guide

109

Os endereos IP externamente acessveis dos roteadores IPsec dedicados Os intervalos de endereos de rede da LAN/WAN servida pelos roteadores IPsec, tal como 192.168.1.0/24 ou 10.0.1.0/24) Os endereos IP dos dispositivos de gateway que roteiam os dados dos ns da rede para a Internet Um nome nico, por exemplo, ipsec1 . Este nome usado para identificar a conexo IPsec e para distingu-la de outros dispositivos ou conexes. Uma chave fixa de criptografia ou uma gerada automaticamente pelo racoon Uma chave de autenticao pr-compartilhada, usada durante o estgio inicial da conexo e para trocar chaves de criptografia durante a sesso. 2.7.7.1. Configurao Rede-a-Rede (VPN) Uma conexo IPsec rede-a-rede usa dois roteadores IPsec, um para cada rede, atravs dos quais o trfego de rede para as sub-redes privadas roteado. For example, as shown in Figura 2.12, Network-to-Network IPsec, if the 192.168.1.0/24 private network sends network traffic to the 192.168.2.0/24 private network, the packets go through gateway0, to ipsec0, through the Internet, to ipsec1, to gateway1, and to the 192.168.2.0/24 subnet. Roteadores IPsec devem ter endereos IP endereveis publicamente, bem como outro dispositivo de Ethernet conectado s suas respectivas redes privativas. O trfego passa por um roteador IPsec apenas se for destinado ao outro roteador IPsec com o qual uma conexo criptografada existe.

Figura 2.12. Network-to-Network IPsec Opes de configurao de rede alternativas incluem um firewall entre cada roteador de IP e a Internet, e um firewall de intranet entre cada roteador IPsec e gateway de sub-rede. O roteador IPsec e a gateway para a sub-rede podem ser um mesmo sistema com dois dispositivos de Ethernet: um com um endereo IP pblico que age como o roteador IPsec; e um com um endereo IP privativo que age como a gateway para a sub-rede privativa. Cada roteador IPsec pode usar a gateway para sua prpria rede privativa ou uma gateway pblica para enviar os pacotes para o outro roteador IPsec. Use o seguinte procedimento para configurar uma conexo IPsec rede-a-rede: 1. Em uma janela de comandos, digite system -config-network para iniciar a Ferramenta de Administrao de Rede . 2. Na aba IPsec , clique no boto Nova para iniciar o assistente de configurao do IPsec. 3. Clique em Avanar para comear a configurar uma conexo IPsec rede-a-rede. 4. Indique um apelido nico para a conexo, por exemplo, ipsec0 . Se necessrio, selecione a caixa de verificao para ativar a conexo automaticamente quando o computador iniciar. Clique em Avanar para continuar. 5. Selecione Criptografia de Rede-a-Rede (VPN) como tipo de conexo, e ento clique em Avanar . 6. Selecione o tipo de criptografia a ser usado: manual ou automtico. Se voc selecionar criptografia manual, uma chave de criptografia deve ser fornecida mais tarde

110

Captulo 2. Assegurando sua Rede de Trabalho

durante o processo. Se voc selecionar criptografia automtica, o daemon do racoon gerencia a chave de criptografia. O pacote ipsec-tools deve ser instalado se voc quiser usar criptografia automtica. Clique em Avanar para continuar. 7. Na pgina Rede Local , fornea as seguintes informaes: Endereo da Rede Local O endereo IP do dispositivo no roteador IPsec conectado rede privativa. Mscara da Sub-Rede Local A mscara da sub-rede do endereo IP da rede local. Gateway da Rede Local A gateway para a sub-rede privativa. Clique em Avanar para continuar.

Figura 2.13. Local Network Information 8. Na pgina Rede Rem ota , fornea as seguintes informaes Endereo IP Rem oto O endereo IP enderevel publicamente do roteador IPsec para a outra rede privativa. Em nosso exemplo, para o ipsec0, use o endereo IP enderevel publicamente do ipsec1, e vice versa. Endereo da Rede Rem ota O endereo de rede da sub-rede privativa atrs do outro roteador IPsec. No nosso exemplo, use 192.168.1.0 se estiver configurando o ipsec1, e use 192.168.2.0 se estiver configurando o ipsec0. Mscara da Sub-Rede Rem ota A mscara da sub-rede do endereo IP remoto. Gateway da Rede Rem ota O endereo IP da gateway do endereo de rede remoto. If manual encryption was selected in step 6, specify the encryption key to use or click Generate to create one. Especifique uma chave de autenticao ou clique em Gerar para criar uma. Esta chave pode ser qualquer combinao de nmeros e letras. Clique em Avanar para continuar.

Red Hat Enterprise Linux 5 D eployment Guide

111

Figura 2.14 . Remote Network Information 9. Verifique a informao na pgina IPsec Resum o e ento clique em Aplicar . 10. Select File > Save to save the configuration. 11. Selecione a conexo IPsec da lista, e ento clique em Ativar para ativar a conexo. 12. Habilitar encaminhamento de IP: a. Edite /etc/sysctl.conf e mude net.ipv4 .ip_forward para 1 . b. Execute o seguinte comando para habilitar a alterao:
[root@myServer ~]# /sbin/sysctl -p /etc/sysctl.conf

O script de rede para ativar a conexo IPsec cria as rotas de rede automaticamente para enviar pacotes atravs do roteador IPsec, se necessrio. 2.7.7.2. Configurao Manual de IPsec Rede-a-Rede Por exemplo, suponha que a LAN A (lana.example.com) e LAN B (lanb.example.com) queiram se interconectar atravs de um tnel IPsec. O endereo de rede da LAN A est no intervalo 192.168.1.0/24, enquanto a LAN B usa o intervalo 192.168.2.0/24. O endereo IP da gateway 192.168.1.254 para a LAN A e 192.168.2.254 para a LAN B. Os roteadores IPsec esto separados de cada gateway da LAN e usam dois dispositivos de rede: eth0 atribudo um endereo IP esttico acessvel externamente, que acessa Internet, enquanto a eth1 atua como um ponto de roteamento para processar e transmitir pacotes da LAN de um n da rede a outros ns da rede remota. A conexo IPsec entre as redes usa uma chave pr-compartilhada com o valor r3dh4 tl1nux, e os administradores de A e B concordam em deixar que o racoon gere automaticamente e compartilhe uma chave de autenticao entre cada um dos roteadores IPsec. O administrador da LAN A decide nomear a conexo IPsec como ipsec0 , enquanto o administrador da LAN B nomeia a conexo IPsec como ipsec1 . Veja o contedo do arquivo ifcfg para uma conexo IPsec rede-a-rede para a LAN A. O nome nico para identificar a conexo neste exemplo ipsec0, portanto o arquivo resultante nomeado como /etc/sysconfig/network-scripts/ifcfg-ipsec0 .

112

Captulo 2. Assegurando sua Rede de Trabalho

TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X

A seguinte lista descreve o contedo deste arquivo: T YPE=IPSEC Especifica o tipo de conexo. ONBOOT =yes Especifica que a conexo deve ser iniciada durante a inicializao do sistema. IKE_MET HOD=PSK Especifica que a conexo usa autenticao usa o mtodo de autenticao de chaves prcompartilhadas. SRCGW=192.168.1.254 O endereo IP da gateway da fonte. Para a LAN A, a gateway da LAN A, e para a LAN B, a gateway da LAN B. DST GW=192.168.2.254 O endereo IP da gateway do destino. Para a LAN A, a gateway da LAN B, e vice-versa. SRCNET =192.168.1.0/24 Especifica a rede fonte para a conexo IPsec, a qual , neste exemplo, o intervalo de rede da LAN A. DST NET =192.168.2.0/24 Especifica a rede de destino para a conexo IPsec, a qual , neste exemplo, o intervalo de rede da LAN B. DST =X.X.X.X O endereo IP externamente acessvel da LAN B.

Veja a seguir o contedo do arquivo da chave pr-compartilhada, chamado /etc/sysconfig/network-scripts/keys-ipsec X (onde X 0 para a LAN A e 1 para a LAN B), que as duas redes usam para autenticarem-se entre si. O contedo destes arquivos deve ser idntico e somente o usurio root deve poder acessar ou gravar este arquivo.
IKE_PSK=r3dh4tl1nux

Red Hat Enterprise Linux 5 D eployment Guide

113

Importante
Para alterar o arquivo keys-ipsec X para que somente o usurio root possa acess-lo ou editlo, execute o seguinte comando aps criar o arquivo:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Para alterar a chave de autenticao a qualquer momento, edite o arquivo keys-ipsec X nos dois roteadores IPsec. As duas chaves devem ser idnticas para que a conexo funcione apropriadamente. Veja o contedo do arquivo de configurao /etc/racoon/racoon.conf da conexo IPsec. Note que a linha include na parte inferior do arquivo automaticamente gerada e aparece somente se o tnel IPsec est rodando.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf"

Veja a seguir o arquivo de configurao especfico da conexo rede remota. O arquivo nomeado como X.X.X.X.conf (onde X.X.X.X o endereo IP do roteador IPsec remoto). Note que este arquivo gerado automaticamente quando o tnel IPsec ativado e no deve ser editado diretamente.
remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } }

Antes de iniciar a conexo IPsec, o encaminhamento de IP deve ser habilitado no kernel. Para habilitar o encaminhamento de IP: 1. Edite /etc/sysctl.conf e mude net.ipv4 .ip_forward para 1 . 2. Execute o seguinte comando para habilitar a alterao:
[root@myServer ~] # sysctl -p /etc/sysctl.conf

Para iniciar a conexo IPsec, execute o seguinte comando em cada roteador:

114

Captulo 2. Assegurando sua Rede de Trabalho

[root@myServer ~] # /sbin/ifup ipsec0

As conexes so ativadas e as duas LANs, A e B, agora podem se comunicar. As rotas so criadas automaticamente atravs do script de inicializao invocado pela execuo do ifup na conexo IPsec. Para visualizar uma lista de rotas da rede, execute o seguinte comando:
[root@myServer ~] # /sbin/ip route list

Para testar a conexo IPsec, execute o utilitrio tcpdum p no dispositivo externamente rotevel (eth0 neste exemplo) para visualizar os pacotes de rede sendo transferidos entre os hosts (ou redes) e para verificar se esto criptografados com IPsec. Por exemplo, para verificar a conectividade IPsec da LAN A, use o seguinte comando:
[root@myServer ~] # tcpdump -n -i eth0 host lana.example.com

O pacote deve incluir um cabealho AH e deve ser exibido como um pacote ESP. ESP significa que est criptografado. Por exemplo (barras invertidas denotam a continuao de uma linha):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4)

2.7.8. Iniciando e Parando uma Conexo IPsecConnection Se a conexo IPsec no foi configurada para ser ativada durante a inicializao, voc pode control-la da linha de comandos. Para iniciar a conexo, use o seguinte comando em cada host para IPsec host-a-host, ou cada roteador IPsec para IPsec rede-a-rede.
[root@myServer ~] # /sbin/ifup <nickname>

where <nickname> is the nickname configured earlier, such as ipsec0 . Para parar a conexo, use o seguinte comando:
[root@myServer ~] # /sbin/ifdown <nickname>

2.8. Firewalls
A segurana da informao comumente encarada como um processo e no como um produto. Entretanto, implementaes de segurana padronizadas geralmente utilizam alguma forma de mecanismo dedicado a controlar os privilgios de acesso e a restringir recursos de rede a usurios que so autorizados, identificveis e rastreveis. O Red Hat Enterprise Linux inclui muitas ferramentas poderosas para auxiliar administradores e engenheiros de segurana em questes de controle de acesso em nvel de rede. Os firewalls so um dos componentes centrais da implementao de segurana na rede. Diversos fabricantes comercializam solues de firewall para suprir todos os nichos do mercado: de usurios domsticos protegendo um PC at solues de centro de dados para proteger informaes corporativas vitais. Firewalls podem ser solues de hardware ligados intermitentemente, como as aplicaes de firewall da Cisco, Nokia e Sonicwall. T ambm h solues de software de firewall proprietrias desenvolvidas para os mercados domstico e corporativo por fabricantes como Checkpoint, McAfee e Symantec.

Red Hat Enterprise Linux 5 D eployment Guide

115

Apart from the differences between hardware and software firewalls, there are also differences in the way firewalls function that separate one solution from another. T abela 2.2, T ipos de Firewall details three common types of firewalls and how they function:

116

Captulo 2. Assegurando sua Rede de Trabalho

T abela 2.2. T ipos de Firewall Mtodo NAT Descrio Converso de Endereos de Rede (Network Address T ranslation - NAT ) insere sub-redes IP internas por trs de um ou um pequeno grupo de endereos IP pblicos, mascarando todos os pedidos para uma fonte ao invs de vrias. Vantagens Pode ser configurado de forma transparente em mquinas de uma LAN A proteo de muitas mquinas e servios atrs de uma ou mais endereos IT externos, simplificam tarefas de administrao. A restrio de acesso ao usurio para e de uma LAN pode ser configurado ao abrir e fechar portas em um NAT firewall/gateway Filtro de Pacotes Um firewall de filtragem de pacotes l cada pacote de dados que passa por dentro e por fora de uma LAN. Pode ler e processar pacotes pela informao do cabealho e filtrar o pacote baseado em conjuntos de regras programveis implementadas pelo administrador do firewall. O kernel do Linux tem a funcionalidade embutida de filtragem de pacotes atravs do sub-sistema Netfilter do kernel. Padronizvel atravs do utilitrio de frente de linha iptables No requer qualquer padronizao no lado do cliente, assim como a atividade de rede filtrada em nvel roteador ao invs de nvel de aplicativo Como os pacotes no so transmitidos atravs de um proxy, o desempenho da rede mais rpido devido conexo direta de cliente ao host remoto. No filtra pacotes para contedo como o proxy firewalls Processa pacotes na camada de protocolo, mas no encontra pacotes de filtro em uma camada de aplicativo Arquiteturas de rede complexas podem fazer com que o estabelecimento de regras de filtragem de pacotes se torne difcil, especialmente se for usado com o mascaramento do IP ou sub-redes locais e redes DMZ . Os proxies so geralmente aplicativos especficos (HT T P, T elnet, etc.) ou protocolos restritos ( a maioria dos proxies funcionam somente com servios conectados T CP) Os servios de aplicativos no podem rodar atrs de um proxy, pois seus servidores de aplicativos devem usar uma forma diferenciada de segurana de rede. Os proxies podem se tornar um gargalo de rede, Desvantagens No pode evitar atividades maldosas uma vez que usurios se conectam a um servio fora do firewall

Proxy

Firewalls de proxy filtram todos os pedidos de um determinado protocolo ou tipo dos clientes LAN para uma mquina proxy, que ento faz estes pedidos Internet representando o cliente local. Uma mquina proxy atua como um buffer entre usurios remotos maldosos e as mquinas dos clientes internos da rede.

Oferece aos administradores, controle sob quais aplicativos e protocolos funcionam fora da LAN Alguns servidores proxy podem efetuar o cache de dados acessados freqentemente localmente ao invs de ter que usar uma conexo de Internet para solicit-lo. Isto ajuda a reduzir o consumo da largura de banda. Os servios proxy podem ser autenticados e

Red Hat Enterprise Linux 5 D eployment Guide

117

monitorados de perto, permitindo um controle mais acirrado sob a utilizao dos recursos na rede.

pois todas as solicitaes e transmisses so passadas atravs de uma fonte ao invs de vir diretamente de um cliente para um servio remoto.

2.8.1. Netfilter 6 O kernel do Linux apresenta um sub-sistema de rede poderoso chamado Netfilter. O sub-sistema Netfilter oferece filtragem de pacote de estado (que guarda o estado das conexes inciadas pelos clientes) ou sem estado/'stateless' (na qual cada pacote analisado individualmente, sem levar em conta pacotes anteriores trocados na mesma conexo), assim como NAT e servios de mascaramento de IP. O Netfilter tambm tem a habilidade de danificar as informaes do cabealho para roteamento avanado e gerenciamento do estado de conexo. O Netfilter controlado atravs da funcionalidade iptables. 2.8.1.1. Viso Geral de IPT ables A potncia e flexibilidade de Netfilter implementada usando a ferramenta de administrao iptables, uma ferramenta de linha de comando similar na sintxe aos seus predecendentes, ipchains. Uma sintxe semelhante, no significa uma implementao semelhante. No entanto, o ipchains requer um jogo regras intrnsecas para: filtrar caminhos de fontes, filtrar caminhos de destino, filtrar ambas as fontes e portas de conexo de destino. No entanto, iptables usa o sub-sistema do Netfilter para melhorar a conexo, inspeo e processamento de rede. O iptables inclui registro avanado, aes pr e ps-roteamento, converso de endereos de rede e encaminhamento de porta; tudo em apenas uma interface de linha de comando. T his section provides an overview of iptables. For more detailed information, refer to Seo 2.9, IPT ables. 2.8.2. Configuraes Bsicas de Firewall Assim como uma parede em uma construo evita que o fogo se alastre, um firewall evita que softwares maliciosos se alastrem em seu computador. Isto tambm ajuda a evitar que usurios desautorizados acessem seu computador. Em uma instalao Red Hat Enterprise Linux padro, um firewall existe entre seu computador ou rede e qualquer rede no confivel, por exemplo a Internet. Isto determina quais servios no seu computador podem ser acessados por usurios remotos. Um firewall configurado pode aumentar consideravelmente a segurana de seu sistema. recomendvel que voc configure um firewall para qualquer sistema Red Hat Enterprise Linux que tenha conexo de Internet. 2.8.2.1. Security Level Configuration T ool Durante a tela Configurao do Firewall na instalao do Red Hat Enterprise Linux, voc teve a opo de habilitar um firewall bsico assim como permitir alguns dispositivos bsicos, servios e portas. After installation, you can change this preference by using the Security Level Configuration T ool. Para iniciar este aplicativo, use o seguinte comando:
[root@myServer ~] # system-config-securitylevel

118

Captulo 2. Assegurando sua Rede de Trabalho

Figura 2.15. Security Level Configuration T ool

Nota
T he Security Level Configuration T ool only configures a basic firewall. If the system needs more complex rules, refer to Seo 2.9, IPT ables for details on configuring specific iptables rules.

2.8.2.2. Habilitando e Desabilitando o Firewall Selecione uma das seguintes opes para o firewall: Desabilitado Desabilitar o firewall, oferece acesso completo ao seu sistema e no checa sua segurana. Este tem deve ser selecionado somente se voc estiver rodando em uma rede confivel (no na Internet) ou se precisar configurar um firewall padronizado usando ferramentas de linha de comando iptables.

Ateno
Configuraes Firewall e qualquer regras firewall padronizadas esto armazenadas no arquivo /etc/sysconfig/iptables. Se voc escolher Disabilitado e clicar em OK, estas configuraes e regras de firewall sero perdidas. Habilitado Esta opo configura o sistema para rejeitar conexes recebidas que no estejam na resposta para solicitaes de sada, assim como respostas de DNS ou solicitaes de DHCP. Se for necessrio acessar servios que estejam rodando nesta mquina, voc poder escolher permitir servios especficos atravs do firewall. Se voc estiver conectando seu sistema Internet, mas no planeja rodar um servidor, esta escolha a mais rpida. 2.8.2.3. Servios Confiveis

Red Hat Enterprise Linux 5 D eployment Guide

119

Habilitar opes na lista de servios Confiveis permite que servios especficos passem atravs do firewall. WWW (HT T P) O protocolo HT T P utilizado pelo Apache ( e por outros servidores de Web) para servir pginas da web. Se voc planeja disponibilizar seu servidor de Web ao pblico, selecione este tem. Esta opo no solicitada para visualizar pginas locais ou para desenvolver pginas na web. Este servio requer a instalao de um pacote httpd . Habilitar o WWW (HT T P) no abrir uma porta para HT T PS, a verso SSL do HT T P. Se este servio for solicitado, selecione Secure WWW (HT T PS). FT P O protocolo FT P utilizado para transferir arquivos entre mquinas em uma rede. Se voc planeja disponibilizar seu servidor FT P ao pblico, selecione este tem. Este servio requer a instalao de um pacote vsftpd . SSH Secure Shell (SSH) um conjunto de ferramentas para comandos de registro e execuo em uma mquina remota. Para permitir acesso remoto uma mquina via ssh, selecione este tem . Este servio requer a instalao do pacote openssh-server . T elnet T elnet um protocolo para registro de mquinas remotas. T elnet comunicaes no so criptografadas e no oferecem nenhuma segurana de snooping de rede. No recomendvel permitir o acesso de T elnet recebidas. Este servio requer a instalao do pacote telnetserver . Mail (SMT P) SMT P is a protocol that allows remote hosts to connect directly to your machine to deliver mail. You do not need to enable this service if you collect your mail from your ISP's server using POP3 or IMAP, or if you use a tool such as fetchm ail . T o allow delivery of mail to your machine, select this check box. Note that an improperly configured SMT P server can allow remote machines to use your server to send spam. NFS4 O Sistema de Arquivo de Rede (NFS) um arquivo que compartilha protocolos geralmente usados nos sistemas *NIX. Verso 4 deste protocolo mais seguro do que seus precedentes. Se desejar compartilhar arquivos ou diretrios em seu sistema com outros usurios de rede, selecione este tem. Sam ba Samba is an implementation of Microsoft's proprietary SMB networking protocol. If you need to share files, directories, or locally-connected printers with Microsoft Windows machines, select this check box.

120

Captulo 2. Assegurando sua Rede de Trabalho

2.8.2.4 . Outras Portas T he Security Level Configuration T ool includes an Other ports section for specifying custom IP ports as being trusted by iptables. For example, to allow IRC and Internet printing protocol (IPP) to pass through the firewall, add the following to the Other ports section: 194 :tcp,631:tcp 2.8.2.5. Salvando Configuraes Clique em OK para salvar mudanas e habilitar ou desabilitar o firewall. Se o Habilitar firewall foi selecionado, as opes selecionadas so traduzidas para os comandos iptables e escritas para o arquivo /etc/sysconfig/iptables. O servio iptables tambm iniciado, assim o firewall imediatamente ativado aps salvar as opes selecionadas. Se o Desabilitar firewall foi selecionado, o arquivo /etc/sysconfig/iptables removido e o servio iptables bloqueado imediatamente. T he selected options are also written to the /etc/sysconfig/system -config-securitylevel file so that the settings can be restored the next time the application is started. Do not edit this file by hand. Even though the firewall is activated immediately, the iptables service is not configured to start automatically at boot time. Refer to Seo 2.8.2.6, Ativando o Servio IPT ables for more information. 2.8.2.6. Ativando o Servio IPT ables As regras do firewall ficam ativas somente se o servio iptables estiver rodando. Para inici-lo manualmente, use o seguinte comando:
[root@myServer ~] # service iptables restart

Para fazer com que o iptables inicie por padro sempre que o sistema inicializado, use o seguinte comando:
[root@myServer ~] # chkconfig --level 345 iptables on

O servio ipchains no est incluso no Red Hat Enterprise Linux. No entanto, se o ipchains for instalado (por exemplo, se uma houve uma atualizao e o sistema j possuia o ipchains instalado previamente.), os servios ipchains e iptables no devem ser ativado simultaneamente. Para assegurar-se de que o servio ipchains est desabilitado e configurado para no iniciar em tempo de inicializao, use os seguintes dois comandos:
[root@myServer ~] # service ipchains stop [root@myServer ~] # chkconfig --level 345 ipchains off

2.8.3. Usando IPT ables O primeiro passo para usar o iptables inici-lo. Isto pode ser feito com o comando:
[root@myServer ~] # service iptables start

Red Hat Enterprise Linux 5 D eployment Guide

121

Nota
Os servios ip6tables devem ser desligados para usar o servio iptables. Se voc desativar o servio ip6tables, lembre-se de desativar a rede IPv6 tambm. Nunca deixe um dispositivo de rede ativo sem um firewall compatvel. Para fazer com que o ip6tables inicie por padro sempre que o sistema for inicializado, use o seguinte comando:
[root@myServer ~] # chkconfig --level 345 iptables on

Para fazer com que o iptables inicie sempre que o sistema inicializado em nvel de execuo 3,4 ou 5. 2.8.3.1. Sintxe de Comando IPT ables Os seguintes exemplos do comando iptables ilustram a sintxe bsica do comando:
[root@myServer ~ ] # iptables -A <chain> -j <target>

T he -A option specifies that the rule be appended to <chain>. Each chain is comprised of one or more rules, and is therefore also known as a ruleset. As trs correntes internas so INPUT , OUT PUT e FORWARD. Estas correntes so permanentes e no podem ser deletadas. A corrente especifica o ponto no qual um pacote manipulado. T he -j <target> option specifies the target of the rule; i.e., what to do if the packet matches the rule. Examples of built-in targets are ACCEPT , DROP, and REJECT . A pgina man do iptables tambm contm um informaes sobre correntes disponveis, opes e alvos. 2.8.3.2. Normas Bsicas de Firewall Estabelecer normas bsicas de firewall cria uma base para construir mais regras definidas pelo usurio detalhadamente. Cada corrente iptables composta por uma norma padro e mais de uma regra que funcione de comum acordo com a norma padro para definir um conjunto de regras gerais para o firewall. A poltica padro para uma corrente pode tanto derrubar (DROP) quanto aceitar (ACCEPT ). Administradores com foco em segurana geralmente escolhem derrubar todos os pacotes como uma norma e s permitem pacotes especficos, analisando-os caso-a-caso. As seguintes regras bloqueiam todos os pacotes entrando e saindo de uma porta de comunicao (gateway) de rede:
[root@myServer ~ ] # iptables -P INPUT DROP [root@myServer ~ ] # iptables -P OUTPUT DROP

Adicionalmente, recomendado que qualquer pacote encaminhado trfego de rede roteado do firewall para seu ndulo de destino seja negado tambm, para restringir os clientes internos da exposio inadvertida Internet. Para fazer isso, use a seguinte regra:
[root@myServer ~ ] # iptables -P FORWARD DROP

Aps definir as normas de correntes, voc pode criar novas regras para a sua rede e seus requisitos

122

Captulo 2. Assegurando sua Rede de Trabalho

de segurana em particular. As sees a seguir descrevem como salvar regars iptables e sublimar algumas das regras que voc pode implementar ao longo da construo de seu firewall iptables. 2.8.3.3. Salvando e Restaurando Regras do IPT ables As mudanas para iptables so transitrias. Se o sistema ou o servio iptables forem reiniciados as regras sero automaticamente liberadas e redefinidas. Para salvar as regras de modo que elas sejam carregadas posteriormente, quando o servio iptables for iniciado, use o seguinte comando:
[root@myServer ~ ] # service iptables save

As regras so armazenadas no arquivo /etc/sysconfig/iptables e so aplicadas sempre que o servio iniciado, reiniciado ou quando a mquina reinicializada. 2.8.4 . Filtros de IPT ables Comuns Prevenir ataques remotos ao acessar uma LAN um dos mais importantes aspectos de segurana de rede. A integridade de uma LAN deveria ser protegida de usurios remotos maliciosos atravs do uso de regras severas de firewall. No entanto, com uma poltica padro ajustada para bloquear todos os pacotes de entrada, sada e enviados, possvel que o firewall/gateway e usurios de LAN internos se comunicarem uns com os outros ou com recursos externos. Para permitir que usurios realizem funes relacionadas rede e usem aplicativos de rede, os administradores devem abrir certas portas para comunicao. Por exemplo: para permitir o acesso porta 80 pelo firewall, adicione a seguinte regra:
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Isto permite que usurios naveguem as pginas da web que se comunicam utilizando a porta 80 padronizada. Para permitir o acesso a sites seguros (como https://www.example.com/), voc deve abrir a porta 443 tambm, como se segue:
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Importante
Ao criar um conjunto de regras iptables, a ordem muito importante. Se uma regra especifica que qualquer pacote de sub-rede 192.168.100.0/24 pode ser derrubado, e seguido de uma regra que permite os pacotes do 192.168.100.13 (que est dentro da sub-rede restrita derrubada), ento a regra adicionada ignorada. A regra para permitir pacotes de 192.168.100.13 deve preceder a regra que derruba o lembrete do subnet. Para inserir uma regra em um local especfico em uma corrente existente, use a opo -I. Por exemplo:
[root@myServer ~ ] # iptables -I INPUT 1 -i lo -p all -j ACCEPT

A regra inserida como a primeira no conjunto INPUT para permitir o trfego do dispositivo loopback local. Quando voc solicitar acesso remoto uma LAN, use servios seguros como o SSH, para conexes

Red Hat Enterprise Linux 5 D eployment Guide

123

remotas criptografadas servios LAN. Administradores com recursos baseados em PPP (tais como, bancos de modem ou grupos de contas ISP) podem utilizar acesso discado para driblar as barreiras firewall de forma segura. Como as conexes so diretas, as conexes de modem esto sempre atrs de um firewall/gateway. No entanto, para usurios remotos com conexes de banda larga existem excees para casos especiais. Voc pode configurar iptables para aceitar conexes de clientes SSH remotos. Por exemplo, as seguintes regras permitem um acesso remoto SSH:
[root@myServer ~ ] # iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@myServer ~ ] # iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

Estas regras permitem o acesso de entrada e sada para um nico sistema, como um PC conectado diretamente Internet ou firewall/porta de comunicao (gateway). No entanto, no permitem que os ndulos por trs do firewall/porta de comunicao acessem estes servios. Para permitir o acesso LAN a estes servios, voc pode usar a Converso de Endereos de Rede (Network Address T ranslation NAT ) com regras de filtragem do iptables. 2.8.5. Regras FORWARD e NAT A maioria dos ISPs oferecem somente um nmero limitado de endereos IP rotveis publicamente para as organizaes que eles servem. Os administradores devem portanto, encontrar formas alternativas de compartilhar acesso aos servios de Internet sem disponibilizar os endereos IP pblicos a todos os ns da LAN. Usar endereos IP privados a forma mais comum de permitir que todos os ns em uma LAN acessem devidamente servios de rede internos e externos. Roteadores de borda (tais como os firewalls) podem receber transmisses de entrada da Internet e rotear os pacotes aos ns de LAN previstos. Da mesma forma, os firewalls/gateways podem tambm rotear solicitaes de sada de um n de LAN ao servio de Internet remoto. T his forwarding of network traffic can become dangerous at times, especially with the availability of modern cracking tools that can spoof internal IP addresses and make the remote attacker's machine act as a node on your LAN. Para evitar que isto acontea, o comando iptables oferece um roteamento e envio de polticas que podem ser implementadas para evitar uso anormal de recursos de rede. A norma FORWARD permite que um administrador controle onde os pacotes podem ser roteados em uma LAN. Por exemplo: para permitir o encaminhamento para a LAN inteira (assumindo que o firewall/porta de comunicao tenha um endereo IP interno na eth 1), as seguintes regras podem ser definidas:
[root@myServer ~ ] # iptables -A FORWARD -i eth1 -j ACCEPT [root@myServer ~ ] # iptables -A FORWARD -o eth1 -j ACCEPT

Essa regra da acesso para a rede interna aos sistemas por trs do firewall/porta de comunicao. A porta de comuncao roteia os pacotes de um ndulo da LAN para o seu ndulo pretendido, passando todos os pacotes atravs de seu dispositivo eth1 .

124

Captulo 2. Assegurando sua Rede de Trabalho

Nota
Por padro, a norma IPV4 nos kernels do Red Hat Enterprise Linux desabilita o suporte para encaminhamento do IP, o que evita que caixas rodando o Red Hat Enterprise Linux funcionem como roteadores de borda dedicados. Para habilitar o encaminhamento do IP, execute o seguinte comando:
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1

A mudana desta configurao vlida somente para sesses atuais, ela no persiste alm de um reboot ou uma reinicializao de servio de rede. Para ajustar permanentemente o envio de IP, edite o arquivo /etc/sysctl.conf como se segue: Localize a seguinte linha:
net.ipv4.ip_forward = 0

Edite-a para ler como se segue:


net.ipv4.ip_forward = 1

Execute o seguinte comando para ativar a alterao do arquivo sysctl.conf :


[root@myServer ~ ] # sysctl -p /etc/sysctl.conf

2.8.5.1. Ps-roteamento (Postrouting) e Mascaramento de IP Accepting forwarded packets via the firewall's internal IP device allows LAN nodes to communicate with each other; however they still cannot communicate externally to the Internet. T o allow LAN nodes with private IP addresses to communicate with external public networks, configure the firewall for IP masquerading, which masks requests from LAN nodes with the IP address of the firewall's external device (in this case, eth0):
[root@myServer ~ ] # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

T his rule uses the NAT packet matching table (-t nat) and specifies the built-in POST ROUT ING chain for NAT (-A POST ROUT ING ) on the firewall's external networking device (-o eth0 ). POST ROUT ING allows packets to be altered as they are leaving the firewall's external device. O alvo -j MASQUERADE especificado para mascarar o endereo IP privado de um n com endereo IP externo do firewall/gateway 2.8.5.2. Prerouting (Pr-roteamento) Se voc tem um servidor em sua rede interna que deseja disponibilizar externamente, pode usar o alvo -j DNAT da corrente PREROUT ING na NAT para especificar um endereo IP e porta de destino para onde encaminhar os pacotes de entrada requisitando uma conexo. Por exemplo, se voc deseja encaminhar os pedidos HT T P de entrada para seu Servidor HT T P Apache dedicado para 172.31.0.23, submeta o seguinte comando:
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80

Red Hat Enterprise Linux 5 D eployment Guide

125

Esta regra especifica que a tabela nat usa a corrente PREROUT ING embutida para encaminhar pacotes HT T P de entrada exclusivamente para o endereo IP 172.31.0.23 listado.

Nota
Se voc tem uma norma padro DROP na sua corrente FORWARD, deve adicionar uma regra para permitir o encaminhamento de pedidos HT T P de entrada para possibilitar o roteamento do destino da NAT . Para fazer isso, submeta o seguinte comando:
[root@myServer ~ ] # iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT

Esta regra permite o encaminhamento de pedidos de entrada HT T P do firewall para seu destino pretendido no ApacheHT T P por trs do firewall.

2.8.5.3. DMZ s e IPT ables As regras do iptables tambm podem ser definidas para rotear trfego para determinadas mquinas, como um servidor dedicado HT T P ou FT P, numa zona desmilitarizada (DMZ ). A DMZ uma sub-rede local especial dedicada a prover servios num meio pblico como a Internet. Por exemplo: para definir uma regra para rotear os pedidos HT T P externos para um servidor HT T P dedicado no endereo IP 10.0.4.2 (fora do intervalo 192.168.1.0/24 da LAN), a traduo de endereo de rede (NAT ) evoca uma tabela PREROUT ING para encaminhar os pacotes ao destino apropriado:
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80

Com este comando, todas as conexes HT T P para a porta 80 de fora da LAN so roteadas ao servidor HT T P em uma rede separada do resto da rede interna. Esta forma de segmentao de rede pode ser mais segura que permitir conexes HT T P para uma mquina na rede. Se o servidor HT T P estiver configurado para aceitar conexes seguras, ento a porta 443 deve ser encaminhada tambm. 2.8.6. Software Malicioso e Endereos IP Falsificados (spoofed) Regras mais elaboradas podem ser criadas para controlar acesso a sub-redes especficas, ou at mesmo ns especficos, dentro de uma LAN. Voc tambm pode restringir certos aplicativos duvidosos ou programas, tais como trojans, worms, e outros vrus de client/server ao contatar os servidores da LAN. Por exemplo, alguns trojans escaneiam redes para servios em portas de 31337 at 31340 (chamados de portas elitena terminologia de crack) J que nao existe nenhum servio legtimo que comunique atravs destas portas no padronizadas, ao bloque-las voc pode diminuir consideravelmente as chances de ns, com vrus em sua rede, se comunicarem de forma independente com seus servidores master remotos. As regras a seguir, derruban todo o trnsito de T CP que tentar usar a porta 31337:
[root@myServer ~ ] # iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP [root@myServer ~ ] # iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP

Voc tambm poder bloquear conexes exteriores que tentem falsificar a variedade de endereos IP

126

Captulo 2. Assegurando sua Rede de Trabalho

privados para infiltrar em sua LAN. Por exemplo: se uma LAN usa o intervalo 192.168.1.0/24, uma regra pode determinar que o dispositivo de rede, que faz a interface com a Internet (eth0, por exemplo), derrube quaisquer pacotes para este dispositivo com um endereo do intervalo de IP de sua LAN. Como norma padro, recomendado rejeitar pacotes encaminhados, portanto qualquer outro endereo IP espionado ao dispositivo que faz a interface externa (eth0) rejeitado automaticamente.
[root@myServer ~ ] # iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP

Nota
Existe uma distino entre os alvos DROP eREJECT ao lidar com as regras adicionadas. O alvo REJECT nega acesso e retorna um erro connection refused (conexo negada) para usurios que tentarem se conectar ao servio. A ao DROP (derrubar) um alvo, como o nome sugere, derruba os pacotes sem nenhum aviso. Administradores podem usar seu prprio bom senso ao lidar com estes alvos; entretanto, para evitar a confuso do usurio e tentativas para continuar conectando, recomenda-se usar o alvo REJECT .

2.8.7. IPT ables e Rastreamento de Conexo O iptables inclui um mdulo que permite que osadministradores inspecionem e restrinjam conexes a servios disponveis numa rede interna, usando um mtodo chamado registro de conexo (connection tracking). O registro de conexo armazena as conexes numa tabela, que possibilita os administradores permitir ou negar acesso baseado nos seguintes estados de conexo: NEW (novo) Um pacote requisitando uma nova conexo, como um pedido HT T P. EST ABLISHED (estabelecido) Um pacote que parte de uma conexo existente. RELAT ED (relacionado) Um pacote solicitando uma nova conexo, mas que parte de uma conexo existente. Por exemplo, conexes FT P usam a porta 21 para estabelecer conexo, mas os dados so transferidos para uma porta diferente (geralmente para a 20). INVALID (invlido) Um pacote que no faz parte de nenhuma das conexes da tabela de registro das conexes. Voc pode usar a funcionalidade de estado do registro de conexes do iptables com qualquer protocolo de rede, mesmo que o prprio protocolo seja sem estado (como o UDP). O exemplo a seguir mostra uma regra que usa o registro de conexo para encaminhar somente os pacotes associados a uma conexo estabelecida:
[root@myServer ~ ] # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

2.8.8. IPv6 A introduo do Protocolo de Internet de ltima gerao chamado IPv6, vai alm do limite de endereos de 32 bits do IPv4 (ou IP). IPv6 suporta endereos de 128 bits e, como tal, redes de transporte cientes do IPv6 so capazes de lidar com um nmero maior de endereos roteveis que o IPv4. O Red Hat Enterprise Linux suporta regras de firewall IPv6 usando o sub-sistema Netfilter 6 e o comando ip6tables. Em Red Hat Enterprise Linux 5, os servios IPv4 e IPv6 so habilitados por padro. A sintxe idntica do iptables em todos os aspectos, exceto pelo fato do ip6tables suportar

Red Hat Enterprise Linux 5 D eployment Guide

127

endereos de 128 bits. Por exemplo: as conexes SSH em um servidor de rede ciente do IPv6 podem ser possibilitadas pela seguinte regra:
[root@myServer ~ ] # ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 -dport 22 -j ACCEPT

Para mais informaes sobre redes com IPv6, consulte a pgina de informaes sobre o IPv6: http://www.ipv6.org/. 2.8.9. Recursos Adicionais H diversos aspectos do firewall e do sub-sistema Netfilter do Linux que no foram abordados neste captulo. Para mais informaes, consulte os seguintes recursos. 2.8.9.1. Documentao Instalada Refer to Seo 2.9, IPT ables for more detailed information on the iptables command, including definitions for many command options. A pgina man do iptables tambm contm um breve resumo das vrias opes. 2.8.9.2. Pginas da Web teis http://www.netfilter.org/ O site oficial do Netfilter e do projeto iptables. http://www.tldp.org/ O Projeto de Documentao do Linux contm diversos guias teis relacionados criao e administrao do firewall. http://www.iana.org/assignments/port-numbers A lista oficial de portas de servios comuns conforme definio da 'Internet Assigned Numbers Authority'. 2.8.9.3. Documentao Relacionada Red Hat Linux Firewalls, de Bill McCarty; Red Hat Press uma referncia detalhada para a criao de firewalls de rede e servidores usando tecnologia de filtragem de pacote de cdigo aberto como Netfilter e iptables. Inclui tpicos como a anlise de registros de firewalls, criao de regras de firewall e a personalizao de seu firewall com ferramentas grficas como lokkit. Linux Firewalls, de Robert Z iegler; New Riders Press. contm muitas informaes sobre a criao de firewalls usando o ipchains do kernel 2.2, assim como o Netfilter e iptables. T picos adicionais de segurana, como questes de acesso remoto e sistemas de deteco de intruso tambm so abordados.

2.9. IPTables
O Red Hat Enterprise Linux inclui ferramentas avanadas para a filtragem de pacotes de rede o processo de controlar pacotes enquanto os mesmos, entram, trafegam, e saem da stack de rede do kernel. Verses do kernel anteriores 2.4 dependiam do ipchains para a filtragem de pacotes e usava listas de regras para pacotes a cada passo do processo de filtragem. O kernel 2.4 introduziu iptables (tambm chamado de netfilter), que similar ao ipchains mas expande significativamente o mbito e o controle disponveis para a filtragem de pacotes de rede. Este captulo trata de noes bsicas de filtragem de pacotes, define as diferenas entre ipchains e iptables, explica vrias opes disponveis com os comandos do iptables, e detalha como regras de filtragem podem ser preservadas entre reinicializaes do sistema. Refer to Seo 2.9.7, Recursos Adicionais for instructions on how to construct iptables rules and setting up a firewall based on these rules.

128

Captulo 2. Assegurando sua Rede de Trabalho

Ateno
O mecanismo de firewall padro nos kernels de verses 2.4 e mais recentes o iptables, mas o iptables, no pode ser usado se o ipchains j estiver rodando. Se o ipchains estiver presente durante a inicializao do sistema, o kernel emite um erro e falha em iniciar o iptables. A funcionalidade do ipchains no afetada por esses erros.

2.9.1. Filtragem de Pacotes O kernel do Linux usa o Netfilter para a filtragem de pacotes, permitindo que alguns pacotes alcancem ou passem pelo sistema, enquanto outros so barrados. Esta funcionalidade est embutida no kernel do Linux, e possui trs tabelas ou listas de regras padro: filter A tabela padro usada para lidar com pacotes de rede. nat Usada para alterar pacotes que criem uma nova conexo, e tambm usado para Converso de Endereos de Rede (Network Address T ranslation - NAT ). m angle Usada para tipos especficos de alteraes de pacotes. Cada tabela tem um grupo de cadeias embutidas, as quais correspondem s aes executadas no pacote pelo netfilter . As cadeias embutidas para a tabela filter so as seguintes: INPUT Aplicvel a pacotes de rede que sejam destinados ao host. OUTPUT Aplicvel a pacotes de rede gerados localmente. FORWARD Aplicvel a pacotes de rede roteados atravs do host. As cadeias embutidas para a tabela nat so as seguintes: PREROUTING Altera pacotes de rede assim que eles chegam. OUTPUT Altera pacotes de rede criados localmente antes que os mesmos sejam enviados. POSTROUTING Altera pacotes de rede antes que que os mesmos sejam enviados. As cadeias embutidas para a tabela m angle so as seguintes: INPUT Altera pacotes de rede destinados ao host. OUTPUT Altera pacotes de rede criados localmente antes que os mesmos sejam enviados. FORWARD altera pacotes de rede roteados atravs do host. PREROUTING Altera pacotes de rede de entrada antes que eles sejam roteados. POSTROUTING Altera pacotes de rede antes que que os mesmos sejam enviados. Cada pacote de rede recebido ou enviado por um sistema Linux est sujeito a pelo menos uma tabela. Entretanto, um pacote pode ser submetido mltiplas regras em uma tabela antes de chegar ao fim da cadeia. A estrutura e o propsito destas regras podem variar, mas normalmente buscam identificar um pacote vindo de ou indo para um endereo IP especfico, ou um grupo de endereos IP, ao usar certos protocolos ou servios de rede.

Red Hat Enterprise Linux 5 D eployment Guide

129

Nota
De acordo com a configurao padro, regras de firewall so salvas nos arquivos /etc/sysconfig/iptables ou /etc/sysconfig/ip6tables. O servio iptables inicia antes de qualquer servio relacionado ao DNS durante a inicializao de um sistema Linux. Isto significa que regras de firewall podem apenas fazer referncia a endereos IP numricos (por exemplo, 192.168.0.1). Nestas regras, endereos no numricos (por exemplo, host.exemplo.com) produziro erros. Regardless of their destination, when packets match a particular rule in one of the tables, a target or action is applied to them. If the rule specifies an ACCEPT target for a matching packet, the packet skips the rest of the rule checks and is allowed to continue to its destination. If a rule specifies a DROP target, that packet is refused access to the system and nothing is sent back to the host that sent the packet. If a rule specifies a QUEUE target, the packet is passed to user-space. If a rule specifies the optional REJECT target, the packet is dropped, but an error packet is sent to the packet's originator. Cada cadeia tem uma diretiva padro para ACCEPT , DROP , REJECT , ou QUEUE . Se nenhuma das regras da cadeia aplicvel ao pacote, o mesmo tratado de acordo com a diretiva padro. O comando iptables configura estas tabelas, e cria novas tabelas se necessrio. 2.9.2. Diferenas entre IPT ables e IPChains T anto o ipchains quanto o iptables usam cadeias de regras que operam dentro do kernel do Linux filtrando pacotes com base na correspondncia certas regras ou conjuntos de regras. Entretanto, o iptables representa uma forma mais extensvel de filtrar pacotes, dando ao administrador maior controle sem precisar agregar complexidades desnecessrias ao sistema. Voc deve estar ciente das seguintes diferenas significantes entre o ipchains e o iptables: Using iptables, each filtered packet is processed using rules from only one chain rather than multiple chains. Por exemplo, um pacote FORWARD entrando em um sistema usando o ipchains teria que passar pelas cadeias INPUT , FORWARD, e OUT PUT para continuar at o seu destino. Entretanto, o iptables apenas envia pacotes cadeia INPUT se eles forem destinados ao sistema local, e apenas envia pacotes cadeia OUT PUT se eles foram gerados pelo sistema local. Assim sendo, importante colocar a regra projetada para apanhar um certo pacote dentro da cadeia que realmente lida com aquele pacote. The DENY target has been changed to DROP. No ipchains, pacotes que correspondessem a uma regra em uma cadeia podiam ser direcionados ao alvo DENY. Este alvo deve ser modificado para DROP no iptables. Order matters when placing options in a rule. No ipchains, a ordem das opes de uma regra no importa. O comando iptables tem uma sintaxe mais rigorosa. O comando iptables solicita que o protocolo (ICMP, T CP, ou UDP) seja especificado antes das portas de origem ou destino. Network interfaces must be associated with the correct chains in firewall rules.

130

Captulo 2. Assegurando sua Rede de Trabalho

Por exemplo, interfaces de entrada (opo -i ) podem apenas ser usadas em cadeias INPUT ou FORWARD. Da mesma forma, interfaces de sada (opo -o ) podem apenas ser usadas em cadeias FORWARD ou OUT PUT . Ou seja, cadeias INPUT e interfaces de entrada trabalham juntas assim como cadeias OUT PUT e interfaces de sada trabalham juntas. Cadeias FORWARD funcionam tanto com interfaces de entrada quanto de sada. Cadeias OUT PUT no so mais usadas por interfaces de entrada, e cadeias INPUT no so vistas por pacotes trafegando atravs das interfaces de sada.

T his is not a comprehensive list of the changes. Refer to Seo 2.9.7, Recursos Adicionais for more specific information. 2.9.3. Opes de Comando para o IPT ables Regras para a filtragem de pacotes so criadas usando o comando iptables. As seguintes caractersticas de um pacote so as mais usadas como critrios: Tipo de Pacote Especifica o tipo dos pacotes que o comando deve filtrar. Origem/Destino do Pacote Especifica quais pacotes o comando filtra baseado na origem ou no destino do pacote. Alvo Especifica qual ao tomada em relao a pacotes que correspondam aos critrios acima. Refer to Seo 2.9.3.4, Opes de Correspondncia do IPT ables and Seo 2.9.3.5, Opes de Alvo for more information about specific options that address these aspects of a packet. As opes usadas com regras especficas do iptables devem ser agrupadas de maneira lgica, com base no propsito e condies da regra, para que a mesma seja vlida. O resto desta seo explica opes geralmente usadas com o comando iptables. 2.9.3.1. Estrutura das Opes de Comando do IPT ables Muitos dos comandos do iptables tem a seguinte estrutura:
iptables [-t <table-name>] <command> <chain-name> \ <parameter-1> <option-1> \ <parameter-n> <option-n>

<table-name> Specifies which table the rule applies to. If omitted, the filter table is used. <command> Specifies the action to perform, such as appending or deleting a rule. <chain-name> Specifies the chain to edit, create, or delete. <parameter>-<option> pairs Parameters and associated options that specify how to process a packet that matches the rule. A extenso e a complexidade de um comando do iptables pode mudar bastante, de acordo com o seu propsito. Por exemplo, um comando para remover uma regra de uma cadeia pode ser bem curto: iptables -D <chain-name> <line-number> Em contraste, um comando que adicione uma regra que filtre pacotes oriundos de uma subnet especfica, usando uma variedade de parmetros e opes especficos, pode ser bem longo. Ao

Red Hat Enterprise Linux 5 D eployment Guide

131

construir comandos iptables, importante lembrar que alguns parmetros e opes necessitam parmetros e opes adicionais para construir uma regra vlida. Isto pode produzir um efeito cascata. A regra no vlida at que todos os parmetros e opes que necessitem de outro grupo de opes estejam concludos. Digite iptables -h para ver uma lista abrangente de estruturas de comandos iptables. 2.9.3.2. Opes de Comando Opes de comando fazem com que o iptables execute uma ao especfica. Apenas uma opo de linha de comando permitida em cada comando iptables. Com a exceo do comando help, todos os comandos so escritos em letras maisculas. Os comandos do iptables so os seguintes: -A Acrescenta a regra ao final da cadeia especificada. Ao contrrio da opo -I descrita abaixo, -A no aceita um nmero inteiro como argumento. Esta opo sempre acrescenta a regra ao final da cadeia especificada. -C Verifica uma regra especfica antes de adicion-la cadeia especificada pelo usurio. Este comando pode lhe ajudar a construir regras complexas do iptables pedindo que voc digite parmetros e opes adicionais. -D <integer> | <rule> Deletes a rule in a particular chain by number (such as 5 for the fifth rule in a chain), or by rule specification. T he rule specification must exactly match an existing rule. -E Renomeia uma cadeia definida pelo usurio. Uma cadeia definida pelo usurio qualquer uma que no seja uma das padres ou pr-existentes (consulte a opo -N abaixo, para maiores informaes sobre a criao de cadeias definidas pelo usurio). Esta uma mudana apenas cosmtica, e no afeta a estrutura da tabela.

Nota
Se voc tentar renomear uma das cadeias padro, o sistema relatar um erro do tipo Match not found (Correspondente no encontrado). Voc no pode renomear as cadeias padro. -F Esvazia a cadeia selecionada, o que na verdade remove todas as regras da cadeia. Se nenhuma cadeia for selecionada, este comando esvazia todas as regras de todas as cadeias. -h Oferece uma lista de estruturas de comandos, assim como um breve resumo dos parmetros e opes dos comandos. -I [<integer>] Inserts the rule in the specified chain at a point specified by a user-defined integer argument. If no argument is specified, the rule is inserted at the top of the chain.

Ateno
Conforme indicado acima, a ordem das regras em uma cadeia determina quais regras so aplicveis a quais pacotes. importante lembrar disto ao adicionar regras usando as opes -A ou -I. Isto especialmente relevante ao se adicionar regras usando a opo -I como argumento. Se voc especificar um nmero existente ao adicionar uma regra uma cadeia, o iptables adiciona a nova regra antes (ou acima) da regra existente. -L Lista todas as regras da cadeia especificada aps o comando. Para listar todas as regras em todas as cadeias na tabela padro filter , no especifique uma cadeia ou tabela. Caso contrrio, a seguinte sintaxe deve ser usada para listar as regras de uma especfica cadeia em uma especfica tabela:

132

Captulo 2. Assegurando sua Rede de Trabalho

iptables -L <chain-name> -t <table-name>

Additional options for the -L command option, which provide rule numbers and allow more verbose rule descriptions, are described in Seo 2.9.3.6, Opes de Listagem. -N Cria uma nova cadeia com um nome especificado pelo usurio. O nome da cadeia deve ser exclusivo, caso contrrio uma mensagem de erro exibida. -P Estabelece a diretiva padro para a cadeia especificada, de modo que quando pacotes passam pela cadeia toda sem encontrar uma regra correspondente, os mesmos so enviados para o alvo especfico, como ACCEPT ou DROP. -R Replaces a rule in the specified chain. T he rule's number must be specified after the chain's name. T he first rule in a chain corresponds to rule number one. -X Remove uma cadeia especificada pelo usurio. Voc no pode remover uma cadeia padro. -Z Configura os contadores de bytes e de pacotes de todas as tabelas para zero. 2.9.3.3. Opes de Parmetros do IPT ables Alguns comandos do iptables, incluindo aqueles usados para adicionar, remover, inserir ou substituir regras em uma cadeia especfica, requerem vrios parmetros para construir uma regra de filtragem de pacotes. -c Restaura os contadores para uma dada regra. Este parmetro aceita as opes PKT S e BYT ES para especificar quais contadores devem ser restaurados. -d Estabelece o nome de host, endereo IP, ou rede de destino de um pacote que corresponda uma regra. Ao fazer a correspondncia de uma rede, os seguintes formatos de endereos IP e mscaras de rede so suportados: N.N.N.N/M.M.M.M Onde N.N.N.N o intervalo de endereos IP e M.M.M.M a mscara de rede. N.N.N.N/M Onde N.N.N.N o intervalo de endereos IP e M a mscara de bits. -f Aplica esta regra apenas a pacotes fragmentados. Voc pode usar a opo do caractere do ponto de exclamao (!) aps este parmetro para especificar que a regra seja aplicada apenas a pacotes no fragmentados.

Nota
desejvel que se faa a distino entre pacotes fragmentados e no fragmentados, mesmo que pacotes fragmentados representem uma parte padro do protocolo IP. Originally designed to allow IP packets to travel over networks with differing frame sizes, these days fragmentation is more commonly used to generate DoS attacks using mal-formed packets. It's also worth noting that IPv6 disallows fragmentation entirely. -i Estabelece a interface de rede de entrada, como eth0 ou ppp0 . Com o iptables, este parmetro opcional pode ser usado apenas com as cadeias INPUT e FORWARD quando usado com a tabela filter e a cadeia PREROUT ING quando usado com as tabelas nat e m angle . Este parmetro tambm suporta as seguintes opes especiais: Caractere do ponto de exclamao (!) Reverte a diretiva, o que significa que quaisquer interfaces especificadas so excludas desta regra. Caractere de mais (+ ) Um caractere curinga usado para fazer a correspondncia de todas as interfaces que correspondam string especificada. Por exemplo, o parmetro -i eth+ aplicaria esta regra a quaisquer interfaces Ethernet, mas excluiria quaisquer outras interfaces, como ppp0 . Se o parmetro -i usado, mas nenhuma interface especificada, todas as interfaces so afetadas pela regra.

Red Hat Enterprise Linux 5 D eployment Guide

133

-j Pula para o alvo especificado quando um pacote corresponde uma regra especfica. Os alvos padro so ACCEPT , DROP , QUEUE , e RET URN . Opes adicionais esto disponveis atravs de mdulos carregados como padro com o pacote RPM do iptables do Red Hat Enterprise Linux. Alvos vlidos nestes mdulos incluem LOG , MARK, e REJECT , entre outros. Consulte a pgina man do iptables para maiores informaes sobre estes e outros alvos. esta opo tambm pode ser usada para direcionar um pacote correspondendo a uma regra especfica para uma cadeia definida pelo usurio fora da cadeia atual para que outras regras tambm possam ser aplicadas ao pacote. Se nenhum alvo especificado, o pacote passa pela regra sem que nenhuma ao seja executada. O contador desta regra, entretanto, aumentado em uma unidade. -o Estabelece as interfaces de rede de sada para uma regra. Esta opo vlida apenas para as cadeias OUT PUT e FORWARD na tabela filter , e para a cadeia POST ROUT ING nas tabelas nat e m angle . Este parmetro aceita as mesmas opes que o parmetro de interfaces de rede de entrada (-i ). -p <protocol> Sets the IP protocol affected by the rule. T his can be either icm p , tcp , udp , or all , or it can be a numeric value, representing one of these or a different protocol. You can also use any protocols listed in the /etc/protocols file. T he " all " protocol means the rule applies to every supported protocol. If no protocol is listed with this rule, it defaults to " all ". -s Estabelece a origem para um determinado pacote usando a mesma sintaxe do parmetro de destino (-d ). 2.9.3.4 . Opes de Correspondncia do IPT ables Different network protocols provide specialized matching options which can be configured to match a particular packet using that protocol. However, the protocol must first be specified in the iptables command. For example, -p <protocol-name> enables options for the specified protocol. Note that you can also use the protocol ID, instead of the protocol name. Refer to the following examples, each of which have the same effect:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT

Definies de servios aparecem no arquivo /etc/services. Por questes de legibilidade, recomendvel usar os nomes dos servios ao invs dos nmeros de portas.

Importante
Proteja o arquivo /etc/services para prevenir a edio no autorizada. Se este arquivo for editvel, crackers podem us-lo para habilitar portas na sua mquina as quais voc tenha decidido deixar fechadas. Para proteger este arquivo, digite os seguintes comandos como root:
[root@myServer ~]# chown root.root /etc/services [root@myServer ~]# chmod 0644 /etc/services [root@myServer ~]# chattr +i /etc/services

Isto previne que o arquivo seja renomeado, removido, ou que tenha links estabelecidos at ele.

2.9.3.4 .1. Protocolo T CP Estas opes de correspondncia esto disponveis para o protocolo T CP (-p tcp ):

134

Captulo 2. Assegurando sua Rede de Trabalho

--dport Estabelece a porta de destino para o pacote. Para configurar esta opo, use um nome de servio de rede (como www ou smtp), um nmero de porta, ou um intervalo de nmeros de portas. Para especificar um intervalo de nmeros de portas, separe os dois nmeros com um dois pontos (:). Por exemplo: -p tcp --dport 3000:3200 . O maior intervalo vlido aceitvel 0:65535 . Use um ponto de exclamao (!) aps a opo --dport para causar a correspondncia de todos os pacotes que no usem aquele servio ou porta de rede. Para visualizar os nomes e aliases de servios de rede assim como os nmeros de portas que os mesmos usem, veja o arquivo /etc/services. A opo de correspondncia --destination-port equivale a --dport. --sport Estabelece a porta de origem do pacote usando as mesmas opes que --dport. A opo de correspondncia --source-port equivale a --sport. --syn Aplica-se a todos os pacotes T CP concebidos para iniciar a comunicao, normalmente chamados de pacotes SYN. Pacotes que carreguem dados no so manuseados. Use um ponto de exclamao (!) aps a opo --syn para causar a correspondncia de todos os pacotes que no sejam SYN. --tcp-flags <tested flag list> <set flag list> Allows T CP packets that have specific bits (flags) set, to match a rule. A opo de correspondncia --tcp-flags aceita dois parmetros. O primeiro parmetro a mscara, uma lista de sinalizadores separados por vrgulas a serem examinados no pacote. O segundo parmetro uma lista de sinalizadores separados por vrgulas que devem ser definidos para que a regra corresponda. Os sinalizadores possveis so: ACK FIN PSH RST SYN URG ALL NONE Por exemplo, uma regra iptables que contenha a seguinte especificao corresponde apenas a pacotes T CP que tenham o sinalizador SYN definido e os sinalizadores ACK e FIN no definidos: --tcp-flags ACK,FIN,SYN SYN Use um ponto de exclamao (!) aps --tcp-flags para reverter o efeito da opo de correspondncia. --tcp-option T enta corresponder opes especficas de T CP que possam ser estabelecidas dentro de um pacote especfico. Esta opo de correspondncia tambm pode ser revertida usando o ponto de exclamao (!). 2.9.3.4 .2. Protocolo UDP Estas opes de correspondncia esto disponveis ao protocolo UDP (-p udp ): --dport Especifica a porta de destino para o pacote UDP, usando o nome do servio, nmero da porta, ou intervalo de nmeros de portas. A opo de correspondncia --destination-port equivale --dport. --sport Especifica a porta de origem para o pacote UDP, usando o nome do servio, nmero da porta, ou intervalo de nmeros de portas. A opo de correspondncia --source-port equivale a --sport.

Red Hat Enterprise Linux 5 D eployment Guide

135

Para especificar um intervalo de nmeros de portas para as opes --dport e --sport, separe os dois nmeros usando dois pontos (:). Por exemplo: -p tcp --dport 3000:3200 . O maior intervalo vlido aceitvel 0:65535. 2.9.3.4 .3. Protocolo ICMP As seguintes opes de correspondncia esto disponveis para o Internet Control Message Protocol (ICMP) (-p icm p ): --icm p-type Estabelece o nome ou o nmero do tipo de ICMP a corresponder regra. Uma lista de nomes de ICMP vlidos pode ser obtida digitando o comando iptables -p icm p -h . 2.9.3.4 .4 . Mdulos Adicionais de Opes de Correspondncia Opes de correspondncia adicionais esto disponveis atravs de mdulos carregados pelo comando iptables. T o use a match option module, load the module by name using the -m <module-name>, where <module-name> is the name of the module. Vrios mdulos esto disponveis por default. Voc tambm pode criar mdulos para oferecer funcionalidades adicionais. A seguinte lista parcial indica os mdulos geralmente mais usados: Mdulo lim it Coloca um limite no nmero de pacotes que podem corresponder uma dada regra. Quando usado com o alvo LOG , o mdulo lim it pode prevenir que uma enxurrada de pacotes correspondentes encham o arquivo de registro do sistema com mensagens repetitivas ou utilizem recursos do sistema demasiadamente. Refer to Seo 2.9.3.5, Opes de Alvo for more information about the LOG target. O mdulo lim it habilita as seguintes opes: --lim it Sets the maximum number of matches for a particular time period, specified as a <value>/<period> pair. For example, using --lim it 5/hour allows five rule matches per hour. Perodos podem ser especificados em segundos, minutos, horas ou dias. Se um modificador no for indicado, o valor padro 3/hour usado. --lim it-burst Estabelece um limite ao nmero de pacotes que podem corresponder uma regra ao mesmo tempo. Esta opo especificada como um nmero inteiro e deve ser usada junto com a opo -lim it. Se nenhum valor for especificado, o valor padro (5) usado. Mdulo state Habilita a correspondncia de estados. O mdulo state habilita as seguintes opes: --state Faz a correspondncia de um pacote com os seguintes estados de conexo: EST ABLISHED O pacote correspondente associado a outros pacotes em uma conexo estabelecida. Voc deve aceitar este estado se voc quiser manter uma conexo entre um cliente e um servidor. INVALID O pacote correspondente no pode ser atrelado uma conexo conhecida. NEW O pacote correspondente ou est criando uma nova conexo ou faz parte de uma conexo de duas mos no vista antes. Voc precisa aceitar este estado se voc quiser permitir novas conexes a um servio. RELAT ED O pacote correspondente est iniciando uma nova conexo relacionada de

136

Captulo 2. Assegurando sua Rede de Trabalho

alguma forma uma conexo existente. Um exemplo disto o FT P, o qual usa uma conexo para controle de trfego (porta 21), e uma conexo separada para transferncia (porta 20). Estes estados de conexo podem ser usados um com o outro separando-os por vrgulas, como -m state --state INVALID,NEW. Mdulo m ac Habilita a correspondncia de hardware usando endereos MAC. O mdulo m ac habilita a seguinte opo: --m ac-source Faz a correspondncia usando um endereo MAC da placa de interface de rede que enviou o pacote. Para excluir um endereo MAC de uma regra, coloque um ponto de exclamao (!) aps a opo de correspondncia --m ac-source . Consulte a pgina man do iptables para mais opes de correspondncia disponveis aos diversos mdulos. 2.9.3.5. Opes de Alvo Quando um pacote corresponde uma regra especfica, a regra pode direcionar o pacote para uma variedade de alvos diferentes, os quais determinam a ao adequada. Cada cadeia tem um alvo padro, o qual usado se nenhuma das regras daquela cadeia corresponde a um pacote, ou se nenhuma das regras que correspondem ao pacote possuem um alvo especificado. Os seguintes so os alvos padro: <user-defined-chain> A user-defined chain within the table. User-defined chain names must be unique. T his target passes the packet to the specified chain. ACCEPT Permite que o pacote chegue at o seu destino ou at outra cadeia. DROP Descarta o pacote sem responder ao solicitante. O sistema que enviou o pacote no fica sabendo da falha. QUEUE O pacote enfileirado para ser posteriormente manuseado por um aplicativo do espao do usurio. RET URN Para de verificar o pacote contra regras na cadeia atual. Se o pacote com o alvo RET URN corresponde uma regra numa cadeia chamada a partir de outra cadeia, o pacote devolvido primeira cadeia para que a mesma continue com a verificao de regras a partir de onde tinha parado. Se a regra RET URN for usada em uma cadeia padro e o pacote no puder retornar sua cadeia anterior, o alvo padro para a cadeia atual usado. In addition, extensions are available which allow other targets to be specified. T hese extensions are called target modules or match option modules and most only apply to specific tables and situations. Refer to Seo 2.9.3.4.4, Mdulos Adicionais de Opes de Correspondncia for more information about match option modules. Existem vrios mdulos de alvos adicionais, a maioria dos quais so aplicveis somente tabelas e situaes especficas. Alguns dos mdulos de alvos mais populares includos por padro no Red Hat Enterprise Linux so: LOG Faz um registro de todos os pacotes que correspondem esta regra. Uma vez que os pacotes so registrados pelo kernel, o arquivo /etc/syslog.conf determina onde estas entradas de registro so escritas. Por padro, elas so colocadas no arquivo /var/log/m essages. Opes adicionais podem ser usadas aps o alvo LOG para especificar a forma como os registros so feitos: --log-level estabelece o nvel de prioridade de um evento de registro. Consulte a pgina man do syslog.conf para uma lista de nveis de prioridade. --log-ip-options Registra quaisquer opes configuradas no cabealho de um pacote IP. --log-prefix Coloca uma string de at 29 caracteres antes da linha do registro quando o mesmo for escrito. Isto pode ser til ao usar filtros de syslog junto com o registro de pacotes.

Red Hat Enterprise Linux 5 D eployment Guide

137

Nota
Devido a um problema com esta opo, voc deve adicionar um espao aps o valor de log-prefix. --log-tcp-options Registra quaisquer opes configuradas no cabealho de um pacote T CP. --log-tcp-sequence Escreve o nmero de seqncia T CP do pacote no registro do sistema. REJECT Manda um pacote de erro de volta ao sistema remoto e descarta o pacote. T he REJECT target accepts --reject-with <type> (where <type> is the rejection type) allowing more detailed information to be returned with the error packet. T he message port-unreachable is the default error type given if no other option is used. Refer to the iptables man page for a full list of <type> options. Outros alvos adicionais, incluindo vrios que so teis para IP masquerading usando a tabela nat, ou para alterao de pacotes usando a tabela m angle , podem ser encontrados na pgina man do iptables. 2.9.3.6. Opes de Listagem T he default list command, iptables -L [<chain-nam e>] , provides a very basic overview of the default filter table's current chains. Additional options provide more information: -v Gera informaes detalhadas da sada, como o nmero de pacotes e bytes processado por cada cadeia, o nmero de pacotes e bytes que tenham correspondido a cada regra, e quais interfaces aplicam-se uma dada regra. -x Expande nmeros para seus valores exatos. Em um sistema de alta utilizao, o nmero de pacotes e bytes processados por uma dada cadeia ou regra pode ser abreviado para Kilobytes, Megabytes (Megabytes) ou Gigabytes. Esta opo fora a exibio do nmero por completo. -n Exibe endereos IP e nmeros de porta em formato numrico, ao invs do formato padro de nome de host e servio de rede. --line-num bers Lista regras em cada cadeia precedidas por um nmero representando sua ordem numrica na cadeia. Esta opo til ao tentar remover uma regra especfica de uma cadeia ou determinar onde inserir uma regra em uma cadeia. -t <table-nam e> Specifies a table name. If omitted, defaults to the filter table. Os seguintes exemplos ilustram o uso de vrias destas opes. Note a diferena na exibio de bytes ao incluir a opo -x.
[root@myserver ~]# iptables -L OUTPUT -v -n -x Chain OUTPUT (policy ACCEPT 64005 packets, 6445791 bytes) pkts bytes target prot opt in out source destination 1593 133812 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 [root@myserver ~]#iptables -L OUTPUT -v -n Chain OUTPUT (policy ACCEPT 64783 packets, 6492K bytes) pkts bytes target prot opt in out source 1819 153K ACCEPT icmp -- * * 0.0.0.0/0 [root@myserver ~]#

destination 0.0.0.0/0

2.9.4 . Salvando Regras do IPT ables

138

Captulo 2. Assegurando sua Rede de Trabalho

Regras criadas com o comando iptables so armazenadas na memria. Se o sistema for reiniciado antes que o conjunto de regras do iptables seja salvo, todas as regras so perdidas. Para que as regras do netfilter persistam entre reinicializaes do sistema, as mesmas precisam ser salvas. Para salvar as regras do netfilter, digite o seguinte comando como root:
/sbin/service iptables save

Isto executa o script the inicializao do iptables, o qual roda o programa /sbin/iptables-save e escreve a configurao atual do iptables em /etc/sysconfig/iptables. O arquivo existente /etc/sysconfig/iptables salvo como /etc/sysconfig/iptables.save . A prxima vez que o sistema inicializar, o script de inicializao do iptables restaura as regras salvas em /etc/sysconfig/iptables usando o comando /sbin/iptables-restore . While it is always a good idea to test a new iptables rule before committing it to the /etc/sysconfig/iptables file, it is possible to copy iptables rules into this file from another system's version of this file. T his provides a quick way to distribute sets of iptables rules to multiple machines. Voc tambm pode salvar as regras do iptables em um arquivo especfico para distribuio, backup, ou outros propsitos. Para salvar suas regras do iptables, digite o seguinte comando como root:
[root@myserver ~]# iptables-save > <filename> where <filename> is a user-defined name for your ruleset.

Importante
Se voc distribuir o arquivo /etc/sysconfig/iptables para outras mquinas, digite /sbin/service iptables restart para que as novas regras faam efeito.

Nota
Note a diferena entre o command iptables (/sbin/iptables), o qual usado para manipular as tabelas e cadeias que fazem parte da funcionalidade do iptables, e o service iptables (/sbin/iptables service ), o qual usado para habilitar e desabilitar o iptables em si.

2.9.5. Scripts de Controle do IPT ables Existem dois mtodos bsicos para controlar o iptables no Red Hat Enterprise Linux: /sbin/service iptables <option> Used to manipulate various functions of iptables using its initscript. T he following options are available: start Se uma firewall estiver configurada (ou seja, /etc/sysconfig/iptables existir), todas as instncias do iptables atualmente rodando so totalmente paradas e ento reiniciadas usando o comando /sbin/iptables-restore . Esta opo apenas funciona caso o mdulo de kernel ipchains no esteja carregado. Para verificar se este mdulo encontra-se carregado, digite o seguinte comando como root:
[root@MyServer ~]# lsmod | grep ipchains

Se este comando no gerar nenhuma sada, significa que o mdulo no encontra-se carregado.

Red Hat Enterprise Linux 5 D eployment Guide

139

Se for necessrio, use o comando /sbin/rm m od para remover o mdulo. stop Se uma firewall estiver rodando, as regras da firewall armazenadas na memria so liberadas, e todos os mdulos e auxiliares do iptables so descarregados. Se a diretiva IPT ABLES_SAVE_ON_ST OP no arquivo de configurao /etc/sysconfig/iptables-config tiver seu valor padro alterado para yes, as regras atuais so salvas em /etc/sysconfig/iptables e quaisquer regras existentes so movidas para o arquivo /etc/sysconfig/iptables.save . Refer to Seo 2.9.5.1, Arquivo de Configurao de Scripts de Controle do IPT ables for more information about the iptables-config file. restart Se uma firewall estiver rodando, as regras da firewall armazenadas na memria so liberadas, e a firewall reiniciada se estiver configurada em /etc/sysconfig/iptables. Esta opo funciona apenas se o mdulo ipchains do kernel estiver carregado. Se a diretiva IPT ABLES_SAVE_ON_REST ART no arquivo de configurao /etc/sysconfig/iptables-config tiver seu valor padro alterado para yes, as regras atuais so salvas em /etc/sysconfig/iptables e quaisquer regras existentes so movidas para o arquivo /etc/sysconfig/iptables.save . Refer to Seo 2.9.5.1, Arquivo de Configurao de Scripts de Controle do IPT ables for more information about the iptables-config file. status Exibe o estado da firewall e lista todas as regras ativas. T he default configuration for this option displays IP addresses in each rule. T o display domain and hostname information, edit the /etc/sysconfig/iptables-config file and change the value of IPT ABLES_ST AT US_NUMERIC to no . Refer to Seo 2.9.5.1, Arquivo de Configurao de Scripts de Controle do IPT ables for more information about the iptables-config file. panic Limpa todas as regras da firewall. A diretiva de todas as tabelas configuradas mudada para DROP . Esta opo pode ser til se um servidor for comprometido. Ao invs de desconectar fisicamente da rede, ou desligar o sistema, voc pode usar esta opo para parar todo e qualquer trfego subseqente na rede, mas deixar a mquina em um estado pronto para uma anlise ou algum tipo de atividade forense. save Saves firewall rules to /etc/sysconfig/iptables using iptables-save . Refer to Seo 2.9.4, Salvando Regras do IPT ables for more information.

Tip
T o use the same initscript commands to control netfilter for IPv6, substitute ip6tables for iptables in the /sbin/service commands listed in this section. For more information about IPv6 and netfilter, refer to Seo 2.9.6, IPT ables e IPv6.

2.9.5.1. Arquivo de Configurao de Scripts de Controle do IPT ables O comportamento dos scripts de inicializao do iptables controlado pelo arquivo de configurao /etc/sysconfig/iptables-config . A seguir est uma lista de diretivas encontradas neste arquivo: IPT ABLES_MODULES Especifica uma lista, separada por espaos, de mdulos adicionais do iptables a serem carregados quando uma firewall for ativada. Estes podem incluir rastreamento de conexo e auxiliares de NAT . IPT ABLES_MODULES_UNLOAD Descarrega mdulos ao reiniciar e parar. Esta diretiva aceita os seguintes valores: yes O valor padro. Esta opo deve ser usada para que um estado correto para as aes de parar ou reiniciar uma firewall possa ser atingido.

14 0

Captulo 2. Assegurando sua Rede de Trabalho

no Esta opo deve ser usada apenas se houverem problemas ao descarregar os mdulos do netfilter. IPT ABLES_SAVE_ON_ST OP Salva as regras atuais da firewall em /etc/sysconfig/iptables quando a firewall for parada. Esta diretiva aceita os seguintes valores: yes Salva regras existentes em /etc/sysconfig/iptables quando a firewall for parada, movendo a verso anterior para o arquivo /etc/sysconfig/iptables.save . no O valor padro. No salva regras existentes quando a firewall for parada. IPT ABLES_SAVE_ON_REST ART Salva as regras atuais da firewall quando a firewall for reiniciada. Esta diretiva aceita os seguintes valores: yes Salva regras existentes em /etc/sysconfig/iptables quando a firewall for reiniciada, movendo a verso anterior para o arquivo /etc/sysconfig/iptables.save . no O valor padro. No salva regras existentes quando a firewall for reiniciada. IPT ABLES_SAVE_COUNT ER Salva e restaura todos os contadores de pacotes e de bytes em todas as cadeias e regras. Esta diretiva aceita os seguintes valores: yes Salva o valor dos contadores. no O valor padro. No salva o valor dos contadores. IPT ABLES_ST AT US_NUMERIC Exibe a sada de endereos IP em formato numrico ao invs de domnios e nomes de host. Esta diretiva aceita os seguintes valores: yes O valor padro. Retorna apenas endereos IP numa sada de estado. no Retorna domnios ou nomes de host numa sada de estado. 2.9.6. IPT ables e IPv6 Se o pacote iptables-ipv6 estiver instalado, o netfilter do Red Hat Enterprise Linux pode filtrar a verso da prxima gerao do protocolo de Internet, o IPv6. O comando usado para manipular o netfilter IPv6 o ip6tables. A maioria das diretivas para este comando so idnticas quelas usadas para o iptables, entretanto, a tabela nat ainda no suportada. Isto significa que ainda no possvel executar tarefas de converso de endereos IPv6 de rede, como masquerading e encaminhamento de portas. As regras para o ip6tables so salvas no arquivo /etc/sysconfig/ip6tables. As regras anteriores salvas pelos scripts de inicializao do ip6tables so salvas no arquivo /etc/sysconfig/ip6tables.save . Opes de configurao para o script de inicializao so ip6tables so armazenadas em /etc/sysconfig/ip6tables-config , e os nomes para cada diretiva variam um pouco em relao aos nomes das diretivas do iptables. Por exemplo, a diretiva IPT ABLES_MODULES no arquivo iptables-config equivale diretiva IP6T ABLES_MODULES no arquivo ip6tables-config . 2.9.7. Recursos Adicionais Consulte os seguintes recursos para informaes adicionais sobre a filtragem de pacotes usando o iptables. 2.9.7.1. Documentao Instalada m an iptables Contm uma descrio do iptables, assim como uma lista abrangente de alvos, opes, e extenses de correspondncia. 2.9.7.2. Sites teis

Red Hat Enterprise Linux 5 D eployment Guide

14 1

http://www.netfilter.org/ Esta a casa do projeto netfilter/iptables. O site contm informaes variadas sobre o iptables, incluindo uma FAQ focada em problemas especficos e vrios guias teis escritos pelo Rusty Russell, o mantenedor da firewall IP do Linux. Os documentos HOWT O do site cobrem tpicos como conceitos bsicos de rede, filtragem de pacotes no kernel, e configuraes de NAT . http://www.linuxnewbie.org/nhf/Security/IPtables_Basics.html Uma introduo sobre como pacotes trafegam pelo kernel do Linux, alm de uma introduo construo de comandos iptables bsicos.

[2] Uma vez q ue BIO S d e s is temas variam d e ac o rd o c o m o fab ric ante, alg uns p o d em no s up o rtar q ualq uer tip o d e p ro te o p o r s enha, enq uanto o utro s p o d em s up o rtar um tip o mas no o o utro . [3] G RUB als o ac c ep ts unenc ryp ted p as s wo rd s , b ut it is rec o mmend ed that an MD5 has h b e us ed fo r ad d ed s ec urity. [4] Es te ac es s o aind a s ujeito s res tri es imp o s tas p elo SELinux, s e d is p o nvel. Co ns ulte a Se o 3.2, Intro d u o ao SELinux p ara maio res info rma es . [5] Um s is tema no q ual amb o s , c liente e s ervid o r c o mp artilham uma c have em c o mum, us ad a p ara c rip to g rafar e d es c rip to g rafar c o munic a es d e red e

14 2

Captulo 3. Segurana e SELinux

Captulo 3. Segurana e SELinux


3.1. Mecanismos de Controle de Acesso (ACM)
Segue nesta seo, uma apresentao bsica dos Mecanismos de Controle de Acesso (ACMs). Os ACMs oferecem aos administradores de sistemas, um meio de controlar quais usurios e processos podem acessar diferentes arquivos, despositivos, interfaces, etc. em um sistema de computador. Isto primordial quando se trata de assegurar um sistema de computadores ou rede de trabalho de qualquer tamanho. 3.1.1. Controle de Acesso Discricionrio (DAC) O Controle de Acesso Discricionrio (DAC) define os controles de acesso bsico para objetos em um sistema de arquivo. Este um tpico controle de acesso, oferecido pelas permisses de arquivo, compartilhamento, etc. T al acesso, condiz geralmente ao dono do objeto (arquivo, diretrio, dispositivo, etc.). DAC provides a means of restricting access to objects based on the identity of the users or groups (subjects) that try to access those objects. Depending on a subject's access permissions, they may also be able to pass permissions to other subjects. 3.1.2. Controle de Acesso Obrigatrio (MAC) Controle de Acesso Obrigatrio (MAC) um mecanismo de segurana que restringe o nvel de controle que os usurios (assuntos) possuem sob os objetos que eles criam. Diferente de uma implementao DAC , onde usurios possuem total controle sob seus prprios arquivos, diretrios, etc. O MAC adiciona rtulos, ou categorias, em todos os objetos de sistema de arquivo. Usurios e processos devem ter o acesso apropriado para estas categorias antes que eles possam interagir com estes objetos. In Red Hat Enterprise Linux, MAC is enforced by SELinux. For more information, refer to Seo 3.2, Introduo ao SELinux. 3.1.3. Controle de Acesso baseado na Funo (RBAC) Controle de Acesso baseado na Funo (RBAC) um mtodo alternativo de controlar o acesso do usurio objetos de sistema de arquivo. Ao invs do acesso ser controlado pelas permisses de usurios, o administrador de sistemas estabelece Funes baseadas em requerimentos funcionais de negcios ou critrios similares. Estas Funes possuem diferentes tipos e nveis de acesso objetos. In contrast to DAC or MAC systems, where users have access to objects based on their own and the object's permissions, users in an RBAC system must be members of the appropriate group, or Role, before they can interact with files, directories, devices, etc. De um ponto de vista administrativo, o simples controle dos membros do grupo facilita o controle de quem acessa diversas partes do sistema de arquivo. 3.1.4 . Segurana de Nvel Mltiplo (MLS) Multi-Level Security (MLS) is a specific Mandatory Access Control (MAC) security scheme. Under this scheme, processes are called Subjects. Files, sockets and other passive operating system entities are called Objects. For more information, refer to Seo 3.4, Segurana de Nvel Mltiplo (MLS).

3.2. Introduo ao SELinux


A Segurana Aprimorada Linux (SELinux) uma arquitetura de segurana integrada no kernel 2.6.x usando os Mdulos de Segurana Linux (LSM). um projeto da National Security Agency (NSA) dos

Red Hat Enterprise Linux 5 D eployment Guide

14 3

Estados Unidos e da comunidade SELinux. A integrao do SELinux no Red Hat Enterprise Linux foi um esforo conjunto entre a NSA e a Red Hat. 3.2.1. Viso Geral do SELinux SELinux provides a flexible Mandatory Access Control (MAC) system built into the Linux kernel. Under standard Linux Discretionary Access Control (DAC), an application or process running as a user (UID or SUID) has the user's permissions to objects such as files, sockets, and other processes. Running a MAC kernel protects the system from malicious or flawed applications that can damage or destroy the system. O SELinux define os direitos de acesso e transio de cada usurio, aplicativo, processo e arquivo no sistema. O SELinux ento governa as interaes destas entidades usando uma poltica de segurana que especifica quo severa ou branda uma certa instalao do Red Hat Enterprise Linux deve ser. No dia-a-dia, os usurios, em grande parte, mal percebero a existncia do SELinux. Apenas os administradores de sistemas precisam considerar o nvel de rigidez a ser implementado para os seus ambiente de servidores. A poltica pode ser to severa ou branda quanto for preciso, e altamente detalhada. Este nvel de detalhamento d ao kernel SELinux o controle completo e granular sobre todo o sistema. O Processo Decisrio do SELinux When a subject, (for example, an application), attempts to access an object (for example, a file), the policy enforcement server in the kernel checks an access vector cache (AVC), where subject and object permissions are cached. If a decision cannot be made based on data in the AVC, the request continues to the security server, which looks up the security context of the application and the file in a matrix. Permission is then granted or denied, with an avc: denied message detailed in /var/log/m essages if permission is denied. T he security context of subjects and objects is applied from the installed policy, which also provides the information to populate the security server's matrix. Consulte o seguinte diagrama:

Figura 3.1. O Processo Decisrio do SELinux

Modos Operacionais do SELinux Ao invs de rodar em modo imposio, o SELinuxpode rodar em modo permissivo, onde o AVC verificado, e negaes so registradas, entretanto o SELinux no impe a poltica. Isto pode ser til para resoluo de problemas e para o desenvolvimento ou o aprimoramento de polticas do SELinux. For more information about how SELinux works, refer to Seo 3.2.3, Recursos Adicionais.

14 4

Captulo 3. Segurana e SELinux

3.2.2. Arquivos Relacionados ao SELinux As sees seguintes descrevem os arquivos de configurao e sistemas de arquivos referentes ao SELinux. 3.2.2.1. O Pseudo-Sistema de Arquivos do SELinux O pseudo-sistema de arquivos /selinux/ contm comandos que so normalmente usados pelo subsistema do kernel. Este tipo de sistema de arquivos similar ao pseudo-sistema de arquivos /proc/. Administradores e usurios normalmente no precisam manipular este componente. O seguinte exemplo oferece amostras do contedo do diretrio /selinux/:
-rw-rw-rwdr-xr-xr-x --w-------rw-rw-rw-rw-rw-rw--w-------rw-r--r--rw-------r--r--r--r--r--r--rw-rw-rw-rw-rw-rw1 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root root root 0 0 0 0 0 0 0 0 0 0 0 0 Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep 22 22 22 22 22 22 22 22 22 22 22 22 13:14 13:14 13:14 13:14 13:14 13:14 13:14 13:14 13:14 13:14 13:14 13:14 access booleans commit_pending_bools context create disable enforce load mls policyvers relabel user

Por exemplo, a execuo do comando cat no arquivo enforce revela ou um 1 , para modo imposio, ou um 0 , para modo permissivo. 3.2.2.2. Arquivos de Configurao do SELinux As sees seguintes descrevem os arquivos de configurao e poltica do SELinux, assim como os sistemas de arquivos relacionados localizados no diretrio /etc/. 3.2.2.2.1. O Arquivo de Configurao /etc/sysconfig/selinux T here are two ways to configure SELinux under Red Hat Enterprise Linux: using the SELinux Administration T ool (system -config-selinux), or manually editing the configuration file (/etc/sysconfig/selinux). O /etc/sysconfig/selinux o arquivo de configurao principal usado para habilitar ou desabilitar o SELinux, determinar qual poltica deve ser imposta no sistema, e como impor tal poltica.

Nota
O /etc/sysconfig/selinux contm um link simblico para o verdadeiro arquivo de configurao, o /etc/selinux/config . Veja a seguir o conjunto completo de opes de configurao disponveis: SELINUX= enforcing|permissive|disabled Define o estado de nvel superior do SELinux em um sistema. enforcing A poltica de segurana do SELinux imposta. perm issive O sistema SELinux emite avisos mas no impe a poltica.

Red Hat Enterprise Linux 5 D eployment Guide

14 5

Isto pode ser til para fins de depurao e resoluo de problemas. Em modo permissivo, mais negaes so registradas porque entidades podem continuar com aes que seriam negadas em modo imposio. Por exemplo, percorrer um diretrio em modo permissivo produz uma mensagem avc: denied para cada nvel de diretrio lido. Em modo imposio, o SELinux pararia assim que a primeira negao ocorresse, prevenindo que mensagens de erro adicionais ocorressem. disabled O SELinux totalmente desabilitado. O SELinux desvinculado do kernel, e o pseudo-sistema de arquivos torna-se no registrado.

Tip
Aes tomadas enquanto o SELinux estiver desabilitado podem resultar em um arquivo no tendo mais o contexto de segurana correto. Ou seja, o contexto de segurana definido pela poltica. A melhor maneira de reetiquetar o sistema de arquivos criar o arquivo sinalizador /.autorelabel e reinicializar a mquina. Isto faz com que a etiquetagem ocorra bem cedo durante o processo de inicializao, antes de qualquer processo estar rodando no sistema. O uso deste procedimento significa que processos no podem acidentalmente criar arquivos ou iniciar no contexto errado. possvel usar o comando fixfiles relabel para reetiquetar o sistema de arquivos antes de habilitar o SELinux. Entretanto, este mtodo no recomendvel porque uma vez que for concludo, ainda possvel que processos rodem no contexto errado. T ais processos podem criar arquivos que tambm possuam o contexto errado.

Nota
Espaos adicionais no final de uma linha de configurao, ou linhas adicionais no final do arquivo podem causar comportamento inesperado. Para ficar imune a isto, remova espaos desnecessrios. SELINUXT YPE=targeted|strict Especifica a poltica que o SELinux deve impor. targeted Apenas os daemons de rede visados (targeted) so protegidos.

Importante
Os seguintes daemons so protegidos pela poltica targeted padro: dhcpd, httpd (apache.te), nam ed, nscd, ntpd, portm ap, snm pd, squid , e syslogd . O resto do sistema roda no domnio unconfined_t. Este domnio permite que entidades e objetos com aquele contexto de segurana operem usando a segurana padro do Linux. Os arquivos de poltica para estes daemons esto localizados em /etc/selinux/targeted/src/policy/dom ains/program . Estes arquivos esto sujeitos mudanas medida que novas verses do Red Hat Enterprise Linux so lanadas. Policy enforcement for these daemons can be turned on or off, using Boolean values controlled by the SELinux Administration T ool (system -config-selinux). Setting a Boolean value for a targeted daemon to 1 disables SELinux protection for the daemon. For example, you can set dhcpd_disable_trans to 1 to prevent init, which executes apps labeled dhcpd_exec_t, from transitioning to the dhcpd_t domain. Use o comando getsebool -a para listar todos os Booleanos do SELinux. Veja a seguir um exemplo sobre o uso do comando setsebool para configurar um Booleano do SELinux. A opo -P faz com que a mudana torne-se permanente. Sem esta opo, o Booleano mudaria para 1

14 6

Captulo 3. Segurana e SELinux

na reinicializao.
setsebool -P dhcpd_disable_trans=0

strict T otal proteo do SELinux para todos os daemons. Contextos de segurana so definidos para todas as entidades e objetos, e todas as aes so processadas pelo servidor de imposio de polticas. SET LOCALDEFS=0|1 Controls how local definitions (users and booleans) are set. Set this value to 1 to have these definitions controlled by load_policy from files in /etc/selinux/<policyname>. or set it to 0 to have them controlled by sem anage .

Ateno
Voc no deve usar um valor que no seja o padro (0) a no ser que voc esteja completamente ciente do impacto de tal mudana.

3.2.2.2.2. O Diretrio /etc/selinux/ O diretrio /etc/selinux/ a localizao principal de todos os arquivos de poltica, bem como do principal arquivo de configurao. O seguinte exemplo oferece amostras do contedo do diretrio /etc/selinux/:
-rw-r--r-drwxr-xr-x drwxr-xr-x 1 root root 448 Sep 22 17:34 config 5 root root 4096 Sep 22 17:27 strict 5 root root 4096 Sep 22 17:28 targeted

Os dois subdiretrios, strict/ e targeted/, so os diretrios especficos onde os arquivos de poltica com o mesmo nome (ou seja, strict e targeted ) so armazenados. 3.2.2.3. Utilitrios SELinux Veja a seguir os utilitrios SELinux mais utilizados: /usr/sbin/setenforce Modifica, em tempo real, o modo de execuo do SELinux. Por exemplo: setenforce 1 O SELinux roda em modo imposio. setenforce 0 O SELinux roda em modo permissivo. Para realmente desabilitar o SELinux, voc precisa ou especificar o parmetro do setenforce adequado em /etc/sysconfig/selinux ou passar o parmetro selinux=0 para o kernel, ou em /etc/grub.conf ou durante a inicializao. /usr/sbin/sestatus -v Exibe o estado detalhado de um sistema rodando o SELinux. O exemplo a seguir mostra um trecho da sada do sestatus -v:
SELinux status: SELinuxfs mount: Current mode: Mode from config file: Policy version: Policy from config file: Process contexts: Current context: Init context: /sbin/mingetty enabled /selinux enforcing enforcing 21 targeted

user_u:system_r:unconfined_t:s0 system_u:system_r:init_t:s0 system_u:system_r:getty_t:s0

Red Hat Enterprise Linux 5 D eployment Guide

14 7

/usr/bin/newrole Roda um novo shell em um novo contexto ou papel. A poltica deve permitir a transio para o novo papel..

Nota
Este comando est disponvel apenas se voc tiver o pacote policycoreutils-newrole instalado, o qual necessrio s polticas strict e MLS. /sbin/restorecon Estabelece o contexto de segurana de um ou mais arquivos atravs da marcao de atributos estendidos com o arquivo ou contexto de segurana apropriado. /sbin/fixfiles Verifica ou corrige o banco de dados de contextos de segurana no sistema de arquivos. Consulte as pginas man associadas a estes utilitrios para maiores informaes. Consulte o contedo dos pacotes setools ou policycoreutils para mais informaes sobre todos os utilitrios binrios disponveis. Para visualizar o contedo de um pacote, use o seguinte comando: rpm -ql <package-name> 3.2.3. Recursos Adicionais Consulte os seguintes recursos para obter informaes mais detalhadas sobre o SELinux. 3.2.3.1. Documentao Instalada /usr/share/doc/setools-< version-number>/ All documentation for utilities contained in the setools package. T his includes all helper scripts, sample configuration files, and documentation. 3.2.3.2. Sites teis http://www.nsa.gov/research/selinux/index.shtml Homepage for the NSA SELinux development team. Many resources are available in HT ML and PDF formats. Although many of these links are not SELinux specific, some concepts may apply. http://docs.fedoraproject.org/ Homepage for the Fedora documentation project, which contains Fedora Core specific materials that may be more timely, since the release cycle is much shorter. http://selinux.sourceforge.net A homepage da comunidade SELinux.

3.3. Breves Fundamentos e Histria do SELinux


SELinux was originally a development project from the National Security Agency (NSA)[6 ] and others. It is an implementation of the Flask operating system security architecture.[7 ]T he NSA integrated SELinux into the Linux kernel using the Linux Security Modules (LSM ) framework. SELinux motivated the creation of LSM, at the suggestion of Linus T orvalds, who wanted a modular approach to security instead of just accepting SELinux into the kernel. Originariamente, a implementao do SELinux usava IDs de segurana persistente (PSIDs) armazenadas em um campo vago do inode ext2. Estas representaes numricas (ou seja, ilegveis para o usurio) eram associadas pelo SELinux uma etiqueta de contexto de segurana. Infelizmente, isto implicava a modificao de cada tipo de sistema de arquivos para suportar PSIDs, e portanto no era uma soluo redimensionvel nem tampouco uma soluo que seria suportada upstream no kernel do Linux. T he next evolution of SELinux was as a loadable kernel module for the 2.4.<x> series of Linux kernels.

14 8

Captulo 3. Segurana e SELinux

T his module stored PSIDs in a normal file, and SELinux was able to support more file systems. T his solution was not optimal for performance, and was inconsistent across platforms. Finally, the SELinux code was integrated upstream to the 2.6.x kernel, which has full support for LSM and has extended attributes (xattrs) in the ext3 file system. SELinux was moved to using xattrs to store security context information. T he xattr namespace provides useful separation for multiple security modules existing on the same system. Muito do trabalho despendido em aprontar o kernel para upstream, assim como o desenvolvimento subseqente do SELinux tem sido um esforo conjunto entre a NSA, a Red Hat, e a comunidade de desenvolvedores do SELinux. For more information about the history of SELinux, the definitive website is http://www.nsa.gov/research/selinux/index.shtml.

3.4. Segurana de Nvel Mltiplo (MLS)


Em muitos negcios, de suma importncia proteger dados sensveis e confidenciais. Se uma informao torna-se pblica, os negcios podem enfrentar ramificaes financeiras ou legais. No mnimo, iro sofrer uma perda de confiana dos clientes. Na maioria dos casos, no entanto, eles no conseguem se recuperar destas perdas financeiras ou de outras perdas, com investimento ou compensao apropriada. No pode-se dizer o mesmo sobre comunidades de defesa e afins, as quais incluem servios militares, organizaes de inteligncia e algumas reas de servio policial. Estas organizaes no podem ser recuperadas facilmente caso estas informaes confidenciais sejam vazadas, e podem nunca se recuperarem. Estas comunidades requerem maiores nveis de segurana do que aqueles utilizados pelos negcios e outras organizaes. Informaes com nveis diferenciados de segurana no mesmo sistema de computador, representam uma verdadeira ameaa. Isolar informaes de nveis de segurana diferentes no soluciona o problema, apesar de usurios diversos acessarem usando contas diferentes, com permisses diferentes e controles de acesso diferentes. Algumas empresas vo mais adiante e compram sistemas dedicados para cada nvel de segurana. No entanto, isto geralmente extremamente caro. necessrio um mecanismo diferente para habilitar usurios com diferentes nveis de segurana para acessar sistemas simultaneamente, sem medo de contaminar informaes. 3.4 .1. Porque Nvel Mltiplo? T he term multi-level arises from the defense community's security classifications: Confidential, Secret, and T op Secret. Indivduos precisam receber espaos vazios apropriados antes que eles possam ver as informaes classificadas. Aqueles com espaos vazios Confidenciais, so autorizados a somente visualizar documentos Confidenciais. Eles no esto autorizados a ver informaes Secretas ou de T op Secret. As regras que se aplicam ao fluxo de dados, operam desde nveis mais baixos nveis mais altos e nunca o oposto. Veja a ilustrao a seguir:

Red Hat Enterprise Linux 5 D eployment Guide

14 9

Figura 3.2. Nveis de Segurana da Informao

3.4 .1.1. O Modelo Bell-La Padula (BLP) SELinux, como muitos outros sistemas que protegem os dados de nvel mltiplo, utiliza o modelo BLP. Este modelo especifica como a informao pode fluir dentro de um sistema baseado em rtulos anexados a cada assunto ou objeto. Consulte o seguinte diagrama:

Figura 3.3. Dados disponveis fluem utilizando um sistema MLS Under such a system, users, computers, and networks use labels to indicate security levels. Data can flow between like levels, for example between "Secret" and "Secret", or from a lower level to a higher level. T his means that users at level "Secret" can share data with one another, and can also retrieve information from Confidential-level (i.e., lower-level), users. However, data cannot flow from a higher level to a lower level. T his prevents processes at the "Secret" level from viewing information classified as "T op Secret". It also prevents processes at a higher level from accidentally writing information to a lower level. T his is referred to as the "no read up, no write down" model. 3.4 .1.2. Privilgios de MLS e Sistemas

150

Captulo 3. Segurana e SELinux

MLS access rules are always combined with conventional access permissions (file permissions). For example, if a user with a security level of "Secret" uses Discretionary Access Control (DAC) to block access to a file by other users, this also blocks access by users with a security level of "T op Secret". A higher security clearance does not automatically give permission to arbitrarily browse a file system. Usurios com espaos livres de nvel mximo no adquirem automaticamente direitos administrativos em sistemas de nvel mltiplo. Apesar de terem acesso toda informao nos computadores, diferente de ter direitos iguais. 3.4 .2. Nveis de Segurana, Objetos e Assuntos. Como j discutido anteriormente, os assuntos e objetos so rotulados com Nveis de Segurana (SLs) os quais so compostos por dois tipos de entidades: 1. Sensitivity: A hierarchical attribute such as "Secret" or "T op Secret". 2. Categories: A set of non-hierarchical attributes such as "US Only" or "UFO". Um SL deve possuir uma confidencialidade e pode ter zero ou mais categorias. Exemplos de SLs So { Secreto / UFO, Crypto }, { T op Secret / UFO, Crypto, Stargate } e { No classificado } Note the hierarchical sensitivity followed by zero or more categories. T he reason for having categories as well as sensitivities is so that sensitivities can be further compartmentalized on a need-to-know basis. For example, while a process may be cleared to the "Secret" sensitivity level, it may not need any type of access to the project "Warp Drive" (which could be the name of a category).

Nota
1. Nveis de Segurana em objetos so chamados de Classificaes. 2. Os Nveis de Segurana em assuntos so chamados de reas Livres Dessa forma, os objetos so rotulados com a Classificao, enquanto assuntos operam com uma rea Livre especfica. Os nveis de Segurana tambm podem ter Intervalos, mas isto ultrapassa o escopo desta apresentao.

3.4 .3. Poltica MLS O SELinux, utiliza o modelo Bell-La Padula BLP com Imposio de T ipo (T E) para sua integridade. Em outras palavras, a poltica MLS, assegura que um Assunto tenha uma rea livre apropriada para acessar um Objeto de uma classificao especfica. Por exemplo, na MLS, o sistema precisa saber como processar uma solicitao tal como: Um processo rodando com uma rea livre de { T op Secret / UFO, Rail gun } pode escrever para um arquivo classificado como { T op Secret / UFO } ? O modelo MLS e a poltica implementada para ele, ir determinar a resposta. (Considere, por exemplo, o problema de informao vazando da categoria Rail gun no arquivo). O MLS encontra um conjunto bastante estreito (ainda que crtico) de requerimentos de segurana, baseado na maneira que as informaes e pessoas so gerenciadas em ambientes extremamente controlados, tal como o exrcito. Geralmente, difcil trabalhar com a MLS alm de no mapear bem em situaes de casos gerais. A Imposio de T ipo (T E) sob o SELinux mais flexvel e possui um esquema de segurana expressivo, o que em muitos casos mais aceitvel do que a MLS.

Red Hat Enterprise Linux 5 D eployment Guide

151

Existem, no entanto, diversas situaes onde ainda requer-se a MLS tradicional. Por exemplo, um servidor de arquivo onde os dados armazenados podem conter classificaes mixas e onde os clientes conectam em reas livres diferentes. Isto resulta em diversos nveis de Segurana e de um isolamento significativo em um s sistema. Este tipo de situao a razo pela qual o SELinux inclui a MLS como um modelo de segurana, como um adjunto para T E. 3.4 .4 . Certificao LSPP Efforts are being made to have Linux certified as an MLS operating system. T he certification is equivalent to the old B1 rating, which has been reworked into the Labeled Security Protection Profile under the Common Criteria scheme.

[6 ] The NSA is the c ryp to lo g ic ag enc y o f the United States o f Americ a' s Fed eral g o vernment, c harg ed with info rmatio n as s uranc e and s ig nals intellig enc e. Yo u c an read mo re ab o ut the NSA at their web s ite, http ://www.ns a.g o v/ab o ut/. [7] Flas k g rew o ut o f a p ro jec t that integ rated the Distributed Trusted Operating System ( DTOS ) into the Fluke res earc h o p erating s ys tem. Flas k was the name o f the arc hitec ture and the imp lementatio n in the Fluke o p erating s ys tem.

152

Captulo 4. Padronizando a Poltica do SELinux

Captulo 4. Padronizando a Poltica do SELinux


4.1. Apresentao
Nos lanamentos de Red Hat Enterprise Linuxanteriores, era necessrio instalar os pacotes selinuxpolicy-targeted-sources e somente ento criar um arquivo local.te no diretrio /etc/selinux/targeted/src/policy/dom ains/m isc . Voc poderia usar o utilitrio audit2allow para traduzir as mensagens AVC em regras de permisso e ento reconstruir e recarregar a poltica. O problema era que, todas as vezes que um pacote de poltica novo era lanado, o Makefile era executado para tentar manter a poltica local. In Red Hat Enterprise Linux 5, this process has been completely revised. T he "sources" rpm packages have been completely removed, and policy packages are treated more like the kernel. T o look at the sources used to build the policy, you need to install the source rpm, selinux-policy-XYZ.src.rpm . A further package, selinux-policy-devel , has also been added, which provides further customization functionality. 4 .1.1. Poltica modular Red Hat Enterprise Linux apresenta o conceito de poltica modular. Esta poltica permite que o fabricante envie a poltica SELinux separado da poltica do sistema de operaes. Isto permite que os administradores faam mudanas locais na poltica sem se preocuparem com a prxima instalao da mesma. O comando adicionado mais importante o sem odule . O sem odule a ferramenta utilizada para gerenciar o SELinux mdulos de poltica, incluindo instalar, atualizar, listar e remover mdulos. Voc tambm pode utilizar o sem odule para forar uma reconstruo de poltica a partir do mdulo armazenar e/ou forar uma recarga de poltica sem desempenhar qualquer outra transao. O sem odule age nos pacotes de mdulo, criados pelo sem odule_package . Geralmente, estes arquivos possuem um sufixo .pp (pacote de poltica), embora no seja obrigatrio. 4 .1.1.1. Listando Mdulos de Poltica Para listar os mdulos de poltica em um sistema, use o comando sem odule -l :
[root@host2a ~]# semodule -l amavis 1.1.0 ccs 1.0.0 clamav 1.1.0 dcc 1.1.0 evolution 1.1.0 iscsid 1.0.0 mozilla 1.1.0 mplayer 1.1.0 nagios 1.1.0 oddjob 1.0.1 pcscd 1.0.0 pyzor 1.1.0 razor 1.1.0 ricci 1.0.0 smartmon 1.1.0

Red Hat Enterprise Linux 5 D eployment Guide

153

Nota
Este comando no lista o mdulo de poltica base, que tambm est instalado. O diretrio /usr/share/selinux/targeted/ contm diversos arquivos de pacote de poltica (*.pp). Estes arquivos esto inclusos no rpm selinux-policy e so utilizados para construir o arquivo de poltica.

4.2. Construindo um Mdulo de Poltica Local


A seo a seguir, utiliza um exemplo atual para demonstrar a construo de um mdulo de poltica local para apontar um problema com a poltica atual. Este problema envolve o script ypbind init, que executa o comando setsebool , que por sua vez, tenta utilizar o terminal. Isto gera a seguinte negao:
type=AVC msg=audit(1164222416.269:22): avc: denied { use } for pid=1940 comm="setsebool" name="0" dev=devpts ino=2 \ scontext=system_u:system_r:semanage_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=fd

Embora tudo ainda funcione corretamente (ou seja, no evita que nenhum formulrio de aplicativo rode como pretendido), ele interrompe o fluxo de trabalho normal do usurio. Ao criar um mdulo de poltica local, voc soluciona este problema. 4 .2.1. Usar o audit2 permite a Construo de um Mdulo de Poltica Local. O utilitrio audit2allow possui agora a habilidade de construir mdulos de poltica . Use o seguinte comando para construir um mdulo de poltica baseado em contedo especfico do arquivo audit.log : ausearch -m AVC --com m setsebool | audit2allow -M m ysem anage O utilitrio audit2allow construiu um arquivo de imposio (m ysem anage.te ). Depois, ele executou o comando checkm odule para compilar um arquivo de mdulo (m ysem anage.m od ). Por ltimo, ele usa o comando sem odule_package para criar um pacote de poltica (m ysem anage.pp ). O comando sem odule_package combina arquivos de poltica diferentes (geralmente somente o mdulo e potencialmente um arquivo de contexto) no pacote de poltica. 4 .2.2. Analisando o Arquivo T ipo Enforcement (T E) Use o comando cat para inspecionar o contedo do arquivo T E:
[root@host2a ~]# cat mysemanag.te module mysemanage 1.0; require { class fd use; type init_t; type semanage_t; role system_r; }; allow semanage_t init_t:fd use;

O arquivo T E composto por trs sees. A primeira seo o comando m odule , que identifica o nome do mdulo e verso. O nome do mdulo deve ser nico. Se voc criar um mdulo sem anage usando o nome de um mdulo pr-existente, o sistema tentaria substituir o pacote do mdulo existente por uma verso nova. A ltima parte da linha do mdulo a verso. O sem odule pode atualizar

154

Captulo 4. Padronizando a Poltica do SELinux

pacotes de mdulo e checar a verso atualizada em relao verso instalada atualmente. O prximo bloco do arquivo T E o bloco require . Este, informa o carregador de poltica, quais tipos, classes e papis so necessrios na poltica de sistema, antes que este mdulo possa ser instalado. Se qualquer um destes campos forem indefinidos, o comando sem odule ir falhar. Por ltimo, esto as regras de permisso. Neste exemplo, voc poderia modificar esta linha para dontaudit, pois sem odule no precisa acessar o descritor do arquivo. 4 .2.3. Carregando o Pacote de Poltica O ltimo passo a ser dado neste processo de criao de um mdulo de poltica local carregar o pacote da poltica no kernel. Use o comando sem odule para carregar o pacote de poltica:
[root@host2a ~]# semodule -i mysemanage.pp

Este comando recompila o arquivo de poltica e regenera o contexto do arquivo. As mudanas so permanentes e iro sobreviver a uma reinicializao. Voc pode tambm copiar o arquivo com o pacote de poltica (m ysem anage.pp ) para outras mquinas e instal-lo utilizando o sem odule . O comando audit2allow exibe a sada do comando que ele executou para criar um pacote de poltica onde voc possa editar o arquivo T E. Isto significa que voc pode adicionar novas regras como solicitado ou mudar a regra de perm isso para dontaudit. Voc pode ento recompilar e reempacotar o pacote de poltica para ser novamente instalado. T here is no limit to the number of policy packages, so you could create one for each local modification you want to make. Alternatively, you could continue to edit a single package, but you need to ensure that the "require" statements match all of the allow rules.

Red Hat Enterprise Linux 5 D eployment Guide

155

Captulo 5. Referncias
As seguintes referncias so indicadores para informaes adicionais relevantes para SELinux e Red Hat Enterprise Linux mas alm do escopo deste guia. Note que devido ao rpido desenvolvimento de SELinux, uma parte deste material pode se aplicar somente lanamentos especficos do Red Hat Enterprise Linux Livros SELinux por Exemplo Mayer, MacMillan, e Caplan Prentice Hall, 2007

T utoriais e Ajuda Entendendo e Padronizando a Poltica do Apache HT T P SELinux http://docs.fedoraproject.org/selinux-apache-fc3/ T utoriais e discusses sobre Russell Coker http://www.coker.com.au/selinux/talks/ibmtu-2004/ Poltica HOWT O de Escrita Genrica SELinux https://sourceforge.net/docman/display_doc.php?docid=21959[amp ]group_id=21266 Base de Conhecimento da Red Hat http://kbase.redhat.com/

Informaes Gerais Website principal da SELInux NSA http://www.nsa.gov/research/selinux/index.shtml NSA SELinux FAQ http://www.nsa.gov/research/selinux/faqs.shtml Fedora SELinux FAQ http://docs.fedoraproject.org/selinux-faq/ SELinux NSA's Open Source Security Enhanced Linux http://www.oreilly.com/catalog/selinux/

T ecnologia Uma Viso Geral de Classes de Objetos e Permisses

156

Captulo 5. Referncias

http://www.tresys.com/selinux/obj_perms_help.html Integrando Suporte Flexvel para Polticas de Segurana em Sistemas de Operao Linux (uma histria de Implementao Flask em Linux) http://www.nsa.gov/research/_files/selinux/papers/freenix01/freenix01.shtml Implementando SELInux como um Mdulo de Segurana Linux http://www.nsa.gov/research/selinux/index.shtmlpapers/module-abs.cfm Uma Configurao da Poltica de Segurana para a Segurana Aprimorada Linux http://www.nsa.gov/research/_files/selinux/papers/policy/policy.shtml

Comunidade Pgina da Comunidade SELinux http://selinux.sourceforge.net IRC irc.freenode.net, #rhel-selinux

Histria Breve Histria do Flask http://www.cs.utah.edu/flux/fluke/html/flask.html Fundamento completo em Fluke http://www.cs.utah.edu/flux/fluke/html/index.html

Red Hat Enterprise Linux 5 D eployment Guide

157

Revision History
Reviso 6-18 2012-07-18 Rebuild for Publican 3.0 Anthony T owns

Reviso 8-0 T hu July 30 2010 Douglas Silas Resolve BZ #239313: document oom_adj and oom_score. Resolve BZ #526502: correct quotaon instructions with proper, safe operating procedures. Resolve BZ #551367: correct SELinux dhcpd_disable_trans description. Resolve BZ #521215: clarify NFS interaction with portmapper, rpc.mountd, rpc.lockd and rpc.statd. Resolve BZ #453875: various OpenSSH chapter corrections. Resolve BZ #455162: correct zone example configuration file, description. Resolve BZ #460767: make it a proper daemon. Resolve BZ #600702: correct directories used for SSL key generation. Reviso 7-0 Wed Sep 30 2009 Douglas Silas, Jarek Hradilek, Martin Prpic Change heading titles to correspond with actual headings used in 'man rpm'. Resolve BZ #499053: /usr/sbin/racoon is correct install path. Remove any mention of 'pkgpolicy' in /etc/yum.conf as per BZ #237773. Resolve BZ #455162: correct example zone file with regard to records, description. Resolve BZ #510851: /proc/cmdline has confusing descriptions of sample output. Resolve BZ #510847: page with multiple footnotes formatted incorrectly in online PDF. Resolve BZ #214326: more detailed usage info concerning vsftpd banners and secueerity. Resolve BZ #241314: formatting problems in screen elements. Resolve BZ #466239: postfix connect-from-remote-host configuration fix. Reviso 7-0 Mon Sep 14 2009 Douglas Silas Resolve BZ #214326: Server Security FT P Banner instructions: questions re: vsftpd.conf. Resolve BZ #466239: insert line into Postfix config file to allow connecting remotely. Resolve BZ #499053: path for racoon daemon is /usr/sbin/racoon, not /sbin/racoon. Resolve BZ #510847: missing footnotes in PDF output. Resolve BZ #510851: rewrite /proc/cmdline minor section to make more sense. Resolve BZ #515613: correct location of RHEL5 GPG keys and key details. Resolve BZ #523070: various minor fixes; --redhatprovides to rpm -q --whatprovides. Reviso 6-0 Wed Sep 02 2009 Douglas Silas Resolve BZ #492539: "T his directive is useful..." to "T his directive must be used in machines containing more than one NIC to ensure...". Resolve BZ #241314: re: kernel-pae and hugemem support on RHEL 4 and 5. Resolve BZ #453071: incorrect tag use led to config files and other screen elements being displayed on single lines. Resolve BZ #507987: clarify and correct statements about partitions being in use while resizing or removing. Resolve BZ #462550: recommended amount of swap space, according to http://kbase.redhat.com/faq/docs/DOC-15252. Resolve BZ #466239: line omitted from Postfix configuration meant connecting remotely failed Resolving other MODIFIED BZ s (fixed previously): 468483, 480324, 481246, 481247, 438823, 454841, 485187, 429989, 452065, 453466. Reviso 5-0 Wed Jan 28 2009 Michael Hideo Smith Resolves: #460981 Changing 64GB *tested* support to support for 16GB.

158

Captulo 6. Colophon

Captulo 6. Colophon
Os manuais so escritos em formato DocBook XML v4.3. Garrett LeSage criou os grficos de aviso (nota, dica, importante, cuidado e aviso). Eles podem ser redistribudos gratuitamente com a documentao Red Hat. Contributing Writers: John Ha (System Administration, Filesystems, Kernel), Joshua Wulf (Installation and Booting), Brian Cleary (Virtualization), David O'Brien (Security and SELinux), Michael Hideo (System Administration), Don Domingo (System Administration), Michael Behm (System Administration), Paul Kennedy (Storage), Melissa Goldin (Red Hat Network) Homenageando aqueles que j fizeram parte da equipe: Sandra Moore, Edward C. Bailey, Karsten Wade, Mark Johnson, Andrius Benokraitis, Lucy Ringland Homenageando os esforos de engenharia: Jeffrey Fearn Editoria tcnica: Michael Behm Artista grfico: Andrew Fitzsimon A equipe de Localizao da Red Hat envolve as pessoas a seguir: East Asian Languages Simplified Chinese T ony T ongjie Fu Simon Xi Huang Leah Wei Liu Sarah Saiying Wang T raditional Chinese Chester Cheng T erry Chuang Ben Hung-Pin Wu Japanese Kiyoto Hashida Junko Ito Noriko Mizumoto T akuro Nagamoto Korean Eun-ju Kim Michelle Kim Latin Languages French Jean-Paul Aubry Fabien Decroux Myriam Malga Audrey Simons Corina Roe German Jasna Dimanoski Verena Furhuer Bernd Groh

Red Hat Enterprise Linux 5 D eployment Guide

159

Daniela Kugelmann T imo T rinks Italian Francesco Valente Brazilian Portuguese Glaucia de Freitas Leticia de Lima David Barzilay Spanish Angela Garcia Gladys Guerrero Yelitza Louze Manuel Ospina Russian Yuliya Poyarkova Indic Languages Bengali Runa Bhattacharjee Gujarati Ankitkumar Rameshchandra Patel Sweta Kothari Hindi Rajesh Ranjan Malayalam Ani Peter Marathi Sandeep Shedmake Punjabi Amanpreet Singh Alam Jaswinder Singh T amil I Felix N Jayaradha

Potrebbero piacerti anche