Vous êtes sur la page 1sur 60

O que Linux?

Antes de iniciarmos o estudo propriamente dito no Debian, extremamente importante conhecer a histria do sistema operacional, levando em conta suas qualidades (e defeitos) e sua evoluo ao longo dos anos. Para um bom usurio do sistema, saber um pouco mais da histria do sistema torna-se necessidade praticamente indispensvel quem pretende trabalhar com o sistema ou incorporar sua filosofia de trabalho.

Origem do nome Linux


O nome Linux surge da juno do nome do criador do sistema, Linus Torvalds e Unix, sistema operacional de grande porte com bastante estabilidade e confiana. Para entender o porque da juno destes nomes, nada mais justo que entender um pouco da histria do Unix. Linus Torvalds

Breve histria do Unix


O projeto tinha como parceiros conjuntos, o MIT (Instituto de Tecnologia de Massachusets), GE (General Eletric) , Bell Labs (Laboratrio Bells) e AT&T (American Telephone na Telegraph). O projeto tinha um objetivo muito importante, a interao de vrios usurios em um nico sistema (multiusurio). O avano do sistema permitiu que o Multics rodasse em um computador GE645. Outro ponto importante da histria foi construo do

sistema Unix na linguagem de alto nvel "C", desenvolvida por Dennis Ritche. Ele mesmo engajou-se na tarefa de reescrever todo o sistema Unix para a nova linguagem. Tal fato tem como conseqncia atual o alto grau de fama da linguagem "C". O sistema Unix passou por

alteraes em 1977 e 1981 (lanamento do System III), que marcou o lanamento publico do sistema fora dos laboratrios Bells.

Confira um resumo da histria do Unix at os dias atuais no quadro abaixo:

Quadro evolutivo do Unix

Entendendo a relao entre Unix e Linus


Como voc j conheceu a histria do Unix, fica mais fcil entender a relao de Linus e o Minix, um derivado gratuito do Unix, porm com cdigo fonte aberto. Apesar de ser similar ao Unix, o Minix foi todo reescrito, no utilizando nenhum cdigo da AT&T, proprietria na poca do Unix. Linus Torvalds em 1991 era estudante de Cincias da Computao na Universidade de Helsinki, na Finlndia e a sua deciso de desenvolver um sistema mais poderoso e adequado sua realidade o levou a divulgar uma mensagem na Usenet (antecessor da Internet). Sendo assim, surgiu o Linux, baseado em muitas idias j existentes no Minix. A partir da, o sistema foi gradativamente ganhando espao entre os estudantes, e por fim entre o pblico comum e as empresas, que viam na possibilidade de utilizar o sistema nas mais variadas tarefas, e o mais importante: a gratuidade do sistema. Se fossemos definir o Linux, diramos que um sistema operacional livre, com reimplementao das especificaes POSIX (patronizao da IEEE, Instituto de Engenharia Eltrica e Eletrnica) para sistemas com

extenses System V e BSD. Ou seja, Linux parecido com Unix, mas no vem do mesmo lugar e foi escrito de outra maneira. Linux no incio - Sem parte grfica rodando o aplicativo MC (gerenciador de arquivos)

Gratuidade do sistema
O desenvolvido por sistema Linus

Torvalds no tinha como objetivo obter lucros, e sim desenvolver um sistema

para o seu uso pessoal. Com o sucesso do sistema, Linus coordena esforos de pessoas que tem interesse constante em desenvolver o Linux, com o simples e puro objetivo de desenvolver um sistema operacional melhor.

O que seria a licena GPL?


A licena GPL (General Public License), ou Licena Geral Pblica no bom portugus, permite que qualquer um possa utilizar programas que esto sobre ela , honrando o compromisso de no tornar o cdigo-fonte fechado. permitida a alterao dos cdigos baseados em GPL com fins de comercializao, porm no h permisso para fechar o cdigo e vende-los. Voc pode, por exemplo, desenvolver um aplicativo em qualquer linguagem de programao, independente o sistema operacional (isto mesmo, no importa se Linux, Windows ou MAC) e distribu-lo gratuitamente a todos observando os termos da GPL. Aproveitando um pouco do assunto, que extremamente importante a voc, recomendamos uma leitura na licena oficial (j traduzida) da GPL:

O que a GNU?
Para finalizar nosso entendimento sobre a histria do Linux, necessrio saber o que a GNU (GNU um acrnimo recursivo para GNU No UNIX e pronunciado como guh-noo.). Este projeto comeou em 1984 com o objetivo de desenvolver um sistema operacional compatvel com o padro Unix. Devemos nos lembrar que o Linux por si s, apenas um kernel, que usa programas da GNU para fazer seu sistema. Aproveitando a oportunidade, Linus resolve deixar o seu kernel dentro da licena GNU. O kernel, o corao do sistema por si s no tem nenhuma utilidade. Apesar de ser uma parte importante que faz a comunicao entre o usurio e o computador, o sistema efetivamente torna-se funcional com o uso de programas em conjunto. Para no haver confuso, Linux somente o kernel do sistema, mas tornou-se o sistema popular com o nome de Linux. correto tambm denomin-lo de GNU/Linux. Graas ao GNU, o sistema teve a oportunidade de reunir um bom kernel (vindo de Linus), e os programas existentes no projeto GNU. Aproveite e visite o site da GNU Foundation, que tem praticamente grande parte dos textos em portugus:

Smbolo da GNU Fundation

Linux no Brasil
A histria do GNU/Linux no Brasil teve (e tem) momentos marcantes, dignos de nota por usurios que h anos acompanham o desenvolvimento do sistema e outros talvez no to felizes, mas que servem de ponto de apoio para evitar repetir os erros. Se voc observar, atualmente o Linux est bem difundido com o instalao macia em computadores populares, onde o sistema bastante amigvel e de fcil uso ao usurio final. Em 1995, temos notcia da primeira citao do Linux em uma publicao nacional. A zine barate eltrica traz o seguinte texto: Existe amor primeira vista. E desta vez no foi uma loirinha, de belos olhos azuis, que me colocou merc dos meus hormnios, mas uma bitbox 386, de marca desconhecida, que at ento tinha servido de suporte a CPU do meu XTerminal. Um HD de 80M em algum canto e uma placa Ethernet WD8003, que nem fabricada mais era, completavam o desarmnico e feio conjunto. Mas sexy.

Naquele tempo a criao de Linus Torvald (all hail Linus!) era pequena o suficiente para caber em 80M. XFree ainda no existia, e a ltima palavra era a implementao de NFS. partir deste evento, o Linux gradativamente comeou a ganhar espao no mercado, principalmente pelo incio da explorao da Internet de forma comercial com o surgimento de provedores de acesso discado, que necessitavam inicialmente de um sistema operacional para gerenciar os acessos. importante observar que no ano seguinte (1996) comeam a surgir sites nacionais referenciando e agrupando usurios em torno do sistema, em especial o Linux Brasil (hoje BR-Linux) e tambm o manual para usurios disponveis na Internet elaborada por Hugo Cisneiros. Em 1998 o cenrio nacional fortemente movimentado com o sucesso da Conectiva (atual Mandriva), que se props a desenvolver uma distribuio de fcil utilizao e totalmente em portugus, algo raro naquela poca. Com a Conectiva no mercado, houve um crescimento da popularizao do Linux e o impulso por muitos em aprender a utilizar o sistema com o enfoque no mercado de trabalho.

Logo da Conectiva em 1998

Graas a este impulso, na virada de 1999 a 2000 praticamente temos no mercado uma "bolha" de popularidade do Linux, com o surgimento de uma srie de distribuies nacionais mantidas por grupos de usurios entusiastas no sistema. A maioria delas no vingou, uma vez que a necessidade constante de atualizao demanda uma equipe altamente dedicada ao sistema e conseqentemente todos os projetos que demandam de mo de obra necessitam de capital para a continuidade de seu projeto. O Kurumin surgimento do outro

tambm

marco importante na histria nacional do Linux. Como muitos projetos que nascem do

interesse pessoal em otimizar o Linux, o Kurumin (baseado em debian/knoppix) inovou ao

lanar uma distribuio em livecd (sem necessidade de

instalar) e totalmente voltada ao usurio final (fcil de instalar e ambiente muito produtivo. O projeto de Carlos Morimoto ganhou fama e hoje a distribuio Linux mais usado no Brasil, sendo utilizadas em escolas, reparties pblicas, empresas privadas e ambiente domstico. O modesto idealizador do sistema hoje realiza uma srie de eventos (palestras) com o objetivo de disseminar a cultura Linux/Kurumin. Outras distribuies que foram produzidas foram reconheceram a importncia do mercado nacional em termos de prestao de servios em cima do seu sistema (Novell, Red Hat e Mandriva) que buscam sempre traduzir toda a sua parte grfica e documentao para popularizao de suas distribuies. Se observarmos hoje, o mercado nacional para o Linux muito promissor pelas seguintes razes: Preferncia do governo na adoo de softwares livres; O Computador Popular oferece Linux aos consumidores (independente

fabricante/vendedor); A comunidade Linux muito colaborativa; 6

O uso do sistema bastante facilitado pelo amadurecimento nestes ltimos trs anos da interface grfica; Convm observar que o mercado bastante aberto para o uso de solues livres e pagas, havendo fatores prs e contras em cada uma das opes. Mas tratando-se de Linux, acreditamos que o mercado ainda pode absorver de forma mais impactante este sistema, principalmente pela incluso digital macia observada atualmente.

Debian Linux
O Debian, entre as grandes, uma das poucas distribuies que no mantida por empresas. desenvolvida e atualizada por voluntrios de todo mundo. Por essa filosofia comunitria o Debian foi adotada como a distribuio oficial da GNU. Possui suporte lngua portuguesa e roda em diversas arquiteturas diferentes. Acompanha um nmero muito grande de programas que so exaustivamente testados at que sejam incorporados distro. Isso tambm acontece com todas as suas verses. S para que tenhamos uma idia melhor dessa quantidade: o Debian, com todos os seus programas, distribudo em vinte e um CDs. Logicamente voc no precisar de todos eles pra instalar um sistema bsico. No nosso curso utilizaremos apenas o primeiro. Logo oficial do Debian

GNU/Linux

Essa vasta quantidade de programas o que explica o fato de que o Debian pode ser utilizado tanto em um computador pessoal como em um servidor, em ambos os casos se comportando de maneira eficiente. O Debian sempre tem pelo menos trs verses em manuteno ativa: estvel (stable), testing e instvel (unstable). Vamos dar uma olhada melhor nelas:

Estvel (stable)
A distribuio estvel contm a ltima verso oficialmente lanada do Debian. Esta a verso de produo do Debian, a que ns primeiramente recomendamos que seja usada. A atual distribuio stable do Debian GNU/Linux a verso 5.0, codinome Lenny. Ela foi lanada em 15 de Agosto de 2007.

Testing
A distribuio testing contm pacotes que ainda no foram aceitos na verso estvel, mas esto na fila para tanto. A principal vantagem de usar esta distribuio que ela possui verses mais recentes de software. A atual distribuio testing a Lenny.

Instvel (unstable)
A distribuio instvel onde o desenvolvimento ativo do Debian ocorre. Geralmente, esta distribuio executada por desenvolvedores e por aqueles que gostam de viver no limite. A distribuio unstable chamada Sid. Ela nunca ser lanada diretamente, porque pacotes que esto para serem lanados, tero primeiro que ser includos na testing, de maneira a ser lanada na stable. A Sid contm pacotes para as arquiteturas lanadas e as que ainda no foram oficialmente lanadas.

Um grande atrativo do Debian a ferramente apt. Atravs dela gerenciamos pacotes facilmente, tornando operaes, como instalao e atualizao de programas, muito simples. Isso tudo ainda com verificao de dependncia de pacotes.

Histria do Debian
Vamos conhecer um pouco da histria do Debian e suas curiosidades. O contedo a seguir foi retirado e adaptado do site oficial da distribuio. O Projeto Debian foi oficialmente fundado por Ian Murdock em 16 de Agosto de 1993. Naquele tempo, o conceito de uma "distribuio" de Linux era novo. Ian pretendia que o Debian fosse uma distribuio criada abertamente, no mesmo esprito do Linux e do GNU (leia seu manifesto fornecido como apndice nesse documento para maiores detalhes). A criao do Debian teve o apoio do projeto GNU da FSF durante um ano (Novembro de 1994 a Novembro de 1995). A distribuio Debian pretendia ser cuidadosamente e conscientemente criada em conjunto e ser mantida e suportada com similar cuidado. Isso comeou com um pequeno e forte grupo de hackers do Software Livre e gradualmente cresceu se tornando uma grande e bem organizada comunidade de desenvolvedores e usurios. A Debian a nica distribuio que aberta para que todo desenvolvedor e usurio possam contribuir com seu trabalho. o nico distribuidor significativo de Linux que 8

no uma entidade comercial. o nico grande projeto com uma constituio, um contrato social e documentos com polticas para organizar o projeto. A Debian tambm a nica distribuio que micro-empacotada, usando informaes detalhadas de dependncia de pacotes para garantir a consistncia do sistema em atualizaes. O nome, Debian, foi dado pelo criador da distribuio. Vem das iniciais do nome de sua esposa, Debra, e o seu: DEBra + IAN = DEBIAN. Para alcanar e manter um alto padro de qualidade, o Debian adotou um rico conjunto de polticas e procedimentos para empacotamento e distribuio de software. Backups so automatizados atravs de ferramentas e a documentao detalha todos os elementos chaves do Debian de uma forma aberta e visvel. O Debian teve vrios lderes desde seu comeo em 1993. Foram eles: Ian Murdock fundou o Debian em Agosto de 1993 e liderou at Maro de 1996; Bruce Perens liderou o Debian de Abril de 1996 at Dezembro de 1997; Ian Jackson liderou o Debian de Janeiro de 1998 at Dezembro de 1998; Wichert Akkerman liderou o Debian de Janeiro de 1999 at Maro de 2001; Ben Collins liderou o Debian de Abril de 2001 at Abril de 2002; Bdale Garbee liderou o Debian de Abril de 2002 at Abril de 2003; Martin Michlmayr liderou o Debian de Maro de 2003 at Maro de 2005; Branden Robinson liderou o Debian de Abril de 2005 at Abril de 2006; Anthony Towns liderou o Debian de Abril de 2006 at Abril de 2007; Sam Hocevar lidera o Debian de Abril de 2002 at os dias de hoje. Uma outra curiosidade a respeito dos codinomes das verses. Esses apelidos foram adotados pra que as verses oficiais no fossem confundidas com uma verso 1.0, lanada por uma revista, queimando assim a possibilidade de utilizao dos nmeros pra indicar as verses. Os codinomes utilizados so nomes de personagens do filme em animao grfica, Toy Story, da Pixar. Lenny, a verso Testing do Debian, tem o nome do ltimo personagem do primeiro Toy Story, j que os outros j foram utilizados. Na verso aps a Lenny ser usado o codinome de um dos personagens de Toy Story 2, ainda no definido. At agora os codinomes foram: Etch - Debian GNU/Linux 4.0 verso estvel atual Sarge - Debian GNU/Linux 3.1 verso estvel obsoleta 9

Woody - Debian GNU/Linux 3.0 verso estvel obsoleta Potato - Debian GNU/Linux 2.2 verso estvel obsoleta Slink - Debian GNU/Linux 2.1 verso estvel obsoleta Hamm - Debian GNU/Linux 2.0 verso estvel obsoleta Resta a dvida de como ficaro os codinomes depois que esgotarem-se os personagens do Toy Story 2, lembrando que a animao dos estdios Pixar, cujo lder ningum menos que Steve Jobs, tambm lder da Apple, desenvolvedor dos sistemas operacionais Mac OS X e o atualssimo Leopard.

Comandos de Shell
Antes de utilizar o Debian extremamente necessrio conhecer grande parte dos comandos que voc utilizar no dia-a-dia para administrar o sistema. Mas antes conveniente tambm saber exatamente o que significa shell e os tipos mais usuais de shell. Shell um ambiente de comandos em texto que tem a funo de traduzir linguagem de comandos em linguagem de mquina, executando o comando ou aplicao de forma transparente para o usurio. Normalmente os comandos nativos so em ingls. O Linux assim como outros sistemas operacionais baseados em UNIX, possuem uma srie de shells, cada uma com a sua funcionalidade especfica. No Linux, a shell padro o bash. Confira abaixo a lista de shells mais utilizadas atualmente e um pouco de sua histria: bash O Bash o shell desenvolvido para o projeto GNU, da Free Software Foundation , que se tornou padro nas vrias distribuies GNU/Linux. Pode ser usado tambm com outros sistemas operacionais, como o FreeBSD. compatvel com o Bourne Shell (sh), incorporando os melhores recursos do C Shell (csh) e do Korn Shell (ksh). sh O Bourne shell, ou simplesmente sh, foi o shell padro do Unix Verso 7 e substituiu o Thompson shell, cujo arquivo executvel tinha o mesmo nome, sh. Ele foi desenvolvido por Stephen Bourne dos laboratrios AT&T e foi lanado em 1977 junto com o Unix Verso 7 distribudo para as faculdades e universidades. Logo tornou-se um shell popular para as contas Unix. O programa binrio do Bourne shell (ou de um outro shell compatvel) fica em /bin/sh da maioria dos sistemas Unix, assim com o FreeBSD, ainda permanece como o shell padro para o superusurio root em muitas das implementaes do Unix atuais. 10

csh O Csh ou C Shell foi desenvolvido por Bill Joy da Universidade de Berkeley o Shell mais utilizado em ambientes *BSD e Xenix.A estruturao de seus comandos bem similar da linguagem C. H um consenso de que a shell csh no possui um grande grau de compabitilidade com o sh. ksh Sendo considerado um dos mais populares shell em sistemas Unix, o Korn Shell foi desenvolvido por David Korn, do Bell Labs, e um superconjunto do sh, isto , possui todas as facilidades do shell sh e a elas agregou muitas outras. A compatibilidade total com o sh vem trazendo muitos usurios e programadores de Shell para este ambiente. Resumindo, KSH korn Shell foi o primeiro shell introduzir recursos avanados. O shell bash possui uma caracterstica importante: a completao dos nomes. Isto acontece quando a tecla TAB pressionada. Por exemplo, se digitar "cd deb" e pressionar TAB, o bash localizar todos os arquivos que iniciam com "deb" e completar o restante do nome. Caso a completao de nomes encontre mais do que uma expresso que satisfaa a pesquisa, ou nenhuma, emitido um beep. Se voc apertar novamente a tecla TAB imediatamente depois do beep, o interpretador de comandos ir listar as diversas possibilidades que satisfazem a pesquisa, para que voc possa escolher a que lhe interessa. A completao de nomes funciona sem problemas para comandos internos. Por exemplo, se voc digitar modp e em seguida teclar TAB provvel que o interpretador complete o comando modprobe. Voc agora deve ficar atento ao seguinte detalhe: como diferenciar um usurio normal do usurio de root quando este contra-se logado na shell? Muito simples, o usurio root ao logar-se no sistema recebe em sua shell o parmetro # que o identifica como root. Confira na imagem abaixo o exemplo de um usurio root conectado no Linux.

Bash logado com o superusurio 11

J os usurios normais so identificados por $ ao logarem-se no ambiente shell. Isto vale para grande parte dos ambientes de shell existentes para o Linux.

Bash logado com um usurio normal

Mas vamos ao que interessa, como usar os comandos de shell no Debian. Lembrando que a lista abaixo tem uma grande compatibilidade entre os diferentes tipos de shell. ls -> lista o diretrio atual. Se voc por algum momento teve a oportunidade de lidar com o ambiente DOS, este comando tem a mesma funo do comando dir para DOS. pwd -> mostra o diretrio atual. Se voc estiver no diretrio /root (diretrio inicial do usurio root), o comando pwd listar o diretrio atual neste formato. cd -> mudar do diretrio atual. Imagine se voc esteja no diretrio /root e gostaria de ir ao diretrio /. Basta digitar ento cd / para concluir o comando com sucesso. mkdir "nome do diretrio" -> cria um diretrio. Se voc deseja criar dentro do diretrio / a pasta aulas, basta digitar mkdir aulas. Assim o diretrio ser criado. rmdir "nome do diretrio" -> apaga um diretrio vazio. Mas s se este encontrar-se em vazio. Por exemplo, se voc deseja apagar o diretrio aulas, basta digitar rmdir /aulas. rm "nome do arquivo" -> apaga arquivos. Exemplo: rm teste.txt. rm -rf "nome do diretrio" -> apaga arquivos e diretrios de forma forada,ou seja, no h nenhuma confirmao para a excluso. Se por alguma razo o diretrio /aulas tivesse um ou mais arquivos serem deletados, poderia-se utilizar o comando rm -rf /aulas. du /"nome do diretrio" -> mostra o tamanho do diretrio e subdiretrios se existirem dentro do mesmo. Para experimentar o comando, digite du /usr e espere o resultado. OBS: Para mostrar o tamanho em megabytes (MB), utilize o parmetro -h. Exemplo : du -h /usr. df -> mostra o tamanho disponivel nas suas parties e o quanto foi usado. 12

who ou w -> mostra os usurios logados em seu sistema. hostname -> mostra o nome do computador que se est usando. su -> torna-se o root (dono do sistema) se o usurio logado um usurio normal. echo "Debian GNU/Linux" -> escreve um conjunto de caracteres na tela: Debian GNU/Linux. mount /"dispositivo" /mnt/lugar -> monta um dispositivo. OBS: Para utilizar CD, DVD, dispositivo USB e disquete necessrio "montar", ou seja, demonstrar ao sistema que voc necessita usar o dispositivo. umount /"dispositivo" -> aps o trmino do uso do dispositivo, necessrio informar ao sistema que no h mais a necessidade de t-lo montado. cat "nome do arquivo" -> exibe o contedo do arquivo na tela. No DOS similar ao comando type. Exemplo : cat teste.txt. more "nome do arquivo" -> exibe o contedo do arquivo na tela em formato de pginas. Exemplo more teste.txt. grep "texto" "nome do arquivo" -> procura por um texto dentro de um arquivo. Exemplo : grep free teste.txt. ps -> mostra todos os processos que esto rodando no sistema. Normalmente usa-se a expresso com o parmetro -aux para mostrar todos os processos da mquina. Exemplo : ps aux. top -> mostra todos os processos com outras informaes do sistema. Exemplo: top (confira a tela abaixo para uma demonstrao do top). Para sair do top pressione a tecla q. Utilitrio top em execuo mv -> renomeia ou move um arquivo ou diretrio. Exemplo : mv /aula aula1. O diretrio ficaria com o nome de /aula1. kill -> Finaliza um processo atravs de seu PID (Identificador de 13

Processo). Exemplo : kill -9 393. Finaliza o processo sshd.

killall -> Finaliza um processo pelo nome. Exemplo: killall httpd. logout -> finaliza a sesso de shell. exit -> finaliza a sesso de shell. reboot -> reinicia o sistema (somente como root). Existe uma infinidade de outros comandos no Linux, os acima citados so somentes os principais. de fundamental importncia que o aluno tenha o mnimo de domnio desses para fazer uma boa administrao do sistema e dar progresso ao nosso curso. bom lembrar que a melhor maneira de fixar qualquer contedo praticando. Ento mo na massa! ;)

Mais Comandos bsicos do Linux


cal: exibe um calendrio; cat arquivo: mostra o contedo de um arquivo. Por exemplo, para ver o arquivo infowester.txt, basta digitar cat infowester.txt; cd diretrio: abre um diretrio. Por exemplo, para abrir a pasta /mnt, basta digitar cd /mnt. Para ir ao diretrio raiz a partir de qualquer outro, digite apenas cd; chmod: comando para alterar as permisses de arquivos e diretrios. clear: elimina todo o contedo visvel, deixando a linha de comando no topo, como se o sistema acabasse de ter sido acessado; cp origem destino: copia um arquivo ou diretrio para outro local. Por exemplo, para copiar o arquivo infowester.txt com o nome infowester2.txt para /home, basta digitar cp infowester.txt /home/infowester2.txt; date: mostra a data e a hora atual; df: mostra as parties usadas; diff arquivo1 arquivo2: indica as diferenas entre dois arquivos, por exemplo: diff calc.c calc2.c;

14

du diretrio: mostra o tamanho de um diretrio; file arquivo: mostra informaes de um arquivo; find diretrio parmetro termo: o comando find serve para localizar informaes. Para isso, deve-se digitar o comando seguido do diretrio da pesquisa mais um parmetro (ver lista abaixo) e o termo da busca. Parmetros: name - busca por nome type - busca por tipo size - busca pelo tamanho do arquivo mtime - busca por data de modificao Exemplo: find /home name tristania finger usurio: exibe informaes sobre o usurio indicado; free: mostra a quantidade de memria RAM disponvel; halt: desliga o computador; history: mostra os ltimos comandos inseridos; id usurio: mostra qual o nmero de identificao do usurio especificado no sistema; kill: encerra processados em andamento. Saiba mais no artigo Processos no Linux; ls: lista os arquivos e diretrios da pasta atual; lpr arquivo: imprime o arquivo especificado; lpq: mostra o status da fila de impresso; lprm: remove trabalhos da fila de impresso; lynx: abre o navegador de internet de mesmo nome; mv origem destino: tem a mesma funo do comando cp, s que ao invs de copiar, move o arquivo ou o diretrio para o destino especificado; mkdir diretrio: cria um diretrio, por exemplo, mkdir paulo cria uma pasta de nome paulo;

15

passwd: altera sua senha. Para um administrador mudar a senha de um usurio, basta digitar passwd seguido do nome deste; ps: mostra os processos em execuo. Saiba mais no artigo Processos no Linux; pwd: mostra o diretrio em que voc est; reboot: reinicia o sistema imediatamente (pouco recomendvel, prefervel shutdown -r now); rm arquivo: apaga o arquivo especificado; rmdir diretrio: apaga o diretrio especificado, desde que vazio; shutdown: desliga ou reinicia o computador, veja: shutdown -r now: reinicia o computador shutdown -h now: desliga o computador O parmetro now pode ser mudado. Por exemplo: digite shutdown -r +10 e o sistema ir reiniciar daqui a 10 minutos; su: passa para o usurio administrador, isto , root (perceba que o smbolo $ mudar para #); tar -xzvf arquivo.tar.gz: extrai um arquivo compactado em tar.gz; telnet: ativa o servio de Telnet em uma mquina. Para acessar esse computador a partir de outros por Telnet, basta digitar telnet nomedamquina ou telnet IP. Por exemplo: telnet 192.168.0.10. Aps abrir o Telnet, digite help para conhecer suas funes; top: exibe a lista dos processos, conforme os recursos de memria consumidos; uname: mostra informaes do sistema operacional e do computador. Digite uname -a para obter mais detalhes;

Estrutura de diretrios do Debian GNU/Linux


Compreender organiza-se quanto como sua o Debian de

estrutura

diretrios de fundamental importncia para aquisio de conhecimentos quanto ao futuro 16

de suas aulas. Ento vamos dar uma olhada na rvore de diretrios, que muda um pouco de distribuio para distribuio Linux. O diretrio raiz / o diretrio-chave do sistema. Atravs dele, podemos chegar qualquer outro diretrio, seja ele de sistema ou montvel. Todos os outros diretrios esto dentro do diretrio raiz. O diretrio /bin possui todos os arquivos binrios (executveis) indispensveis para o funcionamento do Linux. Podemos dentro deste diretrio encontrar os binrios ls, mv, mkdir, entre outros. O /boot como o prprio nome nos diz, refere-se ao diretrio responsvel pelos arquivos de boot (levantamento do sistema ou inicializao do sistema). Se voc quiser conferir, ir encontrar os arquivos de boot juntamente com alguns sub-diretrios, como o caso do grub, onde ficam as configuraes do nosso gerenciador de inicializao. J o diretrio /cdrom tem um caso um pouco especial. Serve como ponto de montagem para mdias em CD. Se inserirmos um CD no drive e digitarmos comando mount /cdrom e posteriormente irmos ao diretrio /cdrom, certamente listaremos o contedo deste diretrio. O diretrio /cdrom na verdade um link simblico para outro diretrio, o /media/cdrom. Todos os dispositivos de hardware no Linux so referenciados por link simblicos de dispositivos (que fazem o meio de campo entre o sistema e o hardware) dentro do diretrio /dev. Exemplo: o dispositivo cdrom ser listado dentro do /dev com o nome de hdc, o HD como hda (no caso dos IDEs) ou sda (no caso dos SATAs) e assim por diante. Um diretrio de fundamental importncia para o Linux o diretrio /etc. Neste diretrio encontramos vrios arquivos de configurao do sistema, inclusive o arquivo passwd e o shadow, que contm o registro de todos os usurios do sistema e suas senhas (seguramente criptografadas). Em geral os arquivos de configurao de alguns servidors se localizam em subdiretrios dentro da pasta /etc, como o caso do /etc/apache2, /etc/php5 e assim por diante. Todo usurio quando criado no sistema ganha o seu diretrio home, ou seja, o seu diretrio inicial onde ficaro seus arquivos pessoais e de configurao. O caminho exato do diretrio do usurio fica no formato /home/user , onde user o login do usurio, ou seja, o usurio biosnett ter seu diretrio home em /home/biosnett .

17

Com o usurio root, o super-usurio, funciona um pouco diferente. Ele possui uma srie de regalias no sistema. Por ser o usurio mestre, possui o seu diretrio home separado dos usurios normais. O /root um diretrio de uso exclusivo do root, salvo se este libera algum acesso aos usurios normais. O diretrio /lib contm todas as bibliotecas de sistema, de uso essencial do Linux. Demais bibliotecas podem localizar-se em outros diretrios, mas seguindo a orientao do sistema. O /media no Linux pode ser um diretrio tanto para armazenamento de arquivos ou mdia (media). Inicialmente encontram-se apenas subdiretrios vazios para posteriores montagens de dispositivos Assim como o diretrio /media, o diretrio /mnt tem como objetivo servir de ponto de montagem de dispositivos. Inicialmente encontra-se vazio. O diretrio /proc onde fica localizado o kernel do Debian. Ele no existe de fato em seu disco rgido, ele colocado l pelo kernel e usado por diversos programas que fazem sua leitura, e verificam configuraes do sistema. No /sbin encontramos os arquivos binrios (executveis) de uso do usurio root para a administrao do sistema. O /sys tem funo parecida com o diretrio /proc. Ambos so virtuais (no existem de fato) e trazem informaes do sistema. O /sys passou a fazer parte da rvore de diretrios a partir das verses 2.6 do kernel Linux. Se a sua necessidade for realizar alguma operao que faa uso de um diretrio temporrio, ou mesmo desenvolver um aplicativo que faa uso deste, o /tmp a opo apropriada. No processo de inicializao do sistema o diretrio /tmp limpado. O diretrio /usr mais um diretrio de vital importncia para o Linux. onde ficam instalados os programas do sistema, documentao e parte das bibliotecas. O /var um diretrio onde localiza-se arquivos de logs (monitoramento de aplicativos e do sistema) e tambm pode ser utilizado de modo padro como repositrio de bancos de dados (MySQL por exemplo). Tambm utilizado como repositrio de e-mails, contando com uma pasta especfica para esta tarefa, a pasta /var/mail.

18

O diretrio /lost+found utilizado pelo utilitrio fsck.ext para a manuteno do sistema. onde ficam os arquivos e/ou diretrios recuperados. Cada partio tem seu diretrio /lost+found. Os pacotes de aplicativos adicionais, que no fazem parte dos pacotes oficiais do Debian utilizados pela ferramenta APT, ficam localizados no diretrio /opt. No primeiro momento lembrar que todos os diretrios e seus arquivos que os compem pode parecer uma tarefa um tanto quanto massante. Porm com o uso do sistema no dia-a-dia e um pouco de exerccios a rvore de diretrios ficar bastante clara. No deixe de dar uma passada por cada um dos diretrios e dar uma olhada no seu contedo.

Conhecendo o APT
O APT uma excelente ferramenta de gerencia de pacotes. Atravs do APT possvel baixar e instalar programas com simples comandos. Essa poderosa ferramenta faz a verificao de dependncias de pacotes automaticamente, ou seja, quando um programa necessita de outro, ou mesmo de uma determinada biblioteca para o seu funcionamento, o APT verifica e instalada todos esses pr-requisitos. O APT pode ser utilizado tanto com arquivos fontes remotos como tambm arquivos locais, desde que estejam no formato correto (.deb). Atravs do APT voc pode ainda atualizar toda a sua distribuio Debian ou simplesmente atualizar todos os pacotes instalados. Por essas e outras vantagens o APT a maneira mais utilizada de gerncia de pacote do Debian e as distros derivadas. Durante todo o curso faremos o uso do APT instalar e atualizar pacotes. Todos os arquivos de configuraes do APT ficam localizados no diretrio /etc/apt. nele que se encontra o arquivo sources.list. O sources.list o arquivo que armazena as informaes de onde se localizam os pacotes que serviro de fonte pra instalao e atualizao dos programas. Damos o nome a esses endereos de repositrios. Vamos dar uma olhada melhor nesse arquivo. Utilizaremos o editor de texto nano, que vem junto com a instalao bsica do Debian, para visualizar o contedo do arquivo sources.list. Para tanto, basta digitarmos: # nano /etc/apt/sources.list

19

OBS: quando mencionarmos o uso de comandos durante o curso utilizaremos a notao # e em seguida o comando. No exemplo acima o que deve ser digitado nano /etc/apt/sources.list. Se voc seguiu os passos indicados na instalao do sistema esse deve ser o contedo do seu documento sources.list. Caso voc tenha escolhido um espelho diferente, algumas diferenas sero notadas, mas nada que prejudique o funcionamento da ferramenta APT ou a seqncia do nosso curso. Inicialmente importante dizer que todas as linhas do documento que iniciam com # so ignoradas pelo sistema. Dizemos que essa linha est comentada, ou que um comentrio. um recurso bastante utilizado principalmente em programao para fazer comentrios no meio do cdigo dos programas ou para facilitar futuras modificaes. Como foi citado anteriormente o arquivo sources.list contm as informaes das fontes para instalao de pacotes. As fontes podem ser locais ou remotas. Vamos analisar as linhas do arquivo. deb cdrom:[Debian GNU/Linux 4.0 r1 _Etch_ - Official i386 CD Binary-1 20070819-11:52]/ etch contrib main deb: indica que se trata de um pacote Debian. Pode vir no formato deb-src, indicando cdigo fonte; cdrom: indica que a fonte dos pacotes uma media cdrom; etch: local onde sero buscado os pacotes. Etch no caso nossa verso, a atual verso estvel; contrib: inclui busca softwares livres que dependem de softwares proprietrios; main: busca somente softwares livres. deb http://ftp.br.debian.org/debian/ etch main Nessa linha a novidade a presena do termo http://ftp.br.debian.org/debian/. Ele indica que o mtodo utilizado para acessar a fonte de pacotes, ou repositrio, o http. Logo em seguida temos o endereo completo na Internet do repositrio. Fica fcil perceber que nesse caso se trata de uma fonte remota de pacotes. Nas linhas que seguem encontramos mais um termo novo. o deb-src. A exemplo do termo deb, o deb-src indica se tratar de pacotes Debian, com o porm de ser em cdigo fonte (source). Os que iniciam com deb, somente, so pacotes pr-compilados. 20

Iremos fazer uma pequena alterao no arquivo de repositrios. Durante o curso, para nossa comodidade, utilizaremos somente os repositrios remotos. Iremos ento remover o cdrom de nosso repositrio pra que tudo seja instalado partir da Internet. Como j vimos, a linha no arquivo sources.list que aponta o cdrom como fonte a que inicia com deb cdrom:. Pra que no utilizemos essa linha temos duas opes. Podemos simplesmente remov-la ou coment-la. Para comentar a linha basta adicionarmos um # no incio da mesma. Por padro o arquivo sources.list vem com duas linhas iguais apontando para o cdrom, uma comentada e outra descomentada. O que faremos ento ser remover a linha descomentada. Com isso ainda teremos a linha comentada para um possvel uso posterior. Faremos o uso do editor de texto nano para editar o arquivo. Para tal, como j foi anteriormente mencionado, utilizaremos a seguinte linha de comando: # nano

/etc/apt/sources.list . Dentro do editor v at a linha descomentada que aponta para o cdrom e utilize o atalho Ctrl+K para recortar (removendo-a) a linha. Depois disso basta sairmos do editor: pressione Ctrl+X. O editor ir lhe questionar se voc deseja salvar o buffer modificado: pressione S, para aceitar. Confirme o nome e caminho do arquivo pressionando Enter. Nosso arquivo

ento ficara como mostrado na figura abaixo:

Arquivo sources.list configurado

Para que as alteraes tenham efeito necessrio fazer com que o sistema releia o arquivo sources.list e atualize as listas de pacotes. Para tanto basta que digitemos um simples comando: # apt-get update

21

Atualizao repositrios do APT

dos

Como isso atualiza o banco de dados de repositrios no sistema, recomendado que seja sempre usado antes de instalar um programa, exceto quando j tenha sido feito

recentemente, h poucas horas, por exemplo.

Utilizando o APT
Veremos agora, na prtica, como a ferramente APT pode ser utilizada. Como j sabemos, a principal funo da ferramenta APT instalar programas. Isso se torna uma tarefa extremamente fcil utilizando a opo install do apt-get. Vejamos um exemplo. Vamos instalar o conjunto de pacotes mc. O mc, ou midnight commander, um poderoso gerenciador de arquivos para ambiente texto. Seria como um Windows Explorer do Linux. O mc ainda conta com um prtico editor de texto. Veremos seu uso mais adiante. Para instalar o mc muito simples. Basta usar a seguinte linha de comando: # apt-get install mc O instalador ir informar os pacotes a serem instalados, no caso o mc e suas dependncias, quanto espao e em em disco seguida ser lhe

atualizado

perguntar se deseja continuar. Pressione S. 22

A ferramenta APT ir fazer o download e instalar todos os pacotes necessrios para o seu funcionamento, inclusive atualizando possveis pacotes antigos, automaticamente. O processo pode demorar um pouco, dependendo do tamanho dos arquivos a serem baixado e da sua conexo com a

Internet.

Processo

de

instalao do mc atravs do APT Agora voc j tem o midnight commander

instalado no seu sistema. Para utilizar o gerenciador de arquivos basta que voc digite: # mc

Midnight commander em ao

Atravs do midnight commander voc pode mover, renomear, copiar, deletar arquivos, sem a necessidade de estar digitando comandos. A interface bem intuitiva. A tela dividida em duas pseudo-janelas. Para alterar entre elas utilize a tecla TAB. As funes mais simples do programa esto listadas na parte inferior da tela. Os nmeros referem-se as tecla F1 at F10. Para sair do programa pressione F10. Para chamar o editor de texto do midnight commander basta digitar o comando mcedit. Voc pode us-lo, a exemplo dos outros editores, para abrir diretamente o contedo de um arquivo. Vamos abrir o arquivo de configurao de inicializao do sistema, inittab, que fica no diretrio /etc. Para isso basta que digitemos: 23

# mcedit /etc/inittab Para sair tambm utilizamos a tecla F10. Mas voltemos pra ferramenta apt... importante aprendermos a procurar determinado pacote. Por vezes no sabemos o nome exato do pacote que necessitamos ou nem mesmo do programa. Uma maneira de sanar esse problema fazer uma busca pelos pacotes e sua descrio. Vamos simular uma situao. Voc tem um arquivo de extenso .zip mas no tem nenhum programa para descompact-lo. Voc tambm no sabe qual programa, muito menos o nome do pacote do mesmo, necessrio para descompactar o arquivo. Utilizaremos o APT no formato apt-cache com a opo search. Digitemos ento: # apt-cache search zip Uma lista de pacotes lhe ser apresentada com nome e descrio. Porm muitos pacotes apareceram e ler cada descrio pode ser muito trabalhoso. Para filtrarmos e sermos mais especficos no que queremos utilizaremos o comando grep. O grep utilizado para procurar textos no dispositivo de entrada padro. Podemos ento us-lo em conjunto com o comando de busca do APT e o | (pipe) . O pipe serve como uma interface entre dois comandos. Ele faz com que a sada de um comando vire entrada de outro. Nossa linha de comando ficaria assim ento: # apt-cache search zip | grep zip Com isso ser listado apenas as linhas que contenham a palavra filtrada pelo grep: zip. Agora fica mais fcil de encontrar o que queremos. Dando uma lida nas descries dos pacotes encontramos os unzip que satisfaz nossas necessidades. Iremos ento instal-lo atravs da ferramenta APT: # apt-get install unzip O APT baixar e instalar o programa automaticamente. Iremos agora aprender a remover um pacote atravs do APT. Para removermos determinado pacote, basta que utilizemos o APT, no formato apt-get com a opo remove. Isso ir remover o pacote, porm manter seus arquivos de configuraes. Para remoo completa, inclusive dos arquivos de configuraes, utilizaremos a opo --purge. 24

Vamos remover o pacote anteriormente instalado, o unzip. Utilizaremos a seguinte linha de comando: # apt-get remove --purge unzip Basta digitarmos S para confirmar a remoo. Teremos assim removido o pacote unzip por completo. A ferramenta APT conta ainda com outras funes de grande importncia e utilidade. Existe a opo, por exemplo, de atualizar todos os pacotes da distribuio com uma simples linha de comando. Para tanto, basta que digitemos: # apt-get upgrade Em seguida pressione S para confirmar. Para uma atualizao de mais impacto podemos usar uma outra opo do APT. Isso faria com que sua distribuio fosse atualizada para a verso mais nova. Para isso digite: # apt-get dist-upgrade Voc deve estar se perguntando qual a diferena das opes upgrade e distupgrade. Pois bem, na opo upgrade pacotes cujas dependncias no esto atualizadas no sero atualizados. J na dist-upgrade as dependncias tambm so atualizadas trazendo todos os pacotes mais recentes da distribuio para o seu sistema.

Acesso remoto via SSH


Um administrador de sistema ou rede Linux geralmente tem mais de um servidor para gerenciar. normal tambm que um administrador cuide de um servidor a quilmetros de distncia de onde mora. Muitas empresas tm seus servidores em Data Centers terceirizados, ou seja, raramente tm acesso local s mquinas. Por essas e vrias outras razes fundamental que um administrador tenha acesso a um servidor Linux de qualquer lugar do mundo. Existem vrias ferramentas para acesso remoto a um servidor Linux. O que estudaremos no nosso curso a mais utilizada delas, o SSH (Secure Shell). O servio SSH permite que voc acesse remotamente o console de sua mquina. Isso faz com que voc acesse sua mquina como se estivesse acessando localmente. Com este tipo de conexo, toda e qualquer informao passada entre o software cliente e o servidor

25

estar criptografada, sem o risco de interceptao das informaes, como ocorria com o telnet e outros programas destinados ao acesso remoto. Para darmos incio essa excelente ferramenta precisamos, antes de mais nada, instalar o servidor SSH no nosso sistema. Instalaremos o servidor OpenSSH atravs da ferramenta apt. O nome do pacote a ser instalado openssh-server. Para isso digitaremos: # apt-get install openssh-server Agora nosso sistema j pode ser acessado por SSH com as configuraes padres da instalao. Como estamos rodando o Debian em uma mquina virtual, nada mais simples que instalarmos um cliente de SSH na mquina Windows em que estamos praticando as aulas pra que possamos simular um acesso remoto entre mquinas com sistemas operacionais diferentes. Para realizar a conexo via SSH com o servidor Linux vamos utilizar um software chamado PuTTY, altamente simples de operar e nos fornece todo os requisitos bsicos para a conexo com o servidor Debian. Disponibilizamos um link direto em nosso servidor para download do PuTTY. O download do aplicativo extremamente fcil de realizar e no h necessidade de instal-lo. Basta realizar o download e utiliz-lo. Voc pode inclusive carreg-lo num pendrive por exemplo, tendo sempre em mos uma poderosa ferramenta de acesso remoto. Link direto do PuTTY: http://www.biosnett.com.br/utils/putty.exe Quando voc abre o PuTTY, a seguinte tela lhe ser apresentada: Iremos inserir somente uma informao importante no PuTTY: O endereo IP do servidor onde o programa ir conectar-se. Voc pode descobrir o ip do seu servidor com o comando ifconfig: O endereo IP da sua placa de rede eth0 indicado pela expresso inet end. na sada do comando. No caso da tela apresentada acima o IP 10.1.1.29. Digite ento seu endereo IP no campo Host Name (or IP address) do PuTTY e clique em Open.

26

Quando voc acessa pela primeira vez o servidor, o PuTTY ir realizar o cache da chave pblica de conexo com o servidor. Clique em Sim ou Yes para aceitar o armazenamento desta informao e continuar. Em seguida ser apresentada uma tela com login. Insira o login de usurio que voc criou no incio das aulas ou o prprio super-usurio (root) e d um Enter. Insira em seguida a senha. Voc ir cair na shell, exatamente como se estivesse "na frente" do servidor. Agora voc pode usar todos os comandos como se tivesse acessando localmente a mquina de forma segura e prtica. Caso prefira, voc pode utilizar somente o PuTTY para fazer todas as instalaes e configuraes que necessitarmos durante todo o curso. Uma das vantagens de se trabalhar com o PuTTY poder copiar as linhas de comandos ou configuraes de um arquivo do nosso curso, com o tradicional Ctrl+C e colar no PuTTY, bastando para isso um simples clique no boto direito do mouse. OBS: O editor de texto mcedit tem uma certa incompatibilidade com o PuTTY na hora de colar algum texto, portanto recomendamos pra essas fues a utilizao de um outro editor, como o caso do vi, pico ou nano.

Instalando o servidor de FTP ProFTPd no Debian GNU/Linux


Um outro servio importantssimo em qualquer servidor o FTP (File Transfer Protocol ou no portugus Protocolo de Transferncia de Arquivos). O FTP provavelmente a maneira mais prtica e usada de transferncia de arquivos na Internet. Um exemplo clssico de utilizao dessa ferramenta do upload de arquivos de um site. Digamos que voc tem um servidor Apache instalado no seu servidor que fica em outro estado. Quando h a necessidade de atualizao do site voc pode utilizar o FTP pra transferir seus arquivos para o servidor atualizando o site remotamente. Pra que isso se torne possvel necessitamos de um servidor FTP. Existe uma variedade muito grande de softwares que desempenham essa funo no Linux. Vamos estudar o mais utilizado deles, o ProFTPd. Iremos, como de costume, usar o poderoso APT para instalar o ProFTPd no nosso Debian: # apt-get install proftpd

27

Na tela que segue lhe ser questionado se voc deseja que o ProFTPd seja rodado a partir de um outro servio, o inetd, ou se deve rodar como um processo solitrio (standalone). Escolhermos o modo standalone. Apesar de consumir um pouco mais de recurso da mquina mais seguro e fcil de administrar isoladamente. Os arquivos de configurao do ProFTPd ficam no diretrio /etc/proftpd. Vamos fazer algumas alteraes no arquivo de configurao /etc/proftpd/proftpd.conf. # nano /etc/proftpd/proftpd.conf Vamos editar alguns parmetros essenciais e o principal: limitar o usurio ao seu diretrio /home: ServerName : Insira o nome do seu servidor. Exemplo - "Servidor de FTP" Adicione o parmetro DefaultRoot ~ . Ele ser o responsvel por limitar os usurios sua pasta /home. Iremos alterar o parmetro UseIPv6 para off. Isso desabilitar o uso do Ipv6, ainda pouco difundido, no nosso servidor de arquivos. Para garantir que tudo esteja funcionando perfeitamente iremos testar o servidor. Antes de mais nada importante que as alteraes no arquivo de configurao sejam salvas e o servio reiniciado. Para reinici-lo digitaremos: # /etc/init.d/proftpd restart O est ilustrado teste na

figura que segue:

28

Testando servidor FTP Inicialmente conectamos ao nosso servidor atravs do comando ftp seguido pelo IP do servidor. Sero requisitados usurio e em seguida senha. No exemplo acima o usurio utilizado foi o gabriel. O servidor avisa que o usurio est logado, portanto tudo est funcionando. Em seguida utilizamos o comando quit para sair do cliente ftp. Pronto, voc j pode utilizar o seu servidor de FTP!

Instalando o servidor de dados Samba (Compartilhamento de Arquivos)


Quando voc inicia seus estudos em Linux, no imagina a quantidade de recursos que o sistema pode suportar na questo de aplicativos que podem sim substituir um servidor Windows, por exemplo. Vamos tomar por exemplo a questo de compartilhamento de arquivos. Para muitos usurios e at administradores de arquivos, um servidor em uma rede interna precisa de forma indispensvel compartilhar arquivos com o resto da rede. Inclua-se documentos, planilhas, msicas, imagens e outros arquivos utilizados por grande parte dos usurios. Porm quando muitos usurios imaginam que o Linux no possui um sistema que permita realizar este tipo de tarefa, h uma luz importante para esta questo. O Samba. Mas o que o Samba? Para que serve? Primeiro, para entendermos um pouco mais do protocolo de gerenciamento de arquivos de redes Windows, importante aperfeioarmos nosso lado terico do "modus operandi" de todo o processo que o Samba ir fazer no seu sistema. Isso implica necessariamente em destrinchar o uso do protocolo de compartilhamento usado pela Microsoft.

29

Exemplo de rede mista

A Microsoft trabalha com um praticamente proprietrio em cima da pilha de pacotes TCP/IP conhecida por NetBios. O Netbios responsvel por protocolo

reconhecer os nomes de mquina na rede interna, bem como a realizao de uma

srie de tarefas, como informar aos terminais qual o servidor

principal da rede, quais mquinas esto aptas reconhecer o servidor, quais delas possuem permisso para acess-las, enfim, controla praticamente todo o funcionamento do compartilhamento em uma rede Windows. O que o Samba fez foi trabalhar em cima do protocolo existente e adaptou-o necessidade de funcionamento em ambientes Linux e BSD. Porm lembrando que como a Microsoft proprietria do protocolo, algumas funcionalidades que os servidores Windows possuem podem no estar presentes em algumas verses do Samba. Mas para 99% dos casos o Samba uma "mo na roda", literalmente falando e o utilizando. Sem contar ainda que o Linux servindo dados com o Samba, imune virus para sistemas Microsoft. Ou seja, para dar "pau", s falha fsica do hardware ou barbeiragem do administrador. Indo ao lado prtico das aulas, vamos instalar o Samba via APT para posteriormente fazermos a sua configurao (que bem intuitiva). Mos na massa: # apt-get install samba 30

Confirme a instalao pressionando S. Ser apresentada uma tela para configurao de Nome de Domnio / Grupo de Trabalho. o mesmo Grupo de Trabalho que voc usa no Windows pra determinar sua rede. Para ver ou alterar o seu grupo de trabalho no Windows abra o Painel de Controle nele a opo Sistema. Clique na aba Nome do computador.

Configuraes de rede no Windows Ali estaro indicados o nome e o grupo a qual o computador pertence. Voc pode ainda clicar em Alterar se houver necessidade de modificar algum dos seus parmetros. Preencha o campo Nome de Domnio / Grupo de Trabalho de acordo com as configuraes do seu sistema Windows.

Configurando grupo de trabalho na instalao do Samba

Uma outra tela de configurao lhe ser apresentada. Nela o instalador pergunta se voc deseja que o Samba procure pelo grupo de trabalho automaticamente via DHCP.

31

Tela de configurao na instalao do servidor Samba

Escolheremos NO e mais a frente faremos as configuraes necessrias do Samba manualmente. Feita a instalao, vamos configurar o Samba para que possamos compartilhar arquivos na rede. O arquivo de configurao do Samba est em /etc/samba/smb.conf . Vamos edit-lo para compreendermos os principais parmetros e a importncia destes para o primeiro momento, onde vamos tornar o Samba operacional. Abrindo o arquivo, podemos observar que h a separao dos blocos de informaes por colchetes [ ], que agrupam vrios parmetros. O primeiro que podemos observar chama-se [global]. Global, em programao significa parmetros gerais. Ento, os parmetros gerais (que valem para todo o Samba) so configurados nesta parte. Os parmetros que vamos entender e alterar so: workgroup = GRUPO : O grupo de trabalho qual o servidor ir fazer parte deve ser informado neste campo. Todos os computadores que fazem parte de uma rede Windows necessitam fazer obrigatoriamente parte de um Grupo de Trabalho. server string = Servidor Local : Nome do servidor na rede. Para exemplificar, toda as vezes que o usurio "bater" no ambiente de rede num computador com Windows, localizar facilmente o Debian. security = share : Tipo de segurana ser aplicada pelo Samba. H duas opes (user e share), onde user restringe o acesso ao sistema por usurios 32

e o share por arquivos. Para elucidao do Samba, vamos utilizar a opo share. Lembrando que voc necessita descomentar o ; no incio do parmetro. hosts allow = 192.168.10. : Redes que podero acessar o Samba. Coloque a informao da sua rede conforme o exemplo passado no parmetro hosts allow. local master = yes : Setando o parmetro como "yes" estamos fazendo o Samba "mandar" na rede. Somente faa isto se voc no tiver nenhum servidor de dados na rede. OBS: Significados de cada termo de configurao do bloco:

comment: Descrio do compartilhamento; browseable: Acessvel via rede; writable: Pode ser escrito ou apagado; path: Caminho do compartilhamento; read only: Somente leitura; public: Pblico; only guest: Somente visitantes; printable: Imprimvel. Feita esta etapa, vamos configurar as permisses das pastas para a elucidao do Samba: [homes] comment = Home Directories browseable = no writable = yes A diretiva homes indica as pastas iniciais de cada usurio. Se o usurio est cadastrado no Debian, ter a sua pasta inicial existente no sistema para armazenar arquivos. Somente o usurio pode ver a sua pasta. [tmp] comment = Espao temporrio path = /tmp read only = no public = yes

33

A diretiva acima indica que h um espao temporrio no Samba (pasta Temp), onde todos os usurios podem jogar seus arquivos. [public] path = /home/public public = yes only guest = yes writable = yes printable = no Um exemplo de diretrio pblico, onde todos podem acessar e compartilhar seus arquivos. Reinicie o sistema para testar o funcionamento do carregamento do Samba: # /etc/init.d/samba restart Aps o feito, tente acessar o seu servidor Samba para verificar se o mesmo rodou com sucesso. V em Executar no menu Iniciar do Windows e digite: //server onde server o hostname ou o endereo IP do seu servidor Samba. OBS: para ver o hostname da sua mquina no Linux, basta digitar o comando hostname na linha de comando. Comprovando que no "histria de pescador", segue um print-screen do samba rodando na mquina de criao de aulas:

Pastas compartilhadas de

um servidor Samba

34

Firewall IPTABLES no Linux


O Linux possui nativamente suporte diferente tipos de aplicativos com a finalidade de proteger o sistema e gerenciar pacotes , tanto liberando/negando ou ainda controlando o fluxo dos pacotes entre as interfaces (controle de banda). Aprender utilizar o firewall do Linux requer algum conhecimento tcnico de pacotes e noes bsicas de rede. Para facilitar um pouco o seu aprendizado, vamos antes entender um pouco de teorias sobre firewalls. Um Firewall uma passagem (gateway) que restringe e controla o fluxo do trfego de dados entre redes, mais comumente entre uma rede empresarial interna e a Internet. Os Firewalls podem tambm estabelecer passagens seguras entre redes internas. Por exemplo, imagine uma instalao militar hipottica que tenha duas redes, uma para informaes no confidenciais e a outra conectada a sistemas estratgicos de defesa. Um Firewall muito eficiente deve ser instalado para assegurar que apenas usurios autorizados tenham acesso a rede mais restrita. Castelos e suas fortificaes so comumente usados em analogia na descrio dos mecanismos de defesa de um sistema de Firewalls. Um castelo projetado para proteger as pessoas do lado de dentro dos ataques e tentativas de invaso vindas do lado de fora. Existe portanto, um permetro de defesa que mantm os atacantes o mais afastados quanto possvel. (paredes externas, fossos, crocodilos, etc). O porto do castelo o posto de controle por onde as pessoas e suprimentos devem passar para poder entrar ou sair do castelo. o ponto de maior concentrao de recursos de defesa do castelo. O Firewall esse posto de controle das redes internas que, de forma ativa, inspeciona e controla o fluxo do trfego de dados entre as redes. No caso de um Firewall com Proxy, o trfego nunca transita livremente entre as redes. Ao invs disso o Proxy re-empacota (ou mascara) as requisies e as respostas. Nenhum Servidor interno acessado diretamente de uma rede externa e nenhum Servidor externo acessado diretamente a partir da rede interna. Pense nas pessoas dentro do castelo. Durante os tempos de tenso, eles podem preferir manter-se dentro do castelo e usar os agentes proxy (representantes) para cuidar de seus interesses e necessidades fora do castelo. Parte de um projeto confivel de uma rede conectada na Internet a criao de uma zona desmilitarizada ou DMZ (demilitarized zone) que justamente uma rede parcialmente protegida que se localiza entre a rede protegida e a rede desprotegida. A DMZ protegida por um sistema de defesa perimetral, muito semelhante aos muros externos e fossos 35

dos castelos. Imagine a praa de comrcio de um castelo. Nos tempos medievais, as pessoas da regio e comerciantes podiam entrar nessa rea do castelo com certa facilidade para entregar e retirar mercadorias. noite, os portes eram fechados e os mantimentos trazidos para dentro do castelo, normalmente aps uma inspeo rigorosa. Os guardas eram posicionados nos portes do castelo durante o dia para inspecionar todas as pessoas que entram e saem do castelo. Se arruaceiros eram localizados tentando entrar no castelo, eles os impediam e os botavam para fora. Observe: Um Firewall pode ser composto de diversos componentes, incluindo um Roteador, um servidor Gateway e um Servidor de Autenticao. Um Firewall monitora o trfego que entra e que sai e filtra, redireciona, re-empacota e/ou rejeita pacotes. Esses pacotes podem ser filtrados com base em seus IPs de origem e destino, porta TCP de origem e destino, nmero total (ou serie ?) de bits do cabealho do TCP e assim por diante. No caso de um Firewall do tipo Proxy, o Firewall o endereo de destino de todas as conexes que saem e entram. Possui a capacidade de executar amplas varreduras de segurana e validao nos pacotes por ele processados. Os Proxys executam verses de softwares e protocolos testados extensivamente e livres de mal-funcionamentos (bugs). Os Firewalls podem fazer cumprir as polticas de segurana de uma organizao atravs da filtragem de todo o trfego que sai e entra na empresa, garantindo que o mesmo est dentro dos parmetros de segurana pr-estabelecidos pelas polticas de uso da rede. Recursos sofisticados de auditoria, deteco de intrusos e metodologias de autenticao so hoje parte da maioria dos Firewalls comerciais. A RFC 2979, O Comportamento e os Requisitos dos Firewalls de Internet ( Behavior of and Requirements for Internet Firewalls ) de Outubro de 2000 descreve outras caractersticas dos Firewalls. Os Hackers e os agressores esto crescendo constantemente em nmero, em agressividade e evoluindo em conhecimento. Em 2000, a China anunciou que no teria como se manter no nvel dos EUA militarmente e que, portanto, ameaou o financiamento de uma guerra de tecnologia da informao contra os Estados Unidos. Os sistemas de computadores das instalaes militares esto sob ataques constantes, sejam eles sofisticados ou ordinrios. Quantos intrusos no detectados podero existir nesses sistemas. 36

Em funo dessas ameaas, os Firewalls so necessrios em praticamente todo computador conectado Internet, especialmente os conectados constantemente como o caso das conexes ADSL (ex. Speedy, Velox, BrTurbo, etc) e cabo (ex. Virtua / AJato, etc), para citar os mais comuns no Brasil. Uma instalao domiciliar comum interliga dois computadores (o dos pais e o das crianas) para que ambos possam usufruir de uma mesma conexo ADSL ou cabo. Considerando que essa conexo est constantemente ligada, ela possui um nmero de IP contnuo que publicado / divulgado como se fosse uma bandeira na Internet. Os Hackers descobrem o IP mais cedo ou mais tarde e voltam constantemente para examinar e descobrir as brechas at serem capazes de danificar os sistemas. Os Firewalls so projetados para proteger esses sistemas (rede como um todo) ao mesmo tempo que minimizam a complexidade da configurao.

Funcionamento do IPTables
Aps realizarmos o estudo terico do funcionamento de um sistema de firewall, necessrio iniciar o estudo do funcionamento do IPTables. O IPTables o sistema nativo de gerenciamento de pacotes para todas as distribuies Linux partir da verso de kernel 2.4. Para ilustrar o funcionamento do IPTables, antes vamos visualizar a imagem abaixo: Funcionamento do kernel Observando a figura, vamos aprender agora o real funcionamento do IPTables:

37

Pacotes INPUT so pacotes de entrada direcionados diretamente ao prprio servidor que est efetuando a filtragem dos pacotes. Por exemplo, controlar conexes de determinadas redes porta 25 (SMTP/E-mail). Pacotes OUTPUT so pacotes gerados pela prpria mquina, ou seja, o prprio servidor que filtra os pacotes, com destino alguma rede. Exemplo, um usurio da rede interna fica proibido de conectar-se via FTP fora da rede interna. Para pacotes FORWARD so pacotes que passam pelo filtro e so direcionados uma outra mquina da rede. Exemplo: Todas as conexes destinadas ao servidor na porta 80 (Apache/WEB), sejam direcionadas (FORWARD) ao ip 192.168.0.10 na porta 80. Temos ainda um assunto extremamente importante , quando estamos trabalhando com IPTables, que seria o uso de polticas. O que seria as polticas de firewall, voc neste primeiro momento saberia dizer? Grande parte dos usurios que iniciam o estudo do IPTables, sequer ouviram falar sobre polticas e sua importncia para a montagem correta de um sistema de segurana. Polticas de firewall permite designar ao IPTables, que tipo de funcionamento este deve tomar para o funcionamento do sistema. Vamos exemplificar, para que voc realmente entenda na prtica: Vamos imaginar que voc queira fechar todo o sistema, impedindo qualquer pacote de entrar no sistema e ir liberando somente os acessos necessrios. Como voc faria? Aprendendo , temos o seguinte: #iptables -P INPUT DROP Para liberar os pacotes, como faramos? Ou seja, o contrrio desta regra, no incio gostaramos de liberar todos os pacotes e ir bloqueando de acordo com a necessidade? #iptables -P INPUT ACCEPT Nota: Voc percebeu que o que muda nas duas regras so as palavras DROP (Descartar) e ACCEPT (Aceitar). Torna-se importante voc buscar o significado das palavras em ingls que voc utiliza para comandar o sistema, pois facilitar e muito no seu dia-a-dia.

38

Quanto sintaxe, estabelecida a seguinte regra: iptables [-t tabela] [opo] [chain] [dados] -j [ao] #iptables -A FORWARD -d 192.168.0.10 -j DROP A regra acima, est informando ao iptables que todas as conexes que sejam repassadas ao IP 192.168.0.10 sejam descartadas. Observando ento o sistema abaixo, percebemos isto: tabela: filter ( a default) opo: -A chain: FORWARD dados: -d 192.168.1.1 ao: DROP Para observar se a regra est funcionando, digite o seguinte comando: #iptables -L Temos tambm outras aes, como ACCEPT e DENY. Vamos imaginar uma segunda situao : #iptables -A FORWARD -d www.biosnett.com.br -j ACCEPT Percebemos que o IPTables est aceitando conexes que so repassadas ao destino www.biosnett.com.br . Demonstrao do funcionamento de regras do IPTables Para listar as regras, podemos fazer da seguinte forma: #iptables -L Para listar as regras de acordo com uma tabela, acrescentamos o nome da tabela, como podemos ver abaixo: #iptables -L FORWARD 39

Para apagar uma regra, bastante simples o procedimento, bastando utilizar o parmetro -D (Deletar):

#iptables -D FORWARD -d www.biosnett.com.br -j ACCEPT Temos tambm uma outra forma de apagar uma regra, atravs de sua ordem em que foi executada. Se sabemos que uma determinada regra foi inserida na terceira posio, o comando para apag-la seria: #iptables -D FORWARD 4 Para apagar as regras do sistema, ainda mantendo a poltica inicial do firewall, realizamos o seguinte: #iptables -F Como o IPTables altamente organizado, tambm podemos apenas deletar pela sua tabela de ao: #iptables -F FORWARD

Apenas temos que sempre estar ciente de que temos as regras (chains) de ao dispostas da seguinte maneira: INPUT : pacotes destinados mquina filtro. OUTPUT: pacotes gerados na mquina filtro. FORWARD:pacotes oriundos de uma mquina e destinados a outra. So pacotes que atravessam a mquina filtro, mas no so destinados a ela. Muito bem, at aqui apenas aprendemos bloquear, liberar e apagar regras , mas claro que necessitamos aprofundar um pouco mais nossos conhecimentos no sistema, como por exemplo, inserir origem e destinos para tratamento dos pacotes. Primeiro, como filtramos a origem dos pacotes? Atravs das formas abaixo: -s --> Source (origem). Estabelece a origem do pacote. Geralmente uma combinao do endereo IP com a mscara de sub-rede, separados por uma barra. Exemplo: 40

-s 172.20.0.0/255.255.0.0 No caso, vimos a sub-rede 172.20.0.0. Para hosts, a mscara sempre ser 255.255.255.255. Exemplo: -s 172.20.5.10/255.255.255.255 Agora vimos o host 172.20.5.10. Ainda no caso de hosts, a mscara pode ser omitida. Caso isso ocorra, o iptables considera a mscara como 255.255.255.255. Exemplo: -s 172.20.5.10 Isso corresponde ao host 172.20.5.10. H um recurso para simplificar a utilizao da mscara de sub-rede. Basta utilizar a quantidade de bits 1 existentes na mscara. Assim, a mscara 255.255.0.0 vira 16. A utilizao fica assim: -s 172.20.0.0/16 Outra possibilidade a designao de hosts pelo nome. Exemplo: -s www.biosnett.com.br Para especificar qualquer origem, utilize a rota default, ou seja, 0.0.0.0/0.0.0.0, tambm admitindo 0/0. -d --> Destination (destino). Estabelece o destino do pacote. Funciona exatamente como o -s, incluindo a sintaxe. -p --> Protocol (protocolo). Especifica o protocolo a ser filtrado. O protocolo IP pode ser especificado pelo seu nmero (vide /etc/protocols) ou pelo nome. Os protocolos mais utilizados so udp, tcp e icmp. Exemplo: -p icmp -i --> In-Interface (interface de entrada). Especifica a interface de entrada. As interfaces existentes podem ser vistas com o comando #ifconfig. O -i no pode ser utilizado com a chain OUTPUT. Exemplo: -i ppp0 O sinal + pode ser utilizado para simbolizar vrias interfaces. Exemplo: 41

-i eth+ eth+ refere-se eth0, eth1, eth2 etc. -o --> Out-Interface (interface de sada). Especifica a interface de sada. Similar a -i, inclusive nas flexibilidades. O -o no pode ser utilizado com a chain INPUT. ! --> Excluso. Utilizado com -s, -d, -p, -i, -o e outros, para excluir o argumento. Exemplo: -s ! 10.0.0.1 Isso refere-se a qualquer endereo de entrada, exceto o 10.0.0.1. -p ! tcp Todos os protocolos, exceto o TCP. --sport --> Source Port. Porta de origem. S funciona com as opes -p udp e -p tcp. Exemplo: -p tcp --sport 80 Refere-se porta 80 sobre protocolo TCP. --dport --> Destination Port. Porta de destino. S funciona com as opes -p udp e p tcp. Similar a --sport. Quanto aes, temos: ACCEPT --> Aceitar. Permite a passagem do pacote. DROP --> Abandonar. No permite a passagem do pacote, descartando-o. No avisa a origem sobre o ocorrido. REJECT --> Igual ao DROP, mas avisa a origem sobre o ocorrido (envia pacote icmp unreachable). LOG --> Cria um log referente regra, em /var/log/messages. Usar antes de outras aes. Diante de muitos exemplos, chegou a hora de visualizarmos exemplos comentados :

42

#iptables -L Lista todas as regras existentes. #iptables -F Apaga todas as regras sem alterar a poltica.

#iptables -P FORWARD DROP Estabelece uma poltica de proibio inicial de passagem de pacotes entre subredes.

#iptables -A FORWARD -j DROP Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede devero ser descartados. #iptables -A FORWARD -j ACCEPT Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede devero ser aceitos. #iptables -A FORWARD -s 10.0.0.0/8 -d www.biosnett.com.br -j DROP Os pacotes oriundos da sub-rede 10.0.0.0 (mscara 255.0.0.0) e destinados aos hosts cujos endereos IP respondem pelo nome www.biosnett.com.br devero ser descartados. Note que se a mquina possuir domnios virtuais, todos esses sero bloqueados. #iptables -A FORWARD -s 10.0.0.0/8 -d www.biosnett.com.br -j REJECT Os pacotes oriundos da sub-rede 10.0.0.0 (mscara 255.0.0.0) e destinados aos hosts cujos endereos IP respondem pelo nome www.biosnett.com.br devero ser descartados. Dever ser enviado um ICMP avisando origem. #iptables -A FORWARD -d www.biosnett.com.br -j DROP Os pacotes oriundos de qualquer lugar e destinados aos hosts cujos endereos IP respondem pelo nome www.biosnett.com.br devero ser descartados. 43

#iptables -A FORWARD -d 10.0.0.0/8 -s www.biosnett.com.br -j DROP Os pacotes destinados sub-rede 10.0.0.0 (mscara 255.0.0.0) e oriundos aos hosts cujos endereos IP respondem pelo nome www.biosnett.com.br devero ser descartados. #iptables -A FORWARD -s www.biosnett.com.br -j DROP Os pacotes oriundos aos hosts cujos endereos IP respondem pelo nome www.biosnett.com.br e destinados a qualquer lugar devero ser descartados. #iptables -A FORWARD -s 200.221.20.0/24 -j DROP Os pacotes oriundos da sub-rede 200.221.20.0 (mscara 255.255.255.0) e destinados a qualquer lugar devero ser descartados. #iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP Os pacotes icmp oriundos do host 10.0.0.5 e destinados a qualquer lugar devero ser descartados. #iptables -A FORWARD -i eth0 -j ACCEPT Os pacotes que entrarem pela interface eth0 sero aceitos. #iptables -A FORWARD -i ! eth0 -j ACCEPT Os pacotes que entrarem por qualquer interface, exceto a eth0, sero aceitos. #iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j LOG O trfego de pacotes TCP oriundos da porta 80 do host 10.0.0.5 e destinados a qualquer lugar dever ser gravado em log. No caso, /var/log/messages. #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT Os pacotes TCP destinados porta 25 de qualquer host devero ser aceitos. Nota: Como sei qual regra vale primeiro quando h um impasse de regras no IPTables? O aluno deve recordar que o impasse de regras, so duas regras iguais, porm com aes diferentes. Por exemplo: 44

A regra A est bloqueando o acesso ao IP 192.168.0.2 A regra B est liberando o acesso ao IP 192.168.0.2 Pergunta: Qual delas ser executada? O IPTables sempre d validade para a primeira regra listada, ou seja, se a regra A j estiver ativa anteriormente, a regra B no ser valida. Ao se fazer determinadas regras, devemos prever o retorno. Assim, digamos que exista a seguinte situao: #iptables -P FORWARD DROP #iptables -A FORWARD -s 10.0.0.0/8 -d 172.20.0.0/16 -j ACCEPT Com as regras anteriores, fechamos todo o FORWARD e depois abrimos da subrede 10.0.0.0 para a sub-rede 172.20.0.0. No entanto, no tornamos possvel a resposta da sub-rede 172.20.0.0 para a sub-rede 10.0.0.0. O correto, ento, seria: #iptables -P FORWARD DROP #iptables -A FORWARD -s 10.0.0.0/8 -d 172.20.0.0/16 -j ACCEPT #iptables -A FORWARD -d 10.0.0.0/8 -s 172.20.0.0/16 -j ACCEPT

Compartilhando a Internet
Como aprendemos um pouco mais sobre o IPTables e seu funcionamento, vamos partir para o aprendizado de como compartilhar a Internet, possibilitando o acesso e posteriormente uma forma de controle maior sobre o acesso de usurios. Primeiro, voc necessita inserir uma segunda placa de rede no Debian, ou no computador onde voc est rodando o sistema de mquina virtual (como o VirtualPC), h a necessidade de uma segunda placa para o teste. Normalmente, como voc ir montar servidores em mquinas reais (principalmente para o compartilhamento de Internet), imprescindvel a segunda placa.

Placa de Rede

45

Com a colocao da segunda placa de rede, voc necessita criar uma rede separada de sua atual rede onde o Debian est atualmente conectado, criando assim uma rede interna, permitindo que voc possa compartilhar a Internet. Quando estamos falando de compartilhar a Internet, estamos falando de NAT. Mas o que NAT? NAT Network Address Translation, ou seja, a traduo das requisies solicitadas pelos computadores que esto atrs do servidor, em solicitaes baseadas no endereo IP real do servidor Debian. Ainda um pouco difcil de entender? Vamos ver na prtica: Temos um servidor Debian no endereo de IP real 200.200.200.1 , que possui computadores que utilizam a internet via NAT. O computador interno, com o endereo IP 192.168.0.10 precisa acessar o site http://www.biosnett.com.br. Este envia uma requisio ao servidor Debian, que possui uma placa de rede conectada rede interna, com o IP 192.168.0.1. O servidor processa, busca e entrega o pedido de acesso ao site. Porm , para todos os outros computadores, quem est solicitando o acesso o Debian com seu IP real 200.200.200.1, e no o computador que est presente na rede interna. Portanto, houve uma traduo de solicitaes, da rede interna para a Internet ao requisitar o pacote e da Internet para a rede interna ao entregar a solicitao. Ainda no lado prtico, vamos imaginar o seguinte cenrio, para que voc no tenha dvidas do que ir fazer em termos de configurao junto ao Debian: Temos um servidor Debian, que recebeu uma segunda placa de rede e criaremos uma rede da classe 192.168.0.0/24. Ou seja, o Debian possuir a placa de rede eth1 com o endereo 192.168.0.1. Na placa onde o Debian ir receber a internet, que via ADSL, h um modem D-LINK com o endereo de IP 10.1.1.1. O debian, portanto ficar com o endereo IP 10.1.1.2 para a eth0, onde receber a internet. Ento, fica assim: eth0 - 192.168.0.1 eth1 - 10.1.1.2 46

Os computadores presentes rede interna possuiro o endereamento partir do final 2. Portanto, seria 192.168.0.2, 192.168.0.3 e assim sucessivamente. Porm, o cuidado maior apontar o Debian como gateway da rede nos computadores da rede interna. Nota: Para configurar a rede , a placa de rede precisa ser detectada. Se voc possui dvidas de como configurar a placa de rede, entre em contato com o professor. Com tudo configurado, vamos passar simplesmente duas linhas para o Debian: #echo 1 > /proc/sys/net/ipv4/ip_forward #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Explicao: A primeira linha habilita o repasse de pacote entre redes, permitindo que o Debian consiga trabalhar com vrias redes. A segunda linha, habilita o compartilhamento de Internet, mascarando as requisies (como explicamos mais acima, o repasse de solicitaes invlidas aos endereos reais). Bem, devemos ainda estar atentos outro detalhe: Precisamos salvar esta configurao de forma definitiva , para que cada reincio o Debian possa "ler" e ativar o compartilhamento. V ao diretrio /etc/init.d e crie um arquivo chamado rc.firewall. Insira as linhas abaixo, exatamente na ordem em que se apresentam: #! /bin/bash /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Depois, basta fazer o seguinte: #update-rc.d /etc/init.d/rc.firewall defaults Desta forma, ser possvel ao iniciar a mquina, carregar o arquivo com a configurao padro para o compartilhamento da Internet. Lembrando que voc pode por as regras demonstradas anteriormente neste mesmo arquivo, com a finalidade de melhor proteger seu servidor.

47

Realizando operaes para segurana via IPTables


Aps entendermos como funciona o IPTables, e como conseguimos realizar bloqueio e liberao de pacotes das formas mais diversas, torna-se possvel adicionarmos regras de seguranas para o sistema, possibilitando assim que o administrador minimize problemas como uso indevido da rede e acessos indesejados. Traduzindo esta iniciativa, estaremos realmente trabalhando com conceito de firewall. Firewall um termo da lngua inglesa que significa "barreira de fogo". Esta barreira de fogo, ou na prtica o Debian com o IPTables restringindo o acesso, permite que o administrador libere ou rejeite acessos rede, de acordo com sua necessidade. O interessante em termos de firewal observar antes de qualquer aplicao prtica, quais as necessidades do usurios, em termos de produtividade (normalmente utilizamos firewall em empresas ou rgos do governo), de forma que seus controles no ocasione problemas para o usurio trabalhar de forma transparente. Muito bem, no primeiro momento voc observou as necessidades reais do usurio, e agora como segunda etapa ir bloquear qualquer aspecto fora do escopo, como uso de downloads sem autorizao por programas como Emule, Kazaa e outros. Barreira com o Debian/IPTables. Observe as dificuldades impostas quem tenta burlar o sistema (homens subindo na parede) Quando imaginamos uma barreira de fogo implementada com o IPTables, a primeira impresso de algo realmente complexo e de difcil execuo. Mas, por incrvel que parea, algo que pode ser facilmente implementado, bastando apenas pacincia por parte do administrador e claro, a compreenso das regras que este est utilizando. Vamos imaginar um cenrio tpico de uma empresa: A empresa do Sr. Jos, possui 20 computadores que usam bastante a rede interna (impresso, acesso ao sistema interno e arquivos), como a Internet. O Sr. Jos pediu ao consultor , voc que aps realizar o curso na BIOSNETT e que est oferecendo seus servios que aprendeu conosco ao cliente, elaborasse e executasse um plano para conteno dos seguintes problemas: 48 que

a) Usurios no esto produzindo (acessam muito orkut e MSN) de acordo com o desejado; b) O link de Internet est lento, devido m utilizao dos recursos (usurios baixam programas e msicas por Emule, Kazaa e outros) c) O Sr. Jos solicita que somente o que "interessa" ao trabalho seja utilizado (parte das polticas de restries sero utilizadas usando IPTables, o restante com Squid que veremos adiante. Mas vamos usar o mesmo "case" para voc entender e executar a resoluo deste cenrio). d) Acompanhar o que o usurio faz (Acessos e se possvel monitorar conversas do MSN). O consultor/aluno ir implementar a poltica de segurana usando o Debian com IPTables, sendo passado ao Sr. Jos, que ficou feliz pelo fato de apenas investir o custo do consultor para resolver o problema, alm do hardware se necessrio. Portanto, temos uma situao que aps voc terminar o curso e iniciar seus trabalhos na rea de administrao de sistemas, que realidade em 99% dos ambientes. Os usurios confundem que o ambiente de trabalho " seu" e podem usufrui-lo da forma que bem desejam. Infelizmente no assim, e o "patro" sempre deseja que seu empregado trabalhe da forma mais correta possvel, ou seja, com o mnimo de custo e mximo de produtividade. Bem, depois do que o Sr. Jos lhe passou, vamos por nosso conhecimento na prtica: Voltando um pouco o assunto, no primeiro momentos compartilhamos a internet e criamos um arquivo chamado rc. firewall. Podemos inserir todas as regras de segurana dentro deste arquivo. Detalhes: Os aspectos da linha a at a linha c sero praticamente resolvidos com o IPTables. O restante vamos conferindo nos prximos tpicos.

1 - Montando o firewall:
Vamos montar o firewall observando as recomendaes pedidas, que so bloquear acessos de programas ilegais no primeiro momento , por parte dos usuarios. Imaginando que a rede do cliente seja 192.168.0.0/24 temos que fazer ento: 49

#nano /etc/init.d/rc.firewall Adicione as linhas abaixo, que estaro comentadas para seu melhor entendimento: #Bloqueando MSN e Orkut de todos os computadores: #Bloquear MSN ##Portas iptables -t filter -A FORWARD -p tpc --dport 6891:6901 -j DROP iptables -t filter -A FORWARD -p tpc --dport 1863 -j DROP iptables -t filter -A FORWARD -p udp --dport 1863 -j DROP iptables -t filter -A FORWARD -p tpc --dport 5190 -j DROP iptables -t filter -A FORWARD -p udp --dport 5190 -j DROP ##Enderecos iptables -A FORWARD -s 192.168.0.0/24 -d e-messenger.net -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d msn.com.br -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d messenger.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d login.passport.net -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d login.passport.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d hotmail.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d loginnet.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d loginnet.passport.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d login.hotmail.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d messenger.hotmail.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d rad.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d ak.englishtonw.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d c.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d storage.msn.com -j DROP iptables -A FORWARD -s 192.168.0.0/24 -d cp.inil.match.com -j DROP #Orkut iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d www.orkut.com -p tcp -m tcp --dport 443 -j DROP #Detalhe, aqui a pagina at pode abrir, porm voc no vai conseguir logar-se (Orkut)

50

#Bloqueio de programas maliciosos (downloads ilegais, como emule e kazaa) iptables -A FORWARD -d 213.248.112.0/24 -j REJECT iptables -A FORWARD -p TCP --dport 1214 -j REJECT iptables -A FORWARD -p TCP --dport 4662:5000 -j REJECT Salve o arquivo. Agora, praticamente j temos restries em termos de firewall para 80% dos problemas do Sr. Jos. O restante dos problemas (de acessos) sero gerenciados pelo Proxy-Cache Squid, que veremos adiante. Basta apenas carregar o arquivo normalmente e fazer as adaptaes adicionais que voc achar necessrio, de acordo com o que aprendemos at o momento.

Controle de Banda com Shaper/CBQ


De todos os assuntos at o momento abordados em que estamos nos referindo ao uso do Debian como responsvel por gerenciar o servio de Internet, torna-se importante tambm realizar o Controle de Banda. O Controle de Banda, no Linux, realizado atravs da ferramenta Shaper ou CBQ, como conhecida. Traduzindo o termo CBQ para o portugus, seria "Fila de Controle de Banda". Na teoria funciona assim: A partir do interesse do administrador em realizar o controle de banda, independente a forma de trabalho utilizada no CBQ, necessrio a criao das regras de controle; As regras de controle basicamente sero lidas pelo software e interpretadas de acordo com a configurao; As regras podem ser alteradas e aplicadas sem a necessidade de reiniciar o servidor;

Esquema

de

controle de banda. Repare que todas as conexes so filtradas

51

A importncia do controle de banda unica: Permite que todos os usurios acessem a Internet de forma inteligente, minimizando o risco de "gargalos" na rede, por parte de usurios que estejam realizando downloads ou upload de arquivos. Vamos imaginar o seguinte cenrio, voltando novamente empresa do Sr. Jos. Na empresa do Sr. Jos, o link de Internet uma ADSL (comum em vrias partes do pas), de baixa velocidade e h a necessidade de estabelecermos para cada estao de trabalho um determinado valor de uso da rede. Perfeito, porm vamos analisar outro aspecto que nos leva da teoria pratica: Se um usurio realizar o download de um arquivo ocupando 100% da banda de Internet disponvel, outros usurios praticamente no navegaro, pois o tempo de resposta ser alto demais; A utilizao mais comum 'dividir' a banda entre usurios. Por exemplo, se temos um link de 1 MB e 10 usurios, podemos deslocar para cada um deles, o mximo de 20% de banda por estao, ou seja, 200k. Assim, temos uma garantia de banda de 50% para cada um dos usurios pertencentes rede. Ento desta forma que iremos trabalhar, realizando a configurao de banda de forma fixa, delegando percentuais cada estao. Para fazer a configurao na prtica, necessrio entender como funciona os parmetros do Shaper, onde poderemos realizar todas as configuraes necessrias. Um detalhe importante, normalmente o Debian suporta o uso do CBQ de forma nativa, porm em alguns casos necessrio recompilar o kernel com o suporte ao CBQ. Ento, vamos ao que interessa aplicar na prtica o conhecimento sem deixar de aprender os detalhes: Primeiro, devemos ativar o shaper, realizando seu download via apt-get: #apt-get install shaper Aps instalarmos, necessrio criar um arquivo de configurao. Detalhe, o seu funcionamento muito simples de entender, primeiramente faremos a explicao do uso do shaper para toda a rede, mas para aprimorar mais seus conhecimentos, vamos explicar tambm controles individuais, como por exemplo, liberar mais banda para o computador do "chefe". 52

Um detalhe importante: O Shaper faz o controle de velocidade , dos downloads e uploads (baixar e enviar arquivos), de forma distinta. Ou seja, se voc quer controlar o download e upload de arquivos, necessita criar dois arquivos de controle para a situao desejada. Vamos ao diretrio /etc/shaper, para dar incio criao dos arquivos de controle de banda: #nano cbq-0002.200-in DEVICE=eth1,10Mbit,1Mbit RATE=200Kbit WEIGHT=20Kbit PRIO=5 RULE=192.168.0.0/24 BOUNDED=yes ISOLATED=yes

Salve o arquivo. Device = o dispositivo que vai ser limitado Rate = a velocidade da banda Weight = a velocidade de tranferencia (normalmente divide a velocidade por 8 ou 10) Prio = prioridade da banda (5 um numero padro) Rule = ip ou rede a ser controlada (por ser assim tbm EX: 192.168.0.0/24) Bounded e Isolated = se tiver em "no" o usurio pode usar a banda excedente Lembre-se de que o parmetro device voc precisa especificar a placa de rede de sada de Internet. Nota: Por que o arquivo chama-se cbq-0002-200.in ? Pelo fato de que o shaper faz o controle de downloads (que realizamos agora, e no ingles IN entrada) e quando trabalhamos com controle de banda de sada o arquivo tem a sua extenso final como out. Para sada a mesma configurao que o arquivo utilizado para download, porm no final do parmetro rule, utilizamos a vrgula (,) para definir que controle de upload: #nano cbq-0002.200-out 53

DEVICE=eth1,10Mbit,1Mbit RATE=200Kbit WEIGHT=20Kbit PRIO=5 RULE=192.168.0.0/24, BOUNDED=yes ISOLATED=yes Salve o arquivo. Agora, observe o detalhe para fixar seus conhecimentos: Utilizamos os dois arquivos para limitar a banda de cada usurio que conecte-se rede em 200k. A banda somente poder chegar ao mximo estabelecido no arquivo , pois no permitimos ao usurio usar banda se houver disponvel, pois nosso controle de banda fixo e no dinmico. O controle que realizamos aplica-se toda rede. Para ativar o shaper, use a sintaxe abaixo: #/etc/init.d/shaper compile #/etc/init.d/shaper restart

Outros controles
1. Como eu faria um controle de banda individual? Tenho um pequeno

provedor e vendo planos de acesso de acordo com a necessidade do cliente? Basta voc seguir a mesma lgica dos arquivos acima, porm lembrando que voc precisa seguir a sequncia (cbq-0003.banda-in e out. Quando lidamos com parmetros de controle de banda individual, necessitamos sempre alterar o seguinte: O parmetro Rate, Weight e Rule. No parmetro Rule voc informa o endereo IP do cliente que precisa de banda adicional, faa isto para os dois arquivos. 2. "dinmico"? Professor, o senhor recomenda para provedores o controle de banda

54

O controle de banda dinmico uma "faca" de dois gumes: Se voc liberar banda adicional desde que no comprometa a sua estrutura, o usurio ficar contente pelo servio. Porm, comum tambm o usurio "achar" que tem direito mais largura de banda sem pagar nada mais por isso. Ento, voc pode ter usurios que ficam insatisfeitos quando sua largura de banda est em nveis normais. 3. Precisa restartar o servio cada alterao de arquivo? Sim, importante. Somente assim o shaper realiza a leitura das alteraes provocadas nos arquivos.

Proxy-Cache Squid
Aps compartilharmos a Internet de forma simples, h a necessidade de utilizarmos o servio de Proxy-Cache. O que seria um servio de Proxy-Cache e qual sua real necessidade? O proxy surgiu da necessidade de conectar uma rede local Internet atravs de um computador da rede que compartilha sua conexo com as demais mquinas da rede. Em outras palavras, se considerarmos que a rede local uma rede interna e a Internet uma rede externa, podemos dizer que o proxy que permite outras mquinas terem acesso externo. Geralmente, mquinas da rede interna no possuem endereos vlidos na Internet e, portanto, no tm uma conexo direta com a Internet. Assim, toda solicitao de conexo de uma mquina da rede local para um host da Internet direcionada ao proxy, este, por sua vez, realiza o contato com o host desejado, repassando a resposta solicitao para a mquina da rede local. Por este motivo, que utilizado o termo proxy para este tipo de servio, que traduzido para procurador ou intermedirio. Para facilitar o entendimento: O Squid gerencia o acesso do usurio navegao na Internet e tambm tem outro recurso muito importante, cache de pginas. Ou seja, com o recurso de cache, se um usurio acessar www.biosnett.com.br , o contedo do site fica armazenado no Squid. O prximo usurio que realizar novamente a conexo, no precisar buscar o site diretamente no servidor onde est www.biosnett.com.br. Simplesmente o Squid "sabe" que j tem os dados armazenados e entrega para o usurio solicitante. 55

Vantagem? Todas, o acesso mais rpido e h o uso mais racional da banda de Internet. A maioria dos provedores usam o Squid pelas enormes vantagens em economia do consumo de banda.

Proxy-Cache Squid: Esquema de funcionamento

Outras caractersticas do Squid: Controle de Acesso: Permite ao administrador gerenciar o que cada usurio ou a rede por inteiro pode acessar. Autenticao: O usurio pode navegar, desde que identifique-se anteriormente. Vamos simular a instalao e configurao do Squid para funcionamento como Cache, liberando toda a rede para realizar o acesso. Tambm iremos fazer com que o Squid seja transparente, ou seja, o usurio no percebe ao navegar que h um acelerador de acessos na sua conexo. #apt-get install squid

Instalao do Squid
56

Feita a instalao do Squid, necessrio realizar a sua configurao, que inicialmente feita somente em um nico arquivo de configurao, o squid.conf. O squid.conf est localizado em /usr/local/etc/squid. Vamos abri-lo para entender os principais parmetros que utilizaremos inicialmente para configur-lo de forma transparente (sem que o usurio perceba que h um proxy na rede). #nano /etc/squid/squid.conf http_port 3128 : O Squid por ser um aplicativo , necessita de uma porta para realizar a conexo entre o usurio, sendo a porta padro a porta 3128. Graas mudana de regras nas verses 2.6 do Squid, muito simples ativar o uso do proxy transparente: http_port 3128 transparent acl our_networks src 192.168.1.0/24 192.168.2.0/24: Esta regra permite que voc libere determinadas redes ou computadores passarem pelo proxy. Vamos imaginar que voc tenha uma rede 192.168.0.0/24. Ficaria da seguinte maneira: acl our_networks src 192.168.0.0/24 OBS: Descomente a acl e o http_access retirando os #. Mas importante antes entendermos o que a importncia e significado de uma ACL. No incio do texto observamos que o proxy-cache faz algumas tarefas, dentre as quais armazenar contedo e controlar acesso. Muito bem, ento uma ACL trata de lista de controle de acessos, determinando quem faz o que, e inclusive em quais horrios. ACL vm de Acess Control List, mais uma vez torna-se importante o conhecimento tcnico do ingls. Com estas configuraes j possuimos um proxy realizando a tarefa bsica de armazenar contedo para otimizar o trfego de rede, e uma regra que permite o uso da rede 192.168.0.0/24 para acesso este, evitando problemas de segurana.

A prxima etapa criar os diretrios do Squid para que este possa armazenar de forma correta os arquivos.

#squid -z

57

Muito bem, o Squid est funcionando de forma correta, pronto para voc test-lo de forma eficiente. Agora voc vai entender como o Squid pode funcionar em harmonia com o IPTables, realizando a transparncia de acesso.

Ativando o modo transparente


Para ativar o modo transparente, basta inserir dentro do seu arquivo de firewall a seguinte linha: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Nota: Lembrando que eth0 seria a placa de rede interna.

Trabalhando com regras de controle


Vamos comear do preceito que atualmente j temos um Proxy-Cache no ar, perfeitamente funcional, e h um certo "abuso" de certos usurios acesso em determinados sites e necessitamos realizar um controle de acesso. No caso em questo, os usurios esto acessando sites que necessitam ser bloqueador por um filtro de palavras. Como poderemos realizar esta configurao atravs de uma ACL? Primeiro devemos declarar a existncia da ACL e seu filtro de palavras: acl bloquear url_regex playboy putaria sexo hardsex sexy http_access deny bloquear Muito bem, j possuimos inicialmente um filtro de palavras bsicos. Mas se houver a necessidade de criarmos uma lista em formato texto, para facilitar o controle de acesso, como ficaria esta regra? acl bloquear url_regex -i "/usr/local/etc/squid/bloqueados.txt" http_access deny bloquear Outro fato importante e muitas vezes requisitados pelo administrador. Em determinados horrios, os usurios podem acessar quaisquer sites, normalmente seria fora do expediente por exemplo. Como faramos isto com o Squid? acl bloquear url_regex -i "/usr/local/etc/squid/bloqueados.txt" acl horarionegado time MTWHF 07:30-18:00 58

http_access deny bloquear !horarionegado Assim, os sites proibidos somente sero acessados fora do horrio comercial, quando houver necessidade.

Auditoria do Squid com Sarg


O Squid possui alm de todos os benefcios, a capacidade de logar todos os acessos permitidos ou no, realizados pelos usurios. Sabiamente, alguns desenvolvedores elaboraram ferramentas que analisam estes dados e tornam-o visveis em forma de acessos organizados por usurios, tempo utilizado na navegao em sites e principalmente os sites visitados. Para uma tomada de deciso, este material extremamente importante principalmente quando necessrio analisar o acesso dos usurios na rede, para liberar ou bloquear acessos quando necessrio. O Sarg justamente o aplicativo que permite interpretar estes dados , que so gerados em HTML. O seu uso e instalao so realizados de forma bastante simples.

#apt-get install sarg


Concluda a instalao necessrio configurar um nico arquivo, o sarg.conf, para repassar algumas informaes importantes ao aplicativo. Confira como os parmetros devem ficar.

Nota: Os parmetros citados precisam ser descomentados.

#nano /etc/squid/sarg.conf Lingua ser exibida nos relatrios: language Portuguese Ttulo do relatrio title "Auditoria em usurios utilizadores da Internet" Diretrio a gerar os dados para posterior visualizao 59

output_dir /var/www/apache2-default/relatorios/ Se o diretrio no existir, crie-o: mkdir /var/www/virtual/apache2-default/relatorios/

Nota: O diretrio presente em output_dir deve ser visvel pelo Apache, independente se o domnio Virtual Host ou no. Diretorio armazenar arquivos temporrios temporary_dir /tmp Basicamente, o sarg precisar destes dados para funcionar corretamente. Basta depois dar um rehash e ger-lo: #sarg

Para acessar, o link ser algo similar : http://ip/relatorios

O resultado similar abaixo, bastando voc ser ao

clicar em cada endereo IP

para obter mais informaes de acesso.

60