Вы находитесь на странице: 1из 208

Linux Network Administrator

Sumrio

Captulo 1
Ajustes Iniciais 8
1.1. Objetivos 8
1.2. Introduo terica 8
1.3. Configurando a rede 8
1.4. Configurando a resoluo de nomes 9
1.5. Configurao do hostname 9
1.6. Configurando o repositrio de rede 10
1.7. Hardening 11
1.8. Remover servios desnecessrios 14
1.9. Definindo variveis e alias de sistemas 15
1.10. Funcionamento do Sistema 16
1.11. Exerccios Tericos 18
1.12. Laboratrio 19

Captulo 2
PAM 20
2.1. Objetivos 20
2.2. Introduo terica 20
2.3. Mdulos 21
2.4. Controles 21
2.5. Prtica dirigida 22
2.6. Exerccios Tericos 31
2.7. Laboratrio 31

Captulo 3
RAID 33
3.1. Objetivos 33
3.2. Introduo terica 33
3.2.1. Nveis de RAID 36
3.3. Prtica dirigida 40
3.3.1. Definindo as Parties 40
3.3.2. Trabalhando com MDADM 41
3.3.3. Criando o RAID 41
3.3.4. Verificando o funcionamento do RAID: 42
3.3.5. Administrando o RAID 43
3.4. Exerccios Tericos 44
3.5. Laboratrio 45

Captulo 4
LVM 46
4.1. Objetivos 46
4.2. Introduo terica 47
4.3. Como funciona o LVM 47
4.4. Definindo as Parties 49
4.5. Prtica Dirigida 50
4.5.1. Usando o LVM 52
4.5.2. Administrando o LVM 53
4.5.3. Troubleshooting 54
4.6. Exerccios Tericos 56
4.7. Laboratrio 58

Captulo 5
DHCP 59
5.1. Objetivos 59
5.2. Introduo terica 60
5.3. Prtica dirigida 62
5.3.1. Configurando um servidor DHCP 62
5.3.2. Principais diretrizes do arquivo de configurao 63
5.3.3. Configurando os clientes DHCP 63
5.4. Fixar IP via DHCP 64
5.5. Exerccios tericos 66
5.6. Laboratrio 66

Captulo 6
FTP 67
6.1. Objetivos 67
6.2. Introduo terica 68
6.3. Prtica dirigida 69
6.4. Comandos FTP 71
6.5. Exerccios tericos 77
6.6. Laboratrio 77

Captulo 7
NFS 78
7.1. Objetivos 78
7.2. Introduo terica 79
7.3. Prtica Dirigida 79
7.3.1. Instalao e configurao do NFS 79
7.4. Exerccios tericos 83
7.5. Laboratrio 84

Captulo 8
Servidor SAMBA 85
8.1. Objetivos 85
8.2. Introduo terica 86
8.3. Prtica Dirigida 86
8.4. Samba como controlador de Domnio Primrio 90
8.5. Cadastrando usurios no PDC 92
8.6. Inserindo uma mquina cliente Windows XP no domnio 94
8.7. Exerccios Tericos 102
8.8. Laboratrio 102

Captulo 9
Domain Name System 103
9.1. Objetivos 103
9.2. Introduo terica 104
9.2.1. Caractersticas 104
9.3. Resoluo 106
9.3.1. Resoluo Recursiva 106
9.3.2. Resoluo Iterativa 107
9.4. Arquivo /etc/hosts 108
9.5. Ferramentas de consulta 109
9.6. Prtica dirigida 110
9.7. BIND9 112
9.8. Servidor cache 113
9.9. Restringindo consultas 115
9.10. Servidor de zonas 116
9.10.1. Tipos de zonas e Registros 116
9.11. Configurao do Servidor BIND9 119
9.12. Exerccios tericos 124
9.13. Laboratrio 124

Captulo 10
Apache 125
10.1. Objetivos 125
10.2. Introduo terica 126
10.3. MPM Worker e MPM PreFork 126
10.3.1. MPM Pre Fork 127
10.3.2. MPM Worker 127
10.4. Prtica dirigida 127
10.4.1. Instalao do Apache2 127
10.4.2. Ajustes dos mdulos Worker e PreFork 129
10.5. Segurana 131
10.6. Suporte a PHP 131
10.7. Domnios virtuais 133
10.8. Suporte a HTTPS 135
10.9. Exerccio terico 137
10.10. Laboratrio 138

Captulo 11
Postfix 139
11.1. Objetivos 139
11.2. Introduo terica 140
11.3. Caractersticas do Postfix 141
11.4. Prtica dirigida 142
11.5. SMTP 144
11.6. Courier POP3 e Courier IMAP 145
11.6.1. Criando caixas postais: 147
11.7. Criando alias no Postfix 148
11.8. Exerccios tericos 149
11.9. Laboratrio 150

Captulo 12
Web Proxy com Squid 151
12.1. Objetivos 151
12.2. Introduo Terica 152
12.3. Funcionamento de um Web Proxy 152
12.4. Proxy Manualmente Configurado 153
12.5. Proxy Transparente 153
12.6. Access Control Lists 154
12.7. Tipos comuns de ACL's 155
12.7.1. Sintaxe das ACLS 155
12.8. ACL's de origem 155
12.9. ACL's de destino 156
12.10. ACL's de horrio 156
12.11. Filtros 156
12.12. Prtica Dirigida 157
12.13. Configuraes Iniciais 158
12.14. Filtrando acessos com Squid 159
12.15. Blacklist e Whitelist 161
12.16. Autenticao NCSA 162
12.17. Auditoria de acesso com SARG 163
12.18. Exerccios Tericos 164
12.19. Laboratrio 165

Captulo 13
OpenLDAP 166
13.1. Objetivos 166
13.2. Introduo terica 167
13.3. Prtica dirigida 168
13.4. Configurando um cliente LDAP 176
13.5. Acessando o OpenLDAP via browser com PhpLdapAdmin 179
13.6. Autenticando o Squid na base de usurios LDAP 180
13.7. Exerccio terico 181
13.8. Laboratrio 181

Captulo 14
Firewall 182
14.1. Objetivos 182
14.2. Introduo terica 183
14.3. Compreendendo as polticas bsicas e o conceito das excees 184
14.4. Prtica dirigida 185
14.5. Firewall como gateway de rede 189
14.6. Script de firewall 191
14.7. Exerccios tericos 193
14.8. Laboratrio 194

Captulo 15
OpenVPN 195
15.1. Objetivos 195
15.2. Introduo Terica 196
15.3. Prtica Dirigida 196
15.3.1. Configurando o servidor 196
15.4. Configurando o cliente 197

REFERNCIAS
BIBLIOGRFICAS 199
1.
Ajustes Iniciais
2. Objetivos

Configurar a rede;

Configurar resoluo de nomes e hostname da mquina;

Entendimento sobre Hardening;

Desativar Servios desnecessrios;

Configurar repositrio de rede.


1. Introduo terica
Neste captulo iremos estudar alguns conceitos antigos, como:

Configurar a rede e o repositrio;

Os arquivos de alias e instalar pacotes;

Hardening do servidor.

1. Configurando a rede
Vamos nos certificar que o arquivo /etc/network/interfaces est
corretamente configurado. Este arquivo muito importante para o funcionamento do
nosso servidor, neste arquivo podemos configurar as opes e endereos IPs que
podemos utilizar em nosso sistema:

# vim /etc/network/interfaces

1 # Interface Loopback
2 auto lo
3 iface lo inet loopback
4

5 # Interface de rede primria


6 auto eth0
7 iface eth0 inet static
8 address 192.168.200.X
9 netmask 255.255.255.0
10 network 192.168.200.0
11 broadcast 192.168.200.255
12 gateway 192.168.200.254

RedHat:

# vim /etc/sysconfig/network/ifcfg-eth0

1. Configurando a resoluo de nomes


1) Edite o arquivo /etc/resolv.conf, para colocarmos o endereo do
nosso servidor DNS:

# vim /etc/resolv.conf

2) Adicione o endereo IP do servidor DNS da Embratel:

nameserver 4.2.2.2

1. Configurao do hostname
Em um servidor, a configurao correta do hostname e do arquivo hosts
essencial para eliminar problemas em servios de rede. Abra o arquivo
/etc/hostname, adicione o nome, onde x o nmero de sua mquina (caso esteja
errado):

# vim /etc/hostname
microX

1) Edite o arquivo de /etc/hosts:

# vim /etc/hosts

127.0.0.1 localhost.localdomain localhost


192.168.200.X microX.com.br microX

1. Configurando o repositrio de rede


Para instalar programas no Debian GNU/Linux, necessrio que o
repositrio de rede esteja corretamente configurado. Vamos configur-lo para buscar
os softwares em um repositrio interno da Desideratu.

1) Abra o arquivo responsvel pela configurao do repositrio:

# vim /etc/apt/sources.list

2) Edite-o apontando para o repositrio interno da Desideratu:

deb http://192.168.1.1/debian lenny main contrib non-free


3) Depois de configurado, faa o update do banco de dados do
aptitude:

# aptitude update

4) Agora, vamos instalar e configurar o nosso editor de textos


habilitando o destaque de sintaxe e linhas numeradas:

# aptitude install vim


# echo "syntax on" >> /etc/vim/vimrc
# echo "set number" >> /etc/vim/vimrc

Procedimentos de Ps Instalao, conhecidos tambm como Hardening,


sero discutidos no treinamento de Segurana 415 ISO27002.

1. Hardening

Temos a distribuio instalada. Ela est pronta pra ser usada?

Hardening um processo de mapeamento das ameaas, avaliao dos riscos


e execuo de atividades corretivas, com foco na infra-estrutura e o objetivo principal
torn-la preparada para enfrentar tentativas de ataque.

Normalmente, o processo inclui remover e/ou desabilitar nomes ou logins de


usurios que no estejam mais em uso, alm de servios desnecessrios.

Outras providncias que um processo de hardening pode incluir: limitar o


software instalado quele que se destina funo desejada do sistema; aplicar e
manter os patches atualizados, tanto de sistema operacional quanto de aplicaes;
revisar e modificar as permisses dos sistemas de arquivos, em especial no que diz
respeito a escrita e execuo; reforar a segurana do login, impondo uma poltica de
senhas fortes.

Temos que fechar nosso sistema o mximo possvel, dificultando a ao de um


cracker. Segurana nunca demais.

O primeiro passo para proteger nosso servidor aps uma instalao, cuidar o
mximo possvel o sistema de arquivos.

O que podemos fazer para melhorar a segurana?

* exec, noexec - Permite ou no a execuo de binrios no sistema de


arquivos.
* rw - Monta o sistema de arquivos com a opo Read-Write, ou seja,
leitura e escrita.
* ro - Monta o sistema de arquivos com a opo Read-Only, ou seja,
somente leitura.
* suid, nosuid - Habilita/desabilita o bit de set-user-identifier ou
set-group-identifier.
* dev, nodev - Serve para desabilitar a interpretao de dispositivos
de blocos especiais em um sistema de arquivos

Exemplo:

/dev/sda3 /home ext3 defaults,noexec,nodev 0 0


/dev/sda7 /tmp ext3 defaults,noexec,nodev 0 0

Dica de segurana: Porque no /tmp? Muitos rootkits procuram este tipo


de acesso atravs do /tmp, por isso recomendado se ter o /tmp em
uma partieso separada, j que seu permissionamento padro de
gravao universal.

Dica de segurana: Montando o /tmp com noexec voc impede que


um CRACKER jogue programas dentro do /tmp e os execute. Isso ajuda a
evitar muitos ataques de escalao de privilgios.

E a senha do root, como deve ser?


Deve ser uma senha bem forte, com nmeros, caracteres especiais, letras
maisculas e minsculas misturadas. Por exemplo:
Efae:Z7P Hoo(f4Gu Ud-ah8Io $LinuX@%2010

Dica de segurana: Use o comando pwgen para gerar suas senhas, ex:
pwgen -y. Iremos estudar Hardening mais a fundo no Treinamento
Segurana em Servidores Linux usando a ISO27002 415 .

Para isso, instale-o:

# aptitude install pwgen

Se eu tenho uma senha de root forte e eu tenho acesso fsico ao servidor, estou
seguro? No, pois ter acesso fsico ao servidor nos permite fazer praticamente
qualquer coisa com ele.

Por padro algum servio vem ativados, devemos mant-los caso no


precisemos deles? Nunca deve-se manter servios e pacotes instalados no servidor
que no sejam os estritamente necessrios.

Precisamos manter nosso servidor sempre atualizado? Sim. Por que? Todo
software tem bugs de segurana e fundamental corrigi-los o quanto antes.
Tambm sumamente importante que voc esteja inscrito em listas de discusso que
enviam notificaes de segurana para a sua distribuio. A ideia manter-se
informado das atualizaes. Veja:

http://lists.debian.org/debian-security-announce/
https://rhn.redhat.com/errata/rhel-server-errata.html

1. Remover servios desnecessrios


Todo Administrador de Sistemas tem, ou deveria ter, cincia de que um
servidor deve executar somente os softwares necessrios, eliminando assim riscos de
segurana e ajudando a melhorar a performance.

O primeiro passo verificar quais servios de rede esto habilitados e


aceitando conexes.

Alm das Configuraes Iniciais que estamos executando neste captulo,


iremos continuar, no prximo captulo, estudando o PAM.

1) Verificando servios de rede com netstat:

# netstat -nltup

2) Encerrando os servios encontrados:

# invoke-rc.d exim4 stop


# invoke-rc.d nfs-common stop
# invoke-rc.d portmap stop
# invoke-rc.d openbsd-inetd stop

3) Removendo servios da inicializao:

# update-rc.d -f exim4 remove


# update-rc.d -f nfs-common remove
# update-rc.d -f portmap remove
# update-rc.d -f openbsd-inetd remove

RedHat:

# chkconfig --list
# chkconfig --level 2345 portmap stop
O comando runlevel, mostra qual o nvel de inicializao no qual nos
encontramos. O arquivo que armazena nosso runlevel padro
/etc/inittab. A linha que define nosso runlevel id:2:initdefault. Neste
caso o runlevel 2.

Voc tambm pode habilitar os servios, com o programa sysv-rc-conf


e/ou com o rcconf, que foram utilizados no treinamento 451:
# aptitude install rcconf sysv-rc-conf
# rcconf
# sysv-rc-conf

1. Definindo variveis e alias de sistemas


O Sistema Operacional vem habilitado por padro sem alias e somente as
variveis essenciais ao seu funcionamento. Ento iremos configurar nosso
GNU/Linux.

1) Agora vamos colocar as variveis e aliases, para isso, edite o


arquivo abaixo:

# vim /etc/profile

2) Vamos inserir estas opes no final do arquivo:

alias ls='ls --color'


alias lsl='ls -l'
TMOUT=1200
HISTSIZE=1000

3) Para validar as mudanas no disco, execute:

# source /etc/profile
O comando source apenas executa o contedo do arquivo, neste caso, para
atualizar os alias e variveis.

Os comandos set e env vo ser cobrados na prova do LPI, eles so uteis


para listar as variveis globais e locais. Assim como os alias.

1. Funcionamento do Sistema
Todos os itens que veremos agora j so bem conhecidos, mas so cobrados
na LPI.

1) Para identificar a verso do kernel instalado e distribuio:

# uname -r ; uname -a
# cat /proc/version

2) O kernel fica carregado na memria RAM, este seu arquivo:

# cd /boot
# file vmlinuz-2.6.26-2-686
# du -sh vmlinuz-2.6.26-2-686

3) Quando o kernel carregado em memria, logo iniciam-se os


processos:

# cd /proc
# ls
# ps aux
# cat cpuinfo

4) Dos arquivos do diretrio /etc, so lidos, onde devem ser


montados os dispositivos e a inicializao dos servios:

# cat /etc/fstab
# cat /etc/mtab

5) Para saber quais dispositivos esto montados no sistema:


# cat /proc/mounts
# cat /proc/partitions
# df -h

6) Os dispositivos ficam em /dev, e seu sistema de arquivos o


udev:

# ls -l /dev

Veja novamente estes tpicos nos Treinamentos 450 e 451.

7) Para listar os mdulos carregados no sistema:

# ls -l /lib/modules
# lsmod
# modprobe -l
# cat /proc/modules

8) Para exibir todas bibliotecas do sistema:

# ldconfig -p
# ls /lib
# cat /etc/ld.so.cache

Fique atento, porque tudo que estudamos no primeiro captulo, ser


cobrado no exame da LPI. Estude as apostilas da formao. Para mais
informaes, acesse: http://www.lpibrasil.com.br
1. Exerccios Tericos

1) Qual a importncia dos procedimentos de ps-instalao?


_____________________________________________________________________________
_____________________________________________________________________________

2) Qual o diretrio menos importante para se fazer backup no Sistema?


_____________________________________________________________________________

3) Como eu consigo verificar quais arquivos tem permisses especiais


habilitadas de SGUID e SUID?
_____________________________________________________________________________
_____________________________________________________________________________

4) Qual a mscara padro do sistema para criao de arquivos e diretrios, e


em qual arquivo ela fica armazenada?
_____________________________________________________________________________

5) Como ficariam as permisses de arquivos e diretrios, se a umask do


sistema fosse 023 ou 065?
_____________________________________________________________________________
_____________________________________________________________________________

6) Quais diretrios tem stick bit ativado? Quais problemas poderamos ter?
____________________________________________________________________________
____________________________________________________________________________
1. Laboratrio
1. Instale o htop para gerenciar os processos;

2. Desabilite o gdm do runlevel padro utilizando o sysv-rc-rconf.


1.
PAM
2. Objetivos

Entender a configurao do PAM;

Conhecer e aplicar seus mdulos e controles;

Aplicar checagem de logs e conhecer parmetros de alguns arquivos;

Impedir login de super usurio via console.


1. Introduo terica
A cada dia, mais e mais mecanismos de autenticao diferentes surgem no
mercado. Imagine que para cada mtodo de autenticao, fosse necessrio rescrever
aplicaes como FTP, Apache, SSH e o sistema de login via console e grfico
do Gnu/Linux?

Foi pensando neste tipo de esforo que foi criado o mecanismo de autenticao
PAM - Pluggable Authentication Modules, que oferece uma camada de abstrao
para autenticao em sistemas nix. Assim, se quisermos adicionar um novo modelo
de autenticao via leitor de digitais, por exemplo, basta apenas instalar o mdulo do
PAM que oferea essa funcionalidade e configurar as aplicaes para trabalhar
com este mdulo, sem a necessidade de recriar ou reimplementar funes no
aplicativo.

Alm disso, com o PAM possvel controlar horrios e terminais disponveis


para logins, quais sero os usurios que podem efetuar um su no sistema
operacional, autenticar em bases de dados diferentes, alm de diversos outros
mdulos que esto disponveis no seguinte endereo:

http://www.kernel.org/pub/linux/libs/pam

2. Mdulos
O PAM trabalha com mdulos e controles, e cada tipo de mdulo prov uma
funcionalidade diferente dentro do sistema. Vamos comentar primeiro os seguintes
mdulos:

account: Verifica se a conta vlida no sistema, se a senha do usurio expirou


e se o usurio realmente tem direitos de acessar aquele servio.

authentication: Verifica questes de autenticao, seja por senhas ou


impresses digitais (quando falamos de biometria). o mdulo
authentication que oferece a flexibilidade do PAM, j que, para cada mtodo
de autenticao criado, existe uma biblioteca que ser adicionada este
mdulo.

password: Este mdulo responsvel por cuidar dos aspectos relacionados a


tarefas envolvendo senhas, como atualizao e solicitao de nova senha de
acesso no caso da troca da mesma.
session: Responsvel por tarefas ps autenticao, como montar um
compartilhamento de arquivos remotos que contm o diretrio /home do
usurio em questo, por exemplo.

1. Controles
Alm dos mdulos, existem tambm os controles, os quais comentaremos a
seguir:

required: Checa a existncia do mdulo solicitado. Caso esse mdulo falhe,


somente depois de verificar se todos os mdulos do mesmo tipo esto
disponveis que o usurio ser avisado.

requisite: Checa a existncia do mdulo solicitado e avisa o usurio


imediatamente caso este mdulo falhe.

sufficient: Somente a verificao do mdulo suficiente para a autenticao,


desde que nenhum mdulo marcado como required falhe.

optional: O sucesso ou a falha deste mdulo no interfere no processo de


autenticao.

A maioria das distribuies Gnu/Linux trabalham com PAM, as nicas


distribuies que no o fazem, so aquelas baseadas em Slackware.

1. Prtica dirigida
1) Vamos verificar quais mdulos do PAM j esto instalados em nosso
sistema:

# ls /lib/security/
Como descobrir se sua aplicao tem suporte no PAM?
R: Basta utilizar o comando ldd.

Execute:

# ldd /bin/login
linux-gate.so.1 => (0xb7f8b000)
libpam.so.0 => /lib/libpam.so.0 (0xb7f53000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0xb7f4f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7df0000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7dec000)
/lib/ld-linux.so.2 (0xb7f71000)

Veja as linhas:

libpam.so.0 => /lib/libpam.so.0 (0xb7f53000)


libpam_misc.so.0 => /lib/libpam_misc.so.0 (0xb7f4f000)

Portanto o login utiliza bibliotecas do PAM.

Qual seria outra maneira? Consultando o diretrio /etc/pam.d:

# ls -l /etc/pam.d

2) Vamos olhar dentro do diretrio do PAM procurando por arquivos


de configurao para os programas instalados:

# ls /etc/pam.d

3) Para entendermos como o PAM funciona, vamos ativar um mdulo


simples que serve para bloquear usurios comuns. Edite o arquivo
/etc/pam.d/login e visualize o mdulo pam_nologin.so:

# vim /etc/pam.d/login
auth requisite pam_nologin.so

4) Para esse plugin funcionar ele necessita que o arquivo nologin


esteja criado dentro do diretrio /etc. Crie o arquivo nologin dentro
do diretrio /etc:

# touch /etc/nologin

Com isso tente logar com um usurio comum em outro terminal.

Repare que a partir do momento que o plugin est ativado no programa


login e o arquivo necessrio est criado, os usurios comuns no
conseguem mais logar, somente o usurio root. Isso no muito funcional
mas serve de exemplo para entendermos como o PAM funciona.
Como eu bloquearia o login do root em terminais de modo texto sem o uso
do PAM? Veja abaixo:

# vi /etc/securetty
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
# tty7
# tty8
# tty9
# tty10
# tty11
# tty12

Basta apenas comentar a linhas do arquivo. Deixe pelo menos um terminal


permitindo o root. Agora, tente logar-se com o usurio root em um terminal, como,
por exemplo, tty2, tty3 etc.

Uma maneira prtica de usar o PAM fazermos com que o usurio root no
tenha acesso direto ao login, forando a logar com usurio comum e depois executar
su para virar root.

5) Para isso acontecer, editamos o arquivo e descomentamos a regra


abaixo:

# vim /etc/pam.d/login
account requisite pam_time.so

6) Edite o arquivo /etc/security/time.conf e acrescente na ltima


linha:

# vim /etc/security/time.conf
login;*;root;!Al0000-2359
Os campos acima so:
login - Servio que ir ser controlado
* - Terminal
root - Usurio
Al0000-2359 - Dias e horrios de filtragem.
O dia da semana especificado em duas letras, em ingls:
Mo - Segunda-feira
Tu Tera-feira
We - Quarta-feira
Th - Quinta-feira
Fr - Sexta-feira
Sa - Sbado
Su - Domingo
Wk - Somente sbado e domingo (fim de semana)
Wd - Segunda a sexta-feira
Al - Todos os dias
O sinal "!" especifica uma exceo.
A faixa de horas especificada aps o dia no formato
HHMM-HHMM.

Efetue login com o usurio root em outro terminal e veja que no ser possvel
efetuar o login.

Com o PAM, podemos limitar quais usurios podero ter acesso a utilizar o
comando su. Para isso, crie um grupo chamado admins para os usurios que
podero ter acesso a fazer o su.

7) Adicione o grupo onde os usurios que podero executar su:

# groupadd admins
8) Agora vamos adicionar o usurio aluno ao grupo admins:

# gpasswd -a aluno admins

9) Crie uma poltica que no possibilite o uso de su, exceto pelos


usurios do grupo admins:

# vim /etc/pam.d/su
auth required pam_wheel.so group=admins

Para fazer o teste, logue-se como o usurio que pertence ao grupo admins
e tente virar root usando o su.

10) Em seguida tente com um usurio que no pertence ao grupo


admins:

$ su -

11) Edite o arquivo /etc/login.defs e descomente a seguinte


linha:

SULOG_FILE /var/log/sulog

12) Configure para ver o contedo do arquivo de log em tempo real


no terminal 12:

# tail -f /var/log/sulog > /dev/tty12 &

13) Agora, utilize o comando su para alternar entre um usurio


e outro:

# su - aluno
14) Veja o contedo do arquivo de log no terminal 12:

CTRL+ALT+F12

15) Insira um novo usurio chamado caio para nossos testes:

adduser caio

16) Como permitir acesso a grupos extras como, por exemplo,


audio, floppy, cdrom, etc? Veja:

login;tty*;caio;Al0800-1900;floppy

Essa sintaxe quer dizer que o usurio caio s pode ter acesso ao grupo floppy
se efetuar o login entre 08:00 da manha e 19:00 da noite.

Outro exemplo:

login;tty*;*;SaSu0000-2400;audio games

Essa sintaxe quer dizer que todos os usurios podem ter acesso ao grupo
games e audio aos sbados e domingos.

17) Como limitar quais usurios podem logar? Edite o arquivo


/etc/pam.d/login e ative o mdulo pam_listfile.so da seguinte
maneira:

# vi /etc/pam.d/login

auth required pam_listfile.so item=user sense=allow file=/etc/usuarios onerr=fail


18) Agora crie o arquivo /etc/usuarios e coloque os nomes dos
usurios que podem fazer login:

# vi /etc/usuarios
# Usurios que podem fazer login
aluno
caio

Faa um teste, veja se o usurio caio pode logar e depois faa outro teste
com um usurio comum.

Podemos utilizar algum mdulo do PAM para limitar horrios de acesso


ao SSH? Como posso fazer isso?
R: Sim. Podemos utilizar o mdulo pam_time.so para limitar horrios de
acesso ao SSH.

19) Primeiro edite o arquivo /etc/pam.d/sshd e adicione o


mdulo:

# vi /etc/pam.d/sshd
account required pam_time.so

20) Possibilite acesso via ssh somente no horrio das 8:00 s


18:00:

# vi /etc/security/time.conf
sshd;*;aluno;Al0800-1800

Vamos falar agora sobre o pam_limits! Esse um excelente recurso para


limitar praticamente todos os recursos da mquina a cada usurio. Pode-se inclusive
determinar o tempo de consumo de CPU e memria RAM. Confira a seguir.

O arquivo de configurao do pam_limits o /etc/security/limits.conf.


Dentro dele, as linhas sero configuradas da seguinte forma:

<usuario/grupo> <tipo_de_limite> <recurso> <valor_do_limite>

Em usurio/grupo, podemos colocar um * para especificar todos os usurios,


colocar um nome de usurio qualquer ou um nome de grupo, comeando com @.
No tipo de limite, existem dois tipos possveis: soft e hard.

Quando o limite do tipo soft alcanado, o sistema avisa que chegou no


limite mas no restringe nada. Se o limite for do tipo hard, o sistema simplesmente
restringe o recurso e no deixa passar. O soft ento serve apenas para um aviso
amigvel, ento na dvida o hard quem manda!
core - Limite do tamanho do arquivo coredump (em KB). a
mesma configurao que obtemos com o comando ulimit
-c do shell.
data - Tamanho mximo de segmento de dados que um
programa pode usar. Tambm como: ulimit -d no bash.
fsize - Tamanho mximo de algum arquivo que o usurio possa
criar. Tambm: ulimit -f.
memlock - Tamanho de memria alocada que os programas podem
usar (em KB). Tambm: ulimit -l.
nofiles - Nmero mximo de arquivos abertos ao mesmo tempo.
Tambm: ulimit -n.
rss - Tamanho mximo de memria compartilhada (em KB).
Tambm: ulimit -m.
stack - Valor mximo de um processo executado (em KB).
Tambm: ulimit -s.
cpu - Tempo mximo em minutos de uso da CPU. Tambm:
ulimit -t.
nproc - Nmero mximo de processos executados ao mesmo
tempo. Tambm: ulimit -u.
as - Limite em KB de espao de endereamento.
maxlogins - Nmero mximo de logins para esse usurio
maxsyslogins - Nmero mximo de logins no sistema
priority - Em qual prioridade padro os processos desse usurio
devem rodar.
locks - Nmero mximo de arquivos de locks que podem ser
gerados pelo usurio. Tambm: ulimit -x.
nice - Nmero mximo de prioridade que o usurio pode setar,
entre -20 (mxima prioridade) e 19 (mnima prioridade).
Tambm: ulimit -e.

Fique atento, a prova do LPI pode cobrar as opes que encontramos


dentro do arquivo limits.conf. Conhecer todas estas opes, e seu pleno
entendimento so tarefas essenciais para ser um Administrador de
Sistemas GNU/Linux.

21) Como limitar que um usurio possa utilizar somente dois


terminais consecutivos? V at o diretrio /etc/security, edite o
arquivo limits.conf e insira a seguinte linha:

aluno hard maxlogins 2

Dessa forma, limita-se o usurio aluno para utilizar somente dois terminais
consecutivos.

22) Limitando o tamanho mximo de um arquivo criado pelo


usurio aluno:

aluno hard fsize 1000

23) Logado com o usurio aluno, perceba que ele no pode criar
arquivos maiores que 1000KB (fsize 1000).

$ dd if=/dev/zero of=arquivo bs=1024 count=1000


1000+0 records in
1000+0 records out
1024000 bytes (1,0 MB) copied, 0.00291367 s, 351 MB/s

24) Ele deixou criar um arquivo de 1000KB. Agora vamos criar um


de 1001!

$ dd if=/dev/zero of=arquivo bs=1024 count=1001


File size limit exceeded
1. Exerccios Tericos

1) Qual a funo do PAM e como ele trabalha?

_______________________________________________________________________________

_______________________________________________________________________________

2) Quais aplicaes podem ser integradas com o PAM?

_______________________________________________________________________________

_______________________________________________________________________________

3) Qual a diferena do required para o requisite nas diretivas do PAM?

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Permita o login de root apenas no tty6;

2. Crie o usurio "manutencao" faa com ele possa efetuar login via ssh, apenas
de segunda a sexta feira, das 8:00 as 18:00.
1.
RAID
2. Objetivos
Entender os principais nveis de RAID;

Configurar RAID-1;

Verificar o estado do RAID;

Simular falhas no RAID.

1. Introduo terica
Um servidor deve sofrer muitas manutenes durante seu perodo de uso? No!
Um servidor bem configurado e otimizado deve funcionar muito bem durante anos
com poucas intervenes. Um servidor deve ser bem mais estvel e confivel do que
um desktop.

O servidor pode fornecer vrios servios como DNS, HTTP, Proxy,Banco


de Dados, e muitos outros. Todos eles configurados para atender um alto nmero de
usurios simultneos. Mas o que torna um servidor seguro?

O que torna um servidor seguro o uso de componentes redundantes. Quais


so os problemas mais comuns que ocorrem em um servidor? Problemas nos discos
rgidos e fontes de alimentao. Os discos rgidos so confiveis? No so. Discos
rgidos possuem partes mecnicas e estas so extremamente sujeitas a falhas.

Qual a vida mdia til de um HD? Em torno de 5 anos. Pode-se ter sorte e ele
funcionar por mais algum tempo bem. Depende da marca e dos seus cuidados com o
disco.

HDs IDE no so recomendados para servidores. Os HDs recomendados so


os do tipo SCSI ou Sata. O Sata uma opo mais barata.
O HD IDE no oferece suporte a NCQ. Mas o que NCQ? Trata-se de um
recurso que permite controladora do HD alterar a sequncia das leituras no disco,
a fim de otimizar o processo.

O que poderia ser feito para garantir que esse servidor continue operando
caso um disco pife? Usar RAID.

O RAID - Redundant Array of Inexpensive Disks foi desenvolvido em 1988


como uma soluo barata para garantir a disponibilidade da informao armazenada
em discos, utilizando para isso uma configurao especial de discos rgidos, que
podem oferecer redundncia em caso de falhas e ganho de performance em escrita
ou leitura, dependendo da configurao do conjunto RAID.

Como principais vantagens, o RAID oferece:

Ganho de desempenho no acesso para leitura ou gravao;

Redundncia em caso de falha em um dos discos;

Uso mltiplo de vrias unidades de discos;


Facilidade em recuperao de contedo perdido.

Existem duas formas de criarmos um RAID:

Via Software: Feito por aplicativos e mdulos do sistema operacional. O


RAID via software s entra em funcionamento depois que o Kernel
carregado na memria do computador. A principal vantagem a facilidade de
configurao e a flexibilidade, j que podemos trabalhar com vrios discos
diferentes. A principal desvantagem a dependncia da correta configurao
do sistema operacional.

Via Hardware: Feito por uma placa controladora que conecta um disco ao
outro. A principal vantagem o desempenho, j que um RAID via hardware
mais rpido e independente do sistema operacional. A principal desvantagem,
que a placa controladora se torna um SPOF - Single Point of Failure, ou seja,
necessrio ter uma controladora de discos igual ou compatvel com a que
voc possui para o caso de falhas neste hardware.

O que significa redundncia?

R: Redundncia ter componentes de reserva para substituir o componente


principal mantendo a disponibilidade dos servios. Existem fontes redundantes,
matriz de discos redundantes, servidores redundantes. Manter redundncia
requer um alto investimento financeiro.

1. Nveis de RAID

Os principais nveis de RAID utilizados hoje no mercado so os nveis 0,1, 5, e


suas derivaes, como por exemplo, o RAID 10. Vamos entend-los:

RAID 0: Este o nico nvel de RAID que no implementa redundncia. Sua


finalidade aumentar o desempenho de leitura e gravao, uma vez que ao
gravar, divide os dados em partes iguais e armazena cada fragmento em um
disco diferente simultaneamente. Por isso, com dois discos, a velocidade de
leitura praticamente dobra. Com trs discos, triplica. E assim por diante. Sua
desvantagem que se qualquer um dos disco falhar, o sistema operacional para
de funcionar, alm de ocasionar perda dos dados. So necessrios ao menos
dois discos para implementar RAID 0, e eles podem ser de tamanhos
diferentes.

Ento o RAID 0 garante redundncia?

No. Este tipo de implementao vai utilizar o mximo disponvel de discos no


sistema, mas no vai te garantir redundncia e de fato vai aumentar as chances do
disco virtual falhar. Se um disco pifar, a controladora no consegue reconstruir os
arquivos. Portanto um mtodo que requer cuidados.

Caractersticas do RAID 0:
* Excelente gravao e leitura;
* Aproveitamento total de espao;
* Nenhuma redundncia.

RAID 1: O nvel mais utilizado. Sua principal finalidade prover redundncia


dos dados. Esta garantida pela duplicao dos dados que so igual e
simultaneamente gravados em cada par de discos, logo, se um deles falhar, o
outro continuar operando e mantendo a informao disponvel, at que a
substituio do disco defeituoso seja feita. O ganho de desempenho est na
leitura, uma vez que os dados so lidos em partes iguais e simultaneamente de
todos os discos. A desvantagem desse nvel que s metade do volume total de
armazenamento nos discos utilizados ficar disponvel para o sistema
operacional. preciso no mnimo dois discos para implementar RAID 1,
sempre em pares.

RAID1 backup? No. apenas redundncia.

DICA DE SEGURANA: RAID 1 espelhado no backup. Se voc apagar


um arquivo acidentalmente esse arquivo vai ser apagado em todos os
discos. Sempre tenha uma CPIA dos dados.

Caractersticas do RAID 1:
* Redundncia: se um dos discos falhar o sistema continua funcionando;
* Voc vai precisar de 2 Hds, mas s vai usar a rea til de um;
* Reduz um pouco o desempenho da escrita, pois o mesmo dado gravado
nos discos que estiverem em RAID 1.

Fique atento, a prova do LPI ir cobrar a utilizao e conceitos de RAID.


Um comando que podemos utilizar para fazer backup e manuteno de
arquivos no sistema o comando rsync. Outros comandos que nos
mostra alguns detalhes importantes so hdparm e sdparm.

RAID 5: Neste nvel de RAID teremos um balano das vantagens e


desvantagens dos nveis anteriores, ou seja, RAID 5 provm um ganho de
desempenho e tolerncia a falhas a custos menores que RAID 0 ou RAID 1
individualmente. O ganho de desempenho est mais uma vez na leitura. Quanto
mais discos forem adicionados a composio, mais rpida ser a leitura, uma
vez que a gravao distribuda em blocos de tamanhos iguais por todos os
discos. A mgica do RAID 5 est justamente na diviso e distribuio destes
blocos. Numa composio de trs discos os dados sero divididos em dois
blocos, A1 e B1, sendo que os bits destes dois blocos sero comparados
atravs de um XOR que um identificador de exclusividade. O resultado ser
gravado no terceiro volume como P1. Alm disso, os blocos de paridade so
alternadamente gravados em cada disco, aumentando a tolerncia.

Exemplo:

A1 B1 P1
A2 P2 C2
P3 B3 C3

Qualquer um dos discos que falhar pode ser rapidamente reconstrudo atravs
de novas operaes XOR entre os dados restantes. Tomemos por exemplo A1 =
01001100 e B1 = 10100101.

01001100 XOR
10100101
--------
11101001

Agora suponha que o bloco B1 foi perdido. Para recuper-lo basta aplicar um
XOR entre A1 e P1.
01001100 XOR
00010110
--------
01011010

A operao XOR significa que se so iguais "0 e 0" ou "1 e 1", ento o resultado
verdadeiro (0). Se houver mais de dois blocos para serem comparados, calcule a
paridade dos dois primeiros, e com resultado, compare com o terceiro, e assim
sucessivamente. A principal desvantagem do RAID 5 o custo de processamento
da paridade. Portanto, RAID 5 menos eficiente na gravao que seus
antecessores.

A quantidade mnima de discos no RAID 5 3, podendo suportar qualquer


nmero maior que 3, mesmo para discos de tamanhos diferentes. O volume
disponvel para armazenamento dado pela equao (Q-1)*Dmenor, onde Q a
quantidade de discos, e Dmenor o tamanho do menor disco.

Os nveis de RAID podem ser combinados para se potencializar alguma das


vantagens deles. As combinaes mais comuns so os chamado RAID 10, RAID
0+1 e RAID 50.

A prova LPI pode cobrar conhecimentos do aluno sobre os nveis de RAID


citados. No esquea que RAID no Backup. Tenha sempre Backup.
1. Prtica dirigida
2. Definindo as Parties

Antes de criarmos as parties RAID, temos que ter em mente nossa tabela
de particionamento:

# cat /etc/fstab

Agora iremos ver nossas parties:

# cat /proc/partitions

Por causa do captulo de RAID iremos ter que recriar as parties, e deixar
estas Parties Livres para nossos testes:

Tipo Device Ponto de Montagem Tamanho em MB Filesystem


Log /dev/sda10 No montado 512 MB Sem fs
Log /dev/sda11 No montado 512 MB Sem fs
Log /dev/sda12 No montado 512 MB Sem fs
Log /dev/sda13 No montado 512 MB Sem fs
Log /dev/sda14 No montado 512 MB Sem fs

Nas parties para realizao deste trabalho, defina o tipo das parties como
sem fs, e utilize o programa cfdisk para realizao desta tarefa. No esquea de
reiniciar o computador.

# cfdisk /dev/sda

No final do captulo, retire as linhas do /etc/fstab que iremos incluir e


remova as configuraes criadas com o RAID, para podermos salvar as
imagens.

3. Trabalhando com MDADM

1) Verifique se o pacote mdadm j est instalado, e instale-o se


necessrio:
# dpkg -l mdadm

# aptitude install mdadm

2) Depois de instalar o pacote mdadm, abra um segundo terminal e


visualize o estado do RAID no Kernel:

# watch cat /proc/mdstat

1. Criando o RAID

1) Vamos criar o RAID utilizando o nvel 1 utilizando dois discos e


um "spare":

# mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1


/dev/sda11 /dev/sda12 /dev/sda13

No segundo terminal, verifique a sincronizao do RAID.

2) Depois de criarmos o RAID, necessrio editar o arquivo


/etc/mdadm/mdadm.conf, que ser utilizado durante a
administrao do RAID:

# vim /etc/mdadm/mdadm.conf

3) Modifique o arquivo, adicionando o seguinte contedo:

DEVICE /dev/sda11 /dev/sda12 /dev/sda13


ARRAY /dev/md0 devices=/dev/sda11,/dev/sda12,/dev/sda13

4) Depois de criarmos o RAID, aplique o sistema de arquivos ext3


no dispositivo /dev/md0:

# mkfs.ext3 /dev/md0
5) Crie um ponto de montagem em /mnt/raid

# mkdir /mnt/raid

6) Montando o RAID:

# mount -t ext3 /dev/md0 /mnt/raid

7) Configure o /etc/fstab:

/dev/md0 /mnt/raid ext3 defaults 0 2

1. Verificando o funcionamento do RAID:

1) Verificando os dispositivos individualmente:

# mdadm -E /dev/sda11
# mdadm -E /dev/sda12
# mdadm -E /dev/sda13

2) Para testar a redundncia, vamos criar um script chamado


"TestaRaid.sh" que escreve em um arquivo de 3 em 3 segundos:

# vim /root/TestaRaid.sh

#!/bin/bash
while true ; do
date >> /mnt/raid/dados.txt
sleep 3
done

Vamos atribuir as permisses necessrias para execuo:


# chmod +x /root/TestaRaid.sh
# /root/TestaRaid.sh

1. Administrando o RAID

Vamos aprender a adicionar, remover e simular uma falha em um dos discos do


RAID.

1) Provocando uma falha:

# mdadm /dev/md0 --fail /dev/sda11

2) Verificando os detalhes do RAID aps a falha:

# mdadm --detail /dev/md0

3) Removendo o disco defeituoso:

# mdadm /dev/md0 --remove /dev/sda11


# mdadm --detail /dev/md0

4) Adicionando um disco ao RAID:

# mdadm /dev/md0 --add /dev/sda11


# mdadm --detail /dev/md0

5) Parando o RAID:

# umount /mnt/raid
# mdadm -S /dev/md0
6) Reiniciando o RAID:

# mdadm -As /dev/md0

A prova de certificao contempla o uso comum do comando mdadm bem


como seus arquivos de configurao.
1. Exerccios Tericos

1) Quais so as vantagens e desvantagens de usar o RAID 5?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

2) Qual a diferena entre se fazer um RAID via software e um RAID via


hardware?

_______________________________________________________________________________

_______________________________________________________________________________

3) Quais so as vantagens e desvantagens de usar o RAID 1?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Refazer todas as parties necessrias com o cfdisk, para que possamos
testar o LVM no prximo captulo;

2. No esquecer de comentar as linhas dentro no /etc/fstab com a configurao


do RAID, porque nosso sistema de cpia e restaurao de imagens precisa das
parties padres criados.
1.
LVM
2. Objetivos
Criar novas parties no sistema com LVM;

Aprender as diferenas entre volumes fsicos, grupos de volumes e volumes


lgicos;/

Criao de volumes fsicos, grupos de volumes e volumes lgicos;

Aplicar Sistemas de Arquivos nas parties criadas no LVM;

Aumentar o tamanho das parties que utilizam LVM.

1. Introduo terica
O LVM - Logical Volume Manager um gerenciador de discos que trabalha
com camadas lgicas, que podem ser redimensionadas, aumentando ou diminuindo
sem prejudicar o funcionamento do sistema.

O uso de LVM permite o aproveitamento mximo do tamanho do HD ou de


vrios HD's. O LVM bastante utilizado em sistemas virtualizados, onde h grande
necessidade de vrias parties.

2. Como funciona o LVM

O LVM usado para agrupar vrios discos, fazendo com que parea que h
apenas uma partio. Isso facilita o gerenciamento dos mesmos em um servidor de
produo que no pode ficar desligado.

Vamos imaginar que temos 3 HD's em nossa mquina, e gostaramos de


aproveitar ao mximo de seus tamanhos.
Para no ter que se preocupar com o tamanho das parties logo de imediato,
iremos usar o LVM para gerenciar os tamanhos das parties sem precisar fazer as
famosas gambiarras.

O LVM reconhece, apenas, as parties formatadas com o tipo LVM. E ele


utiliza Grupos de Volumes para alocar todas as parties que esto definidas como
Volumes Fsicos do LVM. Esses volumes fsicos sero divididos em vrios Volumes
Lgicos como se fosse uma diviso de um disco (partio) para alocar o determinado
ponto de montagem, e isso vai trazer a flexibilidade para redimensionar a partio
LVM. Com mais detalhes vejamos as seguintes camadas que compem o LVM:

PV - Physical Volume (Volume Fsico): Os PV's so as parties que sero


usadas para compor um disco no formato LVM. Eles servem para definir o
UUID, que nmero de identificao de cada disco.

VG - Volume Group (Grupo de Volume): Os VG's so um agrupamento de


PV's. Podemos ter vrios VG's. Um exemplo que podemos utilizar as
parties hda3 e hdb4 que esto declaradas como PV's e dizer que elas
so o VG01. Nisso podemos dividir esse grupo em vrios pedaos com
tamanhos especficos para serem associados a um diretrio. Podemos utilizar
todo o tamanho disponvel ou podemos deixar espao sobrando para quando for
necessrio aumentar os pedaos.

LV - Logical Volume (Volume Lgico): Os LVs so os pedaos que falamos


agora pouco e eles so classificados como as parties de um disco, e VG
sendo o prprio disco. Eles so as partes que podem ser acessadas pelos
usurios e que sero associados a um ponto de montagem especfico. Um
exemplo falar que o LV01 ser montado no diretrio /home.
1. Definindo as Parties

Antes de criarmos as parties LVM, temos que ter em mente nossa tabela de
particionamento:

# cat /etc/fstab

Agora iremos ver nossas parties:

# cat /proc/partitions

Devido as tarefas realizadas no captulo de RAID teremos que recriar as


parties, como descrito na tabela abaixo:

Tipo Device Ponto de Montagem Tamanho em MB Filesystem


Log /dev/sda10 No montado 512 MB Sem fs
Log /dev/sda11 No montado 512 MB Sem fs
Log /dev/sda12 No montado 512 MB Sem fs
Log /dev/sda13 No montado 512 MB Sem fs
Log /dev/sda14 No montado 512 MB Sem fs

Nas parties para realizao deste trabalho, defina o tipo das parties como
8E, e utilize o programa cfdisk para realizao desta tarefa. No esquea de
reiniciar o computador.

# cfdisk /dev/sda

No final do captulo, retire as linhas do /etc/fstab que sero includas e


remova as configuraes criadas com o LVM e RAID. Esse
procedimento fundamental para salvar as imagens.

2. Prtica Dirigida

1) Verifique os pacotes necessrios ao LVM, no Debian:

# dpkg -l lvm2

Caso no tenha:

# aptitude install lvm2

2) RedHat:

# rpm -qa | grep lvm

3) Caso no tenha:
# yum install lvm2

4) Gere o arquivo de configurao do LVM utilizando o comando


vgscan:

# vgscan

5) Defina as novas parties como PV (Phisical Volume ou Volume


Fsico):

# pvcreate /dev/sda11
# pvcreate /dev/sda12

6) Verifique se as novas parties j esto utilizando LVM com


sucesso:

# pvscan

O pvscan, vai mostrar o dispositivo, o tamanho de cada partio, e a soma


das duas parties.

7) Defina um Grupo de Volumes com os volumes fsicos criados. Em


nosso caso ser o vg01:

# vgcreate vg01 /dev/sda11 /dev/sda12

8) Consultando o Grupo de Volumes (VG).

# vgdisplay
# vgdisplay -v vg01
9) Criando um Volume Lgico (LV) denominado teste:

# lvcreate -L 512mb -n lv01 vg01

10) Listando informaes do Volume Lgico (LV):

# lvdisplay -v /dev/vg01/lv01

11) Consultando o Grupo de Volumes (VG). Perceba que agora temos


tambm os detalhes do "LV teste":

# vgdisplay -v vg01

12) Listando o device do LV criado:

# ls -l /dev/vg01/lv01

13) Verificando os LVs criados:

# lvs

14) Criando o sistema de arquivo EXT3 no Volume Lgico:

# mkfs -t ext3 /dev/vg01/lv01

1. Usando o LVM

1) Criando um ponto de montagem para LVM (caso seja necessrio):

# mkdir /mnt/lvm

2) Montando manualmente o sistema LVM criado:


# mount -t ext3 /dev/vg01/lv01 /mnt/lvm

3) Verificando se o dispositivo est montado:

# df -h
# mount

Caso esteja utilizando RedHat ou uma distribuio que siga o mesmo padro,
verifique a necessidade de criao de um label para o device. Se for necessrio,
faa-o assim:

# e2label /dev/vg01/lv01 /mnt/lvm

Caso a mquina seja inicializada neste momento, o LVM no seria montado


para utilizao. Para que o volume LVM seja montado automaticamente,
necessrio que seja editado o arquivo /etc/fstab e se adicione as seguintes linhas:

4) Com label (para RedHat):

LABEL=/mnt/lvm /mnt/lvm ext3 defaults 0 2

5) Sem label (para Debian):

/dev/vg01/lv01 /mnt/lvm ext3 defaults 0 2

1. Administrando o LVM

1) Desmonte o LVM:

# umount /mnt/lvm

2) Redimensione o Volume Lgico (LV):


# lvextend -L +256mb /dev/vg01/lv01

3) Verifique o volume:

# e2fsck -f /dev/vg01/lv01

Essa verificao muito importante para identificar qualquer erro ou


comportamento anormal antes de voltar a montar o LVM. Caso houver algum erro,
ser necessrio fazer uma "restaurao".

4) Reestruturando o sistema de arquivos do Volume Lgico (LV):

# resize2fs /dev/vg01/lv01

5) Montando o LV:

# mount -t ext3 /dev/vg01/lv01 /mnt/lvm

6) Verificando a tabela de parties montadas:

# df -h

7) Copie alguns dados dentro do diretrio /mnt/lvm:

# cp -r /etc /mnt/lvm
# cp -r /sbin /mnt/lvm

8) Verifique que os arquivos foram copiados corretamente:

# ls -lh /mnt/lvm

9) Verifique a tabela de parties:


# df -h

10) Desmonte o volume LV:

# umount /mnt/lvm
1. Troubleshooting

Troubleshooting o termo tcnico para identificao e resoluo de problemas.

1) Verifique os sistemas de arquivos:

# e2fsck -f /dev/vg01/lv01

2) Restruturao do sistema de arquivos do Volume Lgico (LV):

# resize2fs -p /dev/vg01/lv01 256m

3) Reduzindo o LV. Em toda reduo de espao, h risco de perda de


dados. Se quiser, para executar este procedimento, execute um
backup da rea de disco:

# lvreduce -L -256mb /dev/vg01/lv01

Novamente devemos executar o e2fsck e resize2fs antes de montar a


partio.

4) Verificando a tabela de parties montadas, ainda iremos montar:

# df -h

5) Voc ir perceber que o tamanho da LV realmente diminuiu:

# lvs

6) Montando o LV:

# mount -t ext3 /dev/vg01/lv01 /mnt/lvm ; df -h


7) Copie alguns dados dentro do diretrio /mnt/lvm:

# cp -r /bin /mnt/lvm

Verifique que os arquivos foram copiados corretamente:

# ls -lh /mnt/lvm

8) Desmonte o volume LVM:

# umount /mnt/lvm

9) Removendo o LV:

# lvremove /dev/vg01/lv01

Caso a partio esteja montada, no vai ser possvel remover.

10) Aps a remoo, verifique se no h mais o LV01:

# lvs

11) Removendo o grupo:

# vgremove vg01

12) O comando vgdisplay no ir mostrar mais nada:

# vgdisplay

13) Veja todas as suas Lvs:

# lvs
14) Verifique os detalhes do LVM:

# pvscan

1. Exerccios Tericos

1) Como eu fao para estender uma partio criada com LVM?

_______________________________________________________________________________

_______________________________________________________________________________

2) Como eu fao para remover uma partio criada com LVM?

_______________________________________________________________________________

3) Eu posso aplicar um novo sistema de arquivos partio da LVM,


mesmo que ela contenha dados j criados nela?

_______________________________________________________________________________

4) Quando e por que, voc utilizaria LVM em seu sistema?

_______________________________________________________________________________

5) Qual o mximo de parties, que podemos ter em um disco, utilizando


uma controladora IDE?

_______________________________________________________________________________

_______________________________________________________________________________

6) Qual o arquivo que mostra todas as parties criadas na mquina?

_______________________________________________________________________________
7) Como eu consigo exibir a tabela de parties com os comandos: fdisk e
cfdisk, sem entrar no programa?

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Utilize duas parties que no esto sendo utilizadas e crie um RAID1;
2. Adicione uma partio como PV;
3. Verifique se todas as parties esto funcionadas;
4. Crie duas novas parties LV, a primeira com 256Mb e outra com 1Gb;
5. Aplique os sistemas de arquivos swap na primeira partio e xfs na
segunda;
6. Crie um ponto de montagem para a segunda partio LV com o nome de
restore;
7. Adicione as entradas corretas no arquivo /etc/fstab;
8. Reinicie a mquina e verifique se est tudo funcionando como o esperado;
9. Aps todos os testes, remova tudo que foi feito com o RAID e LVM,
inclusive suas entradas no /etc/fstab.
1.
DHCP
2. Objetivos
Entender o protocolo DHCP;

Entender os mtodos de atribuio de endereos;

Configurar um servidor DHCP;

Atribuir um endereo de acordo com o MAC Address.

1. Introduo terica
O DHCP - Dynamic Host Configuration Protocol um protocolo que
funciona nas camadas 2 e 3 do modelo OSI e amplamente utilizado para oferecer
endereamento IP a um host que ainda no est configurado, o que oferece um
flexibilidade ao Administrador de Sistemas. O protocolo DHCP opera da seguinte
forma:

DHCPDISCOVER - Um cliente envia um quadro broadcast (destinado a


todas as mquinas) com um pedido DHCP;
DHCPOFFER - O servidor DHCP captura o quadro e oferece um Endereo IP
ao host requisitante;

DHCPREQUEST - O cliente envia um DHCP REQUEST endereado para o


servidor DHCP aceitando o IP;

DHCPACK - Esse o pacote que confirma a atribuio de uma configurao de


rede a um cliente, ou seja, aquele cliente agora possui configuraes
distribudas pelo servidor DHCP;

DHCPNAK - Caso o cliente no aceite aquele endereo IP, ele enviar um


DHCPNAK para o servidor, e realizar o DHCPDISCOVER novamente.

O DHCP oferece trs tipos de alocao de endereos IP:

Atribuio manual - Quando desejamos que certo cliente tenha determinado


endereo IP, temos que "amarrar" o endereo MAC da mquina do cliente no
endereo IP desejado. O servidor de DHCP descobre o MAC ADDRESS do
cliente atravs do DHCPDISCOVER, assim identificando quais so as
mquinas que iro receber configuraes personalizadas;

Atribuio automtica - Onde o cliente obtm um endereo de um espao de


endereos possveis chamado de range, especificado pelo administrador.
Geralmente no existe vnculo entre os vrios MAC's habilitados a esse
espao de endereos. Assim que o cliente se loga pela primeira vez na rede, ele
recebe um endereamento definitivo;

Atribuio dinmica - O nico mtodo que dispe a reutilizao dinmica dos


endereos. O administrador disponibiliza um espao de endereos possveis, e
cada cliente ter o software TCP/IP da sua interface de rede configurados
para requisitar um endereo por DHCP assim que a mquina inicialize. A
alocao utiliza um mecanismo de aluguel do endereo, caracterizado por um
tempo de vida. Aps a mquina se desligar, o tempo de vida naturalmente ir
expirar, e da prxima vez que o cliente se ligue, o endereo provavelmente ser
outro.

Algumas implementaes do software servidor de DHCP permitem ainda a


atualizao dinmica dos servidores de DNS para que cada cliente disponha
tambm de um registro DNS. Este mecanismo utiliza o protocolo de atualizao do
DNS especificado no RFC 2136.

1. Prtica dirigida

2. Configurando um servidor DHCP

1) Instalar o pacote do servidor dhcp3:

# aptitude install dhcp3-server

2) O arquivo de configurao o dhcpd.conf no exemplo abaixo, e


fica dentro do diretrio /etc/dhcp3:
# vim /etc/dhcp3/dhcpd.conf

Adicione as informaes abaixo no arquivo de configurao. Onde X, a rede


que o professor informar:

1 ddns-update-style none;
2 subnet 192.168.X.0 netmask 255.255.255.0 {
3 range 192.168.X.10 192.168.X.200;
4 option subnet-mask 255.255.255.0;
5 option domain-name "microX.com.br";
6 option domain-name-servers 200.176.2.10,4.2.2.2;
7 option routers 192.168.X.254;
8 default-lease-time 600;
9 max-lease-time 7200;
10 }

A prova de certificao pode cobrar a utilizao de cada opo, como


"option routers" ou "option domain-name-servers".

1) Uma vez criado o arquivo de configurao, basta inicializar o


servidor DHCP:

# invoke-rc.d dhcp3-server stop


# invoke-rc.d dhcp3-server start

1. Principais diretrizes do arquivo de configurao

default-lease-time 600 - Servidores DHCP cedem endereos sob pedido por


um tempo pr-determinado. O padro nesse exemplo ceder o endereo IP por
600 segundos, ou 10 minutos;
max-lease-time 7200 - Caso o cliente solicite um tempo maior, o tempo
mximo permitido ser de 7.200 segundos (2 horas);

option subnet-mask 255.255.255.0 - Essa opo define a mscara de


subrede a ser fornecida aos clientes;

option broadcast-address 192.168.200.255 - Essa opo define o endereo


de envio para requisies de broadcast;

option routers 192.168.200.254 - O cliente, alm do nmero IP, recebe


tambm a informao do nmero do host que o gateway de sua rede;

option domain-name-servers 200.176.2.10,4.2.2.2 - Essa opo lista os


servidores de nomes (DNS) a serem utilizados para resoluo de nomes;

option domain-name microX.com.br - O nome de domnio do cliente.


1. Configurando os clientes DHCP

1) Do lado cliente, temos duas opes para fins de teste:

# dhclient

Caso no tenha o comando dhclient:


# aptitude install dhcp3-client

2) Ou editando o arquivo /etc/network/interfaces, trocando static por


dhcp. Fica assim:

# vim /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

Para visualizar a placa de rede que est utilizando:


# mii-tool

3) Este o arquivo onde ficam registrados os emprstimos de IP's.


Observe-o:

# more /var/lib/dhcp3/dhcpd.leases

1. Fixar IP via DHCP


possvel fixar o IP via DHCP para mquinas respectivas. Isso feito associando o
MAC Address da placa de rede com um Endereo IP.

1) Considere que:
MQUINA MAC ADRESS IP FIXADO
micro 1 00:80:C7:D2:F8:D5 192.168.200.210
micro 2 88:3D:BE:00:C7:00 192.168.200.214

2) Para esse cenrio ser possvel, seria necessria a respectiva entrada


no arquivo de configurao /etc/dhcp3/dhcpd.conf:

1 host micro1 {
2 hardware ethernet 00:80:C7:D2:F8:D5;
3 fixed-address 192.168.200.210;
4 }
5

6 host micro2 {
7 hardware ethernet 88:3D:BE:00:C7:00;
8 fixed-address 192.168.200.214;
9 }

1) O Arquivo /etc/dhcp3/dhcpd.conf ficaria assim:

1 ddns-update-style none;
2

3 subnet 192.168.X.0 netmask 255.255.255.0 {

4 range dynamic-bootp 192.168.200.1 192.168.200.200;


5

6 option routers192.168.X.254;
7 option subnet-mask 255.255.255.0;
8 option domain-name microX.com.br;
9 option domain-name-servers200.204.0.10, 200.204.0.138;
10 default-lease-time 21600;
11 max-lease-time 43200;
12

13 host micro1 {
14 hardware ethernet 00:80:C7:D2:F8:D5;
15 fixed-address 192.168.X.210;
16 }
17

18 host micro2 {
19 hardware ethernet 88:3D:BE:00:C7:00;
20 fixed-address 192.168.X.214;
21 }} }

Para habilitar o suporte ao servidor dinmico, utilize a opo:


dynamic-bootp
1. Exerccios tericos
1) Um servidor DHCP precisa ser necessariamente o gateway da rede?
Explique.

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

2) Podemos ter mais de um servidor de DHCP em uma rede? Explique.

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

3) Quais so as trs formas de alocao endereamento IP?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Retire o daemon de inicializao do DHCP do runlevel padro;

2. Reinicie a mquina e veja se o servio do DHCP est inativo.


1.
FTP
2. Objetivos
Instalar e configurar um servidor FTP;

Entender as diferenas entre FTP passivo e ativo;

Utilizar comandos de FTP para download e upload;

Permitir a utilizao do FTP com usurio annimo;

Utilizao do servidor FTP utilizando VSFTPD.

1. Introduo terica

O FTP - File Transfer Protocol um protocolo simples para transferncia de


arquivos. O cliente FTP faz uma solicitao ao servidor FTP, a seo
estabelecida e ento solicitado o usurio e senha vlidos no caso de um FTP
autenticado, ou, caso este servidor permita navegao annima, basta entrar como o
usurio "anonymous" e um endereo de e-mail qualquer como senha. O FTP pode
atuar como servidor ativo ou passivo.

No modo ativo, os comandos so enviados por uma porta alta pelo cliente, e so
recebidas pela porta 21 no servidor, enquanto que os dados so transmitidos pelo
servidor ao cliente atravs da porta 20. O problema desta implementao que os
dados podem ser barrados por um Firewall dependendo das regras estabelecidas
pelo Administrador de Sistemas.

Modo Ativo Modo Passivo


J no modo passivo, os comandos tambm so enviados para o servidor atravs
de uma porta alta pelo cliente, e so recebidas na porta 21 do servidor. Neste
momento, o cliente avisa ao servidor que ele deve utilizar o modo passivo atravs do
comando "PASV", e ento os dados sero enviados utilizando portas altas tanto pelo
cliente quando pelo servidor. Neste caso, no temos mais problemas com o Firewall
no lado do cliente, porm, temos que habilitar a utilizao de portas altas no servidor,
o que pode gerar outros problemas. Felizmente, na configurao do servidor FTP
podemos especificar o range de portas que o servidor deve utilizar, minimizando
assim o problema no lado do servidor.

Sobre segurana: um dos principais problemas do FTP que a maioria


dos servidores no implementa criptografia, ento, caso voc deseje um
ambiente seguro com FTP, necessrio a implementao de criptografia,
como OpenSSL ou TLS.

2. Prtica dirigida
O VSFTPD - Very Secure File Transfer Protocol Daemon, a escolha de
empresas como RedHat, IBM e Novell - SUSE Linux quando o assunto servidores
de FTP confiveis e seguros. Inclusive, o projeto OpenBSD utiliza o VSFTPD
como servidor FTP padro da distribuio. Logo, podemos considerar este software
como bem qualificado em termos de segurana de cdigo.

Apesar de alguns Administradores apontarem o VSFTPD como carente em


termos de documentao, todos os seus parmetros podem ser encontrados em sua
man page, o que facilita o processo de configurao.
Alm do VSFTPD, existem outros programas de Servidor FTP, para
Gnu/Linux, como proftpd e o wu-ftpd, que no sero abordados neste
treinamento.

1) Para instalar o vsftpd, execute o comando abaixo:

# aptitude install vsftpd

2) Aps instalar, vamos abrir o arquivo de configurao localizado em


/etc/vsftpd e ento comentar sobre suas configuraes padro:

# vim /etc/vsftpd.conf

Localize as configuraes que seguem abaixo:


listen=Yes
Permite que o VSFTPD funcione em modo daemon
anonymous_enable=Yes
Permite a utilizao o FTP com o usurio anonymous
dirmessage_enable=Yes
Permite a exibio de mensagens aos usurios
xferlog_enable=Yes
Ativa os logs para downloads e uploads
connect_from_port_20=Yes
Utiliza a porta FTP-DATA para transferncia de
arquivos

As opes anonymous_enable e xferlog_enable podem cair na prova


LPI.

3) Vamos agora, efetuar o teste no nosso servidor para verificar seu


funcionamento:

# ftp localhost

4) Faa login com o usurio anonymous e utilize qualquer string


como senha:

Connected to localhost.
220 (vsFTPd 2.0.7)
Name (localhost:root): anonymous
Aps conectar ao servidor FTP, ele exibira um prompt semelhante ao
abaixo:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Note que existe um prompt de comandos onde ser possvel enviar


comandos ao servidor.

5) A partir de agora, os comandos a serem feitos dentro do servidor


FTP sero exibidos na forma abaixo:

ftp> comando

1. Comandos FTP

Os servidores de FTP muito raramente mudam, mas novos programas


clientes FTP aparecem com bastante regularidade. Estes clientes variam no
nmero de comandos que implementam. A maioria dos clientes FTP comerciais
implementam apenas um pequeno subgrupo desses comandos. Mesmo que o FTP
seja um protocolo orientado linha de comandos, a nova gerao dos clientes FTP
esconde esta orientao num ambiente grfico muitas vezes bastante desenvolvido.
As interfaces clientes do FTP do BSD UNIX e do GNU/Linux possuem
muitos comandos, alguns deles arcaicos e sem utilidade hoje em dia, como por
exemplo o tenex e o carriage control. J outros so bastante utilizados: cd,
dir, ls, get, mget, put e mput.

Os comandos listados abaixo podem ser cobrados na prova de certificao.

Abaixo esto listados alguns dos mais utilizados comandos FTP:

help - Lista os comandos disponveis. Um sinnimo ?

help CMD - Mostra uma ajuda para o comando CMD

ls - Lista os aquivos no servidor. Um sinnimo dir

cd - Troca de diretrio no servidor

lcd - Troca de diretrio da mquina local

!ls - Lista os arquivos da mquina local

!CMD - Executa na mquina local o comando CMD

get - Faz download de um arquivo do servidor para a mquina local.

mget - Faz download de mais de um arquivo.

put - Faz upload de um arquivo da mquina local para o servidor.

mput - Faz upload de mais de um arquivo.

Ento como usurio annimo, vamos fazer alguns testes:

1) Liste o contedo do servidor:

ftp> ls
2) Liste o contedo do seu diretrio local:

ftp> !ls

3) Faa o download de algum arquivo:

ftp> get ARQUIVO

4) Verifique se o arquivo foi copiado:

ftp> !ls

5) Tente agora fazer o upload de um arquivo:

ftp> put ARQUIVO

Por padro, usurios annimos no devem ter permisso para fazer


upload de arquivos.

6) Encerre a sesso e logue-se:

ftp> quit
221 Goodbye.

Por padro, o VSFTPD no permite o upload de arquivos pelo usurio


annimo. Alm disso, o VSFTP tambm no permite que o usurio anonimo
navegue pela arvore de diretrios, reforando assim a segurana local do servidor.

O usurio annimo est limitado, atravs de um sistema chroot, ao diretrio


/home/ftp, logo, todo arquivo que ser disponibilizado publicamente deve estar
neste diretrio.

7) Vamos realizar um teste colocando um arquivo qualquer dentro


deste diretrio, e ento, iremos realizar o download:

# cp /boot/vmlinuz-2.6.26-2-686 /home/ftp
8) Efetue o download do arquivo. Para isso, logue-se no FTP como
usurio anonimo e ento efetue o download.

ftp> get vmlinuz-2.6.26-2-686

Anonymous - O Servidor FTP com anonymous muito utilizado na


Internet por no ser necessrio ter um usurio no servidor. Desta forma, o
usurio pode abrir um browser e chamar o endereo ftp://servidor para
ter acesso ao diretrio disponibilizado pelo servio. Geralmente, esse
diretrio o home do usurio FTP que no Debian /home/ftp.

9) Depois de efetuar o download, verifique o contedo dos logs:

# cat /var/log/vsftpd.log

Wed May 27 18:15:04 2009 [pid 23194] [ftp] OK DOWNLOAD: Client


"127.0.0.1", "/vmlinuz-2.6.26-2-686", 1505680 bytes, 216488.61Kbyte/sec

interessante liberarmos o acesso no nosso servidor mediante usurio e senha


para usurios cadastrados no sistema operacional, assim, o usurio poder enviar e
baixar arquivos localizados no sistema operacional.

10) Vamos configurar a varivel responsvel por esta liberao


dentro do arquivo /etc/vsftpd.conf:

# vim /etc/vsftpd.conf
11) Habilite a varivel abaixo:

local_enable=Yes

12) Descomente a varivel que permite o upload para os


usurios:

write_enable=Yes

J que iremos liberar a navegao para usurios registrados, importante


que eles tenham cincia dos termos de uso do nosso servidor. Porque no
mostrar isso a eles logo aps o login?

13) Crie o arquivo /home/aluno/.message e coloque a mensagem abaixo:

# vim /home/aluno/.message
## Este sistema para uso exclusivo da empresa XPTO.
## Todas as atividades sero registradas.
## vetada a utilizao deste sistema para transferncia de
## arquivos protegidos por qualquer lei de direito autoral
## ou arquivos que infrinjam a legislao vigente.

14) Aps escrever a mensagem, salve o arquivo e reinicie o servio


FTP:

# invoke-rc.d vsftpd restart

Faa o login e visualize a mensagem.

Trabalhando com o cliente FTP. Existem centenas de clientes FTP para


praticamente todos os sistemas operacionais existentes no mercado.

15) Nesta questo usaremos um cliente ftp via linha de


comando, disponvel em ambientes Gnu/Linux. Para prosseguir com
nossos testes, copie diversos arquivos para o diretrio
/home/aluno, e mude suas permisses:

# chown -R aluno: /home/aluno

16) Conecte no servidor do colega:

# ftp ip-do-amigo

17) Para realizar o download de um arquivo, utilize o comando get,


aps conectar-se ao FTP:

ftp> get passwd


Para trocar de diretrios dentro do servidor, utilize o comando cd:
ftp> cd apt
Para realizar o upload de arquivos, utilize o comando put:
ftp> put passwd
Para listar o contedo de um diretrio, utilize o comando ls:
ftp> ls
Para listar os diretrios locais, utilize o comando !ls:
ftp> !ls
Para voltar um diretrio, utilize o comando cd..
ftp> cd ..
Para mudar de diretrio na mquina cliente, utilize o lcd:
ftp> lcd /tmp
Para realizar mltiplos downloads, utilize o mget:
ftp> mget *
Para uma lista completa de comandos, utilize o help:
ftp> help

RedHat:
A plataforma RedHat utiliza o vsftpd por padro.

18) Verifique em qual porta o servidor FTP est escutando:

# netstat -nltup
1. Exerccios tericos

1) Para que serve a porta ftp-data?

_______________________________________________________________________________

2) Qual a diferena dos modos passivo e ativo?

_______________________________________________________________________________

_______________________________________________________________________________

3) Em termos de segurana, qual a maior falha do FTP?

_______________________________________________________________________________

1. Laboratrio
1. Teste com o colega a conexo dos servidores;

2. Verifique as portas abertas com o comando nmap. Se ele no estiver


instalado, instale: aptitude install nmap
1.
NFS

2. Objetivos
Instalar o daemon NFS;

Entender a configurao do NFS;

Exportar um diretrio usando NFS.


1. Introduo terica
O NFS - Network File System, um sistema de arquivos especial capaz de
exportar um diretrio via rede.

Ao importar um diretrio, a impresso que o cliente tem de que o diretrio


est localizado no prprio computador, o que torna o acesso e utilizao do diretrio
transparente para o usurio final. Por esse motivo o NFS uma soluo
interessante para centralizao de diretrios pessoais e recursos compartilhados em
rede, j que as operaes de backup e manuteno podero ser centralizadas.

Para que os clientes possam acessar o servidor NFS necessrio que os


seguintes servios estejam sendo executados no servidor:

nfsd - Servio NFS que atende as requisies dos clientes;

mountd - Servio que executa as solicitaes de montagem dos clientes


NFS;

portmap - Servio que permite que clientes NFS descubram qual porta o
servidor est utilizando.

1. Prtica Dirigida

2. Instalao e configurao do NFS

SERVIDOR:

1) No Debian, basta instalar o pacote nfs-kernel-server:

# aptitude install nfs-kernel-server

2) Agora podemos determinar quais diretrios pretendemos


compartilhar, editando o arquivo /etc/exports:
# vim /etc/exports

Onde temos as seguintes opes mais usadas:

ro - compartilhar apenas para leitura


rw - compartilhar para leitura e gravao
root_squash - Para que o usurio root seja um usurio limitado nos
privilgios.
no_root_squash - justamente ao contrrio da opo acima.
async - til em redes locais pois permite que o NFS transfira
arquivos de forma assncrona, sem precisar esperar pela
resposta do cliente a cada pacote enviado, aumenta um
pouco a velocidade de transferncia de dados.

3) Sintaxe do arquivo:

/srv/nfs 192.168.200.0/24(rw,no_root_squash,no_subtree_check)
/home 192.168.100.1(ro,root_squash)

Por padro no compartilhamento, ele sempre assume a opo:


no_subtree_check, est opo faz com que os subdiretrios do
compartilhamento sejam exportados. Veja as opes do arquivo
/etc/exports: man 5 exports

4) Crie o diretrio /srv/nfs para ser exportado e em seguida, adicione


alguns arquivos nele:

# mkdir -p /srv/nfs
# cp /etc/apt/* /srv/nfs
5) Edite o arquivo /etc/exports para que o diretrio criado seja
exportado:

/srv/nfs 192.168.200.0/24(rw,root_squash)

6) Reinicie o servio NFS:

# invoke-rc.d portmap restart


# invoke-rc.d nfs-kernel-server restart

7) Verificando em quais portas locais o nfs est trabalhando:

# rpcinfo -p localhost

100000 2tcp 111 portmapper


100024 1udp 722 status
100003 2udp2049 nfs

CLIENTE:

8) Na mquina cliente, basta instalarmos o pacote nfs-common:

# aptitude install nfs-common

9) Verifique todos os diretrios compartilhados pelo colega atravs do


comando:

# showmount -e 192.168.200.X

10) Crie um ponto de montagem:

# mkdir /mnt/nfs
11) Monte o diretrio compartilhado:

# mount -t nfs 192.168.200.X:/srv/nfs /mnt/nfs

12) Podemos verificar todas as conexes com o servidor:

# showmount -a 192.168.200.X

13) Visualize tambm com o comando mount os pontos de


montagem:

# mount

14) Explore o diretrio remoto:

# ls /mnt/nfs

Para verificar o status do servidor nfs, digite o comando: nfsstat.

15) Como administrador, tente remover algum arquivo do diretrio


remoto:

# cd /mnt/nfs
# rm ARQUIVO

SERVIDOR:

Como informado, por padro, o NFS assume a opo root_squash que no


reflete os direitos de administrador aos clientes. Vamos alterar isso e fazer alguns
testes.

16) Edite o arquivo /etc/exports e acrescente:


/srv/nfs 192.168.200.0/24(rw,no_root_squash)

17) No necessrio reiniciar o NFS. O comando exportfs


permite gerenciar os diretrios compartilhados de forma dinmica:

# exportfs -r

A opo -r faz com que o arquivo /etc/exports seja relido. Consulte a


manpage do exportfs para saber sobre outras opes que permitem
exportar novos diretrios sem a necessidade de alterar o arquivo.
/etc/exports ou reiniciar o NFS.

CLIENTE:

18) Agora, na mquina cliente tente novamente remover algum


arquivo. Faa este teste como administrador:

# cd /mnt/nfs
# rm ARQUIVO

Observe que no h a necessidade de remontar o sistema de arquivos compartilhado,


toda alterao foi feita de forma dinmica.
1. Exerccios tericos

1) Para que serve a opo no_root_squash no arquivo /etc/exports?


_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

2) Qual tipo de filesystem deve ser utilizado com o NFS?


_____________________________________________________________________________

3) Voc centralizou os diretrios pessoais em um servidor. Como voc deve


configurar o cliente para que o compartilhamento seja montado durante o
boot?
_____________________________________________________________________________
_____________________________________________________________________________
1. Laboratrio
1. Crie um mesmo diretrio com permisso de escrita para um IP e somente
leitura para um outro IP. Exporte esse diretrio atravs do NFS;

2. Crie um compartilhamento chamado publico e exporte-o para a rede


192.168.200.0/24.
1.
Servidor SAMBA
2. Objetivos
Entender as funcionalidades do SAMBA;

Entender seu arquivo de configurao;

Criar compartilhamento de diretrios;

Criar um servidor de autenticao.


1. Introduo terica
A sute SAMBA comeou a ser desenvolvida por Andrew Tridgell em 1992
como ferramenta para compartilhamento de diretrios e arquivos entre mquinas
*nix e maquinas com sistema operacional Windows e OS/2, da IBM.

Utilizando engenharia reversa no protocolo SMB - Server Message Block,


Andrew foi capaz de implementar algumas funcionalidades SMB em mquinas
*nix. Mais tarde, o IETF batizou este conjunto de funcionalidades como CIFS -
Common Internet File System. Alm de promover esta interoperabilidade, o
SAMBA tambm capaz de realizar algumas tarefas, citadas abaixo:

Compartilhar um ou mais tipos de sistemas de arquivos;

Compartilhar impressoras em uma rede NT, ou atuar como cliente;

Autenticao de clientes em um domnio Windows.

A sute SAMBA precisa de trs componentes para realizar sua funo. So


eles:

nmbd - Responsvel pela resoluo de nomes

smbd - Responsvel por compartilhar recursos

winbind - Auxilia na autenticao em um domnio AD


1. Prtica Dirigida
1) Vamos instalar a sute SAMBA, algumas ferramentas auxiliares e o
pacote de documentao:

# aptitude install samba samba-doc smbclient cifs-utils

2) Veja o arquivo de configurao, e tenha como hbito sempre


guardar uma cpia do arquivo original:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# vim /etc/samba/smb.conf

RedHat:
Na plataforma RedHat, o arquivo de configurao do samba fica em
/etc/smb.conf

Fique atento, as opes que iremos estudar agora, so cobradas na prova


do LPI.

3) Iremos agora gerar um novo arquivo /etc/samba/smb.conf com as


seguintes opes:

[global]
workgroup = maquinaX
server string = Servidor de Arquivos
security = SHARE
wins support = Yes
client lanman auth = yes

[Publico]
comment = Diretorio Publico
path = /srv/samba/publico
force user = smbuser
force group = users
read only = No
guest ok = Yes

Correspondem:

[global]
workgroup = Grupo de Trabalho, nome diferente da mquina;
server string = Comentrio para o servidor;
security = Compartilhamento sem a necessidade de
controle de usurios e senhas;
wins support = O samba se torna um Servidor Wins, resolve
nome para mquinas Windows.
client lanman auth = para uso do comando smbclient

[Publico]
comment = Adicionar comentrio ao compartilhamento;
path = Diretrio que ser utilizado para
compartilhamento;
force user = Define um usurio padro que ser usado por todos
que acessarem este compartilhamento;
force group = Define um grupo padro que ser usado por todos
que acessarem este compartilhamento;
read only = Permisses de leitura e gravao;
guest ok = Define se usurios convidados tero acesso ao
compartilhamento.

4) O SAMBA oferece um comando para verificar a sintaxe do arquivo


de configurao. Vamos utiliz-lo:

# testparm
5) Ns definimos que todo arquivo criado no compartilhamento seria
do usurio smbuser e do grupo users. Vamos criar este usurio
e alterar seu grupo:

# useradd smbuser -g users

6) Tambm necessrio criar o diretrio que ser compartilhado:

# mkdir -p /srv/samba/publico
# chown smbuser:users /srv/samba/publico

7) Reinicie o SAMBA para que as alteraes tenham efeito:

# invoke-rc.d samba stop


# invoke-rc.d samba start

8) Verifique se os daemons - smbd e nmbd - esto atendendo


requisies:

# netstat -putan

9) Verifique o compartilhamento:

# smbclient -L localhost

10) Verifique o compartilhamento da mquina ao lado:

# smbclient -L 192.168.200.X

11) Se tudo ocorreu bem, podemos montar o compartilhamento.


Escolha uma das formas abaixo:

# smbmount //192.168.200.X/Publico /mnt


# mount -t cifs //192.168.200.X/Publico /mnt

12) Confirme se o compartilhamento foi montado, e ento crie um


arquivo no compartilhamento:

# mount
# touch /mnt/$HOSTNAME.txt

13) Verifique as permisses do arquivo criado pelo colega:

# ls -la /srv/samba/publico

1. Samba como controlador de Domnio Primrio


Agora que j estamos mais familiarizados com o SAMBA, podemos configur-lo
para atuar como um Controlador de Domnio Primrio.

Configurao para PDC

A maior vantagem de ter um controlador de domnios Samba ter a


estabilidade e flexibilidade do Gnu/Linux controlando as autenticaes em
uma rede Microsoft.

Para que isso seja possvel, iremos editar o arquivo /etc/samba/smb.conf de


forma que o Samba fique apto a gerenciar os logins e computadores da rede.

1) Edite o arquivo /etc/samba/smb.conf para que fique como o


exemplo abaixo, onde X o nmero de sua mquina:

1 [Global]
2 netbios name = SERVERX
3 workgroup = EMPRESAX
4 server string = Primary Domain Controller
5 log file = /var/log/samba/%m.log
6 max log size = 100
7 security = user
8 unix password sync = Yes
9 passwd program = /usr/bin/passwd %u
10 smb passwd file = /etc/samba/smbpasswd
11 socket options = TCP_NODELAY SO_RCVBUF=8192
SO_SNDBUF=8192
12 domain logons = Yes
13 os level = 100
14 preferred master = Yes
15 domain master = Yes
16 local master = yes
17 logon drive = H:
18 logon home = \\%L\homes\%U
19 logon path = \\%L\Profiles\%U

1) Agora, vamos criar o compartilhamento homes que iro


armazenar os dados pessoais dos usurios:

1 [homes]
2 comment = Diretorio Pessoal
3 path = /srv/samba/homes/%U
4 valid users = %U
5 read only = No
6 browseable = No

1. Compartilhamento homes;

2. Comentrio;

3. Localizao do compartilhamento no servidor;

4. Usurios que podem acessar o compartilhamento (%U = usurio da seo);

5. Somente leitura desativado;

6. No permite visualizao por outros usurios.


Esteja atento a configurao de compartilhamentos e suas opes comuns!

1) Por ltimo, iremos criar os Perfis Mveis, que armazenaro as


configuraes do usurio:

1 [Profiles]
2 comment = Perfis Moveis
3 path = /srv/samba/profiles
4 read only = No
5 guest ok = Yes
6 browseable = No

1. Compartilhamento Profiles;

2. Comentrio;

3. Localizao do compartilhamento, no servidor;

4. Somente leitura desativado;

5. Habilitando perfil mvel para usurio convidado;

6. No permite visualizao por outros usurios.

Com essas configuraes, o SAMBA est pronto para atuar como


controlador de domnios, porm, ser necessrio cadastrar os usurios e
computadores Windows no samba, criar as contas de usurios e acertar as
permisses dos usurios tambm. Vamos ver isso na prxima seo.

1) Vamos manter o Compartilhamento Publico aberto para todos:

[Publico]
path = /srv/samba/publico
browseable = yes
writeable = yes
public = yes

1. Cadastrando usurios no PDC


Para que nossos usurios Windows possam efetuar login no domnio, necessrio
que tanto o host quanto o usurio estejam cadastrados na conta normal do
computador e tambm na conta SAMBA. Vamos configurar isto.

1) O usurio root quem poder adicionar uma mquina a um


domnio samba:

# smbpasswd -a root

2) Antes de prosseguirmos, necessrio criar os diretrios:

# mkdir /srv/samba/profiles
# mkdir /srv/samba/homes

3) E alterar suas permisses:

# chmod 775 /srv/samba/profiles


# chmod 775 /srv/samba/homes
# chown root:users /srv/samba/profiles

4) Tambm precisamos criar o usurio que ir autenticar-se no


SAMBA:

# useradd -c "Seu Nome Completo" -m -d /srv/samba/homes/microX -g


users -s /bin/false microX

5) Atribuir a senha para o novo usurio:

# smbpasswd -a microX
6) E cadastrar a mquina que entrar no domnio:

# useradd -c "HOSTNAME" -d /dev/null -s /bin/false hostname$


1. Inserindo uma mquina cliente Windows XP no domnio
Agora, configure a mquina cliente Windows XP para ingressar no
domnio. Siga as instrues mostradas nas imagens abaixo:

Ilustrao 2: Clique em "Iniciar" e depois em


"Painel de controle"

Clique em Conexes de rede:

Clique em Conexo Local, com o boto direito do mouse e depois em


Propriedades:

Ilustrao 4: Clique em "Conexo local" e depois em


"Propriedades

Clique em Protocolo TCP/IP:


Clique em Propriedades e altere a configurao da rede:

Ilustrao 5: Coloque o IP conforme o Cenrio

De volta ao Desktop, clique nas propriedades de Meu computador:

Ilustrao 6: Clique com o boto direito do mouse no cone


"Meu computador" e depois em "Propriedades"
Clique em Nome do computador:

Ilustrao 7: Clique em "Nome do Computador"

Na
Desideratu, temos o treinamento 425, um treinamento completo do
Samba para vrios de ambientes. O Samba tambm um assunto da LPI
nvel 3. Fique ligado, para saber mais sobre o treinamento 425-Samba,
acesse: www.Desideratu.com.br.
Clique em Alterar:
No campo Domnio, insira o nome de domnio do Samba:

Ilustrao

9: Coloque o nome do computador e domnio conforme o Cenrio.

Na caixa que ir aparecer, coloque o usurio root e sua senha:


Se a configurao ocorreu com sucesso, voc receber essa mensagem:

Quando a mquina reiniciar, entre com um nome de usurio valido e


senha no domnio do servidor Samba:
Visualize as unidades de rede, H: e Publico:

Ilustrao 12: Veja as unidades de rede!

Verifique que ela aparece na seo Meus Locais de Rede:


Fique atento com a LPI, ele pode cobrar os nomes dos modulo de
autenticao do samba:

/etc/pam.d/common-auth

auth required /lib/security/pam_winbind.so


account required /lib/security/pam_winbind.so
2. Exerccios Tericos

1) O que fazem os servios nmbd e smbd?

_______________________________________________________________________________

_______________________________________________________________________________

2) O que um Roaming Profile e quais as suas vantagens?

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio

1. Instale o programa Swat;

2. Crie um novo compartilhamento com o Swat.


1.
Domain Name System
2. Objetivos
Entender sobre resoluo de nomes;

Realizar consultas DNS;

Configurar uma zona de domnio DNS;

Configurar uma zona reversa de domnio DNS.


1. Introduo terica
No final dos anos 70, a introduo do protocolo TCP/IP e consequentemente a
rpida expanso da ARPAnet tornou obsoleto o sistema de atualizao manual e
centralizado do arquivo HOSTS.TXT, que continha uma tabela associando todas
informaes sobre os hosts da ARPAnet, incluindo seus endereos. Era simples
mant-lo para poucas centenas de mquinas, mas tornou-se impraticvel para
milhares e milhares que se conectavam a rede em um processo exponencial de
crescimento. Diante desse problema, a direo da ARPAnet contratou pesquisadores
para desenvolver uma soluo que atendesse s seguintes especificaes:

Permitir administrao local e ao mesmo tempo publicao global;

Garantir univocidade do nome dos hosts atravs de uma distribuio


hierrquica de domnios.

Em 1984 foi liberado o Domain Name System, descritos nas RFC's 882 e
883. Atualmente estas RFC's foram suplantadas pelas de nmeros 1034 e 1035, alm
de RFC's suplementares de segurana, administrao, atualizao dinmica de
servidores de nome, e muitas outras.

1. Caractersticas

Banco de dados hierrquico e distribudo representado no formato de uma


rvore invertida e 127 nveis;

Namespace de at 63 caracteres;

capaz de associar outras informaes a um host e no s seus endereos


IP's;

Arquitetura cliente/servidor;

Os clientes so chamados resolvers, e costumam ser bibliotecas do sistema


operacional (libresolv no Gnu/Linux) compartilhadas entre os mais diversos
programas, como ping ou o navegador web;

Do outro lado esto os servidores de nome DNS, os DNS nameserver;


A raiz da rvore tem nome nulo ou "", por isso a representamos simplesmente
como ponto (.);

Os ns abaixo do domnio raiz so chamados domnios de nvel mais elevado


top level domains;

Sua quantidade e nomes so impostos pela ICANN - Internet Corporation


for Assigned Names and Numbers;

Eles so divididos em gTLD e ccTLD, onde temos respectivamente os


domnios genricos com, edu, gov, mil, etc; e os cdigos de pases ou
country-code, sempre com duas letras;

A ICANN delega, de acordo com tratados internacionais, a responsabilidade


pela administrao de um ccTLD;

No caso do Brasil, essa responsabilidade pertence atualmente ao CGI.br,


mais especificamente ao REGISTRO.br;

Uma vez delegado um domnio, sua nova autoridade pode delegar subdomnios
sem necessitar notificar a entidade responsvel pelo domnio pai;

Um subdomnio est para um subdiretrio assim como um domnio est para


um diretrio, e um host est para um arquivo;

Finalmente, vale a pena mencionar que o arquivo HOSTS.TXT foi portado


para o ambiente Unix e posteriormente para o Gnu/Linux como /etc/hosts. Este
arquivo normalmente o primeiro a ser consultado pelo resolvedor, que ir buscar
por um servidor de nomes apenas em caso de o host no ser encontrado no arquivo
/etc/hosts.

1. Resoluo
Soluo DNS o processo pelo qual um programa consulta dados a respeito de um
hostname. Na grande maioria das vezes, consulta-se o endereo IP deste host,
para ento efetuar algum tipo de conexo a algum servio, como HTTP, SMTP,
POP, dentre inmeros outros.

O processo de resoluo, a partir do primeiro nameserver consultado, pode ser:

recursiva
iterativa

1. Resoluo Recursiva

Tomando um navegador web como exemplo, a resoluo para acesso a um


website tem as seguintes etapas:

1. Usurio solicita acesso a www.exemplo.com.br;

2. Navegador checa se j conhece o endereo IP do hostname solicitado (cache


do browser);

3. Se no conhece, o navegador passa a solicitao para a biblioteca de resoluo


o resolver;

4. O resolver procura o hostname solicitado no arquivo /etc/hosts local;

5. Se no encontrar, ele checa o arquivo /etc/resolv.conf para saber a quais


nameservers deve solicitar a informao;

6. O resolver repassa a solicitao ao primeiro nameserver da lista, e logo


aps para o prximo at o fim da lista, aguardando por uma resposta de
qualquer um deles;

7. O servidor de nomes acionado consulta seu cache, se houver;

8. Se no encontrar em seu cache, o servidor em questo vai diretamente ao


servidor raiz e transfere a consulta - www.exemplo.com.br?;

9. O servidor raiz no faz cache, e tambm no autoridade sobre zonas de


baixo nvel, ento ele apenas responde uma parte da questo: "No sei quem ,
mas sei quem pode responder melhor: br.";

10. O servidor de nomes reenvia a consulta para o servidor .br -


www.exemplo.com.br?;

11. .br retorna o mesmo tipo de resposta, porm como uma dica mais
prxima: "No sei quem , mas sei quem pode responder melhor: com.br.";
12. Passos 10 e 11 so efetuados mais uma vez, e agora a resposta "No sei
quem , mas sei quem pode responder melhor: exemplo.com.br.";

13. Aps repetir o passo 10, finalmente a resposta ser da autoridade sobre o
domnio exemplo.com.br. Vai ser respondido o IP, juntamente ao TTL do
registro, ou ser respondido "inexistente";

14. O servidor de nomes far cache da resposta, ao mesmo tempo que a


repassa para o resolvedor original;

15. O resolvedor repassa a resposta para o navegador;

16. 0 navegador inicia uma conexo HTTP com o IP descoberto.

Conceitos de DNS e a sua configurao em Gnu/Linux utilizando Bind9, so


cobrados na Prova do LPI 201 peso2.

1. Resoluo Iterativa

Enquanto o servidor cache do exemplo acima executa um processo recursivo


de consultas sucessivas descendo a rvore at a autoridade capaz de responder
definitivamente ao questionamento apresentado, os servidores ".", "br.", "com.br.",
apenas informam que conhecem algum mais preciso que eles. Essa uma consulta
iterativa. Iterao, nesse caso, significa "apontar para o mais prximo conhecido".

2. Arquivo /etc/hosts
Derivado do arquivo HOSTS.TXT original, aquele que era atualizado e
distribudo antes do surgimento do Domain Name System, o arquivo /etc/hosts
continua tendo um papel muito importante no processo de resoluo. No passo a
passo descrito anteriormente, observe que ele a primeira fonte de consulta do
resolver.

Este comportamento pode ser modificado atravs do arquivo /etc/nsswitch,


porm, isso s seria feito em um cenrio muito particular. Podemos considerar que
quase a totalidade dos sistemas *nix vo seguir a ordem de resoluo padro.

Sendo assim, bom conhecer a sintaxe desse arquivo:


Endereco_IP hostname_canonico [aliases...]
192.168.200.254 gateway.com.br gateway

So possveis um endereo IP por linha, seguido de um endereo cannico e


opcionalmente aliases. O nome de host cannico pode ser qualquer nome no
formato DNS, porm, em alguns casos, como o de servidores de e-mails,
adequado que os IPs presentes nesta mquina tenham um FQDN pertinente.
Full-Qualified Domain Name um hostname que identifica, sem ambiguidade, a
posio daquele n dentro da rvore DNS.

Por essa razo, um FQDN deve terminar com um ".", que representa a raiz da
rvore. Os aliases podem ser outros hostnames cannicos, ou simples sufixos,
para simplificar a escrita de determinados endereos. Aps a instalao do sistema, o
arquivo hosts costuma conter uma entrada referente ao IP da interface loopback,
e uma entrada para cada outra interface presente na mquina para qual um
endereo foi atribudo. Por exemplo:

127.0.0.1 localhost
192.168.1.23 micro23.micro23.com.br. micro23

Pode ser acrescentada quantas entradas forem necessrias, inclusive para IPs
externos. Atualmente, o sistema baseado em Debian j contm entradas para
endereamento IPv6, que seguem a mesma lgica.

3. Ferramentas de consulta
Caso ainda no estejam presentes, vamos instalar as ferramentas de pesquisa
de DNS.

# aptitude install dnsutils

nslookup

A ISC diz, literalmente, no manual de utilizao do BIND: Devido a sua


interface misteriosa e frequente comportamento inconsistente, ns no
recomendamos o uso do nslookup. Usem o dig no lugar dele.

Porm, o pacote mantido pela prpria ISC em nome da legio de


administradores que se habituaram a utilizar o nslookup como ferramenta de
resoluo de problemas.

Dentre suas vantagens est o fato de ter uma biblioteca de resoluo


independente do sistema, e consultar um servidor por vez, dentre os listados no
resolv.conf. Apesar da consulta ser mais lenta, torna a triagem mais controlvel.
Dentre os problemas mais crnicos do nslookup esto: respostas confusas e erros
indefinidos.

host

O comando host concebido para dar respostas objetivas, limitando-se na


maioria dos casos a uma s linha. Porm, repostas mais detalhadas podem ser
obtidas com a utilizao de parmetros.

Ao contrrio do dig, o host consulta a search list do arquivo


/etc/resolv.conf.

dig

O comando dig o acrnimo para domain information groper, que


significa algo como "aquele que busca por informaes de domnio no escuro", e ao
mesmo tempo, a palavra dig em ingls significa literalmente "escavar". Acho que
mencionar estas curiosidades demonstra o esforo de imaginao dos criadores do
dig, e no toa, ele o comando de pesquisa mais poderoso no pacote de
utilitrios BIND.

No dig h dezenas de opes e incontveis combinaes entre elas, por isso


consultar o man, e sobretudo, ter um forte domnio do funcionamento do sistema
de nomes de domnio necessrio para dom-lo.

O dig no utiliza a opo search do /etc/resolv.conf, por isso necessrio


utilizar FQDN em todas as buscas.
1. Prtica dirigida
Para perceber as vantagens e desvantagens dos comandos a seguir, execute-os
juntamente com o professor e oua as suas explicaes.

1) Vamos comear por um nslookup interativo:

# nslookup

2) Exibindo as configuraes do nslookup:

> server
> set all

3) Buscando por registros de endereos IP, entrega de e-mails,


autoridade sobre o domnio e dados adicionais:

> www.uol.com.br.
> set type=MX
> gmail.com.

4) Exibir as informaes do registro do domnio e SPF (item que


iremos estudar a frente):

> set type=SOA


> uol.com.br.
> set type=TXT
> terra.com.br.
> exit
5) Agora vamos experimentar o objetivo comando host:

# host www

# host -v www.Desideratu.com.br.

# host -v -t mx Desideratu.com.br
# host -v -t soa Desideratu.com.br

# host -l -v -t any Desideratu.com.br

6) E finalmente, o verborrgico comando dig:

# dig www

# dig www.Desideratu.com.br.

# dig @200.204.0.138 www.Desideratu.com.br.

# dig -t mx Desideratu.com.br.

# dig -t soa Desideratu.com.br.

# dig @192.168.0.254 exemplo.com.br axfr

# dig -x 200.212.122.137

# dig +trace www.Desideratu.com.br.

1. BIND9
O BIND - Berkeley Internet Name Domain o servidor de nomes utilizado
na grande maioria dos servidores da Internet, provendo uma estvel e robusta
arquitetura sobre a qual as organizaes podem construir sua estrutura de nomes.

1) Para instalar o BIND9 no Debian basta executar:

# aptitude install bind9

O arquivo de configurao do BIND9 chama-se named.conf, e nas


distribuies RedHat e Suse ele fica exatamente no diretrio /etc. No Debian,
entretanto, este arquivo foi fragmentado em trs e o diretrio /etc/bind.

O arquivo principal ainda chama-se named.conf mas contm apenas


configuraes estticas. Ele utiliza a clusula include para anexar os arquivos
named.conf.options e named.conf.local. Sendo que desses dois, o primeiro serve
para personalizar todas opes referentes ao funcionamento do prprio BIND,
enquanto que o segundo serve para declarar todas as zonas pelas quais este servidor
deve responder.

# ls -lh /etc/bind

O arquivo db.root, que fica em /var/named/named.ca no RedHat, relaciona


os endereos dos 13 servidores raiz, e lido como zona hint, que ser explicada
adiante.

O BIND vai utilizar a porta 53/UDP para receber consultas, a porta


53/TCP para transferir zonas para servidores escravos, a porta 953/TCP
para receber comandos via rndc (que dependem de chaves
criptografadas), e portas udp altas podem ser dinamicamente atribudas
para efetuar consultas em outros servidores.

2) Vamos observar a recursividade e as portas envolvidas utilizando o


tcpdump, mas antes vamos verificar as portas:
# netstat -nltup

3) Em um segundo terminal:

# aptitude install tcpdump

4) Execute o sniffer tcpdump para verificar os pacotes saindo de uma


porta alta at a porta 53/udp:

# tcpdump -i eth0 -n port 53

5) No terminal anterior:

# dig @localhost -t any wikipedia.com

6) Os logs do servio BIND sero lanados, por padro, no arquivo


/var/log/daemon.log:

# tail /var/log/daemon.log

No RedHat e Suse os eventos do servio sero logados diretamente no


/var/log/messages.

1. Servidor cache
As bibliotecas do resolvedor da maioria dos sistemas operacionais no so
capazes de executar o processo de resoluo completo, chamado recursivo, como
vimos acima. Ao invs disso elas dependem de um servidor intermedirio com essa
capacidade.

Quando nos conectamos de casa diretamente Internet, o servio DHCP do


provedor se encarrega de nos atribuir o endereo de seus servidores cache. Caso
contrrio, nosso resolver no teria a quem consultar e no conseguiramos
navegar. No entanto, muitos administradores de rede utilizam os IPs desses
provedores para configurar vrias estaes de trabalho de uma rede. O efeito disto
que cada estao vai fazer suas prprias consultas individuais, multiplicando o
volume de dados trafegados atravs do link de Internet, desperdiando tempo e
ocupando largura de banda.

Quanto maior a rede, pior o impacto. A alternativa para evitar estes problemas
manter um servidor DNS caching only. Servidores cache reservam o
resultado de suas buscas na memria pelo tempo limite estabelecido pela autoridade
sobre o domnio consultado. Dessa forma, independentemente da quantidade de
mquinas da rede, as consultas sero feitas na Internet apenas uma vez a cada
intervalo de atualizao.

1) Nosso servidor BIND recm instalado j est operando como


servidor cache. Para testar:

# dig @localhost -t soa fsf.org

2) Observe os dados no rodap da consulta e repita o comando:

# dig @localhost -t soa fsf.org

Observe o query time no rodap da sada do dig.

3) Para que a partir de agora todas nossas aplicaes utilizem o


potencial de nosso servidor cache, edite o arquivo
/etc/resolv.conf e mantenha apenas as linhas a seguir:

# vi /etc/resolv.conf
nameserver 127.0.0.1

1. Restringindo consultas
Um cuidado muito importante que devemos tomar com servidores cache
limitar quem est autorizado a utilizar esse servio. Por padro, o nosso BIND est
liberado para acesso pblico, ou seja, se houver uma interface conectada
diretamente a Internet, qualquer outro computador no mundo pode mandar nosso
servidor procurar um determinado endereo. Ficamos vulnerveis a abusos.

1) Experimente fazer uma consulta atravs do servidor do seu colega:

# dig @192.168.200.x -t txt uol.com.br

2) Para evitar este comportamento, edite o arquivo


/etc/bind/named.conf.options e acrescente a seguinte declarao:

# vi /etc/bind/named.conf.options
allow-query { 127.0.0.1; 192.168.200.X; };

3) Para carregar as modificaes no BIND execute:

# /etc/init.d/bind9 reload

Dessa forma, nosso servidor s responder para consultas originadas


localmente.

Para carregar as modificaes nos arquivos confs do Bind:


# rndc reconfig

4) Repita a experincia com o colega:

# dig @192.168.200.x -t txt uol.com.br

possvel ser ainda mais econmico em termos de banda se ao invs de


executar uma busca recursiva a cada nova consulta, encaminhar a consulta para o
servidor disponibilizado pelo provedor.

5) Isso pode ser feito acrescentando ao named.conf.options a


clusula forwarders com o ip do provedor:

# vi /etc/bind/named.conf.options
forwarders {200.176.2.10; };
Onde IP_DO_PROVEDOR um servidor DNS capaz de fazer consultas
recursivas.

1. Servidor de zonas
Cada domnio na Internet tem sua autoridade, que nada mais do que um
servidor onde as informaes daquele domnio so criadas, mantidas ou alteradas.
Mas como um domnio pode se subdividir em inmeros outros domnios, surge um
outro conceito: Zonas.

Uma zona o conjunto dos hosts de um domnio sobre o qual se mantm


autoridade. Uma vez delegado um subdomnio a outra autoridade, os hosts desse
domnio pertencem a zona daquela autoridade, e no mais a zona original onde
inicia-se o subdomnio.

2. Tipos de zonas e Registros

Em relao as zonas, o BIND pode operar de acordo com 6 tipos: master,


slave, stub, hint, forward e delegation-only.

master - O BIND vai responder como autoridade sobre aquele domnio. Os


dados da zona sero criados, publicados e administrados a partir dele.

slave - O BIND tambm vai responder por esse domnio, mas nenhuma
criao ou alterao respectiva a essa zona ser feita localmente neste
servidor. Os dados sero sempre transferidos de um servidor master.

stub - Este tipo de zona no previsto em nenhuma RFC e foi


implementado apenas no BIND. Assemelha-se a uma zona slave mas replica
do master apenas os registros do tipo NS. Em desuso.

hint - Especfica para o BIND onde ele deve comear uma busca recursiva
quando estiver operando como cache. Por padro, h uma zona hint criada
com os endereos dos root servers.

forward - Serve para orientar o BIND a encaminhar a consulta sobre uma


determinada zona para outro servidor em especial. O encaminhamento de
consultas tambm pode ser especificado de maneira global no arquivo
named.conf.options.

delegation-only - Para evitar abusos de algumas autoridades sobre domnios


de primeiro nvel como COM, NET, ORG, etc, o BIND mantm o tipo de
zona "delegao apenas". Qualquer resposta que no tenha uma delegao
explcita ou implcita na seo autoridade ser transformada em uma resposta
NXDOMAIN.

Vamos configurar nossa prpria zona DNS que vai se chamar


microX.com.br. Pode ser que na Internet j exista um domnio com este nome, mas
isso no importa porque nossas consultas ficaro limitadas ao laboratrio.

As zonas devem ser declaradas no arquivo named.conf.local. Uma zona


mestre precisa, no mnimo, do nome do domnio, tipo de zona e o caminho para o
banco de dados de registros. Quando apenas o nome do arquivo citado, o servidor
BIND vai procur-lo no diretrio definido na opo directory, do arquivo
named.conf.options. Isso significa que, por padro, o caminho completo
corresponderia a /var/cache/bind/db.microX

O contedo do banco de dados da zona que foi declarada ser principalmente


uma srie de registros de recursos (resources records), ou simplesmente,
registros. No entanto trs diretivas so suportadas:

$TTL;

$ORIGIN;

$INCLUDE.

Mas com exceo do $TTL, as demais so raramente utilizadas.

Um registro tem o seguinte formato:


dono [TTL] [classe] tipo dados.

dono - o nome do registro. Quando substitudo por uma @, o dono o


prprio domnio. Caso o dono fique em branco, o BIND assume o nome do
registro imediatamente superior.
TTL - Um valor, em segundos, para a permanncia dos dados deste registro no
cache de um servidor. Raramente utilizado.

classe - Podem ser CH, HS ou IN. O padro IN, de Internet, e no


precisa ser declarada.

tipo - No momento existem mais de 30 tipos de registro, dentre os quais


veremos SOA, NS, MX, A, CNAME, TXT e PTR.

dados - Diferentes tipos de dados so definidos para diferentes tipos de


registros. Para um registro tipo A temos um endereo IP por exemplo.

Recentemente, registros do tipo TXT tem sido usados para aumentar o


controle contra spams. So criados de acordo com o formato definido pelo projeto
SPF - Sender Policy Framework, ou simplesmente SPF.

O SPF diz quais servidores podem enviar e-mails em nome do seu domnio. O
objetivo evitar que seu domnio seja usado para forjar remetentes falsos. Grandes
provedores j adotaram o SPF, e cada vez mais outros domnios vem seguindo a
mesma prtica. Tende a tornar-se uma imposio. Muito mais antigo que o SPF, e
por consequncia, uma imposio natural do ecossistema de e-mails, garantir que o
IP do registro MX tenha endereo reverso. Esta uma forma de checar se o e-mail
partiu de um usurio domstico cujo computador est sendo usado como zumbi,
por exemplo.

Normalmente, configurar o endereamento reverso no depende do


administrador do domnio, e sim do provedor do link. Porm, possvel requisitar
autoridade sobre o bloco de IPs destinado quele link. Vai depender do provedor.
Mas como em nosso caso estamos utilizando apenas endereos privados, vamos
assumir a autoridade sobre todo o bloco 192.168.200/24.

1. Configurao do Servidor BIND9


Agora iremos configurar o BIND9, lembrando que estamos fazendo um teste
interno, restringindo as consultas apenas para localhost, certifique-se os arquivos
/etc/resolv.conf e /etc/hosts estejam corretos. Efetue testes com o comando
ping. Iremos prosseguir com a configurao.

1) Acrescente as linhas abaixo ao arquivo named.conf.local:

# vi /etc/bind/named.conf.local
zone "microX.com.br" {
type master;
file "db.microX";
};
zone "200.168.192.in-addr.arpa" {
type master;
file "rev.microX";
};

2) Criaremos o banco de dados de registros de DNS, teremos


servidores DNS, e-mail, web e ftp:

# vi /var/cache/bind/db.microX

1 $TTL 1h ; TTL default para todos os registros que no tiverem seu


prprio TTL.
2 @ IN SOA ns1.microX.com.br. hostmaster.microX.com.br. (
3 2009090901 ; serial
4 1h ; refresh
5 15m ; retry
6 1w ; expire
7 1h) ; negative caching TTL
8 ;
9 ;
10 @ IN NS ns1.microX.com.br.
11 @ IN MX 10 mail.microX.com.br.
12 ns1 IN A 192.168.200.X
13 mail IN A 192.168.200.X
14 pop IN CNAME mail
15 smtp IN CNAME mail
16 www IN A 192.168.200.X
17 ftp IN CNAME www
18 @ IN A 192.168.200.X
19 @ IN TXT "v=spf1 a mx ip4:192.168.200.0/24 -all"
Sobre o registro SOA, vo algumas explicaes:

serial - a referncia para os slaves saberem se a zona sofreu


alteraes;

refresh - Tempo que o servidor secundrio vai aguardar at checar se h


atualizaes no servidor primrio;

retry - Em caso de falha do refresh, o tempo at a prxima verificao;

expire - O tempo que o secundrio aguardar o primrio voltar, se esgotar, o


secundrio para de responder por essa zona;

negative caching TTL - Se a zona expirar, esse ser o tempo pelo qual um
servidor cache armazenar a informao NXDOMAIN antes de iniciar
uma nova busca recursiva. O mximo so 3 horas.

Agora sobre o registro TXT:

a - Qualquer registro A desse domnio;

mx - O servidor de e-mail;

192.168.200/24 - Qualquer host da rede 192.168.200.0/24, qualquer


outra origem, descarte.

1) Agora iremos configurar a zona reversa, para completar nosso


registro MX:

# vi /var/cache/bind/rev.microX
1 $TTL 1h ; TTL default para todos os registros que no tiverem seu
prprio TTL.
2 @ IN SOA ns1.microX.com.br. hostmaster.microX.com.br. (
3 2009090901 ; serial
4 1h ; refresh
5 15m ; retry
6 1w ; expire
7 1h) ; negative caching TTL
8 ;
9 ;
10 @ IN NS ns1.microX.com.br.
11 X IN PTR mail.microX.com.br.

Estamos prontos para aplicar nossas configuraes. Mas para observar se


deu tudo certo ou no, num segundo terminal inicie o comando:

# tail -f /var/log/daemon.log

1) Voltando ao terminal anterior:

# /etc/init.d/bind9 restart

Verifique no segundo terminal se o log no acusa nenhum problema.


2) Se o servio levantou sem erros, teste a resoluo do seu domnio:

# ping www.microX.com.br
# dig -t mx microX.com.br
# dig -x 192.168.200.X
# dig @localhost www.kernel.org

Para registrarmos um domnio pblico, precisamos de pelo menos dois


servidores DNS respondendo pelo nosso domnio. Isso significa um
servidor mestre e pelo menos um servidor escravo. A exigncia uma
forma de garantir que seu domnio estar sempre disponvel. Se um
servidor parar, o outro continua respondendo.

Se os servidores estiverem geograficamente separados, isso garante ainda mais


disponibilidade, pois mesmo que um link caia, o outro certamente ainda estar
disponvel. Logo, nossa aula de BIND no estaria completa antes de configurar um
servidor escravo.

Na verdade, um mesmo servidor rodando BIND pode ser simultaneamente


mestre para alguns domnios, escravo para outros, e cache para todo o resto.

3) Sendo assim, cada um de ns vai se tornar escravo do colega a


esquerda.

# vi /etc/bind/named.conf.local

Acrescente a zona que para qual voc ser escravo:

1 zone "microX.com.br" {
2 type slave;
3 masters { 192.168.200.X; };
4 file "sec.microX";
5 };
1) Ative a configurao:

# /etc/init.d/bind9 reload

2) Observe nos logs se a zona foi transferida. Em caso positivo, veja


o contedo do arquivo criado:

# cat /var/cache/bind/sec.microX

Agora responda: Se voc conseguiu baixar a zona do seu colega, quem


mais conseguiria?

Para evitar abusos devemos adicionar ao arquivo


/etc/bind/named.conf.options algumas diretrizes de acesso.

3) Ento para validar as aes de segurana, editamos:

# vim /etc/bind/named.conf.options
allow-transfer { none; };

4) Ficamos protegidos contra enxeridos, mas agora precisamos


autorizar nossos escravos acrescentando:

# vim /etc/bind/named.conf.options

Onde X o IP do colega. No dia-a-dia do ser do outro servidor.

allow-transfer { 192.168.200.x; 192.168.200.X;};

Vamos aproveitar e tornar mais rpida a atualizao, enviando uma


notificao sempre que fizermos uma mudana na zona, ao invs de
esperar o refresh dos nossos escravos.

5) Basta acrescentar em cada zona, dentro do


/etc/bind/named.conf.local:

also-notify { 192.168.200.x; };
1. Exerccios tericos

1) O que DNS reverso e qual sua importncia?

_______________________________________________________________________________

_______________________________________________________________________________

2) Como permitir apenas transferncia de zonas para o IP


192.168.200.100?

_______________________________________________________________________________

_______________________________________________________________________________

3) Como permitir consultas recursivas apenas para a nossa rede?

_______________________________________________________________________________

4) O que SPF, e qual sua relao com o Servidor DNS?

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Criar cria uma view exclusiva da zona microX.com.br para consultas da
rede 10.0.0.0/24.
1.
Apache
2. Objetivos
Entender a configurao bsica do Apache2;

Habilitar a linguagem PHP5 no Apache2;

Configurar domnios virtuais;

Habilitar suporte a SSL.

1. Introduo terica
O Web Server Apache um esforo comunitrio feito por desenvolvedores ao
redor do mundo, no qual o objetivo consiste em desenvolver um Web Server de
cdigo fonte aberto, estvel e seguro. Em 1996, tornou-se um dos Web Servers
mais populares no mundo, e, desde ento, mantm sua posio como o servidor web
com a maior base instalada no mundo.

Segundo uma pesquisa feita pelo site NetCraft, o Apache est servindo em
mdia, 50% dos sites pesquisados. Isso s foi possvel graas a uma srie de
qualidades, das quais algumas, sero listadas abaixo:

Software Livre, podendo ser estudado, modificado, adaptado e redistribudo;

Suporta vrias linguagens, como PHP, Python, Ruby, Perl e inclusive


ASP e .NET;

Multi plataforma;

Possu suporte a vrias funcionalidades providas por mdulos;

Pode trabalhar com multi threads ou multi processos.

1. MPM Worker e MPM PreFork

A documentao oficial do projeto Apachempm, indica que possvel escolher


entre algumas configuraes que ajudam a otimizar a performance ou manter a
compatibilidade com aplicaes antigas, por exemplo. Vamos entender as
particularidades dos modos PreFork e Worker.

2. MPM Pre Fork

Neste modo, o Apache trabalhar com a implementao de multi processos, de


acordo com a estrutura clssica de um processo Unix, similar a verso 1.3 do Web
server em questo.

Assim sendo, um nico processo ser responsvel por executar novos


processos que sero utilizados para aguardar novas conexes e responder as
requisies existentes. Este modo ideal para quem precisa manter compatibilidade
com aplicaes e bibliotecas que no suportam o o modo thread.

3. MPM Worker

No modo MPM Worker, o Apache trabalhar com uma implementao mista


de processos e threads, o que possibilita atender mais conexes simultneas com
um custo menor de hardware, j que threads, por definio, so mais velozes que
processos.

Neste modo, o apache mantm uma srie de threads ociosas, fazendo com
que novas conexes sejam processadas e respondidas de uma maneira mais rpida
do que no modo Pre Fork. Infelizmente, nem toda aplicao se d bem com
threads, como o PHP5, por exemplo.

4. Prtica dirigida

5. Instalao do Apache2

1) Vamos instalar o Apache2:

# aptitude install apache2

O Apache2 no Debian dividido em uma srie de arquivos e diretrios.


Vamos conhecer estes arquivos e suas respectivas funes:

/etc/apache2/apache2.conf - Arquivo de configurao principal;


/etc/apache2/modules.conf - Arquivo de configurao de mdulos;
/etc/apache2/ports.conf - Arquivo de configurao de portas;
/etc/apache2/sites-available - Configurao de sites disponveis;
/etc/apache2/mods-available - Mdulos habilitados;

2) Abra o arquivo de configurao para que possamos visualizar as


principais opes de configurao do Apache:

#vim /etc/apache2/apache2.conf

A varivel ServerRoot define aonde o Apache deve procurar por seus


arquivos de configurao. No exemplo abaixo, os arquivos de configurao sero
procurados em /etc/apache2:

ServerRoot /etc/apache2

J a varivel DocumentRoot diz ao Apache aonde procurar os sites que deve


ser apresentados aos usurios.

Por padro, os sites sero armazenados em /var/www:

DocumentRoot /var/www

O usurio e grupo que executa o apache so definidos pelas variveis abaixo:

User $APACHE_RUN_USERS
Group $APACHE_RUN_GROUP

Caso seja encontrado algum erro durante o funcionamento do Apache, o


mesmo ser registrado de acordo com o desgnio da varivel ErrorLog, como no
exemplo abaixo:

ErrorLog /var/log/apache2/error.log

E, ainda falando em logs, o Apache suporta a declarao de registros


personalizados atravs do uso da varivel LogFormat:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%Refereri\" \"%User-Agenti\""


combined
3) Os logs, por padro, sero armazenados no formato "combined",
dentro do arquivo /var/log/apache2/access.log, com os seguintes
itens:

%h - Hostname ou endereo IP do visitante;

%l - Hfen;

%u - Nome de usurio, caso exista;

%t - Horrio de acesso;

%r - Requisio solicitada;

%>s - O resultado da solicitao;

%b - O tamanho em bytes da resposta;

Refereri - O site anterior a visita, se informado;

User-Agenti - O navegador do visitante, se informado.

A prova pode perguntar sobre as variveis ErrorLog, CustomLog,


ServerRoot e DocumentRoot.

1. Ajustes dos mdulos Worker e PreFork

Ainda dentro do arquivo de configurao do apache, existem ajustes de


performance para os mdulos MPM Worker e MPM Prefork. Por padro, o
apache vem configurado para trabalhar em MPM Worker, ento, vamos entender
suas configuraes:

1 StartServers 2
2 MaxClients 150
3 MinSpareThreads 25
4 MaxSpareThreads 75
5 ThreadsPerChild 25
6 MaxRequestsPerChild 0

A varivel StartServers configura o nmero inicial de servidores;

A varivel MaxClients, o nmero mximo de conexes simultneas;

A varivel MinSpareThreads, configura o valor mnimo de threads


em espera;

A varivel MaxSpareThreads, configura o valor mximo de threads


em espera;

E a varivel MaxRequestPerChild, configura o valor mximo por


processo

O mdulo PreFork tambm possui ajustes similares ao mdulo Worker:

1 StartServers 5
2 MinSpareServers 5
3 MaxSpareServers 10
4 MaxClients 150
5 MaxRequestsPerChild 0

A varivel StartServers configura o nmero inicial de servidores;

A varivel MinSpareServer, configura o valor mnimo de processos em


espera;

A varivel MaxSpareThreads, configura o valor mximo de processo em


espera;

A varivel MaxClients, o nmero mximo de conexes simultneas;

E a varvel MaxRequestPerChild, configura o valor mximo por


processo.

1. Segurana
1) Dentro do arquivo security, vamos colocar as regras de
segurana:

# cd /etc/apache2
# vim conf.d/security
2) As variveis abaixo ajudam a dificultar o processo de descoberta da
verso do servidor e sistema operacional:

ServerSignature Off
ServerTokens Prod
TraceEnable Off

3) Aps efetuar os ajustes, se necessrio, reinicie o servidor apache:

invoke-rc.d apache2 restart

Instale o software nmap, veja suas portas abertas e banners:


# aptitude install nmap
# nmap -sV localhost

1. Suporte a PHP

A linguagem de programao PHP uma das mais populares entre os


desenvolvedores Web. Muitas ferramentas de blogs, WebSites e tambm
ferramentas web para administrao de servios e servidores, como o
PhpLdapAdmin, necessitam do PHP5 configurado como pr requisito para
instalao.

1) Instalando o suporte a PHP5:

# aptitude install php5 libapache2-mod-php5

2) Verifique se os mdulos do PHP5 esto ativados:

# ls -l /etc/apache2/mods-enabled
# apache2ctl -M
3) Porm, caso necessrio, habilite o suporte manualmente:

#a2enmod php5

Na plataforma RedHat, a habilitao de mdulos feita utilizando o


comando system-config-http.

4) Reinicie o Apache:

# /etc/init.d/apache2 restart

5) Para testar o PHP, crie um arquivo com o nome index.php no


diretrio /var/www/ com o contedo a seguir e abra no seu
browser:

# vim /var/www/index.php

<?
phpinfo()
?>

Agora, acesse sua pgina WEB e verifique o resultado.

O arquivo /etc/php5/apache2/php.ini, armazena as configuraes do


funcionamento do PHP5 com Apache2.
A funo do arquivo e seu path completo podem ser cobrados na LPI.
O Apache2 e sua configurao esto na prova 202 - peso 3.

1. Domnios virtuais
Um Domnio Virtual uma funcionalidade que permite ao seu servido Web
responder com um ou mais sites em um mesmo IP, o que possibilita acessar servios
e pginas diferentes em um mesmo servidor, apenas apontando a entrada DNS
correta nos arquivos de configurao.
Os domnios virtuais devem ser configurados nestes dois diretrios:

/etc/apache2/sites-available: Neste ficam todos os arquivos de


configurao dos domnios virtuais;

/etc/apache2/sites-enabled: Neste ficam todos os domnios virtuais ativos,


que na verdade so links simblicos para os arquivos de configurao
localizados no diretrio citado anteriormente.

1) Vamos criar um domnio virtual:

# vim /etc/apache2/sites-available/www.microX.com.br

1 # Host Virtual
2

3 NameVirtualHost www.microX.com.br
4

5 <VirtualHost www.microX.com.br>
6 DocumentRoot /var/www/microX.com.br
7 ServerName microX.com.br
8 ServerAdmin webmaster@microX.com.br
9 ErrorLog /var/log/apache2/microX.com.br-error.log
10 CustomLog /var/log/apache2/microX.com.br-access.log common
11 </VirtualHost>

A prova de certificao pode cobrar o uso de parmetros como ErrorLog e


sua funo.

1) Crie o diretrio onde vai ficar hospedado o domnio virtual:

# mkdir /var/www/microX.com.br
2) Dentro do diretrio recm criado, crie um arquivo chamado
index.html:

# vim /var/www/microX.com.br/index.html

1 <html>
2 <title> Minha pgina <title>
3 <body>
4 Funciona! :)
5 </body>
6 </html>

1) Para testar a sintaxe de seu arquivo de Virtual Host:

# apache2ctl -S

2) Utilize o comando a2ensite para habilitar o domnio virtual recm


criado:

# a2ensite
3) O apache possui um comando para habilitar o domnio virtual sem
a necessidade de criar os links virtuais via linha de comando:

# a2enmod www.microX.com.br

4) Recarregue as configuraes sem reiniciar o apache:

# invoke-rc.d apache2 reload

Agora, no seu navegador Web, acesse o site www.microX.com.br e veja se o


mesmo est funcionando.

1. Suporte a HTTPS
O SSL - Secure Sockets Layer, um padro Web que permite trafegar dados
sensveis e confidenciais com segurana atravs da internet, utilizando o protocolo
HTTPS. Sendo assim, extremamente importante que o administrador de redes
configure o acesso SSL para sites que necessitam deste tipo de proteo.

1) Verifique se o mdulo ssl est habilitado, e, em caso negativo,


habilite-o:

# a2enmod ssl

O SSL trabalha com o conceito de certificados pblicos, ento, devemos


efetuar os procedimentos de criao do certificado que ser fornecido aos clientes.

2) Entre no diretrio que ir armazenar o certificado:

# cd /etc/ssl

3) Crie a chave que ser usada para assinar o certificado:

# openssl genrsa -out microX.key 1024


4) Com a chave em mos, crie o certificado (fique atento as
perguntas):

# openssl req -new -key microX.key -out microX.csr

Depois de criar o certificado, voc pode envi-lo a uma unidade


certificadora, que o assinar por um valor anual, ou, voc mesmo pode
assinar o certificado. Importante lembrar que, neste caso, o cliente dir que
o certificado no foi reconhecido por uma unidade certificadora.

5) Para auto assinar o certificado:

# openssl x509 -req -days 365 -in microX.csr -signkey microX.key -out
microX.crt

O comando openssl e suas funes e opes podem ser cobrados no


Exame da LPI.

No podemos de esquecer de utilizar sempre o SSL, para que os dados


sejam transmitidos atravs de uma conexo criptografada, verificando a
autenticao do servidor e do cliente atravs dos certificados.
6) Aps gerar o certificado, configure seu domnio Virtual:

1 NameVirtualHost *:443
2 <VirtualHost *:443>
3 DocumentRoot /var/www/microX.com.br
4 ServerName *:443
5 ServerAdmin webmaster@microX.com.br
6 ErrorLog /var/log/apache2/microX.com.br-error.log
7 CustomLog /var/log/apache2/microX.com.br-access.log common
8 SSLEngine on
9 SSLCertificateFile /etc/ssl/microX.crt
10 SSLCertificateKeyFile /etc/ssl/microX.key
11 </VirtualHost>
12

13 NameVirtualHost www.microX.com.br:80
14 <VirtualHost www.microX.com.br:80>
15 RewriteEngine On
16 Options +FollowSymlinks
17 rewriteCond %{SERVER_PORT} 80
18 rewriteRule ^(.*)$ https://www.microX.com.br/$1 [R,L]
19 </VirtualHost>

1) Ative o mod_rewrite para que, toda vez que algum acessar seu
site, seja automaticamente redirecionado para o site com HTTPS
ativado:

# a2enmod rewrite

2) Reinicie o apache:

# invoke-rc.d apache2 stop

# invoke-rc.d apache2 start


3) Agora, abra o navegador e efetue o teste no endereo:

http://www.microX.com.br

1. Exerccio terico

1) Voc precisa alterar a porta de trabalho do seu Apache para a porta 8000.
Qual seria o procedimento?

_______________________________________________________________________________

_______________________________________________________________________________

2) Os usurios reclamam que o site est muito lento na hora de navegar no


servidor. Sabendo que voc tem memria sobrando na mquina e que o
problema no a rede, qual atitude tomaria de imediato?

_______________________________________________________________________________

_______________________________________________________________________________

3) Seu supervisor pediu que voc mudasse o diretrio padro do Apache para
o diretrio /sites. Quais procedimentos devem ser tomados?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Mude a pgina de erro padro 404 para uma mensagem personalizada. DICA:
Use os exemplos no prprio arquivo;

2. Descubra na documentao oficial do apache o que faz o modulo Rewrite e


como ele funciona;

3. Crie um domnio virtual com o seu sobrenome.


1.
Postfix
2. Objetivos
Entender como funciona um MTA;

Entender as funes bsicas de um MTA;

Instalar e configurar o servidor Postfix.


1. Introduo terica
Na dcada de 70, as primeiras mensagens eram enviadas pela ARPAnet,
antecessora da atual Internet.

A troca de mensagens era feita em sua maioria por estudantes, pesquisadores e


profissionais dos grandes centros de pesquisa, restrita a poucos usurios que tinham
acesso a essa rede. As mensagens eram enviadas atravs de um protocolo
semelhante ao atual SMTP, que foi definido apenas em 1982.

O Sendmail era o servidor de correios mais utilizado na dcada de 90,


causando amor e dio aos administradores de sistema. Causava amor aqueles que
tinham tempo de ler, estudar e compreender o seu funcionamento complexo e cheio
de macros. dio para aqueles que precisavam apenas rotear suas mensagens e no
havia necessidade de perder horas e mais horas tentando compreender seu
funcionamento. A sua forma monoltica tambm era um grande ponto negativo.
Sendo apenas um nico processo controlando todas as etapas de transmisso de
e-mail, o Sendmail apresentava inmeras falhas de segurana, de maior risco
quando executado em modo root. Muitos servidores eram invadidos por crackers e
naturalmente os administradores de sistema procuravam alternativas.

Na poca no existia muitas alternativas, portanto os administradores


continuavam a utilizar o Sendmail. Em 1998 as primeiras verses do Postfix
comearam a surgir. Wietse Venema seu criador e possui inmeros trabalhos
relacionados segurana da informao. Wietse pesquisador da IBM at hoje. A
primeira verso oficial do Postfix, como Software Livre, foi lanada em Dezembro
de 1998.

2. Caractersticas do Postfix
Sistema multitarefa - O Postfix possui um conjunto de mdulos que
desempenham um papel especfico para cada etapa do trfego de e-mails,
este comportamento permite melhor desempenho em equipamentos
multiprocessados.

Separao de privilgios - O Postfix pode ser executado em chroot que


restringe o acesso a arquivos internos uma jaula, tornando sua execuo
muito mais segura...

Modular - possvel criar mdulos para trabalhar em conjunto com o


Postfix, tornando-o facilmente extensvel.

Compatibilidade - O Postfix foi desenvolvido para suportar os formatos


de armazenamentos de mensagens existentes.

Os arquivos de configurao do Postfix, podem ser encontrados no diretrio


/etc/postfix, onde os seus principais arquivos so:

main.cf - Arquivo principal do Postfix onde ficam todas as configuraes


principais relacionadas ao funcionamento do Postfix.

master.cf - o arquivo que controla a ao de cada daemon do Postfix.


Nele podemos dizer quantos processos smtpd estaro em execuo, por
exemplo. Caso tenhamos uma estrutura grande de mquina, um ajuste nesses
daemons sero bem compensadores em termos de performance.

1. Prtica dirigida

1) Vamos instalar o Postfix via aptitude:


# aptitude install postfix
No Debian, quando instalarmos o Postfix, ele automaticamente remove o
servidor padro que o Exim4.

2) Vejamos o arquivo de configurao main.cf:

# vi /etc/postfix/main.cf

1 ## Banner que ser mostrado nas conexes. importante mudar.


2 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
3 biff = no
4 ## Modificar o domnio caso o MUA's no fizer corretamente, mas
deixamos ativado,
5 ## pois isso trabalho do prprio MUA.
6 # appending .domain is the MUA's job.
7 append_dot_mydomain = no
8

9 ## Tempo de aviso de mensagens de erro.


10 # Uncomment the next line to generate "delayed mail" warnings
11 #delay_warning_time = 4h
12

13 ## Parmetros de criptografia.
14 # TLS parameters
15 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
16 smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
17 smtpd_use_tls=yes
18 smtpd_tls_session_cache_database = btree:$
{queue_directory}/smtpd_scache
19 smtp_tls_session_cache_database = btree:$
{queue_directory}/smtp_scache
20

21 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc


package for
22 # information on enabling SSL in the smtp client.
23

24 ## Nessa opo, precisamos colocar o hostname da mquina e o


domnio que
25 ## conhecido como FQDN.
26 myhostname = microX.microX.com.br
27

28 ## Arquivos onde so configurados os alias de e-mails.


29 alias_maps = hash:/etc/aliases
30 alias_database = hash:/etc/aliases
31

32 ## Define a origem local, que por padro o mesmo FQDN que est
em /etc/mailname.
33 myorigin = /etc/mailname
34

35 ## Domnios que o seu servidor pode receber mensagens.


36 mydestination = microX.microX.com.br, localhost.microX.com.br,
microX.com.br, localhost
37 ## Essa opo s usada se o seu servidor faz Relay para outros
servidores
38 ## de e-mail.
39 relayhost =
40

41 ## Nesse campo deveremos colocar apenas os IP's que podem


realmente fazer relay
42 ## em seu servidor.
43 ## CUIDADO, se adicionarmos IP's ou classes demais, o servidor
poder virar alvo
44 ## de spammers.
45 mynetworks = 127.0.0.0/8 192.168.200.0/24
46

47 ## Padro de entrega das mensagens. Nesse caso usado o mbox.


48 mailbox_command = procmail -a "$EXTENSION"
49

50 ## Tamanho mximo de caixa-postal para entrega local


51 mailbox_size_limit = 0
52

53 ## Em alguns clientes, podemos adicionar um sinal espacial ao


endereo de e-mail
54 ## para direcionar mensagens a uma determinada pasta, por exemplo.
55 recipient_delimiter = +
56

57 ## Interfaces de rede a qual o Postfix pode fazer bind, ou seja,


estabelecer
58 ## conexes. O padro do Debian seria todas as interfaces.
59 inet_interfaces = all

1) Podemos agora reiniciar o Postfix:

# /etc/init.d/postfix restart

2) Veja se a porta 25 SMTP est pronta para receber conexes:

# netstat -nltup

1. SMTP

1) Com o comando telnet iremos testar a conexo e enviar um


e-mail:

1 # telnet localhost 25
2 helo gmail.com
3 mail from:seuemaildogmail@gmail.com
4 rcpt to:aluno@microX.com.br
5 data
6 subject: Teste
7 Este um teste de email.
8 .
9 quit
1) Mande uma email Local:

# telnet localhost 25

1 mail from:root@microX.com.br
2 rcpt to:aluno@microX.com.br
3 data
4 subject: Teste
5 Este um teste de email.
6 .
7 quit

1) Verifique o log de e-mail:

# tail /var/log/mail.log

2) Verifique o diretrio de e-mails:

# cd /var/mail
# ls -la
# cat aluno

3) Verifique a lista de e-mails do servidor:

# mailq
1. Courier POP3 e Courier IMAP

Um servidor de e-mail s estaria completo se tivermos a instalao de um


daemon POP3 e IMAP. Para isso, vamos instalar e utilizar o programa Courier.
Para nos ajudar a e realizar alguns testes instalaremos, tambm o comando nail.

1) Para que o Courier funcione vamos instalar:

# aptitude install courier-authdaemon courier-authlib courier-base


courier-imap courier-pop nail

2) Aps este passo, edite o arquivo:

# vim /etc/postfix/main.cf

# comentar:
# mailbox_command = procmail -a "$EXTENSION"
# adicionar:
home_mailbox = Maildir/
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/

3) Reinicie o Postfix

# /etc/init.d/postfix restart

4) Alterando o PAM: visualize os arquivos e crie o smtp:

# cat /etc/pam.d/pop3
# cat /etc/pam.d/imap
# vim /etc/pam.d/smtp

@include common-auth
@include common-accont
@include common-password
@include common-session

1. Criando caixas postais:

1) Vamos criar as caixas postais:

# maildirmake /home/aluno/Maildir
# maildirmake /home/aluno/Maildir/.Enviadas
# maildirmake /home/aluno/Maildir/.Rascunhos
# maildirmake /home/aluno/Maildir/.lixeira
# maildirmake /home/aluno/Maildir/.Spam

O comando maildirmake faz parte do pacote Courier, veja este site:


http://www.courier-mta.org/maildirmake.html

2) Ajuste as permisses:

# chown aluno. /home/aluno -R

3) Enviando mensagens para caixa postal nova

# echo Mensagem de teste | nail -s Teste -r root@microX.com.br


aluno@microX.com.br
4) Teste do POP3 na porta 110:

# telnet localhost 110

user aluno
pass 123456
list
retr 1
quit

5) Teste do IMAP na porta 143:

# telnet localhost 143

a login aluno 123456


b select inbox
c fetch 1 rfc822.header
d fetch 1 rfc822.text
e logout

Se voc conseguir ler as mensagens, significa que o seu servidor est pronto
para receber e transmitir mensagens.

No esquea de publicar o registro MX no seu DNS, configurar


corretamente o campo TXT e tambm o DNS REVERSO.

1. Criando alias no Postfix

Podemos criar aliases para que um usurio possa receber vrios e-mails
diferentes na mesma conta.
1) Edite o arquivo de alias e crie um para o seu usurio, no formato
usuario_de_alias: usuario_real:

# vi /etc/aliases
emaildeteste: aluno

2) Para validar essas modificaes e gerar o arquivo de hash,


precisamos usar o comando postalias:

# postalias /etc/aliases

3) Verifique se o arquivo aliases.db foi atualizado:

# stat /etc/aliases.db

4) Agora podemos fazer um teste via nail, enviando o e-mail para o


usurio de alias:

# echo Teste de Alias | nail -s Teste de alias -r root@microX.com.br


emaildeteste@microX.com.br

5) Se tudo deu certo, a mensagem destinada ao usurio de alias, vai


ser armazenada no caixa postal do usurio real:

# telnet localhost 110


user aluno
pass 123456
list
retr 2
quit
1. Exerccios tericos

1) Quais so os dois tipos de formato de caixas postais que podemos utilizar?


E qual a diferena entre eles?

_______________________________________________________________________________

_______________________________________________________________________________

2) O protocolo POP3 um protocolo seguro? Explique.

_______________________________________________________________________________

_______________________________________________________________________________

3) Quais so os principais arquivos de configurao do Postfix, e quais so


as suas funes?

_______________________________________________________________________________

_______________________________________________________________________________

4) O que acontece se configurarmos de maneira errada a opo


mynetworks dentro do arquivo main.cf?

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio
1. Faa um teste via telnet no seu servidor e veja se ele responde ao comando
vrfy. Use o comando vrfy aps o comando helo. Exemplo: vrfy usuario.
Use esse comando em usurio vlido e em um usurio invlido.

2. Agora que j viu como o comando vrfy pode ser perigoso, tente desativ-lo.
Dica: man 5 postconf
3. Crie uma lista chamada todos, para que quando algum envie um e-mail para
ela, todos os usurio vlidos do sistema recebam a mensagem.

1.
Web Proxy com Squid
2. Objetivos

Entender como um web proxy trabalha;

Entender ACL's e seus tipos bsicos;

Instalar e configurar o Squid;

Configurar autenticao NCSA;

Configurar um analisador de Log's.

1. Introduo Terica
Neste captulo, iremos observar algumas particularidades do proxy web
Squid, uma soluo Software Livre amplamente utilizada no mercado como
acelerador e filtro de contedo Web. Observaremos tambm, como utilizar algumas
ACL's que podero facilmente ser aplicadas ao que chamamos de "Cenrios
Comuns", aonde teremos alguns sites liberados e alguns sites bloqueados.

Tambm faremos as configuraes necessrias para obrigar os usurios a


autenticar e por ltimo, veremos como gerar relatrios de navegao a partir dos
logs gerados pelo Squid.
2. Funcionamento de um Web Proxy
Imagine que os seus usurios necessitam acessar com frequncia um site de
notcias. A cada requisio, o navegador web resolve o DNS deste site, faz a
requisio ao servidor web encontrado, traz o contedo at o usurio. Agora, imagine
que 300 clientes esto acessando este site. Desperdcio de banda, no acha?

As solues Web Proxy foram desenvolvidas justamente para contornar este


problema. Imagine o mesmo cenrio acima, s que desta vez, ao invs de consultar o
site, o navegador consulta o Web Proxy previamente configurado, e ento, o
servidor proxy faz a consulta ao site, s que, antes de entregar a requisio ao
cliente, o servidor proxy armazena o contedo do site em um diretrio do disco
rgido e, quando um segundo cliente acessar o mesmo site, o servidor proxy
verifica se o contedo est armazenado em cache.

Em caso positivo, o servidor entrega o contedo do cache, acelerando a


navegao e economizando banda. Alm disso, o Web Proxy tambm pode agir
como filtro de contedo, verificando se desejvel que aquele contedo seja
acessvel para aquele usurio, endereo IP ou Mac Address, e ento libera ou nega
o acesso de acordo com o especificado nas ACL's, item que veremos mais adiante.

Um Web Proxy tambm pode ser transparente ou configurado manualmente


pelo usurio ou administrador. Vamos ver as diferenas.

3. Proxy Manualmente Configurado

Em um proxy manualmente configurado, o navegador sabe que necessrio


fazer uma requisio ao servidor proxy, ento, temos uma srie de funes que o
browser pode solicitar, como forar a atualizao do cache, verificar se as
credenciais de autenticao foram fornecidas previamente, ou seja, o cliente sabe
que deve falar com um proxy e far a requisio direto a este. Alm disso, o
servidor, por sua vez, possui o nmero IP do cliente que fez aquela requisio, o que
possibilita criar ACL's especificas e controles de log mais apurados.

A imagem a seguir mostra como funciona um proxy manualmente configurado.


4. Proxy Transparente
Em um proxy transparente, no h necessidade de configurarmos o browser.
O cliente fara sua requisio ao gateway padro daquela rede, e ento, com uma
regra de firewall previamente configurada, o gateway far o redirecionamento
para o proxy, que por sua vez realizar seu trabalho.

A maior vantagem deste modelo que no temos a necessidade de configurar


os browsers manualmente, o que seria justificvel em uma rede onde no temos o
poder de manipular o computador dos usurios (como um provedor de internet, por
exemplo).

Em compensao, perderemos a flexibilidade dos logs e autenticao, j que o


navegador web no sabe que est passando por um proxy, e tambm teremos que
fazer NAT para acessos para sites que utilizam HTTPS, j que o Squid no sabe
lidar com este tipo de contedo quando esta trabalhando de forma transparente.

Abaixo, uma ilustrao simplificada de como esse processo funciona:


5. Access Control Lists
A ACL - Access Control List, como o prprio nome diz, uma maneira de
criar listas de acesso no Squid. Com elas podemos criar uma regra dizendo que a
ACL de nome "MyNetwork" engloba todos os endereos originados em
192.168.200.0/24, ou seja, uma ACL que "casa" com a rede inteira. Tambm
podemos definir uma ACL chamada "SiteDesideratu" que casaria com qualquer
domnio destino no qual constasse .Desideratu.com.br.

ACL'S de origem e destino podem ser cobrados na LPI-II, bem como sua
forma de utilizao.

6. Tipos comuns de ACL's


Basicamente, as ACL's disponveis no Squid para utilizao na maioria dos
casos podem ser agrupadas na seguinte lista:

ACL's de origem

ACL's de destino

ACL's de horrio

Vamos comentar estes trs tipos nas sees seguintes.


1. Sintaxe das ACLS
acl <nome da acl> <tipo da acl> <padro da acl>

2. ACL's de origem
ACL's de origem so utilizadas para controlar todo e qualquer acesso que
tenha como origem um determinado padro.

Essa origem, geralmente um host ou endereo de rede. Pode-se, tambm,


configurar um domnio, mas tenha em mente que neste caso, necessrio que seu
servidor proxy esteja completamente hbil a resolver estes endereos via DNS.

Algumas acl's de origem:

acl MyNetworksrc 192.168.200.0/24


acl gateway src 192.168.200.254

3. ACL's de destino
ACL's de destino so mais comuns e frequentemente utilizadas para criar
padres que casem com determinados endereos de rede, endereos de domnio,
partes de um domnio e tambm por expresses regulares. Vamos dar uma olhada na
sua construo.

Algumas acl's de destino

acl Servers dst 192.168.200.1 192.168.200.2 192.168.200.3


acl Desideratudstdomain .Desideratu.com.br
acl Brasildstdomain .com.br

4. ACL's de horrio
ACL's de horrio so muito teis, quando queremos, por exemplo, permitir
acesso a determinados sites durante um horrio especfico, como na hora do almoo
ou fora do horrio de expediente. Vamos ver uma ACL's que poderamos utilizar
para especificar o horrio de almoo, e outra para especificar o horrio da manh.
acl almoco time 13:00-14:00
acl parte_manha time 08:00-12:59

Esses so os tipos bsicos de ACL's, porm, uma ACL sozinha no faz


absolutamente nada. Durante a prtica dirigida, veremos como tornar as ACL's
teis com configuraes que permitem utiliz-las para bloqueio e liberao de sites,
domnios e horrios.

5. Filtros
Outro recurso interessante para o uso de um proxy o conceito de filtro de
contedo, que possibilita restringir o acesso web dos usurios baseado no nome da
URL, palavras-chave, etc. Para realizar essa configurao, podemos usar os seguintes
filtros:

src Filtro por rede ou endereo IP;

time Filtro por hora e dia da semana;

urlpath_regex filtro de complemento de uma url;

url_regex Filtro de uma string na url;

dstdomain Filtro de uma url;

proxy_auth Filtro por usurios autenticados;

arp - Filtro por MAC Address;

maxconn Filtro por conexes;

proto Filtro por protocolos;

port Filtro por porta.

1. Prtica Dirigida
1) O primeiro passo instalar e confirmar a instalao do Squid:

# aptitude install squid


# dpkg -l squid

Os arquivos e diretrios principais que ele utilizar:


/etc/squid/squid.conf - Arquivo de configurao
/var/log/squid/* - Arquivos de log.
/var/spool/squid - Diretrio que contm o cache.

2) Aps confirmar a instalao do Squid, verifique o contedo dos


diretrios mencionados.

# ls /var/spool/squid
# ls /var/log/squid
# ls /etc/squid

3) O Squid um software bem documentado, e boa parte desta


documentao est em forma de comentrios no arquivo de
configurao. Vamos dar uma olhada nele.

# vim /etc/squid/squid.conf

1. Configuraes Iniciais
A configurao padro do Squid no permite nenhum tipo de navegao, por
medidas de segurana. A primeira coisa que devemos fazer especificar qual rede o
Squid deve aceitar, e tambm devemos especificar uma ACL do tipo origem, que
case com o nosso endereo IP. Vamos fazer isso.

1) Para que o Squid oua apenas uma rede, troque o valor do


parmetro "http_port 3128" para:
http_port 192.168.200.X:3128

2) Outra configurao importante o parmetro visible_hostname.


Este parmetro diz qual ser o hostname que o Squid utilizar
para resolver seu endereo local e tambm o endereo que ser
apresentado nas pginas de informao

# visible_hostname proxy.microX.com.br

Vamos aproveitar que estamos com a mo na massa e vamos configurar alguns


parmetros relativos ao cache.

3) Ajuste do cache em disco: Iremos especificar 512MB de cache, com


128 diretrios e 256 subdiretrios:

cache_dir ufs /var/spool/squid 512 128 256

4) Definindo o cache que ser armazenado em memria:

cache_mem 16 MB

5) Agora, iremos parar o Squid, verificar a sintaxe do arquivo de


configurao, gerar o novo cache e ento reinici-lo.

# invoke-rc.d squid stop


# squid -k parse
# squid -z
# invoke-rc.d squid start

6) Toda vez que voc mudar as ACL's voc deve executar os


comandos:

# squid -k parse
# squid -k reconfigure

Depois destes ajustes iniciais, estamos prontos para criar nossas ACL's e
verificar o funcionamento do Squid com filtro de contedo.

1. Filtrando acessos com Squid


Controlar o que deve ou no deve ser acessvel na internet a partir da rede
interna uma das opes mais interessantes oferecidas pelo Squid. Ento, para
que possamos entender como trabalhar com ACL's, vamos criar o seguinte cenrio:
qualquer host na minha rede deve ser impedido de navegar em qualquer domnio
.com, tendo como nica exceo o site www.amazon.com. Como fazer isso?

O primeiro passo procurar a seo correta para criao de ACL's dentro


do arquivo de configurao do Squid. Procure uma linha semelhante a
esta:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
CLIENTS

1) Agora, depois desta linha, crie uma acl com a rede de origem,
uma acl para domnios .com e uma acl para o domnio
amazon.com:

acl MyNetwork src 192.168.200.0/24


acl International dstdomain .com
acl Amazon dstdomain .amazon.com

E agora, com as ACL's criadas, iremos especificar as polticas de acesso e


bloqueios com o comando http_access.

2) Procure uma string definida assim http_access deny all e


coloque o seguinte contedo, antes desta regra:

http_access allow MyNetwork Amazon


http_access deny MyNetwork International
http_access allow MyNetwork

3) Reinicie o Squid:

# squid -k parse
# squid -k reconfigure

4) Configure seu browser e faa o teste de navegao para os sites:

www.google.com
www.amazon.com

5) Agora, experimente inverter a ordem das regras de acesso:

http_access deny MyNetwork International


http_access allow MyNetwork Amazon
http_access allow MyNetwork

Lembre-se que a ordem das ACL's no importa, porm, o Squid far o


filtro de acordo com a ordem das regras de acesso configuradas por
http_access. Portanto a ordem dos http_access sim importa.
Lembre-se disso quando fizer troubleshooting ou criar novas regras.

1. Blacklist e Whitelist
O conceito de Blacklist e Whitelist muito simples:

Blacklist - Uma lista de palavras que eu quero negar.

Whitelist - Uma lista de domnios que eu quero liberar, mas que casam com a
blacklist.
1) Para exemplificar o uso de blacklists e whitelists, vamos criar
duas ACL's, uma negando o qualquer url que contenha a palavra
linux, e outra liberando os sites www.linux.com e
www.Desideratu.com.br.

No se esquea de limpar as ACL's e os http_access anteriores.

acl blacklist url_regex linux


acl whitelist dstdomain www.linux.com www.Desideratu.com.br

2) Agora edite a acl antiga e crie o http_access:

http_access deny MyNetwork blacklist !whitelist


http_access allow MyNetWork

3) Reinicie o Squid:

# squid -k parse
# squid -k reconfigure

4) Agora, tente acessar os seguintes sites:

www.Desideratu.com.br
www.vivaolinux.com.br
www.linux.com
www.br-linux.org

Para aprender mais, acesse http://www.squid-cache.org e leia a


documentao oficial do projeto Squid.

1. Autenticao NCSA
O Squid possui um mecanismo de autenticao que pode trabalhar de diversas
maneiras, e uma delas, a NCSA, utiliza o mesmo mecanismo de autenticao do
apache. Vamos configurar esse modelo de autenticao e vamos criar uma acl que
exija autenticao tambm.

1) Vamos configurar a autenticao no Squid:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd


auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

1. Linha 1 - configura o autenticador

2. Linha 2 - nmero de processos de autenticao

3. Linha 3 - configura o ttulo da caixa de autenticao

4. Linha 4 - configura o tempo de validade da autenticao

1) Gerando o arquivo de senhas:

# aptitude install apache-utils


# htpasswd -bc /etc/squid/passwd aluno 123456

2) Gerando as ACL's de acesso com senha:

acl MyNetwork src 192.168.200.0/24


acl passwd proxy_auth REQUIRED

3) Configurando o acesso internet mediante senha:

http_access allow MyNetwork passwd

4) Reinicie o Squid

# squid -k parse
# squid -k reconfigure
5) Agora tente acessar qualquer site!

1. Auditoria de acesso com SARG

O SARG - Squid Analysis Report Generator uma ferramenta desenvolvida pelo


brasileiro Pedro Lineu Orso, cujo objetivo analisar o arquivo
/var/squid/log/access.log e gerar um relatrio de acesso baseado no contedo
acessado pelos usurios.

1) Sua instalao bem simples, bastando apenas, no Debian,


executar um aptitude:

# aptitude install sarg

2) Vamos observar seu arquivo de configurao. Fique a vontade e leia


alguns comentrios para entende as funes do SARG.

# vim /etc/squid/sarg.conf

3) Saia do arquivo e execute:

# sarg

4) Agora, acesse o endereo http://localhost/squid-reports e veja o


seu contedo

http://localhost/squid-reports

1. Exerccios Tericos

1) O que fazem as opes "squid -k reconfigure" e "squid -z"

_______________________________________________________________________________

_______________________________________________________________________________
2) Qual o diretrio que contm os arquivos html informativos do Squid?
Como voc faria para mud-los? (Dica: man squid e man squid.conf)

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

3) Crie ACL's e regras de acesso que permitam apenas a navegao a sites


governamentais, ou seja, domnios do tipo .gov e .gov.br.

_______________________________________________________________________________

4) Como remover a opo que mostra a verso do Squid das pginas de


informao?

_______________________________________________________________________________

1. Laboratrio
1. Crie um conjunto de ACL's que casem com sites de contedo indesejado:
www.playboy.com.br, www.youtube.com e qualquer expresso que
contenha as palavras "sex" e "buy".

2. Crie as regras de acesso necessrias para que qualquer pessoa possa navegar a
vontade, exceto em sites de contedo indesejado.
1.
OpenLDAP
2. Objetivos
Implementar e configurar servidor OpenLDAP;

Entendimento dos principais protocolos;

Manipular base de dados, localizao e edio de objetos;

Realizar dump e restaurao da base de dados OpenLDAP;

Integrar Squid com OpenLDAP;

Autenticao de cliente em base do OpenLDAP;

Implementao de ferramenta para manipulao de base OpenLDAP via


browser.

1. Introduo terica
A criao de softwares cada vez mais especficos tem atendido s demandas
negociais do mundo moderno. Entretanto tem causado um ponto crtico de gesto e
segurana: mltiplas bases de usurios e senhas. Gerenciar a autenticao dos
sistemas em bases separadas um desafio constante. O OpenLDAP possibilita que
vrios sistemas compartilhem a base de dados de usurios e senhas de forma
centralizada e integrada.

O projeto OpenLDAP um servio de diretrio, que utiliza o protocolo LDAP, baseado


no protocolo X.500. Ele utiliza o trafego de dados via TCP/IP, podendo ser
implementado em diversas plataformas em redes IPV4 e IPV6, possibilitando
autenticao, mecanismos de segurana no uso de certificados e criptografia,
podendo ser configurado para restringir acesso a socket layer, ter mltiplas
instncias de banco de dados, mltiplas threads, permite replicao e configurao
do servio de acordo com a sua necessidade atravs dos schemas.

A organizao da estrutura de dados do OpenLDAP hierrquica, sendo referenciada


em forma de rvore, com conceito de orientao de objetos.

OpenLDAP constitui-se de:

slapd - Servio OpenLDAP

syncrepl - Servio para replicao e atualizao OpenLDAP

libraries - Bibliotecas para implementao do OpenLDAP, com utilitrios e


ferramentas
1. Prtica dirigida

1) Instalao do OpenLDAP, verifique se o OpenLDAP j est


instalado:

# dpkg -l slapd

2) Instale pacotes do OpenLDAP:

# aptitude install libldap2 ldap-utils slapd

3) Configure as opes do OpenLDAP:

# dpkg-reconfigure slapd

4) Configure quando for solicitado em:

Omitir configurao do servidor OpenLDAP: NO

Informe o nome de domnio DNS para construir a base dn: microX.com.br

Informe nome da organizao: desideratu

Digite senha: 123456

Escolha base de dados: BDB

Remoo da base de dados quando o pacote slapd for expurgado: NO

Mover base antiga de dados em /var/lib/ldap: SIM

Permitir protocolo LDAPv2: SIM (Requirido para integrar o Squid com


OpenLDAP)
1) Verifique se o servio est disponvel para a rede:

# netstat -nltup

2) Visualize a base fsica de dados do OpenLDAP:

# ls /var/lib/ldap/

3) Visualize o arquivo de configurao OpenLDAP no Debian:

# vi /usr/share/slapd/slapd.conf

1 # Este o principal arquivo de configurao do slapd. Veja man


page slapd.conf
2 # para verificar demais configuraes
3

4 ##################################################################
#####
5

6 # Configuraes Globais
7

8 # Autorizar LDAPv2 binds


9 allow bind_v2
10

11 # Definies de Schema e objectClass


12 include/etc/ldap/schema/core.schema
13 include/etc/ldap/schema/cosine.schema
14 include/etc/ldap/schema/nis.schema
15 include/etc/ldap/schema/inetorgperson.schema
16

17 # Local do arquivo onde encontra o nmero do processo slapd.


18 # O script init.d no parar o servidor se voc mudar isto.
19 pidfile/var/run/slapd/slapd.pid
20

21 # Lista de argumentos a serem passados para o servidor


22 argsfile /var/run/slapd/slapd.args
23

24 # Nvel de logs a serem gerados pelo servidor, leia slapd.conf


para maiores
25 # informaes
26 loglevel 0
27

28 # Local onde mdulos dinmicos so armazenados


29 modulepath /usr/lib/ldap
30 moduleload back_bdb
31

32 #Verificao de schema
33 schemacheck on
34

35 # O nmero mximo de entradas que esto retornadas para operao


de busca
36 sizelimit 500
37

38 # Parmetros para configurao de Threads / CPU


39 tool-threads 1
40

41 ##################################################################
#####
42 # Especificao de Diretivas para o bdb
43 # 'backend' directive occurs
44 backend bdb
45 checkpoint 512 30
46

47 ##################################################################
#####
48 # Especificao de Diretivas para outro:
49 # 'backend' directive occurs
50 #backend <other>
51

52 ##################################################################
#####
53 # Especificao de diretivas para banco de dados #1, tipo bdb:
54 # 'database' directive occurs
55 database bdb
56

57 # Definio de sufixo da base


58 suffix "dc=teste,dc=seu-nome,dc=br"
59

60 # rootdn diretiva para especificar um super usurio no banco de


dados.
61 # Isto preciso.
62 # for syncrepl.
63 # rootdn "cn=admin,dc=teste,dc=seu-nome,dc=br"
64

65 # Local onde os arquivos de banco de dados so armazenados


fisicamente #1
66 directory "/var/lib/ldap"
67

68 # Para pacote Debian, no usamos 2MB como default mas tenha


certeza de atualizar
69 # este valor
70 dbconfig set_cachesize 0 2097152 0
71

72 # Verificar informaes de bugs encontrados nestes parmetros


73 # http://bugs.debian.org/303057
74

75 # Nmeros de objetos que podem ser travados no mesmo tempo


76 dbconfig set_lk_max_objects 1500
77 #Nmeros de lockers (ambas requisies e concesses)
78 dbconfig set_lk_max_locks 1500
79 #Nmeros de lockers
80 dbconfig set_lk_max_lockers 1500
81

82 # Opes de indexao #1
83 index objectClass eq
84

85 # Salva o tempo que entradas foram modificadas no banco de dados


86 lastmodon
87

88 # Local onde so replicados os logs do banco de dados


89 # replogfile /var/lib/ldap/replog
90

91 # Parmetros de acesso e permisses


92 access to attrs=userPassword,shadowLastChange
93 by dn="cn=admin,dc=teste,dc=seu-nome,dc=br" write
94 by anonymous auth
95 by self write
96 by * none
97

98 access to dn.base="" by * read


99 by dn="cn=admin,dc=teste,dc=seu-nome,dc=br" write
100 by * read
101

102 #access to dn=".*,ou=Roaming,o=morsnet"


103 # by dn="cn=admin,dc=teste,dc=seu-nome,dc=br" write
104 # by dnattr=owner write
105 # Especificao de diretivas de banco de dados #2, de tipo outro,
pode ser bdb:
106 # 'database' directive occurs
107 #database <other>
108 # Definio de sufixo da base#2
109 #suffix "dc=debian,dc=org"
110
111 ##################################################################
#####

1) Verificao de teste da configurao do arquivo do OpenLDAP:

# slaptest

necessrio criar a nossa base de dados. Para tal utilizaremos o


migrationtools, uma ferramenta para migrao de base de dados escrita
em Perl para o OpenLDAP. Portanto verifique e instale os pacotes
migrationtools e perl.

2) Verifique se tem o pacote perl instalado:

# dpkg -l | grep perl

3) Instale Perl, caso no esteja instalado:

# aptitude install perl

4) Vamos criar um usurio de testes que ser utilizado, no fim desta


atividade, para validar nossas configuraes.

# adduser testeldap

5) Verifique o pacote Migration Tools:

# aptitude search migrationtools

6) Realize a instalao do Migration Tools:

# aptitude install migrationtools


7) Acesse o diretrio /usr/share/migrationtools e copie o arquivo de
configurao:

# cd /usr/share/migrationtools
# cp -av migrate_common.ph migrate_common.ph.original
8) Edite o arquivo migrate_common.ph e altere os campos a seguir:

$DEFAULT_MAIL_DOMAIN="microX.com.br";
$DEFAULT_BASE=dc="microX,dc=com,dc=br";

9) Vamos migrar a base de usurios do sistema (/etc/passwd) para uma


base padro LDIF, para inserir na base LDAP:

# cd /usr/share/migrationtools
# ./migrate_passwd.pl /etc/passwd /etc/ldap/users.ldif

10) Verifique o arquivo /etc/ldap/users.ldif criado e observe o


contedo:

# less /etc/ldap/users.ldif

1 gidNumber: 106
2 homeDirectory: /var/lib/gdm
3 gecos: Gnome Display Manager
4

5 dn: uid=root,ou=People,dc=seu-nome,dc=com,dc=br
6 uid: root
7 cn:: cm9vdA==
8 objectClass: account
9 objectClass: posixAccount
10 objectClass: top
11 objectClass: shadowAccount
12 userPassword: {crypt}$1$dL7nEggA$P6Ib/H9QBkdd/sTcUBW1z1
13 shadowLastChange: 12495
14 shadowMax: 99999
15 shadowWarning: 7
16 loginShell: /bin/bash
17 uidNumber: 0
18 gidNumber: 0
19 homeDirectory: /root
20 gecos: root

1) Agora vamos migrar a base de grupos do sistema (/etc/group) para


uma base padro LDIF, para inserir na base LDAP:

./migrate_group.pl /etc/group /etc/ldap/groups.ldif

2) Verifique os arquivos gerados em /etc/ldap/group.ldif:

# cat /etc/ldap/groups.ldif

3) Criando nossa base ldif:

# ./migrate_base.pl > /etc/ldap/base.ldif

4) Edite o arquivo gerado em /etc/ldap/base.ldif e remova as linhas


de 1 a 10, por default durante a migrao estas linhas foram
criadas, podendo gerar erro durante a importao. Dentro do vim
execute a sequncia ESC:1,10d para apagar as 10 primeiras linhas:

# vim /etc/ldap/base.ldif
ESC:1,10d

5) Adicione o base.ldif na base do OpenLDAP:

# ldapadd -x -D cn=admin,dc=linuxsolutions,dc=com -f
/etc/ldap/base.ldif -W

6) Realize uma busca na sua base de dados OpenLDAP:

ldapsearch -x | more
7) Adicione o group.ldif:

# ldapadd -x -D cn=admin,dc=linuxsolutions,dc=com -f
/etc/ldap/groups.ldif -W

8) Adicione o user.ldif:

# ldapadd -x -D cn=admin,dc=linuxsolutions,dc=com -f
/etc/ldap/users.ldif -W

Voc pode transferir as informaes em formato ldif atravs do slapadd


passando a informao direto para servidor:

# /etc/init.d/slapd stop
# slapadd -l meuarquivo.ldif -f slapd.conf

9) Realizando busca especfica atravs do nome do objeto que consta


na base do OpenLDAP:

# ldapsearch -x -b 'dc=linuxsolutions,dc=com '(cn=cdrom)'

10) Consulta da Base OpenLDAP:

# slapcat | more

1. Configurando um cliente LDAP


Para que os nossos computadores possam autenticar-se como clientes LDAP,
necessrio que modifiquemos uma srie de arquivos do PAM e tambm necessria
a instalao de alguns pacotes.

1) Instalando os pacotes necessrios:

# aptitude install libnss-ldap libpam-ldap


2) Acrescente a opo ldap nas linhas passwd, group e
shadow do arquivo /etc/nsswitch.conf, para que nossa estao
passe a buscar os usurios no LDAP.

# vim /etc/nsswitch.conf
passwd:compat ldap
group: compat ldap
shadow:compat ldap

3) Agora vamos configurar o arquivo /etc/libnss-ldap.conf:

# vim /etc/libnss-ldap.conf

4) Procure as linhas 24, 27, 192 e 193 e configure-as:

base dc=microX,dc=com,dc=br
uri ldap://127.0.0.1/
nss_base_passwd ou=People,dc=microX,dc=com,dc=br?one
nss_base_shadow ou=People,dc=microX,dc=com,dc=br?one

5) Agora vamos configurar as linhas 24, 27 e 168 e 169 do arquivo


/etc/pam_ldap.conf:

base dc=microX,dc=com,dc=br
uri ldap://127.0.0.1/
nss_base_passwd ou=People,dc=microX,dc=com,dc=br?one
nss_base_shadow ou=People,dc=microX,dc=com,dc=br?one

Por ultimo, iremos configurar o PAM para que ele busque os usurios na base
LDAP.

6) Configure o arquivo /etc/pam.d/common-auth:


1 #
2 # /etc/pam.d/common-auth - authentication settings common to all
services
3 #
4 # This file is included from other service-specific PAM config
files,
5 # and should contain a list of the authentication modules that
define
6 # the central authentication scheme for use on the system
7 # traditional Unix authentication mechanisms.
8 #
9 auth sufficient pam_ldap.so
10 auth required pam_unix.so nullok_secure try_first_pass

1) Configure o arquivo /etc/pam.d/common-account:

1 #
2 # /etc/pam.d/common-account - authorization settings common to all
services
3 #
4 # This file is included from other service-specific PAM config
files,
5 # and should contain a list of the authorization modules that
define
6 # the central access policy for use on the system. The default is
to
7 # only deny service to users whose accounts are expired in
/etc/shadow.
8 #
9 account sufficient pam_ldap.so
10 account required pam_unix.so
11 session required pam_mkhomedir.so skel=/etc/skel umask=0077
1) Agora configure o arquivo /etc/pam.d/common-password:

1 #
2 # /etc/pam.d/common-password - password-related modules common to
all services
3 #
4 # This file is included from other service-specific PAM config
files,
5 # and should contain a list of modules that define the services to
be
6 #used to change user passwords. The default is pam_unix
7

8 # The "nullok" option allows users to change an empty password,


else
9 # empty passwords are treated as locked accounts.
10 #
11 # (Add `md5' after the module name to enable MD5 passwords)
12 #
13 # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB'
option in
14 # login.defs. Also the "min" and "max" options enforce the length
of the
15 # new password.
16

17 password sufficient pam_unix.so nullok obscure min=4 max=8 md5


18 password required pam_ldap.so try_first_pass

1) Edite tambm o arquivo /etc/pam.d/common-session:

1 #
2 # /etc/pam.d/common-session - session-related modules common to
all services
3 #
4 # This file is included from other service-specific PAM
configfiles,
5 # and should contain a list of modules that define tasks to be
performed
6 # at the start and end of sessions of *any* kind (both interactive
and
7 # non-interactive). The default is pam_unix.
8 #
9 session sufficient pam_ldap.so
10 session required pam_unix.so

1) Hora de remover o usurio local testeldap para deix-lo apenas na


base Openldap:

# userdel testeldap

2) Uma vez removido do /etc/passwd vamos testar a autenticao do


usurio testeldap abrindo uma outra sesso com o comando:

# ctrl + F2

A autenticao deve ter sido feita corretamente!

1. Acessando o OpenLDAP via browser com PhpLdapAdmin


Vamos acessar a base do OpenLDAP via browser, para tal ser necessrio
instalar o php e dar suporte ao Apache.

1) Instale os pacotes do PHP necessrio para o OpenLDAP:

# aptitude install php-pear php5-ldap

2) Verifique se seu servidor Apache est com suporte a PHP:

# ls -l /etc/apache2/mods-enabled

3) Instalando os pacotes do phpldapadmin:


# aptitude install phpldapadmin

4) Abra o seu browser e digite no campo URL:

127.0.0.1/phpldapadmin/index.php

1. Autenticando o Squid na base de usurios LDAP


No nosso caso, queremos que os usurios do nosso servidor OpenLDAP sejam
autenticados. Para isso, usaremos o programa ldap_auth.

1) Modifique as seguintes linhas no arquivo /etc/squid/squid.conf


para ser feita a autenticao via OpenLDAP:

# vim /etc/squid/squid.conf

Encontre a linha, edite colocando assim:

auth_param basic program /usr/lib/squid/ldap_auth -b


dc=microX,dc=com,dc=br -f uid=%s 192.168.200.X

No esquecer de tirar a outra linha de autenticao usando ncsa.

2) Reinicie o Squid, ajuste seu navegador para usar o proxy e


teste!
1. Exerccio terico

1) Qual a diferena em realizar os comandos ldapsearch -x e slapcat?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

2) O que um schema?

_______________________________________________________________________________

_______________________________________________________________________________

3) Qual o banco de dados utilizados pelo OpenLDAP e onde est


armazenado no sistema?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________
1. Laboratrio

1. Crie um usurio diretamente no LDAP e autentique no Squid.


1. Firewall
2. Objetivos

Entender as tabelas principais do iptables;

Entender as polticas bsicas;

Entender o conceito de excees;

Entender os conceitos de nat e forward;

Configurar um firewall simples.

1. Introduo terica
Os sistemas GNU/Linux com Kernel srie 2.4 e 2.6 trabalham com o Iptables
para fazer o gerenciamento de regras de Firewall. Lembrando que o Iptables
apenas um frontend que gerencia o suporte Netfilter no Kernel. O Iptables
possu 4 tabelas, sendo elas:

filter - Como o nome sugere, trata-se de uma tabela de controle de


contedo dos pacotes.

nat - Esta tabela utilizada no compartilhamento de conexes,


permitindo que redes internas roteiem e possam acessar a Internet,
por exemplo.

mangle - Tabela de configuraes especiais e auxiliares dos mecanismos de


filtro e roteamento de pacotes.

raw - Tabela usada para configurar excees do rastreamento de


conexes do Kernel. Esse mecanismo tambm conhecido como:
connection tracking.

A tabela filter a tabela padro do Iptables.


Cada uma dessas tabelas possu o que chamamos de chains. nelas onde vo
ser definidas as regras para o nosso firewall. A traduo literal seria correntes,
assim cada tabela teria uma corrente, onde cada elo corresponderia a uma regra.

Nesse captulo vamos tratar mais das chains da tabela filter e algo sobre
as chains da tabela nat.

As chains da tabela filter so as seguintes:

Tabela Filter

INPUT - Regras de entrada de pacotes

OUTPUT - Regras de sada de pacotes.

FORWARD - Regras de passagem de pacotes pelo firewall.

As chains da tabela nat so as seguintes:

Tabela Nat

PREROUTING - Regras que sero processadas antes do roteamento


dos pacotes nas interfaces do firewall.

POSTROUTING
- Regras que sero processadas aps o roteamento
dos pacotes nas interfaces do firewall.

OUTPUT - Regras de sada de pacotes.

1. Compreendendo as polticas bsicas e o conceito das excees


A metodologia utilizada para implementao do firewall ser a seguinte:

Iremos negar todo o trfego para as chains de INPUT, OUTPUT e


FORWARD da tabela filter, posteriormente iremos definir a relao dos servios
que devem ser liberados no firewall, a estes, iremos chamar de excees. Todo o
trfego de pacotes que as nossas excees no cobrir ser bloqueado por padro. Em
suma, o que no for oficialmente permitido j est expressa e previamente negado.
Perceba que as chains so descritas em letras maisculas.

Na Desideratu temos dois treinamentos de segurana da informao:


406 Pen Test, testes de vulnerabilidades de redes usando a OSSTTMM
415 Segurana de servidores Linux usando a ISO27002
A Prova do LPI nmero 303 focada em Segurana.
Conceitos e comando bsicos do iptables so cobrados na prova 202.

2. Prtica dirigida
Vamos agora montar o nosso firewall.

1) Verifique como esto configuradas as polticas bsicas que esto


definidas por padro:

# iptables -n -L

2) Modifique as polticas bsicas para DROP ALL:

# iptables -P INPUT DROP


# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP

3) Verifique se a nova poltica foi assumida:

# iptables -n -L

Agora que percebemos que temos um firewall ativo, devemos pensar nas
demais polticas, uma vez que, por mais seguro que seja a poltica de negar tudo, no
prtico manter nosso computador assim. Ele precisar se comunicar com outros
computadores e para que isso seja possvel precisamos definir polticas de excees.

4) Realize o teste usando o comando ping na sua interface


loopback:

# ping 127.0.0.1

5) O teste anterior nos permitiu verificar que devemos definir uma


poltica de exceo para a interface loopback. Criaremos uma
poltica que possibilite isso:

# iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT


# iptables -A INPUT -d 127.0.0.1 -j ACCEPT
6) Liste as polticas ativas:

# iptables -n -L

7) Vejamos se agora conseguimos fazer um ping na interface de


loopback:

# ping 127.0.0.1

8) Execute o comando ping, tendo como alvo o endereo da mquina


do instrutor para verificar se alguma comunicao possvel:

# ping 192.168.200.254

9) Agora criaremos uma poltica que permita que seja executado o


comando ping a partir de sua mquina com a sua interface de
rede interna, mas sua mquina no ir responder a ping:

# iptables -A OUTPUT -p icmp --icmp-type 8 -s 192.168.200.X -d 0/0 -j


ACCEPT
# iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d 192.168.200.X -j
ACCEPT

10) Verifique se as regras foram adicionadas:

# iptables -n -L

11) Podemos ver se conseguimos fazer um ping na mquina do


instrutor:

# ping 192.168.200.254
12) Agora que j temos uma poltica de exceo, tente fazer um
ping no domnio www.uol.com.br:

# ping www.uol.com.br

13) Apesar de conseguirmos usar o ping nos endereos IP's,


ainda no conseguimos fazer um ping por nomes. Vamos
desenvolver a regra que faa isso:

# iptables -A OUTPUT -p udp -s 192.168.200.X --sport 1024:65535 -d 0/0


--dport 53 -j ACCEPT
# iptables -A INPUT -p udp -s 0/0 --sport 53 -d 192.168.200.X --dport
1024:65535 -j ACCEPT

14) Verifique se as regras foram adicionadas:

# iptables -n -L

15) Com as regras definidas, podemos fazer um ping por nomes:

# ping www.uol.com.br

Mesmo que liberamos o nosso firewall para resolver os nomes, ainda no


conseguimos acessar um servidor Web por ele, pois precisamos liberar o
acesso as portas 80 e 443.

16) Criaremos uma regra de exceo que permita navegao web:

# iptables -A OUTPUT -p tcp -s 192.168.200.X --sport 1024:65535 -d 0/0


--dport 80 -j ACCEPT

# iptables -A OUTPUT -p tcp -s 192.168.200.X --sport 1024:65535 -d 0/0


--dport 443 -j ACCEPT

# iptables -A INPUT -p tcp -s 0/0 --sport 80 -d 192.168.200.X --dport


1024:65535 -j ACCEPT

# iptables -A INPUT -p tcp -s 0/0 --sport 443 -d 192.168.200.X --dport


1024:65535 -j ACCEPT

17) Faamos um teste para ver se conseguimos traar rotas


usando a ferramenta mtr:

# mtr 200.176.2.11

18) O mtr utiliza respostas icmp do tipo 11, ento precisamos


criar uma regra liberando a entrada desse tipo de pacote:

# iptables -A INPUT -p icmp --icmp-type 11 -s 0/0 -j ACCEPT

19) Verifique se a regra foi adicionada:

# iptables -n -L

20) Execute o comando mtr para testar a regra criada:

# mtr 200.17.2.11

1. Firewall como gateway de rede

Se o nosso servidor , por exemplo, um firewall de fronteira entre a sua rede


e a internet, ou seja, um gateway de rede, devemos estabelecer uma poltica que
faa o repasse dos pacotes de uma rede para a outra, para permitir o repasse
(forward) de pacotes entre uma rede e outra.
1) A primeira coisa que precisamos fazer liberar o repasse de
pacotes entre as interfaces de rede, no kernel:

# sysctl -a | grep ip_forward


# sysctl -w net.ipv4.ip_forward=1

Para deixar esse valor fixo, devemos deixar esse parmetro dentro de
/etc/sysctl.conf
# vim /etc/sysctl.conf
net.ipv4.ip_forward=1

2) Agora precisamos permitir no iptables que nossa rede se


comunique com outras. Devemos fazer isso acrescentando regras na
chain FORWARD:

# iptables -A FORWARD -s 192.168.200.0/24 -j ACCEPT


# iptables -A FORWARD -d 192.168.200.0/24 -j ACCEPT

No podemos esquecer que a internet trabalha com IP's reservados, diferente


da nossa rede. Por isso teremos que fazer a traduo do endereamento invlido (da
LAN) para o vlido (da internet), atravs da especificao da tabela NAT, fazendo o
mascaramento.

3) Vamos fazer com que nossa LAN seja mascarada:

# iptables -t nat -A POSTROUTING -o ethX -s 192.168.200.0/24 -j


MASQUERADE

A interface ethX a que est com o IP vlido.

4) Verifique como esto as regras inseridas:

# iptables -n -L
# iptables -n -L -t nat

5) Para no perdermos essas regras, podemos salv-las utilizando


recursos do iptables, lembrando que isso no ainda um script
profissional:

# iptables-save > /root/firew


# cat firewall.back

6) Agora podemos fazer um teste e limpar todas as regras adicionadas


na memria:

# iptables -F
# iptables -F -t nat

7) Verifique se as regras foram apagadas:

# iptables -n -L
# iptables -n -L -t nat

8) Modifique as polticas bsicas para ACCEPT:

# iptables -P INPUT ACCEPT


# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
1. Script de firewall

Todas as regras que foram feitas, ficam na memria do computador, se ele for
reiniciado, perderemos todas elas. Podemos utilizar o iptables-save, mas ele no
um script profissional.

Segue aqui um script com todas as regras que foram feitas, em seguida esse
script pode ser adicionado aos nveis de execuo do sistema, para ser carregado
sempre a mquina for ligada.

Vamos chamar nosso script de firewall.sh:

# cd /etc/init.d
# vim firewall.sh

1 #!/bin/bash
2 # Firewall personalizado - Curso 452 - Desideratu
3

4 ## Definio de variveis
5

6 IPT=$(which iptables)
7 ET0="192.168.200.X"
8 NET="0/0"
9 PA=1024:65535
10 REDE="192.168.200.0/24"
11

12 ## Fechando as Polticas
13 $IPT -P INPUT DROP
14

15 $IPT -P OUTPUT DROP


16
17 $IPT -P FORWARD DROP
18

19 ## Liberando LoopBack
20

21 $IPT -A OUTPUT -d 127.0.0.1 -j ACCEPT


22

23 $IPT -A INPUT -d 127.0.0.1 -j ACCEPT


24

25 ## Liberando Ping (Sada de icmp 8 e Entrada de icmp 0)


26

27 $IPT -A OUTPUT -p icmp --icmp-type 8 -s $ET0 -d $NET -j ACCEPT


28

29 $IPT -A INPUT -p icmp --icmp-type 0 -s $NET -d $ET0 -j ACCEPT


30

31 ## Liberando resoluo de nomes


32

33 $IPT -A OUTPUT -p udp -s $ET0 --sport $PA -d $NET --dport 53 -j


ACCEPT
34

35 $IPT -A INPUT -p udp -s $NET --sport 53 -d $ET0 --dport $PA -j


ACCEPT
36

37 ## Liberando navegao web


38

39 $IPT -A OUTPUT -p tcp -s $ET0 --sport $PA -d $NET --dport 80 -j


ACCEPT
40 $IPT -A OUTPUT -p tcp -s $ET0 --sport $PA -d $NET --dport 443 -j
ACCEPT
41

42 $IPT -A INPUT -p tcp -s $NET --sport 80 -d $ET0 --dport $PA -j


ACCEPT
43 $IPT -A INPUT -p tcp -s $NET --sport 443 -d $ET0 --dport $PA -j
ACCEPT
44
45 ## Liberando consultas mtr
46

47 $IPT -A INPUT -p icmp --icmp-type 11 -s $ET0 -j ACCEPT


48

49 ## Regras de FORWARD e NAT para liberar a LAN para acessar a


internet.
50

51 sysctl -w net.ipv4.ip_forward=1
52

53 $IPT -A FORWARD -s $REDE -j ACCEPT


54

55 $IPT -A FORWARD -d $REDE -j ACCEPT


56

57 $IPT -t nat -A POSTROUTING -o ethX -s $REDE -j MASQUERADE

Agora podemos configurar as permisses de execuo para o script:


# chmod 755 firewall.sh
# ls -l firewall.sh

Para que ele seja iniciado junto com sistema quando a mquina for ligada,
podemos colocar o script nos nveis de execuo:

# update-rc.d firewall.sh defaults


# ls -l /etc/rc2.d
1. Exerccios tericos

1) Quantas tabelas o iptables possu e qual delas a padro?

_______________________________________________________________________________

2) Qual tabela responsvel por fazer o mascaramento de IP's invlidos?

_______________________________________________________________________________

3) Quais seriam as regras para liberar que outras mquinas consigam


conectar na porta 22 do seu servidor?

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

_______________________________________________________________________________

4) Consulte o manual do iptables e responda qual mdulo necessrio para


limitar a quantidade de pacotes icmp que sua mquina pode receber, e
como devo us-lo.

_______________________________________________________________________________

_______________________________________________________________________________

1. Laboratrio

1. Imaginem que o seu servidor tem 2 IP's, um vlido e outro invlido. Crie uma
regra que redirecione todos os pacotes que chegarem na porta 25 do IP vlido
para uma mquina da rede que tenha IP invlido na porta 25. Dica: man
iptables.

1.
OpenVPN
2. Objetivos

Entender como funciona uma VPN;

Configurar uma VPN host to host.


1. Introduo Terica
VPN - Virtual Private Network, uma rede de comunicao particular,
geralmente utilizando canais de comunicao inseguros, como a LAN ou mesmo a
Internet. O que torna esta rede de comunicao particular o fato das ferramentas
de VPN empregarem mtodos e protocolos de criptografia, criando um tnel para
prover acesso seguro a partes da rede ou mesmo ligao entre LAN's
geograficamente separadas, eliminando a necessidade de um canal de comunicao
privativo de alto custo fornecido pela operadora de telecomunicaes.

Tambm podemos utilizar uma ferramenta de VPN para implementar ou


reforar a segurana de acesso h algum servio dentro de nossa rede.

Voc possui um software de gerao de notas fiscais, e os funcionrios acessam


este terminal via telnet, que um protocolo que no implementa criptografia. Para
corrigir esta situao e reforar a segurana deste ambiente, voc poderia configurar
uma VPN entre o computador dos usurios e o servidor, melhorando assim a
segurana deste servio. Neste laboratrio, iremos configurar uma VPN
host-to-host.

2. Prtica Dirigida
Ns trabalharemos neste laboratrio com um par de chaves simtricas, ou seja,
usaremos a mesma chave tanto para o servidor VPN quanto para o cliente VPN,
logo, a chave deve ser gerada no servidor e replicada para o cliente via SSH.

3. Configurando o servidor

1) O primeiro passo instalar o software OpenVPN:

# aptitude install openvpn

Vamos entrar no diretrio /etc/openvpn e gerar a chave:

# cd /etc/openvpn
# openvpn --genkey --secret /etc/openvpn/chave
2) Vamos gerar o arquivo de configurao do servidor:

# vim /etc/openvpn/server.conf

1 #Configurao para servidor


2 dev tun
3 # Server -> 172.16.0.1
4 # Client -> 172.16.0.2
5 #Definindo os IP's da VPN
6 ifconfig 172.16.0.1 172.16.0.2
7 #Definido a chave
8 secret /etc/openvpn/chave
9 # Definindo a porta
10 port 5000
11 comp-lzo
12 verb 4

1. Configurando o cliente

1) Tambm necessrio ter o OpenVPN no cliente:

# aptitude install openvpn

2) Vamos entrar no diretrio /etc/openvpn e copiar a chave do


servidor.

# cd /etc/openvpn
# scp 192.168.200.X:/etc/openvpn/chave .
3) Vamos gerar o arquivo de configurao do cliente:

# vim /etc/openvpn/client.conf

1 #Configurao para cliente


2 dev tun
3 # Server -> 172.16.0.1
4 # Client -> 172.16.0.2
5 #Definindo os IP's da VPN
6 ifconfig 172.16.0.2 172.16.0.1
7 #Definindo o IP real do servidor
8 remote 192.168.200.X
9 #Definido a chave
10 secret /etc/openvpn/chave
11 # Definindo a porta
12 port 5000
13 comp-lzo
14 verb 4

1) Iniciando a VPN, tanto no servidor quanto no cliente.

# openvpn --config /etc/openvpn/server.conf


# openvpn --config /etc/openvpn/client.conf

2) Execute um ifconfig para ver se a interface tun0 foi criada:

# ifconfig -a

3) Execute um ping na sua interface VPN:

# ping 172.16.0.X
4) Execute um ping na interface do seu colega:

# ping 172.16.0.X

Efetue testes em todos os servios utilizando o IP da VPN.


1. REFERNCIAS
BIBLIOGRFICAS
JULIO CESAR NEVES. Programao em Shell Linux. 6. edio. Brasport.
2006

The Linux documentation Project, website: http://www.tldp.org.


Acesso em 28 de maro de 2008.

Pritchard, Pessanha, Langfeldt, Stranger and Dean. Certificao


Linux LPI 2. edio. AltaBooks. 2007

Gagn, Moving to Linux.


1 edio, Addilson Wesley

Rubem E. Ferreira, Guia de Administrao Linux.


2 edio, Novatec, 2008

Nelson Mendona e Tiago Vilas Boas. GNU Linux.


Editora Brasport.