apostila linux
Upcoming SlideShare
Loading in...5
×
 

apostila linux

on

  • 5,156 views

 

Statistics

Views

Total Views
5,156
Views on SlideShare
4,651
Embed Views
505

Actions

Likes
1
Downloads
195
Comments
0

7 Embeds 505

http://carlosvmelo.wordpress.com 317
http://www.f2suporte.com 165
http://www.slideshare.net 10
http://f2suporte.com.br 10
url_unknown 1
http://tecwanessasouza.wordpress.com 1
https://carlosvmelo.wordpress.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

apostila linux apostila linux Document Transcript

  • Debian para servidores 1 Carlos Melo1. O LinuxO Linux é um sistema operacional criado em 1991 por Linus Torvalds na universidade de Helsinki naFinlândia. É um sistema Operacional de código aberto distribuído gratuitamente pela Internet. Seu códigofonte é liberado como Free Software (software livre), sob licença GPL, o aviso de copyright do kernel feitopor Linus descreve detalhadamente isto e mesmo ele não pode fechar o sistema para que seja usado apenascomercialmente.Isto quer dizer que você não precisa pagar nada para usar o Linux, e não é crime fazer cópias para instalarem outros computadores, nós inclusive incentivamos você a fazer isto. Ser um sistema de código abertopode explicar a performance, estabilidade e velocidade em que novos recursos são adicionados ao sistema.Para rodar o Linux você precisa, no mínimo, de um computador 386 SX com 2 MB de memória (para umkernel até a série 2.2.x) ou 4MB (para kernels 2.4 e 2.6) e 100MB disponíveis em seu disco rígido para umainstalação básica e funcional.O sistema segue o padrão POSIX que é o mesmo usado por sistemas UNIX e suas variantes. Assim,aprendendo o Linux você não encontrará muita dificuldade em operar um sistema do tipo UNIX, FreeBSD,HPUX, SunOS, etc., bastando apenas aprender alguns detalhes encontrados em cada sistema.O código fonte aberto permite que qualquer pessoa veja como o sistema funciona (útil para aprendizado),corrija alguma problema ou faça alguma sugestão sobre sua melhoria, esse é um dos motivos de seu rápidocrescimento, do aumento da compatibilidade de periféricos (como novas placas sendo suportadas logo apósseu lançamento) e de sua estabilidade.Outro ponto em que ele se destaca é o suporte que oferece a placas, CD-Roms e outros tipos de dispositivosde última geração e mais antigos (a maioria deles já ultrapassados e sendo completamente suportados pelosistema operacional). Este é um ponto forte para empresas que desejam manter seus micros emfuncionamento e pretendem investir em avanços tecnológicos com as máquinas que possui.Hoje o Linux é desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo suacontribuição ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em seudesenvolvimento e na coordenação dos grupos de trabalho do kernel.O suporte ao sistema também se destaca como sendo o mais eficiente e rápido do que qualquer programacomercial disponível no mercado. Existem centenas de consultores especializados espalhados ao redor domundo. Você pode se inscrever em uma lista de discussão e relatar sua dúvida ou alguma falha, e suamensagem será vista por centenas de usuários na Internet e algum irá te ajudar ou avisará as pessoasresponsáveis sobre a falha encontrada para devida correção.Algumas Características do Linux • É livre e desenvolvido voluntariamente por programadores experientes, hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a contribuição para a melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes • Também recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu desenvolvimento
  • Debian para servidores 2 Carlos Melo• Convivem sem nenhum tipo de conflito com outros sistemas operacionais (com o DOS, Windows, OS/2) no mesmo computador.• Multitarefa real• Multiusuário• Suporte a nomes extensos de arquivos e diretórios (255 caracteres)• Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha, PowerPc, ARM, Unix, Windows, DOS, etc.• Utiliza permissões de acesso a arquivos, diretórios e programas em execução na memória RAM.• Proteção entre processos executados na memória RAM• Suporte a mais de 63 terminais virtuais (consoles)• Modularização - O Linux somente carrega para a memória o que é usado durante o processamento, liberando totalmente a memória assim que o programa/dispositivo é finalizado• Devido a modularização, os drivers dos periféricos e recursos do sistema podem ser carregados e removidos completamente da memória RAM a qualquer momento. Os drivers (módulos) ocupam pouco espaço quando carregados na memória RAM (cerca de 6Kb para a Placa de rede NE 2000, por exemplo)• Não há a necessidade de se reiniciar o sistema após a modificar a configuração de qualquer periférico ou parâmetros de rede. Somente é necessário reiniciar o sistema no caso de uma instalação interna de um novo periférico, falha em algum hardware (queima do processador, placa mãe, etc.).• Não precisa de um processador potente para funcionar. O sistema roda bem em computadores 386Sx 25 com 4MB de memória RAM (sem rodar o sistema gráfico X, que é recomendado 32MB de RAM). Já pensou no seu desempenho em um Pentium, Xeon, ou Athlon? ;-)• Suporte nativo a múltiplas CPUs, assim processadores como Dual Core Athlon Duo, Quad Core tem seu poder de processamento integralmente aproveitado.• Suporte nativo a dispositivos SATA, PATA, Fiber Channel• Suporte nativo a virtualização, onde o Linux se destaca como plataforma preferida para execução de outros sistemas operacionais.• O crescimento e novas versões do sistema não provocam lentidão, pelo contrário, a cada nova versão os desenvolvedores procuram buscar maior compatibilidade, acrescentar recursos úteis e melhor desempenho do sistema (como o que aconteceu na passagem do kernel 2.0.x para 2.2.x, da 2.2.x para a 2.4.x).• Não é requerido pagamento de licença para usa-lo. O GNU/Linux é licenciado de acordo com os termos da GPL.• Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2, NTFS, SunOS, Amiga, Atari, Mac, etc.• O LINUX NÃO É VULNERÁVEL A VÍRUS! Devido a separação de privilégios entre processos e respeitadas as recomendações padrão de política de segurança e uso de contas privilegiadas (como a de root, como veremos adiante), programas como vírus tornam-se inúteis pois tem sua ação limitada pelas restrições de acesso do sistema de arquivos e execução. Qualquer programa (nocivo ou não) poderá alterar partes do sistema que possui permissões (será abordado como alterar permissões e tornar seu sistema mais restrito no decorrer do guia). Frequentemente são criados exploits que tentam se aproveitar de falhas existentes em sistemas desatualizados e usa-las para danificar o sistema. Erroneamente este tipo de ataque é classificado como vírus por pessoas mal informadas e são resolvidas com sistemas bem mantidos. Em geral, usando uma boa distribuição que tenha um bom sistema de atualização, 99.9% dos problemas com exploits são resolvidos.
  • Debian para servidores 3 Carlos Melo • Rede TCP/IP mais rápida que no Windows e tem sua pilha constantemente melhorada. O GNU/Linux tem suporte nativo a redes TCP/IP e não depende de uma camada intermediária como o WinSock. Em acessos via modem a Internet, a velocidade de transmissão é 10% maior. Jogadores do Quake ou qualquer outro tipo de jogo via Internet preferem o GNU/Linux por causa da maior velocidade do Jogo em rede. É fácil rodar um servidor Quake em seu computador e assim jogar contra vários adversários via Internet. • Roda aplicações DOS através do DOSEMU, QEMU, BOCHS. Para se ter uma idéia, é possível dar o boot em um sistema DOS qualquer dentro dele e ao mesmo tempo usar a multitarefa deste sistema. • Roda aplicações Windows através do WINE. • Suporte a dispositivos infravermelho. • Suporte a rede via rádio amador. • Suporte a dispositivos Plug-and-Play. • Suporte a dispositivos USB. • Suporte nativo a cartões de memória • Suporte nativo a dispositivos I2C • Integração com gerenciamento de energia ACPI e APM • Suporte a Fireware. • Dispositivos Wireless. • Vários tipos de firewalls de alta qualidade e com grande poder de segurança de graça. • Roteamento estático e dinâmico de pacotes. • Ponte entre Redes, proxy arp • Proxy Tradicional e Transparente. • Possui recursos para atender a mais de um endereço IP na mesma placa de rede, sendo muito útil para situações de manutenção em servidores de redes ou para a emulação de "mais computadores" virtualmente. O servidor WEB e FTP podem estar localizados no mesmo computador, mas o usuário que se conecta tem a impressão que a rede possui servidores diferentes. • Os sistemas de arquivos usados pelo GNU/Linux (Ext3, Ext3, reiserfs, xfs, jfs) organiza os arquivos de forma inteligente evitando a fragmentação e fazendo-o um poderoso sistema para aplicações multi- usuárias exigentes e gravações intensivas. • Permite a montagem de um servidor de publicação Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o Apache, é distribuído gratuitamente junto com a maioria das distribuições Linux. O mesmo acontece com o Sendmail. • Por ser um sistema operacional de código aberto, você pode ver o que o código fonte (instruções digitadadas pelo programador) faz e adapta-lo as suas necessidades ou de sua empresa. Esta característica é uma segurança a mais para empresas sérias e outros que não querem ter seus dados roubados (você não sabe o que um sistema sem código fonte faz na realidade enquanto esta processando o programa). • Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os novos como obsoletos. • Pode ser executado em 16 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.) e diversas outras sub-arquiteturas. • Empresas especializadas e consultores especializados no suporte ao sistema espalhados por todo o mundo. • Entre muitas outras características que você descobrirá durante o uso do sistema.TODOS OS ÍTENS DESCRITOS ACIMA SÃO VERDADEIROS E TESTADOS PARA QUE TIVESSE PLENA CERTEZA DESEU FUNCIONAMENTO.
  • Debian para servidores 4 Carlos Melo2. ArquivosÉ onde gravamos nossos dados. Um arquivo pode conter um texto feito por nós, uma música, programa,planilha, etc.Cada arquivo deve ser identificado por um nome, assim ele pode ser encontrado facilmente quando desejarusa-lo. Se estiver fazendo um trabalho de história, nada melhor que salva-lo com o nome historia. Umarquivo pode ser binário ou texto (para detalhes veja Arquivo texto e binário, Seção 2.2.3).O GNU/Linux é Case Sensitive ou seja, ele diferencia letras maiúsculas e minúsculas nos arquivos. O arquivohistoria é completamente diferente de Historia. Esta regra também é válido para os comandos e diretórios.Prefira, sempre que possível, usar letras minúsculas para identificar seus arquivos, pois quase todos oscomandos do sistema estão em minúsculas.Um arquivo oculto no GNU/Linux é identificado por um "." no inicio do nome (por exemplo, .bashrc).Arquivos ocultos não aparecem em listagens normais de diretórios, deve ser usado o comando ls -a paratambém listar arquivos ocultos.2.1 Extensão de arquivosA extensão serve para identificar o tipo do arquivo. A extensão são as letras após um "." no nome de umarquivo, explicando melhor: • relatório.txt - O .txt indica que o conteúdo é um arquivo texto. • script.sh - Arquivo de Script (interpretado por /bin/sh). • system.log - Registro de algum programa no sistema. • arquivo.gz - Arquivo compactado pelo utilitário gzip. • index.html - Página de Internet (formato Hypertexto).A extensão de um arquivo também ajuda a saber o que precisamos fazer para abri-lo. Por exemplo, oarquivo relatório.txt é um texto simples e podemos ver seu conteúdo através do comando cat, Seção 7.1, jáo arquivo index.html contém uma página de Internet e precisaremos de um navegador para poder visualiza-lo (como o lynx, Firefox ou o Konqueror).A extensão (na maioria dos casos) não é requerida pelo sistema operacional GNU/Linux, mas é convenienteo seu uso para determinarmos facilmente o tipo de arquivo e que programa precisaremos usar para abri-lo.2.2 Tamanho de arquivosA unidade de medida padrão nos computadores é o bit. A um conjunto de 8 bits nós chamamos de byte.Cada arquivo/diretório possui um tamanho, que indica o espaço que ele ocupa no disco e isto é medido embytes. O byte representa uma letra. Assim, se você criar um arquivo vazio e escrever o nome Linux e salvar oarquivo, este terá o tamanho de 5 bytes. Espaços em branco e novas linhas também ocupam bytes.Além do byte existem as medidas Kbytes, Mbytes, Gbytes. Os prefixos K (quilo), M (mega), G (giga), T (tera)etc. vêem da matemática. O "K" significa multiplicar por 10^3, o "M" por 10^6, e assim por diante. Esta
  • Debian para servidores 5 Carlos Meloletras servem para facilitar a leitura em arquivos de grande tamanho. Um arquivo de 1K é a mesma coisa deum arquivo de 1024 bytes. Uma forma que pode inicialmente lhe ajudar a lembrar: K vem de Kilo que é iguala 1000 - 1Kilo é igual a 1000 gramas certo?.Da mesma forma 1Mb (ou 1M) é igual a um arquivo de 1024K ou 1.048.576 bytes1Gb (ou 1G) é igual a um arquivo de 1024Mb ou 1048576Kb ou 1.073.741.824 bytes (1 Gb é igual a1.073.741.824 bytes, são muitos números!). Deu pra notar que é mais fácil escrever e entender como 1Gbdo que 1.073.741.824 bytes :-)A lista completa em ordem progressiva das unidades de medida é a seguinte: Símbolo 10^ 2^ Nome K 3 10 Quilo M 6 20 Mega G 9 30 Giga T 12 40 Tera P 15 50 Peta E 18 60 Eta Z 21 70 Zetta Y 24 80 Yotta2.3 Arquivo texto e binárioQuanto ao tipo, um arquivo pode ser de texto ou binário:texto Seu conteúdo é compreendido pelas pessoas. Um arquivo texto pode ser uma carta, um script, um programa de computador escrito pelo programador, arquivo de configuração, etc.binário Seu conteúdo somente pode ser entendido por computadores. Contém caracteres incompreensíveis para pessoas normais. Um arquivo binário é gerado através de um arquivo de programa (formato texto) através de um processo chamado de compilação. Compilação é basicamente a conversão de um programa em linguagem humana para a linguagem de máquina.3. DiretórioDiretório é o local utilizado para armazenar conjuntos arquivos para melhor organização e localização. Odiretório, como o arquivo, também é "Case Sensitive" (diretório /teste é completamente diferente dodiretório /Teste).Não podem existir dois arquivos com o mesmo nome em um diretório, ou um sub-diretório com um mesmonome de um arquivo em um mesmo diretório.
  • Debian para servidores 6 Carlos MeloUm diretório nos sistemas Linux/UNIX são especificados por uma "/" e não uma "" como é feito no DOS.Para detalhes sobre como criar um diretório, veja o comando mkdir (mkdir, Seção 6.4).3.1 Diretório RaizEste é o diretório principal do sistema. Dentro dele estão todos os diretórios do sistema. O diretório Raíz érepresentado por uma "/", assim se você digitar o comando cd / você estará acessando este diretório.Nele estão localizados outros diretórios como o /bin, /sbin, /usr, /usr/local, /mnt, /tmp, /var, /home, etc.Estes são chamados de sub-diretórios pois estão dentro do diretório "/". A estrutura de diretórios e sub-diretórios pode ser identificada da seguinte maneira: • / • /bin • /sbin • /usr • /usr/local • /mnt • /tmp • /var • /homeA estrutura de diretórios também é chamada de Árvore de Diretórios porque é parecida com uma árvore decabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conformeregras definidas pela FHS (FileSystem Hierarchy Standard - Hierarquia Padrão do Sistema de Arquivos) versão2.0, definindo que tipo de arquivo deve ser armazenado em cada diretório.3.2 Diretório atualÉ o diretório em que nos encontramos no momento. Você pode digitar pwd (veja pwd, Seção 6.3) paraverificar qual é seu diretório atual.O diretório atual também é identificado por um "." (ponto). O comando comando ls . pode ser usado paralistar seus arquivos (é claro que isto é desnecessário porque se não digitar nenhum diretório, o comando lslistará o conteúdo do diretório atual).3.3 Diretório homeTambém chamado de diretório de usuário. Em sistemas GNU/Linux cada usuário (inclusive o root) possui seupróprio diretório onde poderá armazenar seus programas e arquivos pessoais.Este diretório está localizado em /home/[login], neste caso se o seu login for "joao" o seu diretório homeserá /home/joao. O diretório home também é identificado por um ~(til), você pode digitar tanto o comandols /home/joao como ls ~ para listar os arquivos de seu diretório home.O diretório home do usuário root (na maioria das distribuições GNU/Linux) está localizado em /root.Dependendo de sua configuração e do número de usuários em seu sistema, o diretório de usuário pode ter aseguinte forma: /home/[1letra_do_nome]/[login], neste caso se o seu login for "joao" o seu diretório homeserá /home/j/joao.
  • Debian para servidores 7 Carlos Melo3.4 Diretório SuperiorO diretório superior (Upper Directory) é identificado por .. (2 pontos).Caso estiver no diretório /usr/local e quiser listar os arquivos do diretório /usr você pode digitar, ls .. Esterecurso também pode ser usado para copiar, mover arquivos/diretórios, etc.3.5 Diretório AnteriorO diretório anterior é identificado por "-". É útil para retornar ao último diretório usado.Se estive no diretório /usr/local e digitar cd /lib, você pode retornar facilmente para o diretório /usr/localusando cd -.3.6 Caminho na estrutura de diretóriosSão os diretórios que teremos que percorrer até chegar no arquivo ou diretório que que procuramos. Sedesejar ver o arquivo /usr/doc/copyright/GPL você tem duas opções: • Mudar o diretório padrão para /usr/doc/copyright com o comando cd /usr/doc/copyright e usar o comando cat GPL • Usar o comando "cat" especificando o caminho completo na estrutura de diretórios e o nome de arquivo: cat /usr/doc/copyright/GPL.As duas soluções acima permitem que você veja o arquivo GPL. A diferença entre as duas é a seguinte: • Na primeira, você muda o diretório padrão para /usr/doc/copyright (confira digitando pwd) e depois o comando cat GPL. Você pode ver os arquivos de /usr/doc/copyright com o comando "ls". /usr/doc/copyright é o caminho de diretório que devemos percorrer para chegar até o arquivo GPL. • Na segunda, é digitado o caminho completo para o "cat" localizar o arquivo GPL: cat /usr/doc/copyright/GPL. Neste caso, você continuará no diretório padrão (confira digitando pwd). Digitando ls, os arquivos do diretório atual serão listados.O caminho de diretórios é necessário para dizer ao sistema operacional onde encontrar um arquivo na"árvore" de diretórios.3.7 Exemplo de diretórioUm exemplo de diretório é o seu diretório de usuário, todos seus arquivos essenciais devem ser colocadasneste diretório. Um diretório pode conter outro diretório, isto é útil quando temos muitos arquivos equeremos melhorar sua organização. Abaixo um exemplo de uma empresa que precisa controlar os arquivosde Pedidos que emite para as fábricas:/pub/vendas - diretório principal de vendas /pub/vendas/mes01-99 - diretório contendo vendas do mês01/1999 /pub/vendas/mes02-07 - diretório contendo vendas do mês 02/2007 /pub/vendas/mes01-08 -diretório contendo vendas do mês 03/2008
  • Debian para servidores 8 Carlos Melomes01-99, mes02-07, mes01-08 são diretórios usados para armazenar os arquivos de pedidos do mês e anocorrespondente. Isto é essencial para organização, pois se todos os pedidos fossem colocados diretamenteno diretório vendas, seria muito difícil encontrar o arquivo do cliente "João" do mês 01/2007.Você deve ter reparado que usei a palavra sub-diretório para mes01-99, mes02-07 e mes03-08, porque queeles estão dentro do diretório vendas. Da mesma forma, vendas é um sub-diretório de pub.3.8 Estrutura básica de diretórios do Sistema LinuxO sistema GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (FilesystemHierarchy Standard):/bin Contém arquivos programas do sistema que são usados com freqüência pelos usuários./boot Contém arquivos necessários para a inicialização do sistema./cdrom Ponto de montagem da unidade de CD-ROM./media Ponto de montagem de dispositivos diversos do sistema (rede, pen-drives, CD-ROM em distribuições mais novas)./dev Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador./etc Arquivos de configuração de seu computador local./floppy Ponto de montagem de unidade de disquetes/home Diretórios contendo os arquivos dos usuários./lib Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel./lost+found
  • Debian para servidores 9 Carlos Melo Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found./mnt Ponto de montagem temporário./proc Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos./root Diretório do usuário root./sbin Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema./tmp Diretório para armazenamento de arquivos temporários criados por programas./usr Contém maior parte de seus programas. Normalmente acessível somente como leitura./var Contém maior parte dos arquivos que são gravados com freqüência pelos programas do sistema, e- mails, spool de impressora, cache, etc.4. Nomeando Arquivos e DiretóriosNo GNU/Linux, os arquivos e diretórios pode ter o tamanho de até 255 letras. Você pode identifica-lo comuma extensão (um conjunto de letras separadas do nome do arquivo por um ".").Os programas executáveis do GNU/Linux, ao contrário dos programas de DOS e Windows, não sãoexecutados a partir de extensões .exe, .com ou .bat. O GNU/Linux (como todos os sistemas POSIX) usa apermissão de execução de arquivo para identificar se um arquivo pode ou não ser executado.No exemplo anterior, nosso trabalho de história pode ser identificado mais facilmente caso fosse gravadocom o nome trabalho.text ou trabalho.txt. Também é permitido gravar o arquivo com o nome Trabalho deHistoria.txt mas não é recomendado gravar nomes de arquivos e diretórios com espaços. Porque seránecessário colocar o nome do arquivo entre "aspas" para acessá-lo (por exemplo, cat "Trabalho deHistoria.txt"). Ao invés de usar espaços, prefira capitalizar o arquivo (usar letras maiúsculas e minúsculaspara identificá-lo): TrabalhodeHistoria.txt.
  • Debian para servidores 10 Carlos Melo5. ComandosVamos abordar agora comandos básicos uitlizados nos sistemas Unix e Linux, apesar de existirem diversosaplicativos gráficos e interfaces para a configuração das tarefas administrativas disponíveis será importanteum forte conhecimento dos comandos Shell do Linux, nosso curso terá todo foco em cima de administraçãosistemas por linha de comando.No Linux utilizamos normalmente o BASH (ou Bourne Again Shell), derivado do CSH, e possui váriascaracterísticas interessantes.É comum que o prompt de comandos padrão bash venha no formato: u@h:W $ , onde: • u representa o nome do usuário. • h representa o nome do sistema. • W o diretório corrente.Onde podemos ter como exemplo: carlos@casa:home$, veja a imagem abaixo: Para executar um comando, ele precisa ser válido e estar listado nos diretórios da variável PATH ouexplicitando a sua localização. O comando pode requerer opções, geralmente precedidos pelo símbolo “-“ou “—“ e por argumentos. O importante é que cada comando tem a sua sintaxe única e pode havervariações dependendo da distribuição.Vamos tomar como exemplo o comando ls:$ lsEste comnado lista o conteúdo do diretório atual. Ele não requer nenhuma opção ou argumento para serexecutado. O argumento –l pode ser acrescentado para gerar uma lista de arquivos detalhada.
  • Debian para servidores 11 Carlos Melo$ ls -lPodemos ainda colocar mais opções para o comando ls:$ ls –l –a –t ou $ ls –ltaNeste caso, do comando ls, as opções podem ser repassadas separadamente ou podem ser combinadas. –amostra todos os arquivos, até os ocultos, -t mostra os arquivos ordenados pela ultima data de modificação.6. Comandos de edição de textoO Linux tem diversas ferramentas para trabalhar e transformar arquivos textos puros, sem formataçãoespecial. Estas ferramentas são úteis quando estamos trabalhando com scripts no Shell, verificando arquivosde log, e etc.6.1 CatUso:cat [opções] arquivoO comando cat concatena arquivos, imprime seu conteúdo na tela e ainda podereceber texto digitado pelo teclado para um arquivo.Para criar um arquivo com apenas algumas linhas de texto:$ cat > teste.txtAgora você pode digitar qualquer texto. Quando terminar, pressione Crtl + d em uma linha vazia parafinalizar a entrada de dados e salvar o arquivo teste.txt.Para ver o conteúdo: $ cat teste.txt.6.2 HeadUsoHead [opções] arquivosO comando head mostra as primeiras 10 linhas do início do texto.A opção frequentemente utilizada é: -n número configura o numero de linhas que vai mostrar.Exemplo: $ head –n 50 leiame.txt7. Configuração das interfaces de rede.7.1 Básico de rede IPUm sistema Debian pode ter várias interfaces, cada uma com um endereço de Protocolo de Internet (IP)diferente. As interfaces podem ser de diferentes tipos, incluindo: • Loopback: lo • Ethernet: eth0, eth1, ... • Wi-Fi: wlan0, wlan1, ... • Token Ring: tr0, tr1, ... • PPP: ppp0, ppp1, ...
  • Debian para servidores 12 Carlos Melo Há uma grande faixa de outros dispositivos de rede disponíveis, incluindo SLIP, PLIP (IP em linha serial eparalela), dispositivos "shaper" para controlar o tráfego em certas interfaces, frame relay, AX.25, X.25,ARCnet, e LocalTalk. Toda interface de rede conectada diretamente à Internet (ou a qualquer rede baseada em IP) éidentificada por um endereço IP de 32 bit’s único. O endereço IP pode ser dividido na parte que endereça arede e na parte que endereça o sistema (host). Se você tiver um endereço IP, defina para 1 os bits que sãoparte do endereço de rede e defina para 0 os bits que são parte do endereço do sistema e então você obtéma máscara da rede. Tradicionalmente, redes IP foram agrupadas em classes cujas partes do endereço de rede foram decomprimento 8, 16 ou 24 bits. endereços IP máscara rede comprimentoClasse A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8Classe B 128.0.0.0 -191.255.255.255 255.255.0.0 = /16Classe C 192.0.0.0-223.255.255.255 255.255.255.0 = /24Endereços IP fora dessas faixas são usados para propósitos especiais. Há faixas de endereços em cada classe reservados para uso em redes locais (LANs). Esses endereçostêm a garantia de não conflitar com nenhum endereço no domínio da Internet. (Pelo mesmo motivo, se umdesses endereços é designado para um sistema então esse sistema não pode acessar a Internet diretamente,precisa acessá-la através de um gateway que atua como um proxy para serviços individuais ou que façaTranslação de Endereço de Rede (Network Address Translation).) Essas faixas de endereços são dadas natabela a seguir junto com o número de faixas em cada classe. endereços de rede compr. quantidadeClasse A 10.x.x.x /8 1Classe B 172.16.x.x - 172.31.x.x /16 16Classe C 192.168.0.x - 192.168.255.x /24 256 O primeiro endereço em uma rede IP é o endereço da própria rede. O último endereço é o endereçode broadcast da rede. Todos os outros endereços podem ser alocados a sistemas na rede. Desses, o primeiroou o último endereço normalmente é alocado para o gateway de Internet para a rede. A tabela de roteamento contém a informação do kernel sobre como enviar pacotes IP aos seusdestinos. Aqui está uma amostra de tabela de roteamento para um sistema Debian em uma rede local (LAN)com endereço IP 192.168.50.x/24. O sistema 192.168.50.1 (também na LAN) é um roteador para a redecorporativa 172.20.x.x/16 e o sistema 192.168.50.254 (também na LAN) é um roteador para a Internet paratodos. # route Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface127.0.0.0 * 255.0.0.0 U 0 0 2 lo192.168.50.0 * 255.255.255.0 U 0 0 137 eth0172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
  • Debian para servidores 13 Carlos Melo • A primeira linha depois do cabeçalho diz que o tráfego destinado à rede 127.x.x.x será roteado para lo a interface de loopback. • A segunda linha diz que o tráfego destinado aos sistemas na LAN serão roteados através de eth0. • A terceira linha diz que o tráfego destinado à rede corporativa será roteado para o gateway 192.168.50.1 e também através de eth0. • A quarta linha diz que o tráfego destinado à Internet será roteado para o gateway 192.168.50.254 e também através de eth0.Os endereços IP na tabela também podem aparecer como nomes que são obtidos procurando endereços em/etc/networks ou usando o resolvedor da Biblioteca C.Além de rotear, o kernel pode fazer tradução de endereço de rede, shaping, e filtro.7.2 Configuração de rede de baixo nívelAs ferramentas de configuração de rede de baixo nível tradicionais nos sistemas GNU/Linux são osprogramas ifconfig e route que vêm no pacote net-tools. Essas ferramentas oficialmente foram superadaspelo ip que vem no pacote iproute. O programa ip funciona no Linux 2.2 e superiores e é mais capaz que asferramentas antigas. Entretanto, as ferramentas antigas ainda funcionam e são mais familiares a muitosusuários.7.3 Configuração de rede de baixo nível – ifconfig e routeAqui está uma ilustração de como mudar o endereço IP da interface eth0 de 192.168.0.3 para 192.168.0.111e tornar a eth0 como rota para a rede 10.0.0.0 via 192.168.0.1. Nós começamos executando ifconfig e routesem argumentos de interface para exibir o estado atual de todas as interfaces de rede e roteamento.# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
  • Debian para servidores 14 Carlos MeloPrimeiro nós desativamos a interface.# ifconfig eth0 inet down# ifconfig lo Link encap:Local Loopback ... (agora sem a entrada eth0)# route ... (agora sem entradas de roteamento na tabela)Então nós a ativamos com o novo endereço IP e novo roteamento. # ifconfig eth0 inet up 192.168.0.111 netmask 255.255.0.0 broadcast192.168.255.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0O resultado: # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.0.0 U 0 0 0 eth010.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0Para adicionar uma rota padrão para a saída dos pacotes, em outras palavras adicionando o caminho parainternet:#route add default gw IP_servidor_de_compartilhamentoPara adicionar o servidor de DNS deve-se adicionar no arquivo /etc/resolv.conf a adicionar uma linha com oservidor de DNS.#vi /etc/resolv.confnameserver IP_do_servidor_DNS
  • Debian para servidores 15 Carlos Melo 7.4 Configurando o apt-get. O apt-get é uma ferramenta extremamente poderosa e prática depois que você aprende os conceitosbásicos. Ele pode ser encontrado não apenas no Debian, Ubuntu e no Carlos, mas em outras distribuiçõesbaseadas no Debian, como o Xandros, Memphis e até mesmo no Linspire. Ferramentas como o urpmi, doMandrake, o synaptic, do Conectiva e o yum, do Fedora também são baseados nele. Em primeiro lugar, o apt-get utiliza um conceito de fontes de atualização. Ele pode obter pacotesde praticamente qualquer lugar, incluindo CD-ROMs do Debian, unidades de rede, etc. Mas o meio maisusado é justamente baixar os pacotes via internet, o que permite obter sempre as versões mais recentesdos programas. Para usar o apt-get, o primeiro passo é rodar o comando "apt-get update", que faz com que oapt-get verifique todos os repositórios disponíveis e baixe a lista com os pacotes disponíveis em cada um.Isso permite que ele crie uma espécie de banco de dados, com os pacotes disponíveis, onde cada umpode ser encontrado e qual endereço contém a versão mais recente. Este comando deve ser executadoperiodicamente. O ideal é que você o use uma vez por semana, ou sempre que for fazer algumainstalação importante:# apt-get update Lembre-se de que para virar root, basta digitar "su" no terminal e fornecer a senha configuradadurante a instalação. Ao rodar o Carlos a partir do CD, use o comando "sudo su" para definir a senha. Terminado, você pode começar a instalar os programas, usando o comando "apt-get install",seguido do pacote desejado. Para instalar o Proftpd, por exemplo, use o comando:# apt-get install proftpd Veja que o apt-get cuida de toda a parte trabalhosa. O apt-get instala automaticamente junto com opacote principal todos os pacotes necessários sem deixar dependências, depois de te pedir umaconfirmação.Terminada a instalação, o proftpd já está pronto para usar. Isto se repete para qualquer um dos mais de20.000 pacotes atualmente disponíveis nos repositórios que vêm ativados por padrão no Debian. Bastasaber o nome do programa e você pode instalá-lo rapidamente a qualquer momento. Você pode ver umalista dos pacotes disponíveis nos FTPs oficiais do Debian no: http://www.debian.org/distrib/packages. Além de instalar, é possível usar o apt-get para atualizar qualquer pacote do sistema. Para isso,repita o comando de instalação, como em:# apt-get install proftpd# apt-get install k3b# apt-get install mplayer... e assim por diante. Quando o programa solicitado já está instalado, o apt-get verifica se existe uma versão atualizadae, em caso afirmativo, já a baixa e instalada automaticamente. Caso contrário, ele simplesmente avisaque a versão mais recente já está instalada e não faz nada. Quando você não se lembrar do nomecompleto do programa, digite apenas as primeiras letras e pressione a tecla TAB duas vezes, assim vocêverá uma lista com as alternativas possíveis.
  • Debian para servidores 16 Carlos Melo Uma vez instalado o programa, o comando para chamá-lo pelo terminal (em 99% dos casos) é opróprio nome do pacote. Em casos onde o programa realmente "desapareça" depois de instalado, sem rastros aparentes,você pode procurá-lo usando o comando "whereis" (onde está), como em:$ sudo updatedb$ whereis realplayrealplayer: /usr/bin/realplayEm muitos casos, o programa pode ser instalado em uma pasta fora do PATH (as pastas /bin, /usr/bin,/usr/local/bin, etc.), fazendo com que o sistema não encontre o comando. Nestes casos, chame-oindicando o caminho completo ou crie um link para ele (usando o comando "ln -s") dentro da pasta"/usr/bin", ou "/usr/local/bin", onde o sistema consiga localizá-lo diretamente, como em:# ln -s /usr/lib/realplayer10/realplay /usr/bin/realplay Lembre-se de que em muitos casos o nome do executável do programa pode ser diferente donome do programa. Por exemplo, o executável do Realplayer é "realplay" e o do VMware Player é"vmplayer". Um detalhe interessante é que, mesmo ao atualizar um programa, as suas configurações sãomantidas. Ao atualizar o Firefox ou o Konqueror, por exemplo, você não perde seus bookmarks. Issoacontece porque as configurações e arquivos referentes aos programas são armazenados em pastasocultas dentro do seu diretório de usuário. “Os bookmarks, cache, cookies e outros arquivos do Firefox,por exemplo, vão para a pasta “mozilla/firefox", dentro do seu home. O apt-get nunca altera estesarquivos, de forma que suas preferências sempre são preservadas durante os upgrades. Um segundo tipo são os arquivos de configuração do sistema, que também fazem parte dospacotes. Quando um pacote traz uma nova versão de um determinado arquivo de configuração, mas oapt-get percebe que o arquivo anterior foi alterado por você, ele pergunta se você quer manter o arquivoatual ou se você quer substituí-lo pela nova versão. O conselho geral nestes casos é responder não àsubstituição (que é o default). Isso mantém o arquivo atual, que, afinal, está funcionando. Autorize asubstituição apenas quando você souber do que se trata. Lembre-se de rodar o "apt-get update" periodicamente, de preferência uma vez por semana ouantes de instalar qualquer programa ou atualização importante. Assim você terá certeza de que o aptinstalará sempre as versões mais recentes dos programas. O apt não apenas torna a instalação de novos programas bem mais simples, mas diminui tambéma necessidade de estar sempre instalando versões mais recentes da distribuição, já que você pode iratualizando os programas mais usados sempre que souber de uma versão mais nova. É possível tambémremover pacotes instalados, neste caso usando o parâmetro "remove", como em:# apt-get remove proftpdCaso os arquivos referentes ao programa tenham se corrompido de alguma maneira (desligamentosincorretos, problemas de BIOS, etc. ;), você pode forçar sua reinstalação, usando o parâmetro "--reinstall".Normalmente o apt-get avisa que o programa já está em sua versão mais recente e não faz nada:
  • Debian para servidores 17 Carlos Melo# apt-get install emacLendo Lista de Pacotes... ProntoConstruindo Árvore de Dependências... Prontoemac já é a versão mais nova.Adicionando o "--reinstall" ele prossegue com a instalação, mesmo que o pacote já seja a versão maisrecente, substituindo todos os arquivos referentes a ele e resolvendo o problema.# apt-get install --reinstall emacsFinalmente, existe a opção de atualizar todo o sistema, o que é feito usando os comandos:# apt-get update# apt-get upgradeConfigurando o apt-get numa rede com proxy transparente.# vi /etc/apt/apt.confE adicione as seguintes linhas:Acquire{HTTP::proxy "http://192.168.1.254:3128";FTP::proxy "http://192.168.1.254:3128";}Obs.: Novamente altere as informações de IP e Porta para do seu servidor de proxy e salve o arquivo.Agora vamos alterar o arquivo: /etc/profile# echo "export http_proxy ftp_proxy" >> /etc/profilePronto !OBS: Você também deve informar o endereço e a porta do seu Servidor Proxy (SQUID), no exemplo foiutilizado o IP: 192.168.1.254 e a Porta: 3128, altere para o IP e Porta do seu servidor de proxy e salve oarquivo.8. Configurando o compartilhamento de rede - iptables. Muitas vezes temos em casa mais de um computador e nossa conexão nao permite ocompartilhamento ou até você tem uma conexão de Dial-up em um servidor e gostaria de dividir ela com arede corporativa. Os passos abaixo vão ajudá-los.RequerimentosSe você vai compartilhar a adsl/3g com outro micro, você irá precisar de: • Uma Placa de rede 10/100 • Um Hub/Swithc ou Cabo crossover ( no caso do cabo crossover(cruzado), só pode usar com mais uma máquina) uma conexão com a internet.8.1 Criando uma rede Bom, para compartilhar a internet, iremos precisar inicialmente de criar uma rede, se forcompartilhar a internet, e sua conexão for ADSL/3G, então mantenha a seguinte estrutura
  • Debian para servidores 18 Carlos MeloPlaca de rede 1 ( eth0 ) - conexão com a internetPlaca de rede 2 ( eth1 ) conexao de Rede Local através de Hub/Switch ou cabo crossover.Caso seja preciso compartilhar uma conexão dial-up então sua placa de rede será quem fará a conexão darede local; Inicialmente você já deve ter um IP configurado para comunicação com o seu modem, paraverificar qual é o seu IP, abra um terminal (xterm, konsole, gnome-terminal... ) e digite o seguinte comando/sbin/ifconfiga saída do comando será algo semelhante ao seguinte:eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:E0:7D:A2:EF:3A inet end.: 200.250.241.209 Bcast:255.255.255.255 Masc:255.255.255.0 endereço inet6: fe80::2e0:7dff:fea2:ef3a/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:5304553 errors:1 dropped:0 overruns:0 frame:0 TX packets:3404353 errors:0 dropped:0 overruns:16 carrier:0 colisões:0 txqueuelen:1000 RX bytes:1683936055 (1.5 GiB) TX bytes:3471646904 (3.2 GiB) IRQ:5 Endereço de E/S:0xc400lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:1245431 errors:0 dropped:0 overruns:0 frame:0 TX packets:1245431 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:297554646 (283.7 MiB) TX bytes:297554646 (283.7 MiB) Então neste caso podemos ver que o meu IP é o IP 200.250.241.209, no meu caso, eu tenho umaconexão da banda larga ( velox ), esse IP é pego automaticamente por um cliente DHCP no caso, este IP podevariar, pode ser uma rede exclusiva como 192.168.10 ou outra coisa qualquer. Bom, se a sua rede for200.xxx.xxx.xxx você pode usar qualquer IP para sua rede interna; Mas se sua rede for 192.168.10.0
  • Debian para servidores 19 Carlos Melodeveremos usar uma rede 192.168.1.0 para separar as duas. Então, inicialmente vamos configurar a rede, noDebian, abra o seguinte arquivo:/etc/network/interfacesEsse arquivo será semelhante ao seguinte, no caso de você pegar a conexão por DHCP.# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet dhcpAbra o arquivo como super usuário, agora com isso, voce pode abrir pelo terminal o seu editor de textofavorito, e mandar abrir o arquivo:/etc/network/interfaces( Se vai usar uma placa de rede apenas, no caso de compartilhar Dial Up, troque o eth1 poreth0 na configuração abaixo ) e acrescente ao fim do arquivo as seguintes configurações. auto eth1 iface eth1 inet static address 192.168.20.1 netmask 255.255.255.0 broadcast 192.168.20.255 network 192.168.20.0com isso, podemos salvar o arquivo e fechar o editor de texto para carregar essas configurações execute osseguintes comandos:/etc/init.d/networking stop/etc/init.d/networking startConfigurando a segunda estaçãoBom, se sua segunda estação for debian, você pode usar o mesmo esquema pra configurar, caso seja outradistribuição, ou seja Windows,verifique onde ficam as configurações para sua versão, o importante é que aestação tenha os seguintes dados:ip: 192.168.20.2mascara de rede: 255.255.255.0dns: 192.168.20.1gateway: 192.168.20.1com isso configurado, tente dar o seguinte comando da estação que acabou de configurar:
  • Debian para servidores 20 Carlos Meloping 192.168.20.1a saída do comando deverá ser algo semelhante ao abaixoPING 192.168.20.1 (192.168.20.1) 56(84) bytes of data.64 bytes from 192.168.20.1: icmp_seq=1 ttl=128 time=2.70 msse der algo como timeout, ou outro tipo de erro, então sua conexão não esta funcionando se a saída for aacima, então está tudo ok, e podemos passa para o próximo passo.8.2 Criando um Script para compartilhamento de internetAgora, precisamos montar o script para compartilhar a internet, então abra um editor de texto qualquer, eacrescente os seguintes dados dentro:#!/bin/bashecho "1" > /proc/sys/net/ipv4/ip_forward# Limpando as tabelasiptables -Fiptables -t nat -Fiptables -t mangle -F# Mascarando conexões da rede# se sua conexão estiver na interface ppp0 basta trocar o eth0 por ppp0# a interface ppp0 é usada também em dial-up, então, neste caso, troque o eth0# por ppp0iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEOk, agora, pode salvar, e fechar o editor de texto8.3 Colocando na inicialização da máquinaCom o usuário root, você ira mover este arquivo, o script criado acima, para o diretorio /etc/init.d/ entãosupondo que você chamou o arquivo de “compartilhamento, você irá executar o seguinte comandomv compartilhamento /etc/init.d/Feito isso, agora temos de dar permissão de execução ao arquivo, então use o comando abaixo:#chmod +x /etc/init.d/compartilhamentoAgora execute o arquivo digitando:#/etc/init.d/compartilhamentoFeito isso, agora temos que criar uma chamada para ele na inicialização, vá ate o diretório
  • Debian para servidores 21 Carlos Melo/etc/rc2.d usando o seguinte comando#cd /etc/rc2.de use o seguinte comando para criar a chamada#ln -s /etc/init.d/compartilhamento /etc/rc2.d/S99compartilhamento • Servidor de DHCP- instalando e configurando o DHCPD9. Configuração de RedeAo finalizar a instalação digite ifconfig -a. Deve-se obter um resultado similar a:eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62 inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2875542 errors:0 dropped:0 overruns:0 TX packets:218647 errors:0 dropped:0 overruns:0 Interrupt:11 Base address:0x210Caso o parâmetro MULTICAST não esteja presente, deve-se reconfigurar o kernel para sua adição. Em muitossistemas isso não será necessário.O próximo passo será adicionar a rota 255.255.255.255. Apresentamos um extrato retirado ao arquivoREADME do DHCPd:"Para que o dhcpd funcione perfeitamente, escolha alguns clientes DHCP (por exemplo Windows 9x), quesejam capazes de enviar pacotes com um endereço IP de destino 255.255.255.255. Infelizmente o Linuxteima em mudar 255.255.255.255 no endereço de divulgação da subrede local (neste caso 192.5.5.223). Issocria uma violação do protocolo DHCP e enquanto muitos clientes DHCP não avisam do problema, outros(como os clientes DHCP Microsoft) o fazem. Clientes com este tipo de problema não visualizam a mensagemDHCPOFFER enviada pelo servidor."Digite:#route add -host 255.255.255.255 dev eth0caso se obtenha a mensagem#"255.255.255.255: máquina desconhecida"deve-se tentar adicionar a seguinte entrada ao arquivo /etc/hosts:#255.255.255.255 all-onestente então:
  • Debian para servidores 22 Carlos Melo#route add -host all-ones dev eth0ou#route add -net 255.255.255.0 dev eth0eth0 é obviamente o nome do dispositivo de rede que está sendo usado. Caso seja diferente, faça as devidasalterações.9.1 Opções do DHCPdAgora é necessário configurar o DHCPd. Para se fazer isso deve-se criar ou editar o arquivo /etc/dhcpd.conf.Comumente se deseja definir endereços IP de forma aleatória. Isso pode ser feito da seguinte forma:default-lease-time 600;max-lease-time 7200;option subnet-mask 255.255.255.0;option broadcast-address 192.168.1.255;option routers 192.168.1.254;option domain-name-servers 192.168.1.1, 192.168.1.2;option domain-name "dominio.org.br";subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200;}Isso fará com que o servidor DHCP forneça ao cliente um endereço IP na faixa 192.168.1.10-192.168.1.100ou 192.168.1.150-192.168.1.200. Ele liberará um endereço por 600 segundos caso o cliente não defina umtempo específico de utilização de endereço. De qualquer forma o tempo máximo permitido será de 7.2segundos. O servidor irá "avisar" ao cliente que ele pode usar 255.255.255.0 como máscara de subrede,192.168.1.255 como endereço de distribuição, 192.168.1.254 como roteador ou caminho padrão,192.168.1.1 e 192.168.1.2 como servidores DNS.Pode-se ainda definir endereços IP específicos baseados nos endereços Ethernet dos clientes, como porexemplo:host conec { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222;}Este procedimento irá definir o endereço 192.168.1.222 para o cliente com endereço Ethernet igual a08:00:2b:4c:59:23.Podem-se misturar os procedimentos, definindo-se certos clientes com endereços IP estáticos (por exemplo,servidores) e outros com endereços dinâmicos (como por exemplo portáteis). Há diversas opções como:
  • Debian para servidores 23 Carlos Meloendereços de servidores Windows, servidores de data e horário, etc... Caso se necessite alguma destasopções por favor verifique a página de manual on-line do dhcpd.conf.9.3 Inicializando o ServidorPodemos agora acionar o servidor DHCP. Basta simplesmente digitar ou incluir nos programas deinicialização do sistema:/usr/sbin/dhcpdCaso se deseje verificar se tudo está funcionando perfeitamente, deve-se acionar inicialmente o modo dedepuração e colocar o servidor em primeiro plano. Isso pode ser feito através do comando:/usr/sbin/dhcpd -d -fInicialize algum dos clientes e verifique a console do servidor. Deverão ser apresentadas diversas mensagensde depuração.10. Configurando o servidor de DNS10.1 Instalando um Servidor DNSBom, para que o nosso servidor de nomes ( DNS ) possa ser a nossa maquina, necessitamos instalar umservidor de DNS nela, nesse caso usaremos o bind9, instale usando o apt#apt-get install bind9A configuração padrão da instalação, já o libera para resolver nomes, então com isso podemos mandar umping da estação:#ping www.google.com.brA saída deverá ser semelhante a abaixoPING www.uol.com.br (200.221.2.45): 56 data bytes64 bytes from 200.221.2.45: icmp_seq=0 ttl=55 time=10.4 msAdaptação: Retirado dehttp://www.debianfordummies.org/wiki/index.php/Compartilhando_Internet_no_linux"11. Definindo quais processos serão executados por cada runlevel O comando init pode alterar os processos em execução alterando os runlevels do sistema. Mas adefinição de quais processos serão executados por cada nível de execução é feita pela hierarquia dediretórios /etc/rc.d e scripts de Shell. Quando o Linux inicia, uma série de scripts no diretório /etc/rc.d é executada para dar a carga nosistema. Vejamos estes arquivos e diretórios em detalhes: O arquivo rc.sysinit é executado pelo processo init durante a carga do sistema e habilita funções essenciais. Por exemplo, montar partições de disco.
  • Debian para servidores 24 Carlos Melo O arquivo rc.local é executado pelo script rc.sysinit. ele é utilizado pelos administradores para modificarem os serviços na carga do sistema. Este arquivo tem preferência para esta tarefa, uma vez que não é alterado durante um processo de atualização (upgrade) do sistema. O arquivo rc é utilizado para transições entre os runlevels. O diretório /etc/rc.d/init.d contém os diversos scripts que fazem a carga de todos os serviços do sistema operacional. Por exemplo o Shell seguro SSH possui um script para a carga do serviço com o nome sshd (Secure Shell Daemon). Este e outros scripts podem aceitar como parâmetros comandos com start e stop. Outros serviços podem aceitar outros comandos como reload, restart, status, etc. Os níveis de serviço são definidos através dos diretórios /etc/rc<n>.d, onde <n> pode variar de 0 a 6,correspondendo aos runlevels . por exemplo /etc/rc0.d e /etc/rc1.d. Dentro de cada diretório de runlevelexistem links simbólicos para os scripts dos serviços nos arquivos em /etc/rc.d/init . Estes links simbólicosseguem o seguinte padrão.[K|S] nn [nomedoscript]Onde: K: Kill, inidica que p sript é para terminar um determinado serviço. S: Start, indica que o script é para carregar um determinado serviço. Os números inteiros nn indicam a seqüência de execução dos scripts. O menor nn é executado primeiro. O nome do script não é necessário, mas ajuda o operador a entender o script. Para incluir um determinado serviço em algum runlevel desejado, você devera copiar o script de cargapara o diretório /etc/rc.d/init.d e criar um link simbólico para o script no runlevel desejado seguindo estanomenclatura.Exemplo:#cp /usr/local/mailman/mailman.sh /etc/rc.d/init.d#ln –s /etc/rc.d/init.d/mailman.sh /etc/rc.d/rc3.d/S25mailman12. Entendendo SMB e NetBIOSAplicações de compartilhamento de arquivos e impressoras de Microsoft Windows são baseados emNetBIOS (Network Basic Input Output System). O BIOS define a interface de aplicações usadas para solicitarserviços I/O de DOS. NetBIOS estende isto com chamadas que suportam I/O através de uma rede.Desenvolvido há 20 anos par o produto PC Network vendido por Sytek, o NetBIOS API sobreviveu ao produtooriginal para se tornar parte de Windows for Workgroups, LAN Manager, Windows 95/95/ME e WindowsNT/2000.Originalmente, o NetBIOS era um protocolo monolítico, que levava dados de todos os modos de aplicaçãopara rede física. O NetBIOS mudou com o passar do tempo para um protocolo em camadas. Suas camadasincluem o NetBIOS API, o protocolo SMB e o protocolo NetBIOS Frame (NBF).Hoje, o NetBIOS executa através do TCP/IP, o que permite às aplicações NetBIOS executar através degrandes internets. Isto é feito encapsulando as mensagens NetBIOS dentro de datagramas TCP/IP. Oprotocolo que faz isto é o NetBIOS over TCP/IP (NBT), que é definido pelas RFCs 1001 e 1002.O NBT requer um método para mapear nomes NetBIOS de computador, que são os endereços de uma redeNetBIOS, para os endereços IP de uma rede TCP/IP. Existem três métodos:
  • Debian para servidores 25 Carlos Melo broadcst IP – Uma mensagem de broadcast que contém uma nome de computador NetBIOS étransmitida, e quando um host vir seu próprio nome em tal transmissão, devolve seu endereço IP à fonte detramissão. arquivo Imhosts – Um arquivo que mapeia nomes NetBIOS de computador para endereços IP. netBIOS Name Server (NBNS) – Um NBNS mapeia nomes NetBIOS para endereços IP para seusclientes. O daemon nmbd do Samba pode fornecer este serviço.Os sistemas em uma rede NBT são classificados de acordo com o modo que eles solucionam nomes NetBIOSa endereços IP. Há quatro classificações possíveis: b-node – Um sistema que soluciona enderços por broadcast é um nó de broadcast é um nó debroadcast (b-node). Broadcating só tem efeito em uma rede física que suporta broadcast, e normalmenteestá limitado a uma única sub-rede. p-node – Um sistema que consulta diretamente um servidor de nome NBNS para solucionarendereços é um nó-ponto-a-ponto (p-node). m-node – Um sistema que primeiro usa resolução de endereço por broadcast e, em caso de nãoobter sucesso, volta a um servidor NBNS é um nó-misto (m-node). Usando uma “abordagem dupla”, éeliminada a dependência completa de um servidor NBNS que é a fraqueza da solução p-node. O problemacom m-node é que usa a abordagem de broadcast, menos desejável, primeiro. Na prática, m-nodes sãomuitos raramente usados. h-node – Um sistema que primeiro tenta solucionar o endereço usando o servidor NBNS; e entãovolta para usar broadcast; e se tudo a mais falha, procura por um arquivo Imhosts local é um nó-hibrido (h-nod). h-node é o método usado pela maioria dos sistemas.Serviço de nome NetBIOSEmbora a instalação do software Samba ainda não tenha sido discutida, este é um bom lugar para discutir odaemon NetBios Name Server (nmdb) e como é configura. O nmbd é parte da distribuição do softwareSamba básica que transforma um servidor Linux em um servidor NBNS. O nmbd pode controlar consultas deWindows 95/98/ME/NT/2000 e cliented LanManeger, e porde ser configurado para agir com um servidorWINS.NOTA: A implementação da Microsoft do serviço de nome NetBIOS é o Windows Internet Name Service (WINS). O Samba é compatível com o WINS e pode ser usado como um servidor WINS.Opções de configuração WINS de nmbd são definidas no arquivo smb.conf, que é coberto depois emdetalhes. As opções fundamentais que se relacionam para executar o WINS são como segue: wins support – Ajuste yes ou no. Esta opção determina se o nmbd é executado ou não como umservidor WINS. no é o default, assim por default, nmbd fornece controle de navegação, mas não forneceserviço WINS. dns proxy – Ajuste yes ou no. Esta opção dis para o nmbd usar DNS para solucionar consultas WINSque ele não pode solucionar de nenhum outro modo. Isto só é significante se o nmbd estiver executando
  • Debian para servidores 26 Carlos Melocomo um servidor WINS. O defaut é yes. DNS pode ajudar com resolução de nome NetBIOS somente senomes NetBIOS e nomes de host DNS forem os mesmos. wins server – Ajuste o endereço IP de um servidor WINS externo. Esta opção só é útil se você nãoestiver executando um servidor WINS em seu sistema Linux. Esta opção diz ao Samba o endereço do servidorWINS externo para ao qual deveria enviar consultas de nome NetBIOS. wins proxy – Ajuste yes ou no. O default é no. Quando ajustado a yes, nmbd soluciona mensagensde broadcast de consultas de nome NetBIOS transformando-as em consultas unicast e as enviandodiretamente para o servidor WINS. Se wins support = yes estiver ajustado, estas consultas são controladaspelo próprio nmbd. Se, ao contrário, wins server estiver ajustado, estas consultas são enviadas ao servidorexterno. A opção wins proxy é necessária apenas se os clientes não sabem o endereço do servidor ou nãoentendem o protocolo WINS.Forneça a seus clientes o endereço do servidor de nome NetBIOS através de DHCP. Para as opções de DHCPque definem a configuração de NetBIOS de um cliente. Para definir o endereço do servidor NBNS, entre aseguinte linha no arquivo dhcpd.conf:option netbios-name-servers 172.16.5.1 ;O servidor de nome NetBIOS geralmente é iniciado no momento da inicialização com o seguinte comando:nmbd -DQuando iniciado com a opção – D, o nmbd executa continuamente, escutando por solicitações de serviço denome NetBIOS na porta 137. O servidor responde solicitações usando dados de registro coletados de seuscliente e o mapeamento de nomes para endereço NetBIOS que descobriu de outros servidores. Se a opção –H /etc/Imhosts for adicionada à linha de comando, o servidor também responde com o mapeamentodefinido no arquivo Imhosts. (Você pode chamar este arquivo de qualquer coisa que deseje, mas o nometradicional é Imhosts.)O arquivo Imhosts está lá de forma que você possa fornecer mapeamento de endereço manualmente para oservidor quando for necessário, entretanto, normalmente não é necessário. A maioria dos servidores WINSnão precisa de um arquivo Imhosts porque os servidores descobrem mapeamento de endereçodinamicamente dos clientes e outros servidores. Nomes NetBIOS são registrados por eles mesmos; os clienteregistram os seus nomes NetBIOS com o servidor quando eles inicializam. Os endereços e nomes sãoarmazenados no banco de dados do WINS; wins.dat. Imhosts é só uma parte pequena do banco de dadostotal.Os arquivos ImhostsO arquivo Imhosts contém mapeamentos de nome estático para endereço. O arquivo é semelhante aoarquivo hosts descrito no COLOCAR ARQUIVO MODELO DE HOSTS, “Serviços de nome Linux”. Cada entradacomeça com um endereço IP que é seguido por nome de host. Porém, agora o nome de host é o nomeNetBIOS. A Listagem 9.8 é um arquivo Imhosts de exemplo.Listagem 12.1 – Um arquivo Imhosts exemplo.$ cat /etc/Imhosts172.16.5.5 crow172.16.5.1 wren
  • Debian para servidores 27 Carlos Melo172.16.5.2 robin172.16.5.3 hawkDado este arquivo Imhosts, o nome NetBIOS robin mapeia para o endereço IP 172.16.5.2. Observe que estesnomes NetBIOS são iguais aos nomes de host TCP/IP atribuídos a estes clientes. Você sempre deve usar osmesmos nomes de host para seus sistemas NetBIOS e TCP/IP. Caso contrário, limita suas escolhas deconfiguração e cria confusão.Serviço de nome NetBIOS é uma parte essencial de uma rede NetBIOS, mas o ponto real de criar tal rede écompartilhar arquivos e outros recursos de rede. O resto deste material discute a instalação e configuraçãode Samba para fazer apenas isso.Instalando o SambaServiços Samba estão implementados como dois daemons. O daemon SMB (smdb), o coração do Samba,fornece os serviços de compartilhamento de arquivo e de impressora. O daemon NetBIOS Name Server(nmbd) fornece serviço de nome NetBIOS para endereço IP.Você pode fazer o download do software Samba da Internet se precisar. Vá para www.samba.org paraselecionar o site de download mais próximo, e então baixe o arquivo samba-latest.tar.gz deste site.Descompacte e descomprima o fonte em um diretório de trabalho. Mude para este diretório, execute./configure, e então execute make e make install. Isto instalará a mais recente versão do Samba em/usr/local/samba. Porém, compilar sua própria cópia de Samba não deve ser necessário em um sistemaLinux.O samba é incluído na maioria das distribuições Linux, e pode ser instalado durante a instalação de sistemainicial. Selecionar Samba durante a instalação de Red Hat instala o pacote Samba e o script/etc/rc.d/init.d/smb, que pode ser executado no momento da inicialização para iniciar ambos smbd e nmbd.Depois que o software for instalado, use chkconfig ou tksysv para assegurar que os scripts apropriadosexecutam no momento da inicialização. Em nosso sistema Red Hat de amostra, o script é smb, e nós usamoseste comando chkconfig para ter certeza de que o script executará na inicialização:[root] # chkconfig -list smbsmb 0:off 1:off 2:off 3:off 4: off 5: off 6: off[root] # chkconfig -level 35 smb on[root] # chkconfig -list smbsmb 0:off 1:off 2:off 3:on 4: off 5: on 6: offO primeiro commando chkconfig mostra que, embora o RPM dos Samba esteja instalado nes system, o smbnão foi configurado para executar a inicialização. O segundo comando chkconfig faz o smb executar nosníveis de execução 3 e 5 – os níveis de execução multiusuário default.A seguir, você executa o script /etc/init.d/smb para iniciar os daemons, como segue:[root] # service smb startStanting SMB services: [ OK ]Stanting NMB services: [ OK ][root] # service smb statussmbd (pid 5341) is running…nmbd (pid 5346) is running…
  • Debian para servidores 28 Carlos MeloComo os IDs de processo na resposta de estado mostram, os daemons smbd e nmbd estão executando. Jáque os sistemas Red Hat não executarão os daemons, a menos que um arquivo smb.conf exista, esta é umaótima dica de que o sistema Red Hat vem com Samba pré-configurado.12.1 Configurando um servidor SambaO servidor Samba é configurado pelo arquivo smb.conf. Olhe no script de inicialização para ver onde o smbdespera encontrar o arquivo de configuração. Em um sistema Red Hat, deve ser em / etc/samba/smb.conf,em outro sistema pode ser /etc/smb.conf, e o default usado na maioria da documentação de Samba é/usr/local/samba/lib/smb.conf. Use find ou verifique o script de inicialização assim você sabe onde está emseu sistema.O arquivo smb.conf está dividido em seções. Com exceção da seção global que define parâmetros deconfiguração para o servidor inteiro, as seções são nomeadas depois dos compartilhamentos. Umcompartilhamento é um recurso oferecido pelo servidor aos clientes. Neste contexto, é um sistema dearquivos que é oferecido pelo servidor para os clientes usarem para compartilhamento de arquivos. Umcompartilhamento também pode ser uma impressora compartilhada.O melhor modo para aprender sobre o arquivo smb.conf é olhara para um. Menos os comentários e todas aslinha que tratam de compartilhamento de impressoras, o arquivo smb.conf do Red Hat contém as linhasativas mostradas na listagem 9.9.Listagem 12.2 – Linhas ativas no arquivo smb.conf de Red Hat.[global] Workgroup = MYGROUP Server string = Samba Server Log file + /var/log/samba/%m.log Max log size = 0 Segurity = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd socket options = TCP_NODELAY SO_RCWBUF=8192 SO_SNDBUF=8192 dns proxy = no[homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775As variáveis do smb.confLer um arquivo smb.conf pode ser confuso se você não entende as variáveis encontradas no arquivo. ATabela 9.3 lista cada variável e o valor delas.
  • Debian para servidores 29 Carlos MeloTabela 12.1 – Variáveis do smb.conf.Variável Significado%a Arquitetura de máquina de cliente%d ID do processo de servidores%g GID do nome de usuário atribuído ao cliente%G GID do nome de usuário solicitado pelo cliente%h Nome no DNS do host do servidor%H Diretório home do nome de usuário atribuído ao cliente%I Endereço IP do cliente%L Nome NetBIOS do servidor%m Nome NetBIOS do cliente%M Nome no DNS do host do cliente%N Servidor NIS se NIS for suportado%p Diretório raiz do NIS se NIS for suportado%P O diretório raiz do serviço atual%R O protocolo negociado durante a conexão%S O nome do serviço atual%T A data e hora%u O nome de usuário atribuído ao cliente%U O nome de usuário solicitado pelo cliente%v O número da versão do SambaVariáveis fornecem flexibilidade porque cada variável é substituída na configuração por um valor obtido dosistema. Isto permite interpretar a mesma declaração de configuração diferentemente em situaçõesdiferentes. Aqui está um exemplo do arquivo smb.conf do Red Hat na Listagem 9.9:Log file = /var/log/samba/%m.logNeste exemplo, a variável %m é substituída pelo nome NetBIOS do cliente, assim um arquivo de registrodiferente é criado para cada client que usa o nome NetBIOS do cliente. Se o nome NetBIOS do cliente forcrow, o arquivo é chamado de /var/log/samba/crow.log. Se o nome NetBIOS do cliente for robin, o arquivo é/var/log/samba/robin.log.A seção global do smb.confO arquivo de configuração de exemplo do Red Hat contém duas seções: global e homes. A seção globaldefine vários parâmetros que afetam o servidor inteiro. Os parâmetros na seção global do smb.conf do RedHat são os seguintes: workgroup (grupo de trabalho) – Define o grupo de trabalho do qual este servidor é um membro.Um grupo de trabalho é um agrupamento hierárquico de hosts. Organiza recursos de rede da mesma formaque diretórios organizam recursos de arquivo. E é usado pela mesma razão: computadores agrupados emgrupos de trabalho ajudam um usuário a localizar sistemas relacionados. Grupos de trabalho não são usadospara segurança. Hosts que não estão no grupo de trabalho ainda são autorizados a compartilhar arquivoscom sistemas que estão. Substitua o nome MYGROUP no exemplo por um nome de grupo de trabalhosignificante de 15 caracteres ou menos. server string – Define o comentário descritivo para este servidor. A string é exibida pelo comandonet view em clientes Windows, assim fornece uma oportunidade para você descrever o servidor. Mude astring no exemplo para significante para seu sistema.
  • Debian para servidores 30 Carlos Melo Log file (arquivo de registro) – Define o local do arquivo de registro. A coisa mais interessante sobreesta entrada é que contém uma variável de smb.conf. max log size (tamanho máximo do arquivo de registro) – Define o tamanho máximo de uma arquivoem kilobyte. O default é 5MB, ou 5.000KB. Se o tamanho máximo for excedido, o smbd fecha o registro e orenomeia com extensão .old. A configuração do Red Hat ajusta isto em 0, o que significa “ilimitado” – não hánenhum tamanho máximo de registro. security (segurança) – Define o tipo de segurança usado. Em Samba, há quatro configuraçõespossíveis: share – Solicita segurança no nível do recurso compartilhado. Este é o mais baixo nível de segurança.Essencialmente, um recurso configurado com segurança neste nível é compartilhado com todo o mundo. Épossível associar uma senha com um compartilhamento, mas a senha é a mesma para todos que queiramusar o recurso compartilhado. user – Solicita segurança em nível de usuário. A todo usuário é exigido entrar com um nome deusuário e uma senha associada. Por default, isto é o nome de usuário e senha definidos em /etc/passwd queo usuário usa para se registrar ao servidor Linux. O valor default para senhas pode ser mudado, como nósveremos em instantes. server – Define segurança em nível de servidor. Isto é semelhante a segurança em nível de usuário,mas um servidor externo é usado para autenticar o nome de usuário e senha. O servidor externo deve serdefinido pela opção password server. domain – Define segurança em nível de domínio. Neste esquema, o servidor Linux une um domínioWindows NT e usa o controlador de domínio Windows NT como o servidor que aprova nomes de usuário esenhas. Use a opção (PDC). Registre-se em PDC, e crie uma conta para o sistema Linux. Finalmente,acrescente estas linhas à seção global no sistema Linux: domain master = no local master = no preferred master = no ostype = 0 encrypt passwords – Especifica se Samba deve ou não usar senhas criptografadas. Fixar esteparâmetro para yes torna o servidor mais compatível com os clientes Windows, e o torna mais difícil paraintrusos detectarem senhas da rede. Senhas criptografadas são mais seguras. Se este parâmetro for ajustadoem no, senhas de texto claro são usadas, o que requer mudanças nas configurações de cliente. Veja asidebar “Senhas de texto claro” para informações sobre as mudanças no Register que são necessárias paratornar os cliente Windows compatíveis com senhas de texto claro. smb passwd file – Use este parâmetro para apontar o local do arquivo smbpasswd. Quando senhascriptografadas são usadas, o servidor Samba tem que manter dois arquivos de senha: passwd e smbpasswd.Use o script mksmbpasswd.sh para construir o arquivo inicialsmbpasswd do arquivo passwd. socket options – Define os parâmetros de ajuste de desempenho. A configuração de exemplo doRed Hat ajusta TCP_NODELAY para dizer a Samba para enviar pacotes múltiplos com cada transferência, queé de fato o default. As opções SO_RCVBUF e SO_SNDBUF ajustam o buffer de envio e recebimento em oitokilobytes, o que pode aumentar ligeiramente o desempenho. Um estudo detalhado de ajuste dedesempenho de Samba seta além do escopo deste livro. Veja o capítulo 12 de Linux Samba Serve
  • Debian para servidores 31 Carlos MeloAdminstration por Rod Smith (Sybex, 2000) para uma boa discussão sobre o ajuste de desempenho deSamba. dns proxy – Especifica se o nmbd deve ou não encaminhar consultas NBNS não resolvidas ao DNS,como descrito na seção anterior. A configuração do Red Hat ajusta isto para no, assim não envia consultasNBNS não resolvidas ao DNS.Senhas de texto claroQuando Samba usa senhas de texto claro, nenhuma sincronização de banco de dados de senha é requerida,porque só um banco de dados, /etc/passwd, é usado. Porém, senhas de texto claro não são compatíveis commuitas versões de Windows, porque estas versões requerem senhas criptografadas. Para forças estesclientes a usar senhas de texto claro, você tem que editar o Register de todos os clientes. Para Windows95/98/ME, a configuração de Registro é[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]“EnablePlainTextPasswords”=dword:00000001Em Windows NT, a configuração é:[HKEY_LOCAL_MACHINESystemCurrentControlSetServices->RdrParameters]“EnablePainTexPasswords”=dword:00000001Em Windows 2000, a configuração é:[HKEY_LOCAL_MACHINESystemCurrentControlSetServices->LanmanWorkStationParameters]“EnablePainTexPasswords”=dword:00000001Senhas de texto claro não são tão seguras quanto a senha criptografada. Adicionalmente, manter doisbrancos de dados em um servidor Linux é normalmente mais simples que editar o Register em todos osclientes Windows. Por isto, a maioria dos administradores acha que as senhas criptografadas são melhores edão menos dor de cabeça.Além de mudar o nome do grupo de trabalho, o sistema Red Hat executa com a configuração de exemplosem mudar quaisquer destes parâmetros globais. A outra seção no arquivo de configuração de exemplo quese relaciona ao compartilhamento de arquivos é a seção homes.12.3 A seção homes do smb.confA seção homes é uma seção de compartilhamento especial. Diz ao smbd para permitir aos usuários acessarseus próprios diretórios home através o SMB. Ao contrário de outras seções de compartilhamento cobertasdepois, a seção homes não diz ao smbd o caminho específico do diretório sendo compartilhado. No lugar, osmbd usa o diretório home do arquivo /etc/passwd baseado no nome de usuário do usuário que solicita ocompartilhamento. É esta seção especial que torna o diretório home de um usuário no servidor disponívelpara o usuário no PC dele. A seção homes do exemplo de Red Hat é[homes] commet = Home Directories browseable = no writable = yes valid users = %S
  • Debian para servidores 32 Carlos Melo creat mode = 0664 directory mode = 0775Os parâmetros de configuração definidos nesta seção homes são os seguintes: comment – Fornece uma descrição do recurso compartilhado que é exibida no campo decomentário da janela Network Neighborhood (vizinhaça de rede) quando este recurso é visto em um sistemaMacrosoft Windows. browsable – Especifica se todos os usuários podem enxergar ou não os conteúdos deste recursocompartilhado . no significa que somente usuários com permissão específica (quer dizer, o ID de usuáriocorreto) estão autorizados a enxergar o recurso compartilhado . yes significa que todos os usuários,indiferente do UID, podem enxergar este recursos. Este parâmetro só controla navegação; acesso real aosconteúdos do recurso compartilhado é controlado pelas permissões de arquivo Linux padrão. writable – Especifica se os arquivos pode ser escritos ou não no compartilhamento. Se yes, o recursocompartilhado pode ser escrito. Se no, o recurso é somente leitura. Este parâmetro define as açõespermitidas pelo Samba. Permissão real para escrever ao diretório definitivo pelo compartilhamento ainda écontrolado pelas permissões de arquivos padrões do Linux. valid user – Define os usuários que estão autorizados a usar este compartilhamento. No exemplo doRed Hat, o nome de serviço (%S) é usado. creat mode – Define a permissão de arquivo usada quando um arquivo é criado nestecompartilhamento. (Veja a discussão de arquivo anteriormente neste capítulo.) directory mode – Define as permissões de diretório usadas quando um diretório é criado nestecompartilhamento.As seções global e homes descritas estão incluídas na configuração de exemplo do Red Hat. Tendo umacompreensão dos elementos usados para criar estas seções, você está pronto para criar sua própria seção decompartilhamento no arquivo smb.conf.12.4 Compartilhando um diretório através do SambaPara compartilhar um diretório através de Samba, crie uma seção de compartilhamento no smb.conf quedescreva o diretório e as condições sob as quais você está disposto a compartilhá-lo. Para compartilhar odiretório /home/sales usado nos exemplos do NFS e uma diretório novo chamado /usr/local/pcdocs, vocêdeve adicionar duas seções de compartilhamento mostradas na Listagem 9.10 ao arquivo smb.conf deexemplo.Listagem 12.4 – Compartilhamento de arquivos com o Samba[pcdocs] comment = PC Documentation path = /usr/local/pcdocs browsable = yes writable = no public = yes[sales] comment = Sales Departament Shared Directory path = /home/sales
  • Debian para servidores 33 Carlos Melo browsable = no writable = yes create mode = 0750 hosts allow = .sales.foobirds.orgCada seção de compartilhamento está rotulada com um nome significativo. Este nome é exibido como umapasta na janela Network Neighborhood nos PCs clientes. Cada seção contém alguns comandos que você jáviu e alguns comandos novos. O primeiro comando novo é path, que define o caminho do diretório que éoferecido para compartilhamento.A seção pcdocs também contém o comando public.public permite a qualquer um acessar o recursocompartilhado, até mesmo se eles não tiverem um nome de usuário ou senha válidos. A estes usuáriospúblicos é dado acesso de “conta de convidado” para o compartilhamento. Em um sistema Linux, istonormalmente significa que eles executam como usuário nobody e grupo nobody, e estão limitados apermissões mundiais.12.5 Configurando permissões de arquivo e de diretórioO recurso sales está sendo oferecida como um diretório que pode ser escrito. O comando create modecontrola as permissões usadas quando um cliente escrever em um arquivo do diretório/home/sales. NaListagem 9.10 de exemplo, é especificado que os arquivos serão cridos com permissõesleitura/escrita/execução para o proprietário, leitura/execução para o grupo, e nenhuma permissão para omundo (750). Um comando relacionado, directory mode, define a permissão usada quando um cliente criarum diretório dentro do diretório compartilhado. Por exemplo:directory mode = 0744Isto ajusta as permissões para diretórios novos em leitura/escrita/execução para o proprietário,leitura/execução para o grupo, e leitura/execução para mundo (744). Esta é uma configuração razoável, quepermite aos comandos cd e Is trabalhar como esperado, porque os diretórios têm que ter o bit executarajustado para todos os usuários, para que o comando de mudança de diretório (o cd) funcionecorretamente.12.6 Limitando o acesso a um recurso compartilhadoA seção sales também contém um comando hosts allow, que define os clientes que serão autorizados aacessar este recurso. Até mesmo se um usuário tiver o nome de usuário e senhas corretos, eles estãoautorizados a acessar este recurso somente a partir de hosts especificados. Por default, a todos os hosts édado acesso, e o acesso específico é controlado pelo nome de usuário e senha.Os hosts identificados no comando hosts allow na Listagem 9.10 são idênticos aos listados no exemplo doNFS. Isto ilustra que o Samba também pode controlar acesso com curingas de domínio.Há vários modos diferentes para definir hosts individuais ou grupos de hosts no comando hosts allow. Comoo nome do comando insinua, usa a mesma sintaxe do arquivo hosts.allow discutido no Capítulo 12,“Segurança”. Alguns exemplos de como pode ser usado no arquivo smb.conf são como segue: Hosts allow = 172.16.5.0/255.255.255.0 Permite a todo host na rede 172.16.5.0 acessar o recursocompartilhado.
  • Debian para servidores 34 Carlos Melo Hosts allow = 172.16.EXCEPT 172.16.99.0/255.255.255.0 Permite a todo host na rede 172.16.0.0 teracesso ao recurso compartilhado, com exceção aos hosts na sub-rede 172.16.99.0172.16 pode ser a rede deempresa, e 172.16.99 pode ser uma sub-rede não confiável, onde computadores acessíveis publicamenteestão localizados.Além do comando hosts allow, há o comando hosts deny, que define computadores que têm acessoexplicitamente negado ao recurso compartilhado. Sua sintaxe é semelhante à do comando hosts allow.Combinando estas duas nova seções compartilhamentos com as seções que vieram com a configuração doRed Hat, é criado um servidor que faz tudo o que você quiser. Fornece acesso a diretórios home de usuário.Fornece acesso a diretórios públicos usados para oferecer documentação on-line ou outros recursoscompartilhados publicamente. E oferece diretórios privados que só são acessíveis a membros do gruposelecionado. Isto fornece tudo o que NFS ofereceu de uma maneira que é muito mais simples para clientesMicrosoft Windows usarem.É claro que você não está limitado a servir somente clientes Windows. Sistemas Linux também podem serclientes Samba.12.8 Usando um cliente Samba do LinuxO NFS é o modo mais comum para compartilhar arquivos ente sistemas Linux, e recursos como autofs emontagem de fstab tornam a integração NFS em um cliente Linux muito transparente. Mas nem todos osservidores são servidores Linux. É possível que você vá precisar configurar um sistema Linux como um clientepara um servidor Windows NT/2000, ou até mesmo como um par para um desktop Windows. Para estassituações, use as ferramentas de cliente do Samba.Usando smbclientO programa smbclient é uma ferramenta para transferir arquivos de um sistema oferecendocompartilhamento SMB. É particularmente útil para transferir arquivos com sistemas Windows que não têmsoftware de servidor FTP. O smbclient age como uma ferramenta FTP para arquivos compartilhados peloSMB. A Listagem 9.11 ilustra isto.Listagem 12.7 – Como usar smbclient.$ smbclient //robin/temp -W sybexAdded interface ip=172.16.5.2 bcast=172.16.5.255 nmask=255.255.255.0Passaword:smb: > 1s a1*.jpg alana1.jpg A 6147 Sun Jul 8 11:39:42 2001 alana2.jpg A 8180 Sun Jul 8 11:46:56 2001 alana3.jpg A 23296 Wen Aug 8 09:37:24 2001 alana4.jpg A 42857 Sun Nov 25 16:50:42 2001 alana5.jpg A 22456 Sun Nov 25 16:53:00 2001 alana6.jpg A 55847 Wed Feb 6 16:00:20 2002 alana7.jpg A 42799 Wed Feb 6 16:10:50 2002 51795 blocks of size 131072. 11861 Blocks availablesmb: > get alana1.jpggetting file Alana1.jpg as alana1.jpg (average 158.0 kb/s)smb: > quit
  • Debian para servidores 35 Carlos MeloA ferramenta smbclient é invocada pelo comando smbclient. O recurso que você está acessando é descritona linga de comando que usa o Microsoft Uniform Naming Convertion (convenção de nome uniforme daMicrosoft) (UNC). O formanto UNC é //server/sharename, onde server é o servidor de nome NetBIOS, esherename é o nome do recurso compartilhado.Se uma senha para o recurso compartilhado é requerida, que pode ser o caso se o servidor usar segurançaem nível de compartilhamento, ela segue o UNC na linha de comando. No exemplo da Listagem 9.11, asegurança em nível de compartilhamento é usada, mas a senha não é fornecida na linha de comando, assimo servidor avisará ao usuário para isto.Use a opção de comando -U, e forneça o nome de usuário e senha separados por um % se o servidor usarsegurança em nível de usuário. Se um nome de grupo de trabalho for requerido, forneça-o com a opção –W,como mostrado na Listagem 9.11.Depois que o nome de usuário e senha foram fornecidos, os arquivos são enviados e recuperados usandoexatamente os mesmos comandos do FTP. Se você pode usar FTP, você pode usar smbclient.O programa smbclient é o burro de carga das ferramentas do cliente Samba. Não é muito elegante, mas é abase para várias outras ferramentas de cliente que são os scripts shell que usam smbclient para que otrabalho seja feito. Um modo mais natural para integar arquivos de servidor SMB no sistema de arquivosLinux é com smbfs.12.9 Usando o smbmountO sistema de arquivo SMB (smbfs) lhe permite montar compartilhamentos SMB, e os usar como se elesfizessem parte do sistema de arquivo Linux. Par funcionar, o kernel tem que suportar o sistema de arquivosmbfs. A Listagem 9.12 mostra uma verificação rápida ao suporte de kernel de smbfs.Listagem 12.8 – Verificar /proc/filesystems.[root] # modprobe smbfs[root] # cat /proc/filesystemsnodev procnodev sockfsnodev tmpfsnodev shmnodev pipefs ext2 iso9660nodev devpts ext3 vfatnodev autofsnodev smbfs O pseudo sistema de arquivo /proc fornece uma olhada rápida no kernel. O pseudo arquivo/proc/filesystems lista os sistemas de arquivos que estão no kernel, porque eles são compilados dentro ouconfigurados como módulos carregáveis. É claro qu módulos carregáveis não soa carregados a menos quesem necessários, assim a Listagem 9.11 começa com um comando modprobe para forçar smbfs a carregar.Se smbfs não carregar o kernel pode precisar ser reconfigurado.
  • Debian para servidores 36 Carlos Melo Os recursos compartilhados pode ser montados usando o comando smbmount e desmontadasusando o comando smbumount. A listagem 9.13 monta o mesmo recurso mostrado no exemplo dosmbclient usando smbmount.Listagem 12.9 – Um smbmount de exemplo.[root] # 1s /home/robin[root] # smbmount //robin/temp /home/robin workgroup=sybexPassword:[root] # 1s /home/robin/Alana*.jpg/home/robin/alana1.jpg /home/robin/alana4.jpg /home/robin/alana7.jpg/home/robin/alana2.jpg /home/robin/alana5.jpg/home/robin/alana3.jpg /home/robin/alana6.jpg O comando Is no começo da Listagem 9.13 mostra que /home/robin é um diretório vazio, que nósusaremos como um ponto de montagem (o local dentro do sistema de arquivo Linux no qual o recursocompartilhado é montando). O comando smbmount começa com o nome do recurso escrito no formatoUNC de Microsoft. O nome do recurso é seguido pelo nome do ponto de montagem de Linux. Uma lista deopções segue o ponto de montagem. Neste caso, o grupo de trabalho é a única opção requerida. Depois que estiver montado, o recurso compartilhado tem essencialmente o mesmo aspecto esentido de qualquer diretório Linux, e a maioria dos comandos Linux padrão que pode ser usada paramanipular os arquivos no diretório compartilhado. (A Listagem 9.13 mostra um Is de certos arquivos nodiretório.) É claro que nem tudo é a mesma coisa em sistemas Linux e sistemas Windows. Alguns recursos dosistema de arquivo Linux não estão disponíveis em todos os servidores SMB. Por exemplo, um sistemaWindows 95/98/ME que oferece um compartilhamento que não tem segurança em nível de arquivo, nãoentende UIDs e GIDs do Linux. O smbfs faz o seu melhor trabalho para “fingir isto”. Usa o UID e GID em vigorquando smbmount for iniciado. Você pode anular estes defaults com opções de linha de comando. Porexemplo, o seguinte comando diz para o smbfs usar o UID 689, presumivelmente o UID atribuído a tyler; e oGID 100, que é o GID de users:Smbmount //crow/user/tyler /home/tyler/crow Username=tyler password=Wats?Watt? uid=689 gid=100Para desmontar um recurso SMB, use o comando smbumount com o caminho do ponto de montagem:[root] # smbumount /home/robin Recurso compartilhados também podem ser montadas a partir arquivos fstab usando o comandomout com os argumentos smbfs –a e –t. O Red Hat usa esta técnica para montar compartilhamentos Sambano script de inicialização netfs. Para fazer isto, o compartilhamento Samba deve ser definido ao arquivofstab. Por exemprlo, para montar o compartilhamento Samba usa na Listagem 9.13, a seguinte entrada deveser acrescentada ao arquivo fstab://robin/temp /home/robin smbfs workgroup=sybex 0 0Aqui, o nome de sistema de arquivo é o nome formatado UNC do recurso remoto, e o tipo de sistema dearquivo é smbfs. Quando o comando mount for invocado com –t smbfs, transfere o controle ao programa/sbin/mount.smbfs. Em um sistema Red Hat, /sbin/mount.smbfs é apenas um link simbólico para smbmout.Os valores nos primeiros quatro campos da entrada de fstab são passados a smbmount para processamento.
  • Debian para servidores 37 Carlos MeloO smbfs torna o uso de compartilhamentos SMB em um cliente Linux muito mais fácil do que acessar estescompartilhamentos através o smbclient.ResumoCompartilhamento de arquivo é a aplicação fundamental de redes departamentais. Servidores Linux sãoexcelentes plataformas para servidores de arquivos – Linux é rápido e muito estável, e fornece ma escolhamais ampla de serviços de arquivo que muitos outros sistemas operacionais de servidores.Os arquivos são geralmente compartilhados de três modos diferentes: Por login direto. Usuários que querem compartilhar arquivos podem se registrar diretamente em um servidor Linux, indiferente da capacidade dos seus sistemas de desktop. Os arquivos podem então ser compartilhados usando o sistema de arquivo Linux. Por Network File System. NFS é o protocolo principal de compartilhamento de arquivo dos sistemas Unix. Sistemas Linux vêm com uma gama completa de softwares de cliente e servidor NFS. Por protocolos Serve Message Block. SMB é o protocolo de compartilhamento de arquivo usado pro sistemas Microsoft Windows. Um sistema Linux pode agir como um servidor SMB ou cliente para compartilhar arquivos com sistemas Microsoft Windows.Baixando e instalando o sambaPartindo do ponto que o leitor já possui uma distribuição Linux de sua preferência instalada, começaremosobtendo os pacotes necessários para a instalação e configuração no site oficial do Samba em: • http://us1.samba.org/samba/Após efetuar o download partiremos para instalação e configuração propriamente dita.Desempacote e descompacte o conteúdo do download assim:# tar -zxvf samba-3.0.23b.tar.gzSerá criado um diretório com o mesmo nome, samba-3.0.23b, entre no diretório e em seguida nosubdiretório source. Para instalar utilize:# ./configure --prefix=/etc/samba# make# make installAguarde o fim do processo, se nenhum erro ocorrer será criado um diretório no caminho especificado naflag --prefix, ou seja, seguindo o exemplo seria criado em /etc/samba, podendo ser alterado para ondedesejar.Entendendo a configuração do samba
  • Debian para servidores 38 Carlos MeloPara configuração é preciso editar o arquivo onde fica toda configuração do Samba, smb.conf, por questãode segurança faça uma cópia do arquivo original assim:# cp smb.conf smb.conf.origPronto, agora podemos editar o smb.conf com o editor de sua preferência. Iremos para configuração básicapara o funcionamento do Samba como PDC.Na seção "global" definimos variáveis que afetam diretamente o comportamento do Samba. • workgroup = Aqui é o domínio ou grupo a qual esta máquina fará parte, é o que vai aparecer na tela de login na opção "fazer logon em:" . • netbios name = Nome da máquina. Quando o Samba não consegue resolver o nome do servidor pelo DNS, será utilizado o nome declarado aqui. Informação muito útil, coloque o mesmo nome encontrado no HOSTNAME. Utilize o comando hostname para verificar o nome da máquina. Esse nome aparecerá no ambiente de rede. server string = Breve comentário sobre o servidor. • keepalive = Esta opção é usada para verificar se existe algum cliente que travou. É representado por tempo em segundos, o valor padrão é 5 minutos (300s), podendo ser alterado segundo a necessidade. Para redes com poucas máquinas o valor 30 é uma boa opção, se ajustado com 0 não será verificado. • deadtime = Isto diz ao Samba para fechar todas seções de clientes inativos após 10 minutos, um cliente é considerado inativo quando não está enviando nem recebendo dados, o valor padrão é 0, que diz que nunca será fechado. • logon script = Especifica o script que será usado quando o usuário efetuar logon, a opção %U diz que os script possui o nome do usuário, ou seja, cada usuário teria um script. • logon path = Indica o diretório onde ficarão os scripts de logon, especificar um "logon path" sem caminho evita armazenar dados do usuário no servidor, além de não gerar mensagem de erro. • logon drive = Força o mapeamento do diretório home do usuário como unidade j: na máquina cliente, podendo ser trocado por qualquer outra letra que esteja disponível na máquina cliente. Especificar uma letra longe garante que o mapeamento será efetuado com sucesso. • domain logon = Determina se será permitido logon no Samba. Deve ser ajustado como yes. • os level = Esse valor é usado quando há uma disputa entre máquinas servidoras, especificar um valor alto garante que esse servidor vencerá a eleição caso seja realizada, garantindo sua prevalência. Máquinas Windows usam o valor 32. Um valor recomendado é 100. • prefered master = Se o Samba poderá efetuar uma eleição para o domain master. Deve ser ajustado como yes. • domain master = Especifica que será o servidor master do domino. Deve ser ajustado como yes. • security = A segurança será feita sobre os usuários, permitirá que o usuário faça logon em qualquer host da rede cadastrada no Samba. • socket options = Melhora o desempenho. • passwd program = Caminho para o binário responsável pela troca de senha, o padrão é /usr/bin/passwd %u, o %u é o nome do usuário. • passwd chat = Utilizado para trocar senha a partir da estação cliente Windows, juntamente com o passwd program.Na seção "netlogon" é onde ficarão os arquivos de lote, por exemplo, os scripts de logon dos usuários,ajustados na variável global "logon script". • comment = Breve comentário sobre esta seção. Não é necessário. • path = Caminho completo do diretório que irá conter os scripts. Certifique-se de que ele exista, podendo o administrador criar onde quiser, basta colocar o caminho aqui.
  • Debian para servidores 39 Carlos Melo • guest ok = Se será permitido acesso de visitantes. Ajustar como "yes". • browseable = Se esta seção será visível no ambiente de rede. Ajustar como "no". Após todas as configurações terem sido efetuadas, salve o arquivo e execute o comando: # testparm /etc/samba/smb.conf Ele irá verificar se existe erros no arquivo de configuração smb.conf. Acostume-se a usá-lo, é de grande eficiência.Exemplo do smb.conf configurado [global] workgroup = Domínio netbios name = SPDC server string = Samba PDC keepalive = 300 deadtime = 10 logon script = %U.bat logon path = logon drive = j: domain logons = yes os level = 100 prefered master = yes domain master = yes security = user socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192 passwd program = /usr/bin/passwd %u passwd chat = "*New*UNIX*password*" %nn "*Retype*new*UNIX*password*" %nn" *passwd:*all*authentication*tokens*updated*successfully*" [netlogon] comment = Servico de logon path = /etc/samba/netlogon guest ok = yes browseable = noAjustes finos (usuários, grupos, máquinas)Criando o diretório netlogon:# mkdir -p /etc/samba/netlogonAjustando permissão:# chmod 755 /etc/samba/netlogon
  • Debian para servidores 40 Carlos MeloCriando contas de usuário:Agora precisaremos criar as contas de usuários e de máquinas para que o objetivo seja atingido.Primeiramente cadastre o root no Samba:# smbpasswd -a rootCriando localmente os usuários que utilizaram o Samba:useradd -m -d < diretório de home real do usuário > -s /bin/false <nome do usuário>Ex:# useradd -m -d /home/homer -s /bin/false homerO usuário não necessita ter permissão para logar localmente e nem de um shell, sendo assim aumentando asegurança.Adicionando o usuário no Samba:# smbpasswd -a homerPara dar/obter permissão de administrador no domínio, é preciso criar um grupo e associá-lo ao grupo"Domain Admins", para isso basta executar o comando abaixo:Primeiro crie um grupo, para isso execute:# addgroup adminOnde admin será o grupo a ser criado pelo comando "addgroup", podendo ser qualquer nome. O próximopasso e associar o grupo criado ao grupo do Unix, para isso execute:# net groupmap modify ntgroup="Domain Admins" unixgroup=adminDepois basta adicionar os usuários que terão permissão de administrador (permissão total) ao grupo admin.Para adicionar um usuário, no momento de sua criação basta colocar a flag "-g" seguido do grupo, assim:# useradd -g admin -m -d /home/homer -s /bin/false homerCriando conta de máquina É necessário criar contas para as máquinas, os nomes devem ser os nomes reais das máquinas,encontrado em:Iniciar > Configurações > Painel de Controle > Sistema > Nome do ComputadorComo exemplo, supondo que a máquina a ser adicionada chame-se "depti01":# useradd -d /dev/null -s /bin/false depti01$Note que foi inserido o símbolo "$" na conta de máquina, isso é para aumentar a segurança. A fim de
  • Debian para servidores 41 Carlos Meloaumentar ainda mais a segurança trave à senha da conta:# passwd -l depti01$Adicionando a máquina no Samba: aqui não é necessário colocar o símbolo $, pois ela será identificada pelaflag "-m" de machine.# smbpasswd -a -m depti01Pronto, se até aqui tudo correu bem, seu servidor está pronto para ser usado. Não se esqueça de reiniciar oSamba para que todas alterações sejam aplicadas e também coloque-o para iniciar junto com o sistema.Verifique como fazer isso na sua distribuição.12.9 Criando script de logonUm exemplo de script de logon genérico para todos os usuários:net use h: SPDCpublico /yesnet time SPDC /set /yesnotepad.exeEsse arquivo tem de ser salvo com um nome qualquer com extensão .bat dentro de /etc/samba/netlogon e avariável "logon script" na seção global deve fazer referência a esse arquivo. Ex: logon script = logon.bat.Explicando o arquivo:net use nome_servidor nome_compartilhamento /opção, a opção diz se será persistente ou não, ou sejase ficará mapeado permanente ou não após o logoff.Explicando o exemplo, primeira linha faz com que o diretório público (não esqueça de criar ocompartilhamento) do servidor SPDC (nome configurado na variável global netbios name) seja mapeadocomo unidade h: na máquina cliente.A segunda linha sincroniza a hora do cliente com a hora do servidor SPDC (o servidor deve estar configurado,para isso ajuste a opção time server = yes).A terceira linha executa o notepad.exe toda vez que o logon for efetuado. Dica, use o notepad para criar estearquivo, para manter as quebras de linha no padrão Windows.Para personalizar o arquivo de acordo com cada usuário, basta criar o arquivo e salvá-lo com o nome deusuário e usar a opção %U na variável "logon script" na seção global. Ex: logon script = %U.bat e o arquivonome_usuário_no_sistema.bat.Configurando as estaçõesAntes de colocar as estações no domínio, é preciso alterar o registro do Windows. Para isso dentro da pastadescompactada do Samba (samba-3.0.23b), existe um diretório "docs" e dentro dele outro chamado"registry", que contem um arquivo para alteração do registro para cada sistema operacional. Ache o quecabe à sua necessidade, copie-o para estação cliente e execute-o. Dica: foi feito um teste com Windows XPProfissional sem efetuar essa alteração e funcionou corretamente.Agora basta colocar a estação no domínio, para isso faça:
  • Debian para servidores 42 Carlos MeloIniciar > Configurações > Painel de Controle > Sistema > Nome do Computador > AlterarE em domínio coloque o nome do domínio criado. O nome do domínio está na variável global do Samba,workgroup = Domínio.Se tudo correr bem, será exibida uma mensagem de boas vindas e necessitará reiniciar a máquina, no logonapós reiniciar, escolha opções >> e em "fazer logon em:" escolha o domínio criado. Caso contrário verifiqueas configurações anteriores. Dica: para verificar se o Samba está rodando utilize o comando "ps aux | grepsamba".13. Proxy: O Squid O Squid é um servidor proxy. Ele permite compartilhar a conexão entre vários micros, servindocomo um intermediário entre eles e a Internet. Usar um proxy é diferente de simplesmente compartilhar aconexão diretamente, via NAT. Ao compartilhar via NAT os micros da rede acessam a internet diretamente, sem restrições. Oservidor apenas repassa as requisições recebidas, como um garoto de recados. O proxy é como umburocrata que não se limita a repassar as requisições: ele analisa todo o tráfego de dados, separando o quepode ou não pode passar e guardando informações para uso posterior. Compartilhar a conexão via NAT é mais simples do que usar um proxy como o Squid sob váriosaspectos. Você compartilha a conexão no servidor, configura os clientes para o utilizarem como gateway epronto. Por exemplo, para compartilhar a conexão via NAT no Mandrake você usaria o "Compartilharconexão com a Internet" dentro do Painel de Controle e configuraria os clientes para usar o endereço IP doservidor (192.168.0.1 por exemplo) como gateway. No Carlos você usaria o ícone mágico no Iniciar > Internet> Compartilhar Conexão e Firewall. Ao usar um proxy, além da configuração da rede é necessário configurar o navegador e cada outroprograma que for acessar a internet em cada cliente para usar o proxy. Esta é uma tarefa tediosa e queacaba dando bastante dor de cabeça a longo prazo, pois cada vez que um micro novo for colocado na redeserá preciso fazer a configuração novamente. A configuração do proxy muda de navegador para navegador. No Firefox por exemplo você encontraem Editar > Preferências > Geral > Proxy. No IE a configuração está em Opções da Internet > Opções >Configurações da Lan > Usar um servidor Proxy.
  • Debian para servidores 43 Carlos Melo Além do navegador, outros programas, podem ser configurados para trabalhar através do proxy:Clientes de ICQ e MSN e até programas P2P.As vantagens de usar um proxy são basicamente três: 1- É possível impor restrições de acesso com base no horário, login, endereço IP da máquina e outras informações e bloquear páginas com conteúdo indesejado. 2- O proxy funciona como um cache de páginas e arquivos, armazenando informações já acessadas. Quando alguém acessa uma página que já foi carregada, o proxy envia os dados que guardou no cache, sem precisar acessar a mesma página repetidamente. Isso acaba economizando bastante banda na conexão com a Internet e tornando o acesso mais rápido sem precisar investir numa conexão mais rápida.Hoje em dia os sites costumam usar páginas dinâmicas, onde o conteúdo muda a cada visita, mas mesmonestes casos o proxy dá uma ajuda, pois embora o html seja diferente a cada visita, e realmente precise serbaixado de novo, muitos componentes da página, como ilustrações, banners e animações em flash podemser aproveitadas do cache, diminuindo o tempo total de carregamento. Dependendo da configuração, o proxy pode apenas acelerar o acesso às páginas, ou servir como umverdadeiro cache de arquivos, armazenando atualizações do Windows Update, downloads diversos epacotes instalados através do apt-get por exemplo. Ao invés de ter que baixar o Service Pack XYZ do
  • Debian para servidores 44 Carlos MeloWindows XP ou o OpenOffice nos 10 micros da rede, você vai precisar baixar apenas no primeiro, pois osoutros 9 vão baixar a partir do cache do squid. 3- Uma terceira vantagem de usar um proxy é que ele loga todos os acessos. Você pode visualizar os acessos posteriormente usando o Sarg, assim você sabe quem acessou quais páginas e em que horários. Mesmo assim, você pode estar achando que as vantagens não vão compensar o trabalho de sairconfigurando micro por micro, programa por programa para usar o proxy e é mais fácil simplesmentecompartilhar via NAT. Mas, existe a possibilidade de juntar as vantagens das formas de compartilhamento,configurando um proxy transparente como veremos adiante. Ao usar um proxy transparente, você tem basicamente uma conexão compartilhada via NAT, com amesma configuração básica nos clientes. O proxy entra na história como uma espécie add-on. Uma regra de firewall envia as requisições recebidas na porta 80 do servidor para o proxy, que seencarrega de responder aos clientes. Toda a navegação passa a ser feita automaticamente através do proxy(incluindo o negócio do cache dos arquivos do Windows update, downloads e do apt-get), sem que vocêprecise fazer nenhuma configuração adicional nos clientes.13.1 Instalando o SquidO Squid é composto de um único pacote, por isso a instalação é simples. Se estiver no Mandrake, instalecom um:# urpmi squidSe estiver no Debian ou outra distribuição baseada nele, use o apt-get:# apt-get install squid Toda a configuração do Squid é feita num único arquivo, o /etc/squid/squid.conf. Caso você esteja usando uma versão antiga do Squid, como a incluída no Debian Woody porexemplo, o arquivo pode ser o /etc/squid.conf. Apesar da mudança na localização do arquivo deconfiguração, as opções descritas aqui devem funcionar sem maiores problemas. O arquivo original, instalado junto com o pacote é realmente enorme, contém comentários eexemplos para quase todas as opções disponíveis. Ele pode ser uma leitura interessante se você já tem uma
  • Debian para servidores 45 Carlos Meloboa familiaridade com o Squid, mas de inicio é melhor começar com um arquivo de configuração maissimples, apenas com as opções mais usadas. Em geral cada distribuição inclui uma ferramenta diferente para a configuração do Proxy, como oícone mágico que incluí no Carlos. Uma das mais usadas é o Webmin. A função destas ferramentas é disponibilizar as opções atravésde uma interface gráfica e gerar o arquivo de configuração com base nas opções escolhidas. Em alguns casos estas ferramentas ajudam bastante, mas como elas mudam de distribuição paradistribuição, é mais produtivo aprender a trabalhar direto no arquivo de configuração, que não é tãocomplicado assim.Re-nomeie o arquivo padrão:# mv /etc/squid/squid.conf /etc/squid/squid.conf.olde crie um novo arquivo /etc/squid/squid.conf, com apenas as quatro linhas abaixo:-------- http_port 3128 visible_hostname carlos acl all src 0.0.0.0/0.0.0.0 http_access allow all--------Estas linhas são o suficiente para que o Squid "funcione". Como você percebeu, aquele arquivo deconfiguração gigante tem mais uma função informativa, citando e explicando as centenas de opçõesdisponíveis. As quatro linhas dizem o seguinte:- http_port 3128: A porta onde o servidor vai ficar disponível- visible_hostname carlos: O nome do servidor- acl all src 0.0.0.0/0.0.0.0 e http_access allow all: Estas duas linhas criam uma acl (uma política de acesso)chamada "all" (todos) incluindo todos os endereços IP possíveis e permite que qualquer um dentro destalista use o proxy. Ou seja, ela permite que qualquer um use o proxy, sem limitações.Para testar o Squid, habilite o servidor com o comando:# service squid startSe você estiver no Debian, use o comando:# /etc/init.d/squid startSe estiver no Slackware, o comando será:# /etc/rc.d/rc.squid startConfigure um navegador, no próprio servidor para usar o proxy, através do endereço 127.0.0.1 (o localhost),porta 3128 e teste a conexão.Se tudo estiver ok você conseguirá acessar o proxy também através dos outros micros da rede local, bastaconfigurar os navegadores para usarem o proxy.Criando uma configuração básicaO problema é que com apenas estas quatro linhas o proxy está muito aberto. Se você deixar o servidor proxyativo no próprio servidor que compartilha a conexão e não tiver nenhum firewall ativo, alguém na Internetpoderia usar o seu proxy, o que naturalmente não é desejado. O proxy deve ficar ativo apenas para a redelocal. Vamos gerar então um arquivo mais completo, permitindo que apenas os micros da rede local possamusar o proxy e definindo mais algumas políticas de segurança.Aqui eu já aproveitei algumas linhas do arquivo original, criando regras que permitem o acesso a apenasalgumas portas, e não a qualquer coisa como antigamente:-------- http_port 3128 visible_hostname carlos acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255
  • Debian para servidores 46 Carlos Melo acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all--------Veja que agora criei duas novas acls. A acl "localhost" contém o endereço 127.0.0.1, você usa para usar oproxy localmente, a partir do próprio servidor e a acl "rede local" que inclui os demais micros da rede local.Você deve substituir o " 192.168.1.0/24" pela a faixa de endereços IP e a máscara de sub-rede usada na suarede local (o 24 equivale à mascara 255.255.255.0).Depois de criadas as duas políticas de acesso, vão duas linhas no final do arquivo que especificam que osmicros que se enquadrarem nelas vão poder usar: http_access allow localhost http_access allow redelocalLembra-se da acl "all", que contém todo mundo? Vamos usa-la para especificar que quem não se enquadrarnas duas regras acima (ou seja, micros não autorizados, da internet) não poderá usar o proxy: http_access deny allEsta linha deve ir no final do arquivo, depois das outras duas. O ordem é importante, pois o squid interpretaas regras na ordem em que são colocadas no arquivo. Se você permite que o micro X acesse o proxy, eleacessa, mesmo que uma regra mais abaixo diga que não.Se você adicionasse algo como: acl redelocal src 192.168.1.0/24 http_access allow redelocal http_access deny redelocalOs micros da rede local continuariam acessando, pois a regra que permite vem antes da que proíbe.Configurando o cache de páginas e arquivos Outra coisa importante é configurar o cache do proxy. O squid trabalha com dois tipos de cache:
  • Debian para servidores 47 Carlos Melo 1-Um cache rápido, feito usando parte da memória RAM do servidor; 2- Um cache um pouco mais lento porém maior, feito no HD O cache na memória RAM é ideal para armazenar arquivos pequenos, como páginas html e imagens,que serão entregues instantaneamente para os clientes. O cache no HD é usado para armazenar arquivosmaiores, como downloads, arquivos do Windows update e pacotes baixados pelo apt-get. O cache na memória RAM é sempre relativamente pequeno. Num servidor não dedicado ou seja,uma máquina que é usada para fazer outras coisas, mas roda também o proxy, você vai reservar coisa de 16ou 32 MB de RAM para o cache, para evitar que o cache do squid assuma toda a memória RAM deixando omaquina lenta. Se você tiver uma rede muito grande e preferir deixar um micro dedicado apenas para o Squid,então o cache pode ter até 1/3 da memória RAM do servidor. Não caia no erro de reservar quase toda aRAM para o cache, pois além do cache, o sistema vai precisar de memória para fazer outras coisas. O cache no HD pode ser mais generoso, afinal a idéia é que ele guarde todo tipo de arquivos,principalmente os downloads grandes, que demoram em ser baixados. A única limitação neste caso é oespaço livre no HD. A configuração da quantidade de memória RAM dedicada ao cache é feita adicionando a opção"cache_mem", que contém a quantidade de memória que será dedicada ao cache. Para reservar 32 MB, porexemplo, a linha ficaria: cache_mem 32 MB Abaixo vai mais uma linha, que determina o tamanho máximo dos arquivos que serão guardados nocache feito na memória RAM. O resto vai para o cache feito no HD. O cache na memória é muito maisrápido, mas como a quantidade de RAM é muito limitada, melhor deixa-la disponível para páginas web,figuras e arquivos pequenos em geral. Para que o cache na memória armazene arquivos de até 64 KB porexemplo, adicione a linha: maximum_object_size_in_memory 64 KB Em seguida vem a configuração do cache em disco, que armazenará o grosso dos arquivos. Pordefault, o máximo são downloads de 16 MB e o mínimo é zero, o que faz com que mesmo imagens earquivos pequenos sejam armazenados no cache. Sempre é mais rápido ler a partir do cache do que baixarde novo da web, mesmo que o arquivo seja pequeno. Se você faz download de arquivos grandes e deseja que eles fiquem armazenados no cache,aumente o valor da opção maximum_object_size Isto é especialmente útil para quem precisa baixar muitosarquivos através do apt-get ou Windows update em muitos micros da rede. Se você quiser que o cachearmazene arquivos de até 512 MB por exemplo, as linhas ficariam: maximum_object_size 512 MB minimum_object_size 0 KB Você pode definir ainda a percentagem de uso do cache que fará o squid começar a descartar osarquivos mais antigos. Por padrão isso começa a acontecer quando o cache está 90% cheio: cache_swap_low 90 cache_swap_high 95 Depois vem a configuração do tamanho do cache em disco propriamente dita, que é composta porquatro valores. O primeiro, (/var/spool/squid) indica a pasta onde o squid armazena os arquivos do cache.Você pode querer alterar para uma pasta em uma partição separada por exemplo.
  • Debian para servidores 48 Carlos Melo O "2048" indica a quantidade de espaço no HD (em MB) que será usada para o cache. Aumente ovalor se você tem muito espaço no HD do servidor e quer que o squid guarde os downloads por muitotempo. Finalmente, os números 16 256 indicam a quantidade de subpastas que serão criadas dentro dodiretório. Por padrão temos 16 pastas com 256 subpastas cada uma. cache_dir ufs /var/spool/squid 2048 16 256 Você pode definir ainda o arquivo onde são guardados os logs de acesso do Squid. Por padrão osquid guarda o log de acesso no arquivo /var/log/squid/access.log. Este arquivo é usado pelo sarg para geraras páginas com as estatisticas de acesso. cache_access_log /var/log/squid/access.log Mais uma configuração que você pode querer alterar é o padrão de atualização do cache. Estas trêslinhas precisam sempre ser usadas em conjunto. Ou seja, você pode alterá-las, mas sempre as três precisamestar presente no arquivo. Eliminando um, o squid ignora as outras duas e usa o default. Os números indicam o tempo (em minutos) quando o squid irá verificar se um ítem do cache (umapágina por exemplo) foi atualizado, para cada um dos três protocolos. O primeiro número (o 15) indica que o squid verificará se todas as páginas e arquivos com mais de15 minutos foram atualizados. Ele só verifica checando o tamanho do arquivo, o que é rápido. Se o arquivonão mudou, então ele continua mandando o que não está no cache para o cliente. O terceiro número (o 2280, equivalente a dois dias) indica o tempo máximo, depois disso o objeto ésempre verificado. Além do http e ftp o Squid suporta o protocolo Gopher, que era muito usado nosprimórdios da Internet para localizar documentos de texto, mas perdeu a relevância hoje em dia: refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280Depois de adicionar estas configurações todas, o nosso arquivo de configuração já ficará bem maior:-------- http_port 3128 visible_hostname carlos cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports
  • Debian para servidores 49 Carlos Melo acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all Aqui já temos uma configuração mais completa, incluindo um conjunto de regras de segurança, paraque o proxy seja usado apenas a partir da rede local e a configuração do cache, uma configuração adequadapara uso numa rede doméstica ou um pequeno escritório por exemplo.Numa rede maior você provavelmente iria querer adicionar algumas limitações de acesso, limitando oacesso a algumas páginas, criando um sistema de autenticação ou limitando o uso com base no horário porexemplo.Adicionando restrições de acessoNum ambiente de trabalho, a idéia é que os funcionários usem a internet para comunicação, pesquisa eoutras funções relacionadas ao que estão fazendo. Algumas empresas permitem que acessem os e-mailspessoais e coisas assim, mas sempre até um certo limite. Seu chefe não vai gostar se começarem a passar amaior parte do tempo no Orkut por exemplo.Bloqueando por palavras ou domínios Uma forma fácil de bloquear sites no Squid é criar uma lista de palavras, um arquivo de texto ondevocê adiciona palavras e domínios que serão bloqueados no Squid. Bloquear um determinado domínio, como por exemplo "orkut.com" não gera muitos problemas,mas tome cuidado ao bloquear palavras específicas, pois o Squid passará a bloquear qualquer página quecontenha a palavra em questão.Se você bloquear a palavra "sexo" por exemplo, qualquer site ou artigo que mencione a palavra serábloqueado. Ao bloquear por palavras você deve tentar ser específico, bloqueando apenas jargões eexpressões que são encontradas apenas nos sites que você pretende bloquear. Para adicionar o filtro depalavras, adicione as linhas:acl proibidos dstdom_regex "/etc/squid/proibidos"http_access deny proibidosAqui estamos criando uma acl chamada "proibidos" que é gerada a partir da leitura do arquivo"/etc/squid/proibidos", o arquivo de texto que iremos editar. O acesso a qualquer página que contenhapalavras citadas no arquivo é bloqueada.O arquivo deve conter as palavras e domínios bloqueados, um por linha:
  • Debian para servidores 50 Carlos MeloDepois criar o arquivo e adicionar as duas linhas no arquivo de configuração do squid, reinicie o serviço comum:# service squid restartou# /etc/init.d/squid/restartA partir daí o bloqueio de palavras entra em ação e os clientes passam a ver uma mensagem de erro aotentar acessar a página: Este filtro de palavras pode levar a alguns erros inesperados. Se você o usa para bloquear o site"orkut.com" por exemplo, os usuários não conseguirão ler por exemplo um artigo da Superinteressante quecita o endereço do site. Existe uma opção mais adequada para o bloqueio de domínios, que é criar uma acl usando oparâmetro "dstdomain". Veja um exemplo: acl bloqueados dstdomain orkut.com playboy.abril.com.brastalavista.box.skhttp_access deny bloqueados
  • Debian para servidores 51 Carlos Melo Aqui eu criei uma acl chamada "bloqueados" que contém os endereços "orkut.com""playboy.abril.com.br" e "astalavista.box.sk" e me seguida incluí a regra "http_access deny bloqueados" quebloqueia o acesso a eles. Aqui estamos sendo mais específicos. Ao invés de bloquear o termo "orkut.com" o squid vaibloquear apenas o acesso ao domínio em questão. Existe uma última ressalva: alguns sites, como o orkut.com podem ser acessados tanto com o wwwquanto sem. Para o squid, "www.orkut.com" e "orkut.com" são duas coisas diferentes. Bloqueando o"orkut.com" os usuários ainda conseguirão acessar o site através do "www.orkut.com". Para bloquearambos, é preciso incluir as duas possibilidades dentro da regra, como em:acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.brhttp_access deny bloqueados Você pode incluir quantos domínios quiser dentro da regra, basta separá-los por espaço e deixartudo na mesma linha. Não existe problema em combinar a regra que cria o filtro de palavras com esta quefiltra baseado no domínio, você pode apelar para uma ou outra de acordo com a situação.Depois de adicionar as novas regras, nosso arquivo de configuração ficaria assim:-------- http_port 3128 visible_hostname carlos cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports
  • Debian para servidores 52 Carlos Melo acl proibidos dstdom_regex "/etc/squid/proibidos" http_access deny proibidos acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all--------Veja que coloquei as duas regras antes do "http_access allow redelocal", que abre tudo para a rede local.Como o squid processa as regras seqüencialmente, as páginas que forem bloqueadas pelas duas regras nãochegarão a passar pela seguinte.Bloqueando por horário Estas regras fazem com que o proxy recuse conexões feitas dentro de determinados horários. Vocêpode definir regras períodos específicos e combiná-las para bloquear todos os horários em que você nãoquer que o proxy seja usado. Para que o proxy bloqueie acessos feitos entre meia-noite e 6:00 da manhã e no horário de almoçopor exemplo, você usaria as regras:acl madrugada time 00:00-06:00http_access deny madrugadaacl almoco time 12:00-14:00http_access deny almocoEstas regras iriam novamente antes da regra "http_access allow redelocal" no arquivo de configuração.Agora imagine que você quer fazer diferente. Ao invés de bloquear o acesso na hora de almoço, você querdeixar o proxy aberto, para quem quiser ir no orkut ou acessar os e-mails poder fazer isso fora do horário detrabalho. Neste caso você usaria uma regra como:acl almoco time 12:00-14:00http_access allow almoçoEsta regra entraria no arquivo de configuração antes das regras "http_access deny proibidos" e "http_accessdeny proibidos". Assim, os acessos que forem aceitos pela regra do almoço, não passarão pelas regras quefazem o bloqueio.Proxy com autenticaçãoVocê pode adicionar uma camada extra de segurança exigindo autenticação no proxy. Este recurso pode serusado para controlar quem tem acesso à Internet e auditar os acessos em caso de necessidade.Quase todos os navegadores oferecem a opção de salvar a senha.
  • Debian para servidores 53 Carlos MeloPara ativar a autenticação você vai precisar de u programa chamado "htpasswd". Se ele não estiverpresente, instale o pacote apache-utils:Em seguida crie o arquivo que será usado para armazenar as senhas:# touch /etc/squid/squid_passwdCadastre os logins usando o comando:# htpasswd /etc/squid/squid_passwd carlos(onde o "carlos" é o usuário que está sendo adicionado)Depois de terminar de cadastrar os usuários, adicione as linhas que ativam a autenticação no/etc/squid/squid.conf: auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados O "/usr/lib/squid/ncsa_auth" é a localização da biblioteca responsável pela autenticação.Eventualmente, ela pode estar numa pasta diferente dentro da distribuição que estiver usando. Neste casouse o "locate" ou a busca do KDE para encontrar o arquivo e altere a linha indicando a localização correta.Estas três linhas criam uma acl chamada "autenticados" (poderia ser outro nome), que contém os usuáriosque se autenticarem usando um login válido.Configurando um proxy transparente Uma garantia de que os usuários realmente vão usar o proxy e ao mesmo tempo uma grandeeconomia de trabalho e dor de cabeça pra você é o recurso de proxy transparente.Ele permite configurar o Squid e o firewall de forma que o servidor proxy fique escutando todas as conexõesna porta 80. Mesmo que alguém tente desabilitar o proxy manualmente nas configurações do navegador,ele continuará sendo usado. Outra vantagem é que este recurso permite usar o proxy sem precisar configurar manualmente oendereço em cada estação. Basta usar o endereço IP do servidor rodando o proxy como gateway da rede.Lembre-se que para usar o proxy transparente, você já deve estar compartilhando a conexão no servidor, vianat. O proxy transparente apenas fará com que o proxy intercepte os acessos na porta 80, obrigando tudo apassar pelas suas regras de controle de acesso, log, autenticação e cache.Se você ainda não compartilhou a conexão, pode fazer isso manualmente rodando estes três comandos:
  • Debian para servidores 54 Carlos Melo# modprobe iptable_nat# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE# echo 1 > /proc/sys/net/ipv4/ip_forward O "eth1" na segunda linha, indica a placa que está conectada na Internet e será compartilhada. Vocêpode checar a configuração da rede usando o comando "ifconfig" (como root). Nem todas as distribuiçõesinstalam o iptables por padrão. No Mandrake por exemplo, pode ser necessário rodar primeiro um "urpmiiptables". Em seguida, rode o comando que direciona as requisições recebidas na porta 80 para o squid.# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128O "eth0" neste quarto comando indica a placa da rede local, onde o proxy recebe as requisições dos outrosmicros da rede e o "3128" indica a porta usada pelo squid.Adicione os quatro comandos no final do arquivo /etc/rc.d/rc.local ou /etc/init.d/bootmisc.sh (no Debian)para que eles sejam executados durante o boot. Em resumo, você vai ter a conexão compartilhada via Nat no servidor e configurará os clientes paraacessar através dela, colocando o servidor como gateway da rede. Ao ativar o proxy transparente, aconfiguração dos clientes continua igual, a única diferença é que agora todo o tráfego da porta 80 passaráobrigatoriamente pelo servidor Squid. Isso permite que você se beneficie do log dos acessos e do cache feito pelo proxy, sem ter que sesujeitar às desvantagens de usar um proxy, como ter que configurar manualmente cada estação.Depois de adicionar a regra que libera o acesso na hora do almoço, ativar a autenticação e o proxytransparente, nosso arquivo vai ficar assim:-------- http_port 3128 visible_hostname carlos # Configuração do cache cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 # Localização do log de acessos do Squid cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports
  • Debian para servidores 55 Carlos Melo acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Libera acessos na hora do almoço acl almoco time 12:00-14:00 http_access allow almoco # Filtros por palavras e por dominios acl proibidos dstdom_regex "/etc/squid/proibidos" http_access deny proibidos acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados # Autenticação dos usuários auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados # Libera para a rede local acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal # Bloqueia acessos externos http_access deny all # Proxy transparente httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on--------Usando o Sarg para monitorar o acesso O Sarg é um interpretador de logs para o Squid, assim como o Webalizer e o Apache. Sempre queexecutado ele cria um conjunto de páginas, divididas por dia, com uma lista de todas as máquinas que foramacessadas e a partir de cada máquina da rede veio cada acesso.Caso você tenha configurado o Squid para exigir autenticação. , ele organiza os acessos com base nos loginsdos usuários, caso contrário ele mostra os endereços IP das máquinas.A partir daí você pode acompanhar as páginas que estão sendo acessadas, mesmo que não exista nenhumfiltro de conteúdo e tomar as medidas cabíveis em casos de abuso. Todos sabemos que os filtros deconteúdo nunca são completamente eficazes, eles sempre bloqueiam algumas páginas úteis e deixam passarmuitas páginas impróprias. Se você tiver algum tempo para ir acompanhando os logs, a inspeção manual ésempre o método mais eficiente. A partir daí você pode ir fazendo um trabalho incremental, de irbloqueando uma a uma páginas onde os usuários perdem muito tempo, ou fazer algum trabalho educativo,explicando que os acessos estão sendo monitorados e estabelecendo algum tipo de punição para quem
  • Debian para servidores 56 Carlos Meloabusar. Aqui está um exemplo do relatório gerado pelo Sarg. Por padrão ele gera um conjunto de páginashtml dentro da pasta /var/www/squid-reports/ (ou /var/www/html/squid/, no Mandrake) que você podevisualizar através de qualquer navegador. Os acessos são organizados por usuário (caso esteja usandoautenticação) ou por IP, mostrando as páginas acessadas por cada um, quantidade de dados transmitidos,tempo gasto em cada acesso, tentativas de acesso bloqueadas pelos filtros de conteúdo e outrasinformações.Colocar um relatório do sargO Sarg é incluído na maioria das distribuições atuais, em alguns casos instalado por padrão junto com oSquid.No Debian e derivados ele pode ser instalado com um:# apt-get install sargNo Mandrake um "urpmi sarg" já resolve. Depois de instalado, basta chamar o comando "sarg" (como root)para que os relatórios sejam geradas automaticamente a partir do log do squid. O Sarg não é um daemonque fica residente, você precisa apenas chama-lo quando quiser atualizar os relatório, se você quiserautomatizar esta tarefa, pode usar o cron para que ele seja executado automaticamente todos os dias ouuma vez por hora por exemplo.Você pode alterar a pasta onde são salvos os relatórios, limitar o acesso às estatíticas e alterar várias opçõescosméticas no arquivo de configuração do Sarg, que é o /etc/sarg/sarg.conf (no Mandrake) ou/etc/squid/sarg.conf (no Debian).O arquivo é auto-explicativo, nele você pode alterar os diretórios padrões, alterar o layout da Outrorecurso interessante é o envio de uma cópia do relatório por e-mail sempre que o sarg for executado.14. SSHO SSH não passa de um serviço parecido com telnet e ftp, a única diferença entre eles está nasegurança. O SSH envia dados criptografados e dependendo da sua configuração, pode implantarautenticação de chaves, por isso ele se torna uma ótima opção em relação aos outros que enviamdados em texto puro, dificultando facilitando ataque de spoofing e snifers.InstalaçãoA maioria das distribuições UNIX-Like costuma vir com SSH, mas se a sua não vier, baixe.Slackware:ftp://ftp.pangeia.com.br/pub/seg/pac/openssh-1.2.1pre25.tar.gzDescompacte e execute:# ./configure# make# make install
  • Debian para servidores 57 Carlos MeloNo Gentoo:# emerge opensshOu no Debian:# apt-get ou aptitude install opensshSimples e fácil né :)Editando o sshd_configO arquivo sshd_config nada mais é que o arquivo de configuração do seu servidor SSH. Vamosentender um pouco sobre ele e sua opções.# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $# This is the sshd server system-wide configuration file. See# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin# The strategy used for options in the default sshd_config shipped with# OpenSSH is to specify options with their default value where# possible, but leave them commented. Uncommented options change a# default value.Port 22 # escolha a porta de onde o seu servidor receberá as conexõesProtocol 2 # protocolo a ser usado pelo servidor#ListenAddress 0.0.0.0 # opção no qual você escolhe a interface que o# servidor SSH operará#ListenAddress ::# HostKey for protocol version 1#HostKey /etc/ssh/ssh_host_key# HostKeys for protocol version 2HostKey /etc/ssh/ssh_host_rsa_key # local que armazenará a chave "rsa" que criaremos logoadianteHostKey /etc/ssh/ssh_host_dsa_key # local que armazenará a chave "dsa" que criaremos logo adiante
  • Debian para servidores 58 Carlos Melo# Lifetime and size of ephemeral version 1 server keyKeyRegenerationInterval 1h # tempo para o seu servidor criar novas chavesServerKeyBits 768 #tamanho da chave,quanto maior é melhor# Logging# obsoletes QuietMode and FascistLoggingSyslogFacility AUTH # nível de detalhamento das mensagens exibidas nos logsLogLevel INFO # define opção de mensagens dos logs# Authentication:LoginGraceTime 2m # estabelece tempo por inatividade na conexão SSHPermitRootLogin yes # essa opção define se o usuário root pode ou não se conectar via SSH noservidorStrictModes yes # é bom ativar essa opção para o servidor detectar se as chaves estão com comsuas permissões adequadas, ou seja, seguras#MaxAuthTries 6RSAAuthentication yes # ativa autenticação através da chave rsaPubkeyAuthentication yes # ativa opção através da chave pubkey, ou seja, chaves públicasAuthorizedKeysFile .ssh/authorized_keys # cria um arquivo para autorizar entrada dos usuários noservidor# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts#RhostsRSAAuthentication no# similar for protocol version 2#HostbasedAuthentication no# Change to yes if you dont trust ~/.ssh/known_hosts for# RhostsRSAAuthentication and HostbasedAuthentication#IgnoreUserKnownHosts no# Dont read the users ~/.rhosts and ~/.shosts files#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!PasswordAuthentication yes # permite autenticação de chaves com senhasPermitEmptyPasswords no # permite ou não a opção de senhas em branco# Change to no to disable s/key passwords#ChallengeResponseAuthentication yes# Kerberos options ##KerberosAuthentication no#KerberosOrLocalPasswd yes
  • Debian para servidores 59 Carlos Melo#KerberosTicketCleanup yes#KerberosGetAFSToken no# GSSAPI options#GSSAPIAuthentication no#GSSAPICleanupCredentials no# Set this to yes to enable PAM authentication, account processing,# and session processing. If this is enabled, PAM authentication will# be allowed through the ChallengeResponseAuthentication mechanism.# Depending on your PAM configuration, this may bypass the setting of# PasswordAuthentication, PermitEmptyPasswords, and# "PermitRootLogin without-password". If you just want the PAM account and# session checks to run without PAM authentication, then enable this but set# ChallengeResponseAuthentication=no#UsePAM no#AllowTcpForwarding no#GatewayPorts no#X11Forwarding no#X11DisplayOffset 10#X11UseLocalhost yesPrintMotd yes # exibe o /etc/motd quando conectado ou não#PrintLastLog yes#TCPKeepAlive yesUseLogin yes # especifica que o usuário tem que logar no sistema em qual se conectará#UsePrivilegeSeparation yes#PermitUserEnvironment noCompression yes # define se os dados serão comprimidos ou não#ClientAliveInterval 0#ClientAliveCountMax 3#UseDNS yes#PidFile /var/run/sshd.pid#MaxStartups 10# no default banner path#Banner /some/path# override default of no subsystemsSubsystem sftp /usr/libexec/sftp-server # ativa o sftp-server, servidor ftp com criptografiaAdicionando chaves para os usuáriosCada usuário capaz de efetuar login remotamente pode criar suas próprias chaves, que serãogravadas no seu diretório ~/.ssh.
  • Debian para servidores 60 Carlos Melo$ ssh-keygen -t dsaPedirá um nome para chave (recomendo deixar como padrão). Em seguida o prompt irá pedir umasenha.$ ssh-keygen -t rsa Pedirá um nome para chave (recomendo dexar como padrão). Em seguida oprompt irá pedir uma senha.Relembrando, serão criadas quatro chaves: • Chaves privadas: nome_ da_ chave.rsa e nome_da_chave.dsa. • Chaves públicas: nome_da_chave_rsa.pub e nome_da_chave_dsa.pub .Depois execute o daemon sshd, recomendo executar o comando com caminho completo:# /usr/sbin/sshd -DConfiguração do clienteO cliente no caso é o usuário da maquina que acessará o usuário do servidor.Edite o arquivo ssh_config:# $OpenBSD: ssh_config,v 1.19 2003/08/13 08:46:31 markus Exp $# This is the ssh client system-wide configuration file. See# ssh_config(5) for more information. This file provides defaults for# users, and the values can be changed in per-user configuration files# or on the command line.# Configuration data is parsed as follows:# 1. command line options# 2. user-specific file# 3. system-wide file# Any configuration value is only changed the first time it is set.# Thus, host-specific definitions should be at the beginning of the# configuration file, and defaults at the end.# Site-wide defaults for various options# Host *# ForwardAgent no# ForwardX11 no# RhostsRSAAuthentication no
  • Debian para servidores 61 Carlos MeloRSAAuthentication yes # opção que define autenticação da chave ou nãoPasswordAuthentication yes # define se autentica o passwd das chaves#HostbasedAuthentication no#BatchMode noCheckHostIP yes # checa o ip do servidor#AddressFamily any#ConnectTimeout 0#StrictHostKeyChecking askIdentityFile ~/.ssh/identity # define o nome e o local da chave rsaIdentityFile ~/.ssh/id_rsa # define o nome e o local da chave rsaIdentityFile ~/.ssh/id_dsa # define o nome e o local da chave rsaPort 2222 # número da porta onde o cliente se conectará com servidor (tem que ser a mesma quea do servidor)Protocol 2 # número do protocolo (tem que ser o mesmo protocolo do servidor)#Cipher 3des#Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc#EscapeChar ~Adicionando chaves:$ ssh-keygen -t dsaNome é como padrão definido no arquivo ssh_config. Pedirá senha de autenticação.$ ssh-keygen -t rsaNome é como padrão definido no arquivo ssh_config. pedirá senha de autenticaçãoRelembrando, vão surgir quatro chaves, duas públicas (.pub) e duas privadas: • Chaves privadas: nome_da_chave.rsa e nome_da_chave.dsa; • Chaves públicas: nome_da_chave_rsa.pub e nome_da_chave_dsa.pub.Agora vamos criar o arquivo identity, é só fazer isso:# cat ~/.ssh/ nome_da_chave.rsa > ~/.ssh/identityAgora para você ter permissão de se conectar ao servidor basta adicionar sua chave pública noservidor. Existem dois jeitos de fazer isso.Você pega em um disquete ou manda sua chave pública pela rede até o servidor e inclui ela no
  • Debian para servidores 62 Carlos Meloarquivo authorized_keys (se não tiver o arquivo authorized_keys, crie-o no seu ~/.ssh/) com ocomando:# cat suachavepublica.pub > usuario_que_será_logado_remotamente/.ssh/authorized_keysou pelo comando:# scp ~/.ssh/chave_publiva_do_cliente.pubusuario_a_ser_logado@nome_ou_ip_do_seu_servidor:~/.ssh/authorized_keysE pronto, agora é só se conectar.# ssh usuario_a_ser_logado@nome_ou_ip_do_seu_servidorSe conectou beleza, se deu erro execute:# ssh -v usuario_a_ser_logado@nome_ou_ip_do_seu_servidorE veja o erro que ocorreu.ssh-add e ssh-agentExecute ssh-agent:# ssh-agentAparecerão várias variáveis. Execute elas no seu terminal favorito e depois execute ssh-add:# ssh-adde registre seu cliente.Depois é só correr para o abraço =)Usando o sftpO sftp é uma ótima ferramenta que funciona junto com SSH. É similar ao FTP, porém usa a portado SSH e transmite os dados com criptografia. Para conectar use:# sftp usuario@servidorAlguns comandos sftp: • lcd - semelhante ao cd;
  • Debian para servidores 63 Carlos Melo • lpwd - semelhante ao pwd; • put - fazer upload de arquivo; • help - lista os comandos disponíveis.Autoria: Leandro e Leonardo Totino PereiraConfigurando o bind 9 no DebianInstalando o Bind 9Primeiro passo é baixar e instalar o Bind 9:# apt-get install bind9Para verificar se o bind está rodando, digite:$ ps -aux | grep namedCaso não esteja rodando ainda, digite:# /etc/init.d/bind9 startConfigurando o named.confAgora vamos aos arquivos de configuração. Todos os arquivos se encontram no diretório/etc/bind.Primeiro você deve editar o arquivo named.conf, onde estão todas as zonas que no caso são osendereços de sites pela qual a máquina vai responder.Você deverá incluir a seguinte linha no arquivo named.conf:zone "seusite.com.br" { type master; file "db.seusite.com.br";};Exemplo:zone "luis.com.br" { type master; file "db.luis.com.br";};O próximo passo será criar o arquivo db.seusite.com.br.
  • Debian para servidores 64 Carlos MeloCriando o arquivo db.seusite.com.br Aqui ficarão as configurações do seu endereço!; IN significa internet;Arquivo que representa a zona "seusite.com.br";$TTL 604800@ IN SOA seusite.com.br. seusite.com.br. ( 2004111700 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS lf02m09@ IN MX 10 seusite.com.br.lf02m09 IN A ipdasuamaquinawww IN CNAME nomedamaquinaftp IN CNAME nomedamaquina// agora é so você adicionar os outros registros desejados// exemplo://ssh IN CNAME nomedamaquinaExemplo do luis.com.br:; IN significa internet;Arquivo que representa a zona "luis.com.br";$TTL 604800@ IN SOA luis.com.br. root.luis.com.br. ( 2004111700 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS lf02m09@ IN MX 10 luis.com.br.lf02m09 IN A 200.210.215.30www IN CNAME lf02m09ftp IN CNAME lf02m09Kaue IN A 200.210.215.29
  • Debian para servidores 65 Carlos MeloTestando o servidorPara checar as configurações digite:# named-checkconfPara checar as zonas digite:# named-chekzone db.seusite.com.brPara reiniciar digite:# /etc/init.d/bind9 restartPara testar se está tudo funcionando use o nslookup:$ nslookup> server nomedasuamaquina> www.seusite.com.brSe aparecer o IP da sua máquina está tudo certo!Adicionando servidor escravoEm outra máquina que esteja instalado o bind, coloque essas configurações para que ela sejaservidor escravo:No arquivo named.conf:zone "seusite.com.br" { type slave; masters {ipdoservidormestre;}; file "db.seusite.com.br";};O servidor escravo irá criar sozinho o arquivo db.seusite.com.br.