Mostrar mensagens com a etiqueta Firewall. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Firewall. Mostrar todas as mensagens

quarta-feira, 17 de fevereiro de 2010

Como funcionam os firewalls

Como funcionam os firewalls
por Jeff Tyson - traduzido por HowStuffWorks Brasil

Introdução

Se você usa a Internet há algum tempo, já deve ter ouvido falar em firewall. Tanto a conexão doméstica quanto a conexão em rede de grandes corporações podem ter problemas de segurança. Com um firewall, é possível proteger a rede das páginas ofensivas e dos hackers em potencial.

O termo inglês firewall faz uma alusão comparativa à função que o sistema desempenha a fim de evitar o alastramento de dados nocivos dentro de uma rede de computadores, da mesma forma que uma parede corta-fogo (firewall) evita o alastramento de incêndios pelos cômodos de uma edificação. Conforme você for lendo este artigo, vai aprender como ele funciona e de que tipos de ameaças o firewall protege as redes.

O que ele faz

Um firewall é um programa ou dispositivo de hardware que filtra as informações que entram pela conexão da Internet para a rede de conexão ou o sistema do computador. Se um pacote de informações recebido estiver marcado pelos filtros, não vai receber permissão para passar.

Se você leu o artigo Como funcionam os servidores Web, já sabe como os dados se movem pela Internet e vai entender facilmente como um firewall ajuda a proteger os computadores dentro de uma grande empresa. Digamos que você trabalha em uma empresa com 500 funcionários. A empresa provavelmente terá centenas de computadores com placas de rede conectando-os. Além disso, a empresa também terá uma ou mais conexões de alta velocidade com a Internet. Sem um firewall, todos esses computadores estariam diretamente acessíveis para qualquer um na Internet. Um hacker pode sondar esses computadores, tentar estabelecer conexões FTP com eles, fazer conexões telnet e assim por diante. Ou, se um funcionário cometer um erro e deixar um furo na segurança, os hackers podem chegar nessa máquina e explorar esse furo.

Uma empresa poderá colocar um firewall em cada conexão com a Internet (por exemplo, em cada linha de conexão que entra na empresa). O firewall é capaz de implantar regras de segurança. Por exemplo, umas das regras de segurança dentro da empresa poderia ser: ter 500 computadores dentro dessa empresa, mas somente um deles ter a permissão de receber tráfego público de FTP. O firewall permitiria conexões FTP somente com esse computador e as impediria em todos os outros.

Uma empresa pode definir regras como essa para os servidores FTP, Web, Telnet e outros. Além do mais, a empresa também pode controlar como os funcionários se conectam com páginas da Internet, se os arquivos sairem da empresa pela rede. Um firewall dá à empresa um grande controle sobre a maneira como as pessoas usam a rede.

Para controlar o tráfego pela rede, podem-se usar alguns dos métodos abaixo.

  • Filtros de pacotes - pacotes (pequenos pedaços de dados) são analisados levando um conjunto de filtros em consideração. Os pacotes que atravessam os filtros são enviados ao sistema que o pediu e todos os outros são descartados.
  • Serviço proxy - informações da Internet são captadas pelo firewall e enviadas ao sistema que as pediu e vice-versa.
  • Stateful inspection - método mais novo que não examina os conteúdos de cada pacote, mas compara certas partes especiais com um banco de dados de informações confiáveis. Informações da parte interior do firewall para a parte exterior são monitoradas para verificar características específicas e as informações recebidas são comparadas com essas características. Se a comparação tiver uma igualdade razoável, as informações recebem permissão para entrar. Senão, são descartadas.

Adequando o firewall

Os firewalls podem ser personalizados. E isso significa que é possível adicionar ou remover filtros baseando-se em várias condições. 
  • Endereços IP - cada máquina na Internet recebe um endereço único chamado de endereço IP. Os endereços IP são números de 32 bits que costumam ser expressados como quatro "octetos" em um "número decimal separado por pontos". Um endereço IP tem a seguinte aparência: 216.27.61.137. Por exemplo, se um determinado endereço IP fora da empresa estiver lendo muitos arquivos de um servidor, o firewall pode bloquear todo o tráfego que entra ou sai desse endereço IP.

  • Nomes de domínio - é difícil lembrar a seqüência de números que compõem um endereço IP e como os endereços IP precisam ser alterados de vez em quando, todos os servidores da Internet também têm nomes que podem ser lidos por nós: os nomes de domínio. Por exemplo: para a maioria das pessoas é bem mais fácil lembrar de www.hsw.com.br do que lembrar de 216.27.61.137. Uma empresa pode bloquear todo o acesso a certos nomes de domínio ou permitir acesso somente a domínios específicos.

  • Protocolos - o protocolo é a maneira pré-definida pela qual alguém que deseja usar um serviço se comunica com esse serviço. Esse "alguém" costuma ser um programa, como um navegador web, mas também pode ser uma pessoa. Os protocolos freqüentemente são textos e simplesmente descrevem como o cliente e o servidor irão conversar. O http é um protocolo da Internet. Veja alguns protocolos comuns que você pode incluir nos filtros de firewalls:

    • IP (Protocolo da Internet): principal serviço de entrega de informações na Internet
    • TCP (Protocolo de controle de transmissão): usada para quebrar e reconstruir informações que viajam pela Internet
    • HTTP (Protocolo de transferência de hipertexto): usado para páginas da Internet:
    • FTP (Protocolo de transferência de arquivos): usado para fazer o download e o upload de arquivos
    • UDP (Protocolo de datagrama de usuário): usado para informações que não requerem resposta, como áudio e vídeo streaming
    • ICMP (Protocolo de mensagens de controle da Internet): usado por um roteador para trocar informações com os outros roteadores
    • SMTP (Protocolo de transporte de correio simples): usado para enviar informações de texto (e-mail)
    • SNMP (Protocolo de gerenciamento de rede simples): usado para coletar informações de sistema de um computador remoto
    • Telnet: usado para executar comandos em um computador remoto

    Uma empresa pode configurar apenas 1 ou 2 máquinas para lidar com um protocolo específico e proibir esse protocolo em todas as outras máquinas.

  • Portas - qualquer servidor disponibiliza seus serviços de Internet usando portas enumeradas, uma para cada serviço disponibilizado pelo servidor (consulte Como funcionam os servidores Web para mais detalhes). Por exemplo, se uma máquina está executando um servidor Web e um servidor de FTP, o servidor Web normalmente ficaria disponível na porta 80, ao passo que o servidor de FTP estaria disponível na porta 21. Uma empresa pode bloquear o acesso à porta 21 em todas as máquinas da empresa, exceto uma.

  • Palavras e frases específicas - um firewall irá procurar cada pacote de informações em busca de algo que coincida exatamente com o texto listado no filtro. Por exemplo, seria possível instruir o firewall para que ele bloqueasse qualquer pacote que tenha a palavra "conteúdo adulto". Mas é importante que eles sejam exatamente iguais. O filtro para "conteúdo adulto" não perceberia "conteúdos adultos" (no plural). A solução então é incluir o maior número de palavras, frases e variações que você puder.
Alguns sistemas operacionais vêm com um firewall integrado. Se esse não for o seu caso, um programa firewall pode ser instalado no computador da sua casa que tenha conexão com a Internet. Esse computador é considerado uma porta de comunicação (gateway) porque fornece o único ponto de acesso entre a suarede doméstica e a Internet.

Já com um hardware de firewall, a unidade de firewall costuma ser esse gateway. Um bom exemplo disso é o roteador Cabo/DSL Linksys. Ele possui um cartão Ethernet e hub integrados. Os computadores na sua rede doméstica se conectam com o roteador, que por sua vez está conectado com um modem para conexão decabo de TV ou ADSL. Você configura o roteador através de uma interface semelhante à Internet que é acessada pelo navegador do seu computador. É possível definir quaisquer filtros ou informações adicionais.

Firewalls de hardware são extremamente seguros e não são tão caros. Versões para uso doméstico que incluem um roteador, firewall e hub Ethernet para conexões banda larga podem ser encontrados por bem menos de US$ 100.

Ele oferece proteção contra o quê?

Há muitas maneiras de pessoas inescrupulosas acessarem ou violarem computadores desprotegidos.
  • Login remoto - quando alguém é capaz de se conectar ao seu computador e controlá-lo de alguma forma. Isso pode variar desde a capacidade de visualizar ou acessar seus arquivos até a capacidade de executar programas no seu computador.

  • Backdoors de aplicativos - alguns programas possuem funções especiais que permitem acesso remoto. Outros contêm falhas que abrem backdoors, ou pontos de acesso ocultos, que dão algum nível de controle sobre o programa.

  • Captura de sessão SMTP - o SMTP é o método mais comum para enviar e-mails pela Internet. Ao ganhar acesso a uma lista de endereços de e-mail, uma pessoa pode enviar e-mails não solicitados (spam) para milhares de usuários. Isso é feito com bastante freqüência redirecionando o e-mail através do servidor SMTP de um host inocente, fazendo com que seja difícil rastrear o verdadeiro remetente do spam;

  • Falhas no sistema operacional - da mesma maneira que os aplicativos, alguns sistemas operacionais também têm pontos de acesso ocultos. Outros fornecem acesso remoto com controles de segurança insuficiente ou têm falhas que um hacker experiente pode aproveitar.

  • Denial of service (DoS) - você provavelmente já ouviu essa frase em reportagens sobre ataques em grandes páginas de Internet. Esse tipo de ataque é quase impossível de se impedir. O que acontece é que o hacker envia uma solicitação para o servidor pedindo uma conexão com ele. Quando o servidor responde com um reconhecimento da solicitação e tenta estabelecer uma sessão, não consegue encontrar o sistema que fez a solicitação. E ao inundar um servidor com essas solicitações de sessão impossíveis de se responder, um hacker faz com que o servidor pare ou "caia".

  • Bombas enviadas por e-mail - costuma ser um ataque pessoal. Alguém lhe envia o mesmo e-mail centenas ou milhares de vezes até que o seu sistema de e-mail não consiga aceitar mais nenhuma mensagem.

  • Macros - para simplificar procedimentos complicados, muitos aplicativos permitem que você crie um script de comandos que o aplicativo pode executar. Esse script é conhecido como macro. Os hackers tiram vantagem disso para criar suas próprias macros que, dependendo do aplicativo, podem destruir seus dados ou fazer o seu computador "cair".

  • Vírus - provavelmente, a ameaça mais conhecida. Um vírus de computador é um pequeno programa que pode criar cópias de si mesmo em outros computadores. Dessa maneira, ele pode se espalhar rapidamente de um sistema para o outro. Existem vários tipos de vírus, desde as mensagens que não causam risco nenhum até aqueles que apagam todos os seus dados.

  • Spam - normalmente inofensivos, mas sempre irritantes. O spam é o equivalente eletrônico de correspondência não solicitada. Mas ele pode ser perigoso, pois muitas vezes contém links para páginas da Internet. Cuidado ao clicar nesses links, já que pode acidentalmente aceitar um cookieque abre um ponto de acesso ao seu computador;

  • Bombas redirecionadas - os hackers usam ICMP para alterar (redirecionar) o caminho utilizado pelas informações ao enviá-las para um roteador diferente. Essa é uma das maneiras em que um ataque DoS é organizado.

  • Roteamento pela fonte - na maioria dos casos, o caminho percorrido por um pacote na Internet (ou em qualquer outra rede) é determinado pelos roteadores desse caminho. Mas a fonte que fornece o pacote pode especificar de maneira arbitrária a rota que o pacote deveria percorrer. Às vezes, os hackers se aproveitam disso para fazer a informação parecer que vem de uma fonte confiável ou mesmo de dentro da rede. Por padrão, a maioria dos produtos de firewall desativa roteamento de fontes.
Alguns dos itens na lista acima são difíceis de se filtrar com um firewall. Embora alguns firewalls ofereçam proteção contra vírus, vale a pena investir na instalação de um anti-vírus em cada computador. E embora saibamos que são irritantes, alguns spams vão conseguir passar pelo seu firewall pelo simples fato de você aceitar e-mails.

O nível de segurança que você estabeleu irá determinar quantas dessas ameaças podem ser bloqueadas pelo firewall. O nível mais alto de segurança seria simplesmente bloquear tudo. Mas é óbvio que isso vai contra o propósito principal de se ter uma conexão de Internet. No entanto, uma regra geral é bloquear tudo e, depois, começar a selecionar que tipos de tráfego permitir. Também é possível restringir o tráfego que passa pelo firewall de modo que somente certos tipos de informação, como e-mail, possam passar. Essa é uma boa regra para as empresas que têm um administrador de rede experiente que compreende quais são as necessidades e sabe exatamente qual o tráfego que deve permitir. Para a maioria das pessoas, o melhor é trabalhar com os padrões desenvolvidos pelo criador do programa, a menos que haja razões específicas para mudá-los.

Uma das melhores coisas a respeito de um firewall do ponto de vista da segurança é que ele impede que qualquer visitante externo tente se conectar em um computador da sua rede particular. E embora as ameaças para as grandes empresas sejam maiores e a maioria das redes domésticas provavelmente não sejam tão ameaçadas, ainda assim, instalar um firewall pode proporcionar um pouco mais de segurança.

Servidores proxy e DMZ

Algo que costuma ser combinado com um firewall é um servidor proxy. O servidor proxy é utilizado pelos outros computadores para acessar páginas da Internet. Quando outro computador solicita uma página da Internet, ela é resgatada pelo servidor proxy e enviada ao computador que fez a solicitação. O resultado final dessa ação é que o computador remoto que hospeda a página nunca entra em contato direto com nenhuma parte da sua rede doméstica, a não ser com o servidor proxy.

Servidores proxy também podem fazer com que seu acesso à Internet funcione de maneira mais eficiente. Se acessar uma página da Internet, ela é armazenada no servidor proxy. E isso significa que na próxima vez em que voltar para essa página, ela normalmente não terá que ser carregada da página original novamente. Em vez disso, ela será carregada instantaneamente do servidor proxy.

Há momentos em que você pode querer que usuários remotos acessem itens da sua rede. Alguns exemplos:

  • página da Internet
  • negócios online
  • área de download e upload
Nesses casos, pode ser uma boa idéia criar uma zona desmilitarizada (DMZ). Apesar do nome, não passa de uma área localizada fora do firewall. 

Configurar uma zona desmilitarizada é muito fácil. Se há vários computadores, é possível simplesmente colocar um desses computadores entre a conexão da Internet e o firewall. A maioria dos programas de firewall disponíveis hoje em dia permitem a criação de um diretório de zona desmilitarizada no computador gateway.

Assim que o firewall estiver funcionando, faça uns testes com essa zona desmilitarizada. Uma boa maneira de fazer isso é acessar www.grc.com (em inglês) e experimentar o teste de segurança Shields Up! de graça. Você vai receber um feedback imediato relatando o nível de segurança do seu sistema.

domingo, 3 de janeiro de 2010

Tutorial do CentOS

Autor:Carlos E. Morimoto

Fonte:http://www.guiadohardware.net/tutoriais/centos/

O CentOS é uma versão gratuita do Red Hat Enterprise, gerado a partir do código fonte disponibilizado pela Red Hat e mantido de forma bastante competente por um grupo de desenvolvedores, que combina representantes de diversas empresas que utilizam o sistema (sobretudo empresas de hospedagem) e voluntários.

Ele é, basicamente, uma versão gratuita do RHEL, que possui um excelente histórico de segurança e conta com uma boa estrutura de suporte comunitário e atualizações pontuais de segurança, qualidades que o tornam uma das distribuições Linux mais populares em servidores, sobretudo em servidores web.

Se você está interessado na estabilidade do Red Hat Enterprise, ou precisa rodar softwares como o Oracle, que são suportados apenas nele, mas não tem como pagar caro pelo sistema, o CentOS é a sua melhor opção.

Red Hat x RHEL x CentOS x Fedora: Para quem está chegando agora, o Red Hat Linux foi uma das primeiras distribuições Linux a conquistar um grande público. A primeira versão foi lançado em 1994 e o sistema conseguiu ganhar espaço tanto entre os desktops (devido à relativa facilidade de uso) quanto entre os servidores, devido à boa estabilidade do sistema. O Red Hat Linux foi descontinuado em 2004, dando lugar ao Fedora, que é desenvolvido de forma colaborativa e às diferentes versões do Red Hat Enterprise (também chamado de RHEL), a versão comercial do sistema, destinada a grandes empresas.

O Red Hat Enterprise possui um ciclo de desenvolvimento mais lento (que prioriza a estabilidade) e tem suas versões suportadas por um período de nada menos do que 7 anos após o lançamento. Para quem está acostumado com o rápido ritmo de desenvolvimento das distribuições Linux domésticas, um sistema que é suportado por 7 anos pode soar estranho, mas dentro do ramo corporativo este é um diferencial importante, já que atualizar os desktops e os servidores é sempre um processo arriscado e caro (devido à mão de obra necessária, necessidade de treinar os funcionários, etc.), de forma que ciclos de desenvolvimento mais lentos e previsíveis são preferidos. Veja o caso do Windows, por exemplo, muitas empresas ainda usam servidores com o 2000 Server, ou mesmo com o NT 4.

O RHEL é fornecido apenas em conjunto com um plano de suporte e não pode ser redistribuído em seu formato binário. Entretanto, todo o código fonte está disponível, de forma que alguém que pacientemente compile cada um dos pacotes disponibilizados pela Red Hat, acaba obtendo uma cópia completa do sistema, que pode ser usada para todos os fins.

O CentOS nada mais é do que um Red Hat Enterprise compilado a partir do código fonte disponibilizado pela Red Hat, com os logotipos as marcas registradas removidas. Isso garante que os dois sistemas sejam binariamente compatíveis (ou seja, um software compilado para rodar no Red Hat Enterprise roda também na versão correspondente do CentOS sem precisar de modificações) e todos os passos de instalação e configuração dos dois sistemas são idênticos, o que faz com que toda a documentação do Red Hat Enterprise se aplique também ao CentOS.

Ao aprender a trabalhar com o CentOS, você automaticamente aprende a trabalhar com o Red Hat Enterprise e vice-versa. A grosso modo, podemos dizer que o Fedora é uma versão comunitária de desenvolvimento do Red Hat Enterprise, enquanto o CentOS é uma cópia praticamente exata do sistema.

Com relação às versões, o Red Hat Enterprise 4 foi baseado no Fedora Core 3, enquanto o Red Hat Enterprise 5 foi baseado no Fedora Core 6 e o Red Hat Enterprise 6 será baseado no Fedora 9. As versões do CentOS seguem as versões do Red Hat Enterprise, de forma que o CentOS 5 corresponde ao Red Hat Enterprise 5 e assim por diante:

Fedora Core 3 > Red Hat Enterprise Linux 4 > CentOS 4
Fedora Core 6 > Red Hat Enterprise Linux 5 > CentOS 5
Fedora 9 > Red Hat Enterprise Linux 6 > CentOS 6

Novas versões do Red Hat Enterprise são disponibilizadas a cada 18 ou 24 meses, mas recebem um grande volume de atualizações e correções de segurança durante este período. Isso leva ao lançamento de sub-versões com as atualizações pré-instaladas, como o Red Hat Enterprise 4.6 e o Red Hat Enterprise 5.1, que são sempre seguidas pelas versões correspondentes do CentOS.

Assim como o sistema principal, as atualizações e correções de segurança são disponibilizados pela equipe do CentOS, novamente através de pacotes compilados a partir dos códigos fontes disponibilizados pela Red Hat. As atualizações do CentOS são tipicamente disponibilizadas entre 24 e 72 horas depois das do Red Hat Enterprise (o que é impressionante considerando que se trata de um projeto voluntário), mas muitas atualizações críticas são disponibilizadas muito mais rápido, em poucas horas. Assim como o Red Hat Enterprise, todos os releases do sistema são suportados recebem atualizações de segurança por um período de 7 anos. Com isso, o CentOS 4 será suportado até 2012 e o CentOS 5 será suportado até pelo menos 2013.

A grande diferença entre o CentOS e o Red Hat Enterprise é a questão do suporte, já que, embora caro, o suporte oferecido pela Red Hat é bastante personalizado e os profissionais passam por um exame de certificação exigente (o RHCE) que mistura testes teóricos e práticos. Em servidores de missão crítica, usar o Red Hat Enterprise e pagar pelo suporte é geralmente uma boa opção, já que além de ajuda na implementação, você tem uma equipe pronta para agir em caso de problemas inesperados. Para os demais casos, você pode perfeitamente utilizar o CentOS contando com o suporte comunitário oferecido através dos fóruns do projeto.

O CentOS é também bastante similar ao Fedora, mas nesse caso as diferenças são mais evidentes, já que versões recentes do Fedora são baseadas em pacotes mais atuais, o que invariavelmente leva a mudanças no sistema. De qualquer forma, os passos básicos de instalação e a configuração geral dos dois sistemas são praticamente iguais, de forma que as dicas desse tópico se aplicam também ao Fedora.

Comparar o CentOS e o Fedora para uso em servidores desperta argumentos similares aos de uma comparação entre o Ubuntu e o Debian. O CentOS segue as versões do Red Hat Enterprise, que possui um ciclo de desenvolvimento muito mais longo, onde a principal preocupação é a estabilidade do sistema. O Fedora, por sua vez, é desenvolvido em torno de ciclos muito mais curtos, com uma nova versão sendo disponibilizada a cada 6 meses.

Por um lado isso é bom, já que você tem acesso a versões mais atuais dos pacotes, mas por outro lado é ruim, pois o lançamento mais freqüente de novas versões aumenta sua carga de trabalho como administrador, já que o sistema precisa ser atualizado mais freqüentemente.

Além de serem mais espaçadas, as versões do CentOS recebem atualizações de segurança por um período muito mais longo, que torna a vida útil das instalações muito maior. Um servidor rodando a versão mais atual do CentOS poderia ser mantido em serviço por até 7 anos, recebendo apenas as atualizações de segurança, o que não seria possível no Fedora, onde o suporte às versões antigas é encerrado muito mais rapidamente.

Em resumo, se você não se importa de utilizar softwares ligeiramente antigos e quer um servidor que ofereça um baixo custo de manutenção e possa ser usado durante um longo período sem riscos, o CentOS é mais recomendável. Se, por outro lado, você precisa de versões recentes do Apache, Samba ou outros serviços, ou se tem alguma preferência pessoal em relação ao Fedora, também pode utilizá-lo sem medo.

Embora o Fedora seja em teoria menos estável que o CentOS, ambas as distribuições podem ser considerados bastante estáveis. Poderíamos dizer que o CentOS é "99% estável" enquanto o Fedora é "98% estável". Ou seja, existe diferença, mas ela é relativamente pequena.

Instalando

Voltando à instalação, você pode baixar as imagens do sistema no http://www.centos.org/

Na versão 5.1, o sistema é distribuída tem nada menos do que 6 CDs de instalação (7 CDs na versão de 64 bits), mas, assim como no caso do Debian, é possível fazer uma instalação minimalista usando apenas o primeiro CD. Se baixar 4 GB não for um problema, você pode ganhar tempo baixando a versão em DVD.

Está disponível também o NetInstall, uma imagem de boot com apenas 7 MB para instalação via rede, onde o instalador baixa os pacotes necessários via HTTP, FTP ou NFS durante a instalação. É perfeitamente possível usar o NetInstall para fazer uma instalação via web, baixando apenas os pacotes que serão realmente usados (em vez de baixar o DVD inteiro), mas a menos que você tenha uma conexão muito rápida, ou esteja fazendo uma instalação minimalista, isso não é muito recomendável.

O mais comum é que o NetInstall seja usado para instalar vários servidores (imagine o caso de uma empresa de hospedagem, por exemplo) a partir de um mirror local. Para configurar um, você precisa apenas copiar todos os arquivos do DVD de instalação para uma pasta e compartilhar o conteúdo usando um servidor web ou FTP, informando o endereço IP do servidor e o diretório onde estão os arquivos ao instalar o sistema nas demais máquinas.

É possível ainda automatizar a instalação através do kickstart, um recurso disponível também no Fedora, onde você gera um arquivo de configuração, contendo instruções para o instalador e indica a localização do arquivo usando um parâmetro de boot, como em:

linux ks=http://192.168.1.254/ks.cfg

Este exemplo faz com que o instalador configure a rede via DHCP e tente acessar o arquivo através de um servidor web interno. É possível carregar o arquivo via NFS, FTP, usando um disquete ou mesmo gerar um CD de instalação personalizado, incluindo o arquivo. Ele é uma boa opção para ambientes onde você precisa realizar um grande número de instalações em pouco tempo. Você pode ver mais detalhes sobre ele aqui:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/pt-BR/Installation_Guide/ch-redhat-config-kickstart.html

O CentOS utiliza o Anaconda, que é o mesmo instalador gráfico usado no Fedora. Para usar o instalador gráfico é necessário ter 512 MB de memória, mas é possível instalar o sistema em máquinas antigas usando o instalador em modo texto, que pode ser acessado usando a opção "linux text" na tela de boot:

clip_image001

Assim como em outras distribuições, você pode incluir opções para o Kernel na linha de boot, de forma a solucionar problemas de compatibilidade, como a "acpi-off", "noapic", "all-generic-ide", "irqpoll" e "outras", como em:

linux noapic irqpoll

O instalador começa se oferecendo para realizar um teste da mídia de instalação e em seguida pergunta sobre a linguagem do sistema (o português do Brasil está disponível desde as primeiras versões do sistema) e o layout do teclado.

Durante a instalação, você pode ver o log de mensagens geradas pelo instalador pressionando Ctrl+Alt+F3 e ter acesso a um terminal que pode ser usado para solucionar problemas pressionando Ctrl+Alt+F2.

Em seguida temos o particionamento dos HDs, que começa com a clássica pergunta sobre utilizar o layout padrão, ou criar um layout personalizado:

clip_image002

O CentOS utiliza o LVM por padrão, criando um único volume lógico, englobando todo o espaço disponível do HD e criando partições dentro dele. É usada também uma partição /boot separada, que fica fora do volume LVM, já que o grub não é capaz de inicializar o sistema se o diretório /boot estiver dentro de um volume lógico:

clip_image003

O LVM (Logical Volume Manager) é um recurso incluído no Kernel Linux a partir da versão 2.4 que cria uma camada de abstração entre o sistema operacional e os HDs (ou outras unidades de armazenamento utilizadas). Ele adiciona alguns complicadores adicionais na configuração, mas, em compensação oferece um conjunto de vantagens bastante interessantes.

Imagine que no LVM o sistema não vê HDs e partições, mas sim um ou mais volumes lógicos. Cada volume se comporta como se fosse uma partição, que é formatada e montada da forma usual (um volume pode ser usado inclusive como partição swap). Estes volumes são agrupados em um grupo de volumes lógicos (logical volume group) que se comporta de forma similar a um HD.

O pulo do gato é que o grupo de volumes lógicos pode combinar o espaço de vários HDs e ser modificado conforme necessário, incorporando mais HDs. Os volumes lógicos dentro dele também podem ser redimensionados livremente conforme for necessário.

Se você precisa de mais espaço dentro do volume referente à pasta home, por exemplo, você poderia reduzir o tamanho de um dos outros volumes do sistema (que estivesse com espaço vago) e aumentar o tamanho do volume referente ao home, tudo isso com o servidor operante.

Outra possibilidade é ir adicionando novos HDs ao servidor conforme precisar de mais espaço. Ao instalar um novo HD, você começaria criando um volume físico, englobando todo o espaço do HD. Uma vez que o volume físico é criado, você pode expandir o grupo de volumes lógicos, de forma que ele incorpore o espaço referente ao novo HD. A partir daí, você pode expandir os volumes lógicos, usando o espaço livre.

Caso seja utilizada uma controladora SCSI ou SAS com suporte a hot-swaping, é possível até mesmo adicionar, remover ou substituir HDs, fazendo as alterações necessárias nos volumes lógicos, tudo sem interrupções.

É importante enfatizar que o LVM é apenas uma mudança na forma como o sistema acessa os discos, ele não é um substituto para o RAID. No LVM você pode agrupar vários HDs em um único grupo de volumes lógicos, mas se um dos HDs apresentar defeito, o servidor ficará inoperante e você perderá os dados armazenados no disco afetado, diferente do RAID, onde você pode sacrificar parte do espaço para ter uma camada de redundância.

O grupo de volumes lógicos criado pelo instalador é visto pelo sistema como "/dev/VolGroup00" e os volumes lógicos dentro dele são vistos como "/dev/VolGroup00/LogVol00", "/dev/VolGroup00/LogVol01", etc. Estes nomes usados por default não são muito descritivos, mas é possível alterá-los usando o próprio particionador. Naturalmente, é possível também deixar de usar o LVM, voltando ao sistema normal de particionamento. Nesse caso você só precisa deletar os volumes e o grupo de volumes lógicos e criar a partições desejadas usando o espaço disponível.

Para o particionamento do HD, valem as regras que vimos no meu tutorial anterior sobre instalação de servidores Linux, ou seja, usar volumes separados para os diretórios "/tmp", "/var" e "/home", de acordo com a aplicação do servidor.

Em seguida temos a tela de configuração do gerenciador de boot. Diferente de um desktop, onde muitas vezes precisamos configurar o gerenciador para inicializar vários sistemas operacionais, em um servidor utilizamos sempre um único sistema, o que simplifica as coisas. Você pode rodar outros sistemas operacionais simultaneamente usando VMware Server ou o Xen, utilizando máquinas virtuais.

clip_image004

A opção "Utilizar uma senha no gerenciador de inicialização" define uma senha de boot, que é solicitada pelo grub no início do boot. Esta senha é raramente usada em servidores, pois impede que o servidor seja reiniciado sem que alguém esteja presente no local para digitar a senha no boot seguinte. Ela também não é eficiente como uma proteção contra acesso local do servidor, pois é facilmente burlável.

Em seguida temos a configuração da rede. Tanto ao configurar um servidor para a Internet quanto ao configurar um servidor de rede local, é muito provável que você configure também um domínio. Na Internet a função do domínio é obvia, já que é através dele que os visitantes acessarão os sites hospedados, mas um domínio pode ser útil também em uma rede local, facilitando o acesso às máquinas e viabilizando o uso de diversos serviços adicionais. Mesmo o Active Directory (utilizado em redes Microsoft) é fortemente baseado no uso de domínios.

Gerenciar nomes de domínio é tarefa para o Bind. Por enquanto, você pode se limitar a configurar o "fully qualified domain name" do servidor, ou seja, seu nome completo, incluindo o nome da máquina e o domínio que será utilizado, como em "centos.gdhn.com.br":

clip_image005

Depois de ajustar o fuso-horário e definir as senhas do sistema, chegamos à seleção dos pacotes que serão instalados. Todas as categorias disponíveis são opcionais, de forma que se você simplesmente desmarcar todas, fará uma instalação minimalista do sistema, em modo texto.

As categorias importantes no nosso caso são a "Server" (a seleção padrão de pacotes, incluindo o Samba, Apache, FTP, etc.) e, opcionalmente, a "Server-GUI", que instala o ambiente gráfico e as ferramentas gráficas de administração. É interessante ativar também o "Packages from CentOS Extras", que torna disponível um conjunto de pacotes adicionais, disponibilizados pela equipe do CentOS.

clip_image006

Marcando a opção "Personalizar agora" você tem acesso ao menu de seleção de pacotes. Se você marcou a categoria "Server-GUI" ou uma das categorias desktop, você notará que os pacotes referentes ao X, além do Gnome ou KDE e um conjunto de aplicativos gráficos estarão marcados.

Assim como o Fedora, o CentOS inclui um conjunto de aplicativos gráficos para configuração do sistema que podem ser úteis em muitas situações, de forma que muitos administradores preferem manter o ambiente gráfico instalado, mesmo em servidores que serão apenas acessados remotamente. Você pode perfeitamente manter os pacotes relacionados ao ambiente gráfico instalados, mas manter o ambiente gráfico inativo enquanto não o estiver usando (de forma a não consumir recursos do servidor).

Nas primeiras instalações, recomendo que desmarque os pacotes dentro da categoria "Servidores" e instale cada serviço manualmente, assim você pode estudar melhor o processo de configuração de cada um:

clip_image007

Diferentemente do Red Hat Enterprise, que possui versões distintas para servidores (Red Hat Enterprise Linux), servidores de missão crítica (Red Hat Enterprise Linux Advanced Platform) e para estações de trabalho (Red Hat Enterprise Linux Desktop), cada uma contendo uma coleção de pacotes específicos para as tarefas a que são destinadas, o CentOS é uma distribuição unificada, que simplesmente inclui todos os pacotes disponíveis nos repositórios.

Isso significa que, além de ser usado como servidor, que é o que estudaremos aqui, o CentOS também pode ser usado como sistema desktop, já que inclui o Gnome, KDE e um conjunto bastante completo de aplicativos que podem ser marcados durante a instalação.

Depois de concluída a cópia dos arquivos, é aberto um agente de configuração (que no RHEL é chamado de Red Hat Setup Agent), que conclui a configuração do sistema. Duas opções importantes são a configuração do firewall e do SELinux.

O configurador do firewall é na verdade um wizard, que permite que você selecione as portas referentes aos serviços que ficarão ativos no servidor (as portas selecionadas são abertas e todas as demais fechadas) e, a partir das respostas, gera as regras correspondentes para o IPtables, que é o firewall propriamente dito. Além das portas dos serviços padrão, você pode adicionar manualmente qualquer porta que precisar manter aberta. No exemplo estou abrindo a porta 901, usada pelo swat:

clip_image008

Você pode ajustar a configuração do firewall após a instalação através do utilitário "system-config-securitylevel" (disponível no Sistema > Administração > Nível de Segurança e Firewall). Existe também uma versão em modo texto do aplicativo, o "system-config-securitylevel-tui", que pode ser acessada via terminal (e inclusive remotamente, via SSH).

É possível também desativar a configuração do firewall e configurar as regras do IPtables manualmente, como veremos a seguir. Escrever um script de firewall é mais simples do que pode parecer à primeira vista.

Enquanto estiver estudando, recomendo que faça justamente isso; desativando o firewall na configuração e configurando o IPtables manualmente. Isso evita que você se depare com problemas inesperados introduzidos por portas fechadas no firewall. Depois que você entender a configuração manual do IPtables, pode voltar a configurar o firewall através do wizard caso prefira.

Continuando, temos o SELinux (Secure Linux), um sistema que visa reforçar a segurança do sistema, aplicando um conjunto de diretivas rígidas de segurança. O grande problema é que o SELinux interfere no funcionamento de um grande volume de serviços e de softwares adicionais, o que torna necessário criar exceções para cada caso.

Isso faz com que o modo "Enforcing" (Forçando) do SELinux seja aconselhável apenas em situações onde a segurança realmente seja um fator crítico e onde o administrador possua profundos conhecimentos do sistema, de forma a diagnosticar problemas causados pelas políticas de segurança e criar as exceções necessárias. Um meio termo é o nível "Permissive" (permissivo), onde o SELinux é aplicado apenas a alguns serviços específicos (o Apache e o Bind, por exemplo) e age apenas em relação a eles.

Mesmo sem o SELinux, o CentOS é uma distribuição bastante segura. Enquanto você estiver estudando sobre o sistema e utilizando-o em servidores de rede local, é interessante desativar o sistema. Com isso, você evita situações onde determinados serviços não estão funcionando (apesar da configuração estar correta) por causa das restrições do SELinux.

clip_image009

Para desativá-lo depois da instalação, edite o arquivo "/etc/selinux/config" e substitua a linha "SELINUX=enforcing" ou "SELINUX=permissive" por:

SELINUX=disabled

É necessário reiniciar o micro para que a alteração entre em vigor. O reboot demora alguns minutos, pois o sistema precisa realizar um conjunto de modificações nos arquivos.

A menos que você tenha manualmente desmarcado o pacotes "openssh-server" durante a instalação, o servidor SSH será instalado e ficará ativo por padrão, o que permite que você faça o restante da configuração do servidor remotamente:

$ ssh root@servidor

O arquivo de configuração do SSH no CentOS é o "/etc/ssh/sshd_config", o mesmo usado no Debian e no Ubuntu. O nome do pacote também é o mesmo, "openssh-server". A única diferença é que o script usado para controlar o serviço é o "/etc/init.d/sshd" e não "/etc/init.d/ssh".

Usando o yum

O yum (Yellow dog Update, Modified) é o gerenciador de pacotes usado por padrão no CentOS, no Fedora e no Red Hat Enterprise. O yum foi originalmente desenvolvido pela equipe do Yellow Dog (uma distribuição baseada no Red Hat, destinada a computadores com chip PowerPC) e foi sistematicamente aperfeiçoado pela equipe da Red Hat, até finalmente assumir o posto atual.

O yum trabalha de forma bem similar ao apt-get, baixando os pacotes a partir dos repositórios especificados nos arquivos de configuração, junto com as dependências necessárias. Assim como o apt-get, ele é capaz de solucionar conflitos automaticamente e pode ser também usado para atualizar o sistema. Essencialmente, o yum e o apt-get solucionaram o antigo problema das dependências (um pacote precisa de outro, que por sua vez precisa de um terceiro) que atormentava os usuários de distribuições mais antigas.

Existem muitas diferenças entre o CentOS e o Debian, uma delas é o formato dos pacotes utilizados: o CentOS utiliza pacotes .rpm, enquanto o debian utiliza pacotes .deb. Ambos também utilizam repositórios separados, com pacotes construídos especificamente para cada uma das duas distribuições, de forma que existem algumas diferenças nos nomes dos pacotes e arquivos de configuração usados.

Diferente do apt-get, onde você precisa rodar o "apt-get update" antes de cada instalação para atualizar a lista de pacotes, o yum faz a atualização automaticamente cada vez que uma instalação é solicitada, checando os repositórios, baixando os headers do pacotes e calculando as dependências antes de confirmar a instalação, como nesse exemplo:

clip_image011

Isso faz com que a instalação de pacotes usando o yum seja um pouco mais demorada que usando o apt-get. Ou seja, ganha-se de um lado mas perde-se do outro. :)

Para instalar um pacote, use o comando "yum install", como em:

# yum install mysql-server

Para removê-lo posteriormente, use:

# yum remove mysql-server

O yum possui também um recurso de busca, que é bastante útil quando você está procurando por um pacote, mas não sabe o nome exato, ou em casos de pacotes que possuem nomes diferentes em relação a outras distribuições. Use o comando "yum search", seguido por alguma palavra ou expressão, que faça parte do nome do pacote ou descrição, como em:

# yum search samba

Ele retorna um relatório contendo todos os pacotes relacionados, incluindo o texto de descrição de cada um. Isso resulta geralmente em uma lista relativamente longa. Para fazer uma busca mais restrita, procurando apenas nos nomes dos pacotes, use o parâmetro "list", como em:

# yum list httpd

Ele é bem menos falador, retornando apenas os pacotes que possuem "httpd" no nome, sem pesquisar nas descrições.

Uma terceira opção é a "provides" que mostra pacotes que incluem um determinado arquivo, pesquisando não no nome ou na descrição, mas sim no conteúdo dos pacotes. Ele é bastante útil em casos em que você precisa de alguma ferramenta ou biblioteca que faz parte de outro pacote maior, como em:

# yum provides mcedit

Em caso de dúvida, você pode verificar se um determinado pacote está instalado e qual é a versão usando o comando "rpm -q", como em:

# rpm -q samba

samba-3.0.25b-0.el5.4 

Para atualizar um pacote já instalado, use o comando "yum update", como em:

# yum update samba

O comando "yum install" também pode ser usado para atualizar pacotes. A diferença entre o "install" e o "update" é que o "update" se limita a atualizar pacotes já instalados. Ao perceber que o pacote solicitado não está instalado, ele exibe um aviso e aborta a instalação, como no exemplo abaixo. Isso reduz a possibilidade de você acabar instalando um novo serviço por engano:

# yum update mysql-server

Loading "installonlyn" plugin
Setting up Update Process
Setting up repositories
Reading repository metadata in from local files
Could not find update match for mysql-server

Outra observação é que, depois de atualizar um serviço, é necessário recarregar o serviço (como em "service smb restart") para que a nova versão passe a ser usada. Esta é mais uma pequena diferença com relação às distribuições derivadas do Debian, onde os serviços são reiniciados de forma automática depois de atualizados.

Para atualizar todo o sistema, comece usando o parâmetro "check-update", que lista as atualizações disponíveis:

# yum check-update

Se usado sem especificar um pacote, o "update" vai atualizar de uma vez só todos os pacotes do sistema, de forma similar ao "apt-get upgrade" do Debian:

# yum update

Existe ainda o comando "yum upgrade", que é um pouco mais incisivo, incluindo também pacotes marcados como obsoletos (que não existem mais na versão atual). Ele é útil em casos em que é necessário atualizar uma versão antiga do sistema:

# yum upgrade

É possível também fazer com que o yum atualize o sistema automaticamente todas as madrugadas. Para isso, basta ativar o serviço "yum" e configurá-lo para ser ativado durante o boot:

# chkconfig yum on
# service yum start

Isso faz com que a atualização seja agendada através do cron e seja (por padrão) executada todos os dias às 4:02 da manhã, como especificado no arquivo "/etc/crontab".

Repositórios adicionais

A lista de repositórios usados pelo yum é dividida em diversos arquivos, organizados na pasta "/etc/yum.repos.d/". No CentOS, a parta inclui por padrão apenas dois arquivos: "CentOS-Base.repo" e "CentOS-Media.repo". O primeiro inclui os repositórios oficiais da distribuição, enquanto o segundo permite que você instale pacotes contidos nos CDs (ou no DVD) de instalação.

O arquivo "CentOS-Base.repo" contém diversas entradas como a abaixo, uma para cada repositório:

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

Ao adicionar repositórios adicionais, você criaria novos arquivos dentro da pasta "/etc/yum.repos.d/", um para cada repositório adicional.O yum verifica os arquivos dentro da pasta cada vez que é executado, fazendo com que o novo repositório passe a ser usado automaticamente.

Normalmente, os responsáveis pelos repositórios disponibilizam arquivos de configuração prontos, que precisam ser apenas copiados para dentro da pasta "/etc/yum.repos.d". Para adicionar o repositório kbs-centos-extras, por exemplo, você baixaria o arquivo "kbsing-CentOS-Extras.repo", disponível no http://centos.karan.org/.

Assim como o apt-get, o yum utiliza chaves GPG para checar a autenticidade dos pacotes antes de fazer a instalação. Cada pacote é assinado digitalmente pelo desenvolvedor, o que atesta que o pacote foi realmente gerado por ele. Mesmo que alguém tentasse adulterar o pacote (incluindo um rootkit ou um script malicioso, por exemplo), não teria como falsificar também a assinatura, o que levaria o yum a reportar o problema e abortar a instalação.

Ao adicionar um novo repositório, é necessário adicionar também a chave pública do desenvolvedor, usando o comando "rpm --import", como em:

# rpm --import http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

Normalmente, a URL com a chave pública GPG fica em destaque dentro da página com instruções de como adicionar o repositório.

Da mesma forma, para remover um repositório posteriormente, você removeria o arquivo da pasta, de forma que o yum deixe de usá-lo. É interessante também limpar o cache do yum, usando os comandos:

# yum clean headers
# yum clean packages

Plugins

O yum oferece também suporte a plugins, que permitem expandir as funcionalidades do gerenciador. Dois plugins bastante populares são o fastestmirror e o protectbase.

O fastestmirror faz com que o yum cheque a velocidade dos mirrors a cada instalação e baixe sempre os pacotes a partir do mirror mais rápido (evitando os problemas de lentidão que atingem muitos usuários), enquanto o protectbase faz com que o yum dê prioridade para os pacotes dos repositórios oficiais, evitando que eles sejam substituídos por pacotes de outros repositórios adicionados manualmente.

Para ativar o fastestmirror, basta instalar o pacote "yum-fastestmirror", como em:

# yum install yum-fastestmirror

Isso faz com que ele passe a ser usado automaticamente. Você notará que o yum passará a exibir duas mensagens adicionais durante cada operação:

Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile

Naturalmente, para que o fastestmirror possa escolher o repositório mais rápido a utilizar, é necessário que seja especificada uma lista de mirrors dentro da configuração de cada repositório na pasta "/etc/yum.repos.d". Você notará que as entradas referentes aos mirrors oficiais incluem uma linha "mirrorlist", que indica a localização de um arquivo com a lista dos mirrors disponíveis, como em:

[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras

Ao adicionar novos repositórios manualmente, não se esqueça de pesquisar sobre a localização do arquivo com a lista dos mirrors, de forma a especificá-lo na configuração.

Para ativar o protectbase, instale o pacote yum-protectbase:

# yum install yum-protectbase

Para que ele se usado, é necessário adicionar a linha "protect=1" ou "protect=0" na configuração de cada um dos repositórios incluídos na pasta "/etc/yum.repos.d". Os repositórios com o "protect=1" serão protegidos pelo protectbase, evitando que os pacotes sejam substituídos por pacotes de versões mais recentes incluídos nos repositórios adicionais. Com isso, os repositórios adicionais passam a realmente ser usados apenas para instalar pacotes que não fazem parte dos repositórios principais, reduzindo bastante a possibilidade de problemas ao usar repositórios não-oficiais.

É importante proteger pelo menos os repositórios "base" e "updates", dentro do arquivo "/etc/yum.repos.d/CentOS-Base.repo", como em:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

As demais entradas devem receber a opção "protect=0", como em:

[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
protect = 0