Você está na página 1de 69

A P O S T I L A

D E
G N U / L I N U X
1. KERNEL
Kernel de um sistema operacional entendido como o ncleo deste ou, numa
traduo literal, cerne. Ele representa a camada mais baixa de interface com o
Hardware, sendo responsvel por gerenciar os recursos do sistema computacional
como um todo. no kernel que esto definidas funes para operao com
perifricos (mouse, disco, impressora, interface serial/interface paralela),
gerenciamento de memria, entre outros. Resumidamente, o kernel um conjunto
de programas que fornece para os programas de usurio (aplicativos) uma interface
para utilizar os recursos do sistema.
Quanto sua arquitetura, o kernel pode ser monoltico - em um nico bloco, com
todas as funcionalidades carregadas na memria - ou modular (micro-kernel) - com
os mdulos especficos para cada tarefa carregados opcionalmente, dinamicamente.
O kernel a parte mais importante do sistema operacional, pois, sem ele, a cada
programa novo que se criasse seria necessrio que o programador se preocupasse
em escrever as funes de entrada/sada, de impresso, entre outras, em baixo
nvel, causando uma duplicao de trabalho e uma perda enorme de tempo. Como o
kernel j fornece a interface para que os programas possam acessar os recursos do
sistema de um nvel mais alto e de forma transparente, fica resolvido o problema da
duplicao do trabalho.
Quando h perifricos ou elementos de um sistema computacional que o kernel no
cobre, ento se faz necessrio escrever a interface para eles, os chamados device
drivers. Geralmente, os kernels oferecem uma funo para se executar chamadas
de sistema, como por exemplo a ioctl(), funo essa que podemos denominar de /O
Control do Linux. Valendo-se dessa funo, podem-se escrever rotinas para
qualquer dispositivo.
1.1 Kernel monoltico.
Kernel monoltico ou mono-bloco um kernel que implementa um interface de alto
nvel para possibilitar chamadas de sistema especficas para gesto de processos,
concorrncia e gesto de memria por parte de mdulos dedicados que so
1
A P O S T I L A
D E
G N U / L I N U X
executados com privilgios especiais.
Alguns exemplos deste tipo de kernel:
BSD
Linux
1.2 Micro-Kernel.
Micro-kernel um termo usado para caracterizar o sistema cujas funcionalidades do
sistema saram do kernel e foram para servidores, que se comunicam com um
ncleo mnimo, usando o mnimo possvel o "espao do sistema" (nesse local o
programa tem acesso a todas as instrues e a todo o hardware) e deixando o
mximo de recursos rodando no "espao do usurio" (no espao do usurio, o
software sofre algumas restries, no podendo acessar alguns hardwares, nem tem
acesso a todas as instrues).
Alguns exemplos deste tipo de kernel:
Hurd
Minix
Microsoft Windows NT
2
A P O S T I L A
D E
G N U / L I N U X
1.3 Recompilando o Kernel.
A recompilao do kernel tem de ser extremamente observada. nela que voc
poder colocar suporte a muitos tipos de hardwares, habilitar recursos do kernel
(como firewall e compartilhamento NAT), entre outras coisas. Muitas distribuies
incluem kernels j compilados e prontos para usar, mas sempre recomendado que
voc compile o seu kernel para otimiz-lo conforme suas necessidades.
Alguns pacotes precisam ser instalados antes da recompilao do kernel, entre eles,
os pricipais so o gcc-4.0, initrd-tools, automake1.9, make e libncurses5-dev.
Pacotes de descompactao tambm sero necessrios, portanto devemos instalar
os pacotes tar, bzip2 e gzip.
Descompactando o kernel
Em primeiro lugar, vamos baixar uma imagem e descompact-la em algum diretrio,
para depois comearmos a configurar a compilao. Os cdigos-fonte do kernel em
suas vrias verses podem ser todos encontrados atravs do seguinte endereo:
http://www.kernel.org Pgina oficial do Kernel
ftp://ftp.kernel.org FTP oficial do Kernel
http://ftp.kernel.org Acesso HTTP ao FTP oficial do Kernel
ftp://ftp.br.kernel.org Mirror Brasileiro do FTP do kernel
Para facilitar, vamos um browser em modo texto para baixar a ltima verso do
kernel, para isso deveremos instalar o links atravs do apt-get com o seguinte
comando:
# apt-get install links
Para acessarmos a pgina do kernel devemos digitar o seguinte comando no shell:
# links www.kernel.org
Vamos baixar a ltima verso disponvel do kernel, utilizando a seta de
direcionamento para baixo at chegarmos a letra F (Full), em seguida precione a
letra D (download) e em seguida pressione a tecla enter para iniciar o download.
Terminado o download, utilizaremos o comando mv para mover o pacote do kernel
para o diretrio /usr/src.
# mv linux-v.x.y.z.tar.bz2 /usr/src
Agora, portanto hora de descompactarmos o cdigo fonte do kernel, para isso
3
A P O S T I L A
D E
G N U / L I N U X
utilizaremos a seguinte linhas de comando:
# cd /usr/src
# tar -xvjf linux-v.x.y.z.tar.bz2
Para facilitar, criaremos um link simblico do diretrio nos quais os fontes do kernel
foram extraidos.
# ln -s linux-v.x.y.z linux
No proximo passo, iniciaremos a configurao para posteriormente compilarmos o
kernel.
# cd linux
# make menuconfig
extremamente necessrio que voc tenha todo o conhecimento sobre o hardware
utilizado no computador, e servios para os quais ele dever atender.
Para verificarmos uma listagem simplificada de hardware, utilizaremos o segundo
terminal disponvel, apertando as teclas Alt+F2.
Em seguida, digitaremos o seguinte comando:
# lspci
4
A P O S T I L A
D E
G N U / L I N U X
Desta forma saberemos quais so os principais hardwares instalados no computador
para que possamos passar informaes corretas ao kernel.
Sabendo qual o tipo de hardware existente no computador, retornaremos janela
de configurao do kernel pressionando as teclas Alt+F1.
Dentro das configuraes do kernel Linux, podemos setar as opes como build in
(compilado diretamente dentro de uma nica estrutura do kernel, sendo carregado
sempre que o computador for iniciado e representado por um *) ou podemos ainda
setar as opes como modules (modulos que podem ou no ser carregados pelo
kernel em sua inicializao e representado pela letra M).
Aps todas as modificaes necessrias, iremos salvar o arquivo de configurao
selecionando a opo "Save Configuration to an Alternate File
Agora iremos salvar as configuraes do kernel com o nome de config-meu-kernel
(pode ser qualquer outro nome desde que se recorde posteriormente).
5
A P O S T I L A
D E
G N U / L I N U X
Agora s sair selecionando a opo Exit ele ir questionar se deseja salvar,
selecione Yes.
Com o kernel configurado, iniciaremos a compilao com o seguinte comando:
# make bzImage
Se todas as configuraes do kernel estiverem corretas, o kernel j estar compilado
e ser salvo dentro do diretrio /usr/src/linux/arch/i386/boot/ , caso contrrio,
deveremos reconfigur-lo identificando na mensagem de erro qual o causador do
problema e rodar novamente o comando acima descrito.
O prximo passo instalar os mdulos. Para isso utilizaremos os seguintes
comandos:
# make modules
# make modulesinstall
Vamos agora copiar a imagem do kernel compilado, do nosso arquivo de
configuraes e um arquivinho chamado System.map para o diretrio /boot nota-se
que o nome do kernel geralmente inici-se por vmlinuz, portanto ao copiarmos o
arquivo bzmage, j estaremos renomeando-o com esse prefixo mais sua verso
tudo isso com os seguintes comandos:
6
A P O S T I L A
D E
G N U / L I N U X
# cp /usr/src/linux/arc!/i"#$/boot/bzImage /boot/vmlinuz-v.x.y.z
# cp /usr/src/linux/%ystem.map /boot
# cp /usr/src/linux/config-meu-kernel /boot
Agora necesrio criarmos uma imagem initrd, que uma imagem relativa aos
procedimentos de inicializao do sistema, para isso usaremos o seguinte comando:
# mkinitrd /lib/modules/v.x.y.z/ -o /boot/initrd-v.x.y.z.img
Para organizar a estrutura de kernels, uma vez que pode-se ter mais de um no
sistema operacional GNU/Linux, vamos criar links simblicos no diretrio raiz com os
seguintes comandos:
# ln -s /boot/vmlinuz-v.x.y.z /
# ln -s /boot/initrd.v.x.y.z.img /
Agora s adicionar as linhas no /etc/lilo.conf e redar o comando lilo ou adicionar
em menu.lst dentro do diretrio /boot/grub/ conforme j aprendido acima.
!"D#D$%%%
Lembre-se de sempre adicionar uma nova entrada em seu arquivo de configurao
do kernel, no seguro substitu-las, pois, o novo kernel pode no funcionar aps a
prxima reinicializao.
&
A P O S T I L A
D E
G N U / L I N U X
2. 'ER("D$R D)*
O DHCP (Dynamic Host Control Protocol) um protocolo utilizado para
endereamento dinmico de hosts. Atravs do DHCP, possvel enderear uma
grande quantidade de hosts de uma rede, sem perder um grande tempo
configurando estaes de trabalho.
Existe um servio no GNU/LNUX chamado dhcpd que pode ser configurado para
fornecer endereos P's automaticamente para os clientes da rede. Com isso, o
administrador da rede ganha tempo, tem uma configurao mais confivel e muito
mais estvel em todas as suas estaes. Alm disso, possvel ter um controle dos
endereos utilizados pelos hosts da rede e fornecer algumas configuraes
adicionais, tais como, endereo de gateway, servidor de DNS primrio, servidor de
DNS secundrio, entre outros.
2.1 "nstalando o ser+idor e cliente d,cp.
Para instalar o servidor e o cliente de dhcp, devemos usar o seguinte comando:
# apt-get install d!cp"-server d!cp"-common d!cp-client
nstalado o servidor, daremos incio sua configurao, seu arquivo encontra-se
dentro do diretrio /etc/dhcp3/dhcpd.conf
As linhas que contiverem # na frente, no sero lidas pelo servidor DHCP, pois
estaro comentadas.
# vi /etc/d!cp"/d!cpd.conf
ddns-update-style none&
Esta opo especifica se o servidor !C" dever# tentar atuali$ar o %S &uando
um arrendamento ' aceito ou devolvido( %a implementao da )SC* esta opo '
obrigat+ria(
option domain-name 'marcioleonardi.com.br'&
-
A P O S T I L A
D E
G N U / L I N U X
Esta opo especifica o dom,nio &ue ser# fornecido aos clientes como o principal
dom,nio de busca(
option domain-name-servers 2((.)$*.2)$.)+,2((.)$*.2)$.)-&
Esta opo especifica uma lista separada por v,rgulas de servidores %S &ue o
cliente deve utili$ar(
default-lease-time $((&
-m cliente pode re&uerer um per,odo de tempo espec,fico v#lido para um
arrendamento( Seno o servidor dever# fa$er um arrendamento com este pra$o de
expirao (em segundos)(
max-lease-time *2((&
Se voc. tiver mais endereos )" do &ue m#&uinas os endereos )" das esta/es
raramente vai precisar mudar( 0as* no caso de uma rede congestionada* o 1 max2
lease2time1 determina o tempo m#ximo &ue uma estao pode usar um
determinado endereo )"( )sso foi plane3ado para ambientes onde 4a3a escasse$ de
endereos )"* em condi/es normais estas duas op/es no so muito
importantes(
aut!oritative&
Em uma rede com 5 servidores !C"* esta opo o torna padro da rede local(
subnet ).2.)$#.).( netmask 2--.2--.2--.( /
range ).2.)$#.).)() ).2.)$#.).2-+&
option routers ).2.)$#.).)&
0
A opo 1range1 determina a faixa de endereos )" &ue ser# usada pelo servidor(
Se voc. utili$a a faixa de endereos 675(689(6(: at' 675(689(6(5;< por exemplo*
pode reservar os endereos de 675(689(6(6 a 675(689(6(6:: para esta/es
configuradas com )" fixo e usar os demais para o !C"(
A opo routers declara o gate=a> padro &ue ser# fornecido aos clientes(
!ost 1arcio /
!ardware et!ernet ((2(32$42#425*2.6&
fixed-address ).2.)$#.).-&
.
A P O S T I L A
D E
G N U / L I N U X
0
O endereo MAC de um sistema (de forma que o servidor DHCP possa reconhec-
lo quando dele receber uma solicitao).
Especifica que o sistema sempre deve receber o mesmo endereo P. Note que um
hostname funciona aqui, desde que o servidor DHCP seja capaz de resolver o
nome via DNS antes de responder solicitao com as informaes do
arrendamento.
Desta forma estar finalizada a configurao do seu servidor DHCP devendo inici-
lo atravs do seguintes comandos:
# /etc/init.d/d!cp"-server stop
# /etc/init.d/d!cp"-server start
1/
A P O S T I L A
D E
G N U / L I N U X
3. 'ER("D$R 01*
FTP significa File Transfer Protocol (Protocolo de Transferncia de Arquivos), e
uma forma bastante rpida e verstil de transferir arquivos, sendo uma das mais
usadas na internet.
Pode referir-se tanto ao protocolo quanto ao programa que implementa este
protocolo (neste caso, tradicionalmente aparece em letras minsculas, por influncia
do programa de transferncia de arquivos do Unix).
A transferncia de dados em redes de computadores envolve normalmente
transferncia de arquivos e acesso a sistemas de arquivos remotos (com a mesma
interface usada nos arquivos locais). O FTP (RFC 959) baseado no TCP, mas
anterior pilha de protocolos TCP/P, sendo posteriormente adaptado para o TCP/P.
o standard da pilha TCP/P para transferir arquivos, um protocolo genrico
independente de hardware e do sistema operacional e transfere arquivos por livre
arbtrio, tendo em conta restries de acesso e propriedades dos arquivos.
Existem diversos servidores FTP disponvel para GNU/Linux, vamos utilizar o
ProFTPd como exemplo para nossa experincia.
3.1 "nstalando o *ro01*d.
Como j vimos antes, vamos instalar o servidor atravs do comando apt, com os
seguintes parmetros:
# apt-get install proftpd proftpd-common
3.2 on2i34rando o *ro01*d.
Como todo daemon de um sistema GNU/Linux e Unix, o ProFTPd configurado
atravs de um arquivo texto, o /etc/proftpd.conf. Com um simples editor de texto
possvel efetuar sua configurao. interessante observar que o ProFTPd apenas l
seu arquivo de configurao ao ser iniciado. Portanto aps cada modificao
deveremos reinici-lo.
A sintaxe do arquivo /etc/proftpd.conf simples. O ProFTPd usa o conceito de
contextos em sua configurao e nestes contextos temos as chamadas diretivas.
Contexto uma configurao global de um certo comportamento do ProFTPd
11
A P O S T I L A
D E
G N U / L I N U X
enquanto as diretivas so as sub-opes que configuram os contextos.
Contextos do ProFTPd.
5asicamente temos dois conte6tos principais7
Contexto Principal: Contm as configuraes default que sero utilizados inclusive
por outros contextos.
Contexto <Directory DR >: Determina o comportamento do ProFTPd quando
acessando e/ou servindo o diretrio DR.
Abaixo temos um exemplo de configurao do ProFTPd (perceba que a
configurao default de nossa verso customizada).
Exemplo 1. exemplo do configurao do ProFTPd
#3onfigura78o do 9ro5:9d
%erver;ame '5:9-:4%:4'
%erver:ype standalone
<efault%erver on
%erver6dmin root=local!ost
#9ara efetuar download aos peda7os
6llow>etrieve>estart on
#porta 2) padr8o
port 2)
#?mask (22 @ um bom padr8o pra prevenir Aue novos diretBrios e
arAuivos
#sejam gravCveis pelo grupo de usuCrios
?mask (22
#Duantidade mCxima de instEncias
1axInstances )(
#?suCrio e grupo para o servidor no caso de especifica78o
12
A P O S T I L A
D E
G N U / L I N U X
especifica
#?ser nobody
#Froup nobody
#6utentica78o de usuCrio...utilizando o usuCrio do prBpio server
F;?/Ginux
6ut!?ser5ile /etc/passwd
#login como root
>ootGogin on
#5az com Aue o usuCrio apenas acesse seu diretBrio HIJ14
<efault>oot K
L<irectory /MN
Todas as devias alteraes realizadas vamos reiniciar o processo com o seguinte
comando:
# /etc/init.d/proftpd stop
# /etc/init.d/proftpd start
13
A P O S T I L A
D E
G N U / L I N U X
#l34mas direti+as do conte6to principal7
14
A P O S T I L A
D E
G N U / L I N U X
#l34mas direti+as do conte6to 8Director9:
15
A P O S T I L A
D E
G N U / L I N U X
4. 'ER("D$R $*EN'')
O Secure Shell ou SSH , simultaneamente, um programa de computador e um
protocolo de rede que permite a conexo com outro computador na rede, de forma a
executar comandos de uma unidade remota. Possui as mesmas funcionalidades do
TELNET, com a vantagem da conexo entre o cliente e o servidor ser criptografada.
As redes de computadores so uma mdia inerentemente insegura. A menos que
voc tem certeza que seus pacotes nunca iro passar por um roteador ou
computador que voc no controle direto sobre, seus dados no esto seguros. Eles
podem ser visualizados por sysadmins pouco confiveis ou por um script kiddie, ele
pode ser alterado em trnsito, ou pode ser interceptado e trocado por dados
completamente diferentes.
4.1 ripto3ra2ia e #ssinat4ras Di3itais.
Como mensionado anteriormente, voc no pode simplesmente confiar em qualquer
dado que passe pela nternet sem algum mtodo para garantir que o dado que voc
envia o mesmo dado que recebido do outro lado. sto parece paranico, e na
maioria dos casos , mas sempre melhor estar seguro que ter problemas. muito
fcil para qualquer um falsificar os seus dados durante o trnsito. E se voc tem
dados que so sensveis ou privados, certamente voc no vai querer que J.
Random Hacker ou H. Bored Sysadmin leia o mesmo. aqui onde a criptografia e a
assinatura digital entram.
Vejamos um exemplo concreto de um problema tpico de segurana. Suponha que o
servidor A deseje envia uma mensagem ao servidor B. Se a mensagem for enviada
descriptografada e passa pelo roteador C, qualquer informao enviada visvel a
root@C. Se root@C hostil, ele pode resolver ler o que o servidor A est tentando
enviar para o servidor B, e, em vez de repassar a mensagem, enviar uma
mensagem falsa para B, e fazer a mesma coisa no retorno de B para A. Este o
ataque conhecido como "man-in-the-midle" ou "intermedirio".
16
A P O S T I L A
D E
G N U / L I N U X
Dados 'ens+eis
Tipicamente os pacotes enviados pela nternet viajam por vrios roteadores antes de
chegar a seu destino. Cada um destes roteadores um perigo potencial e possui
completo acesso a seus dados. Esta , claramente, uma situao inaceitvel para
muitos dados importantes ou sensveis. nfelizmente as pessoas constantemente
esto enviando segredos da empresa, informaes pessoais, senhas, nmeros de
carto de crdito, e outros dados privados no criptografados pela internet. Ou elas
no percebem o perigo disto ou simplesmente no acreditam que valha o esforo a
prpria proteo.
#4tentica;<o
Outra rea em que a tcnica de criptografia usada na rea de autenticao -
como eu fico sabendo que voc quem voc diz ser? Um nome de login e senha
podem ter sido seguros h 20 anos atrs, mas eles so facilmente roubados ou
violados. E um esquema de login e senha pode fornecer um servio bsico de
autenticao, mas uma vez autenticado, eles no garantem que os dados recebidos
sejam exatamente os mesmos que foram enviados. Criptografia e assinaturas
digitais so extremamente importantes para resolver estes problemas
(particularmente sistemas de chave pblica).
ripto3ra2ia de ,a+e *ri+ada +s. *=>lica
Tradicionalmente a criptografia tm se baseado em um segredo compartilhado,
conhecido como chave. Esta chave usada em uma frmula matemtica para
embaralhar a informao em questo de forma que ela no possa ser
desembaralhada facilmente sem o conhecimento da chave secreta. Enquanto esta
tcnica pode ser bem segura quando estiver em uso um bom algoritmo e uma chave
de tamanho razovel, ela introduz o problema da troca de chaves. Como voc pode
se comunicar com um host remoto na nternet quando voc no tem um canal
seguro de comunicao que voc possa utilizar para transferir a chave de
criptografia em primeiro lugar? Este problema tem sido resolvido tipicamente pela
transferncia das chaves pessoalmente.
A presuno que a criptografia requer o compartilhamento do conhecimento de uma
chave est to entranhado que ele geralmente no reconhecido. Simplesmente
assumido pela maioria que este um defeito das tcnicas de criptografia.
Entretanto, tudo mudou em 1976 quando Martin Hellman, Whitfield Diffie, e Ralph
Merkle apresentaram a idia da criptografia de chave pblica na Stanford University.
A criptografia de chave pblica aborda o problema de um ngulo completamente
diferente. Aqui temos 2 chaves - uma chave privada, que protegida
cuidadosamente, e uma chave pblica, que pode ser passada a quem a quiser. A
chave pblica pode ser derivada da chave privada, mas no vice-versa. Os
1&
A P O S T I L A
D E
G N U / L I N U X
algoritmos de chave pblica possuem a propriedade que os dados criptografados
pela chave pblica podem ser somente descriptografados pela chave privada
correspondente.
Com esta descoberta, o problema da troca de chaves est praticamente resolvido.
No h mais necessidade de uma mdia segura para a transferncia inicial de
chaves, mas voc pode simplesmente criptografar os dados com a chave pblica do
recipiente e ter certeza que os dados s podem ser recuperados com a chave
privada dele, a qual nunca precisa sair do controle dele. sto tambm resolve o
problema mencionado acima da autenticao - se voc quer ter certeza que algum
quemdiz ser, simplesmente criptografe uma pequena quantia de dados (conhecida
como "desafio") usando sua chave pblica, e envie a esta pessoa. Esta pessoa
ento descriptografa a mesma com sua chave privada e envia de volta
(possivelmente criptografada com tua chave pblica). Se os dados que voc receber
so idnticos aos dados originalmente enviados, voc sabe que ele quem diz ser.
Ento por qu a criptografia de chave privada ainda utilizada? A razo tem a ver
com eficincia. Os mtodos atuais de criptografia com chave pblica so muito mais
lentos que os mtodos de chave privada, tornando, desta forma, impraticvel a
criptografia de enormes quantias de dados. Frequentemente, (como com o SSH),
um mtodo de chave pblica pode ser utilizado para autenticao e para a troca de
uma chave privada. Se tudo der certo com estes dois passos, a criptografia de chave
privada pode ser usada.
04n;?es de )as,
Uma funo de Hash simplesmente uma funo que pega uma enorme quantia de
dados e encolhe a mesma para um tamanho bem menor. uma funo de uma via
(ou seja, a informao original no pode ser determinada a partir do hash
resultante). Funes criptogrficas de hash tem a propriedade adicional que uma
pequena alterao nos dados originais resulta em uma grande alterao no hash
resultante, o que torna extremamente difcil alterar os dados e manter o mesmo hash
resultante.
#ssinat4ras Di3itais
Assinaturas digitais fazem uso das funes de hash criptogrficas para mostrar que
o que o recipiente v , de fato, a informao que foi originalmente enviada.
Algoritmos de assinatura digital tpicos so baseados na criptografia de chave
pblica, e uma viso simplificada de como funcionam mostrada no seguinte
exemplo:
A pessoa A compe um email para a pessoa B. Quando o email est pronto para ser
enviado, ele passado por um algoritmo criptogrfico de hash e o hash resultante
criptografado com a chave privada de A e anexado ao email. Quando a pessoa B
recebe o email, ela descriptografa a assinatura com a chave pblica de A e passa o
1-
A P O S T I L A
D E
G N U / L I N U X
email pelo mesmo algoritmo de hash. Se o hash resultante idntico ao hash
descriptografado, a pessoa B pode confiar que o email no foi adulterado durante o
transporte. Mesmo pequenas alteraes, como o acrscimo de pontuaes ou
espaos ir resultar em um hash completamente diferente.
Assinaturas digitais so uma exigncia legal em alguns estados por que so
(praticamente) impossveis de serem forjadas - certamente so muito mais difceis
de forjar que uma assinatura fsica. Uma aplicao popular para a criao e
verificao de assinaturas digitais (bem como criptografar e descriptografar) o
PGP, ou sua alternativa livre, o GnuPG.
4.2 "nstala;<o do $pen'')
Para instalarmos o OpenSSH, sero necessrios 3 (trs) pacotes, que devero ser
instalados via apt-get com o seguinte comando:
# apt-get install openss!-server openss!-client ss!
4.3 $pen'') 5@sico
O OpenSSH uma implementao livre dos protocolos SSH, verso 1 e 2. O nome
secure shell um pouco equivocado, uma vez que o mesmo no um shell da
mesma forma que o bash ou do tcsh so shell, mas mais do tipo do rsh. Ele
usado quando preciso fazer um acesso remoto seguro a uma mquina Unix, mas
devido prevalncia de script kiddies que adorariam conseguir sua senha e ober
acesso livre a teus servidores, uma boa idia usar o mesmo sempre que voc
precisar fazer algum acesso remoto.
O uso mais bsico do ssh, e a forma que ele usado pela maioria das pessoas,
como substituto do telnet. O telnet transmite toda comunicao, incluindo o login e
senha, em texto plano, e esta informao pode facilmente ser interceptadapor
qualquer um que tenha acesso fsico a qualquer rede ou roteador em que os seus
pacotes passarem. Qualquer coisa transmitida pela nternet em texto plano jogo
fcil para qualquer um, por isto voc tem que ser cuidadoso. Usar o ssh ao invs do
telnet torna muito mais difcil sua informao ser capturada.
O uso bsico do ssh simples. Vamos por exemplo conectar via SSH no nosse
endereo de loop-back 127.0.0.1, e com nosso usurio comum desta forma voc
pode usar o seguinte comando:
H ss! acc=)2*.(.(.)
Dependendo de sua verso do ssh, voc pode tambm ver uma mensagem
mostrando a fingerprint da chave do host remoto. Esta est ligada a um hash da
chave, e se voc estiver sendo extremamente cuidadoso voc vai trocar as
fingerprints com o administrador do host remoto atravs de uma linha segura (tipo
um telefone ou pessoalmente) antes de fazer a conexo, e ento verificar se as
1.
A P O S T I L A
D E
G N U / L I N U X
fingerprints so idnticas. sto para proteger-se de um ataque "man-in-the-middle"
que eu discuti acima, onde algum fica entre voc e o servidor, trocando as chaves e
criptografando e descriptografando suas comunicaes de uma forma que
transparente tanto para voc quanto para o servidor, mas permitindo-o ver (e alterar)
toda a comunicao.
Uma vez que o ssh tenha feito a conexo, ele ir pedir pela sua senha. Esta a
senha associada conta de usurio na mquina remota que idntica ao username
que voc forneceu ao ssh (se voc no fornecer um username, o ssh assume que
voc quer usar o username no qual voc est logado atualmente na sua mquina).
Quando voc informar a senha, o ssh criptografa a mesma e a envia para o servidor
remoto. Se a senha for idntica senha associada conta remota, o ssh cria um
login shell e loga voc na mquina remota. A partir deste ponto, voc pode usar a
mquina como se estivesse logado no console.
Existem duas verses diferentes do protocolo ssh - ssh1 e ssh2 (ambos so
suportados pelo OpenSSH). Vrias vulnerabilidades foram descobertas no ssh1, e a
recomendao em geral que se use o ssh2.
4.4 '') *ort 0orAardin3
O telnet e outros mecanismos de login esto longe de serem os nicos protocolos de
rede que tem o mau hbito de transmitir informaes descriptografadas. Muitos
protocolos comuns, como HTTP, POP3, ou MAP, transmitem as informaes em
texto plano, possivelmente incluindo logins e senhas. Enquanto cada um destes
protocolos tem uma verso protegida pelo SSL, as verses seguras no so to
comuns quanto as verses no protegidas. Alm disto, a instalao de verses
protegidas pelo SSL requer o uso de privilgios de superusurio, e se, por exemplo,
voc l seu email via MAP de um servidor remoto para o qual voc no tem controle
direto, voc no pode instalar o MAP-S.
O SSH vem para o resgate aqui. Desde que voc tenha acesso shell ao servidor que
voc deseja se conectar, o SSH pode criar um tunel criptografado para voc usar
como canal para suas conexes de rede. Ele faz isto criando uma conexo segura
ao servidor, abrindo uma porta na sua mquina local, e canalizando tudo que recebe
na porta local para uma porta especfica no servidor remoto.
Vamos usar o MAP com exemplo, j que ele que eu uso para verificar meu email.
Digamos que voc queira recuperar seus emails de um servidor de nome "vacuum".
vacuum est rodando um servidor MAP, mas no um protegido pelo SSL, e voc
prefere no transmitir seu username e senha descriptografados. Voc pode chamar
o ssh com o seguinte comando:
H ss! -G2(()2vacuum2)+" bob=vacuum
2/
A P O S T I L A
D E
G N U / L I N U X
Este comando diz ao ssh para abrir a porta local 2001 e repassar a conexo para a
porta 143 em vacuum, e logar em vacuum como bob para isto. Uma vez que voc
consiga fazer o login com sucesso no servidor remoto, voc tem um tunel ssh para
brincar. Para checar seu email agora, simplesmente informe seu cliente MAP para
ler seu email a partir de localhost, porta 2001. O ssh ir fazer uma conexo
transparente para o servidor remoto.
4.5 #4tentica;<o de c,a+es.
Enquanto usar o ssh com uma senha muito mais seguro que o telnet ou rsh, ainda
no o sem algumas armadilhas. Ao mesmo tempo que sua senha criptografada e
mantida segura de outros olhos durante o trnsito pela rede, uma vez que ela
chegue no servidor remoto ela descriptografada novamente para texto plano antes
da autenticao. Se o servidor remoto foi comprometido, um atacante pode substituir
o sshd por uma verso corrompida que funciona como um cavalo-de-tria, coletando
senhas. Um mtodo muito mais seguro de autenticao a autenticao baseada
em chaves.
A autenticao de chaves SSH baseada nos princpios da criptografia de chave
pblica. Voc tem uma chave privada que voc mantm protegida e que
posteriormente criptografada com uma senha de acesso, e voc tem uma chave
pblica que mantida em cada servidor que voc deseja acessar. Quando voc
desbloqueia sua chave privada e tenta conectar a um servidor para o qual voc
tenha dado a sua chave pblica, sua chave usada para autenticao em vez de
sua senha. sto significa que suas senhas nunca so enviadas mquina remota,
removendo desta forma toda a possibilidade de ataques de roubo de senha.
Aqui temos uma viso bsica de como este processo funciona. Quando voc
conecta-se a um servidor remoto, o servidor checa para ver se sua chave pblica
est no arquivo aut4ori$ed?@e>s da sua conta remota. Se ele est, ento o servidor
criptografa algum dado aleatrio com sua chave pblica e o envia a voc. Voc
descriptografa estes dados, criptografa o mesmo com a chave pblica do servidor
remoto, e manda-os de volta. Se o servidor descriptografar e ver que idntico ao
que ele enviou originalmente a voc, ento ele sabe que voc quem voc diz ser, e
deixa voc entrar sem precisar de senha.
Para criar um par de chaves ssh (um conjunto de chaves, uma pblica, e uma
privada), tudo que voc precisa fazer executar o seguinte comando:
H ss!-keygen -t rsa
Este comando vai pedir por uma senha para criptografar a chave primria e vai
salvar a mesma por padro em ~/.ssh/identity. Mantenha esta chave
cuidadosamente guardada! Se algum conseguir pegar a chave e a senha que voc
usou para criptografar a mesma, este algum pode fazer logon como se fosse voc
21
A P O S T I L A
D E
G N U / L I N U X
em todos os servidores que estiverem configurados para aceitar suas chaves!
Depois que o comando enviado:
Fenerating public/private rsa key pair.
4nter file in w!ic! to save t!e key O/!ome/acc/.ss!/identityP2
3reated directory Q/!ome/acc/.ss!Q.
4nter passp!rase Oempty for no passp!raseP2
4nter same passp!rase again2
Rour identification !as been saved in /!ome/acc/.ss!/identity.
Rour public key !as been saved in /!ome/acc/.ss!/identity.pub.
:!e key fingerprint is2
e#2.$2e(2#(2($2b-2e-2e+2222"(2"b2*$2+*2."2.-2*" acc=debian-
server
sto tudo que voc precisa fazer! Uma vez que seu keypar tenha sido gerado, voc
pode pegar o contedo de identity.pub e acrescentar ao seu ~/.ssh/authorized_keys
no servidor remoto. Uma vez que ele tenha sido acrescentado, tente conectar-se ao
servidor remoto novamente. Quando voc faz a conexo, em vez de pedir sua
senha, ele ir perguntar pela senha que voc usou para proteger sua chave privada:
$ ssh acc@debian-server
Enter passphrase for RSA key 'acc@debian-server':
Quando voc informar a senha para desbloquear sua chave, o ssh usar ento sua
chave para fazer sua autenticao com o servidor remoto - sua senha nunca
transmitida, e nenhuma informa transmitida pela linha que possa ser mais tarde
usada por um atacante para obter acesso a sua conta. Desde que voc mantenha
sua chave privada em segurana, sua conta est segura.
A autenticao de chaves tem outros benefcios, como a possibilidade de vrias
pessoas utilizarem a conta root sem conhecer a senha de root. Simplesmente
acrescente as chaves pblicas de cada usurio a ~/.ssh/authorized_keys, e elas
podero fazer o login como aquele usurio.
ss,-a3ent
A autenticao baseada em chaves tambm traz outras possibilidades interessantes.
Por exemplo, se voc est certo que ningum que no seja de confiana ir usar
sua sesso de login atual, voc pode usar um programa chamado ssh-agent para
manter uma cpia desbloqueada de sua chave privada na memria, de forma que
voc no precise escrever sua senha toda vez que faz um ssh para algum lugar.
consideravelmente mais seguro que simplesmente usar uma chave privada sem
22
A P O S T I L A
D E
G N U / L I N U X
senha pois, mesmo quando sua chave est desbloqueada, o ssh-agent no ir dar a
chave privada para voc - ele somente assina ou descriptografa dados com ela
(como no caso do desafio do servidor). Alm disso, outras pessoas que estejam
logadas em seu servidor (fora o root, claro) no tem acesso ao seu ssh-agent.
O ssh-agent usado conforme abaixo:
H ss!-agent
%%I6?:I%J3ST/tmp/ss!-UUvknpD$/agent.2"*..& export
%%I6?:I%J3S&
%%I6F4;:9I<T2"#((& export %%I6F4;:9I<&
ec!o 6gent pid 2"#((&
A sada do ssh-agent foi feita para ser examinada pelo seu shell para acrescentar as
variveis de ambiente apropriadas. Ou copie e cole a sada na mesma janela de
terminal, ou execute algo assim (assumindo que voc est usando um shell bash):
bas!H eval Vss!-agentV
6gent pid 2"#((&
O ssh-agent est agora rodando e as variveis de ambiente apropriadas foram
configuradas de forma que o ssh e os vrios utilitrios ssh podem agora acessar o
mesmo. Uma vez que o agente esteja rodando voc pode acrescentar suas chaves
privadas com comandos semelhantes ao abaixo:
H ss!-add
;eed passp!rase for /!ome/acc/.ss!/identity
4nter passp!rase for acc=debian-server
Identity added2 /!ome/acc/.ss!/identity Oacc=debian-serverP
Agora, quando voc fizer um ssh a um servidor remoto que est configurado para
aceitar sua chave, voc no precisa fornecer uma senha, voc simplesmente faz a
conexo. Obviamente, neste ponto voc precisa ser extremamente cuidadoso sobre
deixar pessoas que no so de confianausar sua sesso de login (ssh-add -D faz o
ssh-agent esquecer a senha se voc precisar deixar o computador).
scp
O mtodo tradicional de transferncia de arquivos de uma mquina para outra por
uma rede usando o protocolo FTP. O FTP, como o MAP e outros, transfere as
informaes de autenticao em texto plano, que pode no ser desejvel.
nfelizmente, devido estrutura do protocolo FTP, muito difcil fazer um tunel para
o mesmo atravs de uma conexo ssh.
23
A P O S T I L A
D E
G N U / L I N U X
O SSH vem com um programa chamado 'scp', que significa 'secure copy' (cpia
segura). Ele vem bem a calhar quando voc quer transferir arquivos de um
computador para outro de forma segura (ele tambm pode usar compresso se voc
usar a opo -C, que boa para transferncia de teto ou outro formato de dado que
pode ser comprimido). Ele no usa um protocolo separado, mas envia os dados
atravs de uma conexo ssh normal, e por isso ele aceita authorized_keys e
conversa com o ssh-agent.
O uso do scp bem simples. A sintaxe :
scp file6 file5 fileA ((( destination
Cada um dos argumentos pode ser um arquivo local ou remoto. Por exmeplo, pra
compiar seu arquivo .bashr do servidor vacuum para o computador local:
Hscp vacuum2.bas!rc .
vacuum:.bashrc a sintaxe que voc usa para copiar de ou para um host remoto -
host:arquivo. Se voc no especificar um diretrio, ele utiliza por padro o diretrio
home. O destino dado como ".", que significa o diretrio atual.
24
A P O S T I L A
D E
G N U / L I N U X
5. 'ER("D$R '#M5#
O Samba o servidor que permite compartilhar arquivos e acessar
compartilhamentos em mquinas Windows. Ele dividido em dois mdulos, o
servidor Samba propriamente dito e o smbclient, que permite acessar
compartilhamentos em outras mquinas. Usando o Samba, o servidor Linux se
comporta exatamente da mesma forma que uma mquina Windows, compartilhando
arquivos e impressoras e executando outras funes, como autenticao de
usurios. Voc pode configurar o Samba at mesmo para tornar-se um controlador
de domnio.
A primeira verso do Samba, disponibilizada em 1992, foi escrita por Andrew
Tridgell, um Australiano que na poca era estudante de cincias da computao.
Como na poca a especificao do SMB utilizada pela Microsoft ainda era fechada,
Andrew desenvolveu um pequeno programa, batizado de clockspy, para examinar os
pacotes de dados enviados por uma mquina Windows e assim ir implementando
uma a uma as chamadas de sistema utilizadas, um trabalho extremamente
complexo para ser feito por uma nica pessoa.
O resultado foi um programa que rodava no Solaris e era capaz de responder s
chamadas SMB como se fosse um servidor Windows. Este arquivo ainda pode ser
encontrado em alguns dos FTPs do http://samba.org, com o nome "server-0.5".
O objetivo desta primeira verso era apenas resolver um problema domstico,
interligar um PC rodando o Windows 3.1 ao servidor Solaris. Na poca isso j era
possvel utilizando um dos clientes NFS comerciais para DOS, mas Andrew
precisava de suporte a NetBOS para um aplicativo que pretendia utilizar, o WindX,
um servidor X para Windows, que permitia rodar aplicativos via rede a partir do
servidor Unix.
At a o objetivo era apenas fazer o programa funcionar, no criar um sistema de
compartilhamento de arquivos.
Depois de algum tempo Andrew recebeu um e-mail contando que o programa
tambm funcionava com o LanManager da Microsoft, permitindo compartilhar
arquivos de um servidor Unix com mquinas rodando o DOS. Andrew s acreditou
depois de testar, mas ficou to maravilhado com o que havia conseguido que criou o
25
A P O S T I L A
D E
G N U / L I N U X
projeto "NetBios for Unix", e comeou a recrutar voluntrios atravs da Usenet. Mais
tarde o projeto passou a usar o nome Samba, que foi adotado no em apologia ao
Carnaval, mas apenas porque uma das poucas palavras do dicionrio do Aspell
que possui as letras S, M e B, de "Server Message Blocks".
Em 94 a Microsoft liberou as especificaes do SMB e do NetBios, o que permitiu
que o desenvolvimento do Samba desse um grande salto, tanto em recursos quanto
em compatibilidade, passando a acompanhar os novos recursos adicionados ao
protocolo da Microsoft, que novamente deixou de ser aberto.
Hoje, alm de ser quase 100% compatvel com os recursos de rede do Windows 98,
NT e 2000, o Samba reconhecido por ser mais rpido que o prprio Windows na
tarefa de servidor de arquivos.
Um dos pontos fortes do Samba que o projeto foi todo desenvolvido sem precisar
apelar para qualquer violao de patentes. Todas as chamadas (com exceo das
que a Microsoft tornou pblicas em 94) foram implementadas monitorando as
transmisses de dados atravs da rede, uma espcie de engenharia reversa que
no tem nada de ilegal. como se voc descobrisse como funciona um cdigo de
encriptao apenas examinando arquivos encriptados por ele. Matemticos fazem
isso a todo instante e muitas vezes so bem pagos para isso.
Graas a este "detalhe", o Samba no corre o perigo de sofrer restries devido a
aes judiciais. Naturalmente j houveram problemas legais com a Microsoft, cujo
resultado apenas confirmou esta invulnerabilidade.
De qualquer forma, no existem sinais de que a Microsoft pretenda declarar guerra
ao Samba, pelo contrrio, foi a existncia do Samba que permitiu que a Microsoft
conseguisse colocar PCs rodando o Windows em muitos nichos onde s entravam
Workstations Unix, j que com o Samba os servidores Unix existentes passaram a
ser compatveis com as mquinas Windows. Ou seja, de certa forma o Samba
vantajoso at mesmo para a Microsoft.
5.1 "nstalando o 'am>a
O Samba dividido em dois mdulos. O servidor propriamente dito e o cliente, que
permite acessar compartilhamentos em outras mquinas (tanto Linux quanto
Windows). Os dois so independentes, permitindo que voc mantenha apenas o
cliente instalado num desktop e instale o servidor apenas nas mquinas que
realmente forem compartilhar arquivos. sto permite melhorar a segurana da rede
de uma forma geral.
Para instalarmos o servidor do Samba, ser necessrio o seguinte comando:
# apt-get install samba samba-doc swat
26
A P O S T I L A
D E
G N U / L I N U X
Lembre-se de que voc deve instalar todos os pacotes apenas no servidor e em
outras mquinas que forem compartilhar arquivos. O Swat ajuda bastante na etapa
de configurao, mas ele opcional, pois voc pode tanto editar manualmente o
arquivo smb.conf, quanto usar um arquivo pronto, gerado em outra instalao. Nos
clientes que forem apenas acessar compartilhamentos de outras mquinas, instale
apenas o cliente.
5.2 adastrando 4s4@rios.
Depois de instalado, o prximo passo cadastrar os logins e senhas dos usurios
que tero acesso ao servidor. Esta uma peculiaridade do Samba: ele roda como
um programa sobre o sistema e est subordinado s permisses de acesso deste.
Por isso ele s pode dar acesso para usurios que, alm de estarem cadastrados no
Samba, tambm esto cadastrados no sistema.
Existem duas abordagens possveis. Voc pode criar usurios "reais" usando o
comando adduser ou um utilitrio como o "user-admin" (disponvel no Fedora e no
Debian, atravs do pacote gnome-system-tools). Ao usar o adduser, o comando fica:
# adduser maria
Uma segunda opo criar usurios "castrados", que tero acesso apenas ao
Samba. Esta abordagem mais segura, pois os usurios no podero acessar o
servidor via SSH ou Telnet, por exemplo, o que abriria brecha para vrios tipos de
ataques. Neste caso, voc cria os usurios adicionando os parmetros que orientam
o adduser a no criar o diretrio home e manter a senha desativada at segunda
ordem:
# adduser --disabled-login --no-create-!ome maria
sto cria uma espcie de usurio fantasma que, para todos os fins, existe e pode
acessar arquivos do sistema (de acordo com as permisses de acesso), mas, por
outro lado, no pode fazer login (nem localmente, nem remotamente via SSH), nem
possui diretrio home.
De qualquer uma das duas formas, depois de criar os usurios no sistema, voc
deve cadastr-los no Samba, usando o comando "smbpasswd -a", como em:
# smbpasswd -a maria
Se voc mantiver os logins e senhas sincronizados com os usados pelos usurios
nos clientes Windows, o acesso aos compartilhamentos automtico. Caso os
logins ou senhas no servidor sejam diferentes, o usurio precisar fazer login ao
acessar.
2&
A P O S T I L A
D E
G N U / L I N U X
Um detalhe importante que, ao usar clientes Windows 95 ou 98, voc deve marcar
a opo de login como "Login do Windows" e no como "Cliente para redes
Microsoft" (que o default) na configurao de rede (Painel de controle > Redes).
Depois de criados os logins de acesso, falta agora apenas configurar o Samba para
se integrar rede e compartilhar as pastas desejadas; trabalho facilitado pelo Swat.
A segunda opo editar manualmente os arquivos de configurao do Samba, o
"/etc/samba/smb.conf", como veremos mais adiante. Neste caso, o ideal comear
a partir de um arquivo pr-configurado, alterando apenas as opes necessrias.
5.3 on2i34rando o 'am>a 4sando o 'Aat
O Samba pode ser configurado atravs do Swat, um utilitrio de configurao via
web, similar ao encontrado nos modems ADSL. sso permite que ele seja acessado
remotamente e facilita a instalao em servidores onde o X no est instalado. Esta
mesma abordagem utilizada por muitos outros utilitrios, como o Webmin e o
Pagode.
Manter o X instalado e ativo num servidor dedicado considerado um desperdcio
de recursos, por isso os desenvolvedores de utilitrios de configurao evitam
depender de bibliotecas grficas. Deste modo, mesmo distribuies minimalistas
podem inclu-los.
No Debian, Slackware e tambm no Gentoo, o Swat inicializado atravs do inetd. A
funo do inetd e xinetd parecida, eles monitoram determinadas portas TCP e
carregam servios sob demanda. sto evita que utilitrios que so acessados
esporadicamente (como o Swat) precisem ficar ativos o tempo todo, consumindo
recursos do sistema. Apesar disso, a configurao dos dois diferente: no caso das
distribuies que usam o inetd, voc ainda precisa adicionar (ou descomentar) a
linha abaixo no arquivo de configurao do inetd, o "/etc/inetd.conf":
swat stream tcp nowait.+(( root /usr/sbin/tcpd /usr/sbin/swat
Para que a alterao entre em vigor, reinicie o inetd com o comando:
# /etc/init.d/inetd restart
Para acessar o Swat, basta abrir um Browser disponvel e acessar o endereo
http://localhost:901 . No prompt de login, fornea a senha de root para acessar.
Ao abrir o Swat, voc ver um menu com vrios links para a documentao
disponvel sobre o Samba, que voc pode consultar para se aprofundar no sistema.
Na parte de cima, esto os links para as sees da configurao, que o que nos
interessa.
2-
A P O S T I L A
D E
G N U / L I N U X
Na seo Password, voc pode cadastrar usurios, substituindo o uso manual do
comando "smbadduser -a". Neste caso, voc precisar primeiro cadastrar os
usurios utilizando comando adduser; o Swat apenas cadastra os usurios no
Samba.
Em seguida, acesse a seo "Globals", que engloba todas as configuraes de rede
e acesso.
Nas opes "workgroup" e "netbios name", voc deve colocar o nome do
2.
A P O S T I L A
D E
G N U / L I N U X
computador e o grupo de trabalho a que ele pertence, como faria numa mquina
Windows. Voc pode tanto utilizar o mesmo grupo de trabalho em todas as
mquinas da rede, quanto agrupar suas mquinas em grupos distintos como
"diretoria", "vendas", etc.
A opo "netbios aliases" permite criar "apelidos" para o servidor, de modo de que
ele possa ser acessado por mais de um nome. Usando um alias, o servidor
realmente aparece duas vezes no ambiente de rede, como se fossem duas
mquinas. Em geral isso acaba confundindo mais do que ajudando, mas pode ser
til em algumas situaes, quando, por exemplo, um servidor desativado e os
compartilhamentos movidos para outro. O novo servidor pode responder pelo nome
do servidor antigo, permitindo que os usurios que no foram avisados da mudana
continuem acessando os compartilhamentos.
A seguir temos a opo "interfaces", que permite limitar os acessos ao servidor se
voc tiver mais de uma placa de rede. o caso, por exemplo, de quem acessa via
ADSL ou cabo e possui uma segunda placa de rede para compartilhar a conexo
com os micros da rede local. Nestes casos a placa da web ser reconhecida como
eth0, enquanto a placa da rede local ser reconhecida como eth1, por exemplo.
Voc pode, ento, preencher o campo com o endereo da placa da rede local (eth1),
assim o Samba s aceitar conexes vindas dos micros da rede local, descartando
automaticamente todas as tentativas de acesso vindas da internet. Caso o campo
permanea vazio, o Samba permite acessos vindos de todas as placas de rede, e
necessrio bloquear os acessos provenientes da internet usando o firewall.
3/
A P O S T I L A
D E
G N U / L I N U X
Na seo Security Options chegamos a uma das decises mais importantes, decidir
entre entre utilizar segurana com base no login do usurio (user) ou com base no
compartilhamento (share).
A opo share oferece um nvel de segurana semelhante ao de uma mquina
Windows 98. Os compartilhamentos podem ser acessados por todos os usurios,
atravs da conta guest. Em compensao, esta opo a mais simples de
configurar e pode ser til em pequenas redes onde no h necessidade de
segurana.
A opo user a mais recomendvel, pois permite especificar exatamente quais
usurios tero acesso a cada compartilhamento, como num servidor NT ou Windows
2000. Naturalmente, para que isso funcione, necessrio que voc tenha registrado
todos os usurios no Linux e no Samba (como vimos anteriormente), e que os
clientes Windows efetuem login na rede usando estes mesmos logins e senhas, ou
os forneam na hora de acessar os compartilhamentos.
Escolhendo este modo, as permisses de acesso aos compartilhamentos do samba
ficam condicionadas s permisses de acesso de cada usurio. Por exemplo, se
voc compartilhar a pasta /home/maria/arquivos, por default apenas a usuria maria
ter permisso para gravar novos arquivos e alterar o contedo da pasta.
Para que outros usurios tenham acesso pasta, voc deve dar permisso a eles,
criando um novo grupo e dando permisso de escrita para os integrantes do grupo
ou adicionando os demais usurios no grupo "maria" (que criado juntamente com o
login de acesso) e configurando as permisses de acesso de forma que o grupo
possa escrever na pasta.
Se voc no est to preocupado com a segurana, pode fazer do jeito "fcil",
alterando a opo "outros" nas permisses de acesso da pasta, que d acesso a
todo mundo. sto faz com que qualquer usurio local do sistema (ou logado via SSH)
tenha acesso aos arquivos da pasta, mas no permite necessariamente que outros
usurios do Samba possam acessar, pois neste caso ainda so usadas as
permisses de acesso no Samba.
Ou seja, necessrio fazer com que os usurios do grupo, ou todos os usurios do
sistema possam escrever na pasta, evitando que as permisses do sistema
conflitem com as permisses configuradas no Samba. Se configuro o Samba para
permitir que o usurio "joao" possa escrever no compartilhamento, mas a
configurao das permisses da pasta compartilhada no permitem isso, o Joao vai
continuar sem conseguir escrever. Ao criar compartilhamentos no Samba, preciso
se preocupar com as duas coisas.

Mais abaixo, temos a opo Encrypt Password. Ela tambm importantssima, e
deve ser configurada de acordo com a verso do Windows que rodar nas mquinas
31
A P O S T I L A
D E
G N U / L I N U X
clientes. O Windows 95 original no suporta encriptao de senhas, por isso s
poder se conectar ao servidor caso a opo seja configurada com o valor "No".
Porm, o Windows 95 OSR/2, Windows 98/SE/ME, Windows NT, Windows 2000 e
Windows XP utilizam senhas encriptadas, ento, ao utilizar mquinas com qualquer
um destes sistemas (que o mais provvel) a opo deve ser configurada como
"Yes", caso contrrio o Samba simplesmente no conseguir conversar com as
mquinas Windows.
A partir do Samba 3 existe a opo de fazer com que o prprio Samba mantenha as
senhas dos usurios sincronizadas em relao s senhas dos mesmos no sistema.
Antigamente, sempre que voc alterava a senha de um usurio no Samba, usando o
"smbpasswd", precisava alterar tambm a senha do sistema, usando o comando
"passwd". As duas senhas precisam ficar em sincronismo, do contrrio camos no
problema das permisses, onde o Samba permite que o usurio acesse o
compartilhamento, mas o sistema no permite que o Samba acesse os arquivos no
disco.
Para ativar este recurso, ative a opo "unix password sync" no Swat. Originalmente,
esta opo fica desativada e aparece apenas dentro das opes avanadas. Para
chegar at ela voc deve clicar no boto "Change View To: Advanced" no topo da
tela. Depois de alterar, clique no Commit Changes".
Para que tudo funcione, necessrio que as opes "passwd program" e "passwd
chat" estejam configuradas com (respectivamente) os valores: "/usr/bin/passwd %u"
e "*Enter\snew\sUNX\spassword:* %n\n *Retype\snew\sUNX\spassword:* %n\n .".
Estes j so os valores padro no Swat, mas no custa verificar.
32
A P O S T I L A
D E
G N U / L I N U X
A opo "Hosts Allow" deve incluir os endereos P de todos os computadores que
tero permisso para acessar o servidor. Se quiser que todos os micros da rede
tenham acesso, basta escrever apenas a primeira parte do endereo P, como em
"192.168.0.", onde todos os endereos dentro do escopo sero permitidos. Se for
incluir mais de um endereo ou mais de um escopo de endereos, separe-os por um
espao, como: "192.168.0., 10.0.0., 123.73.45.167". Caso o campo permanea
vazio, a opo fica desativada, e todos os micros que tiverem acesso ao servidor
Samba podero acessar.
A opo "Hosts Deny" por sua vez permite especificar mquinas que no tero
permisso para acessar o servidor. Voc pode usar o Hosts Deny para estabelescer
excees ao dito na opo Hosts Allow.
Por exemplo, imagine que voc queira que toda a rede local, que usa a faixa
33
A P O S T I L A
D E
G N U / L I N U X
192.168.0.x, tenha acesso ao servidor, com exceo dos endereos 192.168.0.2 e
192.168.0.3. Neste caso, a configurao ficaria assim:
Iosts 6llow2 ).2.)$#.(.
Iosts <eny2 ).2.)$#.(.2, ).2.)$#.(."
Numa rede Windows, uma das mquinas fica sempre responsvel por montar e
atualizar uma lista dos compartilhamentos disponveis e envi-la aos demais,
conforme solicitado. O host que executa esta funo chamado de "Master
Browser".
Na seo Browse Options, a opo "OS Level" permite especificar qual chance o
servidor Linux ter de ser o Master Browser do grupo de trabalho ou domnio.
Sempre que voc estiver configurando o Samba para ser o servidor principal,
desejvel que ele seja o master browser.
Para isso, configure esta opo com um valor alto, 100 por exemplo, para que ele
sempre ganhe as eleies. O default dessa opo 20, que faz com que ele perca
para qualquer mquina Windows NT, Windows 2000 ou Windows XP. Para
completar, deixe a opo "Local Master" e "Preferred Master" como "Yes".
A configurao do OS Level muito importante. Caso no seja o Master Browser,
voc poder ter problemas para acessar seu servidor Linux a partir de outras
mquinas Windows, principalmente rodando o NT/2000/XP. Com o valor 100,
sempre que uma das mquinas Windows tentar ser o Master Browser da rede, o
Samba convocar uma nova eleio e a mquina Linux sempre ganhar.
Abaixo, deixe a opo Wins Support ativada (Yes). A opo Wins Server deve ser
deixada em branco, a menos que exista na rede algum servidor Wins (rodando o NT
server ou o 2K server) ao qual o servidor Linux esteja subordinado.
Caso o nico servidor seja a mquina Linux, voc pode configurar as mquinas
34
A P O S T I L A
D E
G N U / L I N U X
Windows para utiliz-la como servidor Wins, para isto basta colocar o seu endereo
P no campo "Servidor Wins" na configurao de rede das estaes.
Terminando, pressione o boto "Commit Changes" no topo da tela para que as
alteraes sejam salvas no arquivo "/etc/samba/smb.conf".
Uma observao importante que o Swat l o arquivo smb.conf ao ser aberto, lendo
as opes configuradas e mostrando-as na interface, mas gera um novo arquivo
sempre que voc clica no "Commit Changes". Ao ler o arquivo, ele procura por
trechos especficos de texto, ignorando tudo que for diferente. sso faz com que ele
remova qualquer tipo de comentrio includo manualmente no arquivo. Em geral,
quem tem o hbito de editar manualmente o smb.conf, acaba nunca usando o Swat
e vive-versa.
Depois de cadastrar os usurios no sistema e no Samba e configurar a seo
Globals, falta apenas configurar as pastas que sero compartilhadas com as
estaes, atravs da seo "Shares".
Cada usurio vlido cadastrado no sistema possui automaticamente um diretrio
home. Estas pastas ficam dentro do diretrio /home e podem ser usadas para
guardar arquivos pessoais, j que, a menos que seja estabelecido o contrrio, um
usurio no ter acesso pasta pessoal do outro. Alm dos diretrios home, voc
pode compartilhar mais pastas de uso geral.
Para criar um compartilhamento, basta escrever seu nome no campo no topo da tela
e clicar no boto "Create Share".
Depois de criado um compartilhamento, escolha-o na lista e clique no boto "Choose
35
A P O S T I L A
D E
G N U / L I N U X
Share" para configur-la. Voc ver uma lista de opes, contendo campos para
especificar usurios vlidos e invlidos, usurios que podem ou no escrever no
compartilhamento, nomes ou endereos de mquinas entre outras opes.
O campo "path" o mais importante, pois indica justamente qual pasta do sistema
ser compartilhada. O nome do compartilhamento diz apenas com que nome ele
aparecer no ambiente de rede, que no precisa necessariamente ser o mesmo
nome da pasta.
A opo "comment" permite que voc escreva um breve comentrio sobre a pasta
que tambm poder ser visualizado pelos usurios no ambiente de rede. Este
comentrio apenas para orientao, no tem efeito algum sobre o
compartilhamento.
A opo "read only" determina se a pasta ficar disponvel apenas para leitura
(opo Yes) ou se os usurios podero tambm gravar arquivos (opo No). Voc
pode tambm determinar quais mquinas tero acesso ao compartilhamento atravs
das opes "Hosts Allow" e "Hosts Deny". As configuraes feitas aqui subscrevem
as feitas na seo global. Se, por exemplo, a mquina 192.168.0.5 possui permisso
36
A P O S T I L A
D E
G N U / L I N U X
para acessar o sistema, mas foi includa na campo Hosts Deny do compartilhamento
programas, ela poder acessar outros compartilhamentos do sistema, mas no o
compartilhamento programas especificamente.
A opo "browseable" permite configurar se o compartilhamento aparecer entre os
outros compartilhamentos do servidor no ambiente de rede, ou se ser um
compartilhamento oculto, que poder ser acessado apenas por quem souber que ele
existe. sso tem uma funo semelhante a colocar um "$" numa pasta compartilhada
no Windows 98. Ela fica compartilhada, mas no aparece no ambiente de rede.
Apenas usurios que saibam que o compartilhamento existe conseguiro acess-lo.
Esta opo tem efeito apenas sobre os clientes Windows, pois no Linux a maior
parte dos programas clientes (como o Smb4k) mostram os compartilhamentos
ocultos por padro.
Finalmente, a opo "available" especifica se o compartilhamento est ativado ou
no. Voc pode desativar temporariamente um compartilhamento configurando esta
opo como "No". Fazendo isso, ele continuar no sistema e voc poder torn-lo
disponvel quando quiser, alterando a opo para "Yes".
Um detalhe importante que os usurios s tero permisso para acessar pastas
que o login permite acessar. Por exemplo, no Linux o nico usurio que pode
acessar a pasta /root o prprio root, ou outro autorizado por ele. Mesmo que voc
compartilhe a pasta root atravs do Samba, os demais usurios no podero
acess-la.
Para editar as permisses de uma pasta, basta abrir o gerenciador de arquivos e,
nas propriedades da pasta, acessar a guia "Permisses". As permisses podem ser
dadas apenas ao usurio, para todos os usurios pertencentes ao grupo do usurio
dono da pasta, ou para todos os usurios. A opo "Aplicar mudanas a todas as
subpastas e seus contedos" deve ficar marcada para que as permisses sejam
aplicadas tambm s subpastas.
Terminadas as configuraes, o servidor j ir aparecer no ambiente de rede, como
se fosse um servidor Windows. Os compartilhamentos podem ser acessados de
acordo com as permisses que tiverem sido configuradas, mapeados como
unidades de rede, entre outros recursos.
Para compartilhar uma impressora j instalada na mquina Linux, o procedimento
o mesmo. Dentro do Swat, acesse a seo printers, escolha a impressora a ser
compartilhada (a lista mostrar todas as instaladas no sistema), configure a opo
available como "yes" e configure as permisses de acesso como vimos
anteriormente.
5.4 on2i34rando o 'am>a man4almente - BetcBsam>aBsm>.con2
Toda a configurao do Samba, incluindo as configuraes gerais do servidor,
3&
A P O S T I L A
D E
G N U / L I N U X
impressoras e todos os compartilhamentos, feita num nico arquivo de
configurao, o "/etc/samba/smb.conf". Programas de configurao, como o Swat,
simplesmente lem este arquivo, "absorvem" as configuraes atuais e depois
geram o arquivo novamente com as alteraes feitas.
sto permite que o Swat coexista com a edio manual do arquivo. Como o formato
bastante simples e conciso, muitas vezes mais rpido e at mais simples editar
diretamente o arquivo do que atravs do Swat.
O smb.conf possui as mesmas sees mostradas no swat: global, homes, printers,
etc.
Para iniciar a edio do arquivo de configurao do smb.conf utilisamos o seguinte
comando:
# vi /etc/samba/smb.conf
Confira abaixo um exemplo do smb.conf e em seguida a explicaao de cada
parmetro presente nas seoes:
WglobalX
comment T %ervidor %61Y6
workgroup T 419>4%6
security T user
os level T )((
announce as T ;: %erver
domain logons T yes
logon script T Z?.bat
logon pat! T [[ZG[9rofiles[Z?
domain master T yes
local master T yes
preferred master T yes
guest account T nobody
# wins server T ).2.)$#.(.2
wins support T yes
keep alive T 2(
debug level T "
winpopup command T cs! -c QQxedit Zs&rm ZsQQ \
log file T /var/log/sambalog.Zu
null passwords T no
unix password sync T yes
socket options T I9:J%GJ]<4G6R :39;J<4G6R
printing T bsd
printcap name T /etc/printcap
3-
A P O S T I L A
D E
G N U / L I N U X
load printers T yes
!osts allow T ).2.)$#.(. )2*.
!osts deny T ).2.)$#.(." ).2.)$#.(.+
W!omesX
comment T 9astas dos ?suarios
public T no
browseable T yes
writeable T yes
!osts deny T ).2.)$#.(.2-(
WprintersX
comment T Impressoras Ginux
public T no
browseable T yes
printable T yes
read only T yes
create mode T (*((
pat! T /var/spool/samba
admin users T admin, usuario)
WnetlogonX
comment T 3ompartil!amento de %cripts
pat! T /etc/scripts
public T no
browseable T yes
writeable T no
WdiretoriaX
comment T Frupo <iretoria
pat! T /!ome/diretoria
public T no
browseable T yes
writeable T yes
write list T =diretoria
force create mode T (***
force directory mode T (***
WcomercialX
comment T Frupo 3omercial
pat! T /!ome/comercial
public T yes
browseable T yes
3.
A P O S T I L A
D E
G N U / L I N U X
writeable T yes
write list T =comercial
read list T =marketing
force create mode T (***
force directory mode T (***
WtransfX
comment T 6rea de :ransferencia
pat! T /!ome/transf
public T yes
browseable T yes
writeable T yes
write list T =todos
force create mode T (***
force directory mode T (**-
max disk size T 2((
WocultoHX
comment T 4specifico do 6dmin
pat! T /!ome/admin/oculto
copy T !omes max connections T )
*arCmetros Funoes
comment Comentrio para este Host na Rede.
workgroup
Especifica o Domnio ou Workgroup a que o Host pertence
na Rede.
security
Por padrao o SAMBA utiliza a segurana a nvel de usurio
(securit> B user), mas existem outras opoes:
sec4rit9 D s,are -> Senhas de acesso serao solicitadas por
cada recurso compartilhado e nao por usurio, ou seja,
cada diretrio ou impressora poder ter uma senha nica
conhecida pelos usurios autorizados.
sec4rit9 D 4ser -> As permissoes sao dadas de acordo
com o login do usurio, ou atravs dos grupos (@grupo).
sec4rit9 D ser+er -> O SAMBA tentar validara senha do
usurio enviando os dados para outro servidor SMB, como
outro servidor SAMBA ou um servidor Windows. Deve-se
incluir o parmetro .pass=ord server B x(x(x(x. na seao
[global] do smb.conf.
sec4rit9 D domain -> Usado se o Host for adicionado a um
4/
A P O S T I L A
D E
G N U / L I N U X
Domnio Windows atravs do comando smbpass=d. Neste
caso as informaoes de usurio e senha serao enviadas
para o PDC da rede, exatamente como o servidor NT faria.
Note que necessrio que a conta do usurio exista tanto
no Linux quanto no servidor primrio.
os level
Este parmetro nao obrigatrio se voce nao possui um
servidor Windows na rede, mas deve ser usado caso tenha
um ou mais. A varivel um nmero de 1 a 255, onde 65
a mesma varivel utilizada pelo servidor Windows.
Especifique um nmero maior que este (como 100 por
exemplo) para garantir que o servidor SAMBA seja eleito na
escolha de validaao do login das estaoes.
announce as
Permite especificar o tipo de servidor NetBios (nmbd) que
ser divulgado na rede. As opoes aceitas pelo SAMBA:
"NT Server", "NT Workstation", "Win95" ou "WfW".
domain logons
Usado para validar o login na rede, apenas para estaoes
Windows.
logon script
ndica qual arquivo de logon script ser executado para os
usurios. A varivel %u corresponde ao usurio na rede.
Deve tambm ser criado um compartilhamento de nome
[netlogon] apontando para o diretrio dos scripts.
logon path
ndica o caminho do perfil remoto do usurio. A varivel %L
corresponde ao nome do servidor NetBios (que pode ser o
prprio SAMBA). O logon path til quando usurios
costumam efetuar logon em mais de um Host na rede, pois
seu perfil trazido com o logon. No caso do exemplo, o
diretrio "Profiles" deve conter os scripts (em formato
Microsoft usando NET USE e etc) e os scripts devem ser
criados com o notepad do Windows por exemplo, a fim de
conservar o formato do arquivo.
domain master
ndica se o Host ser o Domain Master Browser da rede
inteira (WAN).
local master ndica se o Host ser o Master Browser da rede local.
preferred master
Este parmetro fora a eleiao do SAMBA como Master
Browser para o workgroup. recomendvel utilizar este
parmetro em conjunto com o .domain master B >es. para
garantir a eleiao. Mas tome cuidado: se voce possui uma
rede com servidores Windows e SAMBA e j possui um
41
A P O S T I L A
D E
G N U / L I N U X
servidor como Domain Master, nao use esta opao e deixe
o parmetro .os level B 8;. para haver equilbrio.
guest account
O SAMBA trabalha melhor em redes Microsoft com a
existencia de uma conta guest (visitante em ingles). Por
padrao a conta usada .nobody.
wins server
ndica qual o servidor de Wins da rede. Se o prprio Host
for o servidor de Wins entao nao utilize este parmetro, pois
haver um loop e o sistema travar!
wins support
Permite ao SAMBA ser o servidor de Wins na rede. sto
significa que o SAMBA ter uma tabela com o ambiente
completo da rede, garantindo que as estaoes tenham
acesso a estas informaoes e ganho em velocidade para
encontrar e acessar os compartilhamentos e impressoras. O
Wins Server deve ser especificado na configuraao de rede
(TCP/P) das estaoes, que o endereo P do servidor.
keep alive
Como mquinas rodando Windows tendem a travar de
tempos em tempos, este parmetro usado para verificar o
estado da conexao, evitando trfego desnecessrio na
rede. Tambm pode ser usado para estaoes Linux.
debug level
Parmetro usado para dar flexibilidade a configuraao do
sistema. Permite ao SAMBA trabalhar corretamente com
algumas situaoes de erro, por exemplo.
winpopup command
Especifica qual commando ser executado quando o
servidor receber mensagens Winpopup. Aqui, muitas
opoes podem ser usadas de acordo com a preferencia do
Administrador. Se sua rede utiliza mensagens deste tipo,
interessante definir um comando para o parmetro, evitando
assim possveis mensagens de erro para quem enviou a
mensagem ao servidor.
log file
ndica o arquivo de log do SAMBA. A varivel %u
corresponde ao nome de logon do usurio.
null passwords
ndica se ser ou nao possvel que usurios tenham senha
nula de logon (logon sem senha).
unix password sync
Se este parmetro for ativado (= yes) entao clientes SMB
(como estaoes Windows) poderao trocar sua senha de
login.
socket options Este parmetro permite configuraoes extras para o
42
A P O S T I L A
D E
G N U / L I N U X
protocolo, possibilitando uma melhor performance do
servidor em lidar com os pacotes na rede.
printing
ndica qual o sistema de impressao padrao utilizado pelo
Linux.
printcap name
ndica o arquivo para busca das definioes das
impressoras.
load printers Disponibiliza as impressoras para a rede.
hosts allow
ndica quais mquinas tem acesso ao servidor SAMBA.
Pode-se utilizar o endereo P ou o nome da mquina. Para
garantir acesso a toda uma rede por exemplo, escreva:
"hosts allow = 192.168.1.".
hosts deny
Como em "hosts allow", mas para restringir o acesso ao
servidor SAMBA.
A seao [homes] define os parmetros para as pastas pessoais dos usurios na rede
(home dir):
*arCmetros Funoes
comment Comentrio para este compartilhamento.
public
Tambm conhecido como .guest o@., permite ou nao acesso
de outros usurios.
browseable
Define se o compartilhamento ser ou nao visvel para o
Ambiente de Rede. Estaoes Windows95 versao 4.00.950-
C nao aceitam esta opao, onde uma possvel soluao
utilizar o nome do compartilhamento seguido de $ (testeC
por exemplo), como faz-se no Windows.
writeable
ndica se o usurio poder ou nao ecrever em sua pasta
pessoal (home dir).
As demais seoes correspondem a compartilhamentos presentes na rede. Os
parmtros abaixo sao apenas alguns dos possveis:
*arCmetros Funoes
comment Comentrio para o compartilhamento.
43
A P O S T I L A
D E
G N U / L I N U X
path Caminho do diretrio compartilhado
writeable
ndica se ser ou nao possvel criar ou excluir arquivos ou
diretrios do compartilhamento.
public / guest ok
ndica se ser ou nao permitido o acesso de outros
usurios.
browseable
Define se o compartilhamento ser ou nao visvel para o
Ambiente de Rede.
write list
Define os usurios e/ou grupos com acesso de escrita no
compartilhamento. Para mais de um usurio, separe os
nomes por vrgula (user1, user2, etc) e para grupos utilize
@ antes do nome do grupo.
read list
Como em .=rite list., mas define quem ter permissao de
apenas leitura.
force create mode
Diz ao SAMBA para forar o tipo de permissao dos arquivos
criados (o mesmo que usar o chmod). Esta permissao tem
menor prioridade que os parmetros .=rite list. e .read list..
force directory mode
O mesmo que .force create mode., mas para os diretrios
criados no compartilhamento.
admin users
ndica quais sao os usurios com permissao completa para
o compartilhamento (permissao de root).
copy
Permite copiar os parmetros de outra seao, como um
template por exemplo, til se utiliza compartilhamentos
semelhantes. Para alterar parmetros basta inform-los na
seao atual.
hosts allow
ndica quais mquinas podem acessar o compartilhamento.
Pode-se utilizar o endereo P ou o nome da mquina. Para
garantir acesso a toda uma rede classe C por exemplo,
escreva: "4osts allo= B 675(689(6(".
hosts deny
Como em "hosts allow", mas para restringir o acesso ao
compartilhamento.
max connections
Permite especificar o nmero mximo de conexoes
simultneas ao compartilhamento.
max disk size
Permite especificar qual o limite de espao em disco que o
compartilhamento pode utilizar. Este valor definido em Mb
44
A P O S T I L A
D E
G N U / L I N U X
(megabytes).
A prxima apresenta variveis que podem ser usadas em parmetros:
(ari@+eis Funoes
%S Nome do Servio (compartilhamento) atual.
%u Nome do usurio.
%g Nome do grupo.
%H Nome do diretrio pessoal do usurio (home dir).
%m Nome da mquina cliente fornecido pelo NetBios.
%L
Nome do servidor NetBios, permitindo que a configuraao desejada
seja alterada de acordo com o cliente que vai acessar o sistema.
%M Nome nternet da mquina cliente.
%a
Sistema Operacional da mquina remota, onde os reconhecidos
sao WfW, WinNT e Win95.
% O endereo P da mquina cliente.
%T Data e horrio.
Exemplo de um smb.conf bsico para teste e implementao:
WglobalX
workgroup T ]orkgroup
server string T %amba server
&wins support T no
###debugging###
log file T /var/null
syslog only T no
security T s!are
guest account T nobody
W!omesX
45
A P O S T I L A
D E
G N U / L I N U X
browseable T no
creat mask T (*((
directory mask T (*((
###file s!aring###
W3ompartil!adoX
pat! T/mnt/!db/mpl/
browseable T yes
security T user
public T yes
writable T yes
5.5 $ sm>client
Da mesma forma que o SAMBA permite que o Linux atue como servidor em redes
Microsoft, ele tambm permite atuar como estaao, sem que nenhuma configuraao
seja necessria no servidor Microsoft.
Com o smbclient possvel acessar dados em um servidor Windows (lembra o
comando net da Microsoft, mas os comandos utilizados sao similares aos de FTP).
Ele pode ser usado para receber e enviar arquivos, listar diretrios, navegar pelos
diretrios, renomear e apagar arquivos, entre outros. Diretrios compartilhados por
um servidor SAMBA sao acessados da mesma forma.
Para verificar quais compartilhamentos estao disponveis em um determinado Host,
execute:
#/usr/sbin/smbclient -G !ostdesejado
A resposta ser uma lista de servios, ou seja, nomes de dispositivos ou
impressoras que podem ser compartilhados com os usurios na rede. A menos que
o servidor SMB nao tenha itens de segurana configurados, ser solicitada uma
senha antes de mostrar as informaoes. Exemplo:
#smbclient -G servidor)
A resposta ser semelhante a:
%erver time is 5ri <ec 22 )-2-#2(2 2(((
:imezone is ?:3^)(.( 9assword2 <omainTW419>4%6X J%TW]indows ;:
+.(X %erverTW;: G6; 1anager +.(X %erverTWservidor)X ?serTWX
]orkgroupTW419>4%6X <omainTWX
46
A P O S T I L A
D E
G N U / L I N U X
%!arename :ype 3omment
6<1I;H <isk >emote 6dministration 9ublic <isk 9ublic 3H <isk
<efault %!are 9rintH <isk 9rinter 3ontrol
Para acessar uma pasta compartilhada, basta especificar o caminho na rede,
conforme abaixo:
Hsmbclient //maAuina/pasta) sen!a
Onde "senha" literalmente a senha de acesso. Se o caminho estiver correto a
resposta ser algo como:
%erver time is 5ri <ec 22 )$2()2)2 2(((
:imezone is ?:3^)(.(
<omainTW419>4%6X J%TW]indows ;: +.(X %erverTW;: G6; 1anagerX
smb2[N
Digite help para obter ajuda sobre os comandos do smbclient.
4&
A P O S T I L A
D E
G N U / L I N U X
6. 'ER("D$R DN' 5"ND.
Boa parte da usabilidade da nternet vem da facilidade que temos para localizar um
computador conectado. Apesar da maioria dos computadores s conseguirem
localizar outros atravs de endereos P, ns humanos podemos localiz-los
facilmente atravs de um nome inteligvel. o que acontece, por exemplo, quando
acessamos a pgina oficial do sistema operacional Linux atravs do nome
www.linux.org, ao invs de precisarmos usar o nmero 198.182.196.56 que, c entre
ns, bem mais feio. Esta converso de nome para nmeros feita
automaticamente atravs do mecanismo de DNS (sigla de Domain Name System).
Os administradores de rede gostam de colocar uns nomes um tanto quanto criativos
nas suas mquinas. Alguns usam nomes de cidades da regio em que a LAN est
localizada (como Olinda, Buque e Jaboato). Outros gostam de usar nomes de
personagens de quadrinhos como Mnica, Cebolinha, Casco, Magali. Outros
preferem nomes de grandes nomes da msica brasileira como Raul Seixas, Elis
Regina e Tom Jobim. Assim como o DNS usado na nternet, pode tambm ser
usado em uma rede interna para facilitar sua utilizao. sso permite, por exemplo
que ao invs de digitarmos ssh 10.1.1.4, possamos digitar simplesmente ssh
raulseixas, uma seqncia bem mais fcil de ser memorizada.
Vamos aprender aqui a configurar uma mquina em uma rede para saber localizar
as demais pelo nome, ou seja, servir de "telefonista" para nossa rede. Ela vai
receber pedidos do tipo "Estou querendo falar com raulseixas. Qual o endereo
dele?" e vai responder "Para falar com o maluco beleza, tente 10.1.1.4". Neste artigo
vamos utilizar o programa named, que parte do pacote BND, disponvel em
praticamente todas as distribuies Linux. Ele o programa que vai ficar rodando
para receber requisies de mapeamento de nomes em endereos P e, claro,
respond-las adeqadamente.
6.1 "nstala;<o do 5"ND.
Obter e instalar o named em uma mquina Debian fcil. Basta procurar em seu
gerenciador de pacotes preferidos pelo pacote bind9. No obrigatrio, mas
sempre bom obter a documentao, que est no pacote bind9-doc. Para instalar
usando o apt, podemos fazer como no exemplo.
# apt-get install bind. bind.-doc dnsutils
O apt vai ento nos mostrar algumas mensagens e instalar os pacotes que
queremos. Depois que ele completar seu trabalho, j teremos nosso servidor DNS
4-
A P O S T I L A
D E
G N U / L I N U X
funcionando.
Para tirar a prova, podemos pedir a ele o endereo para alguns nomes. Para isso
vamos usar o dig, um programa que faz parte do pacote dnsutils. Poderamos
tambm editar o arquivo /etc/resolv.conf para utilizar o novo servidor de nomes, mas
mais higinico fazermos isso somente no final, quando tudo estiver funcionando
perfeitamente.
# dig www.linux.org =)2*.(.(.)
& LLNN <iF ..2.+ LLNN www.linux.org =)2*.(.(.)
&& global options2 printcmd
&& Fot answer2
&& -NNI46<4>LL- opcode2 D?4>R, status2 ;J4>>J>, id2 --#*.
&& flags2 Ar rd ra& D?4>R2 ), 6;%]4>2 ), 6?:IJ>I:R2 2, 6<<I:IJ;6G2 (
&& D?4%:IJ; %43:IJ;2
&www.linux.org. I; 6
&& 6;%]4> %43:IJ;2
www.linux.org. +))22 I; 6 ).#.)#2.).$.-$
&& 6?:IJ>I:R %43:IJ;2
linux.org. +))22 I; ;% ns(.aitcom.net.
linux.org. +))22 I; ;% ns.invlogic.com.
&& Duery time2 * msec
&& %4>_4>2 )2*.(.(.)#-"O)2*.(.(.)P
&& ]I4;2 %un <ec )) ()2+-22$ 2((-
&& 1%F %I`4 rcvd2 )(+
O que pedimos foi para o programa dig obter o endereo P da mquina de nome
www.linux.org, utilizando para isso o servidor de nomes localizado em 127.0.0.1
(este o endereo da mquina onde o comando foi executado, ou seja, seu prprio
computador). Ele nos respondeu que o endereo 198.182.196.56 (olhe a seo
ANSWER SECTON).
Note que no informamos ao nosso servidor em lugar nenhum o endereo P da
mquina www.linux.org, mesmo assim ele conseguiu nos fornecer um nmero. Ele
foi capaz de fazer isso porque se comunicou com uma das mquinas chamadas de
servidores-raiz. O endereo P dessas mquinas fica, em um sistema Debian,
gravado em um arquivo chamado, sugestivamente, de db.root.
O problema que esses endereos podem mudar com o tempo, apesar disso no
ser muito freqente. Da ltima vez que instalei o pacote bind9, ele veio com um
db.root de 2004. Felizmente, fcil atualizar o arquivo. S precisamos usar o dig (se
voc no instalou ainda, faa agora). Vamos pedir a ele que obtenha a localizao
atual dos servidores-raiz e vamos gravar a resposta em um arquivo.
4.
A P O S T I L A
D E
G N U / L I N U X
Devemos estar dentro do diretrio de configurao do bind para que funcione
perfeitamente para isso entre em /etc/bind/.
# cd /etc/bind/
# dig ns . =a.root.servers.net. N db.root.new
sso vai gravar a resposta do servidor a.root-servers.net. no arquivo db.root.new.
Se este servidor no responder, tente um dos outros (b.root-servers.net, c.root.-
servers.net e assim por diante). Se estiver curioso, voc pode dar uma olhada no
contedo do arquivo. O prximo passo substituir o arquivo antigo pelo novo e
reiniciar o programa servidor de nomes para que ele leia o novo arquivo. Note que
essas instrues so para uma instalao Debian padro, sua configurao pode
ser um pouco diferente.
# mv db.root db.root.old
# mv db.root.new db.root
# /etc/init.d/bind. restart
%topping domain name service2 named.
%tarting domain name service2 named.
Com isso nosso servidor DNS j pode resolver os nomes dos computadores na
nternet. Precisamos disso porque vamos substituir o servidor DNS antigo (que deve
ser uma mquina do seu provedor de nternet) por um novo e queremos que ele
continue sendo capaz de fazer o que o antigo fazia. Porm essa configurao ainda
no inclui os nomes das mquinas internas, para estas ainda precisamos dos
endereos P. Para "batizar" nossas mquinas vamos precisar de um dom,nio
interno.
6.2 on2i34rando 4m domnio.
O servio de nomes (DNS) organizado hierarquicamente em domnios, deste
modo isola-se o conjunto de nomes pertencentes a um domnio dos nomes de outro.
O controlador do domnio pode adicionar quaisquer nomes dentro deste domnio e
no haver perigo de coliso de nomes acidental. Estes nomes podem ser
subdomnios (nomes que aceitam mais nomes subordinados) ou hosts (nomes de
mquinas especficas, sem subordinados).
Para ficar mais claro, vamos tomar como exemplo o domnio debianfordummies.org.
Subordinados a este domnio podem ser registrados vrios sub-nomes como, por
exemplo, o www.debianfordummies.org, o ftp.debianfordummies.org e o
mail.debianfordummies.org.
Vamos usar um domnio para identificar nossas mquinas. Neste exemplo, todas
5/
A P O S T I L A
D E
G N U / L I N U X
elas estaro abrigadas sob o mesmo domnio, mas fcil registrar mais de um
domnio uma vez que voc pega o jeito. Recomenda-se utilizar um domnio
controlado por voc, para evitar bloquear acidentalmente outro domnio externo.
Daqui em diante vamos utilizar um domnio chamado de meudominio.org.br, que
ainda no existe.
Para fazer isso no nosso sistema Debian, vamos precisar modificar um pouco o
contedo do diretrio /etc/bind. Primeiramente vamos adicionar uma zona
correspondente ao nosso domnio, adicionando o trecho abaixo ao final do arquivo
named.conf.local.
# vi /etc/bind/named.conf.local
zone 'meudominio.org.br' /
type master&
file '/etc/bind/db.meudominio'&
0&
A segunda linha (type master) diz ao named que ele possui os endereos para a
zona meudominio.org.br e no precisa consultar ningum para responder por ela. A
terceira indica o caminho do arquivo no sistema de arquivos local onde ele vai
encontrar o mapeamento de nomes para endereos P. este arquivo que vamos
criar agora.
Digamos que na nossa rede temos servios web e ftp localizados na mquina
192.168.1.10, um servidor de nomes na mquina 192.168.1.11 e um servio de e-
mail numa terceira mquina 192.168.1.12. Esquematizando, temos o mapeamento
abaixo.
Ftp ----> 192.168.1.10 --> servidor ftp
www --> 192.168.1.10 --> servidor web
ns -----> 192.168.1.11 --> servidor dns secundario
mail ----> 192.168.1.12 --> servidor de email
O que precisamos fazer traduzir este mapeamento para a linguagem entendida
pelo named. Crie o arquivo /etc/bind/db.meudominio com o seguinte contedo.
# vi /etc/bind/db.meudominio
H::G #$+((
= I; %J6 ns.meudominio.org.br.
min!amaAuina.meudominio.org.br. O
))"())#)+- & %erial
)(#(( & >efres!
51
A P O S T I L A
D E
G N U / L I N U X
"$(( & >etry
$(+#(( & 4xpire
#$+(( P & 1inimum
meudominio.org.br. I; ;% ns.meudominio.org.br.
ftp.meudominio.org.br. I; 6 ).2.)$#.).)(
www.meudominio.org.br. I; 6 ).2.)$#.).)(
ns.meudominio.org.br. I; 6 ).2.)$#.).))
meudominio.org.br. I; 1U )( mail.meudominio.org.br.
mail.meudominio.org.br. I; 6 ).2.)$#.).)(
As quatro ltimas linhas especificam nosso mapeamento, exatamente como
definimos anteriormente. Sempre que quisermos adicionar novos nomes, s
precisamos editar este arquivo. Se, por exemplo, quisermos adicionar endereos
para as mquinas dos personagens imaginrios Andr e Beto, localizadas nos Ps
192.168.1.17 e 192.168.1.18, respectivamente, basta adicionarmos ao final do
arquivo /etc/bind/db.meudominio o trecho abaixo.
andre.meudominio.org.br. I; 6 ).2.)$#.).)*
beto.meudominio.org.br. I; 6 ).2.)$#.).)#
Observe ainda que possvel especificar que o mesmo P responder por mais de
um nome. A mquina 192.168.1.10 do nosso exemplo est respondendo pelos
nomes ftp e www simultaneamente. O contrrio, especificar vrios endereos para o
mesmo nome, tambm possvel.
Agora que terminamos de editar nossos arquivos hora de fazer uma reviso rpida
neles e reiniciar o servio de nomes, para que ele carregue os novos dados.
# /etc/init.d/bind. restart
%topping domain name service2 named.
%tarting domain name service2 named.
Para testar nossa configurao, vamos usar novamente o dig. Do mesmo modo que
consultamos anteriormente o endereo para uma mquina na rede externa
(www.linux.org), agora vamos consultar o endereo para um nome de mquina na
rede interna.
H dig ftp.meudominio.org.br =)2*.(.(.)
& LLNN <iF ..2.+ LLNN ftp.meudominio.org.br =)2*.(.(.)
&& global options2 printcmd
&& Fot answer2
&& -NNI46<4>LL- opcode2 D?4>R, status2 ;J4>>J>, id2 +)*"+
&& flags2 Ar aa rd ra& D?4>R2 ), 6;%]4>2 ), 6?:IJ>I:R2 ), 6<<I:IJ;6G2 )
&& D?4%:IJ; %43:IJ;2
52
A P O S T I L A
D E
G N U / L I N U X
&ftp.meudominio.org.br. I; 6
&& 6;%]4> %43:IJ;2
ftp.meudominio.org.br. #$+(( I; 6 ).2.)$#.).)(
&& 6?:IJ>I:R %43:IJ;2
meudominio.org.br. #$+(( I; ;% ns.meudominio.org.br.
&& 6<<I:IJ;6G %43:IJ;2
ns.meudominio.org.br. #$+(( I; 6 ).2.)$#.).))
&& Duery time2 $ msec
&& %4>_4>2 )2*.(.(.)#-"O)2*.(.(.)P
&& ]I4;2 :ue <ec 2* )(2(#2(- 2((-
&& 1%F %I`4 rcvd2 )((
6.3 on2i34rando o DN' re+erso.
O DNS reverso um meio de que outras maquinas podem ter certeza de que voc
voc, por exemplo, normal servidores de email, checarem se o seu dns mesmo
valido, um exemplo pra voce ver como isso funciona seria usando o comando host.
# !ost terra.com.br
ele retornar a seguinte sada:
terra.com.br !as address 2((.)*$.".)+2
terra.com.br mail is !andled by )( mx.terra.com.br.
Fazendo o contrrio:
# !ost 2((.)*$.".)+2
obtemos o seguinte resultado:
)+2.".)*$.2((.in-addr.arpa domain name pointer www.terra.com.br.
Ento esse o dns reverso.
Para configurar isso, inicialmente vamos configurar o arquivo
/etc/bind/named.conf.local (em nosso exemplos, usamos apenas ips internos, ento
vou continuar com este padro).
# vi /etc/bind/named.conf.local
zone ').)$#.).2.in-addr.arpa' /
type master&
53
A P O S T I L A
D E
G N U / L I N U X
file '/etc/bind/db.))'&
0
Note que se usamos o ip 192.168.1.11 no nosso servidor, entao a zone ser
1.168.192.in-addr.arpa, isso corresponde ao ip ao contrario sem o ultimo numero
Fizemos referencia ao arquivo db.11, portanto preciso cria-lo e dentro dele
entraremos com o as informaes a seguir:
# vi /etc/bind/db.))
&
& YI;< reverse data file for meudominio.org.br
&
H::G $(+#((
= I; %J6 meudominio.org.br. ns.meudominio.org.br. O
) & %erial
$(+#(( & >efres!
#$+(( & >etry
2+).2(( & 4xpire
$(+#(( P & ;egative 3ac!e ::G
&
I; ;% meudominio.org.br.
)) I; 9:> ns.meudominio.org.br.
Olhando com ateno nas duas ultimas linhas, podemos ver o seguinte:

I; ;% meudominio.org.br.
o dominio principal
)) I; 9:> ns.meudominio.org.br.
O ip e o host.dominio da maquina
Agora com tudo configurado, podemos reiniciar o bind.
# /etc/init.d/bind. restart
%topping domain name service2 named.
%tarting domain name service2 named.
Agora para testar, vamos usar o comando host, substituindo /etc/resolv.conf para
nosso servidor DNS.
# vi /etc/resolv.conf
54
A P O S T I L A
D E
G N U / L I N U X
searc! meudominio.org.br
nameserver )2*.(.(.)
# !ost ns.meudominio.org.br
ns.meudominio.org.br !as address ).2.)$#.).))
Est finalizado a confgurao de um servidor DNS utilizando o Bind9.
55
A P O S T I L A
D E
G N U / L I N U X
&. 'ER("D$R DE E-M#"L E *$'10"F
O Postfix um sistema composto por vrias estruturas e processos que tratam as
mensagens. Sua arquitetura resulta em um MTA rpido, robusto e seguro. O Postfix
composto por filas, tabelas de pesquisa e programas. Alguns programas tratam as
mensagens enquanto outros gerenciam a atividade do sistema, agindo de forma
mais independente possvel.
O e-mail parte integrante da sociedade moderna. A amplitude de sua utilizao ao
recdor do mundo o caracteriza como uma das mais importantes aplicaes da rede
mundial. Sua origem anterior ao surgimento da nternet e sua tecnologia vem
evoluindo constantemente para poder servir as novas necessidades e fazer frente
aos desafios e riscos envolvidos na transmisso de mensagens pela nternet.
&.1 *rotocolos.
Existe um conjunto de protocolos a termos especficos ao transito de e-mail. As
aplicaes envolvidas se dividem em:
MTA
Mail Transfer Agent
MTA a aplicao responsvel pelo transito de
mensagens entre servidores usando o protocolo SMTP.
Um dos MTAs mais seguros o PostFX, que pode ser
configurado com facilidade por um administrador que no
tenha grande experincia com servidores de e-mail.
MDA
Mail Delivery Agent
A responsabilidade da aplicao MDA arquivar em um
servidor os e-mails transportados pelo MTA. O MTA no
responsvel pelo trfego de mensagens entre os
servidores nem pela manipulao do e-mail pelo usurio.
MUA
Mail User Agent
O MUA utilizado para ler e redigir os e-mails, sendo a
ferramenta do usurio final.
A comunicao entre os equipamentos ocorre com a utilizao dos seguintes
protocolos especficos:
56
A P O S T I L A
D E
G N U / L I N U X
SMTP
Simple Mail Transfer
Protocol
O SMTP utilizado para transferir e-mails entre os
servidores. Uma aplicao cliente de correio eletrnico
deve especificar um servidor de SMTP para poder enviar
o e-mail para outros servidores. Observe que entre os
servidores de e-mail o protocolo SMTP e utilizado para
receber e enviar.
O protocolo SMTP no exige a autenticao do usurio
que esta enviando o e-mail
POP
Post Office Protocol
Uma aplicao cliente utiliza a POP para transferir o e-
mail de um servidor para o espao de armazenamento
da aplicao. Normalmente uma aplicao cliente POP
apaga os e-mails do servidor. O POP exige autenticao.
MAP
nternet Message Access
Protocol
Uma das caractersticas do MAP que os e-mails ficam
no servidor e no so transferidos para o espao de
armazenamento da aplicao cliente. Ele til quando o
usurio acessa seus e-mails por mais de uma maquina.
&.2 "nstala;<o do *ost2i6
A instalao do Postfix distribui em diversos diretrios os executveis dos comandos
e as filas de processamento de mensagens.
Para darmos incio a instalao dos postfix utilizaremos o seguinte comando:
# apt-get install postfix
5&
A P O S T I L A
D E
G N U / L I N U X
Vamos selecionar a opo nternet Site.
Esta tela, apresenta uma carcterstica do Postfix, no qual pode-se criar um alias para
o envio de mensagens do sistema root a outros usurios.
5-
A P O S T I L A
D E
G N U / L I N U X
Deixemos a opo padro, caso contrrio, bastaria colocar um usurio qualquer
existente.
Como exemplo, iremos colocar o domnio marcioleonardi.com.br
5.
A P O S T I L A
D E
G N U / L I N U X
Deixaremos em branco uma vez que no haver outros domnios virtuais como
gateway de e-mail.
Como estamos usando um sistema de arquivos com 3ournalling selecionaremos a
opo No.
Finalizada a instalao do Postfix, iremos iniciar a instalao do courier-imap e do
6/
A P O S T I L A
D E
G N U / L I N U X
courier-pop para entrega local de e-mails.
Para instalarmos os pacotes devemos usar o seguinte comando:
# apt-get install courier-imap courier-pop
Selecionaremos a opo Sim, caso desejar configurar o Postfix atravs da web
depois.
&.3 on2i34rando o *ost2i6
O postfix contm um arquivo chamado main.cf, no qual esto as configuraes
gerais do daemon, localizado no diretrio "/etc/postfix", pela instalao padro.
Vamos editar esse arquivo e colocar as configuraes para que funcione em perfeito
estado.
# vi /etc/postfix/main.cf
# %ee /usr/s!are/postfix/main.cf.dist for a commented, more complete version
smtpdbanner T Hmy!ostname 4%1:9 Hmailname O<ebian/F;?P
biff T no
# appending .domain is t!e 1?6Qs job.
appenddotmydomain T no
61
A P O S T I L A
D E
G N U / L I N U X
# ?ncomment t!e next line to generate 'delayed mail' warnings
#delaywarningtime T +!
my!ostname T mail.marcioleonardi.com.br
Substituir pelo nome da maquina/host
mydomain T marcioleonardi.com.br
Substituir pelo seu domnio
aliasmaps T !as!2/etc/aliases
aliasdatabase T !as!2/etc/aliases
myorigin T /etc/mailname
mydestination T marcioleonardi.com.br
relay!ost T
mynetworks T ).2.)$#.).) )2*.(.(.(/#
Neste parmetro voc determina as redes do seu servidor.
mailboxcommand T procmail -a 'H4U:4;%IJ;'
mailboxsizelimit T (
recipientdelimiter T ^
inetinterfaces T all
Pronto seu servidor de e-mail est configurado, agora vamos aos testes:
Com o usurio root, digite o seguinte comando:
# mail marcio=marcioleonardi.com.br
%ubject2 :este
:este do servidor de e-mail
.
3c2
Agora vamos logar com o usurio marcio e verificar se o e-mail foi entregue com o
seguinte comando:
# su marcio
1ail version #.).2 ()/)-/2((). :ype a for !elp.
'/var/mail/marcio'2 ) message ) unread
N? ) root=marcioleonar ]ed ban 2- ("2"$ )-/-+- :este
\
62
A P O S T I L A
D E
G N U / L I N U X
6perte a tecla W4nterX para visualizar a mensagem.
1essage )2
5rom root=marcioleonardi.com.br ]ed ban 2- ("2"$2+* 2(($
U-Jriginal-:o2 marcio=marcioleonardi.com.br
:o2 marcio=marcioleonardi.com.br
%ubject2 :este
<ate2 ]ed, 2- ban 2(($ ("2"$2+* ^(((( O?:3P
5rom2 root=marcioleonardi.com.br OrootP
:este do servidor de e-mail
\
Est finalizado a instalao e configurao do servidor de e-mail.
63
A P O S T I L A
D E
G N U / L I N U X
-. 0"REG#LL E "*1#5LE'
Todo administrador de redes aprende logo que uma das coisas mais importantes
para qualquer rede um bom firewall. Embora existam muitos mitos em torno disto,
os firewall no fazem milagres, apenas adicionam uma camada extra de proteo,
escondendo as vulnerabilidades das mquinas. Voc pode ter um servidor S ativo
com todas as vulnerabilidades possveis dentro da sua rede, mas ningum poder
fazer nada se no conseguir se conectar a ele. Este o papel do firewall, limitar e
filtrar os acessos aos servidores e estaes de trabalho da sua rede.
Outra abordagem que vamos ver, o compartilhamento de internet atravs do
iptables, utilizando o NAT.
A configurao do ptables feita diretamente via terminal, basta voc ir inserindo as
regras uma a uma. As regras se perdem ao reiniciar o micro por isso depois de
testar tudo vamos criar um script para que elas sejam recriadas automaticamente a
cada reboot.
O ptables to verstil que pode ser usado para praticamente tudo relacionado
inspeo, encaminhamento e at mesmo alterao de pacotes. Se ele no fizer algo
possvel criar um mdulo que o faa. J que as possibilidades so infinitas mais
seu tempo no, vamos ficar em algumas regras simples que resolvem a maior parte
dos problemas do dia a dia. A partir da voc pode ir se aperfeioando e
desenvolvendo solues mais sofisticadas.
-.1 "nsta;<o do "*1#5LE'.
Para instalar o iptables fcil, e como j compilamos no kernel seus mdulos, fica
ainda mais simples sua utilizao, pois, no sero necessrios os carregamentos
dos mdulos.
Para instalar o iptables utilizaremos o seguinte comando:
# apt-get install iptables
O ptables foi instalado com sucesso.
-.2 riando re3ras no "*1#5LE'.
64
A P O S T I L A
D E
G N U / L I N U X
Vamos ento criao das regras que determinam o que entra e o que no entra na
mquina. Se o seu micro est ligado apenas internet, sem uma rede local, ento
so necessrias apenas duas regras para resolver o problema. Abra um terminal,
logue-se como root e digite o comando:
# iptables -6 I;9?: -p tcp --syn -j <>J9
# iptables -6 I;9?: -i ppp( -p udp --dport (2"(((( -j <>J9
sso far com que o micro passe a ignorar conexes vindas em qualquer porta TCP,
sem enviar sequer uma confirmao de que o pacote foi recebido. Voc continuar
conseguindo acessar a internet normalmente, mas ningum conseguir se conectar
diretamente ao seu PC; um servidor Web ou SSH que voc esquecesse de desativar
passariam despercebidos. Apenas as conexes iniciadas por voc so aceitas, o
que permite que alguns programas de compartilhamento como o gtkgnutella e o
Kazza continuem funcionando normalmente. A segunda regra opcional (dica do
Fabricio Carvalho), ela bloqueia tambm parte das portas UDP, adicionando uma
camada extra se segurana.
O efeito colateral que alguns programas que abrem servidores podem deixar de
funcionar. Voc no conseguir mais receber arquivos pelo CQ por exemplo, como
se estivesse acessando atravs de uma conexo compartilhada via NAT.
O interessante que voc pode desativar o firewall a qualquer momento, para isso
basta um nico comando:
# iptables -5
sso elimina todas as regras do ptables, fazendo com que seu micro volte a aceitar
todas as conexes. Voc pode usa-la para permitir que algum se conecte
rapidamente via ssh na sua maquina por exemplo e depois fechar tudo novamente
reinserindo as regras anteriores.
Se voc tiver uma rede local e quiser que os micros da rede interna seja capazes de
se conectar normalmente, mas mantendo o bloqueio a tudo que vem da internet,
basta dar um "iptables -F" e comear de novo, desta vez adicionando primeiro a
regra que permite os pacotes vindos da rede local:
# iptables -6 I;9?: -p tcp --syn -s ).2.)$#.(.(/2--.2--.2--.( -j 63349:
Em seguida vem os comandos anteriores:
# iptables -6 I;9?: -p tcp --syn -j <>J9
Altere o "192.168.0.0/255.255.255.0" para a faixa de endereos e mscara de sub-
rede que estiver utilizando na sua rede. Este exemplo serve para redes que utilizam
65
A P O S T I L A
D E
G N U / L I N U X
a faixa de 192.168.0.1 at 192.168.0.254.
O ptables processa os comandos em seqncia. Ento todos os pacotes passam
pela primeira instruo antes de ir para a segunda. Quando um pacote vem de um
dos endereos da rede local imediatamente aceito, os demais vo para as duas
ltimas linhas e acabam recusados. uma simples questo de sim ou no. A
primeira linha diz sim para os pacotes da rede local enquanto as duas ultimas dizem
no para todos os demais.
magine agora que voc queira permitir ao mesmo tempo pacotes vindos da rede
local e uma certa porta vinda da nternet, como por exemplo a porta 22 do SSH.
Neste caso voc adicionaria mais uma regra, mantendo as regras anteriores:
# iptables -6 I;9?: -p tcp --destination-port 22 -j 63349:
# iptables -6 I;9?: -p tcp --syn -s ).2.)$#.(.(/2--.2--.2--.( -j 63349:
# iptables -6 I;9?: -p tcp --syn -j <>J9
# iptables -6 I;9?: -p udp -j <>J9
Agora tudo o que vem na porta 22 (tanto da nternet quanto da rede local) aceito,
tudo o que vem da rede local aceito e todo o resto rejeitado. Voc pode adicionar
mais linhas para abrir outras portas. Se voc quisesse abrir tambm as portas 1021
e 1080, a lista ficaria assim:
# iptables -6 I;9?: -p tcp --destination-port 22 -j 63349:
# iptables -6 I;9?: -p tcp --destination-port )(2) -j 63349:
# iptables -6 I;9?: -p tcp --destination-port )(#( -j 63349:
# iptables -6 I;9?: -p tcp --syn -s ).2.)$#.(.(/2--.2--.2--.( -j 63349:
# iptables -6 I;9?: -p tcp --syn -j <>J9
sso permite que voc mantenha disponveis apenas os servidores que voc
realmente quer disponibilizar e nos momentos que quiser. A qualquer tempo voc
pode dar um iptables -F e readicionar apenas as regras para fechar tudo.
-.3 ompartil,ando cone6?es +ia N#1
Vamos ento segunda receita, para compartilhar a conexo. Ela ainda mais
simples e tambm permite ativar ou desativar o compartilhamento a qualquer
momento.
Em primeiro lugar voc deve configurar as suas placas de rede e modem e verificar
se tanto a conexo com a nternet quando a conexo com os micros da rede local
esto funcionando normalmente. O compartilhamento da conexo em s pode ser
feito com apenas trs comandos:
Para compartilhar a conexo do modem com a rede local:
66
A P O S T I L A
D E
G N U / L I N U X
# iptables -t nat -6 9J%:>J?:I;F -o ppp( -j 16%D?4>6<4
# ec!o ) N /proc/sys/net/ipv+/ipforward
Para compartilhar uma conexo via ADSL ou cabo instalada na eth0:
# iptables -t nat -6 9J%:>J?:I;F -o et!( -j 16%D?4>6<4
# ec!o ) N /proc/sys/net/ipv+/ipforward
Para desativar o compartilhamento, vale o de sempre:
# iptables - F
O compartilhamento e ativado ou desativado imediatamente, sem que seja
necessrio reiniciar a conexo. Rpido, prtico e confivel.
As duas linhas ativam o nat do iptables, responsvel pela traduo de endereos,
avisam para o iptables que ele deve direcionar todas as conexes recebidas para a
interface ppp0 (o modem) ou eth0 (a primeira placa de rede) e devolver as respostas
para os clientes e confirmam a ativao no arquivo de configurao do TCP/P.

No faz mal se voc acessa via modem e no fica permanentemente conectado. A
regra mantm o compartilhamento ativo mesmo que voc desconecte e reconecte
vrias vezes.
Se os clientes da rede j estiverem configurados para acessar a web atravs do
endereo P usado pelo servidor voc j deve ser capaz de acessar a web
automaticamente nos demais PCs da rede.
Uma observao que estas regras no incluem um servidor DHCP, voc deve
configurar os clientes com endereo P fixo ou ento ativar o servio DHCPD na sua
distribuio.
A configurao nos clientes fica: Endereo P: Qualquer endereo dentro da faixa de
endereos usada pelo servidor. Ex: 192.168.0.3 Servidor DNS: Os endereos dos
servidores DNS do seu provedor. Ex: 200.177.250.10 Gateway Padro: O endereo
do servidor. Ex: 192.168.0.1 Domnio: O domnio do seu provedor. Ex: terra.com.br
As linhas de compartilhamento da conexo no conflitam com as regras de firewall
que vimos anteriormente, voc deve apenas ter o cuidado de coloc-las no inicio da
seqncia. Neste caso nosso script completo ficaria assim:
iptables -t nat -6 9J%:>J?:I;F -o et!( -j 16%D?4>6<4
ec!o ) N /proc/sys/net/ipv+/ipforward
# 6bre algumas portas OopcionalP
iptables -6 I;9?: -p tcp --destination-port 22 -j 63349:
iptables -6 I;9?: -p tcp --destination-port )(2) -j 63349:
6&
A P O S T I L A
D E
G N U / L I N U X
iptables -6 I;9?: -p tcp --destination-port )(#( -j 63349:
# 6bre para a rede local
iptables -6 I;9?: -p tcp --syn -s ).2.)$#.(.(/2--.2--.2--.( -j 63349:
# 5ec!a o resto
iptables -6 I;9?: -p tcp --syn -j <>J9
Se voc quiser que o PC tambm no responda a pings, adicione a linha:
ec!o ')' N /proc/sys/net/ipv+/icmpec!oignoreall
Agora j temos 10 comandos, fora os para abrir portas especficas. No seria muito
prtico ficar digitando tudo isso cada vez que precisar reiniciar o micro. Para
automatizar isso, basta colar todos os comandos dentro de um arquivo de texto.
Voc pode salv-lo como por exemplo: /usr/local/bin/meu_firewall
Em seguida, d permisso de execuo para o arquivo (chmod +x
/usr/local/bin/meu_firewall) e voc ter um shell script que pode ser chamado a
qualquer momento. Basta digitar: meu_firewall

Para tornar a inicializao realmente automtica, voc precisa apenas colocar o
comando num dos arquivos de inicializao do sistema. Abra o arquivo
/etc/rc.d/rc.local e adicione a linha:
/usr/local/bin/meu_firewall
As regras que vimos acima funcionam como um firewall de bloqueio. Ou seja, o
servidor no deixa que ningum acesse os compartilhamentos de arquivos ou
conectem o backorifice instalado na mquina com o Windows 98, mas no impedem
que os usurios baixem e-mails com vrus ou que acessem uma pgina web que
explore alguma das vulnerabilidades do E por exemplo. Ao usar clientes Windows o
ideal complementar o firewall com um bom antivrus.
Vamos agora a um ltimo passo que fowardar certas portas para os hosts da rede
interna. sso permite que voc rode um servidor de FTP ou crie um servidor de por
exemplo em qualquer um dos micros da rede e no apenas no servidor que est
diretamente conectado internet. O servidor simplesmente direciona todas as
requisies recebidas na porta para o micro especificado, de forma transparente.
O foward de portas tambm usa o Nat.
Em seguida vem as regras para fazer o foward da porta. Neste caso estou
direcionando a porta 22 (do SSH) na conexo com a internet (eth0) para o micro
192.168.0.2 da rede local:
# iptables -t nat -6 9>4>J?:I;F -i et!o -p tcp --dport 22 -j
6-
A P O S T I L A
D E
G N U / L I N U X
<;6: --to-dest ).2.)$#.(.2

# iptables -6 5J>]6>< -p tcp -i et!( --dport 22 -d ).2.)$#.(.2
-j 63349:
Basta alterar a regra, adicionando a porta e a mquina da rede interna para onde ele
deve ser redirecionada. Se voc acessa via modem, basta substituir o "eth0" em
ambas as linhas por "ppp0". Esta regra pode ser usada em conjunto com as
antreriores, mas deve ir sempre logo no incio do arquivo, antes das regras para
compartilhar a conexo e, claro, antes das regras para fechar tudo.

Voc pode repetir o comando vrias vezes para direcionar varias portas diferentes
para vrias mquinas. Naturalmente uma mesma porta no pode ser fowardada
duas vezes.
Tambm possvel fowardar ranges de portas. No Unreal Tournament por exemplo
voc precisa abrir as portas UDP 7777, 7778 e 7779 neste caso as regras seriam:

# iptables -t nat -A PREROUTNG -i eth0 -p udp --dport 7777:7779 -j DNAT --to-dest
192.168.0.2
# iptables -A FORWARD -p udp -i eth0 --dport 7777:7779 -d 192.168.0.2 -j ACCEPT
6.

Você também pode gostar