quinta-feira, 11 de dezembro de 2008

Wireless no Debian

Com a queda nos preços de equipamentos de informática e em especial dos laptops e netbooks é cada vez maior o número desses equipamentos no nosso meio. Esses dias mesmo, na casa de um amigo, nos surpreendemos ao perceber que na casa estavam ligados sete laptops e apenas um desktop.

Junto com os laptops passamos a consumir um outro tipo de tecnologia: a rede sem fios.

Atualmente quase todo equipamento que se preze tem pelo menos uma conexão desse tipo, das quais posso destacar: WiFi e Bluetooth.

Com essa demanda é cada vez mais comum usuari@s Debian se depararem com o problema de drivers para placas de rede WiFi.

Esse problema pode ser facilmente resolvido (ou minimizado) se antes da aquisição do equipamento a pessoa fizer uma pesquisa para saber quais são 100% compatíveis com o GNU/Linux. O Debian mantêm, em sua wiki, uma lista de reports das experiências de usuari@s com vários equipamentos. Vale apena conferir se você está planejando comprar um e não esteja afim de um bom desafio na hora de configurar alguns dispositivos. Além desses reports existe uma lista com todos os dispositivos PCI suportados por Debian e uma lista com todos os dispositivos USB suportados por Debian.

Algumas pessoas me perguntaram, algumas vezes, por qual motivo é mais fácil configurar dispositivos no Ubuntu do que no Debian ou ainda, por qual motivo, sendo o Ubuntu baseado em Debian, ele consiga identificar e instalar um número maior de dispositivos que o próprio Debian. Isso se deve ao compromisso Debian de distribuir apenas software que seja 100% livre, o que impede que o sistema instale, automaticamente, drivers e plugins proprietários, como o Flash e o Java, por exemplo.

Voltando à questão da instalação das placas de redes WiFi no Debian quero aproveitar para deixar claro que boa parte do que se segue é uma tradução livre da wiki Debian sobre WiFi e que ela é uma ótima fonte a ser consultada durante o processo de instalação de uma placa dessas.

Esse post não trata da instalação de uma ou de outra placa específica, mas dos caminhos a serem percorridos para que se possa instalar, de formas diferentes, esses dispositivos. É preciso que você entenda que o que determina qual é o modelo da sua placa WiFi é um componente eletrônico conhecido por Chipset. É possível encontrar o mesmo chipset em várias marcas diferentes. Por isso não tente encontrar o driver para seu dispositivo baseando-se apenas na marca do equipamento. Procure pelo driver para o chipset. Veremos como identificá-lo logo mais.

Ferramentas que você irá precisar

Você irá precisar de algumas ferramentas para que possa instalar e configurar sua WiFi de forma mais fácil. Todas elas já foram empacotadas para o Debian e todas estão nos repositórios oficiais, bastando que você execute o processo de instalação de pacotes normalmente.

wireless-tools - conjunto de ferramentas que permite a configuração de parâmetros específicos da WiFi. É nesse pacote que encontra-se, por exemplo, o comando iwconfig. Se você selecionou a opção Notebook durante a instalação do Debian em seu computador, esse pacote já estará instalado.

network-manager - veja a wiki sobre o NetworkManager. Observe que existem pacotes adicionais que precisam ser instalados dependendo do gerenciador de janelas que você estiver usando. Por padrão o Debian instala Gnome como gerenciador de janelas, portanto, nesse caso, não esqueça de instalar o network-manager-gnome também.

module-assistant - essa ferramenta será util caso você precise criar um pacote com o driver da placa WiFi.

wpasupplicant - necessária para conexão em redes com chave WPA e/ou WPA2.

Existe a possbilidade de instalar esses pacotes pelo modo gráfico, utilizando-se do Synaptic, mas se você acha mais rápido fazer pela linha do Bash, como eu faço, seguem os comandos (rode-os como root):

aptitude update
aptitude install wireless-tools network-manager module-assistant wpasupplicant network-manager-gnome
Link
Identificando o chipset do seu dispositivo

A primeira coisa que você precisa saber é qual o chipset do seu dispositivo. Existem, basicamente, três tipos pelos quais um dispositivo WiFi pode ser conectado em seu equipamento. São eles: cartão PCI, cartão USB e cartão PCMCIA. Caso não saiba qual o tipo de conexão seu dispositivo usa, uma dica que pode mudar sua vida: leia o manual que acompanha o equipamento. Lá tem tudo detalhado. Não tem o manual? Que tal o site do fabricante? Mas claro, você pode tentar todas as formas sugeridas abaixo, caso considere mais fácil

Se seu dispositivo for PCI

A forma mais fácil que conheço para identificar o chipset de um dispositivo é utilizando-se do comando lspci assim (não precisa ser root):

lspci -nn

Ele irá mostrar todos os dispositivos PCI conectados ao seu computador. Caso queira filtrar e ver apenas os dispositivos de rede pode usar o comando:

lspci -nn | grep Ethernet

Veja o exemplo da saída produzida no meu Asus Eee PC 900:

01:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter [168c:001c] (rev 01)
03:00.0 Ethernet controller [0200]: Attansic Technology Corp. L2 100 Mbit Ethernet Adapter [1969:2048] (rev a0)

A primeira placa identificada é a minha WiFi. Uma Atheros. O nome do dispositivo é Atheros AR242x 802.11abg. O [168c:001c] é uma assinatura do chipset. Ela ajuda bastante caso seja necessário encontrar um driver específico. Experimente, por exemplo, fazer uma pesquisa no Google usando as palavras chaves Debian Atheros 168c:001c Instalar e observe os resultados.

Caso o resultado do comando lspci retorne algo como "Unknown device" será preciso atualizar seu pci-id local. Isso pode ser feito assim (root):

update-pciids

Outra maneira de obter informações sobre seu dispositivo é através do discover. Discover é um sistema de identificação de hardware baseado na biblioteca libdiscover2. O Discover fornece uma interface flexível que programas podem usar para mostrar uma ampla gama de informação sobre o hardware instalado num sistema GNU/Linux. Além de mostrar informações, o Discover possui suporte para detecção de hardware durante a inicialização. Ele não vem instalado por padrão, portanto é necessário instalar o pacote (root):

aptitude update
aptitude install discover

E para obter informações com ele (root):

discover --vendor-id --model-id pci | uniq

Um exemplo da saída no meu computador (filtrei apenas a placa WiFi):

168c 001c Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter
168c 001c Atheros Communications Inc. AR5006EG 802.11 b/g Wireless PCI Express Adapter

Não deixe de conferir a wiki sobre WiFi no Debian e a wiki sobre como identificar dispositivos PCI. Você irá encontrar informações até mesmo para identificar dispositivos pelo modo gráfico.

Se seu dispositivo for USB

Se para identificar um PCI o comando é o lspci, nada mais lógico do que usar o lsusb (não precisa ser root):

lsusb

O comando discover pode ser usando assim (root):

discover --vendor-id --model-id usb

Não deixe de conferir a wiki sobre WiFi no Debian e a wiki sobre como identificar dispositivos USB. Você irá encontrar informações até mesmo para identificar dispositivos pelo modo gráfico.

Se seu dispisitivo for PCMCIA ou CardBus

Pode ser necessário instalar um dos dois pacotes: pcmciautils ou pcmcia-cs. Os dois servem para identificar esse tipo de dispositivo. A diferença é que o primeiro é usado em kernel de versão igual ou superior a 2.6.13 e o segundo em kernel mais antigo.

Para ver qual a versão do seu kernel e saber qual dos dois pacotes instalar use o comando (não precisa ser root):

uname -r

Para identificar o dispositivo você pode utilizar os comandos assim:

pccardctl ident
pccardctl info
pccardctl status

Mas, para a felicidade, a maioria das placas pcmcia de 32 bits são reconhecidas pelo comando lspci.

Não deixe de conferir a wiki sobre WiFi no Debian e a wiki sobre como identificar dispositivos PCMCIA. Você irá encontrar informações até mesmo para identificar dispositivos pelo modo gráfico.

Verificando se o dispositivo WiFi está funcionando

Antes de sair pela Internet afora em busca do driver para seu dispositivo vamos verificar se ele está funcionando, pois nesse caso é só alegria.

Se você instalou o NetworkManager e, assim como eu, utiliza o Gnome (sei que no KDE também funciona) e sua placa WiFi foi identificada pelo kernel clique no ícone (próximo ao relógio) com a imagem de dois computadores. É provável que uma lista de sinais de wireless estejam disponíveis para que você possa se conectar por aquelas que estiverem abertas ou para as quais você possui a chave de acesso.

Caso você queira fazer a configuração manual (não instale o NetworkManager pois ele ficará substituindo suas configurações manuais) os comandos são (root):

Para identificar o nome dado ao dispositivo:

iwconfig

Esse comando irá listar quais dispositivos de rede instalados suportam Wireless. Veja a saída ao ser usado no meu computador:

lo no wireless extensions.

eth0 no wireless extensions.

wifi0 no wireless extensions.

ath0 IEEE 802.11g ESSID:"" Nickname:""
Mode:Managed Frequency:2.462 GHz Access Point: Not-Associated
Bit Rate:1 Mb/s Tx-Power:17 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/70 Signal level=-94 dBm Noise level=-94 dBm
Rx invalid nwid:4899 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Nesse exemplo o dispositivo recebeu o nome de ath0. Nos exemplos dos comandos abaixo vou usar esse nome para me referir ao dispositivo. Lembre-se de mudar ath0 para o nome dado ao seu dispositivo.

Para colocar o dispositivo pronto para uso:

ifconfig ath0 up

Para identificar redes sem fio disponíveis:

iwlist ath0 scan

Veja a saída desse comando ao ser usado no meu computador:

ath0 Scan completed :
Cell 01 - Address: 00:21:29:69:7C:6E
ESSID:"RedeFulanaDeTal"
Mode:Master
Frequency:2.437 GHz (Channel 6)
Quality=4/70 Signal level=-91 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:bcn_int=100
Cell 02 - Address: 00:21:55:C2:56:C0
ESSID:"RedeDoZezinhoLuizinhoHuguinho"
Mode:Master
Frequency:2.462 GHz (Channel 11)
Quality=32/70 Signal level=-63 dBm Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra:wme_ie=dd180050f2020101810003a5000027a500004254bc0062436600

Encontramos duas redes. Todas duas protegidas por chaves (Encryption key:on). A segunda usa WPA.

Para conectar-se em uma rede sem fios:

Determinando o nome da rede:
iwconfig ath0 essid "RedeDoZezinhoLuizinhoHuguinho"

Esse nome é apresentado na saída do comando iwlist.

Fornecendo a chave de acesso:
Você pode usar um dos padrões abaixo:

iwconfig ath0 key s:password
iwconfig ath0 key restricted s:password

Existem outras opções. Leia o man do iwconfig (man iwconfig) para ver todas as formas possíveis de se usar a opção key.

Atribuindo um IP à sua WiFi:
Você pode atribuir o IP manualmente:

ifconfig ath0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx

Por exemplo:

ifconfig ath0 10.1.1.7 netmask 255.0.0.0

Ou através de um servidor DHCP:

dhclient ath0

Caso queira apronfudar-se nas ferramentas Wireless um link legal, mensionado na wiki Debian, é o Wireless Tools for Linux. Você pode precisar saber como autenticar em wpa utilizando o PSK TKIP.

Instalando dispositivos WiFi não detectados automaticamente pelo sistema mas suportados pelo madwifi

Se o pessoal do MadWiFi.org escreveu um driver para o seu dispositivo você pode utilizá-lo de uma forma até que fácil. Primeiro você terá que alterar seu sources.list para que o gerenciador de pacotes possa instalar pacotes non-free (não livres). Para isso (root):

nano /etc/apt/sources.list

Você deve encontrar uma linha parecida com essa:

deb http://ftp.us.debian.org/debian/ sid main

ou

deb http://ftp.us.debian.org/debian/ lenny main

ou ainda

deb http://ftp.us.debian.org/debian/ etch main

Altere para que no final ela tenha non-free no final da linha como, por exemplo:

deb http://ftp.us.debian.org/debian/ sid main contrib non-free

Agora proceda assim (root):

aptitude update
aptitude install module-assistant madwifi
module-assistant prepare
module-assistant a-i madwifi

Esses comandos irão instalar os módulos para o driver das placas WiFi suportadas pelo MadWiFi.

Depois do pacote instalado você precisa carregar o módulo da sua placa WiFi. Na wiki sobre WiFi no Debian você tem uma lista com o nome do módulo. Basta usar o comando modprobe. Supondo que sua WiFi é uma Atheros o comando seria (root):

modprobe ath_pci

Você pode verificar se o módulo está carregado assim (não precisa ser root):

lsmod | grep ath_pci

Instalando dispositivos WiFi não detectados automaticamente pelo sistema mas suportados pelo NdisWrapper

Você chegou até aqui e nada de ver sua placa WiFi funcionar. Infelizmente alguns fabricantes desses dispositivos (e de outros também) não fornecem detalhes sobre como escrever um driver para seus dispositivos e não fornecem drivers que funcionem no GNU/Linux. Há duas coisas que você pode fazer nesse caso: a primeira é não comprar qualquer equipamento desses fabricantes e a segunda, caso você tenha caído nessa roubada, é tentar usar o NdisWrapper para tentar instalar drivers feitos para o Microsoft Windows no seu Debian.

Baixe o driver da sua WiFi disponibilizado pelo fabricante. Você irá precisar deles. Crie um diretório e descompacte o arquivo lá. Se ele for em .CAB (use o cabextract) terá que descompactá-lo. Faça isso até que encontre os arquivos .INF do driver.

Para instalar o ndiswrapper proceda assim (root):

aptitude install module-assistant wireless-tools
m-a prepare && m-a update
m-a a-i ndiswrapper
modprobe ndiswrapper
echo ndiswrapper >> /etc/modules

Para instalar drivers usando o ndiswrapper:

(root):

Vou considerar que você baixou e descompactou o driver em /home/junio/driverTal. Não esqueça de adaptar o exemplo à sua realidade.

mkdir /usr/local/driverTal/
cp /home/junio/driverTal/*.INF /usr/local/driverTal/

(não precisa ser root):

ndiswrapper -i /usr/local/driverTal/driverTal.INF

Para verificar se foi instalado use (não precisa ser root):

ndiswrapper -l

Se estiver correto deve aparecer algo parecido com:

installed drivers:
driverTal driver installed, hardware (0000:0000) present

Existe a possibilidade de usar o ndiswrapper pelo modo gráfico. Se lhe interessar dê uma olhada no ndisgtk.

Caso precise de mais informações sobre os dispositivos instalados, no seu computador, experimente o comando lshw. Ele pode ser usado sem ser root, mas obtêm mais informações quando executado por ele.

Vamos que vamos!

segunda-feira, 29 de setembro de 2008

Roteiro para instalação do Debian Etch (em servidores)

Créditos e Licença de Uso
Copyright © 2007-2008 Júnio José dos Santos

Baseado no Guia de Instalação de Debian GNU/Linux
Copyright © 2004, 2005, 2006, 2007 A equipe do Instalador Debian

Baseado no Securing Debian Manual
Copyright © 2002, 2003, 2004, 2005 Javier Fernández-Sanguino Peña
Copyright © 2001 Alexander Reelsen, Javier Fernández-Sanguino Peña
Copyright © 2000 Alexander Reelsen

É permitido copiar, distribuir e/ou modificar esse documento desde que sob os termos da GNU General Public License, Version 2 ou qualquer versão posterior publicada pela Free Software Foundation. Ele é distribuído na esperança de ser útil, porém SEM NENHUMA GARANTIA.

É permitido fazer e distribuir cópias em disquetes (ou qualquer outra forma de distribuição) desse documento desde que a nota de copyright e essa nota de permissão estejam em todas as cópias.

É permitido copiar e distribuir versões modificadas desse documento desde que o documento resultante seja distribuído sob os mesmos termos de distribuição desse documento.

É permitido copiar e distribuir traduções desse documento em outro idioma desde que o documento resultante seja distribuído sob os mesmos termos de distribuição desse documento e que a tradução dessa nota de permissão seja autorizada pela Free Software Foundation.

Resumo
Esse documento contém as instruções de instalação para o sistema Debian GNU/Linux 4.0, (nome de código "etch"), para a arquitectura Intel x86 (i386).

Sobre esse documento
O objetivo desse documento é reunir em apenas um lugar e de forma mais simplificada algumas informações constantes no Guia de Instalação Debian e no Securing Debian Manual.

Nele você encontrará um roteiro de instalação da GNU/Linux Debian com foco em computadores servidores. Trata-se da instalação do sistema básico para qualquer tipo de servidor em computadores da família i386. Escolhi essa arquitetura por ser mais fácil encontrar esse tipo de computador e por vários tipos de servidores funcionarem tranqüilamente nela.

Antes da instalação
Esse tópico trata da preparação para instalar a Debian antes mesmo de iniciar o instalador. Isso inclui preparar documentos necessários, verificar o hardware, definir alguns detalhes na BIOS, obter o CD/DVD de instalação, planejar o particionamento do(s) disco(s) e algumas outras coisas que você deve estar ciente.

Guia de instalação Debian
Esse documento procura ser o mais prático possível, para que você possa ter certeza que, ao final, terá instalado de forma correta a Debian no computador servidor. Todavia ele não entra em pequenos detalhes e nem detalha possíveis situações que podem ocorrer durante o processo de instalação. Caso não consiga instalar a Debian seguindo esse passo-a-passo ou queira ter uma visão mais detalhada do processo de instalação é recomendável que você leia o Guia de Instalação de Debian GNU/Linux.

Caso a arquitetura na qual você deseja instalar a Debian seja diferente da i386, existe uma Lista de Arquiteturas Suportadas, onde você poderá encontrar versões do Guia de Instalação para elas.

Hardware
A Debian não impõe requisitos de hardware para além do que é requerido pelo kernel Linux e pelas ferramentas GNU. Por isso qualquer arquitetura ou plataforma para a qual tenha sido portado o kernel Linux, libc, gcc, etc. e para o qual exista um port de Debian, você poderá instalar. No entanto é importante que você saiba dimensionar o hardware para o tipo de servidor que você deseja instalar para evitar que seu computador trabalhe sobrecarregado ou extremamente ocioso.

Algumas observações
A menos que seja extremamente necessário um computador servidor não deve possuir:
  • Conexões USB;
  • Unidades de disquete;
  • Unidades de CD/DVD (após a instalação);
  • Teclado (após a instalação);
  • Acesso físico facilitado.
Acesso facilitado pode permitir que uma pessoa estranha (ou não) tenha acesso ao computador. Essa pessoa pode plugar um pen-drive com um sistema previamente preparado e escrever informações no disco do servidor e, isso, apenas para dar um exemplo.

Definições para BIOS
Para um melhor desempenho e um maior grau de segurança é recomendável que você efetue algumas configurações na BIOS do computador onde pretende instalar o sistema.

Cada BIOS tem suas particularidades e você deverá saber acessá-la e procurar pelas sugestões aqui apresentadas. Lembre-se: nem todas as opções serão encontradas em todas as BIOS. O melhor a ser feito é você ler com bastante atenção o manual da BIOS do seu equipamento.

Memória Estendida vs. Expandida
Se seu sistema disponibiliza ambas as memórias (estendida e expandida) , configure-o de modo a ter o máximo de memória estendida e o mínimo de expandida. Linux necessita de memória estendida e não pode utilizar memória expandida.

Proteção de Vírus
Desligue os avisos que a BIOS possa dar sobre possibilidade de vírus. Se tem uma placa de proteção de vírus ou outro hardware especial, assegure-se que esteja desabilitado ou removido fisicamente enquanto executa o GNU/Linux, pois esses não são compatíveis; e mais, devido às permissões de arquivos e à memória protegida do kernel Linux, os vírus são praticamente desconhecidos.

Shadow RAM
A placa-mãe do seu computador pode disponibilizar shadow RAM ou cache da BIOS . Você pode ver as definições para ''Video BIOS Shadow'', ''C800-CBFF Shadow'', etc. Desligue toda a shadow RAM. A shadow RAM é utilizada para acelerar o acesso às ROMs da placa-mãe e de algumas placas controladoras. O Linux não utiliza essas ROMs após ter inicializado porque disponibiliza software 32-bit mais rápido do que os programas de 16-bit nas ROMs. Desligar a shadow RAM pode tornar disponível alguma memória, a mais, para os programas utilizarem como memória normal. Deixar a shadow RAM ligada pode interferir com o acesso do Linux a dispositivos de hardware.

Obtendo o Debian Netinst
A forma mais simples de se instalar a Debian em servidores é através do Netinst. Ele é um único CD de instalação que permite instalar todo o sistema operacional. Esse único CD contém apenas a quantidade mínima de software para começar a instalação e obter os outros pacotes através da Internet.

Ele é melhor, no caso de servidores, pois você só vai baixar os pacotes que selecionar para a instalação, o que economiza tempo e banda. Por esse motivo ele é mais seguro que um CD de instalação normal, já que não instalará nenhum programa desnecessário, reduzindo assim o número de programas com os quais você terá de se preocupar.

Após baixar a imagem de instalação do Debian 4.0 Netinst você deverá gravá-la num CD virgem. Não vou explicar aqui como fazer isso por se tratar de um recurso amplamente documentado na Internet.

Não se esqueça
Não conecte-se a Internet até estar pronto
O sistema não deve ser imediatamente conectado a Internet durante a instalação. Isso pode parecer estúpido mas instalação via Internet é um método comum. Uma vez que o sistema instalará e ativará serviços imediatamente, se o sistema estiver conectado a Internet e os serviços não estiverem adequadamente configurados, você estará abrindo brechas para ataques.

Observe também que alguns serviços podem ter vulnerabilidades de segurança não corrigidas nos pacotes que você estiver usando para a instalação. Isso normalmente será verdade se você estiver instalando a partir de mídia antiga (como CD-ROMs). Nesse caso, o sistema poderia estar comprometido antes de terminar a instalação!

Uma vez que a instalação e atualizações do Debian podem ser feitas pela Internet você pode pensar que é uma boa idéia usar esse recurso na instalação. Se o sistema está diretamente conectado (e não está protegido por um firewall ou NAT), é melhor instalar sem conexão com a grande rede usando um mirror local com os pacotes do Debian e as atualizações de segurança.

Você pode configurar mirrors de pacotes usando outro sistema conectado com ferramentas específicas Debian como apt-move ou apt-proxy, ou outras, para fornecer os arquivos para o sistema instalado. Se não puder fazer isso, você pode configurar regras de firewall para limitar o acesso ao sistema enquanto estiver atualizando.

Escolha de senhas
Configurar uma boa senha para o root é o requerimento mais básico para ter um sistema seguro.

Muita informação sobre a escolha de boas senhas pode ser encontrada na internet; um local que fornece um sumário decente e racional é How to: Pick a Safe Password do Eric Wolfram.

Rode o mínimo de serviços possíveis
Serviços são programas como, por exemplo, servidores ftp e servidores web. Uma vez que eles têm que estar escutando por conexões que requisitem o serviço, computadores externos podem conectar-se a eles. Serviços algumas vezes são vulneráveis (i.e. podem estar comprometidos sobre um certo ataque) e oferecem risco a segurança.

Você não deve instalar serviços que não são necessários em sua máquina. Todo serviço instalado pode introduzir novos, talvez não óbvios ou conhecidos, buracos na segurança.

Como você já deve saber, quando você instala um serviço o padrão é ele ser ativado. Em uma instalação Debian padrão, sem nenhum serviço a mais instalado, o número de serviços rodando é baixo mesmo quando falamos de serviços oferecidos para a rede, mas é bom conferi-los e, se for o caso, desabilitá-lo(s).

Quando você instala um novo serviço de rede (daemon) em seu sistema Debian GNU/Linux ele pode ser habilitado de duas maneiras: através do superdaemon inetd (uma linha será adicionada ao /etc/inetd.conf) ou através de um programa que serve de interface. Esses programas são controlados pelos arquivos /etc/init.d, que são chamados no momento da inicialização através do mecanismo SysV (ou outro alternativo) pelo uso de symlinks em /etc/rc?.d/* (para mais informações de como isso é feito leia /usr/share/doc/sysvinit/README.runlevels.gz).

Se você quer manter algum serviço, mas que será usado raramente, use os comandos update, isto é, update-inetd e update-rc.d para removê-los do processo de inicialização.

Desabilitar um daemon de serviço é simples. Existem vários métodos:

  • remover ou renomear os links de /etc/rc${runlevel}.d/ de modo que eles não iniciem com a letra 'S'
  • mover ou renomear o script /etc/init.d/_service_name_ pra outro nome, por exemplo /etc/init.d/OFF._service_name_
  • remover a permissão de execução do arquivo /etc/init.d/_service_name_.
  • editar o script /etc/init.d/_service_name_ para parar o serviço imediatamente.

Você pode remover os links de /etc/rc${runlevel}.d/ manualmente ou usando update-rc.d (veja update-rc.d(8)). Por exemplo, você pode desabilitar um serviço (firewall no exemplo) do runlevel 2 executando:

update-rc.d firewall start 14 2 .

Você deve checar se realmente precisa do daemon inetd . Inetd sempre foi uma maneira de compensar deficiências do kernel, mas estas deficiências foram corrigidas. Existe possibilidade de ataques DoS (Denial of Service) contra o inetd, então é preferível usar daemons individuais do que rodar um serviço do inetd. Se você ainda quer rodar algum serviço do inetd, então no mínimo alterne para um daemon mais configurável como xinetd, rlinetd ou openbsd-inetd.

Você deve parar todos os serviços Inetd desnecessários, como por exemplo echo , chargen , discard , daytime , time , talk , ntalk e r-services (rsh, rlogin e rcp) os quais são considerados ALTAMENTE inseguros (use ssh no lugar desses).

Você pode desabilitar os serviços editando o arquivo /etc/inetd.conf diretamente, mas o Debian fornece uma alternativa melhor: update-inetd (o qual comenta os serviços de modo que eles possam facilmente ser reativados). Você pode remover o daemon telnet para alterar o arquivo de configuração e reiniciar o daemon (neste caso o serviço telnet é desabilitado):

/usr/sbin/update-inetd --disable telnet

Se você quer um serviço, mas não o quer disponível para todos os IP do seu host, você deve usar um recurso não documentado no inetd (substitua o nome do serviço por serviço@ip) ou use um daemon alternativo como xinetd.

Instale somente pacotes necessários
A Debian vem com uma grande quantidade de software. Apesar da grande quantidade de software, a instalação do sistema base utiliza poucos pacotes. Você pode estar mal informado e instalar mais que o realmente necessário para seu sistema.

Sabendo o que seu sistema realmente precisa, você deve instalar apenas o que for realmente necessário para seu trabalho. Qualquer ferramenta desnecessária pode ser usada por um usuário malicioso para comprometer o sistema ou por um invasor externo que tenha acesso ao shell (ou código remoto através de serviços exploráveis).

A presença, por exemplo, de utilitários de desenvolvimento (um compilador C) ou linguagens interpretadas (como perl, python, tcl...) pode ajudar um atacante a comprometer o sistema da seguinte maneira:

  • permitir a ele fazer escalação de privilégios. Isso facilita, por exemplo, rodar exploits locais no sistema se existe um depurador e compilador prontos para compilar e testar.
  • fornecer ferramentas que poderiam ajudar um atacante a usar o sistema comprometido como base de ataque contra outros sistemas.
É claro que um invasor com acesso ao shell local pode baixar suas próprias ferramentas e executá-las, além disso o próprio shell pode ser usado para fazer complexos programas. Remover software desnecessário não impedirá o problema mas dificultará a ação de um possível atacante. Então, se você deixar disponíveis ferramentas em um sistema de produção que poderiam ser usadas remotamente para um ataque, pode acontecer de um invasor usá-las.

Durante a instalação
Esse tópico trata do processo durante a instalação da Debian em computador servidor. Isso inclui preparar a BIOS para dar BOOT pelo CD/DVD ROM, as opções de boot, seleção da localização, escolha do teclado, configuração da rede, particionamento do(s) disco(s), configuração do sistema e tornar o sistema inicializável.

Preparando a BIOS para o BOOT
Lembre-se de preparar sua BIOS para dar BOOT pelo CD/DVD ROM. Cada BIOS tem suas particularidades e você deverá saber acessá-la e ajustá-la para dar o boot.

Opções de BOOT
Quando o instalador inicia, será apresentada uma tela gráfica que mostra a logo do Debian e a linha de comandos de boot:

Pressione F1 para ajuda, ou ENTER para iniciar:

Para uma instalação comum basta pressionar ENTER. Se seu hardware possui a necessidade de algum parâmetro especial ou você não conseguiu dar continuidade ao processo de instalação, pode ser útil dar uma olhada nas Opções de boot ou ainda Diagnosticar Problemas no Processo de Instalação. As opções de boot podem ser obtidas pressionando F3.

Seleção da localização
Logo no começo da instalação você será perguntado sobre a localização do sistema. Isso permite selecionar as opções de localização para a instalação e para o sistema instalado: idioma, país e definições locais. O instalador irá mostrar mensagens no idioma escolhido a menos que a tradução para esse idioma não esteja completa, nesse caso algumas mensagens podem ser mostradas em Inglês.

Selecione: Portuguese (Brazil) - Português do Brasil

Escolha do teclado
O instalador mostra uma lista de teclados, a partir da qual você escolhe o modelo que coincide com o seu.

O mais comum aqui no Brasil é o Português Brasileiro (ABNT2)

Configuração da rede
Se seu servidor possui mais de uma placa de rede você tem de escolher qual será a padrão (principal).

Logo em seguida o instalador tentará detectar sua rede. Lembre-se de não conectar esse computador à Internet neste momento. Minha sugestão é que você não configure sua placa de rede neste momento, deixando para fazer isso após a instalação básica do sistema.

Para isso desconecte qualquer cabo da(s) sua(s) placa(s) de rede e então escolha a opção:

Não configurar a rede agora.

Escolha um nome para sua máquina. Existem algumas limitações para nome de máquina. Por isso a dica é: use letras minúsculas e/ou números. Normalmente os administradores de rede escolhem um tema para dar nome aos seus vários servidores, por exemplo: Desenhos animados, planetas, pessoas famosas, etc.

Particionar o disco
Agora é hora de particionar o(s) disco(s). Esse é um momento bastante importante e se não for bem feito pode comprometer o comportamento e segurança do computador servidor.

Um esquema de partição inteligente depende de como o computador servidor será usado. Uma boa regra é ser razoavelmente generoso com suas partições e prestar atenção aos seguintes fatores:

  • Qualquer diretório que um usuário tenha permissões de escrita, como o /home e o /tmp, devem estar separados em uma partição. Isso reduz o risco de um usuário malicioso utilizar o DoS (Denial of Service) para encher seu diretório raiz ( / ) e tornar o sistema inutilizável (Observação: isso não é totalmente verdade uma vez que sempre existe algum espaço reservado para o usuário root que o usuário normal não pode preencher), e também previne ataques tipo hardlink.
  • Qualquer partição com dados variáveis, isto é, /var (especialmente /var/log) também deve estar numa partição separada. Em um sistema Debian você deve criar /var um pouco maior que em outros sistemas porque o download de pacotes (cache do apt) é armazenado em /var/cache/apt/archives.
  • Do ponto de vista da segurança, é sensato tentar mover os dados estáticos para sua própria partição e então montar essa partição somente para leitura.

No caso de um servidor de email é importante ter uma partição separada para o spool de email. Usuários remotos (conhecidos ou não) podem encher o spool de email (/var/mail e/ou /var/spool/mail). Se o spool está em uma partição separada, essa situação não tornará o sistema inutilizável. Porém (se o diretório de spool está na mesma partição que /var) o sistema pode ter sérios problemas: logs não serão criados, pacotes podem não ser instalados e alguns programas podem ter problemas ao iniciar (se eles usam /var/run).

Durante o particionamento do sistema você também tem que decidir qual sistema de arquivos usar. O sistema de arquivos padrão em uma instalação Debian para partições Linux é o ext3. É recomendado sempre utilizar um sistema de arquivos journalling como ext3, reiserfs, jfs ou xfs, para minimizar os problemas derivados de uma quebra do sistema nos seguintes casos:

  • Para laptops em todos os sistemas de arquivos instalados. Assim se acabar a bateria inesperadamente ou o sistema congelar você correrá menos risco de perda de dados durante a reinicialização do sistema.
  • Para sistemas que armazenam grande quantidade de dados (como servidores de email, servidores ftp, sistemas de arquivos de rede ....). Assim, em caso de queda, menos tempo será gasto para o servidor checar o sistema de arquivos e a probabilidade da perda de dados será menor.

Decidir o tamanho e as partições
Cada caso é um caso e, na minha opinião, essa é a etapa mais complexa no processo de instalação. Vou apresentar (mais abaixo) um modelo que considero de uso geral, mas é bom que você analise bastante essa etapa para particionar e definir os tamanhos conforme o tipo de servidor que você for usar.

A árvore de diretórios
A Debian GNU/Linux adere ao Filesystem Hierarchy Standard para os diretórios e nomes de arquivos. Esse padrão permite aos usuários e aos programas de software predizer o local dos arquivos e diretórios. O nível do diretório raiz é representado simplesmente por uma barra /. No nível raiz, todos os sistemas Debian incluem estes diretórios:

bin: Comandos binários essenciais
boot: Arquivos do sistena de boot
dev: Arquivos de dispositivos
etc: Configurações específicas do sistema
home: Diretório principal dos usuários
lib: Bibliotecas essenciais compartilhadas e módulos do kernel
media: Contém pontos de montagem para dispositivos removíveis
mnt: Local de montagem temporária de um sistema de arquivos
proc: Diretório virtual para informações do sistema (kernels 2.4 e 2.6)
root: Diretório principal do usuário root
sbin: Binários essenciais do sistema
sys: Diretório virtual para informações do sistema (kernels 2.6)
tmp: Arquivos temporários
usr: Hierarquia secundária
var: Dados variáveis
srv: Dados para os serviços disponibilizados pelo sistema
opt: Pacotes de software e aplicações adicionais

A seguir é apresentada uma lista de considerações importantes relacionadas com diretórios e partições. Note que a utilização do disco varia muito com a configuração do sistema e padrões de utilização específicos. As recomendações aqui são linhas de orientações gerais e disponibilizam um ponto de partida para você definir o particionamento ideal para seu computador servidor.

  • A partição raiz / tem de conter fisicamente sempre /etc, /bin, /sbin, /lib e /dev, caso contrário não será possível inicializar o sistema. Tipicamente são necessários 150-250MB para a partição raiz.
  • /usr: contém todos os programas dos usuários (/usr/bin), bibliotecas (/usr/lib), documentação (/usr/share/doc), etc. Essa é a porção do sistema de arquivos que geralmente requer mais espaço. Deverá fornecer pelo menos 500 MB de espaço em disco. Esse tamanho deve aumentar dependendo do número e tipo de pacotes que planeja instalar. Uma generosa estação de trabalho deve precisar de uns 4-6 GB.
  • /var: dados variáveis tais como artigos de news , e-mails, web sites, bases de dados, cache do sistema de pacotes, etc. serão guardados sob este diretório. O tamanho desse diretório depende muito da utilização do seu sistema, mas para a maioria das pessoas irá ser ditado pelo espaço utilizado pelo gestor de pacotes. Se vai fazer uma instalação completa com tudo aquilo que a Debian tem para oferecer, numa só sessão, coloque de começo uns 2 ou 3 gigabytes de espaço para /var que deverão ser suficientes. Se vai instalar por partes (isto é, instalar serviços e utilitários, seguidos de materiais de texto, depois o X, ...), poderá safar-se com 300-500 MB. Se o espaço no disco rígido está a prêmio e você não planeja fazer grandes atualizações ao sistema, poderá safar-se com uns 30 ou 40 MB. Servidores Web e servidores de E-mail precisam de grandes espaços no /var. Pense bastante nisso se for configurar servidores desse tipo.
  • /tmp: dados temporários criados por programas irão provavelmente para esse diretório. Normalmente 40-100 MB são suficientes. Algumas aplicações - incluindo manipuladores de arquivos, utilitários de criação de CD/DVD, e software multimédia - podem utilizar /tmp para guardar arquivos de imagens. Se você planeja utilizar essas aplicações, você deve ajustar de acordo o espaço disponível em /tmp.
  • /home: todos os usuários irão colocar os seus dados pessoais num subdiretório desse diretório. Seu tamanho depende de quantos usuários irão utilizar o sistema e que arquivos irão ser guardados nos seus diretórios. Dependendo da utilização planejada deverá reservar cerca de 100MB para cada utilizador, mas adapte esse valor às suas necessidades. Reserve muito mais espaço se planeja guardar muitos arquivos multimédia (fotografias, MP3, filmes) no seu diretório home.

Recomendações para o sistema de arquivos escolhido
É sempre recomendável utilizar o sistema de arquivos padrão da distribuição, no nosso caso a ext3.

Modelo de particionamento de uso geral
Lembre-se: cada caso é um caso e esse modelo pode não ser o seu caso.

Considerando um HD de 60 GB.
Diretório Ponto de montagem Tamanho Extras
swap swap 1 GB
Raíz / 1 GB Inicializável
tmp /tmp 1 GB
home /home 7 GB Muito relativo ao tipo de servidor
var /var 20 GB
www /var/www 20 GB Servidor Web simples
log /var/log 10 GB

Configurar o sistema
Após o particionamento você terá que responder mais algumas questões que são:

Configurar o Fuso Horário
Como aqui no Brasil temos quatro fusos horários será apresentada a tela para escolha do fuso horário. Escolha a que corresponda à sua localização.

Configurar usuários e senhas
Defina a senha para o root. Lembre-se de escolher uma boa senha.

Após definir a senha de root você terá de definir o nome completo, nome de usuário e senha para um usuário normal do sistema. Esse usuário precisa ser criado para que, no caso de um computador servidor, ele possa ser utilizado para acessar e administrar o sistema, já que regras de segurança dizem para não acessar o sistema como root.

Configurar o gerenciador de pacotes
Não configure o gerenciador de pacotes. Isso fará com que o sistema básico seja instalado apenas com os pacotes disponíveis no CD/DVD ROM. A instalação de pacotes necessários (que não estejam no CD/DVD do Netinst) será feita posteriormente.

Instalar o GRUB em um disco rígido
Você será questionado se o sistema deve instalar o GRUB. Responda Sim.

Pronto! O sistema será inicializado e após o boot, se tudo correu bem, você terá a Debian GNU/Linux instalada no seu computador servidor.

Depois da instalação
Lembre-se que essa instalação é apenas o básico. É necessário realizar várias coisas para fortalecer ainda mais o sistema. Vou tratar disso em um outro artigo. Mas há algumas coisas que você pode fazer para ganhar alguns pontos a favor da segurança.

Inscreva-se na lista de discussão "Anúncios de Segurança Debian"
Para receber informações sobre atualizações e alertas de segurança (DSAs) disponíveis você deverá se inscrever na lista de discussão ''debian-security-announce''. Veja O time Debian Security, Seção 7.1 para mais informações sobre como o time de segurança do Debian funciona. Para mais informações sobre como se inscrever nas listas de discussões do Debian, leia http://lists.debian.org.

Você deverá considerar, também, se inscrever na lista de discussão debian-security para discussões gerais de problemas de segurança no sistema operacional Debian. Na lista você poderá entrar em contato com outros administradores de sistemas experientes, assim como também desenvolvedores do Debian e autores de ferramentas de segurança que podem responder suas questões e oferecer recomendações.

Atualização de segurança
Talvez você pense que agora seja o melhor momento para conectar seu computador à Internet e realizar uma atualização de segurança, mas não é.

O objetivo desse documento é apenas mostrar a instalação básica e foi o que fizemos até aqui. Agora é hora de começar a configurar e fortalecer seu sistema, mas isso é assunto para outro documento, o ''Fortalecimento de Servidores com Debian''.

Por isso, se quer ter um servidor seguro não conecte-o na rede ainda.

Alterar a BIOS (de novo)
Agora é uma boa hora para você revisar as alterações finais na BIOS, como evitar que a mesma dê BOOT por outro dispositivo que não seja o HD onde o sistema está instalado e acrescentar uma senha para que somente com essa senha seja possível realizar alterações na BIOS.

Talvez você pense que isso seja uma medida de segurança muito simples de ser quebrada, já que bastaria abrir o gabinete e zerar a BIOS para que essa senha e outras configurações desapareçam, mas se você realizar essas configurações e acrescentar lacres que indiquem que o gabinete foi aberto, será mais fácil identificar esse problema.

Encontrando informações

Quando comecei a usar Debian, a primeira grande questão que me surgiu foi encontrar, na Internet, boas informações a respeito. Abaixo estão os links que encontrei e que até hoje utilizo:

Outra fonte que sempre é boa para encontrarmos respostas é o arquivo da lista de discussão em português. Se quiser se inscrever nessa lista, sugiro que você leia antes algumas dicas importantes sobre as listas Debian.

Claro que o Google sabe mais do que eu, portanto, se você não encontrar o que procura em um desses links acima, pergunte a ele.

Vamos que vamos!

Licença de Uso

Todo conteúdo deste blog está licenciado sob termos da Creative Commons.

Para saber mais clique na imagem abaixo:
Creative Commons License
Debian Mental by Júnio José is licensed under a Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.

aptitude install debianmental

Esse é meu primeiro post aqui no Debian Mental. Esse blog surgiu para registrar minhas experiências (ou a falta dela) com o Sistema Operacional Gnu/Linux Debian.

Se você entendeu o título desse blog é um bom sinal. Pode ser que você já usou, use ou já viu alguém usando um computador com Debian ou alguma distribuição baseada em Debian. Se não entendeu, o título, tudo bem, aos poucos sei que entenderá e irá se apaixonar.

Quero deixar claro que Esse blog é sobre Debian. Minha curiosidade por Ubuntu é quase nenhuma. Portanto, se você for uma pessoa que use Ubuntu e quiser seguir as coisas que estão por aqui, vá em frente, só não me pergunte nada caso não funcione, pois não poderei ajudá-la.

Só para que fique registrado: NÃO SOU DESENVOLVEDOR DEBIAN e não tenho nenhum vínculo direto com o projeto. Sou apenas um apaixonado.

As informações aqui contidas funcionam no meu computador. Não sei se irão funcionar no seu. Por isso, use-as por sua conta e risco. Não me responsabilizo por nenhuma conseqüência devido ao uso das mesmas.

Vamos que vamos!