Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Linux Avançada PDF
Apostila Linux Avançada PDF
DE
GNU / LINUX
1. KERNEL
A P O STI L A
DE
GNU / LINUX
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
A P O STI L A
DE
GNU / LINUX
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:
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 STI L A
DE
GNU / LINUX
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
A P O STI L A
DE
GNU / LINUX
A P O STI L A
DE
GNU / LINUX
A P O STI L A
DE
GNU / LINUX
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-v.x.y.z
# cp /usr/src/linux/System.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.
CUIDADO!!!
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 STI L A
DE
GNU / LINUX
2. SERVIDOR DHCP
A P O STI L A
DE
GNU / LINUX
Esta opo especifica o domnio que ser fornecido aos clientes como o principal
domnio de busca.
option domain-name-servers 200.167.216.14,200.167.216.15;
Esta opo especifica uma lista separada por vrgulas de servidores DNS que o
cliente deve utilizar.
default-lease-time 600;
Um cliente pode requerer um perodo de tempo especfico vlido para um
arrendamento. Seno o servidor dever fazer um arrendamento com este prazo de
expirao (em segundos).
max-lease-time 7200;
Se voc tiver mais endereos IP do que mquinas os endereos IP das estaes
raramente vai precisar mudar. Mas, no caso de uma rede congestionada, o " maxlease-time" determina o tempo mximo que uma estao pode usar um
determinado endereo IP. Isso foi planejado para ambientes onde haja escassez de
endereos IP, em condies normais estas duas opes no so muito
importantes.
authoritative;
Em uma rede com 2 servidores DHCP, esta opo o torna padro da rede local.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.254;
option routers 192.168.1.1;
}
A opo "range" determina a faixa de endereos IP que ser usada pelo servidor.
Se voc utiliza a faixa de endereos 192.168.1.0 at 192.168.1.254 por exemplo,
pode reservar os endereos de 192.168.1.1 a 192.168.1.100 para estaes
configuradas com IP fixo e usar os demais para o DHCP.
A opo routers declara o gateway padro que ser fornecido aos clientes.
host Marcio {
hardware ethernet 00:0C:6E:8E:F7:9A;
fixed-address 192.168.1.5;
9
A P O STI L A
DE
GNU / LINUX
}
O endereo MAC de um sistema (de forma que o servidor DHCP possa reconheclo quando dele receber uma solicitao).
Especifica que o sistema sempre deve receber o mesmo endereo IP. 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 inicilo atravs do seguintes comandos:
# /etc/init.d/dhcp3-server stop
# /etc/init.d/dhcp3-server start
10
A P O STI L A
DE
GNU / LINUX
3. SERVIDOR FTP
A P O STI L A
DE
GNU / LINUX
enquanto as diretivas so as sub-opes que configuram os contextos.
Contextos do ProFTPd.
Basicamente temos dois contextos principais:
Contexto Principal: Contm as configuraes default que sero utilizados inclusive
por outros contextos.
Contexto <Directory DIR >: Determina o comportamento do ProFTPd quando
acessando e/ou servindo o diretrio DIR.
Abaixo temos um exemplo de configurao do ProFTPd (perceba que a
configurao default de nossa verso customizada).
Exemplo 1. exemplo do configurao do ProFTPd
#Configurao do ProFTPd
ServerName
ServerType
DefaultServer
ServerAdmin
"FTP-TESTE"
standalone
on
root@localhost
on
#porta 21 padro
port
21
022
A P O STI L A
DE
GNU / LINUX
especifica
#User
#Group
nobody
nobody
on
13
A P O STI L A
DE
GNU / LINUX
Algumas diretivas do contexto principal:
14
A P O STI L A
DE
GNU / LINUX
Algumas diretivas do contexto <Directory>
15
A P O STI L A
DE
GNU / LINUX
4. SERVIDOR OPENSSH
16
A P O STI L A
DE
GNU / LINUX
Dados Sensveis
Tipicamente os pacotes enviados pela Internet 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. Infelizmente 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.
Autenticao
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).
Criptografia de Chave Privada vs. Pblica
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 Internet 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
diferente. Aqui temos 2 chaves cuidadosamente, e uma chave pblica,
chave pblica pode ser derivada da
A P O STI L A
DE
GNU / LINUX
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. Isto 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.
Funes de Hash
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.
Assinaturas Digitais
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
18
A P O STI L A
DE
GNU / LINUX
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 Instalao do OpenSSH
Para instalarmos o OpenSSH, sero necessrios 3 (trs) pacotes, que devero ser
instalados via apt-get com o seguinte comando:
# apt-get install openssh-server openssh-client ssh
4.3 OpenSSH Bsico
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 Internet 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:
$ ssh acc@127.0.0.1
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
19
A P O STI L A
DE
GNU / LINUX
fingerprints so idnticas. Isto 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 SSH Port Forwarding
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 IMAP, 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 IMAP de um servidor remoto para o qual voc no tem controle
direto, voc no pode instalar o IMAP-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 IMAP 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 IMAP, 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:
$ ssh -L2001:vacuum:143 bob@vacuum
20
A P O STI L A
DE
GNU / LINUX
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 IMAP para
ler seu email a partir de localhost, porta 2001. O ssh ir fazer uma conexo
transparente para o servidor remoto.
4.5 Autenticao de chaves.
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. Isto 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 authorized_keys 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:
$ ssh-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 STI L A
DE
GNU / LINUX
em todos os servidores que estiverem configurados para aceitar suas chaves!
Depois que o comando enviado:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/acc/.ssh/identity):
Created directory '/home/acc/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/acc/.ssh/identity.
Your public key has been saved in /home/acc/.ssh/identity.pub.
The key fingerprint is:
e8:96:e0:80:06:b5:e5:e4:22:30:3b:76:47:93:95:73 acc@debianserver
Isto 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.
ssh-agent
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 STI L A
DE
GNU / LINUX
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:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXvknpQ6/agent.23799; export
SSH_AUTH_SOCK;
SSH_AGENT_PID=23800; export SSH_AGENT_PID;
echo Agent pid 23800;
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):
bash$ eval `ssh-agent`
Agent pid 23800;
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:
$ ssh-add
Need passphrase for /home/acc/.ssh/identity
Enter passphrase for acc@debian-server
Identity added: /home/acc/.ssh/identity (acc@debian-server)
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 IMAP e outros, transfere as
informaes de autenticao em texto plano, que pode no ser desejvel.
Infelizmente, devido estrutura do protocolo FTP, muito difcil fazer um tunel para
o mesmo atravs de uma conexo ssh.
23
A P O STI L A
DE
GNU / LINUX
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 file1 file2 file3 ... 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:
$scp vacuum:.bashrc .
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 STI L A
DE
GNU / LINUX
5. SERVIDOR SAMBA
A P O STI L A
DE
GNU / LINUX
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 Instalando o Samba
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. Isto 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 STI L A
DE
GNU / LINUX
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 Cadastrando usurios.
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-home maria
Isto 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.
27
A P O STI L A
DE
GNU / LINUX
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 Configurando o Samba usando o Swat
O Samba pode ser configurado atravs do Swat, um utilitrio de configurao via
web, similar ao encontrado nos modems ADSL. Isso 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. Isto 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.400 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.
28
A P O STI L A
DE
GNU / LINUX
A P O STI L A
DE
GNU / LINUX
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 P O STI L A
DE
GNU / LINUX
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. Isto 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 STI L A
DE
GNU / LINUX
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\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .".
Estes j so os valores padro no Swat, mas no custa verificar.
32
A P O STI L A
DE
GNU / LINUX
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 STI L A
DE
GNU / LINUX
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:
Hosts Allow: 192.168.0.
Hosts Deny: 192.168.0.2, 192.168.0.3
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 P O STI L A
DE
GNU / LINUX
Windows para utiliz-la como servidor Wins, para isto basta colocar o seu endereo
IP 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. Isso 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".
A P O STI L A
DE
GNU / LINUX
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 STI L A
DE
GNU / LINUX
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. Isso 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 Configurando o Samba manualmente - /etc/samba/smb.conf
Toda a configurao do Samba, incluindo as configuraes gerais do servidor,
37
A P O STI L A
DE
GNU / LINUX
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.
Isto 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:
[global]
comment = Servidor SAMBA
workgroup = EMPRESA
security = user
os level = 100
announce as = NT Server
domain logons = yes
logon script = %U.bat
logon path = \\%L\Profiles\%U
domain master = yes
local master = yes
preferred master = yes
guest account = nobody
# wins server = 192.168.0.2
wins support = yes
keep alive = 20
debug level = 3
winpopup command = csh -c ''xedit %s;rm %s'' &
log file = /var/log/samba_log.%u
null passwords = no
unix password sync = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY
printing = bsd
printcap name = /etc/printcap
38
A P O STI L A
DE
GNU / LINUX
load printers = yes
hosts allow = 192.168.0. 127.
hosts deny = 192.168.0.3 192.168.0.4
[homes]
comment = Pastas dos Usuarios
public = no
browseable = yes
writeable = yes
hosts deny = 192.168.0.250
[printers]
comment = Impressoras Linux
public = no
browseable = yes
printable = yes
read only = yes
create mode = 0700
path = /var/spool/samba
admin users = admin, usuario1
[netlogon]
comment = Compartilhamento de Scripts
path = /etc/scripts
public = no
browseable = yes
writeable = no
[diretoria]
comment = Grupo Diretoria
path = /home/diretoria
public = no
browseable = yes
writeable = yes
write list = @diretoria
force create mode = 0777
force directory mode = 0777
[comercial]
comment = Grupo Comercial
path = /home/comercial
public = yes
browseable = yes
39
A P O STI L A
DE
GNU / LINUX
writeable = yes
write list = @comercial
read list = @marketing
force create mode = 0777
force directory mode = 0777
[transf]
comment = Area de Transferencia
path = /home/transf
public = yes
browseable = yes
writeable = yes
write list = @todos
force create mode = 0777
force directory mode = 0775
max disk size = 200
[oculto$]
comment = Especifico do Admin
path = /home/admin/oculto
copy = homes max connections = 1
Parmetros
Funoes
comment
workgroup
security
A P O STI L A
DE
GNU / LINUX
Domnio Windows atravs do comando smbpasswd. 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
announce as
domain logons
logon script
logon path
domain master
local master
preferred master
A P O STI L A
DE
GNU / LINUX
servidor como Domain Master, nao use esta opao e deixe
o parmetro .os level = 65. para haver equilbrio.
guest account
wins server
wins support
keep alive
debug level
winpopup command
log file
null passwords
socket options
A P O STI L A
DE
GNU / LINUX
protocolo, possibilitando uma melhor performance do
servidor em lidar com os pacotes na rede.
printing
printcap name
Indica o arquivo
impressoras.
load printers
hosts allow
hosts deny
para
busca
das
definioes
das
A seao [homes] define os parmetros para as pastas pessoais dos usurios na rede
(home dir):
Parmetros
Funoes
comment
public
browseable
writeable
Funoes
Comentrio para o compartilhamento.
43
A P O STI L A
DE
GNU / LINUX
path
writeable
public / guest ok
browseable
write list
read list
admin users
copy
hosts allow
hosts deny
max connections
44
A P O STI L A
DE
GNU / LINUX
(megabytes).
A prxima apresenta variveis que podem ser usadas em parmetros:
Variveis
Funoes
%S
%u
Nome do usurio.
%g
Nome do grupo.
%H
%m
%L
%M
%a
%I
%T
Data e horrio.
45
A P O STI L A
DE
GNU / LINUX
browseable = no
creat mask = 0700
directory mask = 0700
###file sharing###
[Compartilhado]
path =/mnt/hdb/mpl/
browseable = yes
security = user
public = yes
writable = yes
5.5 O smbclient
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 -L host_desejado
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 -L servidor1
A resposta ser semelhante a:
Server time is Fri Dec 22 15:58:02 2000
Timezone is UTC+10.0 Password: Domain=[EMPRESA] OS=[Windows NT
4.0] Server=[NT LAN Manager 4.0] Server=[servidor1] User=[]
Workgroup=[EMPRESA] Domain=[]
46
A P O STI L A
DE
GNU / LINUX
Sharename Type Comment
ADMIN$ Disk Remote Administration Public Disk Public C$ Disk
Default Share Print$ Disk Printer Control
Para acessar uma pasta compartilhada, basta especificar o caminho na rede,
conforme abaixo:
$smbclient //maquina/pasta1 senha
Onde "senha" literalmente a senha de acesso. Se o caminho estiver correto a
resposta ser algo como:
Server time is Fri Dec 22 16:01:12 2000
Timezone is UTC+10.0
Domain=[EMPRESA] OS=[Windows NT 4.0] Server=[NT LAN Manager]
smb:\>
Digite help para obter ajuda sobre os comandos do smbclient.
47
A P O STI L A
DE
GNU / LINUX
Boa parte da usabilidade da Internet vem da facilidade que temos para localizar um
computador conectado. Apesar da maioria dos computadores s conseguirem
localizar outros atravs de endereos IP, 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 Internet, pode tambm ser
usado em uma rede interna para facilitar sua utilizao. Isso 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 BIND, disponvel em
praticamente todas as distribuies Linux. Ele o programa que vai ficar rodando
para receber requisies de mapeamento de nomes em endereos IP e, claro,
respond-las adeqadamente.
6.1 Instalao do BIND9
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 bind9 bind9-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
48
A P O STI L A
DE
GNU / LINUX
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 @127.0.0.1
; <<>> DiG 9.2.4 <<>> www.linux.org @127.0.0.1
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55879
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.linux.org.
IN
;; ANSWER SECTION:
www.linux.org.
41122
IN
198.182.196.56
;; AUTHORITY SECTION:
linux.org.
linux.org.
41122
41122
IN
IN
NS
NS
ns0.aitcom.net.
ns.invlogic.com.
;;
;;
;;
;;
O que pedimos foi para o programa dig obter o endereo IP 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 SECTION).
Note que no informamos ao nosso servidor em lugar nenhum o endereo IP 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 IP 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.
49
A P O STI L A
DE
GNU / LINUX
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. > db.root.new
Isso 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/bind9 restart
Stopping domain name service: named.
Starting domain name service: named.
Com isso nosso servidor DNS j pode resolver os nomes dos computadores na
Internet. Precisamos disso porque vamos substituir o servidor DNS antigo (que deve
ser uma mquina do seu provedor de Internet) 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 IP. Para "batizar" nossas mquinas vamos precisar de um domnio
interno.
6.2 Configurando um 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
50
A P O STI L A
DE
GNU / LINUX
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";
};
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 IP. 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 email 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
$TTL 86400
@
IN
SOA
ns.meudominio.org.br.
minhamaquina.meudominio.org.br. (
1130118145
; Serial
10800
; Refresh
51
A P O STI L A
DE
GNU / LINUX
3600
604800
86400 )
meudominio.org.br.
ftp.meudominio.org.br.
www.meudominio.org.br.
ns.meudominio.org.br.
meudominio.org.br.
mail.meudominio.org.br.
IN
IN
IN
IN
IN
IN
; Retry
; Expire
; Minimum
NS
A
A
A
MX 10
A
ns.meudominio.org.br.
192.168.1.10
192.168.1.10
192.168.1.11
mail.meudominio.org.br.
192.168.1.10
IN
IN
A
A
192.168.1.17
192.168.1.18
Observe ainda que possvel especificar que o mesmo IP 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/bind9 restart
Stopping domain name service: named.
Starting domain name service: 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.
$ dig ftp.meudominio.org.br @127.0.0.1
; <<>> DiG 9.2.4 <<>> ftp.meudominio.org.br @127.0.0.1
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41734
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
52
A P O STI L A
DE
GNU / LINUX
;ftp.meudominio.org.br. IN
;; ANSWER SECTION:
ftp.meudominio.org.br. 86400 IN A
;; AUTHORITY SECTION:
meudominio.org.br. 86400
IN
;; ADDITIONAL SECTION:
ns.meudominio.org.br. 86400 IN
;;
;;
;;
;;
192.168.1.10
NS
ns.meudominio.org.br.
192.168.1.11
A P O STI L A
DE
GNU / LINUX
file "/etc/bind/db.11";
}
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.11
;
; BIND reverse data file for meudominio.org.br
;
$TTL
@
604800
IN
SOA
meudominio.org.br. ns.meudominio.org.br. (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
11
IN
IN
NS
PTR
meudominio.org.br.
ns.meudominio.org.br.
Olhando com ateno nas duas ultimas linhas, podemos ver o seguinte:
IN
NS
meudominio.org.br.
o dominio principal
11
IN
PTR
ns.meudominio.org.br.
O ip e o host.dominio da maquina
Agora com tudo configurado, podemos reiniciar o bind.
# /etc/init.d/bind9 restart
Stopping domain name service: named.
Starting domain name service: 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 STI L A
DE
GNU / LINUX
search meudominio.org.br
nameserver 127.0.0.1
# host ns.meudominio.org.br
ns.meudominio.org.br has address 192.168.1.11
Est finalizado a confgurao de um servidor DNS utilizando o Bind9.
55
A P O STI L A
DE
GNU / LINUX
MDA
Mail Delivery Agent
MUA
Mail User Agent
56
A P O STI L A
DE
GNU / LINUX
SMTP
Simple Mail Transfer
Protocol
POP
Post Office Protocol
Uma aplicao cliente utiliza a POP para transferir o email 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.
IMAP
Uma das caractersticas do IMAP que os e-mails ficam
Internet Message Access no servidor e no so transferidos para o espao de
Protocol
armazenamento da aplicao cliente. Ele til quando o
usurio acessa seus e-mails por mais de uma maquina.
7.2 Instalao do Postfix
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
57
A P O STI L A
DE
GNU / LINUX
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.
58
A P O STI L A
DE
GNU / LINUX
59
A P O STI L A
DE
GNU / LINUX
Deixaremos em branco uma vez que no haver outros domnios virtuais como
gateway de e-mail.
A P O STI L A
DE
GNU / LINUX
courier-pop para entrega local de e-mails.
Para instalarmos os pacotes devemos usar o seguinte comando:
# apt-get install courier-imap courier-pop
61
A P O STI L A
DE
GNU / LINUX
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = mail.marcioleonardi.com.br
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
Subject: Teste
Teste do servidor de e-mail
.
Cc:
Agora vamos logar com o usurio marcio e verificar se o e-mail foi entregue com o
seguinte comando:
# su marcio
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/marcio": 1 message 1 unread
>U 1 root@marcioleonar Wed Jan 25 03:36
15/545
&
Teste
62
A P O STI L A
DE
GNU / LINUX
Aperte a tecla [Enter] para visualizar a mensagem.
Message 1:
From root@marcioleonardi.com.br Wed Jan 25 03:36:47 2006
X-Original-To: marcio@marcioleonardi.com.br
To: marcio@marcioleonardi.com.br
Subject: Teste
Date: Wed, 25 Jan 2006 03:36:47 +0000 (UTC)
From: root@marcioleonardi.com.br (root)
Teste do servidor de e-mail
&
Est finalizado a instalao e configurao do servidor de e-mail.
63
A P O STI L A
DE
GNU / LINUX
8. FIREWALL IPTABLES
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 IIS 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 Iptables 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 Iptables 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.
8.1 Instao do IPTABLES.
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 Iptables foi instalado com sucesso.
8.2 Criando regras no IPTABLES.
64
A P O STI L A
DE
GNU / LINUX
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 -A INPUT -p tcp --syn -j DROP
# iptables -A INPUT -i ppp0 -p udp --dport 0:30000 -j DROP
Isso 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 ICQ 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 -F
Isso elimina todas as regras do Iptables, 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 -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
A P O STI L A
DE
GNU / LINUX
a faixa de 192.168.0.1 at 192.168.0.254.
O Iptables 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.
Imagine agora que voc queira permitir ao mesmo tempo pacotes vindos da rede
local e uma certa porta vinda da Internet, como por exemplo a porta 22 do SSH.
Neste caso voc adicionaria mais uma regra, mantendo as regras anteriores:
#
#
#
#
iptables
iptables
iptables
iptables
-A
-A
-A
-A
INPUT
INPUT
INPUT
INPUT
-p
-p
-p
-p
tcp
tcp
tcp
udp
--destination-port 22 -j ACCEPT
--syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
--syn -j DROP
-j DROP
Agora tudo o que vem na porta 22 (tanto da Internet 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
iptables
iptables
iptables
iptables
-A
-A
-A
-A
-A
INPUT
INPUT
INPUT
INPUT
INPUT
-p
-p
-p
-p
-p
tcp
tcp
tcp
tcp
tcp
--destination-port 22 -j ACCEPT
--destination-port 1021 -j ACCEPT
--destination-port 1080 -j ACCEPT
--syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
--syn -j DROP
Isso 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.
8.3 Compartilhando conexes via NAT
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 Internet 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 STI L A
DE
GNU / LINUX
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
Para compartilhar uma conexo via ADSL ou cabo instalada na eth0:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
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/IP.
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 IP 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 IP fixo ou ento ativar o servio DHCPD na sua
distribuio.
A configurao nos clientes fica: Endereo IP: 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 -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# Abre algumas portas (opcional)
iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 1021 -j ACCEPT
67
A P O STI L A
DE
GNU / LINUX
iptables -A INPUT -p tcp --destination-port 1080 -j ACCEPT
# Abre para a rede local
iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
# Fecha o resto
iptables -A INPUT -p tcp --syn -j DROP
A P O STI L A
DE
GNU / LINUX
DNAT --to-dest 192.168.0.2
# iptables -A FORWARD -p tcp -i eth0 --dport 22 -d 192.168.0.2
-j ACCEPT
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 PREROUTING -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
69