Sie sind auf Seite 1von 311

Linux Servers Revolutions

www.linuxforce.com.br

Contedo
1 Cenrio e Propostas de Soluo
1.0.1

Cenrio normalmente encontrado nas empresas . . . . . . . . .

1.0.2 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Implementando Hardening e PAM em seu Servidor GNU/Linux

2.0.3 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.0.4 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . .

2.0.5 Introduo terica Ajustes iniciais . . . . . . . . . . . . . . . .

2.0.6 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.0.7 Configurando a resoluo de nomes . . . . . . . . . . . . . . . .

2.0.8 Configurao do Hostname . . . . . . . . . . . . . . . . . . . . .

2.0.9 Configurando o repositrio de rede . . . . . . . . . . . . . . . . .

2.0.10 Introduo terica - Hardening . . . . . . . . . . . . . . . . . . . 11


2.0.11 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.0.12 Configurando o SUDO . . . . . . . . . . . . . . . . . . . . . . . . 11
2.0.13 Introduo terica - PAM . . . . . . . . . . . . . . . . . . . . . . 18
2.0.14 Mdulos do PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.0.15 Controles do PAM . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Servidor DHCP

31

3.0.16 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.0.17 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.0.18 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.0.19 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.0.20 Fixar IP via DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Linux Force

Contedo

4 Servidor NFS

42

4.1 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4 Conhecendo o NAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5 NAS versus SAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.6 E o DAS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.7 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.7.1 Configurando o Servidor . . . . . . . . . . . . . . . . . . . . . . . 48
4.7.2 Configurando o Cliente . . . . . . . . . . . . . . . . . . . . . . . 52
5 Implementando RAID + LVM

56

5.0.3 Introduo Terica - RAID . . . . . . . . . . . . . . . . . . . . . . 56


5.0.4 Introduo Terica LVM . . . . . . . . . . . . . . . . . . . . . . 65
5.0.5 Laboratrio RAID

. . . . . . . . . . . . . . . . . . . . . . . . . 67

6 Servidor Samba

84

6.0.6 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.0.7 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.0.8 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.0.9 subsection name . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7 Servidor DNS

107

7.0.10 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 107


7.0.11 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.0.12 Resoluo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.0.13 O

arquivo

"/etc/hosts
113

7.0.14 Ferramentas de consulta . . . . . . . . . . . . . . . . . . . . . . 115


7.0.15 Prtica dirigida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.0.16 Introduo ao BIND + Laboratrio . . . . . . . . . . . . . . . . . 119
7.0.17 BIND como servidor cache . . . . . . . . . . . . . . . . . . . . . 122
7.0.18 Restringindo consultas

. . . . . . . . . . . . . . . . . . . . . . . 124

7.0.19 Configurao do DNS primrio . . . . . . . . . . . . . . . . . . . 129


7.0.20 Configurando o DNS reverso . . . . . . . . . . . . . . . . . . . . 136
7.0.21 Configurando o DNS secundrio . . . . . . . . . . . . . . . . . . 138

Linux Servers Revolutions

Pgina ii

Linux Force

Contedo

7.0.22 Configurando o DNS Secundrio . . . . . . . . . . . . . . . . . . 141


7.0.23 Desativar recurso externa . . . . . . . . . . . . . . . . . . . . . 142
7.0.24 SPF - Sender Policy Framework . . . . . . . . . . . . . . . . . . 143
8 Servidor Apache

146

8.0.25 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 146


8.0.26 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 147
8.0.27 MPM PreFork e MPM Worker

. . . . . . . . . . . . . . . . . . . 147

8.0.28 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148


8.0.29 Conhecendo a estrutura do Apache . . . . . . . . . . . . . . . . 150
8.0.30 Suporte a PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
8.0.31 Arrumando os diretrios . . . . . . . . . . . . . . . . . . . . . . . 155
8.0.32 Configurando o php.ini . . . . . . . . . . . . . . . . . . . . . . . 159
8.0.33 VirtualHost? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.0.34 Criando Virtualhost para nossos domnios . . . . . . . . . . . . . 159
8.0.35 Fechando brechas de segurana . . . . . . . . . . . . . . . . . . 161
8.0.36 Configurando o Moodle . . . . . . . . . . . . . . . . . . . . . . . 163
8.0.37 Disponibilizando o site da Dexter Courier . . . . . . . . . . . . . 176
8.0.38 Ativando o SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9 Servidor FTP

184

9.0.39 Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184


9.0.40 Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.0.41 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.0.42 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.0.43 Comandos em modo texto do FTP . . . . . . . . . . . . . . . . . 192
9.0.44 Cliente grfico para FTP . . . . . . . . . . . . . . . . . . . . . . . 193
10 Servidor Postfix

195

10.0.45Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.0.46Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.0.47Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10.0.48Introduo ao Postfix

. . . . . . . . . . . . . . . . . . . . . . . . 196

10.0.49Caractersticas do Postfix . . . . . . . . . . . . . . . . . . . . . . 197


10.0.50Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Linux Servers Revolutions

Pgina iii

Linux Force

Contedo

11 Servidor OpenLDAP

229

11.0.51Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.0.52Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.0.53Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11.0.54Backup da base de dados
12 Servidor Proxy com Squid

. . . . . . . . . . . . . . . . . . . . . 242
245

12.0.55Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.0.56Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.0.57Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.0.58Proxy Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
12.0.59Proxy Transparente . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.0.60ACL - Access Control Lists . . . . . . . . . . . . . . . . . . . . . 248
12.0.61Definindo ACL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
12.0.62Tipos de ACL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
12.0.63Regras das ACLs

. . . . . . . . . . . . . . . . . . . . . . . . . . 252

12.0.64Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
12.0.65Criando a estrutura do Squid . . . . . . . . . . . . . . . . . . . . 256
12.0.66Filtrando acessos com Squid . . . . . . . . . . . . . . . . . . . . 256
12.0.67Blacklist e Whitelist . . . . . . . . . . . . . . . . . . . . . . . . . . 261
12.0.68Autenticao NCSA . . . . . . . . . . . . . . . . . . . . . . . . . 262
12.0.69Auditoria de acesso com SARG . . . . . . . . . . . . . . . . . . 265
12.0.70Autenticao via OpenLDAP . . . . . . . . . . . . . . . . . . . . 268
13 Firewall

270

13.0.71Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
13.0.72Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 270
13.0.73Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . 270
13.0.74Revisando os conceitos de Rede . . . . . . . . . . . . . . . . . . 271
13.0.75TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.0.76Tabelas do Iptables
13.0.77O que uma chain?

. . . . . . . . . . . . . . . . . . . . . . . . . 276
. . . . . . . . . . . . . . . . . . . . . . . . 276

13.0.78Compreendendo as polticas bsicas e o conceito das excees 277


13.0.79Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
13.0.80Script de firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Linux Servers Revolutions

Pgina iv

Linux Force

Contedo

14 Servidor OpenVPN

286

14.0.81Cenrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.0.82Proposta de soluo . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.0.83Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.0.84Protocolos de tunelamento . . . . . . . . . . . . . . . . . . . . . 288
14.0.85Arquitetura de VPNs

. . . . . . . . . . . . . . . . . . . . . . . . 289

14.0.86Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.0.87Configurando o servidor . . . . . . . . . . . . . . . . . . . . . . . 291
14.0.88Configurando o cliente . . . . . . . . . . . . . . . . . . . . . . . . 292
14.0.89Certificados vpn . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
14.0.90TLS-Auth HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
14.0.91Gerando certificado CA e chave RSA . . . . . . . . . . . . . . . 297
14.0.92Gerando parmetros Diffie-Hellman . . . . . . . . . . . . . . . . 299
14.0.93Configurando o servidor OpenVPN
15 Referncias Bibliogrficas

Linux Servers Revolutions

. . . . . . . . . . . . . . . . 299
303

Pgina v

Captulo 1
Cenrio e Propostas de Soluo
1.0.1 Cenrio normalmente encontrado nas empresas
Todos sabemos que a rea de TI (Tecnologia da Informao) de algumas empresas
seu calcanhar de Aquiles, pois a forma que os servidores foram implementados
acabam prejudicando a produtividade diria e pondo em risco aos dados da empresa. Sabemos tambm que o uso de software proprietrio sem licenciamento
uma realidade em nosso pas, tornando a ilegalidade algo comum e corriqueiro.
Mas o que muitos no sabem (ou no aceitam!) que podemos implementar o
mesmo ambiente usando software livre, sem custo de propriedade ou licenciamento,
alm de ser muito superior em estabilidade, desempenho e produtividade! Estamos
falando de usar GNU/Linux como Sistema Operacional e suas diversas ferramentas
servidoras, como web, e-mail, banco de dados, storage, autenticao de usurios,
redundncia, entre outros.

1.0.2 Cenrio
O ambiente comumente utilizado nas pequenas e mdias empresas composto por
software proprietrio, onde se tem firewall/proxy, servidor de arquivos, e-mail, intranet

Linux Force

Cenrio e Propostas de Soluo

e banco de dados. Podemos observar isto na prxima figura.

Partindo deste cenrio, iremos migrar a maioria das tecnologias para a plataforma
livre, conforme exemplificado na prxima figura.

Linux Servers Revolutions

Pgina 2

Linux Force

Cenrio e Propostas de Soluo

Alm das tecnologias exibidas na figura acima, podemos ainda implementar redundncia de discos com RAID, gerenciamento de unidades com o LVM, segurana de
acesso ao servidor com o uso do PAM, integrao da rede Linux com algumas mquinas Windows por meio do Samba, alm de outros servios como FTP, DHCP, DNS
e VPN.
A cada dia de Curso iremos ensinar tais servios, mostrando como seria o dia a dia
de uma empresa e conseguiremos verificar como a produtividade, desempenho e
confiabilidade se tornaro algo comum na vida do administrador! Na prxima pgina
voc tem um espao para realizar suas anotaes, como os Ips das mquinas!
Coloque os endereos Ips que ir utilizar durante o curso

eth0 => IP 177.23.24. ___

eth1 = > IP 192.168. ___ .1

2
3

IP 192.168. ___ .2

IP 192.168. ___ .4

Linux Servers Revolutions

Pgina 3

Linux Force

Cenrio e Propostas de Soluo

IP 192.168. ___ .3

IP 192.168. ___ .2

IP 192.168. ___ .4

IP 192.168. ___ .3

6
7

Linux Servers Revolutions

Pgina 4

Captulo 2
Implementando Hardening e PAM em
seu Servidor GNU/Linux

2.0.3 Cenrio

A empresa DEXTER COURIER precisa que seu servidor seja configurado com as
devidas polticas de segurana, permitindo acesso local e remoto somente equipe
de TI em horrios previamente definidos. Alm disto, necessrio ter todos os registros de login/logout, bem como as atividades realizadas nos servidores.

2.0.4 Proposta de soluo

A fim de atender s necessidades da empresa DEXTER COURIER , iremos aplicar


os processos de HARDENING no servidor. Alm de verificar as possveis ameaas
de segurana e corrigi-las, faremos uso do PAM, que um mecanismo de autenticao a diversas aplicaes, tornando o servidor bem mais seguro com esta camada
de proteo.

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

2.0.5 Introduo terica Ajustes iniciais

Sempre que finalizamos a instalao de um servidor, temos que efetuar alguns ajustes iniciais para que os servios disponibilizados por ele seja acessvel por todos os
usurios da rede que possuam permisso. Com isso temos todo o trabalho de fechar
possvel brechas de segurana, como portas abertas, banner do aplicativo ou mesmo
algum bug na aplicao. Vamos efetuar os primeiros passos, como configurar um IP
fixo, resoluo de Nomes-IPs, Hostname, arquivo Hosts e o(s) repositrio(s).

2.0.6 Laboratrio

Como todo servidor deve ter um IP fixo na rede, vamos efetuar esta configurao no
arquivo /etc/network/interfaces. Para isto, execute num terminal como root e
adicione o que est em negrito:

root@debian :~ # vi / etc / network / interfaces

# Interface Loopback

auto lo

iface lo inet loopback

4
5

auto eth0

iface eth0 inet static

address

192.168. X .2

netmask

255.255.255.0

network

192.168. X .0

10

broadcast 192.168. X .255

11

gateway

192.168. X .1

Linux Servers Revolutions

Pgina 6

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Na distro RedHat: # vim /etc/sysconfig/network/ifcfg-eth0

2.0.7 Configurando a resoluo de nomes


Edite o arquivo /etc/resolv.conf para colocarmos o endereo do servidor DNS que
ir resolver Nome-IP:

1
2

root@debian :~ # vi
nameserver

/ etc / resolv . conf

8.8.8.8

2.0.8 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 e
adicione o nome da mquina:

root@debian :~ #

vi

/ etc / hostname datacenter

Depois vamos parar e iniciar o servio do hostname:

root@debian :~ #

/ etc / init . d / hostname . sh

Faa o logout e efetue o login. Cair no prompt j alterado!

root@datacenter :~ #

Linux Servers Revolutions

Pgina 7

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Edite o arquivo de /etc/hosts e adicione a linha em negrito:

root@datacenter :~ # vi / etc / hosts

127.0.0.1

192.168. X .2

localhost
datacenter . dexter . com . br

datacenter

2.0.9 Configurando o repositrio de rede


Para instalar programas no Debian GNU/Linux, necessrio que o repositrio de
rede esteja corretamente configurado. Abra o arquivo responsvel pela configurao
do repositrio:

1
2

root@datacenter :~ # vi / etc / apt / sources . list


deb http :// ftp . debian . org / debian

squeeze

main

contrib

non - free

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

root@datacenter :~ # aptitude update

Vamos agora efetuar a atualizao do servidor com o comando:

root@datacenter :~ # aptitude upgrade

Ok! Com o servidor atualizado, vamos agora instalar os programas necessrios para
o andamento do curso:

root@datacenter :~ # aptitude install build - essential


module - assistant less vim splitvt linux - headers - $ ( uname -r ) -y

Linux Servers Revolutions

Pgina 8

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Agora vamos configurar o editor de textos VIM, habilitando linhas numeradas, destaque de busca no texto, ignorar o case e deixar o texto colorido, facilitando a leitura da
configurao. Insira no final do arquivo:

root@datacenter :~ # vim / etc / vim / vimrc

syntax on

set number

set hlsearch

set incsearch

set ic

Visto que o VIM no o editor padro do sistema, vamos configur-lo:

1
2

root@datacenter :~ # update - alternatives -- config editor


Existem 3 escolhas para a alternativa editor ( disponibiliza
/ usr / bin / editor ) .

3
4

Selec o

Caminho

Prioridade Estado

--------- ----- ------ ----- ------ ------ ----- ------ ----- ------ -

/ bin / nano

40

modo autom tico

/ bin / nano

40

modo manual

* 2

/ usr / bin / vim . basic

30

modo manual

/ usr / bin / vim . tiny

10

modo manual

9
10

Pressione enter para manter a escolha actual [*] , ou digite o n mero


da selec o : 2

Vamos ajustar algumas variveis do sistema e alguns alias dentro do arquivo


/etc/profile. Abra o arquivo e insira no final:

root@datacenter :~ # vim / etc / profile

HISTSIZE =5000

export HISTSIZE

# TMOUT =120

# vari vel que efetua " logout " ap s 120 segundos

Linux Servers Revolutions

Pgina 9

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

# export TMOUT

alias ls = ls -- color = auto

alias grep = grep -i -- color

Caso deseje adicionar mais variveis ou alias, fique vontade! Concluda esta etapa,
vamos reler o arquivo para que as alteraes sejam validadas:

root@datacenter :~ # source / etc / profile

A fim de ajudar na instalao de programas via aptitude ou apt-get, podemos usar a


funo de autocompletar (usando o TAB) na busca por programas nos repositrios.
Primeiro instale o aplicativo e depois abra o arquivo /etc/bash.bashrc e descomente
apenas as linhas 32, 33 e 34:

root@datacenter :~ # aptitude install bash - completion

root@datacenter :~ # vim / etc / bash . bashrc

32 if [ -f / etc / bash_completion ] && ! shopt - oq posix ; then

33

34 fi

. / etc / bash_completion

Agora vamos reler o arquivo para validar as alteraes:

root@datacenter :~ # source / etc / bash . bashrc

Teste agora a busca digitando os primeiros caracteres do programa aps inserir o


aptitude install e tentando completar com o TAB.

Linux Servers Revolutions

Pgina 10

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

2.0.10 Introduo terica - Hardening


Hardening um processo de mapeamento das ameaas, mitigao dos riscos e
execuo das atividades corretivas - com foco na infraestrutura e objetivo principal
de 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.
Podemos incluir nessa lista de procedimentos limitar o software instalado quele que
se destina a funo desejada do sistema; aplicar e manter os patches de segurana
tanto no sistema operacional como na aplicao; 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.

Procedimentos de Ps Instalao (Hardening) sero discutidos no treinamento


de Segurana ISO27002.

2.0.11 Laboratrio

2.0.12 Configurando o SUDO


O comando sudo permite a usurios comuns obter privilgios de outro usurio, em
geral o super usurio, para executar tarefas especficas dentro do sistema de maneira
segura e controlvel pelo administrador. O nome uma forma abreviada de se referir
a substitute user do (fazer substituindo usurio) ou super user do (fazer como super
usurio).
Observaes importantes :
A senha armazenada por 15 minutos. Depois disso, voc ter de digitar a

Linux Servers Revolutions

Pgina 11

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

senha novamente.
Sua senha no ser mostrada na tela enquanto voc a digita no terminal, apenas ser mostrada com asteriscos quando voc digit-la pela interface grfica.
Para executar usando sudo um programa que normalmente executado como
de usurio, como o gedit, aperte ALT + F2 e digite gksudo gedit, para o Gnome.
Para usurios do KDE, use kdesu no lugar de gksudo.
Vamos instalar o sudo com o comando:

root@datacenter :~ # aptitude install sudo

O arquivo de configurao do sudo o /etc/sudoers. Abra-o usando:

root@datacenter :~ # visudo

Insira o usurio infra na linha 18, conforme em negrito:

16 # User privilege specification

17 root

ALL =( ALL ) ALL

18 infra

ALL =( ALL ) ALL

Com esta configurao demos total poder para o usurio infra, visto que iremos
bloquear o acesso de root posteriormente. Para melhorar a segurana do sistema
com o uso do sudo, em caso de esquecer o terminal aberto como usurio infra,
podemos configurar o sudo para sempre pedir a senha ao se digitar um comando.
Para isto, adicione no final do arquivo:

26 Defaults : infra timestamp_timeout =0

Linux Servers Revolutions

Pgina 12

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Configurando o SSH

Servio amplamente utilizado pelos administradores de servidores GNU/Linux, o ssh


(Secure Shell) tambm visado pelos atacantes que tentam acessar o sistema via
usurio root (administrador), pois sabido que todo GNU/Linux possui! Sendo assim,
vamos efetuar duas modificaes importantes no sistema: negar o acesso de root e
mudar a porta padro!
Primeiramente vamos instalar o servidor ssh:

root@datacenter :/ tmp # aptitude install ssh

Como todos sabem, o usurio root sempre acessa o sistema. Veja:

root@datacenter :~ # ssh localhost

2
3

root@localhost s password :

Agora, abra o arquivo /etc/ssh/sshd_config e altere as linhas 5, 25 e 26 conforme


em negrito:

4 # What ports , IPs and protocols we listen for

2
3

5 Port 51000

...

25 LoginGraceTime 15

26 PermitRootLogin no

Respectivamente alteramos a porta padro 22 para a 51000, mudamos o tempo


mximo para digitar a senha para apenas 15 segundos e negamos o login com o
usurio root! Para as novas regras entrarem em vigor, reinicie o servio do ssh.

Linux Servers Revolutions

Pgina 13

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

root@datacenter :~ # service ssh restart

Vamos aos testes?

root@datacenter :~ # ssh root@localhost

ssh : connect to host localhost port 22: Connection refused

root@datacenter :~ #

root@datacenter :~ # ssh root@localhost - p51000

root@localhost s password :

Permission denied , please try again .

Melhorando nossas senhas

Sabemos que no fcil criar uma senha, ainda mais sendo ela para um servidor!
Para ajudar nessa rdua tarefa, podemos instalar um programa chamado pwgen,
que gera combinaes de caracteres, formando assim senhas aleatrias!

root@datacenter :~ # aptitude install pwgen

Apenas como exemplo, vamos gerar 4 combinaes de senhas com 15 caracteres,


tendo letras maisculas, minsculas, nmeros e caracteres especiais. Detalhe: com
a opo s, a senha ser muito difcil de memorizar!

root@datacenter :~ # pwgen -1 sync 15 4

!0E >,T]We xSFDp

" DuI7 " /\ whdtan *

M=B > jQ ;& # ; M3 ; _ )

W vaJ2qAL_@ ) ] Hr

Linux Servers Revolutions

Pgina 14

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Verificando portas e encerrando programas desnecessrios

Devemos realizar uma verificao peridica em nosso sistema a procura de portas


abertas e programas desnecessrios. Para isto vamos usar o famoso NMAP, um
scanner de portas altamente poderoso. Para sua instalao, execute:

root@datacenter :~ # aptitude install nmap

Vamos demonstrar o procedimento de remoo de um servio desnecessrio, como


EXEMPLO. Rode o seguinte comando do nmap:

root@datacenter :~ # nmap - sV localhost

Starting Nmap 5.00 ( http :// nmap . org ) at 2011 -06 -20 22:28 BRT

Interesting ports on localhost (127.0.0.1) :

Not shown : 999 closed ports

PORT

25/ tcp open

Service Info : Host : datacenter

Service detection performed . Please report any incorrect results at

STATE SERVICE VERSION


smtp

Exim smtpd 4.72

http :// nmap . org / submit / .


9

Nmap done : 1 IP address (1 host up ) scanned in 0.52 seconds

Neste EXEMPLO verificamos que temos o servidor de e-mail EXIM, verso 4. Como
no iremos utiliz-lo, vamos remover seus links da inicializao para que eles no
sejam iniciados no boot. Execute o comando:

root@datacenter :~ # insserv - rv exim4

insserv : remove service / etc / init . d /../ rc0 . d / K01exim4

insserv : remove service / etc / init . d /../ rc1 . d / K01exim4

insserv : remove service / etc / init . d /../ rc2 . d / K01exim4

insserv : remove service / etc / init . d /../ rc3 . d / S02exim4

insserv : remove service / etc / init . d /../ rc4 . d / S02exim4

Linux Servers Revolutions

Pgina 15

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

insserv : remove service / etc / init . d /../ rc5 . d / S02exim4

insserv : remove service / etc / init . d /../ rc6 . d / K01exim4

insserv : creating . depend . boot

10

insserv : creating . depend . start

11

insserv : creating . depend . stop

Executando o Nmap novamente, percebemos que no h nenhum porta aberta em


nosso servidor!

root@datacenter :~ # nmap - sV localhost

Starting Nmap 5.00 ( http :// nmap . org ) at 2011 -06 -21 14:35 BRT

All 1000 scanned ports on localhost (127.0.0.1) are closed

Service detection performed . Please report any incorrect results at


http :// nmap . org / submit / .

Nmap done : 1 IP address (1 host up ) scanned in 0.67 seconds

root@datacenter :~ #

Outro comando importante (e que cai na prova da LPI) o netstat. Ele possui alguns
parmetros importantes para verificarmos as conexes estabelecidas em nosso servidor. Execute:

root@datacenter :~ # netstat - ltupan

Opes: -l - exibe as conexes que ficam "ouvindo"oou aguardando conexo; -t exibe conexes TCP -u - exibe conexes UDP -p - seguido do nome do protocolo
(TCP, UDP ou IP), exibe as informaes pedidas relativas ao protocolo especificado.
-a - exibe o conjunto das conexes e das portas em escuta na mquina; -n - exibe os
endereos/portas em formato numrico, sem resoluo de nomes.

Linux Servers Revolutions

Pgina 16

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Logando o comando SU

Todos os usurios logados no sistema GNU/Linux podem trocar de perfil apenas


digitando o comando su usurio e a senha do mesmo. interessante logarmos
as trocas de login (ou tentativas!) que os usurios do sistema efetuam, pois podemos
mapear os usurios que desejam escalar privilgios, qualquer que sejam os motivos.
Para isso, efetue o comando abaixo e descomente a linha 67:

root@datacenter :~ # vim +67 / etc / login . defs

67 SULOG_FILE / var / log / sulog

Agora crie o arquivo especificado como sendo o log:

root@datacenter :~ # touch / var / log / sulog

Faa alguns testes com o comando su, ora acertando a senha, ora errando. Se
desejar faa com o auxlio do programa splitvt:

root@datacenter :~ # splitvt

Deixe numa tela rodando o comando de visualizao de logs:

root@datacenter :~ # tail -f / var / log / sulog

Na outra execute os comandos com su infra e su infra, errando a senha!

Linux Servers Revolutions

Pgina 17

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

2.0.13 Introduo terica - PAM


O propsito do do projeto PAM separar a concesso de privilgios nos aplicativos
do desenvolvimento de esquemas de autenticao apropriados e seguros. Isto
realizado fornecendo-se uma biblioteca de funes utilizada pelas aplicaes para
solicitar a autenticao de usurios.
PAM o acrnimo em ingls para Pluggable Authentication Modules. Seu desenvolvimento inicial aconteceu em 1996 pela Sun Microsystems e atualmente
suportado nos sistemas operacionais AIX, HP-UX, Solaris, Linux, FreeBSD, Mac OS
X e NetBSD.
As bibliotecas PAM so configuradas no arquivo /etc/pam.conf ou nos arquivos dentro do diretrio /etc/pam.d/. Vale ressaltar que no possvel utilizar as duas
formas de configurao do LinuxPAM. Ou um ou outro, no os dois ao mesmo
tempo.!
Os arquivos de configurao utilizam mdulos normalmente localizados no diretrio
/lib/security/ou /lib64/security/ e se comportam como objetos carregveis dinamicamente.

Tipos de PAM

Embora eles no sejam classificados, podemos dizer que h trs tipos de PAM:
Linux-PAM: O Linux-PAM abrange todo o PAM discutido neste captulo. A arquitetura principal do PAM em qualquer plataforma Unix semelhante verso PAM do
Linux.
OpenPAM: O OpenPAM outra implementao do PAM desenvolvida pelos laboratrios Dag-Erling Smorgrav em NAI como parte do programa de pesquisa DARPACHATS. Por ser um software livre, ele usado principalmente pelo FreeBSD, NetBSD
e por aplicativos (alm do Mac OS X).

Linux Servers Revolutions

Pgina 18

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Java PAM ou JPam: O JPam atua como uma ponte entre a parte Java e o PAM
comum. Ele permite o uso dos mdulos ou recursos do PAM (como auth, account,
passwd, session , etc.) pelos aplicativos baseados em Java. Ele fornece o JAAS e
APIs diretas e suporte para a maioria dos sistemas operacionais e arquiteturas do
Unix.

Sobre o LinuxPAM, voc poder obter mais informaes no link abaixo:


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

2.0.14 Mdulos do PAM

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

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


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

auth (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.

Linux Servers Revolutions

Pgina 19

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

2.0.15 Controles do PAM


Alm dos mdulos, existem tambm os controles:
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 distros


que no usam so Slackware e suas variaes!

Laboratrio

Antes de executar qualquer comando deste tpico, extremamente importante


que voc deixe um terminal logado como root (pode ser o tty6) pois caso seja feito
qualquer tipo de bloqueio ao usurio root e voc efetuar um logout, temos como
alterar as configuraes e voltar aos testes!

Verifique quais mdulos do PAM esto instalados no sistema:

Linux Servers Revolutions

Pgina 20

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

root@datacenter :~ # ls / lib / security /

Como descobrir se sua aplica o tem suporte no PAM ?

R: Basta utilizar o comando " ldd " .

Execute:

root@datacenter :~ # ldd / bin / login

linux - gate . so .1 = >

(0 xb7712000 )

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

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

libc . so .6 = > / lib / i686 / cmov / libc . so .6 (0 xb75b7000 )

Podemos verificar tambm quais servios trabalham com o PAM listando os arquivos
do /etc/pam.d:

root@datacenter :~ # ls -l / etc / pam . d

Vamos fazer um teste simples que serve para bloquear usurios comuns. Abra o
arquivo "/etc/pam.d/login"e visualize o mdulo "pam_nologin.so" na linha 36:

root@datacenter :~ # vim +36 / etc / pam . d / login

34 # Disallows other than root logins when / etc / nologin exists

35 # ( Replaces the NOLOGINS_FILE option from login . defs )

36 auth

requisite

pam_nologin . so

Para esse mdulo funcionar ele necessita que o arquivo nologin esteja criado
dentro do diretrio /etc. Execute:

Linux Servers Revolutions

Pgina 21

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

root@datacenter :~ # touch / etc / nologin

Feito isto, tente logar com o usurio infra em outro terminal. Depois apague o
arquivo /etc/nologin.

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.

Vamos bloquear o acesso de root ao terminal do servidor sem o uso do PAM, apenas
editando o arquivo /etc/securetty :

root@datacenter :~ # vim +31 / etc / securetty

28 # Virtual consoles

29 tty1

30 tty2

31 # tty3

32 tty4

Teste: Comente a linha 31 (tty3) e tente logar-se com o usurio root no TTY3!
Depois comente as linhas 29 a 34!

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.

Para usar o PAM para gerenciar o login do root, vamos abrir o arquivo /etc/pam.d/login
e descomentar a linha 68:

Linux Servers Revolutions

Pgina 22

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

root@datacenter :~ # vim +68 / etc / pam . d / login


68

account

requisite

pam_time . so

Agora que ativamos o mdulo pam_time.so, vamos negar o login do root no terminal.
Edite o arquivo /etc/security/time.conf e acrescente na ltima linha:

root@datacenter :~ # vim / etc / security / time . conf


login ;*; root ;! Al0000 -2400

Abaixo temos as opes que podemos utilizar como permisso de acesso:

login - Servio que ir ser controlado * - Terminal root - Usurio Al0000-2400 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 Wd - Somente sbado e domingo (fim de semana) Wk - Segunda a sextafeira Al - Todos os dias "!- Neste caso especifica uma exceo. A faixa de horas
especificada aps o dia no formato: HHMM-HHMM

Tente efetuar login como root em outro terminal e veja que no ser possvel! Aproveitando o gancho , vamos deixar configurada a negao de acesso ao root via ssh.
Mais uma camada de proteo, alm da j configurada no arquivo de configurao
do ssh (/etc/ssh/sshd_config). Abra o arquivo /etc/pam.d/sshd e inclua na linha
9:

root@datacenter :~ # vim +9 / etc / pam . d / sshd

account

required

Linux Servers Revolutions

pam_time . so

Pgina 23

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Completando, abra o arquivo /etc/security/time.conf e adicione no final:

root@datacenter :~ # vim +9 / etc / security / time . conf

login ;*; root ;! Al0000 -2400

sshd ;*; root ;! Al0000 -2400

Como permitir acesso a grupos extras como, por exemplo, audio, ou cdrom?

root@datacenter :~ # vim / etc / security / time . conf

login ;*; root ;! Al0000 -2400

sshd ;*; root ;! Al0000 -2400

login ; tty *; usu rio ; Al0800 -1800; audio cdrom

Essa sintaxe quer dizer que usurio s pode ter acesso ao grupo audio se efetuar
o login entre 8hs e 18hs. Outro exemplo:

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

Essa sintaxe quer dizer que todos os usurios podem ter acesso ao grupo audio
e games aos sbados e domingos. Com o PAM, podemos limitar quais usurios
podero ter acesso a utilizar ao comando su. Para isso, vamos criar um grupo
chamado admins

root@datacenter :~ # groupadd admins

Agora vamos adicionar o usurio infra ao novo grupo. Com isto, apenas o usurio
infra poder executar o comando su.

root@datacenter :~ # gpasswd -a infra admins ; id infra

Linux Servers Revolutions

Pgina 24

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Crie uma poltica que no possibilite o uso do su, exceto pelos usurios do grupo
admins. Abra o arquivo /etc/pam.d/su, descomente a linha 15 e adicione ao final da
linha group=admins

1
2

root@datacenter :~ # vim +15 / etc / pam . d / su


15

auth

required

pam_wheel . so group = admins

Teste: Crie um usurio chamado teste, logue e execute um su -.

teste@datacenter :~ $ su -

Senha :

su : Permiss o negada

Faa o mesmo teste como usurio infra.

infra@datacenter :~ $ su -

Senha :

root@datacenter :~ #

Verifique o log do comando su:

root@datacenter :~ # tail -f - n2 / var / log / sulog

SU 06/22 21:01 - / dev / pts /0 teste - root

SU 06/22 21:02 + / dev / pts /0 infra - root

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. Vejamos o mdulo ativado no
/etc/pam.d/login:

Linux Servers Revolutions

Pgina 25

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

root@datacenter :~ # vim +77 / etc / pam . d / login

77 session

required

pam_limits . so

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

configura o que obtemos com o comando " ulimit


2

data

- Tamanho m ximo de segmento de dados que um

mesma

-c " do shell .
programa pode

usar . Tamb m como : " ulimit -d " no bash .


3

fsize

- Tamanho m ximo de algum arquivo que o usu rio possa

criar . Tamb m : " ulimit -f " .


4

memlock

- Tamanho de mem ria alocada que os programas podem

usar ( em KB ) . Tamb m : " ulimit -l " .


5
6
7
8
9

nofiles

- N mero m ximo de arquivos abertos ao mesmo tempo .

Tamb m: " ulimit -n " .


rss

- Tamanho m ximo de mem ria compartilhada ( em KB ) .

Tamb m: " ulimit -m " .


stack

- Valor m ximo de um processo executado ( em KB ) .

Linux Servers Revolutions

Pgina 26

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Tamb m: " ulimit -s " .

10
11

cpu

- Tempo m ximo em minutos de uso da CPU . Tamb m :

12

nproc

" ulimit -t " .

- N mero m ximo de processos executados ao mesmo

tempo .

" Tamb m : ulimit -u " .


13

as

- Limite em KB de espa o de endere amento .

14

maxlogins

15

maxsyslogins

16

priority

- N mero m ximo de logins para esse usu rio


- N mero m ximo de logins no sistema

- Em qual prioridade padr o os processos desse usu rio

devem rodar .
17

locks

- N mero m ximo de arquivos de " locks " que podem ser

gerados pelo usu rio . Tamb m : " ulimit -x " .


18

nice

- N mero m ximo de prioridade que o usu rio pode setar ,

entre -20 ( m xima prioridade ) e 19 ( m nima prioridade ) .


Tamb m : " 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.

Vamos realizar alguns testes. Primeiro iremos limitar o nmero de terminais consecutivos que um usurio pode utilizar. Abra o arquio /etc/security/limits.conf e insira
a seguinte linha:

root@datacenter :~ # vim / etc / security / limits . conf

@admins hard

maxlogins

Dessa forma, limita-se o usurio teste para utilizar somente dois terminais consecutivos. Segundo, vamos limitar o tamanho mximo de um arquivo criado pelo usurio
teste:

root@datacenter :~ # vim / etc / security / limits . conf

Linux Servers Revolutions

Pgina 27

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

@admins hard

maxlogins

@admins hard

fsize

5000

Para o teste, faa logout e logue-se novamente com o usurio teste e tente criar
arquivos maiores que 100MB (fsize 100000).

infra@datacenter :~ $ dd if =/ dev / zero of = arquivo bs =1024 count =100000

100000+0 registros de entrada

100000+0 registros de sa da

102400000 bytes (102 MB ) copiados , 0 ,762922 s , 134 MB / s

Criamos um arquivo de 100000KB. Agora vamos criar usando count=11000!

infra@datacenter :~ $ dd if =/ dev / zero of = arquivo bs =1024 count =110000

Excedido tamanho limite de arquivo

Outro fator importante na questo da segurana o chamado Fork Bomb! Ele nada
mais do que um processo criar sub-processos, em looping infinito, causando o
congelamento do servidor. Faa o teste com o usurio infra digitando:

infra@datacenter :~ $ bomb () { bomb | bomb & } ;

bomb

Esse comando cria uma funo na qual a funo jogada dentro dela mesma em
segundo plano, gerando o looping. Para parar o looping s desligando o servidor.
Para impedir isto, vamos limitar o nmero de processos gerados pelo usurio no
arquivo /etc/security/limits.conf

root@datacenter :~ # vim / etc / security / limits . conf

@admins hard

nproc

Linux Servers Revolutions

200

Pgina 28

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

Aps isto, faa novamente o teste usando o usurio infra. Vamos ver agora como
implementar mais segurana com as senhas dos usurios. Limitaremos a quantidade
de caracteres a composio da senha. Instale o programa libpam-cracklib.

root@datacenter :~ # aptitude install libpam - cracklib

Abra o arquivo /etc/pam.d/common-password e deixe a linha 25 como em negrito,


comente a linha 26 e adicione a linha 27 como abaixo:

1
2

root@datacenter :~ # vim / etc / pam . d / common - password

24 # here are the per - package modules ( the " Primary " block )

25 password requisite

26 # password

[ success =1 default = ignore ]

use_authtok
6

27 password
nullok

pam_cracklib . so retry =3 minlen =6 difok =3


pam_unix . so obscure

try_first_pass sha512

[ success =1 default = ignore ]

pam_unix . so

use_authtok

md5

Na linha 25 estamos especificando o seguinte:

retry =3 -> 3 tentativas de mudan a de senha .;

minlen =6

-> Senha com no m nimo 6 caracteres .;

difok =3

-> Diferen a de pelo menos 3 caracteres da antiga senha .

Agora logue com o usurio teste e tente mudar a senha para valores que o sistema
no aceite:

teste@datacenter :~ $ passwd

Mudando senha para teste .

Senha UNIX ( atual ) :

Senha :

Linux Servers Revolutions

Pgina 29

Linux Force

Implementando Hardening e PAM em seu Servidor GNU/Linux

SENHA INCORRETA : muito simples / sistem tica

Senha :

SENHA INCORRETA : muito simples / sistem tica

Senha :

SENHA INCORRETA : muito simples / sistem tica

10

passwd : Esgotado o n mero m ximo de tentativas para servi o

11

passwd : Palavra - passe inalterada

Agora mude a senha atendendo ao critrio que configuramos:

teste@datacenter :~ $ passwd

2
3

Mudando senha para teste .

Senha UNIX ( atual ) :

Senha :

Redigite a nova senha :

passwd : senha atualizada com sucesso

Iremos estudar Hardening mais a fundo no Treinamento Segurana em Servidores Linux usando a ISO27002 .

Visto que todo software possui bugs de segurana, 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

Linux Servers Revolutions

Pgina 30

Captulo 3
Servidor DHCP
3.0.16 Cenrio
A empresa Dexter Courier precisa de informaes precisas sobre suas mquinas
no que diz respeito origem dos acessos aos servidores, portanto ter todos os computadores da rede mapeados com endereo IP fixo.

3.0.17 Proposta de soluo


Uma grande vantagem que podemos encontrar no DHCP o de amarrar o endereo MAC das mquinas a um determinado IP, fazendo com que somente quem
estiver com o MAC ADDRESS cadastrado poder utilizar a internet e os demais sero bloqueados. Alm disto, teremos um controle melhor sobre a origem dos acessos
aos servios da empresa.

3.0.18 Introduo terica


Criado e mantido pelo ISC (Internet Systems Consortium), um grupo sem fins lucrativos dedicado a desenvolver servios de infra-estrutura usados na Internet, in-

Linux Force

Servidor DHCP

cluindo o Bind e o NTPD. Caso esteja curioso, a pgina com o cdigo fonte a:
http://www.isc.org/sw/dhcp/. O protocolo DHCP (Dynamic Host Configuration Protocol) funciona nas camadas 2 e 3 do modelo OSI e amplamente utilizado para
oferecer endereo IP a um "host"que ainda no est configurado, o que oferece uma
flexibilidade ao Administrador de Redes.
O que um servidor DHCP faz bastante simples. Ele responde aos pacotes de
broadcast das estaes, enviando um pacote com um dos endereos IP disponveis
e os demais dados da rede. Os pacotes de broadcast so endereados ao endereo "255.255.255.255" e retransmitidos pelo switch da rede para todas as portas,
diferente dos pacotes endereados a um endereo especfico, que so transmitidos
apenas na porta relacionada a ele.
Periodicamente o servidor DHCP verifica se as estaes ainda esto l, exigindo
uma renovao do "aluguel"do endereo IP. Isso permite que os endereos IP sejam gastos apenas com quem realmente estiver online, evitando que os endereos
disponveis se esgotem.
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

Linux Servers Revolutions

Pgina 32

Linux Force

Servidor DHCP

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.
DHCPDECLINE Caso o IP j esteja sendo utilizado por outro Host, o servidor
envia um DHCPDECLINE anunciando ao servidor que o endereo j utilizado;
DHCPRELEASE Se por algum motivo o cliente deixa de usar o endereo IP,
o mesmo manda um DHCPRELEASE dizendo que aquele IP ja pode ser usado
por outro Host;
DHCPINFORM Utilizado quando o Cliente j possui endereo IP, mas precisa
de outras informaes, como o servidor DNS por exemplo, o mesmo envia um
DHCPINFORM pedindo tais informaes para o servidor DHCP.
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 cliente ao endereo IP desejado. O servidor 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 "MACs"habilitados a esse espao

Linux Servers Revolutions

Pgina 33

Linux Force

Servidor DHCP

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 da 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. Podemos ainda configurar uma atualizao dinmica dos servidores de
"DNS"para que cada cliente disponha tambm de um registro "DNS".

3.0.19 Laboratrio
Primeiro iremos instalar o pacote do servidor dhcp:

root@datacenter :~ # aptitude install isc - dhcp - server

Vamos renomear o arquivo original do DHCP para uma possvel consulta:

root@datacenter :~ # mv / etc / dhcp / dhcpd . conf


/ etc / dhcp / dhcpd . conf . distro

Agora vamos iniciar nossa configurao num arquivo zerado. Abra-o e insira o contedo abaixo:

root@datacenter :~ # vim / etc / dhcp / dhcpd . conf

ddns - update - style none ;

deny unknown - clients ;

Linux Servers Revolutions

Pgina 34

Linux Force

log - facility local7 ;


subnet 192.168. X .0 netmask 255.255.255.0 {

5
6

range 192.168. X .100 192.168. X .110;

server - identifier datacenter ;

authoritative ;

option subnet - mask 255.255.255.0;

10

option domain - name " dexter . com . br " ;

11

option domain - name - servers 8.8.8.8 ,208.67.222.222;

12

option routers 192.168. X .1;

13

default - lease - time 600;

14

max - lease - time 7200;

15

Servidor DHCP

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


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

Uma vez criado o arquivo de configurao, basta reinicializar o servidor DHCP:

root@datacenter :~ # service isc - dhcp - server restart

Principais diretrizes do arquivo de configurao

ddns-update-style: forma que o DHCP ir armazenar as informaes de redes


dos clientes. Atualmente so implementados dois esquemas de atualizao
do DNS - o modo de atualizao do DNS improvisado (ad-hoc) e o modo de
atualizao do esquema de interao do intervalo DHCP-DNS (interim);

deny unknown-clients: nega acesso a MAC no cadastrado;

Linux Servers Revolutions

Pgina 35

Linux Force

Servidor DHCP

log-facility local7: Criaremos uma entrada no /etc/rsyslog.conf para os logs do


servidor DHCP;

subnet 192.168.X.0 netmask 255.255.255.0: qual rede o DHCP ir responder


quando for solicitado;

range 192.168.X.100 192.168.X.110: faixa de IPs que ser disponibilizado aos


clientes;

server-identifier: Devemos identificar o nome do nosso servidor;

authoritative: Indica que o servidor DHCP ser autoritrio em todo o seguimento da rede;

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


a ser fornecida aos clientes;

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

option domain-name-servers 8.8.8.8,208.67.222.222 - Essa opo lista os servidores de nomes (DNS) a serem utilizados para resoluo de nomes;

option routers 192.168.X.1 - O cliente, alm do nmero IP, recebe tambm a


informao do nmero do "gateway"de sua rede;

default - lease - time 600 - Servidores " DHCP " cedem endere os sob
pedido por um tempo pr - determinado . O padr o nesse exemplo
ceder o endere o 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);

Linux Servers Revolutions

Pgina 36

Linux Force

Servidor DHCP

Para habilitar o suporte ao servidor dinmico, utilize dynamic-bootp


Exemplo: range dynamic-bootp 192.168.X.100 192.168.X.110;

Configurando os LOGs

No Debian, o arquivo de configurao do syslog fica em /etc/rsyslog.conf. A seguinte


entrada pode ser adiciona no final do arquivo:

1
2

root@datacenter :~ # vim / etc / rsyslog . conf


local7 .*

/ var / log / dhcpd . log

root@datacenter :~ # touch / var / log / dhcpd . log

root@datacenter :~ # service rsyslog restart

Com isso todos os logs com origem da facility local7 (facility essa que representa o
servio de DHCP) em qualquer priority (indica o nvel de importncia do log) sero
logados no /var/log/dhcpd.log.

Configurando os clientes DHCP

Vamos configurar a mquina Cliente Squeeze. Abra o arquivo de rede e configure a


interface eth0 para pegar IP via DHCP :

1
2

root@squeeze :~ # vim / etc / network / interfaces

auto eth0

iface eth0 inet dhcp

Reinicie o servio de rede e

Linux Servers Revolutions

Pgina 37

Linux Force

root@squeeze :~ # service networking restart

root@squeeze :~ # dhclient eth0 -v

Servidor DHCP

Caso no tenha o comando dhclient, setar um IP fixo manualmente e instalar


o pacote abaixo: # aptitude install isc-dhcp-client

Para visualizar a placa de rede que est utilizando: # mii-tool

3.0.20 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. Considere que temos 3
estaes:

Para este cenrio ser possvel adicione no final do arquivo de configurao "/etc/dhcp/dhcpd.con
o que est abaixo:

host squeeze {

hardware ethernet 00:00:00:00:00:00;

fixed - address 192.168. X .10;

host windowsxp {

Linux Servers Revolutions

Pgina 38

Linux Force

hardware ethernet 00:00:00:00:00:00;

fixed - address 192.168. X .20;

host windows7 {

10

hardware ethernet 00:00:00:00:00:00;

11

fixed - address 192.168. X .30;

Servidor DHCP

12

Voc deve trocar o MAC Address informado aqui pelo de suas estaes.

Configuraes adicionais

No que diz respeito ao servidor, podemos ainda verificar alguns arquivos para diagnosticar problemas ou mesmo extrair relatrios. Vejamos:

root@datacenter :~ # less / var / lib / dhcp / dhcpd . leases

lease 192.168. X .102 {

starts 2 2011/06/28 01:27:10;

ends 2 2011/06/28 01:28:13;

tstp 2 2011/06/28 01:28:13;

cltt 2 2011/06/28 01:27:10;

binding state free ;

hardware ethernet 08:00:27:2 e : f9 : fa ;

Este arquivo armazena o banco de dados de aluguel do cliente DHCP. Este arquivo
no deve ser modificado manualmente. As informaes de aluguel DHCP de cada
endereo IP recentemente atribudo so armazenadas automaticamente no banco
de dados de aluguel. As informaes incluem datas do aluguel e os endereos MAC
da placa de interface de rede usada para recuperar o aluguel.
Todos os horrios do banco de dados de aluguel esto em GMT (Greenwich Mean
Time) e no horrio local. O banco de dados de aluguel recriado de tempos em

Linux Servers Revolutions

Pgina 39

Linux Force

Servidor DHCP

tempos para que no fique muito grande. Primeiramente, todos os aluguis conhecidos so salvos em um banco de dados temporrio de aluguel. Ento, o arquivo
dhcpd.leases renomeado para dhcpd.leases , e o banco de dados temporrio
salvo como dhcpd.leases.
O daemon DHCP pode ser finalizado (killed) ou o sistema pode falhar (crash) aps
o banco de dados de aluguel ter sido renomeado como o arquivo backup, mas antes
do novo arquivo ser salvo. Se isto acontecer, o arquivo dhcpd.leases no existe, mas
necessrio para iniciar o servio. No crie um novo arquivo de aluguel. Se voc
o fizer, todos os aluguis antigos sero perdidos e causaro muitos problemas. A
soluo correta renomear o arquivo backup dhcpd.leases como dhcpd.leases e
ento iniciar o daemon.
Outro arquivo importante o /etc/default/isc-dhcp-server, onde podemos setar qual
interface de rede responder as requisies dos clientes. Basta configurarmos conforme abaixo:

root@datacenter :~ # less / etc / default / isc - dhcp - server

11 INTERFACES = " eth0 "

Pelo lado do cliente podemos acompanhar quais os endereos IPs que j recebeu
analisando o arquivo /var/lib/dhcp/dhclient.leases:

root@datacenter :~ # less / var / lib / dhcp / dhclient . leases

lease {

interface " eth0 " ;

fixed - address 192.168. X .110;

option subnet - mask 255.255.255.0;

option dhcp - lease - time 3600;

option dhcp - message - type 5;

option dhcp - server - identifier 192.168. X .110;

renew 2 2011/06/21 21:55:15;

10

rebind 2 2011/06/21 22:22:06;

11

expire 2 2011/06/21 22:29:36;

Linux Servers Revolutions

Pgina 40

Linux Force

Servidor DHCP

. . . ou o arquivo /var/lib/dhcp/dhclient.eth0.leases

lease {

interface " eth0 " ;

fixed - address 192.168. X .110;

option subnet - mask 255.255.255.0;

option dhcp - lease - time 3600;

option dhcp - message - type 5;

option dhcp - server - identifier 192.168. X .110;

renew 5 2011/06/24 00:14:42;

rebind 5 2011/06/24 00:14:42;

10

expire 5 2011/06/24 00:14:42;

11

E para finalizar, evite colocar 2 servidores DHCP na mesma rede, pois isto ir gerar
alguns transtornos para os clientes!

Linux Servers Revolutions

Pgina 41

Captulo 4
Servidor NFS
4.1 Cenrio
A empresa Dexter Courier precisa de um Storage de baixo custo para compartilhar
arquivos para os membros da rede, incluindo mquinas Windows.

4.2 Proposta de soluo


Vamos utilizar um computador com GNU/Linux servindo como Storage da rede, contendo os diretrios necessrios para o acesso dos membros da empresa. Vamos
configurar grupos e usurios com as devidas permisses de acesso, alm de gerenciar as quotas por grupo.

4.3 Introduo terica


Originalmente desenvolvido pela Sun Microsystems, o NFS (Network File System)
permite compartilhar diretrios e arquivos na rede, fazendo com que os clientes aces-

Linux Force

Servidor NFS

sem os dados remotos como se estivessem no micro local. 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 isto o NFS faz uso do Remote Procedure Call.
Para que os clientes possam acessar o servidor NFS, necessrio que os seguintes
servios estejam sendo executados no servidor: portmapper - converte nmeros dos
processos RPC em nmeros no protocolo TCP/IP. Atravs deste daemon, os clientes
conseguem o nmero da porta do servidor NFS;
portmapper - converte nmeros dos processos RPC em nmeros no protocolo TCP/IP.
Atravs deste daemon, os clientes conseguem o nmero da porta do servidor NFS;
status - oferece informaes sobre o compartilhamento afim de evitar erros;
nlockmgr - gerenciador de bloqueios do NFS;
nfsd - atende s requisies dos clientes;
mountd - executa as solicitaes do nfsd (montagem dos clientes);

4.4 Conhecendo o NAS


O termo NAS (Network-Attached Storage) foi introduzido com os primeiros sistemas operacionais para servidores de compartilhamento de arquivos NetWare da
Novell e com o protocolo NCP em 1983. No mundo UNIX, o lanamento do NFS
da Sun Microsystems permitiu que os servidores de rede compartilhassem espao
de armazenamento de dados com os clientes de sua rede. O 3Server e o 3+Share
da 3Com foram os primeiros servidores feitos especificamente para esta funo (incluindo hardware proprietrio, software, e discos mltiplos), e a empresa liderou o
segmento de mercado de 1985 at o incio dos anos 90. A 3Com e a Microsoft
desenvolveriam o software LAN Manager e o protocolo para entrar neste novo mer-

Linux Servers Revolutions

Pgina 43

Linux Force

Servidor NFS

cado. Inspirados pelo sucesso dos servidores de arquivos da Novell, IBM e Sun,
vrias empresas desenvolveram servidores dedicados para armazenamento de dados. Enquanto a 3Com estava entre as primeiras empresas a fabricar NAS dedicados
para sistemas operacionais de desktop, a Auspex Systems foi a primeira a desenvolver um servidor NFS dedicado para uso com UNIX. Um grupo de engenheiros da
Auspex se separou da empresa no incio dos anos 90 para criar o filtro integrado
NetApp, o qual suportava tanto o CIFS (Windows) quanto o NFS (UNIX), e tinha escalabilidade superior e maior facilidade de instalao. Aqui inicia o mercado para
dispositivos NAS proprietrios.
Sistemas NAS podem conter mais de um HD, podendo tambm contar com a tecnologia RAID (Redundant Arrays of Independent Disks), centralizando a responsabilidade de servir os arquivos em uma rede e deste modo liberando recursos de
outros servidores desta rede. Os protocolos utilizados pelo NAS so o NFS, popular
em sistemas UNIX, ou CIFS/SMB (Common Internet File System/Server Message
Block) em ambientes Windows, assim como o tradicional FTP.
Equipamentos NAS esto sendo usados pelo mundo corporativo h algum tempo,
porm, com a reduo dos custos destes dispositivos e com a popularizao de redes domsticas, diversos produtos NAS surgiram para o mercado pessoal. Estes
dispositivos NAS de uso domstico so baseados em processadores baratos rodando uma verso embarcada de Linux. Alm do baixo custo, estes aparelhos tm
baixo consumo de energia e tm uma instalao relativamente simples. Existem
alternativas open source para implementaes caseiras de NAS, como:

FreeNAS (http://www.freenas.org/)
Openfiler (http://www.openfiler.com/)
NASLite (http://www.serverelements.com/)

Abaixo temos alguns exemplos de dispositivos NAS:

Linux Servers Revolutions

Pgina 44

Linux Force

Servidor NFS

LG-N4B1-NAS-Blu-ray

Seagate-Blackarmor-NAS 440

4.5 NAS versus SAN


O NAS disponibiliza armazenamento e sistema de arquivos, contrastando com o
SAN (Storage Area Network), que s realiza armazenamento e deixa ao cliente
a tarefa de lidar com o sistema de arquivos. A principal distino entre os dois
sistemas de armazenamento que o NAS fornece protocolos de arquivo e o
SAN protocolos de camada. Raramente v-se o sistema SAN sendo utilizado fora
de grandes redes de computadores.
Enquanto o NAS especializado em dados orientados aos arquivos, o SAN cuida de

Linux Servers Revolutions

Pgina 45

Linux Force

Servidor NFS

aumentar a velocidade do ERP, CRM e banco de dados pesados. A batalha entre o


NAS e a robusta SAN um tpico popular comum para toda a indstria de TI, no
s em armazenamento. Mas este confronto aconteceu ocasionalmente.

A empresa Network Appliance foi a primeira a comercializar produtos em NAS, que,


conectados na mesma rede de dados, baseado em um sistema operacional de rede
simplificado.

A tecnologia foi adotada por legies de usurios da Network Appliance e por usurios
de Windows para hospedar o Microsoft Exchange e o SQL Server. Tambm foi usado
por milhares de outros para o armazenamento de seus dados orientados a arquivos
(file-oriented).

Com o tempo, o SAN foi adotado para criar parties diferentes no resto do trfego
da LAN e, ao fazer isso, aumentar a velocidade de banco de dados com grande
quantidade de transaes, sistemas ERP e CRM.

Separar a propriedade de um servidor de seu storage e colocando todos os aparelhos de armazenamento diretamente em uma rede de fibra permite diversas conexes many-to-many dos servidores ao storage e do storage para outros aparelhos
de storage. Esta estratgia garante os benefcios tradicionais de colocar os aparelhos de storage em rede, como aumentar a disponibilidade, escalabilidade e desempenho, escreveu o consultor Barb Goldworm.

Os defensores da SAN dizem que a tecnologia a melhor quando se busca desempenho para aplicaes crticas para os negcios como banco de dados, ERP e
CRM. O NAS, definem, impactado por problemas em desempenho. Mas se voc
perguntar para usurios de NAS, no entanto, eles vo dizer que o uso do NAS para
aplicaes crticas nunca gerou problemas. Por exemplo, um teste de um sistema
NAS da BlueArc NAS mostrou mais de 192,900 operaes por segundo.

Abaixo alguns exemplos de SAN:

Linux Servers Revolutions

Pgina 46

Linux Force

Servidor NFS

4.6 E o DAS?
DAS (Direct-Attached Storage) o mais comum tipo de armazenamento. Assim
como o nome sugere, implica que todos os discos e dispositivos de armazenamento

Linux Servers Revolutions

Pgina 47

Linux Force

Servidor NFS

estejam no servidor ao invs de um dispositivo separado. Tem uma bola relao


custo-benefcio, principalmente para pequenas e mdias empresas.
Essa tcnica mais adequada para pequenos servidores que oferecem acesso a
arquivos para diversos PCs ou usurios de um pequeno escritrio. uma forma
confivel para armazenar aplicaes que rodam em um servidor.
Tipicamente DAS um sistema de armazenamento conectado diretamente a um
computador usando Host Bus Adapter (HBA). Entre ambos no h dispositivos de
rede (como hub, switches etc). Est a principal diferena entre o DAS e os SAN
e NAS.
No entanto, essa arquitetura tem algumas limitaes em relao escalabilidade,
uma vez que os servidores suportam um nmero limitado de discos. Isto significa
que se a sua empresa precisar de mais espao, a nica alternativa utilizar discos
de alta capacidade.
Os principais protocolos usados pelo DAS so ATA, SATA, eSATA, SCSI, SAS e
Fibre Channel.

4.7 Laboratrio
4.7.1 Configurando o Servidor

Como a finalidade deste servidor prover apenas espao em disco, vamos realizar
uma configurao simples com NFS, compartilhando dois diretrios.
Primeiro iremos criar os diretrios a serem compartilhados:

root@storage :~ # mkdir / srv / dexter ; mkdir / srv / lixeiras

Linux Servers Revolutions

Pgina 48

Linux Force

Servidor NFS

Agora partiremos para a instalao do servidor NFS e suas configuraes. Vamos


instalar tambm o NMAP para fazer alguns testes:

root@storage :~ # aptitude install nfs - kernel - server nmap

Vamos analisar nosso servidor, verificando portas abertas e servios:

root@storage :~ # nmap - sT - sV localhost

PORT

STATE SERVICE VERSION

111/ tcp

open

rpcbind

2049/ tcp open

rpcbind

Vejamos com o netstat:

root@storage :~ # netstat - luptan

Conex es Internet Ativas ( servidores e estabelecidas )

Proto Recv - Q Send - Q EndLocal EndRemoto Estado

tcp

0.0.0.0:111

0.0.0.0:*

OU A

1468/ portmap

tcp

0.0.0.0:60630

0.0.0.0:*

OU A

1920/ rpc . mountd

tcp

0.0.0.0:2049

0.0.0.0:*

OU A

tcp

0.0.0.0:57409

0.0.0.0:*

OU A

1677/ rpc . statd

udp

0.0.0.0:47545

0.0.0.0:*

1677/ rpc . statd

udp

0.0.0.0:1005

0.0.0.0:*

1677/ rpc . statd

10

udp

0.0.0.0:111

0.0.0.0:*

1468/ portmap

11

udp

0.0.0.0:52472

0.0.0.0:*

12

udp

0.0.0.0:2049

0.0.0.0:*

PID / Program name

Podemos observar que temos os servios do portmap e nfs rodando, respectivamente, nas portas 111 e 2049, conforme o arquivo /etc/services.

root@storage :~ # vim / etc / services

Linux Servers Revolutions

Pgina 49

Linux Force

Servidor NFS

75 sunrpc

111/ tcp

portmapper

76 sunrpc

111/ udp

portmapper

298 nfs

2049/ tcp

# Network File System

299 nfs

2049/ udp

# Network File System

# RPC 4.0 portmapper

Podemos ver os servios necessrios ao funcionamento do NFS executando:

root@storage :~ # rpcinfo -p

programa

vers o protocolo

porta

100000

tcp

111

portmapper

100000

udp

111

portmapper

100024

udp

47545

status

100024

tcp

57409

status

100021

udp

52472

nlockmgr

100021

udp

52472

nlockmgr

100021

udp

52472

nlockmgr

10

100021

tcp

39468

nlockmgr

11

100021

tcp

39468

nlockmgr

12

100021

tcp

39468

nlockmgr

13

100003

tcp

2049

nfs

14

100003

tcp

2049

nfs

15

100003

tcp

2049

nfs

16

100003

udp

2049

nfs

17

100003

udp

2049

nfs

18

100003

udp

2049

nfs

19

100005

udp

46126

mountd

20

100005

tcp

60630

mountd

21

100005

udp

46126

mountd

22

100005

tcp

60630

mountd

23

100005

udp

46126

mountd

24

100005

tcp

60630

mountd

Depois destes testes, vamos configurar o compartilhamento no arquivo /etc/exports,

Linux Servers Revolutions

Pgina 50

Linux Force

Servidor NFS

deixando-o como no exemplo:

root@storage :~ # vim / etc / exports

/ srv / dexter

192.168. X .2( rw , root_squash , no_subtree_check , async )

/ srv / lixeiras

192.168. X .2( rw , root_squash , no_subtree_check , async )

As opes mais usadas so:


ro - compartilhar apenas para leitura;
rw - compartilhar para leitura e gravao;
root_squash - opo padro, faz com que o usurio root no tenha privilgios dentro
do compartilhamento NFS montado;
no_root_squash - permite ao usurio root os mesmos privilgios que num diretrio
local;
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;

Por

padro

no_subtree_check.

no

compartilhamento,

ele

sempre

assume

opo:

Esta opo faz com que os subdiretrios do compartilha-

mento sejam exportados. Veja mais opes do arquivo /etc/exports lendo seu
manual => man 5 exports

Aps isto, execute o comando para reler o arquivo:

root@storage :~ # exportfs -r

Linux Servers Revolutions

Pgina 51

Linux Force

Servidor NFS

Pronto! Diretrios compartilhados. Para realizar uma verificao execute:

root@storage :~ # showmount -e localhost

Export list for localhost :

/ srv / lixeiras 192.168. X .2

/ srv / dexter

192.168. X .2

Caso haja algum problema, reinicie os servios:

root@storage :~ # service portmap restart

root@storage :~ # service nfs - kernel - server restart

4.7.2 Configurando o Cliente


Para configuramos o cliente NFS, basta a instalao do pacote nfs-common. Faa a
instalao na mquina Datacenter:

root@datacenter :~ # aptitude install nfs - common

Antes de efetuarmos a montagem efetiva dos compartilhamentos NFS, vamos remover a entrada LVM referente ao /srv:

root@datacenter :~ # umount / dev / root_vg / lv_srv

root@datacenter :~ # lvremove / dev / root_vg / lv_srv

Do you really want to remove active logical volume lv_srv ? [ y / n ]: y

Logical volume " lv_srv " successfully removed

NO ESQUEA de remover a linha do /etc/fstab!!!

Linux Servers Revolutions

Pgina 52

Linux Force

Servidor NFS

Agora crie o ponto de montagem:

root@datacenter :~ # mkdir -p / srv / storage ; mkdir / srv / lixeiras

Verifique os compartilhamentos do servidor:

root@datacenter :~ # showmount -e 192.168. X .4

Export list for 192.168. X .4:

/ srv / lixeiras 192.168. X .2

/ srv / dexter

192.168. X .2

Monte os compartilhamentos:

root@datacenter :~ # mount -t nfs 192.168. X .4:/ srv / dexter / srv / storage

root@datacenter :~ # mount -t nfs 192.168. X .4:/ srv / lixeiras


/ srv / lixeiras

Verifique a montagem do compartilhamento com o comando mount:

root@datacenter :~ # mount

192.168. X .4:/ srv / dexter on / srv / storage type nfs


(rw , addr =192.168. X .4)

192.168. X .4:/ srv / dexter on / srv / lixeiras type nfs


(rw , addr =192.168. X .4)

Como usurio root, tente criar um arquivo:

root@datacenter :~ # touch / srv / storage / teste_root

touch : n o foi poss vel tocar " / srv / storage / teste_root " : Permiss o
negada

Linux Servers Revolutions

Pgina 53

Linux Force

Servidor NFS

Como vimos, com a opo root_squash ativada por padro o root no consegue
criar arquivos/diretrios dentro do compartilhamento! Vamos alterar o /etc/exports
no servidor Storage e permitir que o root grave no compartilhamento, habilitando a
opo no_root_squash:

root@storage :~ # vim / etc / exports

/ srv / dexter

192.168. X .2( rw , no_root_squash , no_subtree_check , async )

/ srv / lixeiras

192.168. X .2( rw , no_root_squash , no_subtree_check , async )

root@storage :~ # exportfs -r

Refaa o teste. Agora podemos criar o arquivo!

root@datacenter :~ # touch / srv / storage / teste_root ; ls - lh


/ srv / storage

-rw -r --r - - 1 root root 0 Jun 29 22:15 teste_root

Verifique as conexes com o servidor executando:

root@datacenter :~ # showmount -a 192.168. X .4

All mount points on 192.168. X .4:

192.168. X .2:/ srv / dexter

192.168. X .2:/ srv / lixeiras

Para verificar o status do servidor nfs, digite os comandos: nfsstat e nfsstat


-m

Finalmente, para que o compartilhamento seja montado no boot, vamos adicionar a


configurao no final do arquivo /etc/fstab:

Linux Servers Revolutions

Pgina 54

Linux Force

Servidor NFS

root@datacenter :~ # vim / etc / fstab

192.168. X .4:/ srv / dexter

192.168. X .4:/ srv / lixeiras

Linux Servers Revolutions

/ srv / dexter nfs

defaults , soft

/ srv / lixeiras nfs

defaults , soft

Pgina 55

Captulo 5
Implementando RAID + LVM
5.0.3 Introduo Terica - RAID

RAID, do ingls Redundant Array of Independent Disks, significa Conjunto Redundante de Discos Independentes. A ideia bsica por trs do RAID combinar
diversos discos e de baixo custo em um conjunto, a fim de atingir objetivos de desempenho ou redundncia inatingveis com um disco grande e de custo alto. Este
conjunto de discos aparece para o computador como uma nica unidade ou disco de
armazenamento lgico.
O conceito fundamental do RAID que os dados podem ser distribudos ao longo de
cada disco do conjunto de maneira consistente. Para fazer isso, primeiramente os
dados precisam ser quebrados em pedaos de tamanho consistente (geralmente de
32KB ou 64KB, apesar de poder usar tamanhos diferentes). Cada pedao ento
gravado em um disco rgido no RAID, conforme o nvel do RAID usado. Quando os
dados tiverem que ser acessados, o processo revertido, dando a impresso de que
os discos mltiplos so um disco grande.

[ http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/ch-raid-intro.html ]

Linux Force

Implementando RAID + LVM

Temos como principais vantagens do RAID:


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.;
Impacto reduzido na falha de um disco.
Temos 2 formas de se montar um sistema em 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.
Caractersticas mais importantes:
1.Processo threaded rebuild;
2.Portabilidade dos conjuntos entre mquinas Linux sem reconstruo;
3.Reconstruo do ARRAY no background, usando recursos ociosos do sistema;
4.Suporte ao disco hot-swappable (pode ser substitudo sem desligar a mquina);
5.Deteco automtica da CPU para aproveitar determinadas otimizaes.
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

Linux Servers Revolutions

Pgina 57

Linux Force

Implementando RAID + LVM

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.

[ http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-raid-approaches.html ]

Tipos de RAID

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


suas derivaes, como por exemplo, o RAID 10. Vamos entend-los:
RAID 0 (Stripping): 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 isto, com dois discos, a velocidade de leitura praticamente dobra. Com trs discos, triplica. E assim por diante. So necessrios
ao menos dois discos para implementar RAID 0 e eles podem ser de tamanhos
diferentes.

Ent o o RAID 0 garante redund ncia ?

No!!! Esta a desvantagem, pois se qualquer um dos discos falhar, o sistema


operacional para de funcionar, alm de ocasionar perda dos dados. Portanto, um
mtodo que requer cuidados.

Caracter sticas do RAID 0:

2
3

* Excelente grava o e leitura ;

Linux Servers Revolutions

Pgina 58

Linux Force

Implementando RAID + LVM

* Aproveitamento total de espa o ;

6
7

* Nenhuma redund ncia !

RAID 1 (Mirroring): O nvel mais utilizado. Sua principal finalidade prover redundncia dos dados. Esta garantida pela duplicao dos dados que so 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 ? N o !!!!! apenas redund ncia .

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.

Caracter sticas do RAID 1:

2
3

* Redund ncia : se um dos discos falhar , o sistema continua


funcionando ;

4
5

* Voc vai precisar de 2 HDs , mas s vai usar a rea til de 1;

6
7

* Reduz um pouco o desempenho da escrita , pois o mesmo dado


gravado nos discos que estiverem em " RAID 1 " .

Linux Servers Revolutions

Pgina 59

Linux Force

Implementando RAID + LVM

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


do nveis anteriores, ou seja, RAID 5 prov 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.

RAID 6: um padro relativamente novo, suportado por apenas algumas controladoras. Ele semelhante ao RAID 5, porm usa o dobro de bits de paridade,
garantindo a integridade dos dados caso at 2 dos HDs falhem ao mesmo tempo. Ao
usar 7 HDs de 500 GB em RAID 6, por exemplo, teramos 2.5 TB para dados mais 1
TB de cdigos de paridade.
A percentagem de espao sacrificado decai conforme so acrescentados mais discos, de forma que o uso do RAID 6 vai tornado-se progressivamente mais atrativo.
No caso de um grande servidor, com 41 HDs, por exemplo, seria sacrificado o espao equivalente a apenas dois discos, ou seja, menos de 5% do espao total. Em

Linux Servers Revolutions

Pgina 60

Linux Force

Implementando RAID + LVM

troca, ganha-se proteo contra a possibilidade de um segundo HD falhar durante o


processo de substituio e reconstruo dos dados do primeiro.

Tanto no caso do RAID 5, quanto no RAID 6, o servidor continua funcionando normalmente durante todo o processo de substituio do disco, embora a performance
decaia, sobretudo logo depois da substituio do drive defeituoso, quando o sistema
precisa regravar os dados lendo as informaes armazenadas em todos os outros
discos e fazendo os clculos de paridade.

[ http://www.hardware.com.br/termos/raid-6 ]

Combinaes de RAID

RAID 10: Combina as vantagens do RAID 0 e RAID 1 num nico sistema. Fornece
segurana efetuando espelhamento de todos os dados num conjunto secundrio de
discos enquanto utiliza listagem em cada conjunto de discos para acelerar as transferncias de dados. O RAID 10 permite no mximo 2 discos avariados de 2 pares
diferentes.

Linux Servers Revolutions

Pgina 61

Linux Force

Implementando RAID + LVM

O volume de disco RAID 10 ideal para organizaes que executam bases de dados
e outras aplicaes com base em transaes que requerem eficincia de armazenamento e proteo de dados crticos.
Em artigos que comparam os nveis RAID 5 e RAID 10, as respostas do RAID 10
foram melhores, apesar do teste ter sido feito utilizando RAID por hardware, mas
vale a pena a comparao. Veja o grfico abaixo:

RAID 0+1: uma combinao dos nveis 0 (Striping) e 1 (Mirroring), onde os dados so divididos entre os discos para melhorar o rendimento, mas tambm utilizam
outros discos para duplicar as informaes. Assim, possvel utilizar o bom rendimento do nvel 0 com a redundncia do nvel 1. No entanto, necessrio pelo menos
4 discos para montar um RAID desse tipo. Tais caractersticas fazem do RAID 0 + 1

Linux Servers Revolutions

Pgina 62

Linux Force

Implementando RAID + LVM

o mais rpido e seguro, porm o mais caro de ser implantado. Falhando 1 disco, o
sistema vira um RAID 0.

Vantagens:

Segurana contra perda de dados;

Pode falhar 1 dos HDs, ou os dois HDs do mesmo DiskGroup.

Desvantagens:

Alto custo de expanso de hardware (custo mnimo = 4xHDs).

Os drives devem ficar em sincronismo de velocidade para obter a mxima performance.

RAID 50

Linux Servers Revolutions

Pgina 63

Linux Force

Implementando RAID + LVM

RAID 60

RAID 100

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


citados. No esquea que RAID no Backup. Tenha sempre Backup.

Linux Servers Revolutions

Pgina 64

Linux Force

Implementando RAID + LVM

5.0.4 Introduo Terica LVM

"O LVM (Logical Volume Manager) um recurso includo no Kernel Linux a partir da
verso 2.4 que cria uma camada de abstrao entre o sistema operacional e os HDs
(ou outras unidades de armazenamento utilizadas, como o RAID por exemplo). Ele
adiciona alguns complicadores adicionais na configurao, mas, em compensao
oferece um conjunto de vantagens bastante interessantes.

Imagine que no LVM o sistema no v HDs e parties, mas sim um ou mais volumes
lgicos. Cada volume se comporta como se fosse uma partio, que formatada e
montada da forma usual. Estes volumes so agrupados em um grupo de volumes
lgicos (logical volume group) que se comporta de forma similar a um HD.

O pulo do gato que o grupo de volumes lgicos pode combinar o espao de vrios
HDs e ser modificado conforme necessrio, incorporando mais HDs. Os volumes
lgicos dentro dele tambm podem ser redimensionados livremente conforme for
necessrio.

Se voc precisa de mais espao dentro do volume referente pasta /home, por
exemplo, voc poderia reduzir o tamanho de um dos outros volumes do sistema (que
estivesse com espao vago) e aumentar o tamanho do volume referente ao /home,
tudo isso com o servidor operante.

Outra possibilidade ir adicionando novos HDs ao servidor conforme precisar de


mais espao. Ao instalar um novo HD, voc comearia criando um volume fsico,
englobando todo o espao do HD. Uma vez que o volume fsico criado, voc pode
expandir o grupo de volumes lgicos, de forma que ele incorpore o espao referente
ao novo HD. A partir da, voc pode expandir os volumes lgicos, usando o espao
livre.

Caso seja utilizada uma controladora SCSI ou SAS com suporte a hot-swaping,
possvel at mesmo adicionar, remover ou substituir HDs, fazendo as alteraes necessrias nos volumes lgicos, com o servidor ligado!

Linux Servers Revolutions

Pgina 65

Linux Force

Implementando RAID + LVM

importante enfatizar que o LVM apenas uma mudana na forma como o sistema
acessa os discos, ele no um substituto para o RAID. No LVM voc pode agrupar
vrios HDs em um nico grupo de volumes lgicos, mas se um dos HDs apresentar
defeito, o servidor ficar inoperante e voc perder os dados armazenados no disco
afetado, diferente do RAID, onde voc pode sacrificar parte do espao para ter uma
camada de redundncia.

O grupo de volumes lgicos criado pelo instalador visto pelo sistema como "/dev/vg01"e
os volumes lgicos dentro dele so vistos como "/dev/vg01/lv01", "/dev/vg01/lv02",
etc. Os nomes podem ser alterados da maneira que quiser. Naturalmente, possvel tambm deixar de usar o LVM, voltando ao sistema normal de particionamento.
Nesse caso, voc s precisa deletar os volumes e o grupo de volumes lgicos e criar
a parties desejadas usando o espao disponvel.

http://www.hardware.com.br/dicas/entendendo-lvm.html

Uma implementao melhor do LVM em conjunto com volumes RAID, pois no caso
de falhar um dos discos, continuamos com a leitura/gravao nos demais. Em relao ao usurio, o mesmo nem saber que tem toda esta estrutura por trs da
manipulao dos dados!

Linux Servers Revolutions

Pgina 66

Linux Force

Implementando RAID + LVM

5.0.5 Laboratrio RAID


Vamos adicionar 4 discos de 5GB no Servidor DataCenter para realizarmos este
laboratrio. Este servidor j possui RAID-1 sem SPARE, portanto iremos fazer as
configuraes usando um RAID-5 com SPARE, alm de verificarmos o arquivo de
monitorao.
Primeiro crie uma partio primria em cada um dos discos com o espao total do
disco, sendo esta partio do tipo Linux raid autodetect (fd):

root@datacenter :~ # cfdisk / dev / sdc

root@datacenter :~ # cfdisk / dev / sdd

root@datacenter :~ # cfdisk / dev / sde

root@datacenter :~ # cfdisk / dev / sdf

Verifique se as parties esto disponveis:

root@datacenter :~ # cat / proc / partitions

CASO no aparea as parties, instale o pacote parted e execute o utilitrio partprobe, verificando posteriormente:

root@datacenter :~ # aptitude install parted ; partprobe

root@datacenter :~ # cat / proc / partitions

32

83886080 sdc

33

83007823 sdc1

48

83886080 sdd

49

83007823 sdd1

64

83886080 sde

65

83007823 sde1

16

83886080 sdf

10

17

82909184 sdf1

Linux Servers Revolutions

Pgina 67

Linux Force

Implementando RAID + LVM

11

82908088 md0

# parti o RAID sda1 / sdb1

12

253

9764864 dm -0

# parti o LVM existente

13

253

4882432 dm -1

# parti o LVM existente

14

253

1949696 dm -2

# parti o LVM existente

Com os discos preparados, vamos iniciar a instalao e os procedimentos nestes


discos. Lembramos que, como J EXISTE um RAID-1 com 2 discos na mquina,
iremos usar o /dev/sdc1, /dev/sdd1, /dev/sde1 e /dev/sdf1.

Se for instalar num servidor sem RAID, ter que fazer a instalao:

root@datacenter :~ # aptitude install mdadm

Vamos fazer uso do utilitrio splitvt (instalado anteriormente), que faz uma diviso
na tela do terminal, facilitando a execuo dos comando e verificao de logs. Para
usar esta combinao, digite no terminal splitvt e veja a sada:

Linux Servers Revolutions

Pgina 68

Linux Force

Implementando RAID + LVM

Configurando o RAID-5

Em uma das telas do splitvt execute o comando para monitorao do RAID:

root@datacenter :~ # watch - n1 cat / proc / mdstat

2
3
4

md0 : active raid1 sda1 [0] sdb1 [1]


82908088 blocks super 1.2 [2/2] [ UU ]

Na outra tela execute o comando para a criao do RAID-5:

root@datacenter :~ # mdadm -- create / dev / md1 -- level =5 \

-- raid - devices =3 -- spare - devices =1 / dev / sdc1 / dev / sdd1 \

/ dev / sde1 / dev / sdf1

mdadm : / dev / sdc1 appears to be part of a raid array :

5
6
7
8
9
10
11

level = raid5 devices =3 ctime = Thu Oct

6 17:23:36 2011

mdadm : / dev / sdd1 appears to be part of a raid array :


level = raid5 devices =3 ctime = Thu Oct

6 17:23:36 2011

mdadm : / dev / sde1 appears to be part of a raid array :


level = raid5 devices =3 ctime = Thu Oct

6 17:23:36 2011

mdadm : / dev / sdf1 appears to be part of a raid array :


level = raid5 devices =3 ctime = Thu Oct

12

Continue creating array ? y

13

mdadm : Defaulting to version 1.2 metadata

14

mdadm : array / dev / md1 started .

6 17:23:36 2011

Veja a sada:

root@datacenter :~ # watch - n1 cat / proc / mdstat

2
3

md1 : active ( auto - read - only ) raid5 sde1 [4]( S ) sdf1 [3]( S ) sdd1 [1]
sdc1 [0]

Linux Servers Revolutions

Pgina 69

Linux Force

Implementando RAID + LVM

10471424 blocks super 1.2 level 5 , 512 k chunk , algorithm 2


[3/2] [ UU_ ]

Neste exemplo criamos o RAID-5, porm ele no ativou um dos discos, neste caso o
/dev/sde1, conforme o item [UU_]. Para resolver isto devemos executar:

root@datacenter :~ # mdadm -- readwrite / dev / md1

Isto far com que o volume RAID seja atualizado. Veja a sada em:

root@datacenter :~ # watch - n1 cat / proc / mdstat

md1 : active raid5 sde1 [4] sdf1 [3]( S ) sdd1 [1] sdc1 [0]

10471424 blocks super 1.2 level 5 , 512 k chunk , algorithm 2 [3/2]


[ UU_ ]

[ >........]

recovery =

3.5% (188672/5235712) finish =4.0 min

speed =20963 K / sec

Aps alguns minutos, a atualizao estar terminada!


Outro problema na montagem do RAID pode ser visto abaixo:

root@datacenter :~ # cat / proc / mdstat

Personalities : [ raid1 ] [ raid6 ] [ raid5 ] [ raid4 ]

md1 : active raid5 sde1 [4] sdf1 [3]( S ) sdd1 [1] sdc1 [0]

10471424 blocks super 1.2 level 5 , 512 k chunk , algorithm 2 [3/3]


[ UUU ]

resync = PENDING

Faa o mesmo procedimento para resolver isto: mdadm readwrite /dev/md1


Bom, agora que o RAID est criado e ajustado para gravao, vamos configurar
o arquivo /etc/mdadm/mdadm.conf:

Linux Servers Revolutions

Pgina 70

Linux Force

Implementando RAID + LVM

root@datacenter :~ # vim / etc / mdadm / mdadm . conf

Adicione no final do arquivo o seguinte contedo:

DEVICE

ARRAY

/ dev / sdc1 / dev / sdd1 / dev / sde1 / dev / sdf1


/ dev / md1

devices =/ dev / sdc1 ,/ dev / sdd1 ,/ dev / sde1 ,/ dev / sdf1

Verifique o status do volume RAID-5 com o comando:

root@datacenter :~ # watch - n1 cat / proc / mdstat

Personalities : [ raid1 ] [ raid6 ] [ raid5 ] [ raid4 ]

md1 : active ( auto - read - only ) raid5 sdc1 [0] sdf1 [3]( S ) sde1 [4]
sdd1 [1]

10471424 blocks super 1.2 level 5 , 512 k chunk , algorithm 2 [3/3]


[ UUU ]

Agora verifique os detalhes do RAID-5

root@datacenter :~ # mdadm -- detail / dev / md1

Raid Level : raid5

Array Size : 10471424 (9.99 GiB 10.72 GB )

Raid Devices : 3

Total Devices : 4

Active Devices : 3

Spare Devices : 1

Number

Major

Minor

RaidDevice State

33

active sync

/ dev / sdc1

10

49

active sync

/ dev / sdd1

11

65

active sync

/ dev / sde1

12

81

spare

Linux Servers Revolutions

/ dev / sdf1

Pgina 71

Linux Force

Implementando RAID + LVM

Vamos criar um diretrio, formatar e efetuar a montagem:

root@datacenter :~ # mkdir / mnt / raid

root@datacenter :~ # mkfs . ext4 -m .0 / dev / md1

root@datacenter :~ # mount -t ext4 / dev / md1 / mnt / raid

Verifique a montagem:

root@datacenter :~ # df - hT

/ dev / md1

ext4

9 ,9 G

151 M

9 ,7 G

2% / mnt / raid

Agora vamos desmontar e parar o RAID-5:

1
2

root@datacenter :~ # umount / mnt / raid ; mdadm -S / dev / md1


mdadm : stopped / dev / md1

Para reiniciar o RAID, execute:

1
2

root@datacenter :~ # mdadm - As / dev / md1


mdadm : / dev / md1 has been started with 4 drives .

Efetue a montagem novamente

root@datacenter :~ # mount -t ext4 / dev / md1 / mnt / raid

Agora vamos desmontar e parar o RAID-5...

root@datacenter :~ # umount / mnt / raid ; mdadm -S / dev / md1

Linux Servers Revolutions

Pgina 72

Linux Force

Implementando RAID + LVM

...e COMENTAR as linhas referentes ao RAID-5

root@datacenter :~ # vim / etc / mdadm / mdadm . conf

# DEVICE

/ dev / sdc1 / dev / sdd1 / dev / sde1 / dev / sdf1

# ARRAY

/ dev / md1devices =/ dev / sdc1 ,/ dev / sdd1 ,/ dev / sde1 ,/ dev / sdf1

Agora tente reiniciar o RAID-5:

1
2

root@datacenter :~ # mdadm - As / dev / md1


mdadm : / dev / md1 not identified in config file .

Perceba que se voc no configurar corretamente o mdadm.conf o RAID no ir


funcionar. Volte ao arquivo e descomente as linhas, reiniciando o RAID:

1
2

root@datacenter :~ # mdadm - As / dev / md1


mdadm : / dev / md1 has been started with 4 drives .

Para testar o RAID, iremos criar um "script"que escrever a data de 3 em 3 segundos


dentro do arquivo "/mnt/raid/dados.txt".

root@datacenter :~ # vim / root / testaraid . sh

# !/ bin / bash

while true ; do

date >> / mnt / raid / dados . txt

sleep 3

done

Ajuste as permisses, execute e verifque o resultado:

root@datacenter :~ # chmod + x / root / testaraid . sh

Linux Servers Revolutions

Pgina 73

Linux Force

root@datacenter :~ # / root / testaraid . sh &

root@datacenter :~ # tail -f / mnt / raid / dados . txt

Implementando RAID + LVM

Na tela do splitvt, acompanhe o que acontece com cada comando executado. Vamos
inicialmente simular uma falha no disco sdd1. Digite:

root@datacenter :~ # mdadm / dev / md1 -- fail / dev / sdd1

Verifique que o script continua em andamento...

root@datacenter :~ # tail -f / mnt / raid / dados . txt

Agora temos que remover o disco defeituoso :

root@datacenter :~ # mdadm / dev / md1 -- remove / dev / sdd1

E adicionar um novo disco :

root@datacenter :~ # mdadm / dev / md1 -- add / dev / sdd1

O novo disco /dev/sdd1 ficar como SPARE!


Agora cancele o script e desmonte o /mnt/raid para configurarmos o LVM.

root@datacenter :~ # jobs -l

root@datacenter :~ # kill -9 < PID_do_testaraid . sh >

root@datacenter :~ # cd ; umount / mnt / raid

Linux Servers Revolutions

Pgina 74

Linux Force

Implementando RAID + LVM

A formatao e montagem do volume se dar em cima do LVM. No prximo passo


iremos configurar e testar o LVM.

Laboratrio LVM

Como efetuamos a instalao do servidor Debian GNU/Linux em cima de um volume


RAID+LVM, o pacote j est instalado! SE for instalar, digite:

root@datacenter :~ # aptitude install lvm2

Os comandos utilizados para os testes com o LVM so:

PV ( Phisical Volume )

pvs - sa da resumida

pvscan

pvdisplay - sa da detalhada

- sa da simples

5
6

VG ( Volume Group )

vgs - sa da resumida

vgscan

vgdisplay - sa da detalhada

- sa da simples

10
11

LV ( Logical Volume )

12

lvs - sa da resumida

13

lvscan

14

lvdisplay - sa da detalhada

- sa da simples

Vamos verificar nossos Volumes Lgicos por meio dos comandos detalhados, tomando como base para a produo de relatrios. Primeiro o PV:

root@datacenter :~ # pvdisplay

Linux Servers Revolutions

Pgina 75

Linux Force

Implementando RAID + LVM

--- Physical volume ---

PV Name

/ dev / md0

VG Name

root_vg

PV Size

79 ,07 GiB / not usable 952 ,00 KiB

PE Size

4 ,00 MiB

Total PE

20241

Free PE

15951

Allocated PE

4290

Agora do VG:

root@datacenter :~ # vgdisplay

--- Volume group ---

VG Name

root_vg

VG Status

resizable

VG Size

79 ,07 GiB

PE Size

4 ,00 MiB

Total PE

20241

Alloc PE / Size

4290 / 16 ,76 GiB

Free

15951 / 62 ,31 GiB

PE / Size

E finalmente os Lvs (exemplo apenas do lv_raiz):

root@datacenter :~ # lvdisplay

--- Logical volume ---

LV Name

/ dev / root_vg / lv_raiz

VG Name

root_vg

LV Size

9 ,31 GiB

Current LE

2384

Agora que sabemos como gerar um relatrio do LVM e vimos como foi criado na
instalao do sistema, passemos para a criao de um novo VG para se trabalhar

Linux Servers Revolutions

Pgina 76

Linux Force

Implementando RAID + LVM

com os perfis dos usurios do Samba. Primeiro devemos adicionar um PV, sendo
neste caso o volume RAID-5 criado anteriormente:

1
2

root@datacenter :~ # pvcreate / dev / md1


Physical volume " / dev / md1 " successfully created

Vamos checar os PVs do sistema:

1
2
3

root@datacenter :~ # pvdisplay
--- Physical volume --"/ dev / md1 " is a new physical volume of " 9 ,98 GiB "

--- NEW Physical volume ---

PV Name

VG Name

PV Size

/ dev / md1
9 ,98 GiB

Perceba que o sistema nos informa de que o /dev/md1 um novo volume fsico e
que no faz parte de nenhum VG! Sendo assim, vamos criar um novo VG com este
PV (/dev/md1):

1
2

root@datacenter :~ # vgcreate samba_vg / dev / md1


Volume group " samba_vg " successfully created

Vamos checar os VGs do sistema:

1
2

root@datacenter :~ # vgdisplay -v samba_vg


Finding volume group " samba_vg "

--- Volume group ---

VG Name

samba_vg

Format

lvm2

VG Size

9 ,98 GiB

Linux Servers Revolutions

Pgina 77

Linux Force

Implementando RAID + LVM

PE Size

4 ,00 MiB

Total PE

2556

Alloc PE / Size

0 / 0

Free

2556 / 9 ,98 GiB

10
11

PE / Size

--- Physical volumes ---

12

PV Name

/ dev / md1

13

Total PE / Free PE

2556 / 2556

Finalmente vamos criar um volume lgico (LV) dentro do VG samba_vg:

1
2

root@datacenter :~ # lvcreate -L 6 G -n samba_lv samba_vg


Logical volume " samba_lv " created

Verifique o relatrio deste LV:

root@datacenter :~ # lvdisplay -v samba_vg

--- Logical volume ---

LV Name

/ dev / samba_vg / samba_lv

VG Name

samba_vg

LV Size

6 ,00 GiB

Current LE

1536

Agora que temos um volume lgico criado, vamos formatar :

root@datacenter :~ # mkfs . ext4 -m .0 / dev / samba_vg / samba_lv

Finalizando, vamos criar um ponto de montagem e montar:

root@datacenter :~ # mkdir / mnt / lvm

root@datacenter :~ # mount -t ext4 / dev / samba_vg / samba_lv / mnt / lvm /

root@datacenter :~ # df - hT | tail - n2

Linux Servers Revolutions

Pgina 78

Linux Force

4
5

Implementando RAID + LVM

/ dev / mapper / samba_vg - samba_lv


ext4

6 ,0 G

140 M

5 ,8 G

3% / mnt / lvm

Aps estes procedimentos, teremos uma unidade lgica mapeada e pronta para uso!
Vamos gravar alguns dados nesta unidade para realizarmos alguns testes.

root@datacenter :~ # cp - rv / boot /* / mnt / lvm ; cp - rv / sbin /* / mnt / lvm

root@datacenter :~ # du - sh / mnt / lvm /

21 M / mnt / lvm /

Vamos supor que o espao alocado para a unidade lgica no ir atender s necessidades da empresa! Neste caso teremos que aumentar o espao da unidade lgica,
sem a necessidade de movermos dados do local ou mesmo introduzir um novo disco
no servidor. Primeiro desmonte o LV e depois execute seguintes passos:

root@datacenter :~ # umount / mnt / lvm

root@datacenter :~ # lvextend -L +2 g / dev / samba_vg / samba_lv

Extending logical volume samba_lv to 8 ,00 GiB

Logical volume samba_lv successfully resized

O comando acima diz para aumentar em 15GB o LV /dev/samba_vg/samba_lv .


Como vemos, o volume total ficou em 25GB. Mas o que fizemos foi informar apenas
ao LVM que o volume lgico foi estendido, porm o sistema em si ainda no sabe da
mudana. Para isto devemos executar os comandos abaixo, sendo o primeiro para
checar a integridade do volume e o segundo para redimensionar o tamanho:

root@datacenter :~ # e2fsck -f / dev / samba_vg / samba_lv

e2fsck 1.41.12 (17 - May -2010)

Pass 1: Checking inodes , blocks , and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Linux Servers Revolutions

Pgina 79

Linux Force

Implementando RAID + LVM

Pass 5: Checking group summary information

/ dev / samba_vg / samba_lv :396/393216 files (0.3%


non - contiguous ) ,65834/1572864 blks

9
10

root@datacenter :~ # resize2fs / dev / samba_vg / samba_lv


Resizing the filesystem on / dev / samba_vg / samba_lv to
2097152(4 k ) blocks .

11

The filesystem on / dev / samba_vg / samba_lv is now 2097152 blocks long .

Pronto! Agora monte a partio e veja o tamanho e o total dos dados que nela
estavam:

root@datacenter :~ # mount -t ext4 / dev / samba_vg / samba_lv / mnt / lvm /

root@datacenter :~ # df - hT | tail - n2

/ dev / mapper / samba_vg - samba_lv


ext4

4
5

7 ,9 G

163 M

7 ,8 G

1% / mnt / lvm

root@datacenter :~ # du - sh / mnt / lvm /

21 M / mnt / lvm /

Observe os detalhes da parti o redimensionada :

root@datacenter :~ # lvdisplay / dev / samba_vg / samba_lv

--- Logical volume ---

10

LV Name

/ dev / samba_vg / samba_lv

11

VG Name

samba_vg

12

LV Size

8 ,00 GiB

13

Current LE

2048

Agora suponha que, seja l qual for o motivo, voc precise reduzir o espao do LV.
Como proceder? Ser que irei perder meus dados? E agora? Calma! Para isto
devemos nos atentar para alguns detalhes sobre os passos a serem feitos. Vamos
l, primeiro passo desmontar a partio. Depois devemos checar a integridade da
partio para finalmente executar o comando que far o resizing.

root@datacenter :~ # umount / mnt / lvm

root@datacenter :~ # e2fsck -f / dev / samba_vg / samba_lv

root@datacenter :~ # resize2fs -p / dev / samba_vg / samba_lv 5 g

Linux Servers Revolutions

Pgina 80

Linux Force

Implementando RAID + LVM

Resizing the filesystem on / dev / samba_vg / samba_lv to


1310720(4 k ) blocks .

Begin pass 3 ( max = 64)

Scanning inode table


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

The filesystem on / dev / samba_vg / samba_lv is now 1310720 blocks long .

Neste exemplo temos uma partio de 8GB e eu desejo reduzir apenas 5GB. Vamos
supor que eu tenha cerca de 3,5GB de dados. Ento, para no quebrar a partio
em cima dos dados, daremos uma folga de alguns gigabytes e efetuamos o comando
de resizing. Agora vamos executar o comando LVM que reduzir de fato o tamanho
da partio:

root@datacenter :~ # lvreduce -L -3 g / dev / samba_vg / samba_lv

WARNING : Reducing active logical volume to 5 ,00 GiB

THIS MAY DESTROY YOUR DATA ( filesystem etc .)

Do you really want to reduce samba_lv ? [ y / n ]: y

Reducing logical volume samba_lv to 5 ,00 GiB

Logical volume samba_lv successfully resized

root@datacenter :~ # e2fsck -f / dev / samba_vg / samba_lv

root@datacenter :~ # resize2fs / dev / samba_vg / samba_lv

resize2fs 1.41.12 (17 - May -2010)

10

Resizing the filesystem on / dev / samba_vg / samba_lv to


5242880(4 k ) blocks .

11

The filesystem on / dev / samba_vg / samba_lv is now 5242880 blocks long .

Os comando acima reduziram de forma lgica o tamanho da partio para que depois
possamos reduzir de forma fsica. Agora s montar e checar os dados!

root@datacenter :~ # mount -t ext4 / dev / samba_vg / samba_lv / mnt / lvm

root@datacenter :~ # df - hT | tail - n2

/ dev / mapper / samba_vg - samba_lv

4
5

ext4

5G

161 M

4 ,8 G

1% / mnt / lvm

root@datacenter :~ # du - sh / mnt / lvm /

Linux Servers Revolutions

Pgina 81

Linux Force

Implementando RAID + LVM

21 M / mnt / lvm /

Para remover a estrutura dos testes , fa amos o seguinte :

root@datacenter :~ # umount / mnt / lvm

root@datacenter :~ # lvremove / dev / samba_vg / samba_lv

10

Do you really want to remove active logical volume samba_lv ? [ y / n ]:


y

11

Logical volume " samba_lv " successfully removed

12
13

-------- Se fosse o caso de remover tudo , use os comandos abaixo


--------

14
15
16
17
18

root@datacenter :~ # vgremove samba_vg


Volume group " samba_vg " successfully removed
root@datacenter :~ # pvremove / dev / md1
Labels on physical volume " / dev / md1 " successfully wiped

A fim de deixarmos nosso ambiente estruturado para a gravao dos perfis do SAMBA,
vamos refazer o LVM da seguinte forma:

1
2

root@datacenter :~ # lvcreate -L 9 ,98 G -n samba_lv samba_vg


Logical volume " samba_lv " created

root@datacenter :~ # mkfs . ext4 -m .0 / dev / samba_vg / samba_lv

root@datacenter :~ # mkdir / srv / samba

root@datacenter :~ # mount -t ext4 / dev / samba_vg / samba_lv / srv / samba /

root@datacenter :~ # df - hT | tail - n2

/ dev / mapper / samba_vg - samba_lv

ext4

9 ,9 G

115 M

9 ,97 G

1% / srv / samba

Agora vamos editar o /etc/fstab e incluir no final do arquivo este novo ponto de montagem. Use o comando abaixo e deixe a entrada conforme o exemplo:

root@datacenter :~ # blkid | grep samba >> / etc / fstab

root@datacenter :~ # vim / etc / fstab

Linux Servers Revolutions

Pgina 82

Linux Force

UUID =4 f9871d2 -92 bd -48 ea -8 d86 -3190 b7afb1f1

Implementando RAID + LVM

/ srv / samba ext4 defaults

0 0

Linux Servers Revolutions

Pgina 83

Captulo 6
Servidor Samba
6.0.6 Cenrio

A empresa Dexter Courier possui WorkStation com o Sistema Operacional GNU/Linux e Microsoft Windows e pretende criar uma rede com estes dois ambientes.
Como a empresa necessita de flexibilidade, deseja que seus usurios possam se
logar no sistema em qualquer computador, podendo acessar arquivos do compartilhamento pblico, do respectivo setor e tambm imprimir. Pensando em questes de
segurana, deseja que todos os acessos aos compartilhamentos sejam autenticados
e logados. A empresa no deseja gastar com licena de um servidor de arquivos.
A rede possui mquinas com Windows XP e Windows 7. Os arquivos de cada um
dos setores precisam ser gravados no Storage para fins de backup e os arquivos do
perfil dos usurios precisam ficar no RAID (disponibilidade).

6.0.7 Proposta de soluo

A melhor soluo um servidor GNU/Linux com Samba pois, alm de ser gratuito,
possui muitas funcionalidades e flexibilidade, tornando-o superior aos servidores com
cdigo proprietrio. O servidor dever atender aos seguintes requisitos:

Linux Force

Servidor Samba

domnio com perfil mvel (roaming profile); autenticao de usurios; nome netbios; gerador de logs nvel 1; gravao de arquivos com extenso mp3, mpg,
mpeg, avi, wav e jpg vetada no compartilhamento; arquivos com extenses .ini
e .log devero ficar ocultos; sistema de lixeira para cada compartilhamento; impressora compartilhada; acesso restrito rede local; mapeamento de unidade
de rede por grupo; possibilidade do usurio alterar sua senha; criao de arquivo/diretrio em letra minscula; compartilhamento oculto para uso da equipe
de suporte; codificao dos caracteres para ambos os sistemas; relatrios de
quem est conectado ao servidor.

6.0.8 Introduo terica


O Samba um servidor para Linux (e outros sistemas baseados em Unix) que permite o gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows. Assim, possvel usar o Linux como servidor de arquivos,
servidor de impresso, entre outros, como se a rede utilizasse servidores Windows
(NT, 2000, XP, 2003 ou 2008).
O Samba uma criao de Andrew Tridgell. O que aconteceu foi que Tridgell precisava montar um espao em disco em seu PC para um servidor Unix. Esse PC
rodava o sistema operacional MS-DOS e, inicialmente, foi utilizado o sistema de arquivos NFS (Network File System) para o acesso. Porm, um aplicativo precisava de
suporte ao protocolo NetBIOS (no suportado pelo NFS). A soluo encontrada por
Tridgell no foi to simples: ele escreveu um sniffer (pequeno programa para captura
de trfego de dados em rede) que permitisse analisar o trfego de dados gerado
pelo protocolo NetBIOS, fez engenharia reversa no protocolo SMB (Server Message
Block) e o implementou no Unix. Isso fez com que o servidor Unix aparecesse como
um servidor de arquivos Windows em seu PC com DOS.
O cdigo foi disponibilizado publicamente por Tridgell em 1992. Porm, tempos depois, o projeto foi posto de lado at que um determinado dia Tridgell decidiu conectar
o PC de sua esposa ao seu computador com Linux. Porm, no encontrou nenhum
meio melhor que seu cdigo para fazer isso e assim o utilizou.

Linux Servers Revolutions

Pgina 85

Linux Force

Servidor Samba

Atravs de contatos feitos por e-mail, Tridgell descobriu que as documentaes dos
protocolos SMB e NetBIOS estavam atualizadas e assim voltou a dedicar-se ao projeto. Porm, uma empresa entrou em contato com ele reivindicando os direitos sobre
o nome usado no software at ento. Diante disso, Andrew Tridgell teve a idia de
procurar em um dicionrio uma palavra que tivesse as letras s, m e b (de SMB). A
busca retornou apenas as palavras "salmonberry", "samba", "sawtimber"e "scramble", de forma que a escolha do nome acabou sendo bvia. A partir da o projeto
Samba cresceu e hoje Andrew Tridgell conta com uma excelente equipe de programadores e com milhares de usurios de sua soluo espalhados pelo mundo. [
http://www.infowester.com/linuxsamba.php
A sute SAMBA precisa de trs componentes para realizar sua funo:

nmbd - Responsvel pela resoluo de nomes;

smbd - Responsvel por compartilhar recursos;

winbind - Auxilia na autenticao em um domnio AD.

6.0.9 subsection name


O que um Domnio?
Domnio um conjunto de usurios conhecidos (cadastrados) que podem utilizar vrias mquinas, em vrios locais diferentes. O usurio no fica preso a uma mquina
especfica, pois os arquivos dele so centralizados no servidor Samba PDC e o seu
perfil mvel. O que uma eleio?
necessrio uma eleio quando existe mais de uma mquina querendo ser domnio
na rede. Existem algumas opes na configurao do smb.conf na seo global que
fazem com que o nosso servidor leve vantagem nesta eleio. Veremos isto mais
adiante.

Linux Servers Revolutions

Pgina 86

Linux Force

Servidor Samba

Primeiro vamos iniciar este lab instalando o samba.

root@datacenter :~ # aptitude install samba samba - doc smbclient smbfs

Faa um backup do arquivo padro do samba para efeito de consulta posterior:

root@datacenter :~ # cp / etc / samba / smb . conf / etc / samba / smb . conf . distro

RedHat: Na plataforma RedHat, o arquivo de configurao do samba fica em


/etc/smb.conf

Fique atento, as opes que iremos estudar agora podero ser cobradas na
prova do LPI nvel 2.

Segundo, vamos montar a estrutura de nosso servidor Samba, com a lista dos usurios, grupos e permisses. A empresa Dexter Courier possui o seguinte quadro de
funcionrios:

Linux Servers Revolutions

Pgina 87

Linux Force

Servidor Samba

Para nos ajudar nessa rdua tarefa, vamos compor uma lista com o nome e o login
de cada membro da empresa Dexter Courier. Depois gere uma lista somente com o
login de cada usurio e salve em /root/lista_users.txt do servidor, assim poderemos
utilizar scripts na criao e administrao do Samba.

Dexter Clem

- dexterclem

Mandark Glory

- mandarkglory

Levinsky Mitch

- levinskymitch

Douglas E . Mordechai - douglasmordechai

Chris Cavanaugh

- chriscavanaugh

Candi Milo

- candimilo

Allison Moore

- allisonmoore

Kathryn Cressida

- kathryncressida

Kath Soucie

- kathsoucie

10

Jeff Bennett

- jeffbennett

11

Eddie Deezen

- eddiedeezen

12

Frank Welker

- frankwelker

13

Luzinsky Brooks

- luzinskybrooks

14

VOC

- voce

A senha padro para todos ser 123456. bvio que no mundo real isto no
ocorrer. A ideia aqui facilitar os testes! Agora vamos criar os grupos...

root@datacenter :~ # addgroup -- gid 2001 administrativo

root@datacenter :~ # addgroup -- gid 2002 comercial

root@datacenter :~ # addgroup -- gid 2003 logistica

root@datacenter :~ # addgroup -- gid 2004 rh

root@datacenter :~ # addgroup -- gid 2005 suporte

root@datacenter :~ # addgroup -- gid 2006 pdc

. . . os diretrios de trabalho do Samba...

root@datacenter :~ # mkdir -p \

Linux Servers Revolutions

Pgina 88

Linux Force

Servidor Samba

/ srv / storage /{ administrativo , rh , comercial , logistica , suporte }

root@datacenter :~ # mkdir -p / srv / storage / drivers

. . . e definir as permisses de acesso:

1
2

root@datacenter :~ # chown -R root : administrativo \


/ srv / storage / administrativo

root@datacenter :~ # chown -R root : rh / srv / storage / rh

root@datacenter :~ # chown -R root : comercial / srv / storage / comercial

root@datacenter :~ # chown -R root : logistica / srv / storage / logistica

root@datacenter :~ # chown -R root : suporte


/ srv / storage /{ suporte , drivers }

root@datacenter :~ # chmod - Rv 3770 / srv / storage /*

Tambm devemos criar a estrutura do compartilhamento pblico:

root@datacenter :~ # useradd -g users -s / bin / false smbuser

root@datacenter :~ # mkdir / srv / storage / publico

root@datacenter :~ # chown -R smbuser : users / srv / storage / publico

root@datacenter :~ # chmod -R 770 / srv / storage / publico

Agora iremos preparar o ambiente para a configurao do PDC:

root@datacenter :~ # mkdir -p / srv / samba /{ homes , profiles , netlogon }

root@datacenter :~ # chown -R root : users \

3
4

/ srv / samba /{ homes , profiles , netlogon }


root@datacenter :~ # chmod -R 770 / srv / samba /{ homes , profiles , netlogon }

Vamos adicionar os usurios aos grupos criados:

Linux Servers Revolutions

Pgina 89

Linux Force

Servidor Samba

root@datacenter :~ # useradd -g administrativo -G


comercial , rh , logistica , suporte , users -s / bin / false dexterclem

root@datacenter :~ # useradd -g administrativo -G users -s / bin / false


mandarkglory

root@datacenter :~ # useradd -g administrativo -G users -s / bin / false


levinskymitch

root@datacenter :~ # useradd -g administrativo -G users -s / bin / false


douglasmordechai

root@datacenter :~ # useradd -g comercial -G users -s / bin / false


chriscavanaugh

root@datacenter :~ # useradd -g comercial -G users -s / bin / false


candimilo

root@datacenter :~ # useradd -g comercial -s / bin / false allisonmoore

root@datacenter :~ # useradd -g rh -G users -s / bin / false


kathryncressida

root@datacenter :~ # useradd -g rh -G users -s / bin / false kathsoucie

10

root@datacenter :~ # useradd -g rh -G users -s / bin / false jeffbennett

11

root@datacenter :~ # useradd -g logistica -G users -s / bin / false


eddiedeezen

12

root@datacenter :~ # useradd -g logistica -G users -s / bin / false


frankwelker

13

root@datacenter :~ # useradd -g logistica -G users -s / bin / false


luzinskybrooks

14

root@datacenter :~ # useradd -g suporte -G users -s / bin / false voce

Veja o arquivo /etc/passwd:

root@datacenter :~ # tail - n14 / etc / passwd

dexterclem : x :1001:2001::/ home / dexterclem :/ bin / false

mandarkglory : x :1002:2001::/ home / mandarkglory :/ bin / false

voce :x :1014:2005::/ home / voce :/ bin / false

A fim de agilizar a preparao de nosso cenrio, vamos montar um script para alterar
o diretrio home e profile dos usurios, criar o diretrio da lixeira e ingressar os
usurios no Samba. Depois d permisso de execuo e execute o script!

Linux Servers Revolutions

Pgina 90

Linux Force

root@datacenter :~ # vim / root /01 _samba_pdc . sh

# !/ bin / bash

for lista in $ ( cat / root / lista_users . txt ) ; do

mkdir -p / srv / samba / homes / $lista

mkdir -p / srv / samba / profiles / $lista

chown -R $lista : users / srv / samba / homes / $lista

chown -R $lista : users / srv / samba / profiles / $lista

chmod -R 0700 / srv / samba / homes / $lista

chmod -R 0700 / srv / samba / profiles / $lista

10

mkdir -p / srv / lixeiras / $lista

11

chown -R $lista : users / srv / lixeiras / $lista

12

chmod -R 0700 / srv / lixeiras / $lista

13

usermod -d / srv / samba / homes / $lista $lista

14

pdbedit -x -u $lista 2 > / dev / null

15

( echo 123456 ; echo 123456) | smbpasswd -a -s $lista

16

Servidor Samba

done

Pronto! J temos os diretrios, grupos, usurios, permisses de acesso e incluso


ao SAMBA. Vamos configurar o /etc/samba/smb.conf:

root@datacenter :~ # vim / etc / samba / smb . conf

[ global ]

workgroup = DEXTER

netbios name = Servidor

server string = Servidor de Arquivos Linux

# Habilitando o Samba como PDC

os level = 100

preferred master = yes

domain logons = yes

10

domain master = yes

11

local master = yes

12

# Habilitando os LOGs

13

log file = / var / log / samba / log .% m

14

log level = 1

Linux Servers Revolutions

Pgina 91

Linux Force

15
16

Servidor Samba

max log size = 1000


# N vel de seguran a

17

enable privileges = yes

18

security = user

19

encrypt passwords = yes

20

passdb backend = tdbsam

21

admin users = root

22

hosts allow = 192.168. X .

23

# Acesso a m quinas com Windows98

24

lanman auth = yes

25

client lanman auth = yes

26
27
28

# Permiss o de grava o no Storage NFS


posix locking = no
# Servidor Wins

29

wins support = yes

30

# Melhorando o desempenho do Samba

31

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE


SO_RCVBUF =8192 SO_SNDBUF =8192

32

read raw = yes

33

write raw = yes

34

oplocks = yes

35

getwd cache = yes

36

# Mapear unidade para arquivos pessoais do usu rio

37

logon drive = H :

38

logon home = \\% L \ homes \% U

39

logon path = \\% L \ profiles \% U

40

logon script = % G . cmd

41
42

# Script para criar conta de m quina


add machine script = / usr / sbin / useradd -r -g pdc -c " SAMBA
PDC " -d / dev / null -s / bin / false % u

43

# Samba falando portugu s

44

dos charset = CP850

45

unix charset = UTF -8

46

display charset = CP850

47

# Habilitando o Samba a imprimir

48

printing = cups

49

load printers = yes

Linux Servers Revolutions

Pgina 92

Linux Force

50

Servidor Samba

# Samba responde em determinada interface de rede

51

interfaces = eth0

52

bind interfaces only = yes

53

# Habilitando o usu rio a trocar sua senha

54

unix password sync = yes

55

passwd program = / usr / bin / passwd % u

56

passwd chat = * Enter \ snew \ s *\ spassword :* % n \ n


* Retype \ snew \ s *\ spassword :* % n \ n
* password \ supdated \ ssuccessfully * .

57

# Habilitando o Samba a deixar os nomes de arquivos e diret rios


todos em min sculos

58

short preserve case = yes

59

case sensitive = no

60
61

default case = lower


# Habilitando o Samba a usar lixeiras em todos os compartilhamentos

62

vfs objects = recycle

63

recycle : keeptree = yes

64

recycle : versions = yes

65

recycle : repository = / srv / lixeiras /% U

66

recycle : exclude = *. tmp ,*. log ,* obj ,~*.* ,*. bak

67

recycle : exclude_dir = tmp , cache

68

[ administrativo ]

69

path = / srv / storage / administrativo

70

available = yes

71

read only = no

72

public = no

73

only guest = no

74

valid users = @administrativo

75

write list = @administrativo

76

force create mode = 660

77

force directory mode = 750

78

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

79

hide files = /*. ini /*. log /

80

[ comercial ]

81

path = / srv / storage / comercial

82

available = yes

83

read only = no

Linux Servers Revolutions

Pgina 93

Linux Force

84

public = no

85

only guest = no

86

valid users = @comercial

87

write list = @comercial

88

force create mode = 660

89

force directory mode = 750

90

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

91

hide files = /*. ini /*. log /

92

[ logistica ]

93

path = / srv / storage / logistica

94

available = yes

95

read only = no

96

public = no

97

only guest = no

98

valid users = @logistica

99

write list = @logistica

100

force create mode = 660

101

force directory mode = 750

102

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

103

hide files = /*. ini /*. log /

104

[ rh ]

105

path = / srv / storage / rh

106

available = yes

107

read only = no

108

public = no

109

only guest = no

110

valid users = @rh

111

write list = @rh

112

force create mode = 660

113

force directory mode = 750

114

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

115

hide files = /*. ini /*. log /

116

Servidor Samba

[ suporte ]

117

path = / srv / storage / suporte

118

available = yes

119

read only = no

120

public = no

Linux Servers Revolutions

Pgina 94

Linux Force

121

only guest = no

122

valid users = @suporte

123

write list = @suporte

124

force create mode = 660

125

force directory mode = 750

126

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

127

hide files = /*. ini /*. log /

128

[ publico ]

129

comment = Publico

130

path = / srv / storage / publico

131

public = yes

132

force user = smbuser

133

force group = users

134

read only = no

135

guest ok = yes

136

force create mode = 664

137

force directory mode = 755

138

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

139

hide files = /*. ini /*. log /

140

[ lixeiras ]

141

path = / srv / lixeiras /% U

142

read only = no

143

browseable = no

144

force create mode = 664

145

force directory mode = 755

146

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

147

hide files = /*. ini /*. log /

148
149

[ printers ]
comment = Samsung ML -2010

150

path = / var / spool / samba

151

browseable = yes

152

read only = no

153

print ok = yes

154

guest ok = yes

155

Servidor Samba

[ netlogon ]

156

comment = Network logon service

157

path = / srv / samba / netlogon

Linux Servers Revolutions

Pgina 95

Linux Force

Servidor Samba

158

writable = no

159

browseable = no

160

[ homes ]

161

comment = Diretorio pessoal

162

path = / srv / samba / homes /% U

163

public = no

164

valid users = % U

165

read only = no

166

browseable = no

167

[ profiles ]

168

comment = Perfis m veis

169

path = / srv / samba / profiles

170

public = no

171

guest ok = yes

172

read only = no

173

browseable = no

174

create mask = 0600

175

directory mask = 0700

176

[ drivers$ ]

177

comment = Drivers Windows

178

path = / srv / storage / drivers

179

public = no

180

inherit permissions = yes

181

valid users = @suporte

182

write list = @suporte

183

only guest = no

184

read only = no

185

force create mode = 600

186

force directory mode = 700

187

veto files = /*. mp3 /*. mpg /*. mpeg /*. avi /*. jpg /

188

hide files = /*. ini /*. log /

Rode o comando testparm para verificar se no h erros na configurao:

root@datacenter :~ # testparm

Load smb config files from / etc / samba / smb . conf

Linux Servers Revolutions

Pgina 96

Linux Force

Servidor Samba

rlimit_max : rlimit_max (1024) below minimum Windows limit (16384)

Processing section " [ administrativo ] "

Processing section " [ comercial ] "

Processing section " [ logistica ] "

Processing section " [ rh ] "

Processing section " [ suporte ] "

Processing section " [ publico ] "

10

Processing section " [ lixeiras ] "

11

Processing section " [ printers ] "

12

Processing section " [ netlogon ] "

13

Processing section " [ homes ] "

14

Processing section " [ profiles ] "

15

Processing section " [ drivers$ ] "

16

Loaded services file OK .

17

WARNING : You have some share names that are longer than 12
characters .

18

These may not be accessible to some older clients .

19

( Eg . Windows9x , WindowsMe , and smbclient prior to Samba 3.0.)

20

Server role : ROLE_DOMAIN_PDC

21

Press enter to see a dump of your service definitions

Adicione o usurio root ao samba para ser o administrador do Domnio:

root@datacenter :~ # smbpasswd -a root

E agora copie os scripts de logon fornecidos pelo Instrutor para o local correto, a
fim de que os usurios Windows possam mapear as unidades da rede:

root@datacenter :~ # cp / root / samba /*. cmd / srv / samba / netlogon /

root@datacenter :~ # chmod 777 / srv / samba / netlogon /*. cmd

Reinicie o servio do samba.

Linux Servers Revolutions

Pgina 97

Linux Force

root@datacenter :~ # service samba restart

Stopping Samba daemons : nmbd smbd .

Starting Samba daemons : nmbd smbd .

Servidor Samba

Para verificar os usurios inseridos no Samba, digite o comando:

root@datacenter :~ # pdbedit - Lw

Adicionando mquina Windows XP ao PDC Samba

Vamos ingressar a mquina WindowsXP ao domnio. Primeiro mude os seguintes


parmetros para que a mquina possa acessar o domnio. Acesse o "Painel de controle > Ferramentas administrativas > Diretiva de segurana local > Diretivas
locais > Opes de segurana"e desative as seguintes opes: (clicando com
o boto direito e depois em Propriedades):

1.Membro do domnio: criptografar ou assinar digitalmente os dados de canal seguro


(sempre);

2.Membro do domnio: desativar alteraes de senha de conta da mquina;

3.Membro do domnio: requer uma chave de sesso de alta segurana (Windows


2000 ou posterior);

4.Reinicie a mquina com Windows XP. Depois disto, siga as prximas figuras:

Linux Servers Revolutions

Pgina 98

Linux Force

Linux Servers Revolutions

Servidor Samba

Pgina 99

Linux Force

Servidor Samba

Abra o Meu Computador e veja os mapeamentos (exemplo usurio Dexter Clem):

Linux Servers Revolutions

Pgina 100

Linux Force

Servidor Samba

Adicionando mquina Windows 7 ao PDC Samba

Primeiro precisa alterar o registro no Windows 7, isso possvel editando manualmente o registro do Windows com os seguintes valores:

HKeyLocalMachine \ System \ CCS \ Services \ LanmanWorkstation \ Parameters

DWORD DomainCompatibilityMode = 1

DWORD DNSNameResolutionRequired = 0

A outra alternativa instalar o registro Win7_Samba3DomainMember.reg, que pode


ser encontrado em:

https://bugzilla.samba.org/attachment.cgi?id=4988&action=view

Linux Servers Revolutions

Pgina 101

Linux Force

Servidor Samba

Aps instalar o registro e reiniciar o sistema, siga as prximas figuras. Clique em


Iniciar => boto direito no cone Computador => Propriedades.

Clique em Configuraes avanadas do sistema:

Linux Servers Revolutions

Pgina 102

Linux Force

Servidor Samba

Clique no boto Alterar:

Linux Servers Revolutions

Pgina 103

Linux Force

Servidor Samba

Selecione Membro de Domnio e digite dexter (sem aspas):

Insira o nome root e a senha do root:

Linux Servers Revolutions

Pgina 104

Linux Force

Servidor Samba

Aps clicar em OK ir aparecer uma mensagem de erro, Clique OK para ignorar e


depois reinicialize o computador:

Quando surgir a tela de login, clique em Trocar Usurio => Outro Usurio e digite
o usurio do Domnio DEXTER:

Linux Servers Revolutions

Pgina 105

Linux Force

Linux Servers Revolutions

Servidor Samba

Pgina 106

Captulo 7
Servidor DNS
Cenrio
A empresa DEXTER COURIER precisa configurar um servidor DNS para que os servios disponibilizados por ela possam ser acessados externamente (Internet) por nomes ao invs de IP. A empresa pretende registrar dois domnios junto ao http://registro.br:
dexter.com.br e mandark.com.br.

7.0.10 Proposta de soluo


O servidor DNS ser montado na mquina DMZ, podendo ser acessada pelo mundo
externo (aps configurao do firewall), sendo replicada para a mquina Datacenter.
Faremos o seguinte:
1 - Neste projeto, dois servidores, o primrio e o secundrio, devem ter um mecanismo configurado corretamente para que eles se mantenham sincronizados;
2 - O DNS reverso deve estar configurado;
3 - Este servidor de DNS deve trabalhar de forma autoritativa (responsvel pelos
domnios dexter.com.br e mandark.com.br) apenas;

Linux Force

Servidor DNS

4 - Configurar o servidor com SPF;


5 - Configurar o servidor corretamente para o uso do comando rndc;
6 - Configurar o servidor primrio para notificar o secundrio quando houver atualizao na zona;
7 - Configurar o servidor primrio para que ocorra atualizao dinmica na zona a
partir dele mesmo;

7.0.11 Introduo terica


Durante os anos 70, Arpanet era uma pequena comunidade de algumas centenas
de hosts. Um nico arquivo, HOSTS.TXT, continha toda a informao necessria
sobre os hosts. Este arquivo continha nome para enderear cada host conectado a
ARPANET.
O arquivo era mantido pela Network Information Center (NIC) e distribuido por um
nico host, Stanford Research Institutes Network Information Center (SRI-NIC). Os
administradores da ARPANET enviavam ao NIC, por e-mail, quaisquer mudanas
que tivessem sido efeituadas e periodicamente SRI-NIC era atualizado, assim como
o arquivo HOSTS.TXT. As mudanas eram compiladas em um novo HOSTS.TXT
uma ou duas vezes por semana. Com o crescimento da ARPANET, entretanto, este
esquema tornou-se invivel. O tamanho do arquivo HOST.TXT crescia na proporo
em que crescia o nmero de hosts. Alm disso, o trfego gerado com o processo
de atualizao crescia em propores ainda maiores uma vez que cada host que era
includo no s significava uma linha a mais no arquivo HOST.TXT, mas um outro
host atualizando a partir do SRI-NIC.
E quando a ARPANET passou a usar protocolos TCP/IP, a populao da rede "explodiu". E passaram a existir alguns problemas com o HOST.TXT:
Nomes que coincidiam : dois hosts do arquivo HOSTS.TXT no podiam ter o

Linux Servers Revolutions

Pgina 108

Linux Force

Servidor DNS

mesmo nome. Porm, apesar do NIC poder designar endereos nicos para
cada host, ele no tinha nenhuma autoridade sobre os nomes dados aos mesmos. No havia nada que pudesse evitar que algum adicionasse um host com
um nome conflitante, interrompendo o sistema de algum outro host j existente.
Consistncia : manter a consistncia do arquivo com a rede se expandindo
quelas propores se tornou cada vez mais difcil. Quando o arquivo conseguia conter todos os hosts, algum host trocava de endereo ou um novo host
adicionado tinha quebrado a conexo do host que se desejava acessar. Ironicamente, o sucesso da ARPANET tornou o arquivo HOSTS.TXT falho e obsoleto.
Os administradores da ARPANET tentaram outras configuraes que resolvessem o
problema do HOST.TXT. O objetivo era criar um sistema que resolvesse os problemas
em uma tabela nica de hosts. O novo sistema deveria: Permitir que o administrador
local tornasse os dados mundialmente disponveis; Descentralizar a administrao
a fim de resolver o problema do gargalo gerado por um nico host, diminuindo o
problema do trfego. Alm disso, o fato da administrao ser local iria fazer com
que a atualizao dos dados se tornasse uma tarefa bem mais simples; O esquema
deveria usar nomes em hierarquia para garantir a exclusividade dos nomes.
Paul Mockapetris, do USCs Information Science Institute, foi o responsvel pela
arquitetura do sistema. Em 1984 ele lanou o RFCs 882 e 883, que descreve o
"Domain Name System", ou DNS. Estes RFCs foram sucedidos pelos RFCs 1034 e
1035, que possuem as especificaes atuais do DNS.

[http://www.gta.ufrj.br/grad/anteriores98/dns-ticiana/historia.htm ]

Caractersticas

Banco de dados hierrquico e distribudo representado no formato de uma rvore invertida e 127 nveis;

Linux Servers Revolutions

Pgina 109

Linux Force

Servidor DNS

"Namespace"de at 63 caracteres;
Capacidade de associar outras informaes a um "host"e no s seus endereos IPs;
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 TLD (top level domains);
Sua quantidade e nomes so impostos pela ICANN - Internet Corporation for
Assigned Names and Numbers;
Eles so divididos em "gTLD"(domnios genricos "com", "edu", "gov", "mil",
etc) e "ccTLD"(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;

Linux Servers Revolutions

Pgina 110

Linux Force

Servidor DNS

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".

7.0.12 Resoluo

Resoluo "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 algum servio, como "HTTP",
"SMTP, "POP", dentre outros. O processo de resoluo, a partir do primeiro "nameserver"consultado, pode ser:

recursiva

iterativa

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");

Linux Servers Revolutions

Pgina 111

Linux Force

Servidor DNS

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;

Linux Servers Revolutions

Pgina 112

Linux Force

Servidor DNS

15.O resolvedor repassa a resposta para o navegador;


16.O 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.

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".

7.0.13 O 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:

Linux Servers Revolutions

Pgina 113

Linux Force

Servidor DNS

Endereco_IP

Hostname_canonico

192.168.200.254

gateway . com . br

Aliases
gateway

Devemos colocar um endereo IP por linha, seguido de um endereo cannico e opcionalmente "aliases"(apelidos). 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. FQDN
(Fully Qualified Domain Name) um "hostname"que identifica, sem ambiguidade,
a posio daquele n dentro da rvore DNS.
Por esta 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.

[http://gnulinuxbr.com/2010/05/04/domain-name-system-servidor-dns-nodebian-parte-1/ ]

Por exemplo:

127.0.0.1

192.168.1.50

localhost
micro50 . dexter . com . br .

micro50

Pode ser acrescentadas quantas entradas forem necessrias, inclusive para IPs externos. Atualmente, os sistemas baseados em Debian j contm entradas para endereamento "IPv6", que seguem a mesma lgica. Poder ver isto executando:

root@dmz :~ # cat / etc / hosts

Linux Servers Revolutions

Pgina 114

Linux Force

...

# The following lines are desirable for IPv6 capable hosts

::1

fe00 ::0 ip6 - localnet

ff00 ::0 ip6 - mcastprefix

ff02 ::1 ip6 - allnodes

ff02 ::2 ip6 - allrouters

Servidor DNS

ip6 - localhost ip6 - loopback

7.0.14 Ferramentas de consulta

Caso ainda no estejam presentes, vamos instalar as ferramentas de pesquisa de


"DNS".

root@dmz :~ # aptitude install dnsutils

nslookup

A "ISC" (Internet Systems Consortium - www.isc.org) 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 "/etc/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.

Linux Servers Revolutions

Pgina 115

Linux Force

Servidor DNS

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.

7.0.15 Prtica dirigida

Antes de testarmos o comando dig, devemos saber o significado de algumas siglas,


facilitando assim o entendimento e melhor aproveitamento deles.

Linux Servers Revolutions

Pgina 116

Linux Force

Servidor DNS

Vamos testar o "verborrgico"comando "dig":

root@dmz :~ # dig www . linuxforce . com . br .

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 5930

;; flags : qr rd ra ; QUERY : 1 , ANSWER : 1 , AUTHORITY : 0 , ADDITIONAL : 0

;; QUESTION SECTION :

; www . linuxforce . com . br .

;; ANSWER SECTION :

www . linuxforce . com . br .

;; Query time : 392 msec

;; SERVER : 4.2.2.2 # 53(4.2.2.2)

10

IN

300 IN

A 66.118.142.41

...

11
12

root@dmz :~ # dig @8 .8.8.8 www . linuxforce . com . br .

13

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 27912

14

;; flags : qr rd ra ; QUERY : 1 , ANSWER : 1 , AUTHORITY : 0 , ADDITIONAL : 0

15

;; QUESTION SECTION :

16

; www . linuxforce . com . br .

17

;; ANSWER SECTION :

18

www . linuxforce . com . br .

IN
300 IN

A
A 66.118.142.41

19
20

;; Query time : 348 msec

21

;; SERVER : 8.8.8.8 # 53(8.8.8.8)

22

...

Linux Servers Revolutions

Pgina 117

Linux Force

Servidor DNS

23
24

root@dmz :~ # dig -t mx gmail . com .

25

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 59238

26

;; flags : qr rd ra ; QUERY : 1 , ANSWER : 5 , AUTHORITY : 0 , ADDITIONAL : 0

27

;; QUESTION SECTION :

28

; gmail . com .

29

;; ANSWER SECTION :

30

gmail . com .

1425

IN

MX

40 alt4 . gmail - smtp - in . l . google . com .

31

gmail . com .

1425

IN

MX

5 gmail - smtp - in . l . google . com .

32

gmail . com .

1425

IN

MX

10 alt1 . gmail - smtp - in . l . google . com .

33

gmail . com .

1425

IN

MX

20 alt2 . gmail - smtp - in . l . google . com .

34

gmail . com .

1425

IN

MX

30 alt3 . gmail - smtp - in . l . google . com .

IN

MX

;; Query time : 136 msec

35
36

;; SERVER : 4.2.2.2 # 53(4.2.2.2)

37

...

38
39

root@dmz :~ # dig -x 177.23.24.127

40

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 64293

41

;; flags : qr rd ra ; QUERY : 1 , ANSWER : 2 , AUTHORITY : 0 , ADDITIONAL : 0

42

;; QUESTION SECTION :

43

;137.122.212.200. in - addr . arpa .

44

;; ANSWER SECTION :

45

137.122.212.200. in - addr . arpa . 43200 IN

PTR
CNAME 137.128 -

191.122.212.200. in - addr . arpa .

46
47

IN

137.128 -191.122.212.200. in - addr . arpa . 3600 IN PTR


ns1 . linuxforce . com . br .

48

;; Query time : 524 msec

49

;; SERVER : 4.2.2.2 # 53(4.2.2.2)

50

...

51
52

root@dmz :~ # dig + trace www . linuxforce . com . br .

53

; <<>> DiG 9.7.3 <<>> + trace www . linuxforce . com . br .

54

;; global options : + cmd

55

30820 IN

NS

h . root - servers . net .

56

30820 IN

NS

l . root - servers . net .

57

30820 IN

NS

m . root - servers . net .

58

30820 IN

NS

i . root - servers . net .

Linux Servers Revolutions

Pgina 118

Linux Force

Servidor DNS

59

30820 IN

NS

j . root - servers . net .

60

30820 IN

NS

d . root - servers . net .

61

30820 IN

NS

f . root - servers . net .

62

30820 IN

NS

e . root - servers . net .

63

30820 IN

NS

c . root - servers . net .

64

30820 IN

NS

a . root - servers . net .

65

30820 IN

NS

b . root - servers . net .

66

30820 IN

NS

k . root - servers . net .

67

30820 IN

NS

g . root - servers . net .

68

;; Received 228 bytes from 4.2.2.2 # 53(4.2.2.2) in 132 ms

69

br .

172800

IN

NS

c . dns . br .

70

br .

172800

IN

NS

f . dns . br .

71

br .

172800

IN

NS

a . dns . br .

72

br .

172800

IN

NS

d . dns . br .

73

br .

172800

IN

NS

b . dns . br .

74

br .

172800

IN

NS

e . dns . br .

75

;; Received 287 bytes from 192.5.5.241 # 53( f . root - servers . net ) in


216 ms

76

linuxforce . com . br .

86400 IN

NS

ns1 . linuxforce . com . br .

77

linuxforce . com . br .

86400 IN

NS

ns2 . linuxforce . com . br .

78

;; Received 103 bytes from 200.189.40.10 # 53( b . dns . br ) in 32 ms

79

www . linuxforce . com . br .

80

linuxforce . com . br .

81

linuxforce . com . br .

60

IN

NS

ns1 . linuxforce . com . br .

82

linuxforce . com . br .

60

IN

NS

ns2 . linuxforce . com . br .

83

;; Received 147 bytes from

300 IN
60

IN

A 66.118.142.41
NS

ns1 . testdrive . linuxforce . com . br .

200.212.122.138 # 53( ns1 . linuxforce . com . br ) in 44 ms

7.0.16 Introduo ao BIND + Laboratrio


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. Ser
este servidor que iremos abordar no curso. Sua instalao bem simples:

Linux Servers Revolutions

Pgina 119

Linux Force

Servidor DNS

root@dmz :~ # aptitude install bind9

O arquivo principal chama-se "/etc/bind/named.conf" mas contm apenas configuraes estticas. Ele utiliza a clusula include para anexar os arquivos "/etc/bind/named.conf.options" e "/etc/bind/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.

root@dmz :~ # ls - lh / etc / bind

Alm dos arquivos citados acima, temos o arquivo "db.root"(no RedHat fica em "/var/named/named.ca") que 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.

Vamos observar a recursividade e as portas envolvidas utilizando o "tcpdump", mas


antes vamos verificar as portas:

root@dmz :~ # netstat - nltup

tcp

0 192.168. X .3:53

0.0.0.0:*

OU A

1602/ named
3

tcp

0 127.0.0.1:53

0.0.0.0:*

OU A

0 :::53

:::*

OU A

1602/ named
4

tcp6

1602/ named

Linux Servers Revolutions

Pgina 120

Linux Force

udp

Servidor DNS

0 127.0.0.1:53

0.0.0.0:*

1653/ named
6

udp

0 192.168. X .3:53

0.0.0.0:*

udp

0 127.0.0.1:53

0.0.0.0:*

0 :::53

:::*

0 :::53

:::*

1602/ named

1602/ named
8

udp6

1653/ named
9

udp6

1602/ named

Instale o sniffer tcpdump:

root@dmz :~ # aptitude install tcpdump

Execute o tcpdump para verificar os pacotes saindo de uma porta alta at a porta
53/udp de seu servidor:

root@dmz :~ # tcpdump -i eth0 -n port 53

tcpdump : verbose output suppressed , use -v or - vv for full protocol


decode

listening on eth0 , link - type EN10MB ( Ethernet ) , capture size 65535


bytes

Em outro terminal execute:

root@dmz :~ # dig @localhost -t any wikipedia . com

Verifique a sada do tcpdump:

19:11:52.396000 IP 192.168. X .3.33625 > 198.41.0.4.53: 12121 [1 au ]


ANY ? wikipedia . com . (42)

Linux Servers Revolutions

Pgina 121

Linux Force

Servidor DNS

19:11:52.396000 IP 192.168. X .3.29726 > 192.33.4.12.53: 39309 [1 au ]


NS ? . (28)

19:11:52.544000 IP 192.33.4.12.53 > 192.168. X .3.29726: 39309* 14/0/23 NS m . root - servers . net . , NS d . root - servers . net . , NS
h. root - servers . net . , NS k . root - servers . net . , NS
g. root - servers . net . , NS i . root - servers . net . , NS
b. root - servers . net . , NS j . root - servers . net . , NS
a. root - servers . net . , NS f . root - servers . net . , NS
c. root - servers . net . , NS l . root - servers . net . , NS
e. root - servers . net . , RRSIG (857)

19:11:52.552000 IP 198.41.0.4.53 > 192.168. X .3.33625: 12121 0/15/16 (737)

Os logs de seu servidor DNS esto em "/var/log/daemon.log". Verifique-os:

root@dmz :~ # tail / var / log / daemon . log

No RedHat e Suse os eventos do servio sero logados diretamente no "/var/log/messages".

7.0.17 BIND como 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

Linux Servers Revolutions

Pgina 122

Linux Force

Servidor DNS

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, maior 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, independente da quantidade de mquinas
da rede, as consultas sero feitas na Internet apenas uma vez a cada intervalo de
atualizao.
Nosso servidor recm instalado j est operando como servidor "cache". Faa uma
consulta e verifique o Query time. Repita o procedimento:

root@dmz :~ # dig @localhost -t soa kernel . org | tail - n6

2
3

;; Query time : 364 msec

;; SERVER : 127.0.0.1 # 53(127.0.0.1)

;; WHEN : Sun Jul 31 19:33:54 2011

;; MSG SIZE

rcvd : 221

7
8

root@dmz :~ # dig @localhost -t soa kernel . org | tail - n6

9
10

;; Query time : 4 msec

11

;; SERVER : 127.0.0.1 # 53(127.0.0.1)

12

;; WHEN : Sun Jul 31 19:33:58 2011

13

;; MSG SIZE

rcvd : 221

Para que a partir de agora todas as nossas aplicaes utilizem o potencial de nosso
servidor "cache", edite o arquivo "/etc/resolv.conf" e mantenha apenas as linhas a
seguir:

root@dmz :~ # vim / etc / resolv . conf

Linux Servers Revolutions

Pgina 123

Linux Force

Servidor DNS

nameserver 127.0.0.1

DICA: No necessria a configurao deste arquivo, pois mesmo sem ele


o servidor continua efetuando as consultas e resolvendo os nomes, alm de fazer
cache!

A fim de termos uma maior segurana em relao s mudanas do arquivo /etc/resolv.conf, podemos adicionar um atributo de proteo a ele, no permitindo qualquer
tipo de alterao:

root@dmz :~ # chattr + i / etc / resolv . conf

7.0.18 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!

[ http://gnulinuxbr.com/2010/05/06/domain-name-system-%E2

Para evitar este comportamento, vamos acrescentar a seguinte restrio no arquivo


"/etc/bind/named.conf.options" (linha 16):

Linux Servers Revolutions

Pgina 124

Linux Force

1
2

Servidor DNS

root@dmz :~ # vim / etc / bind / named . conf . options


allow - query { 127.0.0.1; 192.168. X .0/24; };

Para recarregar as modificaes no "BIND", execute:

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1602 to die .

Starting domain name service ...: bind9 .

Dessa forma, o servidor s responder para consultas originadas localmente!


possvel ser (se desejar!!!) 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. Isto pode ser feito descomentando as
linhas 13, 14 e 15, alm de configurar o IP do DNS do provedor (exemplo do Terra),
no arquivo "/etc/bind/named.conf.options":

root@dmz :~ # vim / etc / bind / named . conf . options

forwarders {

200.176.2.10;

};

Onde IP_DO_PROVEDOR um servidor "DNS"capaz de fazer consultas recursivas. 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

Linux Servers Revolutions

Pgina 125

Linux Force

Servidor DNS

domnio pertencem "zona"daquela autoridade e no mais "zona"original onde


inicia-se o subdomnio.

Tipos de zonas e Registros

Em relao s "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 13 "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 nossas zonas DNS: dexter.com.br e mandark.com.br. Pode ser

Linux Servers Revolutions

Pgina 126

Linux Force

Servidor DNS

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 "/etc/bind/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
"/etc/bind/named.conf.options". Isso significa que, por padro, o caminho completo
corresponderia a "/var/cache/bind/db.dexter"e "/var/cache/bind/db.mandark".
O contedo do banco de dados da "zona"que foi declarado ser principalmente uma
srie de registros de recursos ("resources records"), ou simplesmente, registros. No
entanto, trs diretivas so suportadas:
"$TTL"
"$ORIGIN"
"$INCLUDE"
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 pelo smbolo "@", 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. CH = CHAOS e HS = Hesiod

Linux Servers Revolutions

Pgina 127

Linux Force

Servidor DNS

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, mas 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.X.0/24.

http://gnulinuxbr.com/2010/05/17/domain-name-system-%E2%80%93-

servidor-dns-no-debian-%E2%80%93-parte-3/ ]

Linux Servers Revolutions

Pgina 128

Linux Force

Servidor DNS

7.0.19 Configurao do DNS primrio


Agora iremos configurar o "Bind9", lembrando que estamos fazendo um teste interno,
restringindo as consultas apenas para a rede local, certifique-se de que os arquivos
"/etc/resolv.conf" e "/etc/hosts" estejam corretos. Vamos configurar as duas zonas
de nossos domnios no arquivo "/etc/bind/named.conf.local":

root@dmz :~ # vim / etc / bind / named . conf . local

zone " dexter . com . br " {

type master ;

file " db . dexter " ;

};

zone " mandark . com . br " {

type master ;

file " db . mandark " ;

};

Agora criaremos o banco de dados de registros de "DNS", onde teremos servidores


de e-mail, web e ftp. Primeiro o domnio dexter.com.br.

root@dmz :~ # vim / var / cache / bind / db . dexter

$TTL 86400 ; default para todos os registros sem TTL

@ IN

SOA ns1 . dexter . com . br .

2011073101; serial

8h ; refresh

1h ; retry

3d ; expire

3h); negative caching ttl

root . dexter . com . br . (

10

IN

NS

ns1 . dexter . com . br .

11

IN

MX

10 mail . dexter . com . br .

12

ns1

IN

192.168. X .3

13

www

IN

192.168. X .3

14

ftp

IN

CNAME www

Linux Servers Revolutions

Pgina 129

Linux Force

Servidor DNS

15

mail

IN

16

smtp

IN

CNAME mail

17

webmail

18

pop

IN

CNAME mail

19

imap

IN

CNAME mail

IN

192.168. X .3
CNAME mail

Agora o domnio mandark.com.br:

root@dmz :~ # vim / var / cache / bind / db . mandark

$TTL 86400 ; default para todos os registros sem TTL

@ IN

SOA ns1 . mandark . com . br .

2011073101; serial

8h ; refresh

1h ; retry

3d ; expire

3h); negative caching ttl

10

11

ns1

IN

192.168. X .3

12

www

IN

192.168. X .3

IN

NS

root . mandark . com . br . (

ns1 . mandark . com . br .

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 pra de responder por essa zona;

Linux Servers Revolutions

Pgina 130

Linux Force

Servidor DNS

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.
Vamos checar os arquivos de configurao para ver se no tem erros:

root@dmz :~ # named - checkconf / etc / bind / named . conf . options

root@dmz :~ # named - checkconf / etc / bind / named . conf . local

Se o comando retornar ao prompt significa que est correto! Agora vamos checar
a configurao da zona que temos autoridade:

root@dmz :~ # named - checkzone dexter . com . br / var / cache / bind / db . dexter

zone dexter . com . br / IN : loaded serial 2011073101

OK

root@dmz :~ # named - checkzone mandark . com . br


/ var / cache / bind / db . mandark

zone mandark . com . br / IN : loaded serial 2011073101

OK

Reinicie o servio do Bind9:

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1125 to die .

Starting domain name service ...: bind9 .

Vamos fazer alguns testes envolvendo nossos domnios e o comando dig:

root@dmz :~ # dig @127 .0.0.1 -t soa dexter . com . br

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 47379

;; flags : qr aa rd ra ; QUERY : 1 , ANSWER : 1 , AUTHORITY : 1 ,


ADDITIONAL : 1

Linux Servers Revolutions

Pgina 131

Linux Force

Servidor DNS

;; QUESTION SECTION :

; dexter . com . br .

;; ANSWER SECTION :

dexter . com . br .

IN

SOA

86400 IN

SOA ns1 . dexter . com . br . dexter . com . br .

root . dexter . com . br . 2011073101 28800 3600 259200 10800


8

;; AUTHORITY SECTION :

dexter . com . br .

86400 IN

NS

ns1 . dexter . com . br .

10

;; ADDITIONAL SECTION :

11

ns1 . dexter . com . br .

12

;; Query time : 2 msec

13

;; SERVER : 127.0.0.1 # 53(127.0.0.1)

14

;; WHEN : Mon Aug

15

;; MSG SIZE

86400 IN

A 192.168. X .3

1 13:04:16 2011

rcvd : 124

Agora com o domnio mandark.com.br:

root@dmz :~ # dig @127 .0.0.1 -t soa mandark . com . br

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 15044

;; flags : qr aa rd ra ; QUERY : 1 , ANSWER : 1 , AUTHORITY : 1 ,


ADDITIONAL : 1

;; QUESTION SECTION :

; mandark . com . br .

;; ANSWER SECTION :

mandark . com . br .

IN

SOA

86400 IN

SOA ns2 . mandark . com . br . mandark . com . br .

root . mandark . com . br . 2011073101 28800 3600 259200 10800


8

;; AUTHORITY SECTION :

mandark . com . br .

86400 IN

NS

ns2 . mandark . com . br .

10

;; ADDITIONAL SECTION :

11

ns2 . mandark . com . br . 86400 IN

12

;; Query time : 2 msec

13

;; SERVER : 127.0.0.1 # 53(127.0.0.1)

14

;; WHEN : Mon Aug

15

;; MSG SIZE

A 192.168. X .3

1 13:10:46 2011

rcvd : 126

Vamos testar as configuraes referente ao e-mail:

Linux Servers Revolutions

Pgina 132

Linux Force

Servidor DNS

root@dmz :~ # dig @127 .0.0.1 -t mx dexter . com . br

;; ->> HEADER < < - opcode : QUERY , status : NOERROR , id : 49884

;; flags : qr aa rd ra ; QUERY : 1 , ANSWER : 1 , AUTHORITY : 1 ,


ADDITIONAL : 2

;; QUESTION SECTION :

; dexter . com . br .

;; ANSWER SECTION :

dexter . com . br .

;; AUTHORITY SECTION :

dexter . com . br .

IN

MX

86400 IN
86400 IN

MX

10 mail . dexter . com . br .

NS

ns1 . dexter . com . br .

10

;; ADDITIONAL SECTION :

11

mail . dexter . com . br . 86400 IN

A 192.168. X .3

12

ns1 . dexter . com . br .

A 192.168. X .3

13

;; Query time : 1 msec

14

;; SERVER : 127.0.0.1 # 53(127.0.0.1)

15

;; WHEN : Mon Aug

16

;; MSG SIZE

86400 IN

1 13:12:16 2011

rcvd : 102

Vamos efetuar um ping no domnio dexter.com.br:

root@dmz :~ # ping - c2 www . dexter . com . br

PING www . dexter . com . br (192.168. X .3) 56(84) bytes of data .

64 bytes from 192.168. X .3: icmp_req =1 ttl =64 time =0.457 ms

64 bytes from 192.168. X .3: icmp_req =2 ttl =64 time =0.136 ms

Reinicie o Bind9 novamente e verifique o log:

root@dmz :~ # service bind9 restart

root@dmz :~ # tail -f / var / log / daemon . log

Aug

1 13:23:35 dmz named [1370]: zone localhost / IN : loaded serial 2

Aug

1 13:23:35 dmz named [1370]: managed - keys - zone ./ IN : loading


from master file managed - keys . bind failed : file not found

Linux Servers Revolutions

Pgina 133

Linux Force

Aug

Servidor DNS

1 13:23:35 dmz named [1370]: managed - keys - zone ./ IN : loaded


serial

Aug

1 13:23:35 dmz named [1370]: running

Aug

1 13:23:35 dmz named [1370]: zone dexter . com . br / IN : sending


notifies ( serial 2011073101)

Aug

1 13:23:35 dmz named [1370]: zone mandark . com . br / IN : sending


notifies ( serial 2011073101)

Configurando o RNDC

O comando rndc (Remote Named Daemon Control) uma ferramenta de gerenciamento do named. A vantagem dessa ferramenta que ela permite controlar o
named muito facilmente sem ter que ficar enviando sinais ao processo do mesmo.
Vamos limitar o seu uso apenas no prprio servidor, para isso vamos alterar o arquivo
/etc/bind/named.conf.local.

root@dmz :~ # vim / etc / bind / named . conf . local

include " / etc / bind / rndc . key " ;

controls {

inet 127.0.0.1 port 953 allow { localhost ; } keys { " rndc - key " ; };

};

zone " dexter . com . br " {

type master ;

file " db . dexter " ;

9
10

};
zone " mandark . com . br " {

11

type master ;

12

file " db . mandark " ;

13

};

Para configurar o RNDC devemos primeiro gerar a chave criptogrfica. Sendo assim,
execute:

Linux Servers Revolutions

Pgina 134

Linux Force

root@dmz :~ # cd / etc / bind

root@dmz :/ etc / bind # rndc - confgen -r / dev / urandom -a

wrote key file " / etc / bind / rndc . key "

Servidor DNS

Veja a chave gerada:

root@dmz :/ etc / bind # cat rndc . key

key " rndc - key " {

algorithm hmac - md5 ;

secret " gdt6lf3SlKt + o6e3UeqVrw == " ;

};

Por segurana, deixe leitura e escrita somente para o root e o grupo:

root@dmz :/ etc / bind # chmod 770 / etc / bind / rndc . key

Agora que ajustamos as configuraes, reinicie o servio:

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1008 to die .

Starting domain name service ...: bind9 .

Veja o status do rndc:

root@dmz :~ # rndc status

version : 9.7.3

CPUs found : 1

worker threads : 1

number of zones : 20

Linux Servers Revolutions

Pgina 135

Linux Force

debug level : 0

xfers running : 0

xfers deferred : 0

soa queries in progress : 0

10

query logging is OFF

11

recursive clients : 0/0/1000

12

tcp clients : 0/100

13

server is up and running

Servidor DNS

Agora podemos executar os comando re reload com o rndc:

root@dmz :~ # rndc reload

server reload successful

Para vermos o que est em cache no DNS, podemos usar os comandos abaixo:

root@dmz :~ # rndc dumpdb - cache

root@dmz :~ # cat / var / cache / bind / named_dump . db

E para limpar o cache execute:

root@dmz :~ # rndc flush

7.0.20 Configurando o DNS reverso


DNS reverso um recurso que permite que outros servidores verifiquem a autenticidade do seu servidor. Para isso, ele checa se o endereo IP atual bate com o
endereo IP informado pelo servidor DNS. Os servidores de e-mail iro recusar seus
e-mails ou classific-los como spam caso o DNS reverso no esteja configurado.

Linux Servers Revolutions

Pgina 136

Linux Force

Servidor DNS

de suma importncia para que o servio de e-mail no seja detectado como


spam ao enviar um e-mail;!

Abra o arquivo /etc/bind/named.conf.local e inclua no final o seguinte:

root@dmz :~ # vim / etc / bind / named . conf . local

...

zone "X .168.192. in - addr . arpa " {

type master ;

file " db . rev " ;

};

Agora configure o arquivo reverso...

root@dmz :~ # vim / var / cache / bind / db . rev

$TTL 86400 ; default para todos os registros sem TTL

IN SOA ns1 . dexter . com . br .

2011073101; serial

8h ; refresh

1h ; retry

3d ; expire

3h); negative caching ttl

10

11

ns1

12

IN

NS
IN

IN

root . dexter . com . br . (

ns1 . dexter . com . br .


A

PTR

192.168. X .3
mail . dexter . com . br .

inclua no final do arquivo da zona dexter . com . br

13
14

root@dmz :~ # vim / var / cache / bind / db . dexter

15

IN

MX

20 mail2 . dexter . com . br .

16

mail2

IN

192.168. X .2

Linux Servers Revolutions

Pgina 137

Linux Force

Servidor DNS

Reinicie o Bind9:

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1008 to die .

Starting domain name service ...: bind9 .

Vamos realizar um teste com o comando dig para verificar o reverso:

root@dmz :~ # dig @127 .0.0.1 -x 192.168. X .3

...

;; QUESTION SECTION :

;3. X .168.192. in - addr . arpa .

IN

PTR

5
6

;; ANSWER SECTION :

3. X .168.192. in - addr . arpa . 86400

IN PTR mail . dexter . com . br .

8
9
10

;; AUTHORITY SECTION :
X .168.192. in - addr . arpa . 86400

IN

NS

ns1 . dexter . com . br .

Como vimos, nosso DNS reverso est corretamente configurado!

7.0.21 Configurando o DNS secundrio

Para registrarmos um domnio pblico, precisamos de pelo menos dois servidores "DNS"respondendo pelo seu domnio. Isso significa um servidor master (mestre) e pelo menos um servidor slave (escravo). A exigncia uma forma de garantir
que seu domnio estar sempre disponvel. Se um servidor parar, o outro continua
respondendo!

Linux Servers Revolutions

Pgina 138

Linux Force

Servidor DNS

Se os servidores estiverem geograficamente separados, isto garante ainda mais disponibilidade, pois mesmo que um link caia, o outro certamente ainda estar disponvel. Na verdade, um mesmo servidor rodando BIND pode ser ao mesmo tempo mestre para alguns domnios, escravo para outros, e "cache"para todo o resto. Sendo
assim, vamos efetuar a instalao do Bind9 numa outra mquina para servir de escravo (secundrio). Esta mquina ser a Datacenter
Antes de configuramos a mquina slave, vamos deixar nosso bind autorizado a transferir as zonas para esta mquina. Acrescente no arquivo named.conf.local o que
est em negrito:

root@dmz :~ # vim / etc / bind / named . conf . local

include " / etc / bind / rndc . key " ;

controls {

inet 127.0.0.1 port 953 allow { localhost ; } keys { " rndc - key " ;
};

};

zone " dexter . com . br " {

type master ;

file " db . dexter " ;

allow - transfer { 192.168. X .2; };

10

notify yes ;

11

also - notify { 192.168. X .2; };

12

};

13

zone " mandark . com . br " {

14

type master ;

15

file " db . mandark " ;

16

allow - transfer { 192.168. X .2; };

17

notify yes ;

18

also - notify { 192.168. X .2; };

19

};

20

zone " 200.168.192. in - addr . arpa " {

21

type master ;

22

file " db . rev " ;

23

};

Linux Servers Revolutions

Pgina 139

Linux Force

Servidor DNS

Explicando as incluses:
allow-transfer - para transferir a zona para o secundrio.
notify yes - o servidor mestre envia uma mensagem DNS NOTIFY para os servidores escravos para faz-los conferir o arquivo de zona imediatamente. Isso feito
para manter o banco de dados mestre e escravo firmemente sincronizados.
also-notify - diz para o servidor tambm notificar o endereo fornecido entre chaves.
Devemos configurar tambm o arquivo de registro da zona DNS dos domnios que
temos autoridade. Primeiro o domnio dexter.com.br. Coloque no final do arquivo:

root@dmz :~ # vim / var / cache / bind / db . dexter

; configura o do DNS secund rio

IN

NS

ns2 . dexter . com . br .

ns2

IN

192.168. X .2 ; IP da m quina Datacenter

Agora o domnio mandark.com.br, tambm no final do arquivo:

root@dmz :~ # vim / var / cache / bind / db . mandark

; configura o do DNS secund rio

IN

NS

ns2 . mandark . com . br .

ns2

IN

192.168. X .2 ; IP da m quina Datacenter

No podemos esquecer do reverso! Acrescente no final do arquivo:

root@dmz :~ # vim / var / cache / bind / rev . dexter

; configura o do DNS reverso secund rio

IN

Linux Servers Revolutions

PTR

mail . dexter . com . br .

Pgina 140

Linux Force

Servidor DNS

Reinicie o Bind9:

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1008 to die .

Starting domain name service ...: bind9 .

7.0.22 Configurando o DNS Secundrio


Vamos agora efetuar a instalao e configurao do Bind9 na mquina Datacenter.
Inicie a mquina e execute:

root@datacenter :~ # aptitude install bind9

Abra o arquivo de declarao de zonas e insira o seguinte:

root@datacenter :~ # vim / etc / bind / named . conf . local

zone " dexter . com . br " {

type slave ;

file " db . dexter " ;

masters { 192.168. X .3; };

};

zone " mandark . com . br " {

type slave ;

file " db . mandark " ;


masters { 192.168. X .3; };

10
11

};

Reinicie o Bind9:

Linux Servers Revolutions

Pgina 141

Linux Force

Servidor DNS

root@datacenter :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1649 to die .

Starting domain name service ...: bind9 .

Verifique no log da mquina Datacenter (slave) que houve a transferncia da zona


master de nossos domnios:

root@datacenter :~ # cat / var / log / daemon . log | grep named | grep trans

Aug

2 21:19:54 datacenter named [1815]: transfer of


dexter . com . br / IN from 192.168. X .3 # 53: connected using
192.168. X .2#59881

Aug

2 21:19:54 datacenter named [1815]: zone dexter . com . br / IN :


transferred serial 2011073101

Aug

2 21:19:54 datacenter named [1815]: transfer of


dexter . com . br / IN from 192.168. X .3 # 53: Transfer completed : 1
messages , 15 records , 397 bytes , 0.008 secs (49625 bytes / sec )

Aug

2 21:19:54 datacenter named [1815]: transfer of


mandark . com . br / IN from 192.168. X .3 # 53: connected using
192.168. X .2#54614

Aug

2 21:19:54 datacenter named [1815]: zone mandark . com . br / IN :


transferred serial 2011073101

Aug

2 21:19:54 datacenter named [1815]: transfer of


mandark . com . br / IN from 192.168. X .3 # 53: Transfer completed : 1
messages , 7 records , 216 bytes , 0.010 secs (21600 bytes / sec )

7.0.23 Desativar recurso externa


Para o servidor DNS funcionar fora da rede local interessante desabilitar a opo
de recurso, pois isto evitar abusos, como por exemplo, alguma mquina usar o
servidor da empresa DEXTER COURIER para fazer consultas de DNS.
Para fazer isto, v na mquina DMZ no arquivo /etc/bind/named.conf.options e
insira o que est em negrito, restringindo o uso do DNS

Linux Servers Revolutions

Pgina 142

Linux Force

Servidor DNS

somente na nossa rede :

root@dmz :~ # vim / etc / bind / named . conf . options

3
4

allow - query { 127.0.0.1; 192.168. X .0/24; };

allow - recursion { 192.168. X .0/24; };

auth - nxdomain no ;

listen - on - v6 { any ; };

# conform to RFC1035

7.0.24 SPF - Sender Policy Framework


um recurso que diz quais servidores podem enviar e-mails em nome do seu
domnio. O objetivo evitar que seu domnio seja usado para forjar remetentes
falsos, facilitando o envio de spam mundo afora!
Acrescente na ltima linha do arquivo /etc/bind/db.dexter :

root@dmz :~ # vim / etc / bind / db . dexter

...

; configura o do SPF

IN

TXT " v = spf1 a mx ip4 :192.168. X .3 - all "

Sobre o registro "TXT":


a - Qualquer registro "A"desse domnio;
mx - Servidor de e-mail;
192.168.X.3 Somente o IP 192.168.X.3; qualquer outra origem descarte.
Agora reinicie o Bind9:

Linux Servers Revolutions

Pgina 143

Linux Force

Servidor DNS

root@dmz :~ # service bind9 restart

Stopping domain name service ...: bind9 waiting for pid 1595 to die .

Starting domain name service ...: bind9 .

Arrumando o DHCP

Precisamos alterar a configurao do servidor DHCP para enviar o endereo dos


nossos servidores DNS para as estaes. Na mquina Datacenter faa:

root@datacenter :~ # vim / etc / dhcp / dhcpd . conf

2
3

option domain - name - servers 192.168. X .3 ,192.168. X .2;

Agora basta reinicializar o servio do DHCP:

root@datacenter :~ # service isc - dhcp - server restart

V na mquina Squeeze e rode os comandos abaixo:

root@squeeze :~ # dhclient -r ; dhclient eth0 -v

Com isto iremos atualizar nosso /etc/resolv.conf, apontando para o DNS localizado
na rede. Visualize o arquivo:

root@squeeze :~ # cat / etc / resolv . conf

domain dexter . com . br

search dexter . com . br

Linux Servers Revolutions

Pgina 144

Linux Force

nameserver 192.168. X .3

nameserver 192.168. X .2

Linux Servers Revolutions

Servidor DNS

Pgina 145

Captulo 8
Servidor Apache

Cenrio

A empresa DEXTER COURIER precisa de um site para divulgao de seus servios


e um ambiente de aprendizado online para treinamento de seus funcionrios. Este
ambiente dever ficar dentro da empresa, porm o acesso externo ser necessrio.

8.0.25 Proposta de soluo

Ser montado o ambiente com um WebServer Apache, tendo suporte linguagem


de programao PHP e ao SGBD (Sistema gerenciador de Banco de Dados) MySQL
para acesso ao Moodle (ambiente de aprendizado online). Tambm iremos habilitar
SSL para os site, gerando um certificado digital. Aps a implementao, testes e
homologao, o firewall dever ser configurado para que os funcionrios possam
acessar o Moodle de fora da empresa.

Linux Force

Servidor Apache

8.0.26 Introduo terica

O "Web Server"Apache um esforo comunitrio feito por desenvolvedores ao redor


do mundo, cujo objetivo consiste em desenvolver um servidor web 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"(www.netcraft.com), o Apache


est servindo, em mdia, mais de 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"; sendo assim, ele multi plataforma;

possui suporte a vrias funcionalidades providas por mdulos;

pode trabalhar com multi "threads", isto , multi processos.

8.0.27 MPM PreFork e MPM Worker

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".

Linux Servers Revolutions

Pgina 147

Linux Force

Servidor Apache

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 modo "thread".

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"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.

8.0.28 Laboratrio
Visto que o servidor ir agregar tanto o site da Dexter como o Moodle no domnio
Mandark, e que ambos devero possuir acesso externo, faremos o ambiente na
mquina DMZ. Apenas o MySQL ficar na mquina Datacenter. Inicie ambas
as mquinas e vamos fazer a instalao do WebServer e SGBD, lembrando que
precisamos desabilitar a proteo contra execuo de arquivos no /tmp. Aps a
instalao, ative a proteo novamente. Execute na mquina DMZ:

Linux Servers Revolutions

Pgina 148

Linux Force

Servidor Apache

root@dmz :~ # aptitude install apache2 libapache2 - mod - php5 php5


php5 - curl php5 - gd php5 - intl php5 - xmlrpc php5 - mysql php - pear

Aps a instalao, abra um browser e digite:

http ://192.168. X .3

Linux Servers Revolutions

Pgina 149

Linux Force

Servidor Apache

8.0.29 Conhecendo a estrutura do Apache

No Debian, a localizao dos arquivos do Apache fica em /etc/apache2. Abaixo


um resumo da funo de cada um dos itens:

apache2.conf - Arquivo de configurao principal; httpd.conf - Compatibilidade


com o Apache 1; modules.conf - Arquivo de configurao de mdulos; ports.conf
- Arquivo de configurao de portas; sites-available/ - Configurao de VirtualHost
disponveis; sites-enabled/ - Configurao de VirtualHost ativos; mods-available/ Mdulos disponveis; mods-enabled/ - Mdulos habilitados; conf.d/ - Configuraes
extras, como ajustes de segurana (arquivo security) e charset (configuraes de
condificao).

Abra o arquivo de configurao para que possamos visualizar as principais opes


de configurao do Apache:

root@dmz :~ # vim / etc / apache2 / apache2 . conf \ textbf {}

A varivel "ServerRoot"define o local onde o Apache deve procurar por seus arquivos
de configurao. No exemplo abaixo, os arquivos de configurao sero procurados
em "/etc/apache2":

ServerRoot /etc/apache2

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

Linux Servers Revolutions

Pgina 150

Linux Force

Servidor Apache

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

Os logs, por padro, so armazenados no formato "combined", dentro do arquivo


"/var/log/apache2/access.log", com os seguintes itens:

\ textbf {\% h }

- " Hostname " ou endere o IP do visitante ;

\ textbf {\% l }

- H fen ;

\ textbf {\% u }

- Nome de usu rio , caso exista ;

\ textbf { \% t }

- Hor rio de acesso ;

\ textbf {\% r }

\ textbf {\% > s } - O resultado da solicita o ;

\ textbf {\% b }

- Requisi o solicitada ;
- O tamanho em bytes da resposta ;

\ textbf { Refereri }

\ textbf { User - Agenti } - O navegador do visitante , se informado .

Linux Servers Revolutions

- O site anterior a visita , se informado ;

Pgina 151

Linux Force

Servidor Apache

A prova pode perguntar sobre as variveis "ErrorLog", "CustomLog", "ServerRoot"e "DocumentRoot".

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:

StartServers 2

- configura o n mero inicial de servidores ;

MaxClients 150

- o n mero m ximo de conex es simult neas ;

MinSpareThreads 25

- configura o valor m nimo de " threads " em

espera ;
4

MaxSpareThreads 75

- configura o valor m ximo de " threads " em

espera ;
5

ThreadsPerChild 25

- configura o n mero de threads inicializadas

por cada processo ;


6

MaxRequestsPerChild 0

- configura o valor m ximo por processo

O mdulo "PreFork" tambm possui ajustes similares ao mdulo "Worker":

1
2

StartServers 5

- configura o n mero inicial de servidores ;

MinSpareServers 5

- configura o valor m nimo de processos em

espera ;
3

MaxSpareServers 10

- configura o valor m ximo de processo em

espera ;
4

MaxClients 150

MaxRequestsPerChild 0

Linux Servers Revolutions

- n mero m ximo de conex es simult neas ;


- configura o valor m ximo por processo .

Pgina 152

Linux Force

Servidor Apache

8.0.30 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. Verifique se os mdulos
do PHP5 esto ativados:

root@dmz :~ # ls - lh / etc / apache2 / mods - enabled | grep php

lrwxrwxrwx 1 root root 27 Ago

3 20:21 php5 . conf ->

../ mods - available / php5 . conf


3

lrwxrwxrwx 1 root root 27 Ago

3 20:21 php5 . load ->

../ mods - available / php5 . load


4

root@dmz :~ # apache2ctl -M | grep php

Syntax OK

php5_module ( shared )

O PHP5 ativado por padro durante a instalao do mdulo, porm, caso necessrio, habilite o suporte manualmente:

root@dmz :~ # a2enmod php5

Se precisar descarregar um m dulo , use a sintaxe :

a2dismod <m dulo >

Na plataforma RedHat, a habilitao de mdulos feita utilizando o comando


system-config-http

Reinicie o servio do Apache:

Linux Servers Revolutions

Pgina 153

Linux Force

root@dmz :~ # service apache2 restart

Restarting web server : apache2 ... waiting .

Servidor Apache

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":

root@dmz :~ # vim / var / www / index . php

<?

phpinfo ()

?>

Agora, acesse o browser e digite na URL o endereo do servidor Web e o arquivo


que acabou de criar:

http ://192.168. X .3/ index . php

Veja que a pgina exibida traz muitas informaes sobre o PHP:

Linux Servers Revolutions

Pgina 154

Linux Force

Servidor Apache

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.

8.0.31 Arrumando os diretrios

Vamos criar a seguinte estrutura na mquina DMZ (192.168.X.3):

root@dmz :~ # mkdir -p / srv / www /{ dexter , mandark }

root@dmz :~ # ls - lh / srv / www /

Linux Servers Revolutions

Pgina 155

Linux Force

Servidor Apache

O que o Moodle?

Moodle um Sistema Open Source de Gerenciamento de Cursos - Course Management System (CMS), tambm conhecido como Learning Management System
(LMS) ou um Ambiente Virtual de Aprendizagem (AVA).
Tornou-se muito popular entre os educadores de todo o mundo como uma ferramenta
para criar sites de web dinmicos para seus alunos. Para funcionar, ele precisa ser
instalado em um servidor web com suporte a PHP e banco de dados MYSQL.

O link para o site http://moodle.org.

Baixe do servidor da sala de aula o pacote do Moodle chamado moodle.tgz e descompacte em /srv/www/mandark:

root@dmz :~ # tar xvzf moodle . tgz -C / srv / www / mandark

root@dmz :~ # mkdir -p / srv / www / mandark / moodledata

Crie o usurio webdesign para ter acesso via FTP ao nosso site e poder efetuar as
atualizaes:

root@dmz :~ # adduser webdesign

Agora vamos mudar as permisses de acesso:

root@dmz :~ # chown -R webdesign : webdesign / srv / www / dexter

root@dmz :~ # chown -R www - data : www - data / srv / www / mandark

root@dmz :~ # chmod -R 775 / srv / www / mandark

Linux Servers Revolutions

Pgina 156

Linux Force

Servidor Apache

Instalando o MySQL Server

Agora instale o MySQL Server na mquina Datacenter:

root@datacenter :~ # aptitude install mysql - server

Vamos criar a base de dados no MySQL para o Moodle:

root@datacenter :~ # mysql -u root -p

Enter password :

mysql >

Crie a data base moodle:

mysql > create database moodle ;

Query OK , 1 row affected (0.00 sec )

Altere a tabela para poder trabalhar com a codificao UTF-8:

mysql > alter database moodle default character set utf8 COLLATE
utf8_unicode_ci ;

Query OK , 1 row affected (0.04 sec )

D privilgios para o usurio moodleuser em localhost:

mysql > grant all privileges on moodle .* to moodleuser@ \%


identified by 123456 with grant option ;

Query OK , 0 rows affected (0.03 sec )

Linux Servers Revolutions

Pgina 157

Linux Force

Servidor Apache

> PRESTE ATENO <


Caso haja algum problema e voc deseje remover os privilgios do usurio na
base de dados, execute:

mysql > revoke all privileges , grant option from moodleuser ;

Verifique se a base est criada e depois saia:

mysql > show databases ;

+ - - - - - - - - - - - - - - - - - - - -+

| Database

+ - - - - - - - - - - - - - - - - - - - -+

| information_schema |

| moodle

| mysql

+ - - - - - - - - - - - - - - - - - - - -+

3 rows in set (0.00 sec )

COMENTE a linha 47 do arquivo /etc/mysql/my.cnf:

root@datacenter :~ # vim / etc / mysql / my . cnf

# bind - address

= 0.0.0.0

Reinicie o servio do mysql:

root@datacenter :~ # service mysql restart

Stopping MySQL database server : mysqld .

Starting MySQL database server : mysqld .

Checking for corrupt , not cleanly closed and upgrade needing


tables ..

Linux Servers Revolutions

Pgina 158

Linux Force

Servidor Apache

8.0.32 Configurando o php.ini


Vamos voltar para a mquina DMZ e configurar o arquivo php.ini:

root@dmz :~ # vim / etc / php5 / apache2 / php . ini

post_max_size = 16 M

upload_max_filesize = 100 M

# ##### Acrescente no final do arquivo :

extension = mysql . so

extension = gd . so

# linha 728 = > alterar


# linha 879 = > alterar

8.0.33 VirtualHost?
O que um VirtualHost? uma funcionalidade que permite ao seu WebServer responder por 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. Qual a desvantagem nisso? No se pode ter um
volume muito grande de sites, pois os recursos como hardware e banda so limitados!
Os domnios virtuais devem ser configurados nestes dois diretrios:
/etc/apache2/sites-available: configurao dos domnios virtuais;
/etc/apache2/sites-enabled: domnios virtuais ativos (links simblicos para os arquivos de configurao localizados no diretrio citado anteriormente).

8.0.34 Criando Virtualhost para nossos domnios


Vamos configurar o Virtualhost do domnio dexter.com.br:

Linux Servers Revolutions

Pgina 159

Linux Force

Servidor Apache

root@dmz :~ # vim / etc / apache2 / sites - available / dexter . com . br

< VirtualHost *:80 >

DocumentRoot / srv / www / dexter /

ServerName www . dexter . com . br

ServerAdmin root@dexter . com . br

ErrorLog / var / log / apache2 / dexter - error . log

CustomLog / var / log / apache2 / dexter - access . log common

</ VirtualHost >

Agora vamos configurar o Virtualhost do domnio mandark.com.br:

root@dmz :~ # vim / etc / apache2 / sites - available / mandark . com . br

< VirtualHost *:80 >

DocumentRoot / srv / www / mandark / moodle /

ServerName www . mandark . com . br

ServerAdmin root@mandark . com . br

ErrorLog / var / log / apache2 / mandark - error . log

CustomLog / var / log / apache2 / mandark - access . log common

</ VirtualHost >

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


sua funo.

Finalmente temos que ativar os dois sites no Apache para que eles possam subir
quando digitarmos seu domnio na URL:

root@dmz :~ # a2ensite dexter . com . br

Enabling site dexter . com . br .

Run / etc / init . d / apache2 reload to activate new configuration !

root@dmz :~ # a2ensite mandark . com . br

Linux Servers Revolutions

Pgina 160

Linux Force

Servidor Apache

Enabling site mandark . com . br .

Run / etc / init . d / apache2 reload to activate new configuration !

Reinicie o servio do Apache:

root@dmz :~ # service apache2 restart

Restarting web server : apache2 ... waiting .

8.0.35 Fechando brechas de segurana

Antes de reforarmos a segurana do servidor , vamos executar o nmap:

root@dmz :~ # nmap - sV localhost

80/ tcp open

http

Apache httpd 2.2.16 (( Debian ) )

Agora abra o arquivo /etc/apache2/conf.d/security e modifique as configuraes


para que o Apache mostre a menor quantidade possvel de informaes ao usurio
ou pior ainda, um atacante!

root@dmz :~ # vim / etc / apache2 / conf . d / security

ServerTokens Prod

ServerSignature Off

TraceEnable Off

As opes do ServerTokens so: (em negrito a melhor opo) ServerTokens Prod


- Revela somente o nome do produto;

Linux Servers Revolutions

Pgina 161

Linux Force

Servidor Apache

O parmetro ServerSignature utilizado para ativar/desativar as mensagens de


informaes do servidor. J o parmetro TraceEnable usado para realizar testes
e diagnsticos.
Reinicie o servio do Apache:

root@dmz :~ # service apache2 restart

Restarting web server : apache2 ... waiting .

Execute o nmap para vermos o que aparecer aps as modificaes:

root@dmz :~ # nmap - sV localhost

80/ tcp open

http

Apache httpd

Vamos testar a configurao do Apache.

Linux Servers Revolutions

Pgina 162

Linux Force

Servidor Apache

root@dmz :~ #

...

apache2ctl -S

port 80 namevhost www . dexter . com . br

(/ etc / apache2 / sites - enabled / dexter . com . br :1)


port 80 namevhost www . mandark . com . br

(/ etc / apache2 / sites - enabled / mandark . com . br :1)


5

Syntax OK

8.0.36 Configurando o Moodle

Vamos configurar o Moodle, que dever ser acessado atravs do browser: No Navegador, digite:

http://www.mandark.com.br

Ir abrir a tela de instalao e configurao do Moodle. Preste ateno para no


cometer erros, ok! Escolha o idioma Portugus.

Linux Servers Revolutions

Pgina 163

Linux Force

Servidor Apache

Confirme o diretrio (j criado) para os dados do Moodle.

Linux Servers Revolutions

Pgina 164

Linux Force

Servidor Apache

Pacote de idioma portugus no encontrado, pegue no servidor!

Linux Servers Revolutions

Pgina 165

Linux Force

Servidor Apache

Escolha o driver MySQL para acesso base de dados!

Linux Servers Revolutions

Pgina 166

Linux Force

Servidor Apache

Configurao de acesso base SQL.

Linux Servers Revolutions

Pgina 167

Linux Force

Servidor Apache

Conexo ao banco OK! Termo de licena para aceite.

Linux Servers Revolutions

Pgina 168

Linux Force

Servidor Apache

Checagem de requisitos para o servidor OK!

Linux Servers Revolutions

Pgina 169

Linux Force

Servidor Apache

Instalao do sistema.

Linux Servers Revolutions

Pgina 170

Linux Force

Servidor Apache

Instalao do sistema concluda.

Linux Servers Revolutions

Pgina 171

Linux Force

Servidor Apache

Configurao do administrador, senha, e-mail e localizao.

Linux Servers Revolutions

Pgina 172

Linux Force

Servidor Apache

Configurao do nome do Ambiente e mensagem de apresentao.

Linux Servers Revolutions

Pgina 173

Linux Force

Servidor Apache

Tela de apresentao do Ambiente Moodle.

Linux Servers Revolutions

Pgina 174

Linux Force

Servidor Apache

Tela de login do Moodle aps a instalao!

Linux Servers Revolutions

Pgina 175

Linux Force

Servidor Apache

8.0.37 Disponibilizando o site da Dexter Courier

Baixe do servidor o arquivo contendo o site da Dexter e depois descompacte-o:

root@dmz :~ # tar xzvf site . dextercourier . tar . gz -C / srv / www /

Linux Servers Revolutions

Pgina 176

Linux Force

Servidor Apache

8.0.38 Ativando o SSL


SSL (Secure Socket Layer) o protocolo que encripta toda a transmisso entre o cliente e um servidor, indicado para criar pginas seguras. Sites de comrcio eletrnico
utilizam essa camada de segurana, portanto o SSL um padro Web que permite
trafegar dados sensveis e confidenciais com segurana atravs da internet.
O protocolo HTTPS utilizado tambm em bancos e empresas que utilizam autenticao com criptografia, dependendo da configurao do SSL, bem como a criao
de chaves e certificados.

O que um certificado digital?

Um certificado digital um arquivo que contm um conjunto de informaes referentes a entidade para o qual o certificado foi emitido, seja uma empresa, pessoa fsica
ou computador, mais a chave pblica referente chave privada que acredita-se ser
de posse unicamente da entidade especificada no certificado.
As assinaturas contidas em um certificado so atestamentos feitos por uma entidade
que diz confiar nos dados contidos naquele certificado.

Gerando o site seguro da Dexter

Para instalar e configurar as chaves e o certificado, execute:

root@dmz :~ # aptitude install openssl

root@dmz :~ # a2enmod ssl

Enabling module ssl .

See / usr / share / doc / apache2 .2 - common / README . Debian . gz on how to


configure SSL and create self - signed certificates .

Run / etc / init . d / apache2 restart to activate new configuration !

Linux Servers Revolutions

Pgina 177

Linux Force

Servidor Apache

Reinicie o servio do Apache:

root@dmz :~ # service apache2 restart

Restarting web server : apache2 ... waiting .

Veja que o mdulo SSL est habilitado para ouvir na porta 443:

root@dmz :~ # vim / etc / apache2 / ports . conf

< IfModule mod_ssl .c >

3
4

Listen 443
</ IfModule >

Agora crie a chave que ser usada para assinar o certificado:

root@dmz :~ # openssl genrsa - out / etc / ssl / dexter . key 1024

Generating RSA private key , 1024 bit long modulus

3
4

e is 65537 (0 x10001 )

Com a chave em mos, crie o certificado para a Dexter, preenchendo os campos


conforme forem pedidos:

1
2

root@dmz :~ # openssl req - new - key / etc / ssl / dexter . key - out \
/ etc / ssl / dexter . csr

3
4

Country Name (2 letter code ) [ AU ]: BR

State or Province Name ( full name ) [ Some - State ]: S o Paulo

Locality Name ( eg , city ) []: S o Paulo

Organization Name ( eg , company ) [ Internet Widgits Pty Ltd ]: Dexter


Courier

Organizational Unit Name ( eg , section ) []: Depto . TI

Linux Servers Revolutions

Pgina 178

Linux Force

Servidor Apache

Common Name ( eg , YOUR name ) []: Admin

10

Email Address []: root@dexter . com . br

11

Please enter the following extra attributes to be sent with your


certificate request

12

A challenge password []:

13

An optional company name []:

Depois de criar o certificado, voc poder envi-lo a uma unidade certificadora, por
exemplo a Serasa Experian, VeriSign, CertSign, ACBR, Serpro, entre outras, que
o assinar por um valor anual. Voc tem a opo de auto assinar seu o certificado,
lembrando que, neste caso, o cliente dir que o certificado no foi reconhecido por
uma unidade certificadora!
Para assinar seu certificado, execute o comando abaixo:

1
2

root@dmz :~ # openssl x509 - req - days 365 - in / etc / ssl / dexter . csr \
- signkey / etc / ssl / dexter . key - out / etc / ssl / dexter . crt

Signature ok

subject =/ C = BR / ST = S \ xC3 \ xA3o Paulo / L = S \ xC3 \ xA3o Paulo / O = Dexter


Courier / OU = Depto . TI / CN = Admin / emailAddress = root@dexter . com . br

Getting Private key

Agora basta adicionar a configurao do certificado digital no final do arquivo referente ao nosso domnio.

root@dmz :~ # vim / etc / apache2 / sites - available / dexter . com . br

2
3

< VirtualHost *:443 >

DocumentRoot / srv / www / dexter /

ServerName www . dexter . com . br

ErrorLog / var / log / apache2 / dexter - error . log

CustomLog / var / log / apache2 / dexter - access . log common

SSLEngine on

SSLCertificateFile / etc / ssl / dexter . crt

Linux Servers Revolutions

Pgina 179

Linux Force

Servidor Apache

10

SSLCertificateKeyFile / etc / ssl / dexter . key

11

RewriteEngine On

12

RewriteCond \%{ SERVER_PORT } 80

13

RewriteRule ^(.*) \ $ https :// www . dexter . com . br /\ $1 [R , L ]

14

</ VirtualHost >

Explicando:

RewriteEngine

- Ativa o modo rewrite .

2
3

RewwriteCond

- For a https para voc poder usar com seguran a a

autentica o HTTP no diret rio .


4
5

RewriteRule

- Estamos aplicando uma express o regular onde

qualquer palavra escrita ap s


apagada e que nosso
Isso muito
sub -

" http :// www . dexter . com . br / " seja

web server redirecione devolta para o " / " .

til quando n o queremos ningu m vasculhando os

diret rios de nosso dom nio . Al m de for ar o uso do

https .

Sobre a linha ( RewriteRUle ^ (.*) $ https :// www . dexter . com . br / $


[R ,L] )

As letras dentro dos colchetes significam respectivamente: [R] reescrever a URL e


redirecionar, [NC] case insensitive e [L] aplica somente uma vez a cada tentativa,
isso evita que a regra entre em loop infinito.
Ative o mod_rewrite para que, toda vez que algum acessar seu site, seja automaticamente redirecionado para o site com HTTPS ativado:

root@dmz :~ # a2enmod rewrite

Enabling module rewrite .

Linux Servers Revolutions

Pgina 180

Linux Force

Servidor Apache

Run / etc / init . d / apache2 restart to activate new configuration !

E finalmente reinicie o Apache:

root@dmz :~ # service apache2 restart

Restarting web server : apache2 ... waiting .

Aps a preparao do SSL, abra o site e verifique o https e o certificado digital.

http://www.dexter.com.br

Linux Servers Revolutions

Pgina 181

Linux Force

Servidor Apache

Clique em Adicionar exceo.

Clique em Obter Certificado, depois deve ticar a opo Salvar esta exceo permanentemente e por ltimo em Confirmar exceo de segurana.

Linux Servers Revolutions

Pgina 182

Linux Force

Linux Servers Revolutions

Servidor Apache

Pgina 183

Captulo 9
Servidor FTP
9.0.39 Cenrio
Como a empresa DEXTER COURIER muito dinmica, precisa estar atualizada e
em sintonia com seus clientes, por isto o site o melhor canal de comunicao! A fim
de agilizar tais procedimentos, precisa de uma conexo diretamente no servidor Apache, a fim de que o WebDesigner possar subir os arquivos do site www.dexter.com.br.
Alm disto, ele no poder fazer mais nada no servidor!

9.0.40 Proposta de soluo


A implementao de um servidor FTP ir suprir a necessidade da empresa Dexter,
pois faremos o WebDesigner acessar diretamente o diretrio do site, alm de bloquearmos o acesso aos demais diretrios do sistema com proteo chroot.

9.0.41 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

Linux Force

Servidor FTP

ento solicitado um usurio e senha vlidos no caso de um "FTP"autenticado, ou,


caso este servidor permita navegao annima, basta entrar com o usurio "anonymous" e uma senha qualquer.

Em relao ao modo de conexo do servidor FTP, ele pode atuar como servidor
ativo ou passivo. No modo ativo, os comandos so enviados por uma porta alta
(acima de 1024) pelo cliente e so recebidas pela porta 21 no servidor, enquanto
que os dados so transmitidos pelo servidor ao cliente atravs da porta 20.

Qual a desvantagem do motivo ativo?

Neste modo, um firewall mal configurado pode dar uma falsa sensao de funcionamento do FTP, pois a conexo e os comandos FTP funcionaro normalmente, porm,
na hora da transferncia de arquivos, ocorrer uma falha de desconexo ou time out,
dependendo do tipo de servidor.

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.

Modo Ativo

Linux Servers Revolutions

Pgina 185

Linux Force

Servidor FTP

Modo Passivo

O VSFTPD (Very Secure File Transfer Protocol Daemon) a escolha de empresas como RedHat, IBM e Novell (SUSE Linux) quando o assunto servidor FTP
confivel e seguro. Inclusive o projeto "OpenBSD"utiliza o "VSFTPD"como servidor

Linux Servers Revolutions

Pgina 186

Linux Force

Servidor FTP

"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.

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".

Para logar num servidor FTP, temos duas maneiras:


Tradicional: o servidor aceita conexes por meio de um usurio e senha vlidos,
liberando desta forma um prompt de comandos ou mesmo a interface grfica;
Anonymous: o Servidor FTP com anonymous muito utilizado na Internet pelo
motivo de no ser necessrio ter um usurio no servidor. Desta forma, o usurio pode
abrir um browser e chamar o endereo ftp://ftp.servidor.com.br para ter acesso
ao diretrio disponibilizado pelo servio. Geralmente esse diretrio o home do
usurio FTP, sendo no Debian em /home/ftp .
No nosso servidor FTP vamos desativar o modo Anonymous, pois ele ser usado
apenas pelo webdesigner pode fazer upload dos arquivos da empresa DEXTER. O
usurio root no poder fazer acesso ao servidor FTP. Para esta configurao, iremos
utilizar a mquina DMZ.

Linux Servers Revolutions

Pgina 187

Linux Force

Servidor FTP

Recapitulando... A plataforma RedHat utiliza o "vsftpd"por padro.

9.0.42 Laboratrio
Para instalar o vsftpd, primeiro permita a execuo de binrio na partio /tmp, depois
instale o pacote e efetue o bloqueio novamente:

root@dmz :~ # aptitude install vsftpd

Aps instalar, vamos abrir o arquivo de configurao /etc/vsftpd.conf e ento


alterar alguns parmtros

root@dmz :~ # vim / etc / vsftpd . conf

Localize as configuraes que seguem abaixo e altere as que esto em negrito:

# ## Permite que o VSFTPD funcione em modo daemon

listen = Yes

## Permite a utiliza o do FTP com o usu rio anonymous

anonymous_enable = No

## Habilitar a vari vel que permite que os usu rios do sistema


possam ## usar o servidor FTP :

local_enable = Yes

## Vari vel que permite o upload para os usu rios :

write_enable = Yes

## Permite a exibi o de mensagens aos usu rios

10

dirmessage_enable = Yes

11

## Ativa os logs para downloads e uploads

Linux Servers Revolutions

Pgina 188

Linux Force

Servidor FTP

12

xferlog_enable = Yes

13

## Utiliza a porta FTP - DATA para transfer ncia de arquivos ( vamos


usar ## FTP Passivo )

14

connect_from_port_20 = No

15

## Definindo timeout para sess o e conex o de dados em 2 minutos


(120 ## segundos )

16

idle_session_timeout =120

17

data_connection_timeout =120

18

## No permitir que o usu rio veja arquivos que n o sejam seus

19

chroot_local_users = YES

As opes "anonymous_enable"e "xferlog_enable"podem cair na prova LPI.

Lembre-se que adicionamos o usurio webdesign na aula de Apache. O diretrio


onde ele ter permisso para fazer upload e download de arquivos ser:

/ srv / www / dexter

Confirme as permisses, dono e grupo deste diretrio e...

root@dmz :~ # ls - ld / srv / www / dexter

drwxr -xr - x 5 webdesign webdesign 4 ,0 K Ago

5 20:13 / srv / www / dexter

. . . caso no estejam configuradas, realize as alteraes abaixo:

root@dmz :~ # chown -R webdesign : webdesign / srv / www / dexter /

root@dmz :~ # chmod -R 775 / srv / www / dexter /

root@dmz :~ # ls - ld / srv / www / dexter /

drwxrwxr - x 5 webdesign webdesign 4 ,0 K Ago

root@dmz :~ # usermod -d / srv / www / dexter webdesign

Linux Servers Revolutions

5 20:13 / srv / www / dexter

Pgina 189

Linux Force

root@dmz :~ # grep web / etc / passwd

webdesign : x :1002:1003: , , ,:/ srv / www / dexter :/ bin / bash

Servidor FTP

Com isso mudamos a permisso de acesso ao diretrio e o diretrio padro do usurio webdesign. Tambm devemos verificar se o usurio root est bloqueado para
acessar o FTP:

1
2

root@dmz :~ # grep root / etc / ftpusers


root

Caso voc queira bloquear mais algum usurio para que ele no acesse o servidor
FTP, coloque o nome dele no arquivo! Crie o arquivo /srv/www/dexter/.message e
coloque a mensagem abaixo:

1
2

root@dmz :~ # vim / srv / www / dexter /. message

============================================================

## Este sistema para uso exclusivo da empresa DEXTER .

## Todas as atividades ser o registradas .

## vetada a utiliza o deste sistema para transfer ncia de

## arquivos protegidos por qualquer lei de direito autoral

## ou arquivos que infrinjam a legisla o vigente .

============================================================

Aps escrever a mensagem, salve o arquivo e reinicie o servio FTP:

root@dmz :~ # service vsftpd restart

Stopping FTP server : vsftpd .

Starting FTP server : vsftpd .

Verifique em qual porta o servidor "FTP"est escutando:

Linux Servers Revolutions

Pgina 190

Linux Force

Servidor FTP

root@dmz :~ # netstat - ltupan

tcp

0 0.0.0.0:21

0.0.0.0:*

OU A

992/ vsftpd

Agora vamos fazer alguns testes de acesso ao FTP, mas antes instale os clientes
FTP, tanto para o modo texto como para o grfico. Execute na mquina Squeeze:

root@squeeze :~ # aptitude install ftp

Concluda a instalao, acesso o FTP pelo modo texto:

root@squeeze :~ # ftp ftp . dexter . com . br

Connected to www . dexter . com . br .

220 ( vsFTPd 2.3.2)

Name ( ftp . dexter . com . br : root ) : webdesign

331 Please specify the password .

Password :

230 -============================================================

230 - ## Este sistema para uso exclusivo da empresa DEXTER .

230 - ## Todas as atividades ser o registradas .

10

230 - ## vetada a utiliza o deste sistema para transfer ncia de

11

230 - ## arquivos protegidos por qualquer lei de direito autoral

12

230 - ## ou arquivos que infrinjam a legisla o vigente .

13

230 -============================================================

14

230 Login successful .

15

Remote system type is UNIX .

16

Using binary mode to transfer files .

17

ftp >

Linux Servers Revolutions

Pgina 191

Linux Force

Servidor FTP

9.0.43 Comandos em modo texto do 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".

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

Abaixo esto listados alguns dos mais utilizados comandos "FTP":

## Para saber em qual diret rio se encontra :

ftp > pwd

## Para saber em qual diret rio se encontra ( lado cliente ) :

ftp > ! pwd

## Para trocar de diret rios dentro do servidor :

ftp > cd < diret rio >

## Para voltar um diret rio :

ftp > cd ..

## Para listar o conte do do diret rio atual :

10

ftp > ls

11

## Para listar os diret rios locais ( lado cliente ) :

12

ftp > ! ls

13

## Para mudar de diret rio na m quina cliente :

14

ftp > lcd < diret rio >

15

## Para realizar o download de um arquivo :

16

ftp > get < arquivo >

Linux Servers Revolutions

Pgina 192

Linux Force

Servidor FTP

17

## Para realizar m ltiplos downloads :

18

ftp > mget *

19

## Para realizar o upload de um arquivo :

20

ftp > put < arquivo >

21

## Para realizar m ltiplos uploads :

22

ftp > mput *

23

## Para uma lista completa de comandos :

24

ftp > help

Para verificar os logs do ftp, execute:

root@dmz :~ # cat / var / log / vsftpd . log

Tue Aug

9 22:35:50 2011 [ pid 2] CONNECT : Client " 192.168. X .10 "

Tue Aug

9 22:35:56 2011 [ pid 1] [ webdesign ] OK LOGIN : Client

" 192.168. X .10 "


4

Tue Aug

9 22:36:12 2011 [ pid 3] [ webdesign ] OK DOWNLOAD : Client

" 192.168. X .10 " , " / index . php " , 4621 bytes , 282.04 Kbyte / sec

9.0.44 Cliente grfico para FTP


Podemos acessar um FTP a partir da interface grfica. Um dos principais clientes
FTP o Filezilla (http://filezilla-project.org), que possui verso para GNU/Linux, Windows e Mac OS. Para instalar no GNU/Linux basta digitarmos na mquina Squeeze:

root@dmz :~ # aptitude install filezilla

Para abrir o aplicativo, v em Aplicativos -> Internet -> Filezilla. Na tela que abrir,
entre com os seguintes dados:

Linux Servers Revolutions

Pgina 193

Linux Force

Servidor FTP

Host :

ftp . dexter . com . br

Usu rio :

Senha :

123456

Porta :

21

webdesign

Ser estabelecida a conexo e nosso Webdesign poder atualizar o site!

Linux Servers Revolutions

Pgina 194

Captulo 10
Servidor Postfix

10.0.45 Cenrio

Hoje em dia muito raro uma empresa no possuir uma conta de e-mail! A comunicao proporcionada por esta ferramenta muito abrangente, por isso a empresa
DEXTER COURIER precisa que cada colaborador tenha seu e-mail. Como ela no
tem interesse em pagar um plano de hospedagem e deixar seu servidor de e-mail
nas mos sabe-se l de quem, quer que ele ele seja instalado e configurado dentro
de seu DataCenter. Alm disto, precisa de segurana na autenticao dos usurios
e uso de protocolo seguro em relao aos e-mails que sua equipe ir utilizar.

10.0.46 Proposta de soluo

Para suprir a necessidade da empresa Dexter, iremos montar na mquina DMZ o


MTA (servidor de e-mail) Postfix, alm de configurar as contas de e-mail nos clientes
e disponibilizar um Webmail para acesso externo. Tambm teremos algumas contas
alias para no sobrecarregar o usurio com muitas contas. Alm disto faremos com
que todos os usurios tenham autenticao no servidor por meio de TLS.

Linux Force

Servidor Postfix

10.0.47 Introduo terica


O que um MTA?
Mail Transport Agent (MTA) o servidor de e-mails propriamente dito. a parte
mais importante de um sistema de correio. Ele o responsvel pelo recebimento das
mensagens e assegurar que essas mensagens cheguem ao seus destinos. Temos
como exemplos de MTA: o Exim (padro do Debian) , Sendmail (padro do Red Hat)
, Qmail , Postfix e o Microsoft Exchange (proprietrio) .
O que um MUA?
Mail User Agent (MUA) o nome designado para o programa cliente de e-mail.
Podemos citar como exemplos o Thunderbird , Evolution e o Microsoft Outlook
O que um MDA?
Mail Delivery Agente (MDA) um intermedirio entre o MTA e o MUA. Ele usado
para aplicar filtros antispam, remover vrus em anexos e fazer encaminhamento de
e-mails para outros endereos. Exemplos de MDA: Procmail, Fetchmail, Binmail,
Dovecot, Maildrop, Postdrop etc.
O que o SMTP?
SMTP (Simple Mail Transfer Protocol) um protocolo baseado em linhas de comando executado sobre o protocolo TCP, cujo objetivo transmitir mensagens de
e-mail dentre dois computadores. A porta utilizada pelo protocolo SMTP a 25.

10.0.48 Introduo ao Postfix


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

Linux Servers Revolutions

Pgina 196

Linux Force

Servidor Postfix

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 queles 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 e Ph.D em fsica at hoje. Escrito em
linguagem C, a primeira verso oficial do "Postfix", como Software Livre, foi lanada
em Dezembro de 1998.

10.0.49 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",

Linux Servers Revolutions

Pgina 197

Linux Force

Servidor 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, uma ajuste nesses "daemons"sero
bem compensadores em termos de performance.

http://www.prefirolinux.com/forum/viewtopic.php?f=2&t=12

10.0.50 Laboratrio
Na mquina DMZ, execute:

root@dmz :~ # aptitude install postfix procmail

Os pacotes a seguir possuem depend ncias n o satisfeitas :

exim4 - config : Conflita : postfix mas 2.7.1 -1+ squeeze1 ser


instalado .

postfix : Conflita : mail - transport - agent o qual um pacote


virtual .

exim4 - daemon - light : Conflita : mail - transport - agent o qual um


pacote virtual .

As seguintes a es resolver o estas depend ncias :

Linux Servers Revolutions

Pgina 198

Linux Force

Servidor Postfix

Remover os pacotes a seguir :

7
8

1)

exim4

2)

exim4 - base

10

3)

exim4 - config

11

4)

exim4 - daemon - light

12

Aceitar esta solu o ? [ Y / n / q /?] Y \ textbf {}

13
14

Os NOVOS pacotes a seguir ser o instalados :

15

postfix python { a } python - minimal { a } python2 .6{ a }


python2 .6 - minimal { a } procmail

16
17
18

Os pacotes a seguir ser o REMOVIDOS :


exim4 {a } exim4 - base { a } exim4 - config { a } exim4 - daemon - light { a }
0 pacotes atualizados , 5 novos instalados , 4 a serem removidos e 32
no atualizados .

19

preciso obter 5341 kB de arquivos . Depois do desempacotamento ,


14 ,3 MB ser o usados .

20

Voc deseja continuar ? [ Y / n /?] Y

Aceite remover os pacotes do exim4 para continuar com a instalao. Ir surgir a tela
abaixo, ento selecione Site Internet.

Linux Servers Revolutions

Pgina 199

Linux Force

Servidor Postfix

Depois, na tela abaixo, digite o domnio da Dexter dexter.com.br

No Debian, quando instalarmos o "Postfix", ele automaticamente remove o


servidor padro que o "Exim4".

Sobre o formato da caixa de correio, temos:


MailBox ou Mbox - o formato padro para caixa de correio do Postfix. Este formato
armazena todas as mensagens em um nico arquivo de texto. Esses arquivos so

Linux Servers Revolutions

Pgina 200

Linux Force

Servidor Postfix

nomeados de acordo com o nome do usurio e armazenados em geral em /var/mail


ou /var/spool/mail.
Desvantagens:
Encarece a excluso de mensagens (requer regravao no arquivo inteiro, exceto se a mensagem a ser excluda for a ltima);

O arquivo que guarda a mensagem pode se corromper caso softwares em


diferentes m quinas o usem ao mesmo tempo ( concorrentemente ) ;

MailDir - usa diretrios e um arquivo por mensagem. A excluso de mensagens


sempre muito rpida.
Desvantagem:
O tempo para varrer a caixa de correio e produzir uma lista de mensagens
maior, pois todos os arquivos devem ser abertos e lidos.
Vamos passar agora para o arquivo de configurao. Edite-o e deixe assim:

root@dmz :~ # vim / etc / postfix / main . cf

## Banner que ser mostrado nas conex es . importante mudar .

smtpd_banner = MTA da Dexter - Servidor $myhostname

## Modificar o dom nio caso o MUA n o fizer corretamente , mas

## deixamos ativado , pois isso trabalho do pr prio MUA .

append_dot_mydomain = yes

## Nessa op o , precisamos colocar o hostname da m quina e o

## dom nio que conhecido como FQDN .

myhostname = dmz

10

## Arquivos onde s o configurados os alias de e - mails .

11

alias_maps = hash :/ etc / aliases

12

alias_database = hash :/ etc / aliases

Linux Servers Revolutions

Pgina 201

Linux Force

Servidor Postfix

13

## Define a origem local , que por padr o o mesmo FQDN que est em

14

## / etc / mailname .

15

myorigin = dexter . com . br

16

## Dom nios que o seu servidor pode receber mensagens .

17

mydestination = dexter . com . br , smtp . dexter . com . br ,


mail . dexter . com . br , webmail . dexter . com . br , pop . dexter . com . br ,
imap . dexter . com . br , localhost

18

## Essa op o s usada se o seu servidor faz Relay para outros

19

## servidores de e - mail .

20

relayhost =

21

## Nesse campo deveremos colocar apenas os IP s que podem realmente

22

## fazer relay em seu servidor . CUIDADO , se adicionarmos IP s ou

23

## classes demais , o servidor poder virar alvo de spammers .

24

mynetworks = 127.0.0.0/8

25

## Padr o de entrega das mensagens . Nesse caso usado o mbox .

26

mailbox_command = procmail -a " $EXTENSION "

27

## Tamanho m ximo de caixa - postal para entrega local

28

mailbox_size_limit = 0

29

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

30

## estabelecer conex es . O padr o do Debian seria todas as

192.168. X .0/24

interfaces .
31

inet_interfaces = all

32

## Tamanho m ximo da mensagem

33

message_size_limit = 25000000

34

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


endere o

35

## de e - mail para direcionar mensagens a uma determinada pasta

36

recipient_delimiter = +

Agora vamos reiniciar o Postfix:

root@dmz :~ # service postfix restart

Stopping Postfix Mail Transport Agent : postfix .

Starting Postfix Mail Transport Agent : postfix .

Linux Servers Revolutions

Pgina 202

Linux Force

Servidor Postfix

Veja se a porta 25 (smtp) est pronta para receber conexes:

root@dmz :~ # netstat - nltup | grep master

tcp

0 0.0.0.0:25

0.0.0.0:*

OU A

2085/ master

Agora que temos o servidor ativado, devemos criar os usurios que usaro os servios de correio eletrnico. Para isso, utilize um script com base na lista utilizada na
criao dos usurios do Samba:

root@dmz :~ # vim postfix - users . sh

# !/ bin / bash

aptitude install whois -y

for lista in $ ( cat / root / lista_users . txt ) ; do

5
6

useradd -g users -m -p $ ( mkpasswd 123456) -s / bin / false $lista


done

Aps a incluso dos usurios, vamos realizar alguns testes usando o telnet:

root@dmz :~ # aptitude install telnet -y

root@dmz :~ # telnet mail . dexter . com . br 25

Trying 192.168. X .3...

Connected to mail . dexter . com . br .

Escape character is ^] .

220 MTA da Dexter - Servidor dmz . dexter . com . br

helo mail

250 dmz . dexter . com . br

mail from : tux@linus . com

10

250 2.1.0 Ok

11

rcpt to : dexterclem@dexter . com . br

12

250 2.1.5 Ok

13

data

14

354 End data with <CR > < LF >. < CR > < LF >

Linux Servers Revolutions

Pgina 203

Linux Force

Servidor Postfix

15

subject : Teste de e - mail

16

Nosso MTA dezzzzzzzz ...

17

18

250 2.0.0 Ok : queued as 4 E20069

19

quit

20

221 2.0.0 Bye

21

Connection closed by foreign host .

Agora verifique o e-mail enviado para o usurio Dexter Clem:

root@dmz :~ # cat / var / spool / mail / dexterclem

From neo@matrix . com

Return - Path : < tux@linus . com >

X - Original - To : dexterclem@dexter . com . br

Delivered - To : dexterclem@dexter . com . br

Received : from mail ( dmz . dexter . com . br [192.168. X .3])

Thu Aug 11 20:15:02 2011

by dmz ( Postfix ) with SMTP id 5 CC607CF

for < dexterclem@dexter . com . br >; Thu , 11 Aug 2011 20:14:02 -0300
( BRT )

subject : teste de e - mail

10

Message - Id : <20110811231420.5 CC607CF@dmz >

11

Date : Thu , 11 Aug 2011 20:14:02 -0300 ( BRT )

12

From : neo@matrix . com

13

To : undisclosed - recipients :;

14

Nosso MTA dezzzzz .....

Para verificar a lista de e-mails no servidor em produo, execute:

root@dmz :~ # mailq

Linux Servers Revolutions

Pgina 204

Linux Force

Servidor Postfix

MDA Courier - POP3 e IMAP para os clientes

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


"POP3"e "IMAP". Para isso, vamos instalar e utilizar o MDA (Mail Delivery Agent)
"Courier".
O que o POP?
Para coletar suas mensagens, o usurio pode utilizar o protocolo POP (Post Office
Protocol). O POP mais antigo. Atravs do POP o usurio baixa as mensagens
para seu computador local e as exclui do servidor. A desvantagem que, se o usurio
desejar acessar suas mensagens de outros locais, no poder fazer. O POP no
utilizado para armazenamento permanente de mensagens. A porta 110 padro por
este protocolo. Quando implementada uma camada de segurana ao POP, dever
trabalhar na porta 995.
O que o IMAP?
O IMAP (Internet Message Access Protocol) foi projetado para permitir que o usurio armazene as mensagens permanentemente no servidor. Com o IMAP o usurio
pode acessar todas as mensagens a partir de qualquer lugar no mundo. O IMAP
tambm tem uma implementao mais disseminada das conexes TLS seguras. A
porta 143 utilizada por este protocolo. IMAP sobre TLS a porta 993. Vamos ento
instalar nosso MDA:

root@dmz :~ # aptitude install courier - authdaemon courier - authlib


courier - base courier - imap courier - pop nail -y

Aps este passo, edite o arquivo do Postfix:

root@dmz :~ # vim / etc / postfix / main . cf

# ## comentar :

# mailbox_command = procmail -a " $EXTENSION "

Linux Servers Revolutions

Pgina 205

Linux Force

Servidor Postfix

# ## adicionar :

home_mailbox = Maildir /

DEFAULT = $HOME / Maildir /

MAILDIR = $HOME / Maildir /

Reinicie o servio do Postfix:

root@dmz :~ # service postfix restart

Precisamos tambm criar mais um arquivo do PAM referente ao "smtp":

root@dmz :~ # cp / etc / pam . d / pop3 / etc / pam . d / smtp

Criando caixas postais

Vamos agora criar as caixas postais. Para isto vamos criar uma script:

root@dmz :~ # vim maildir . sh

# !/ bin / bash

for lista in $ ( cat / root / lista_users . txt ) ; do


maildirmake / home / $lista / Maildir

4
5

maildirmake / home / $lista / Maildir /. Enviadas

maildirmake / home / $lista / Maildir /. Rascunhos

maildirmake / home / $lista / Maildir /. lixeira

maildirmake / home / $lista / Maildir /. Spam

chown -R $lista : users / home / $lista

10

done

Linux Servers Revolutions

Pgina 206

Linux Force

Servidor Postfix

O comando "maildirmake"faz parte do pacote "Courier", veja este site:


http://www.courier-mta.org/maildirmake.html

Reinicie os servios :

root@dmz :~ # service courier - authdaemon restart

root@dmz :~ # service courier - imap restart

root@dmz :~ # service courier - pop restart

root@dmz :~ # service postfix restart

Verifique as conexes ativas no servidor:

root@dmz :~ # netstat - putan | grep 110

tcp6

root@dmz :~ # netstat - putan | grep 143

tcp6

0
0

0 :::110
0 :::143

:::*
:::*

OU A

3742/ couriertcpd

OU A

3665/ couriertcpd

Agora teste a nova caixa postal:

root@dmz :~ # echo " Reuniao amanha as 15 hs ." | mail -s " Reuniao com
Cliente Linux Force " dexterclem@dexter . com . br

2
3

root@dmz :~ # cat \
/ home / dexterclem / Maildir / new /1313109656. Vfd00I607a1M156000 . dmz

Return - Path : < root@dexter . com . br >

X - Original - To : dexterclem@dexter . com . br

Delivered - To : dexterclem@dexter . com . br

Received : by dmz ( Postfix , from userid 0)

8
9
10

id 222 E07E1 ; Thu , 11 Aug 2011 21:40:56 -0300 ( BRT )


Date : Thu , 11 Aug 2011 21:40:56 -0300
From : root@dexter . com . br

Linux Servers Revolutions

Pgina 207

Linux Force

Servidor Postfix

11

To : dexterclem@dexter . com . br

12

Subject : Reuniao com Cliente Linux Force

13

Message - ID : <4 e447698 . M8zZc0OB8yim8VHd % mandarkglory@dexter . com . br >

14

User - Agent : Heirloom mailx 12.4 7/29/08

15

MIME - Version : 1.0

16

Content - Type : text / plain ; charset = us - ascii

17

Content - Transfer - Encoding : 7 bit

18

Reuniao amanha as 15 hs .

No esquea de publicar o registro "MX"no seu DNS, configurar corretamente


o campo "TXT"e tambm o DNS REVERSO.

Criando alias no Postfix

Podemos criar "aliases"(apelidos) para que um usurio possa receber vrios e-mails
diferentes na mesma conta. Edite o arquivo de alias e crie um para o seu usurio,
no formato "usuario_de_alias: usuario_real":

root@dmz :~ # vim / etc / aliases


ouvidoria : mandarkglory

Para validar essas modificaes e gerar o arquivo de "hash", precisamos usar ou o


comando "postalias" ou "newaliases":

root@dmz :~ # postalias / etc / aliases

ou

root@dmz :~ # newaliases

Verifique se o arquivo "aliases.db"foi atualizado:

Linux Servers Revolutions

Pgina 208

Linux Force

root@dmz :~ # stat / etc / aliases . db

...

Access : 2011 -08 -11 22:05:41.028000893 -0300

Modify : 2011 -08 -11 22:05:41.028000893 -0300

Change : 2011 -08 -11 22:05:41.028000893 -0300

Servidor Postfix

Agora podemos fazer um teste enviando um e-mail para o usurio de "alias":

1
2
3
4

root@dmz :~ # echo " Teste de Alias " | mail -s " Teste de alias " \
ouvidoria@dexter . com . br
root@dmz :~ # cat \
/ home / mandarkglory / Maildir / new /1313111359. Vfd00I607aM81600 . dmz

Date : Thu , 11 Aug 2011 22:09:19 -0300

From : root@dexter . com . br

To : ouvidoria@dexter . com . br

Subject : Teste de alias

Message - ID : <4 e447d3f .+ kR8VGISl9eSI9ON % root@dexter . com . br >

10

User - Agent : Heirloom mailx 12.4 7/29/08

11

MIME - Version : 1.0

12

Content - Type : text / plain ; charset = utf -8

13

Content - Transfer - Encoding : 8 bit

14

Teste de Alias

Repare que a visualizao foi feita no arquivo do usurio Mandark Glory!

Configurando o Webmail

O Squirrelmail um Webmail desenvolvido em PHP com o objetivo de acessar as


mensagens de um servidor IMAP. Para podermos instalar e configurar este webmail
precisaremos ter o Servidor Postfix com suporte a IMAP e o Servidor Apache com
suporte a PHP. Em nosso caso j temos ambos configurados! Ento...

Linux Servers Revolutions

Pgina 209

Linux Force

Servidor Postfix

root@dmz :~ # aptitude install squirrelmail

Com a instalao concluda, vamos adicionar ao arquivo /etc/apache2/httpd.conf


o seguinte:

root@dmz :~ # vim / etc / apache2 / httpd . conf

Alias / webmail " / usr / share / squirrelmail / "

DirectoryIndex index . php

Reinicie o servio do Apache:

root@dmz :~ # service apache2 restart

Agora vamos configurar o SquirrelMail. Execute:

root@dmz :~ # squirrelmail - configure

Selecione a opo 1:

Linux Servers Revolutions

Pgina 210

Linux Force

Servidor Postfix

Selecione novamente a opo 1:

Linux Servers Revolutions

Pgina 211

Linux Force

Servidor Postfix

Entre com o nome da Organizao Dexter:

Selecione a opo R para retornar ao menu principal:

Linux Servers Revolutions

Pgina 212

Linux Force

Servidor Postfix

Selecione a opo 2 para configurar o servidor:

Selecione a opo 1:

Linux Servers Revolutions

Pgina 213

Linux Force

Servidor Postfix

Entre com o domnio da Dexter dexter.com.br:

Selecione R para voltar ao menu principal e depois selecione S:

Linux Servers Revolutions

Pgina 214

Linux Force

Servidor Postfix

Selecione Q para sair da configurao:

Agora vamos criar o Virtualhost do Webmail da Dexter:

root@dmz :~ # vim / etc / apache2 / sites - available / webmail . dexter . com . br

< VirtualHost *:80 >

DocumentRoot / usr / share / squirrelmail

ServerName webmail . dexter . com . br

ErrorLog / var / log / apache2 / webmail - error . log

CustomLog / var / log / apache2 / webmail - access . log common

</ VirtualHost >

< VirtualHost *:443 >

DocumentRoot / usr / share / squirrelmail

10

ServerName webmail . dexter . com . br

11

ErrorLog / var / log / apache2 / webmail - error . log

12

CustomLog / var / log / apache2 / webmail - access . log common

13

SSLEngine on

14

SSLCertificateFile / etc / ssl / dexter . crt

15

SSLCertificateKeyFile / etc / ssl / dexter . key

16

</ VirtualHost >

Linux Servers Revolutions

Pgina 215

Linux Force

Servidor Postfix

Ative o novo site e reinicie o Apache:

root@dmz :~ # a2ensite webmail . dexter . com . br

root@dmz :~ # service apache2 restart

Acesse nosso webmail: https://www.dexter.com.br/webmail

Acessando com o usurio dexterclem, veja a mensagem:

Linux Servers Revolutions

Pgina 216

Linux Force

Servidor Postfix

Autenticando os usurios de e-mail

Porque ativar a autenticao?


Habilitar a autenticao no servidor de e-mail permite que os usurios enviem mensagens utilizando seu MTA sem ter que passar o endereo da rede na diretiva mynetworks no arquivo "/etc/postfix/main.cf". Se voc comear a inserir vrios endereos nesta diretiva, logo seu servidor MTA vai virar alvo de SPAMMERS. Vamos
utilizar o SASL (Simple Authentication and Security Layer ou Camada de Simples Autenticao e Segurana).

1
2

root@dmz :~ # aptitude install libsasl2 -2 sasl2 - bin libsasl2 - modules \


libdb4 .6 procmail

Vamos renomear o arquivo configurao e criar um diretrio de spool:

Linux Servers Revolutions

Pgina 217

Linux Force

Servidor Postfix

root@dmz :~ # mv / etc / default / saslauthd \

/ etc / default / saslauthd . backup

root@dmz :~ # mkdir -p / var / spool / postfix / var / run / saslauthd

Agora abra um arquivo novo e inclua o seguinte:

root@dmz :~ # vim / etc / default / saslauthd

START = yes

MECHANISMS = " pam "

MECH_OPTIONS = " "

THREADS =5

OPTIONS =" -c -m / var / spool / postfix / var / run / saslauthd -r "

Crie tambm o arquivo abaixo e inclua o seguinte:

root@dmz :~ # vim / etc / postfix / sasl / smtpd . conf

pwcheck_method : saslauthd

mech_list : plain login

Reinicie o servio do saslauthd:

root@dmz :~ # service saslauthd restart

Short name ( NAME ) undefined in / etc / default / saslauthd , using


default ... ( warning ) .

Stopping : default .

Starting : default .

Inclua o usurio postfix no grupo sasl:

root@dmz :~ # adduser postfix sasl

Linux Servers Revolutions

Pgina 218

Linux Force

Servidor Postfix

Acrescente no final do arquivo principal do Postfix:

root@dmz :~ # vim / etc / postfix / main . cf

smtpd_sasl_local_domain =

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_recipient_restrictions = permit_sasl_authenticated ,
permit_mynetworks , reject_unauth_destination

smtpd_tls_auth_only = no

Reinicie novamente o Postfix:

root@dmz :~ # service postfix restart

Short name ( NAME ) undefined in / etc / default / saslauthd , using


default ... ( warning ) .

Stopping : default .

Starting : default .

Ativando maior segurana com TLS

TLS significa Transport Layer Security e uma camada de segurana para o sistema de autenticao que j foi configurado. O sistema de autenticao no traz
segurana, pois o mesmo ocorre em texto puro, sem encriptao. Com isso, as senhas podem ser capturadas com um sniffer. Portanto, mos obra! Comearemos
criando o diretrio onde ficar chave de criptografia; depois gere a chave neste diretrio:

root@dmz :~ # mkdir -p / etc / postfix / ssl

root@dmz :~ # cd / etc / postfix / ssl /

root@dmz :/ etc / postfix / ssl / # openssl genrsa - des3 - rand \ / etc / hosts
- out smtpd . key 1024

Linux Servers Revolutions

Pgina 219

Linux Force

Servidor Postfix

271 semi - random bytes loaded

Generating RSA private key , 1024 bit long modulus

6
7
8

e is 65537 (0 x10001 )

Enter pass phrase for smtpd . key : 123456

10

<<<--- Adicione uma senha

Verifying - Enter pass phrase for smtpd . key : 123456

<<<--- Confirme

Altere a permisso do arquivo de chave para que somente o root tenha acesso:

1
2

root@dmz :/ etc / postfix / ssl / # chmod -v 600 smtpd . key


modo de " smtpd . key " alterado para 0600 ( rw - - - - - - -)

Agora vamos criar o certificado de autenticidade para os acessos :

1
2

root@dmz :~/ etc / postfix / ssl # openssl req - new - key smtpd . key - out \
smtpd . csr

Enter pass phrase for smtpd . key : 123456

...

Country Name (2 letter code ) [ AU ]: BR

State or Province Name ( full name ) [ Some - State ]: S o Paulo

Locality Name ( eg , city ) []: S o Paulo

Organization Name ( eg , company ) [ Internet Widgits Pty Ltd ]: Dexter

Organizational Unit Name ( eg , section ) []: Depto . TI

10

Common Name ( eg , YOUR name ) []: Admin

11

Email Address []: root@dexter . com . br

12

Please enter the following extra attributes

13

to be sent with your certificate request

14

A challenge password []:123456

15

An optional company name []: Dexter

Agora vamos assinar nosso certificado digital:

Linux Servers Revolutions

Pgina 220

Linux Force

1
2

Servidor Postfix

root@dmz :~/ etc / postfix / ssl # openssl x509 - req - days 365 - in \
smtpd . csr - signkey smtpd . key - out smtpd . crt

Signature ok

subject =/ C = BR / ST = S \ xC3 \ xA3o Paulo / L = S \ xC3 \ xA3o


Paulo / O = Dexter / OU = Dpto .
TI / CN = Admin / emailAddress = root@dexter . com . br

Getting Private key

Enter pass phrase for smtpd . key : 123456

E finalmente, a chave sem criptografia:

1
2

root@dmz :~/ etc / postfix / ssl # openssl rsa - in smtpd . key - out \
smtpd . key . unencrypted

Enter pass phrase for smtpd . key : 123456

writing RSA key

Sobrescreva a chave criada anteriormente para a chave de mesmo nome:

root@dmz :~/ etc / postfix / ssl # mv smtpd . key smtpd . key - original

root@dmz :~/ etc / postfix / ssl # mv smtpd . key . unencrypted smtpd . key

Agora vamos gerar o certificado .pem:

1
2

root@dmz :~/ etc / postfix / ssl # openssl req - new - x509 - extensions \
v3_ca - keyout cakey . pem - out cacert . pem - days 365

...

Enter PEM pass phrase : 123456

Verifying - Enter PEM pass phrase : 123456

...

Country Name (2 letter code ) [ AU ]: BR

State or Province Name ( full name ) [ Some - State ]: S o Paulo

Linux Servers Revolutions

Pgina 221

Linux Force

Servidor Postfix

Locality Name ( eg , city ) []: S o Paulo

10

Organization Name ( eg , company ) [ Internet Widgits Pty Ltd ]: Dexter

11

Organizational Unit Name ( eg , section ) []: Depto . TI

12

Common Name ( eg , YOUR name ) []: Admin

13

Email Address : root@dexter . com . br

Acrescente no final do arquivo principal do Postfix:

root@dmz :~ # vim / etc / postfix / main . cf

smtp_use_tls = yes

smtp_tls_note_starttls_offer = yes

smtpd_tls_CAfile = / etc / postfix / ssl / cacert . pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600 s

smtpd_tls_cert_file = / etc / postfix / ssl / smtpd . crt

smtpd_tls_key_file = / etc / postfix / ssl / smtpd . key

10

smtpd_tls_session_cache_database =
btree : $ { queue_directory }/ smtpd_scache

11

smtp_tls_session_cache_database =
btree : $ { queue_directory }/ smtp_scache

12

tls_random_source = dev :/ dev / urandom

Agora vamos instalar os pacotes de configurao do MDA Courier:

1
2

root@dmz :~ # aptitude install courier - imap - ssl courier - pop - ssl \


courier - ssl

Durante a instalao ir surgir uma tela como a da prxima figura, avisando sobre o
certificado digital ser assinado por uma empresa confivel!

Linux Servers Revolutions

Pgina 222

Linux Force

Servidor Postfix

Reinicie o Postfix:

root@dmz :~ # service postfix restart

Verifique as portas seguras ativadas:

root@dmz :~ # netstat - putan | grep 993

tcp6

0 :::993

:::*

OU A

2200/ couriertcpd
3

root@dmz :~ #

root@dmz :~ # netstat - putan | grep 995

tcp6

0 :::995

:::*

OU A

2153/ couriertcpd

Agora s testar utilizando um MUA, como por exemplo, o Thunderbird, Icedove


ou Outlook. Iremos testar no Thunderbird 5.0! Efetue o download do aplicativo na

Linux Servers Revolutions

Pgina 223

Linux Force

Servidor Postfix

mquina Squeeze e execute:

root@squeeze :~ # tar xjvf thunderbird -5.0. tar . bz2 -C / opt

root@squeeze :~ # chmod + x / opt / thunderbird / thunderbird

Crie um atalho na barra do Gnome e abra o aplicativo. Entre com os dados do


usurio, como nome, e-mail e senha, depois clique em continuar:

Na tela abaixo, clique em Config manual:

Linux Servers Revolutions

Pgina 224

Linux Force

Servidor Postfix

Entre com os dados do POP e SMTP, conforme abaixo:

Ser solicitada confirmao dos riscos , depois clique me Criar conta:

Linux Servers Revolutions

Pgina 225

Linux Force

Servidor Postfix

Confirme a verificao do certificado e depois em confirmar exceo:

Linux Servers Revolutions

Pgina 226

Linux Force

Servidor Postfix

Voc j poder receber e enviar e-mails com segurana!

Para configurarmos o recebimento de e-mail via IMAP, v no menu Edit -> Configurar
contas -> Nova conta. Agora faa como abaixo:

Aceite o certificado digital:

Linux Servers Revolutions

Pgina 227

Linux Force

Servidor Postfix

Basta seguir os procedimentos de rotina de uso do MUA!!

Linux Servers Revolutions

Pgina 228

Captulo 11
Servidor OpenLDAP
11.0.51 Cenrio
A empresa DEXTER COURIER precisa de agilidade em suas conexes, mas principalmente na forma como seus usurios efetuam o login nos sistemas. Para acabar
de vez este problema, deseja que haja uma centralizao na autenticao dos usurios em vista de seus recursos tecnolgicos.

11.0.52 Proposta de soluo


Para atender a empresa Dexter, teremos que implantar um servidor de autenticao
centralizada baseado no protocolo LDAP, onde poderemos disponibilizar acesso aos
sistemas da empresa de forma gil e eficiente.

11.0.53 Introduo terica


O que o LDAP? LDAP (Lightweight Directory Access Protocol ou Protocolo
Leve de Acesso a Diretrios), um padro aberto capaz de facilitar, de forma flexvel, o compartilhamento, a manuteno e o gerenciamento de grandes volumes de

Linux Force

Servidor OpenLDAP

informaes, definindo um mtodo padro de acesso e atualizao de informaes


dentro de um diretrio. (TUTTLE 2009)
Este um protocolo de rede que roda sobre o TCP/IP que permite organizar os
recursos de rede de forma hierrquica, como uma rvore de diretrio, onde temos
primeiramente o diretrio raiz, em seguida a rede da empresa, o departamento e
por fim o computador do funcionrio e os recursos de rede (arquivos, impressoras,
etc.) compartilhados por ele. A rvore de diretrio pode ser criada de acordo com a
necessidade.
Uma das principais vantagens do LDAP a facilidade em localizar informaes e
arquivos disponibilizados. Pesquisando pelo sobrenome de um funcionrio possvel localizar dados sobre ele, como telefone, departamento onde trabalha, projetos
em que est envolvido e outras informaes includas no sistema, alm de arquivos
criados por ele ou que lhe faam referncia. Cada funcionrio pode ter uma conta de
acesso no servidor LDAP, para que possa cadastrar informaes sobre si e compartilhar arquivos.
O LDAP oferece uma grande escalabilidade. possvel replicar servidores (para
backup ou balanceamento de carga) e incluir novos servidores de uma forma hierrquica, interligando departamentos e filiais de uma grande multinacional por exemplo.
A organizao dos servidores neste caso similar ao DNS: especificado um servidor raiz e a partir da possvel ter vrios nveis de subservidores, alm de mirrors
do servidor principal.
O LDAP pode ser usado em qualquer tipo de rede TCP/IP e um padro aberto,
permitindo que existam produtos para vrias plataformas.

Uma das sutes mais usadas o OpenLDAP (GPL), que pode ser baixado no:
http://www.openldap.org http://www.hardware.com.br/termos/ldap

O que o OpenLDAP?

Linux Servers Revolutions

Pgina 230

Linux Force

Servidor OpenLDAP

O projeto OpenLDAP um servio de diretrio que utiliza o protocolo LDAP, baseado no protocolo X.500. compatvel com LDAPv3 livre e popular e est disponvel
para vrias plataformas como: Linux, Solaris, Mac OS e Windows. Segurana e
controle de dados imprescindvel em qualquer empresa, por isso uma das vantagens do OpenLDAP a possibilidade de que vrios sistemas possam compartilhar
de base de dados de usurios e senhas de forma centralizada e integrada.

http://www.otrampolim.com.br/coluna/3675/bruno-lopessiqueira/cotidiano/openldap

Como o LDAP, utiliza o trfego de dados via TCP/IP, podendo ser implementado em
diversas plataformas em redes IPV4 e IPV6, possibilitando tambm 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".
O OpenLDAP constitui-se de:
slapd - Servio OpenLDAP
syncrepl - Servio para replicao e atualizao OpenLDAP
libraries - Bibliotecas para implementao do OpenLDAP, com utilitrios e ferramentas
Quais servios podem usar a base de dados do OpenLDAP?
Podemos destacar o Apache, DNS, FTP, Kerberos, MySQL, PAM, Postfix, Samba,
Squid, SSL, Clusters entre outros.

Linux Servers Revolutions

Pgina 231

Linux Force

Servidor OpenLDAP

O que um diretrio?
Diretrio significa algo usado para indicar direes. Um exemplo simples: Uma
lista telefnica. A lista organizada de maneira hierrquica para que a informao
buscada seja encontrada de forma eficiente. Em um diretrio voc pode pesquisar,
inserir, alterar e apagar itens.
O que NO um diretrio?
Um diretrio no pode ser considerado um banco de dados, porque o bando de
dados otimizado para ler e gravar dados com o mesmo grau de eficincia. O diretrio otimizado apenas para leitura e seu sistema de transaes bem mais simples
do que de um banco de dados. Um diretrio no pode ser considerado um sistema
de arquivos, por que o sistema de arquivo possui otimizaes para manipulao de
arquivos, como por exemplo, para trabalhar com grandes arquivos.
Podemos destacar alguns atributos de diretrios:

c - Representa pa s ( country )

o - Representa uma organiza o como uma empresa ( organization )

ou - Representa um departamento ( organization unit )

4
5

Alguns atributos de entradas :

cn - Representa um nome ( common name )

uid - Representa a identidade de um usu rio ( user ID )

gn - Representa o nome pr prio de uma pessoa ( given name )

sn - Representa o sobrenome de uma pessoa ( surname )

Laboratrio

Vamos iniciar a instalao do OpenLDAP na mquina Datacenter:

Linux Servers Revolutions

Pgina 232

Linux Force

Servidor OpenLDAP

root@datacenter :~ # aptitude install slapd ldap - utils libldap -2.4 -2

Vamos gerar o hash da senha do administrador para inserirmos na diretiva

rootpw que estar no arquivo / etc / ldap / slapd . conf :

root@datacenter :~ # slappasswd | tee / root / ldap . txt

New password : 123456

Re - enter new password : 123456

{ SSHA } yb9Xs4qy9rtG4CSd / hph62qo6X1LFxmW

Agora vamos criar o arquivo /etc/ldap/slapd.conf conforme abaixo, adicionando o


hash da senha do administrador da base:

root@datacenter :~ # vim / etc / ldap / slapd . conf

include

include

/ etc / ldap / schema / cosine . schema

include

/ etc / ldap / schema / nis . schema

include

/ etc / ldap / schema / inetorgperson . schema

/ etc / ldap / schema / core . schema

6
7

allow

bind_v2

pidfile

/ var / run / slapd / slapd . pid

argsfile

/ var / run / slapd / slapd . args

10

loglevel

none

12

modulepath

/ usr / lib / ldap

13

moduleload

back_bdb

14

sizelimit

11

500

15

tool - threads

16

backend

bdb

17

database

bdb

19

suffix

" dc = dexter , dc = com , dc = br "

20

rootdn

" cn = admin , dc = dexter , dc = com , dc = br "

18

Linux Servers Revolutions

Pgina 233

Linux Force

Servidor OpenLDAP

rootpw

{ SSHA } yb9Xs4qy9rtG4CSd / hph62qo6X1LFxmW

23

directory

" / var / lib / ldap "

24

dbconfig

set_cachesize 0 2097152 0

25

dbconfig

set_lk_max_objects 1500

26

dbconfig

set_lk_max_locks 1500

27

dbconfig

set_lk_max_lockers 1500

21
22

28
29

index

objectClass eq

30

lastmod on

31

checkpoint

512 30

32
33

access

to

attrs = userPassword , shadowLastChange

34

by dn = " cn = admin , dc = dexter , dc = com , dc = br " write

35

by anonymous auth

36

by self write

37

by * none

38
39

access to dn . base = " " by * read

40
41

access to *

42

by dn = " cn = admin , dc = dexter , dc = com , dc = br " write

43

by * read

Aps criar o arquivo slapd.conf em /etc/ldap, vamos parar o servio slapd e fazer
nossas alteraes:

root@datacenter :~ # service slapd stop

Stopping OpenLDAP : slapd .

root@datacenter :~ # cd / etc / ldap

Faa backup do diretrio original antes de alter-lo:

root@datacenter :~ # cp -r slapd . d slapd . d . backup

Linux Servers Revolutions

Pgina 234

Linux Force

Servidor OpenLDAP

Remova o diretrio antigo:

root@datacenter :~ # rm -r slapd . d

Crie um novo:

root@datacenter :~ # mkdir slapd . d

Teste se o arquivo novo est OK:

root@datacenter :~ # slaptest -f slapd . conf -F slapd . d

slapd . conf : line 36: rootdn is always granted unlimited privileges .

slapd . conf : line 42: rootdn is always granted unlimited privileges .

config file testing succeeded

Se aparecer essa mensagem est tudo certo! As linhas 36 e 42 so apenas informaes referentes a privilgios do administrador em relao base! Agora altere o
dono e grupo para openldap para o novo diretrio slapd.d:

root@datacenter :~ # chown -R openldap : openldap slapd . d

Inicie novamente o slapd:

root@datacenter :~ # service slapd start

Starting OpenLDAP : slapd .

Veja se a porta do servio est em escuta:

Linux Servers Revolutions

Pgina 235

Linux Force

Servidor OpenLDAP

root@datacenter :~ # netstat - putan | grep 389

tcp

0 0.0.0.0:389
tcp6

0.0.0.0:*

0 :::389

OU A

:::*

12484/ slapd
OU A

12484/ slapd

O que um LDIF?

LDIF (LDAP Data Interchange Format) o formato de arquivo de entrada padro


do OpenLDAP. desta maneira que os dados devem ser includos no sistema LDAP
quando no temos nenhuma ferramenta de administrao. Para nos ajudar na migrao da base de usurios que temos no sistema do servidor para a base de dados
do OpenLDAP, vamos utilizar uma ferramenta chamada migrationtools. Faa a instalao:

root@datacenter :~ # aptitude install migrationtools

Localize as linhas 71 e 74, respectivamente, e as deixe exatamente assim:

root@datacenter :~ # vim +71


/ usr / share / migrationtools / migrate \ _common . ph
$DEFAULT \ _MAIL \ _DOMAIN = " dexter . com . br ";

$DEFAULT_BASE = " dc = dexter , dc = com , dc = br " ;

Agora entre no diretrio e execute os scripts abaixo:

root@datacenter :~ # cd / usr / share / migrationtools /

root@datacenter :/ usr / share / migrationtools # ./ migrate_passwd . pl \

/ etc / passwd / etc / ldap / users . ldif

root@datacenter :/ usr / share / migrationtools # ./ migrate_group . pl \

Linux Servers Revolutions

Pgina 236

Linux Force

5
6
7

Servidor OpenLDAP

/ etc / group / etc / ldap / groups . ldif


root@datacenter :/ usr / share / migrationtools # ./ migrate_base . pl > \
/ etc / ldap / base . ldif

Verificaque se o arquivo /etc/ldap/base.ldif est com o cabealho correto:

root@datacenter :~ # head / etc / ldap / base . ldif

dn : dc = dexter , dc = com , dc = br

dc : dexter

objectClass : top

objectClass : domain

Caso tiver alguma coisa antes da linha dn: dc=dexter,dc=com,dc=br, remova!


Agora que temos os arquivos .ldif, vamos inseri-los na base de dados do OpenLDAP. Voc precisar da senha de administrador da base. Inicie pelo arquivo da base,
depois insira os grupos e finalmente os usurios:

root@datacenter :~ # ldapadd -x -D cn = admin , dc = dexter , dc = com , dc = br -f


\

2
3

/ etc / ldap / base . ldif -W


root@datacenter :~ # ldapadd -x -D cn = admin , dc = dexter , dc = com , dc = br -f
\

4
5

/ etc / ldap / groups . ldif -W


root@datacenter :~ # ldapadd -x -D cn = admin , dc = dexter , dc = com , dc = br -f
\

/ etc / ldap / users . ldif -W

Parmetros do comando ldapadd:

-x

- autentica o simples

-D

- espec fica o dom nio

Linux Servers Revolutions

Pgina 237

Linux Force

-f

- indica o arquivo ldif

-W

- chama o prompt de autentica o

-w senha - executa o comando sem solicitar a senha

Servidor OpenLDAP

Faa uma busca simples na base procura de um determinado uid:

root@datacenter :~ # ldapsearch -x -b dc = dexter , dc = com , dc = br \

uidNumber =1002

# extended LDIF

# LDAPv3

# base <dc = dexter , dc = com , dc = br > with scope subtree

# filter : uidNumber =1002

# requesting : ALL

10
11

# dexterclem , People , dexter . com . br

12

dn : uid = dexterclem , ou = People , dc = dexter , dc = com , dc = br

13

uid : dexterclem

14

cn : dexterclem

15

objectClass : account

16

objectClass : posixAccount

17

objectClass : top

18

objectClass : shadowAccount

19

shadowMax : 99999

20

shadowWarning : 7

21

loginShell : / bin / false

22

uidNumber : 1002

23

gidNumber : 2001

24

homeDirectory : / srv / samba / homes / dexterclem

25
26

# search result

27

search : 2

28

result : 0 Success

29
30

# numResponses : 2

Linux Servers Revolutions

Pgina 238

Linux Force

31

Servidor OpenLDAP

# numEntries : 1

Vamos agora aprender como alterar o dado de um usurio que est no OpenLDAP.
Para isto temos que criar um arquivo ldif:

root@datacenter :~ # vim / root / loginShell . ldif

dn : uid = mandarkglory , ou = People , dc = dexter , dc = com , dc = br

changetype : modify

replace : loginShell

loginShell : / bin / bash

Neste exemplo, o shell do usurio mandarkglory ser alterado para /

bin / bash . Vamos ent o aplicar a altera o :

root@datacenter :~ # ldapmodify -x -D cn = admin , dc = dexter , dc = com , dc = br


\

-f / root / loginShell . ldif -W

Enter LDAP Password :

modifying entry " uid = mandarkglory , ou = People , dc = dexter , dc = com , dc = br "

Vamos consultar a base para ver se alterou mesmo:

1
2

root@datacenter :~ # ldapsearch -x -b dc = dexter , dc = com , dc = br \


uid = mandarkglory | grep login - A4 - B3

uidNumber : 1003

gidNumber : 2001

homeDirectory : / srv / samba / homes / mandarkglory

loginShell : / bin / bash

7
8

# search result

search : 2

10

result : 0 Success

Linux Servers Revolutions

Pgina 239

Linux Force

Servidor OpenLDAP

Para voltar ao normal, s alterar o arquivo /root/loginShell.ldif e aplicar o comando


ldapmodify novamente.
Vamos aprender agora uma forma alternativa (e mais fcil!) para administrar a base
OpenLDAP, atravs do phpldapadmin. Voc vai precisar ter o Apache instalado no
servidor do OpenLDAP e mais alguns pacotes mostrados abaixo:

root@datacenter :~ # aptitude install apache2 php5 php - pear php5 - ldap


\

phpldapadmin

V no navegador da mquina Squeeze e acesse o endereo :


http://192.168.X.2/phpldapadmin/index.php

Linux Servers Revolutions

Pgina 240

Linux Force

Servidor OpenLDAP

Clique em conectar e no campo senha digite 123456:

Tela inicial com a base do lado esquerdo:

Linux Servers Revolutions

Pgina 241

Linux Force

Servidor OpenLDAP

11.0.54 Backup da base de dados


Inicialmente, pare o servidor OpenLDAP:

root@datacenter :~ # service slapd stop

Para realizar o backup, simplesmente realize o seguinte comando:

root@datacenter :~ # slapcat -l / root / backup_ldap . ldif

Gerando uma cpia de segurana:

Linux Servers Revolutions

Pgina 242

Linux Force

1
2

Servidor OpenLDAP

root@datacenter :~ # cp / root / backup_ldap . ldif \


/ root / backup_ldap_copia . ldif

DICA: Para ter certeza que o seu backup seguro, importante realiz-lo em
um perodo livre de gravaes, ou com o servidor slapd desligado.

Inicie o servidor slapd novamente:

root@datacenter :~ # service slapd start

Aps realizar o backup, vamos remover sua base de dados inteira:

root@datacenter :~ # ldapdelete -x -D cn = admin , dc = dexter , dc = com , dc = br


\

-r dc = dexter , dc = com , dc = br -W

Para nos certificarmos de que a base realmente foi removida, execute o comando
slapcat novamente, mas tenha certeza de que voc no est sobrescrevendo o seu
backup:

root@datacenter :~ # slapcat

Pare o servidor:

root@datacenter :~ # service slapd stop

Linux Servers Revolutions

Pgina 243

Linux Force

Servidor OpenLDAP

Vamos restaurar a nossa base, utilizando o comando slapadd:

root@datacenter :~ # slapadd -l backup_ldap . ldif

.# ################### 100.00% eta


fast !

none elapsed

none

Closing DB ...

Inicie o slapd:

root@datacenter :~ # service slapd start

Execute o comando slapcat novamente para termos certeza que o backup foi restaurado:

root@datacenter :~ # slapcat

Linux Servers Revolutions

Pgina 244

Captulo 12
Servidor Proxy com Squid
12.0.55 Cenrio
A fim de evitar abusos no uso da internet, a empresa DEXTER COURIER precisa
de uma soluo que integre permisso de acesso, tipos de arquivos que podero
efetuar download, cache de pginas e monitoramento destes acessos.

12.0.56 Proposta de soluo


Muitas empresas empregam o uso de PROXY, seja para fazer cache, seja para filtrar
contedo. A implementao do servidor proxy Squid amplamente utilizada, possibilitando assim suprir as necessidades da empresa Dexter. Alm disto, faremos uso
do SquidGuard, um poderoso filtro de contedo.

12.0.57 Introduo Terica


Imagine que os seus usurios necessitem acessar com frequncia um site de notcias. A cada requisio, o navegador Web resolve o DNS deste site, faz a requisio

Linux Force

Servidor Proxy com Squid

ao servidor Web encontrado e traz o contedo at o usurio. Agora, imagine que 500
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 num disco rgido e,
quando um segundo cliente acessar o mesmo site, o servidor "proxy"verifica se o
contedo esta 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 ACLs (Access Control List), item que veremos
mais adiante.
O Web Proxy pode trabalhar de dois modos: manual ou transparente.

12.0.58 Proxy Manual


Em um proxy manual, 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 regras especficas e
controle de logs mais apurados.

Linux Servers Revolutions

Pgina 246

Linux Force

Servidor Proxy com Squid

http://www.linuxnaveia.com/mais-artigos/215-squid-configuracao-basica.html

A imagem a seguir mostra como funciona um proxy manualmente configurado.

http://www.hardware.com.br/livros/servidores-linux/configurando-servidorproxy-com-squid.html

12.0.59 Proxy Transparente


Em um proxy transparente no h necessidade de configurarmos o "browser". O
cliente far 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 configurarmos
os navegadores Web manualmente, o que seria justificvel em uma rede onde no

Linux Servers Revolutions

Pgina 247

Linux Force

Servidor Proxy com Squid

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 a sites que utilizam "HTTPS", j que o "Squid"no sabe lidar com
este tipo de contedo quando est trabalhando de forma transparente.
Abaixo uma ilustrao simplificada de como esse processo funciona:

http://www.hardware.com.br/livros/servidores-linux/configurando-servidorproxy-com-squid.html

12.0.60 ACL - Access Control Lists

As ACLs (Access Control List) so regras para navegao via proxy. Vale ressaltar
que as ACLs so lidas na ordem em que aparecem e podem ser combinadas, tome
muito cuidado ao criar ou alterar uma nova regra. Veja a documentao online no
endereo http://www.squid-cache.org para as configuraes no citadas!

Linux Servers Revolutions

Pgina 248

Linux Force

Servidor Proxy com Squid

12.0.61 Definindo ACL


As ACLs so dispostas de seguinte forma:

acl NOME_DA_ACL

TIPO_DA_ACL

par metro

Nesta regra ser definido todos os parmetros em sequncia, separados por espao,
utilizado para regras com poucos parmetros.

acl NOME_DA_ACL

TIPO_DA_ACL

" / caminho / completo / regra . conf "

J nesta outra forma ser definido um arquivo para adio dos parmetros dispostos,
um por linha, utilizado para regras com muitos parmetros. Todas as ACLs so tratadas com CASE-SENSITIVE. Para definir como CASE-INSENTIVE, utilize a opo
-i logo aps o tipo de ACL.

12.0.62 Tipos de ACL


src => ACL do tipo src (origem) trata sobre um determinado IP ou uma faixa de
IP com que o cliente chega ao Proxy.

acl ESTACAO_DIRETOR src 192.168.200.100/255.255.255.255

acl MyNetwork src 192.168.200.0/24

acl gateway src 192.168.200.254

dst => ACL do tipo dst (destino) trata do IP de destino da navegao.

acl UOL dst 200.221.2.45/255.255.255.255

Linux Servers Revolutions

Pgina 249

Linux Force

Servidor Proxy com Squid

acl Servers dst 192.168.200.1 192.168.200.2 192.168.200.3

dstdomain => ACL do tipo dstdomain (domnio de destino) trata do domnio de


destino da navegao.

acl SITE_INTEGRAL dstdomain . terra . com . br

acl linuxforce dstdomain . linuxforce . com . br

acl Brasil dstdomain . com . br

time => ACL do tipo time (tempo) trata de um determinado momento baseado
em dia da semana e hora.

acl HORARIO_ALMOCO time 12:00 -13:30

acl HORARIO_ALMOCO time MTWHF 12:00 -13:30

Segue abreviao dos dias.


Abreviao Dia da semana
S domingo M segunda-feira T tera-feira W quarta-feira H quinta-feira F sexta-feira A
sbado
url_regex => ACL do tipo url_regex (expresso regular na URL) trata de uma
determinada entrada na URL. Pode-se fazer muitas regras baseadas em expresses regulares, porm preciso conhecer muito bem sobre o assunto.

acl EXTENSAO_PROIBIDA url_regex ? i \. exe$

port => ACL do tipo port (porta) trata da porta de destino da navegao.

Linux Servers Revolutions

Pgina 250

Linux Force

Servidor Proxy com Squid

acl SITE_8080 port 8080

proxy_auth => ACL do tipo proxy_auth (autenticao no Proxy) trata do Login


com que o cliente se autentica no Proxy. Requer uma configurao de autenticao.

acl DIRETOR proxy \ _auth joao

"ACLS"de origem e destino podem ser cobrados na LPI-2, bem como sua
forma de utilizao.

Esses so os tipos bsicos de "ACLs", porm uma "ACL"sozinha no faz absolutamente nada. Durante o laboratrio veremos como tornar as "ACLs"teis com configuraes que permitem utiliz-las para bloqueio e liberao de sites, domnios e
horrios.

1
2

LEMBRETE - Tipos de ACL

3
4

src

- Filtro por rede ou endere o IP ;

time

- Filtro por hora e dia da semana ;

urlpath_regex

url \ _regex

- Filtro de uma " string " na " url " ;

dstdomain

- Filtro de uma " url " ;

proxy \ _auth

10

arp

11

maxconn

12

proto

13

port

- filtro de complemento de uma " url " ;

- Filtro por usu rios autenticados ;

- Filtro por " MAC Address " ;


- Filtro por conex es ;
- Filtro por protocolos ;
- Filtro por porta .

Linux Servers Revolutions

Pgina 251

Linux Force

Servidor Proxy com Squid

12.0.63 Regras das ACLs

http_access => Permite ou nega acessos baseados nas ACLs pr definidas.


utilizado seguido de allow ou deny. Se a ACL for precedida de um ponto
de exclamao significa que ser a negao da ACL. As regras sero lidas na
ordem em que aparecem.

Seguem exemplos :

Acesso liberado para o diretor baseado em login

http_access allow DIRETOR

Acesso liberado ao site do UOL exceto no horrio do almoo

http_access allow UOL ! HORARIO_ALMOCO

Extenso proibida baseado em expresso regular

http_access deny EXTENSAO_PROIBIDA

Toda e qualquer modificao no arquivo de configurao do SQUID faz-se necessrio


digitar o comando abaixo para que entrem em vigor imediatamente!

# squid -k reconfigure

Linux Servers Revolutions

Pgina 252

Linux Force

Servidor Proxy com Squid

12.0.64 Laboratrio

Vamos instalar nosso PROXY na mquina Firewall. Para isto, execute:

root@firewall :~ # aptitude install 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.

Aps confirmar a instalao do "Squid", verifique o contedo dos diretrios:

root@firewall :~ # ls - lh / etc / squid

root@firewall :~ # ls - lh / var / log / squid

root@firewall :~ # ls - lh / var / spool / squid

Para posterior consulta, renomeie o arquivo de configurao original:

root@firewall :~ # mv / etc / squid / squid . conf


/ etc / squid / squid . conf . distro

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 configurar nosso proxy com as regras
abaixo:

Linux Servers Revolutions

Pgina 253

Linux Force

Servidor Proxy com Squid

root@firewall :~ # vim / etc / squid / squid . conf

## Para que o " Squid " ou a apenas uma rede , troque o valor do

## par metro " http_port 3128" para :

http_port 192.168. X .1:3128

## Este par metro diz qual ser o hostname que o " Squid " utilizar

## para resolver seu endere o local e tamb m o endere o que ser

## apresentado nas p ginas de informa o .

visible_hostname proxy . dexter . com . br

## Espa o em mem ria RAM para o cache de p ginas

10

cache_mem 64 MB

11

## Espa o em disco para o cache de p ginas

12

## ufs = sistema de arquivo padrao do squid

13

## 5120 = 5 GB para cache de pagina , se precisar de Windows Update e

14

## antivirus , tera que aumentar este valor

15

## 128 = 128 diretorios

16

## 256 = subdiretorios dentro dos diret rios acima criados

17

## utiliza esta divisao para indexar mais rapido quando lotar o


cache

18

## de disco , descartando os arquivos mais antigos !

19

cache_dir ufs / var / spool / squid 5120 128 256

20

## Log de acesso p ginas

21

access_log / var / log / squid / access . log

22

## Inibe a informa o da vers o do Squid quando um site bloqueado

23

httpd_suppress_version_string on

24

## P ginas de bloqueios exibidos em Portugu s

25

error_directory / usr / share / squid / errors / Portuguese

26

## Tamanho m ximo do arquivo no cache em RAM e disco ,


respectivamente

27

maximum_object_size_in_memory 64 KB

28

maximum_object_size 700 MB

29

minimum_object_size 0 KB

30

## Porcentagem de uso do cache de disco m nimo e


m ximo , respectivamente

31

cache_swap_low 90

32

cache_swap_high 95

33

## Log de uso do cache em disco

Linux Servers Revolutions

Pgina 254

Linux Force

34

Servidor Proxy com Squid

cache_access_log / var / log / squid / cache . log

35
36

# ##### Declara o das ACL s ######

37
38

# ##### ACL s do pr prio Squid ######

39

acl all src 0.0.0.0/0.0.0.0

40

acl manager proto cache_object

41

acl localhost src 127.0.0.1/255.255.255.255

42

## As acl s " SSL_ports " e a " Safe_ports " s o as respons veis por

43

## limitar as portas que podem

44

## ser usadas atrav s do proxy . Na documenta o do Squid , que prev


o

45

## uso de diversos protocolos

46

## conhecidos e tamb m o uso de portas altas

47

acl SSL_ports port 443 563

48

acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901
1025 -65535

49

## Exclui os objetos que foram armazenados no cache do squid

50

acl purge method PURGE

51

## Permite ao Squid deixar fazer a conex o direta quem fizer parte


da

52

## ACL connect

53

acl CONNECT method CONNECT

54
55

# ##### Minhas ACL s ######

56
57

# ##### Aplica o das ACL s ######

58

# Permite acesso ao gerenciamento do cache vindo somente do


localhost

59

http_access allow manager localhost

60

http_access deny manager

61

# Permite acesso a exclus o dos objetos no cache somente pelo


localhost

62

http_access allow purge localhost

63

http_access deny purge

64

# Nega acesso a requisi es de portas desconhecidas

65

http_access deny ! Safe_ports

Linux Servers Revolutions

Pgina 255

Linux Force

66

# Nega conex o exceto para portas SSL

67

http_access deny CONNECT ! SSL_ports

68

# Libera acesso ao localhost

69

http_access allow localhost

Servidor Proxy com Squid

70
71

# ##### Minhas regras ######

72
73

# Nega qualquer outra rede

74

http_access deny all

12.0.65 Criando a estrutura do Squid


Execute os comandos abaixo para criar a estrutura de diretrios do Squid:

root@firewall :~ # service squid stop

root@firewall :~ # squid -z

2011/08/17 16:56:05| Creating Swap Directories

root@firewall :~ # service squid start

Starting Squid HTTP proxy : squid .

12.0.66 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 "ACLs", 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.globo.com". Como fazer isso?
Crie uma ACL com a rede de origem, uma ACL para domnios ".com" e uma ACL
para o domnio "globo.com". Insira as linhas abaixo da entrada Minhas ACLs no

Linux Servers Revolutions

Pgina 256

Linux Force

Servidor Proxy com Squid

/etc/squid/squid.conf:

root@firewall :~ # vim / etc / squid / squid . conf

# ##### Minhas ACL s ######

acl RedeDexter src 192.168. X .0/24

acl Internacional dstdomain . com

acl Globo dstdomain . globo . com

Agora com as ACLs criadas, iremos especificar as polticas de acesso e bloqueios


com o "http_access". Insira uma entrada Minhas regras no final do arquivo o
/etc/squid/squid.conf, conforme abaixo:

root@firewall :~ # vim / etc / squid / squid . conf

# ##### Minhas regras ######

http_access allow RedeDexter Globo

http_access deny RedeDexter Internacional

http_access allow RedeDexter

Para checar se h erros na configurao, execute o comando abaixo. Se retornar ao


prompt, sua configurao est OK:

root@firewall :~ # squid -k parse

Visto que no recomendvel efetuar um restart no servio do Squid devido demora em checar todas as suas entradas em cache, execute o comando abaixo para
reler o arquivo squid.conf:

root@firewall :~ # squid -k reconfigure

Configure o navegador no cliente:

Linux Servers Revolutions

Pgina 257

Linux Force

Servidor Proxy com Squid

Acesse as opes na sequncia abaixo:

Informe o endereo do seu servidor Proxy e a porta a ser utilizada. Marque a utilizao do proxy para todos os protocolos:

Linux Servers Revolutions

Pgina 258

Linux Force

Servidor Proxy com Squid

Limpe o cache do navegador para no atrapalhar nossos teste:

Acessando a pgina do google.com.br - LIBERADO!

Linux Servers Revolutions

Pgina 259

Linux Force

Servidor Proxy com Squid

Acessando a pgina do google.com - NEGADO!

Linux Servers Revolutions

Pgina 260

Linux Force

Servidor Proxy com Squid

Lembrete: A ordem das ACLs 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" o que nos importa! Lembre-se disso quando fizer "troubleshooting"ou criar novas regras.

12.0.67 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.
Para exemplificar o uso de "blacklists"e "whitelists", vamos criar duas "ACLs", uma
negando qualquer "url"que contenha a palavra "linux" e outra liberando os sites
"www.treinamentolinux.com" e "www.linuxforce.com.br":

root@firewall :~ # vim / etc / squid / squid . conf

# ##### Minhas ACL s ######

acl RedeDexter src 192.168. X .0/24

acl Internacional dstdomain . com

acl Globo dstdomain . globo . com

acl blacklist url_regex linux

acl whitelist dstdomain www . treinamentolinux . com


www . linuxforce . com . br

...

# ##### Minhas regras ######

10

http_access allow RedeDexter whitelist

11

http_access deny RedeDexter blacklist

12

http_access allow RedeDexter Globo

Linux Servers Revolutions

Pgina 261

Linux Force

13

http_access deny RedeDexter Internacional

14

http_access allow RedeDexter

Servidor Proxy com Squid

Reinicie o squid:

root@firewall :~ # squid -k reconfigure

Agora, tente acessar os sites:

www . linuxforce . com . br

www . vivaolinux . com . br

www . treinamentolinux . com

www .br - linux . org

Para aprender mais, acesse http://www.squid-cache.org e leia a documentao


oficial do projeto "Squid".

12.0.68 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 servidor Web Apache. Vamos configurar esse modelo de autenticao e criar uma ACL
que exija autenticao tambm. Vamos configurar a autenticao do Squid, adicionado o contedo abaixo no incio do arquivo /etc/squid/squid.conf:

root@firewall :~ # vim / etc / squid / squid . conf

1 auth_param basic program / usr / lib / squid / ncsa_auth


/ etc / squid / passwd

Linux Servers Revolutions

Pgina 262

Linux Force

Servidor Proxy com Squid

2 auth_param basic children 5

3 auth_param basic realm >>> Servidor Proxy Squid - Dexter <<<

4 auth_param basic credentialsttl 2 hours

1.Linha 1 - configura o programa autenticador;


2.Linha 2 - nmero de processos de autenticao;
3.Linha 3 - configura a mensagem da caixa de autenticao;
4.Linha 4 - configura o tempo de validade da autenticao. Vamos cadastrar tambm,
alm da ACL que ir gerenciar a autenticao no proxy, o http_access que permitir
o acesso autorizado:

# #### Minhas ACL s ######

acl password proxy_auth REQUIRED

3
4

# ##### Minhas Regras ######

http_access deny ! password

# ### = > primeira da lista !

Gerando o arquivo de senhas:

root@firewall :~ # aptitude install apache2 - utils

root@firewall :~ # htpasswd -c / etc / squid / passwd mandarkglory

Reinicie o servio do Squid e tente acessar qualquer site!

root@firewall :~ # service squid restart

Solicitao de usurio e senha:

Linux Servers Revolutions

Pgina 263

Linux Force

Servidor Proxy com Squid

Aps o logar com o usurio vlido no proxy:

Linux Servers Revolutions

Pgina 264

Linux Force

Servidor Proxy com Squid

12.0.69 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. Resumindo, usado para auditoria de acesso!
Na verso do Debian Squeeze o Sarg no est no repositrio oficial, por isto teremos
que inserir o repositrio backports. O que seria ento backports? O backports um
repositrio paralelo ao projeto Debian. Ele mantido pelos desenvolvedores e
pela equipe de segurana do Debian. Esse repositrio rene novos programas e
novas verses de programas compilados sobre o stable.
Para utilizarmos o backports simples, primeiro devemos adicionar o seu repositrio
no arquivo /etc/apt/sources.list:

root@firewall :~ # vim / etc / apt / sources . list

# ## adicionar

deb http :// www . backports . org / debian squeeze - backports main contrib
\ non - free

Depois atualize:

root@firewall :~ # aptitude update

root@firewall :~ # aptitude -t squeeze - backports install sarg

root@firewall :~ # sarg

Como voc pode perceber, todos os backports vem desativados por default. Por isto
tivemos que informar qual o tipo de repositrio a ser utilizado!
Vamos observar seu arquivo de configurao. Fique a vontade e leia alguns comentrios para entender as funes do "SARG".

Linux Servers Revolutions

Pgina 265

Linux Force

Servidor Proxy com Squid

root@firewall :~ # vim / usr / sbin / sarg - reports

Para que a pgina de relatrio seja acessada, instale o Apache2:

root@firewall :~ # aptitude install apache2 -y

Edite o arquivo abaixo com o contedo apontando para o diretrio do Sarg:

root@firewall :~ # vim / etc / apache2 / httpd . conf

Alias / squid - reports " / var / lib / sarg / "

DirectoryIndex index . html

Reinicie o Apache:

root@firewall :~ # service apache2 restart

Agora, acesse o endereo e veja os acessos dos usurios:

http ://192.168. X .1/ squid - reports

Tela inicial do Sarg com data de acesso:

Linux Servers Revolutions

Pgina 266

Linux Force

Servidor Proxy com Squid

Selecionando um data, podemos ver os usurios/IPs. Selecione o usurio:

Agora podemos ver o final do relatrio de acessos e o total de uso de banda:

Linux Servers Revolutions

Pgina 267

Linux Force

Servidor Proxy com Squid

12.0.70 Autenticao via OpenLDAP

Vamos agora configurar o Squid para fazer autenticao usando a base de dados do
OpenLDAP j criada. bastante simples. Bata alterar a linha de configurao da
autenticao do usurio (auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd) para a linha abaixo:

root@firewall :~ # vim / etc / squid / squid . conf

auth_param basic program / usr / lib / squid / ldap_auth -b \

dc = dexter , dc = com , dc = br -f uid =% s 192.168. X .2

Reinicie o servio:

root@firewall :~ # squid -k reconfigure

Linux Servers Revolutions

Pgina 268

Linux Force

Servidor Proxy com Squid

Quando habilitamos a autenticao anteriormente, s tnhamos criado o usurio


mandarkglory com o htpasswd, agora voc pode testar outros usurios na autenticao, pois agora a base usada ser a do OpenLDAP. Faa o teste logando com os
usurios allissonmore e candimilo!

Linux Servers Revolutions

Pgina 269

Captulo 13
Firewall
13.0.71 Cenrio

A fim de que ningum acesse dados indevidos da empresa ou mesmo de seus clientes, a empresa DEXTER COURIER deve contar com um excelente Firewall para
bloquear tentativas de invaso e liberar apenas o trfego necessrio aos servios
que ficam na mquina DMZ.

13.0.72 Proposta de soluo

Faremos a implementao do Firewall baseado no Iptables, gerenciando as polticas


de entrada de pacotes na empresa Dexter, bem como a liberao de acesso externo
ao servidor da DMZ.

13.0.73 Introduo terica

O que um firewall?

Linux Force

Firewall

Um firewall faz o filtro de pacotes que passam na rede. Para configurar um firewall
necessrio o conhecimento sobre a estrutura da rede em questo e dos diferentes
protocolos envolvidos na comunicao, isto , dos servios que a rede usa para que
eles no percam a comunicao. O objetivo em ter uma mquina fazendo o papel
de Firewall Gateway em nossa rede minimizar as tentativas de ataques que elas
recebem, tentando impedir possveis invases e levantamento de informaes.
Os sistema GNU/Linux com Kernel 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".
Caractersticas do iptables :
Filtro de pacotes statefull => isso significa que o iptables capaz de atuar sobre
as camadas do protocolo TCP;
Modularidade => a configurao do kernel modular e com o netfilter no diferente, pois novas funcionalidades podem ser adicionadas sem muito esforo.
Um mdulo s ser usado se for da necessidade do administrador;

http://www.prefirolinux.com/iptables-firewall/74-firewall-e-iptables-tudo-quevoce-precisa-saber-sem-duvidas-o-melhor-conteudo-da-internet-parte-1-9.html

13.0.74 Revisando os conceitos de Rede


Os dados so transmitidos na Internet agrupados em pacotes TCP (de maneira geral). Esses pacotes TCP podem conter at 1460 bytes de dados. Alm dos dados,
40 bytes adicionais vo junto no pacote. Nesses 40 bytes a mais seguem:

- IP de origem

Linux Servers Revolutions

Pgina 271

Linux Force

- IP de destino

- Porta de origem

- Porta de destino

- C digos de verifica o

- N mero do pacote

Firewall

Os cdigos de verificao servem para garantir a integridade dos dados que esto
sendo trafegados na rede. A funo bsica do IP cuidar do endereamento e entrega de pacotes. A funo bsica do TCP fazer verificaes de erros e numerao
de portas. Logo, os dados sero transmitidos de forma quebrada, em pacotes menores.
Existem 65.536 portas TCP e UDP. Elas so numeradas de 0 e 65.535. As portas
baixas esto na faixa entre 0 a 1023. Elas esto reservadas para servios mais
conhecidos como: servidor web, ftp, ssh, telnet, servidores de e-mail, compartilhamento de arquivos, como, por exemplo, Samba, NFS etc. Portas altas esto faixa
acima de 1023.
Relembrando...

As portas padr es de um servidor FTP : 21 e 20.

A porta padr o de um servidor web : 80.

A porta padr o de um servidor web com https : 443.

A porta padr o do SMTP : 25.

A porta padr o POP3 : 110.

A porta padr o POP3S : 995.

A porta padr o IMAP : 143.

A porta padr o IMAPS : 995.

A porta padr o do SSH : 22.

10

A porta padr o para transfer ncia de zona do DNS : 53/ tcp .

11

A porta padr o para consulta de DNS : 53/ udp .

12

A porta padr o do OpenLDAP : 389.

13

A porta padr o do proxy Squid : 3128.

14

A porta padr o do OpenVPN : 5000

15

No arquivo " / etc / services " podemos obter toda a rela o de portas !

Linux Servers Revolutions

Pgina 272

Linux Force

Firewall

13.0.75 TTL
Atravs de um simples ping, conseguimos deduzir o Sistema Operacional de uma
mquina. Por exemplo:

root@firewall :~ # ping - c2 www . uol . com . br

PING www . uol . com . br (200.221.2.45) 56(84) bytes of data .

64 bytes from home . uol . com . br (200.221.2.45) : icmp_req =1 ttl =54


time =15.0 ms

64 bytes from home . uol . com . br (200.221.2.45) : icmp_req =2 ttl =54


time =16.1 ms

Neste exemplo temos uma TTL (Time to Live) no valor de 54.


Os valores de TTL (padres) so seguidos por:

Roteadores Ciclades = 30

Linux = 64

Windows = 128

Cisco = 255

Linux + Iptables = 255

Por exemplo, quando executamos um ping em www.uol.com.br ele respondeu o


valor 54. O valor mais prximo desse valor de TTL o valor 64, do Linux. Se
considerarmos que o pacote deu 10 hops (saltos) at chegar ao destino (passou por
10 roteadores) ento temos o clculo: 64-10=54.
Sendo assim, provavelmente o sistema operacional que o servidor do UOL est
usando Linux. E para saber essa quantidade de hops que um pacote faz at

Linux Servers Revolutions

Pgina 273

Linux Force

Firewall

chegar ao seu destino, podemos usar ferramentas como traceroute e mtr.


Para sabermos o valor de TTL do SO, podemos executar:

root@firewall :~ # cat / proc / sys / net / ipv4 / ip_default_ttl

64

Outro comando para verificar o valor de TTL :

root@firewall :~ # sysctl -a | grep ip_default

net . ipv4 . ip_default_ttl = 64

E se quisermos alterar esse valor de TTL, tambm podemos! Mas se alterarmos


simplesmente esse arquivo, no ser o suficiente, porque ele no ficar fixo! Para
fixar um valor diferente do valor padro, necessrio editar o arquivo abaixo e no
final dele acrescentar uma linha com o novo valor de TTL que voc definir:

root@firewall :~ # vim / etc / sysctl . conf

net . ipv4 . ip_default_ttl = 64

Quando adicionamos a linha com o valor de TTL no arquivo /etc/sysctl.conf, temos


que usar o comando abaixo para validar a alterao:

root@firewall :~ # sysctl -p / etc / sysctl . conf

Vamos instalar os programas traceroute e mtr para teste:

root@firewall :~ # aptitude install traceroute mtr

root@firewall :~ # traceroute www . uol . com . br

Linux Servers Revolutions

Pgina 274

Linux Force

Firewall

traceroute to www . uol . com . br (200.221.2.45) , 30 hops max , 60 byte


packets

189.59.249.97. static . host . gvt . net . br (189.59.249.97)

22.555 ms
6

22.796 ms

gvt -te -0 -3 -0 -0 - rt01 . spo . gvt . net . br (189.59.248.61)


17.854 ms

* * *

200 -147 -26 -113. static . uol . com . br (200.147.26.113)

10

24.095 ms

17.721 ms

22.755 ms

29.581 ms

21.413 ms

22.924 ms

200.221.136.154 (200.221.136.154)

22.403 ms

23.011 ms

22.187

ms
10

11

11

...

12

30

* * *
* * *

Cada linha que aparece um nome um roteador por onde o pacote passa. Notem
que ele passa por vrios lugares! E quando pingo para o site da uol, ele d um valor
de TTL 54 + 10 hops dos pacotes = 64.

Por padro o comando traceroute procura por at 30 hops, mesmo que ele no encontre nada, que o caso de quando aparece ***.

Mas na linha de hop 8 por exemplo, apareceu *** e depois aparaceu um nome na
linha 9. Provavelmente temos uma mquina que est com o ping bloqueado ou ento
uma mquina com firewall, portanto ela no aparece quando o comando traceroute
faz as buscas.

Verifique agora com o comando mtr:

root@firewall :~ # mtr uol . com . br

Linux Servers Revolutions

Pgina 275

Linux Force

Firewall

13.0.76 Tabelas do Iptables


O Iptables possui 4 tabelas, sendo elas:

Filter - Como o nome sugere, trata-se de uma tabela de controle de contedo


dos pacotes. Serve para atribuir permisses de acessos essenciais (permitir/negar)

Nat - Esta tabela utilizada no compartilhamento de conexes, permitindo que


redes internas roteiem e possam acessar a Internet, por exemplo.

Mangle - utilizada para modificar uma propriedade de um pacote e seu uso


avanado, como por exemplo influenciar na deciso de roteamento, filtro ou
controle de banda.

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 possui 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.

13.0.77 O que uma chain?


Local onde vo ser definidas as regras para o nosso firewall. Cada Tabela possui
suas CHAINS. As da tabela filter so as seguintes:

Linux Servers Revolutions

Pgina 276

Linux Force

Firewall

INPUT

Regras de entrada de pacotes .

OUTPUT

- Regras de sa da de pacotes .

FORWARD

- Regras de passagem de pacotes pelo firewall .

As CHAINS da tabela NAT so as seguintes:

PREROUTING

- Regras que ser o processadas antes do roteamento

dos pacotes nas interfaces do firewall .


2

POSTROUTING

- Regras que ser o processadas p s roteamento dos

pacotes nas interfaces do firewall .


3

OUTPUT

- Regras de sa da de pacotes .

13.0.78 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", as chamadas 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.

Linux Servers Revolutions

Pgina 277

Linux Force

Firewall

Na Linux Force temos dois treinamentos de segurana da informao: Pen


Test, testes de vulnerabilidades de redes usando a OSSTMM 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.

A sintaxe do comando iptables : iptables [-t tabela] [opo] [chain] [dados] -j


[alvo]
Parmetros:

Alvos:

Linux Servers Revolutions

Pgina 278

Linux Force

Firewall

13.0.79 Laboratrio

Vamos montar nosso "firewall", mas antes verifique como esto configuradas as polticas bsicas que esto definidas por padro:

root@firewall :~ # iptables -t filter - nL

Chain INPUT ( policy ACCEPT )

target

prot opt source

destination

4
5

Chain FORWARD ( policy ACCEPT )

target

prot opt source

destination

7
8

Chain OUTPUT ( policy ACCEPT )

target

prot opt source

destination

10
11

root@firewall :~ # iptables -t nat - nL

12

Chain PREROUTING ( policy ACCEPT )

13

target

prot opt source

destination

14
15

Chain POSTROUTING ( policy ACCEPT )

16

target

prot opt source

destination

17
18

Chain OUTPUT ( policy ACCEPT )

19

target

prot opt source

Linux Servers Revolutions

destination

Pgina 279

Linux Force

Firewall

Um detalhes muito importante se o nosso firewall ser o gateway da rede, ou


seja, a fronteira entre a sua rede e a internet. Se a resposta for positiva, devemos
estabelecer uma poltica que faa o repasse dos pacotes de uma rede para a outra
(forward). A primeira coisa que precisamos fazer liberar o repasse de pacotes entre
as interfaces de rede, no kernel:

root@firewall :~ # sysctl -w net . ipv4 . ip_forward =1

Para deixar esse valor fixo, devemos deixar esse parmetro dentro de /etc/sysctl.conf.
Basta descomentar a linha 28:

root@firewall :~ # vim +28 / etc / sysctl . conf

net . ipv4 . ip_forward =1

13.0.80 Script de firewall


Segue aqui um "script"com todas as regras necessrias para nosso servidor entrar
em produo. Esse "script"pode ser adicionado aos nveis de execuo do sistema,
para ser carregado sempre que a mquina for ligada. Vamos chamar nosso "script"de
"firewall":

root@firewall :~ # vim / etc / init . d / firewall

# !/ bin / bash

# Firewall personalizado - Curso Linux Servers

clear

## Defini o de variaveis

OK ="[ \E [01;32 mOK \ E [ m ] "

IPT =$( which iptables )

# ativando caminho completo do

Iptables
8

IPVALIDO = " 200.100.50. X "

# IP vindo da Internet ( interface

externa )

Linux Servers Revolutions

Pgina 280

Linux Force

Firewall

# IPAMIGO ="200.100.50. X "

# IP do amigo para conex o da VPN

10

FIREWALL = " 192.168. X .1 "

# IP do Firewall ( interface interna )

11

DATACENTER = " 192.168. X .2 "

# IP da m quina Datacenter

12

DMZ =" 192.168. X .3 "

# IP da m quina DMZ

13

STORAGE =" 192.168. X .4 "

# IP da m quina STORAGE

14

SQUEEZE =" 192.168. X .10 "

# IP da m quina SQUEEZE

15

WINXP =" 192.168. X .20 "

# IP da m quina Windows XP

16

EXTERNA =" eth0 "

# Placa de rede da Internet

( interface externa )
17

INTERNA =" eth1 "

# Placa de rede da Rede Local

( interface interna )
18

PA =" 1024:65535 "

19

REDE =" 192.168. X .0/24 "

# Portas altas
# Defini o da Rede interna

20
21

# Carregando m dulos

22

modprobe ip_conntrack_ftp

23

modprobe ip_nat_ftp

24
25

ativar () {

26

# ## Limpando as regras

27

$IPT -F

28

$IPT -X

29

$IPT -t nat -F

30

$IPT -t nat -X

31

$IPT -P INPUT ACCEPT

32

$IPT -P OUTPUT ACCEPT

33

$IPT -P FORWARD ACCEPT

34

echo 0 > / proc / sys / net / ipv4 / ip_forward

35
36

## Definindo a Pol tica padr o com DROP ( fecha tudo !)

37

$IPT -P INPUT DROP

38

$IPT -P OUTPUT DROP

39

$IPT -P FORWARD DROP

40

echo -e " Pol tica padr o - DROP

\ t \ t \ t $OK "

41
42

## Ativando Forward

43

echo 1 > / proc / sys / net / ipv4 / ip_forward

Linux Servers Revolutions

Pgina 281

Linux Force

Firewall

44
45

## Liberando acesso a Internet para rede local

46

$IPT -A FORWARD -s $REDE -j ACCEPT

47

$IPT -A FORWARD -d $REDE -j ACCEPT

48

$IPT -t nat -A POSTROUTING -o $INTERNA -s $REDE -j MASQUERADE

49

$IPT -t nat -A POSTROUTING -o $EXTERNA -s $REDE -j MASQUERADE

50

echo -e " Liberando Acesso Rede internet

\ t \ t \ t $OK "

51
52

# Regras de LOGs

53

$IPT -A INPUT -j LOG -- log - prefix " Logs do Firewall : INPUT

"

--log - level CRIT


54

$IPT -A OUTPUT -j LOG -- log - prefix " Logs do Firewall : OUTPUT

"

--log - level CRIT


55

$IPT -A FORWARD -j LOG -- log - prefix " Logs do Firewall : FORWARD

"

--log - level CRIT


56

echo -e " Iniciando regras de LOG

\ t \ t \ t $OK "

57

## Liberando SSH na m quina Firewall

58

$IPT -t filter -A INPUT -p tcp -s 0/0 -- sport 1024:65535 -d


$IPVALIDO -- dport 50000 -j ACCEPT

59

$IPT -t filter -A OUTPUT -p tcp -s $IPVALIDO -- sport 50000 -d 0/0


-- dport 1024:65535 -j ACCEPT

60
61

## Liberando SSH nas m quinas INTERNAS

62

$IPT -t nat -A PREROUTING -p tcp -s 0/0 -- sport 1024:65535 -d


$FIREWALL -- dport 51000 -j DNAT --to - destination
$DATACENTER :51000

63

$IPT -t nat -A PREROUTING -p tcp -s 0/0 -- sport 1024:65535 -d


$FIREWALL -- dport 52000 -j DNAT --to - destination $DMZ :52000

64

$IPT -t nat -A PREROUTING -p tcp -s 0/0 -- sport 1024:65535 -d


$FIREWALL -- dport 53000 -j DNAT --to - destination $STORAGE :53000

65

$IPT -t nat -A PREROUTING -p tcp -s 0/0 -- sport 1024:65535 -d


$FIREWALL -- dport 54000 -j DNAT --to - destination $SQUEEZE :54000

66

echo -e " Liberando Acesso s VM teste

\ t \ t \ t $OK "

67
68

## Liberando LoopBack

69

$IPT -A OUTPUT -d 127.0.0.1 -j ACCEPT

70

$IPT -A INPUT -d 127.0.0.1 -j ACCEPT

Linux Servers Revolutions

Pgina 282

Linux Force

71

Firewall

echo -e " Liberando Acesso Localhost

\ t \ t \ t $OK "

72
73

## Estabilizando

as conex es

74

$IPT -A INPUT -m state -- state RELATED , ESTABLISHED -j ACCEPT

75

$IPT -A OUTPUT -m state -- state ESTABLISHED , RELATED -j ACCEPT

76

$IPT -A FORWARD -m state -- state RELATED , ESTABLISHED -j ACCEPT

77

echo -e " Estabilizando as conex es

\ t \ t \ t $OK "

78
79

## Liberando Ping ( Sa da de icmp 8 e Entrada de icmp 0)

80

$IPT -A OUTPUT -p icmp -- icmp - type 8 -s $FIREWALL -d 0/0 -j ACCEPT

81

$IPT -A OUTPUT -p icmp -- icmp - type 8 -s $IPVALIDO -d 0/0 -j ACCEPT

82

$IPT -A INPUT -p icmp -- icmp - type 0 -s 0/0 -d $FIREWALL -j ACCEPT

83

$IPT -A INPUT -p icmp -- icmp - type 0 -s 0/0 -d $IPVALIDO -j ACCEPT

84

$IPT -A INPUT -p icmp -- icmp - type 11 -s 0/0 -d $FIREWALL -j ACCEPT

85

$IPT -A INPUT -p icmp -- icmp - type 11 -s 0/0 -d $IPVALIDO -j ACCEPT

86

echo -e " Liberando Acesso ao ping

87

## Liberando acesso ao proxy SQUID no Firewall

88

$IPT -A INPUT -s $REDE -p tcp -- dport 3128 -j ACCEPT

89

echo -e " Liberando Acesso ao Proxy Squid

\ t \ t \ t $OK "

\ t \ t \ t $OK "

90
91

## Liberando acesso VPN no Firewall

92

# $IPT -A INPUT -p tcp -s $IPAMIGO -- sport 5000 -d $IPVALIDO -- dport


5000 -j ACCEPT

93

# $IPT -A OUTPUT -p tcp -s $FW -- sport 5000 -d $IPAMIGO -- dport 5000


$IPVALIDO -j ACCEPT

94

# echo -e " Liberando Acesso VPN

\ t \ t \ t $OK "

95
96

## Liberando resolu o de nomes

97

$IPT -A FORWARD -p udp -s $DMZ -- sport $PA -d 0/0 -- dport 53 -j


ACCEPT

98

# $IPT -A FORWARD -p udp -s 0/0 -- sport 53 -d $DMZ -- dport $PA -j


ACCEPT

99

echo -e " Liberando Acesso ao DNS

\ t \ t \ t $OK "

100
101

## Liberando navega o web ( INTERNET ) para a REDE INTERNA

102

$IPT -A FORWARD -p tcp -s $REDE -- sport $PA -d 0/0 -- dport 80 -j


ACCEPT

Linux Servers Revolutions

Pgina 283

Linux Force

103

Firewall

$IPT -A FORWARD -p tcp -s $REDE -- sport $PA -d 0/0 -- dport 443 -j


ACCEPT

104

echo -e " Liberando Acesso ao Servidor Web

\ t \ t \ t $OK "

105
106

## Redirecionando acesso externo para o site , e - mail e ftp da


DEXTER na DMZ

107

for PORTA in 20 21 25 80 110 143 443 465 587 993 995; do

108

$IPT -t nat -A PREROUTING -d $IPVALIDO -p tcp -- dport $PORTA -j


DNAT -to - destination \ $DMZ : $PORTA

109

done

110

echo -e " Redirecionando Acesso ao Servidor Web

\ t \ t \ t $OK "

111

echo -e " Redirecionando Acesso ao Servidor MTA

\ t \ t \ t $OK "

112

echo -e " Redirecionando Acesso ao Servidor FTP

\ t \ t \ t $OK "

113
114

## Redirecionando para o Servidor de DNS na DMZ

115

$IPT -t nat -A PREROUTING -d $IPVALIDO -p udp -- dport 53 -j DNAT


--to - destination $DMZ :53

116

echo -e " Redirecionando Acesso ao Servidor DNS

117

echo

118

echo " >>> Firewall ativado ! <<<"

119

echo

120

121

desativar () {

122

# ## Limpando as regras

123

$IPT -F

124

$IPT -X

125

$IPT -t nat -F

126

$IPT -t nat -X

127

$IPT -P INPUT ACCEPT

128

$IPT -P OUTPUT ACCEPT

129

$IPT -P FORWARD ACCEPT

130

echo 0 > / proc / sys / net / ipv4 / ip_forward

131

echo -e " Limpando Regras da Tabela Filter

\ t \ t \ t $OK "

132

echo -e " Limpando Regras da Tabela NAT

\ t \ t \ t $OK "

133

echo -e " Definindo a pol tica padr o como ACCEPT

\ t \ t \ t $OK "

134

echo " >>> Firewall destativado ! <<<"

135

\ t \ t \ t $OK "

Linux Servers Revolutions

Pgina 284

Linux Force

136

Firewall

case " $1 " in

137

" start " ) ativar ;;

138

" stop " ) desativar ;;

139

*) echo " Use start para ativar ou stop para desativar o


firewall " ;;

140

esac

Para que ele seja iniciado junto com sistema quando a mquina for ligada, podemos
colocar o "script"nos nveis de execuo:

root@firewall :/ etc / init . d # chmod + x firewall

root@firewall :/ etc / init . d # insserv -v firewall

root@firewall :/ etc / init . d # ls -l / etc / rc2 . d

Todas as regras que so feitas ficam na memria do computador. Caso ele seja
reiniciado, perderemos todas elas. Podemos utilizar os comandos "iptables-save"e
"iptables-restore".

root@firewall : # iptables - save

root@firewall : # iptables - save > / root / firewall

root@firewall : # service firewall stop

root@firewall : # iptables - restore / root / firewall

root@firewall : # iptables - nL ; sleep 5 ; iptables -t nat -n

Linux Servers Revolutions

Pgina 285

Captulo 14
Servidor OpenVPN
14.0.81 Cenrio
Visto que a empresa DEXTER COURIER possui alguns colaboradores fora do ambiente corporativo (home-office), ela precisa de uma forma segura para que eles
possam acessar a rede da empresa.

14.0.82 Proposta de soluo


Com a flexibilidade das conexes proporcionadas com Internet hoje em dia, vimos
um crescente aumento de colaboradores que necessitam estar em muitos lugares e
ao mesmo tempo conectados na empresa. Para isto devemos montar uma estrutura
de VPN com autenticao criptografada, elevando assim a segurana dos acessos
externos.

14.0.83 Introduo Terica


VPN (Virtual Private Network) uma rede de comunicao particular, geralmente
utilizando canais de comunicao inseguros, como a "LAN"ou mesmo a WAN (Inter-

Linux Force

Servidor OpenVPN

net). 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 "LANs"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.

Por exemplo, supomos que 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.

A VPN no passado j esteve associada a servios remotos de conectividade, como


a Rede de Telefonia Pblica Comutada (RTPC) ou os PVCs (Permanent Virtual
Circuits/Channel) do Frame Relay.

Linux Servers Revolutions

Pgina 287

Linux Force

Servidor OpenVPN

A VPN utiliza protocolos de tunelamento e procedimentos de encriptao, garantindo


a integridade e autenticidade dos dados.

14.0.84 Protocolos de tunelamento


Para se estabelecer um tnel necessrio que as suas extremidades utilizem o
mesmo protocolo de tunelamento. O tunelamento pode ocorrer na camada 2 ou
3 (respectivamente, enlace e rede) do Modelo de Referncia OSI (Open Systems
Interconnection).
Tunelamento em Nvel 2 - Enlace - (PPP sobre IP)
O objetivo transportar protocolos de nvel 3, tais como o IP e IPX na Internet. Os
protocolos utilizam quadros como unidade de troca, encapsulando os pacotes da ca-

Linux Servers Revolutions

Pgina 288

Linux Force

Servidor OpenVPN

mada 3 (como IP/IPX) em quadros PPP (Point-to-Point Protocol). Como exemplos


podemos citar:
1.PPTP (Point-to-Point Tunneling Protocol) da Microsoft permite que o trfego IP,
IPX e NetBEUI sejam criptografados e encapsulados para serem enviados atravs
de redes IP privadas ou pblicas como a Internet;
2.L2TP (Layer 2 Tunneling Protocol) da IETF (Internet Engineering Task Force)
permite que o trfego IP, IPX e NetBEUI sejam criptografados e enviados atravs de
canais de comunicao de datagrama ponto a ponto tais como IP, X25, Frame Relay
ou ATM.
3.L2F (Layer 2 Forwarding) da Cisco utilizada para VPNs discadas. Tunelamento
em Nvel 3 - Rede - (IP sobre IP)
Encapsulam pacotes IP com um cabealho adicional deste mesmo protocolo antes
de envi-los atravs da rede.
O IP Security Tunnel Mode (IPSec) da IETF permite que pacotes IP sejam criptografados e encapsulados com cabealho adicional deste mesmo protocolo para
serem transportados numa rede IP pblica ou privada. O IPSec um protocolo desenvolvido para IPv6, devendo, num futuro bem prximo, se constituir como padro
para todas as formas de VPN. O IPSec sofreu adaptaes possibilitando, tambm, a
sua utilizao com o Ipv4.

http://www.gta.ufrj.br/grad/00_1/pedro/vpns.htm

14.0.85 Arquitetura de VPNs


As VPNs podem ter as seguintes arquiteturas: gateway-gateway, host-to-host e hostto-gateway.:

Linux Servers Revolutions

Pgina 289

Linux Force

Servidor OpenVPN

Gateway-to-gateway: VPN criada para proteger a comunicao entre 2 redes,


por exemplo a rede da matriz de uma companhia interligada a rede de um
escritrio da mesma companhia;

Host-to-host: VPN criada para proteger a comunicao entre dois computadores


especficos. Utilizada, geralmente, quando pequeno numero de usurios tm que
administrar remotamente um sistema;

Host-to-gateway: VPN criada para a proteo da conexo entre um ou mais usurios e uma rede especfica, por exemplo, entre os funcionrios longe da sede da
empresa e a rede da empresa.

Linux Servers Revolutions

Pgina 290

Linux Force

Servidor OpenVPN

http://www.gta.ufrj.br/grad/08_1/vpn/tiposarq.html

14.0.86 Laboratrio
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".

14.0.87 Configurando o servidor


O primeiro passo instalar o software OpenVPN:

root@firewall :~ # aptitude install openvpn

Vamos gerar a chave:

root@firewall :~ # openvpn -- genkey -- secret / etc / openvpn / chave

Linux Servers Revolutions

Pgina 291

Linux Force

Servidor OpenVPN

Vamos gerar o arquivo de configurao do servidor:

root@firewall :~ # vim / etc / openvpn / server . conf

# Habilita suporte ao driver TUN / TAP ;

dev tun

# Endere os da VPN ( sempre na ordem local - remoto )

ifconfig 10.0.0.1

# Comando para chamar nossa chave criptografada e o local dela ;

secret / etc / openvpn / chave

# Define a porta que o OpenVPN vai rodar ;

port 5000

10.0.0.2

10

# Ativa suporte a compress o ;

11

comp - lzo

12

# N vel para depura o de erros ;

13

verb 4

14

# Envia um ping a cada 10 segundos sem atividade e a VPN


reiniciada depois de 120 segundos sem respostas ;

15

keepalive 10 120

16

# Assegura que o daemon mantenha as chaves carregadas , quando a VPN


restabelecida depois de uma queda de conex o ;

17

persist - key

18

# Assegura que o daemon mantenha a interface tun aberta , quando a


VPN restabelecida depois de uma queda de conex o ;

19

persist - tun

20

# Permite que o t nel continue aberto mesmo que o endere o IP da


outra m quina mude .

21

float

14.0.88 Configurando o cliente


Tambm necessrio ter o OpenVPN no cliente. Neste caso iremos usar a mquina
Squeeze para teste da VPN:

Linux Servers Revolutions

Pgina 292

Linux Force

Servidor OpenVPN

root@firewall :~ # aptitude install openvpn

Vamos entrar no diretrio "/etc/openvpn"e copiar a chave do servidor:

root@squeeze :~ # cd / etc / openvpn

root@squeeze :/ etc / openvpn # scp - P50000 \

200.100.50. X :/ etc / openvpn / chave .

Vamos gerar o arquivo de configurao do cliente:

root@squeeze :~ # vim / etc / openvpn / client . conf

dev tun

ifconfig 10.0.0.2

# Endere o do servidor VPN

remote 200.100.50. X

secret / etc / openvpn / chave

port 5000

comp - lzo

verb 4

10

keepalive 10 120

11

persist - key

12

persist - tun

13

float

10.0.0.1

Vamos iniciar a "VPN"no servidor... quanto no cliente.

root@firewall :~ # openvpn -- config / etc / openvpn / server . conf

Fri Aug 19 04:41:47 2011 us =606727 Local Options hash ( VER = V4 ) :


099 d04aa

Fri Aug 19 04:41:47 2011 us =606727 Expected Remote Options hash


( VER = V4 ) : f1025742

Fri Aug 19 04:41:47 2011 us =606728 UDPv4 link local ( bound ) : [ undef ]

Linux Servers Revolutions

Pgina 293

Linux Force

Servidor OpenVPN

Fri Aug 19 04:41:47 2011 us =606728 UDPv4 link remote : [ undef ]

Fri Aug 19 04:42:10 2011 us =340543 Peer Connection Initiated with


[ AF_INET ]192.168. X .10:5000

Fri Aug 19 04:42:10 2011 us =340617 Initialization Sequence Completed

Agora do lado do cliente:

root@squeeze :~ # openvpn -- config / etc / openvpn / client . conf

Fri Aug 19 04:42:12 2011 us =678990 Local Options hash ( VER = V4 ) :


f1025742

Fri Aug 19 04:42:12 2011 us =679035 Expected Remote Options hash


( VER = V4 ) : 099 d04aa

Fri Aug 19 04:42:12 2011 us =679101 UDPv4 link local ( bound ) : [ undef ]

Fri Aug 19 04:42:12 2011 us =679138 UDPv4 link remote :


[ AF_INET ]192.168. X .1:5000

Fri Aug 19 04:42:19 2011 us =833812 Peer Connection Initiated with


[ AF_INET ]192.168. X .1:5000

Fri Aug 19 04:42:19 2011 us =833936 Initialization Sequence Completed

Execute um "ifconfig"para ver se a interface tun0 foi criada:

root@firewall :~ # ifconfig | tail - n9

tun0

Link encap : N o Especificado

Endere o de HW

00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00
3

inet end .: 10.0.0.1

P -a - P :10.0.0.2

Masc :255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST

MTU :1500

M trica :1
5

RX packets :0 errors :0 dropped :0 overruns :0 frame :0

TX packets :0 errors :0 dropped :0 overruns :0 carrier :0

colis es :0 txqueuelen :100

RX bytes :0 (0.0 B )

Linux Servers Revolutions

TX bytes :0 (0.0 B )

Pgina 294

Linux Force

Servidor OpenVPN

14.0.89 Certificados vpn


O OpenVPN oferece vrios mecanismos para adicionar camadas adicionais de segurana, como por exemplo rodar em chroot, uso de conexes TLSs, certificados, uso
de chaves com maiores bits. Todas essas camadas previnem ataques como Man in
the Middle, DoS, Flooding, Port scanning e Buffer overflow.
Vamos deixar o OpenVPN sem privilgios de root . Para isto adicione no final
da configurao do servidor e cliente as opes user e group, assim o
OpenVPN ser executado como usurio nobody e grupo nogroup.

root@firewall :~ #

vim / etc / openvpn / server . conf

...

# Remo o dos privil gios de root na conex o VPN

user nobody

group nogroup

Faa o mesmo para no cliente:

root@squeeze :~ #

vim / etc / openvpn / client . conf

...

# Remo o dos privil gios de root na conex o VPN

user nobody

group nogroup

14.0.90 TLS-Auth HMAC


Voc pode adicionar uma assinatura que ser verificada antes do processamento
de todos os pacotes UPD. Em nossa configurao do servidor vamos habilitar as
seguintes opes:

Linux Servers Revolutions

Pgina 295

Linux Force

Servidor OpenVPN

tls-auth - Habilita o controle de conexes tls;


tls-server - Ajuda a bloquear ataques DoS e flooding na porta do OpenVPN;
ca - Certificado de autoridade (CA) que usa as bibliotecas do OpenSSL;
cert - Certificado do servidor;
key - Chave RSA de 2048 do servidor;
dh - Parmetros Diffie-Hellman utilizado para a troca das chaves criptografadas
durante a execuo;
cipher - Define um tipo de criptografia maior.
Para gerar os certificados e chaves, o OpenVPN traz junto sua instalao uma srie

de scripts chamados easy-rsa. Eles podem ser encontrados em /usr/share/doc/openvpn/examples


rsa/2.0/

root@firewall :~ # ls - lh
/ usr / share / doc / openvpn / examples / easy - rsa /2.0/

Veja que na lista de scripts cada um tem uma funo especfica para criao de
certificados e chaves. Vamos copiar o diretrio com os scripts para nossa instalao
do OpenVPN :

1
2

root@firewall :~ # cp -a / usr / share / doc / openvpn / examples / easy - rsa /2.0


/ etc / openvpn /

Acesse o diretrio com os scripts copiados e crie o subdiretrio onde sero armazenadas as chaves e certificado:

Linux Servers Revolutions

Pgina 296

Linux Force

root@firewall :~ # cd / etc / openvpn /2.0

root@firewall :/ etc / openvpn /2.0 # mkdir keys

Servidor OpenVPN

14.0.91 Gerando certificado CA e chave RSA


Utilizando os scripts vamos gerar os certificados e chaves, que sero utilizados em
nossa configurao do OpenVPN. Instale o pacote openssl, abra o arquivo vars e
deixe-o conforme modelo:

root@firewall :/ etc / openvpn /2.0 # aptitude install openssl

root@firewall :/ etc / openvpn /2.0 # vim vars

export KEY_SIZE =2048

export KEY_COUNTRY = " BR "

export KEY_PROVINCE = " SP "

export KEY_CITY = " SaoPaulo "

export KEY_ORG = " DEXTER "

export KEY_EMAIL = " root@dexter . com . br "

Use a sequncia de comandos abaixo para gerar o certificado de autoridade:

root@firewall :/ etc / openvpn /2.0 # source vars

root@firewall :/ etc / openvpn /2.0 # ./ clean - all

root@firewall :/ etc / openvpn /2.0 # ./ build - ca

...

Country Name (2 letter code ) [ BR ]: BR

State or Province Name ( full name ) [ SP ]: S o Paulo

Locality Name ( eg , city ) [ SaoPaulo ]: SaoPaolo

Organization Name ( eg , company ) [ DEXTER ]: DEXTER

Organizational Unit Name ( eg , section ) []: TI

10

Common Name ( eg , your name or your server s hostname ) [ DEXTER


CA ]: Admin

Linux Servers Revolutions

Pgina 297

Linux Force

11

Name : Tux

12

Email Address [ root@dexter . com . br ]: root@dexter . com . br

Servidor OpenVPN

13
14

root@firewall :/ etc / openvpn /2.0 # ./ build - key - server server

15

...

16

Country Name (2 letter code ) [ BR ]: BR

17

State or Province Name ( full name ) [ SP ]: SP

18

Locality Name ( eg , city ) [ SaoPaulo ]: SaoPaulo

19

Organization Name ( eg , company ) [ DEXTER ]: DEXTER

20

Organizational Unit Name ( eg , section ) []: Admin

21

Common Name ( eg , your name or your server s hostname ) [ server ]:

22

Name []:

23

Email Address [ root@dexter . com . br ]: root@dexter . com . br

24

...

25

Certificate is to be certified until Aug 16 08:41:49 2021 GMT (3650


days )

26

Sign the certificate ? [ y / n ]: y

27
28

1 out of 1 certificate requests certified , commit ? [ y / n ] y

29

Write out database with 1 new entries

30

Data Base Updated

Liste o contedo do subdiretrio keys e verifique o arquivo de certificado do servidor


(server.csr), o arquivo da chave do servidor (server.key) e o certificado auto assinado
(server.crt). Depois d as devidas permisses de acesso:

root@firewall :/ etc / openvpn /2.0 # ls - lh keys / server *

-rw -r --r - - 1 root root 5 ,3 K Ago 19 05:42 keys / server . crt

-rw -r --r - - 1 root root 1 ,1 K Ago 19 05:41 keys / server . csr

-rw ------ - 1 root root 1 ,7 K Ago 19 05:41 keys / server . key

root@firewall :/ etc / openvpn /2.0 # chmod 775 keys / server *

Linux Servers Revolutions

Pgina 298

Linux Force

Servidor OpenVPN

14.0.92 Gerando parmetros Diffie-Hellman


Os parmetros Diffie-Hellman so utilizados para a troca das chaves criptografadas
durante a execuo do OpenVPN. Use o script abaixo para gerar os parmetros:

root@firewall :/ etc / openvpn /2.0 # ./ build - dh

Generating DH parameters , 2048 bit long safe prime , generator 2

This is going to take a long time

Liste o contedo do subdiretrio keys e verifique o arquivo com os parmetros DiffieHellman (dh2048.pem).

root@firewall :/ etc / openvpn /2.0/ keys # ls d *. pem

-rw -r --r - - 1 root root

424 Ago 19 05:48 dh2048 . pem

14.0.93 Configurando o servidor OpenVPN


Com os certificados e chaves gerados, abra o arquivo do servidor e adicione no
final as opes abaixo:

root@firewall :~ # vim / etc / openvpn / server . conf

...

# Configurando o certificado da VPN

tls - server

tls - auth chave 0

ca 2.0/ keys / ca . crt

cert 2.0/ keys / server . crt

key 2.0/ keys / server . key

dh 2.0/ keys / dh2048 . pem

10

cipher DES - EDE3 - CBC

Linux Servers Revolutions

Pgina 299

Linux Force

Servidor OpenVPN

Ainda na mquina servidor crie a chave e o certificado para a mquina cliente, com
o hostname da mquina cliente.

root@firewall :/ etc / openvpn /2.0/ keys # ./ build - key client

...

Country Name (2 letter code ) [ BR ]: BR

State or Province Name ( full name ) [ SP ]: SP

Locality Name ( eg , city ) [ SaoPaulo ]: SaoPaulo

Organization Name ( eg , company ) [ DEXTER ]: DEXTER

Organizational Unit Name ( eg , section ) []: TI

Common Name ( eg , your name or your server s hostname ) [ client ]:

Name []:

10

Email Address [ root@dexter . com . br ]: root@dexter . com . br

11

...

12

Sign the certificate ? [ y / n ]: y

13

1 out of 1 certificate requests certified , commit ? [ y / n ] y

14

Write out database with 1 new entries

15

Data Base Updated

Faa a cpia dos arquivos abaixo via ssh para a mquina cliente.:

1
2

root@firewall :~ # cd / etc / openvpn /2.0/ keys


root@firewall :/ etc / openvpn /2.0/ keys # scp - P50000 client . key
client . crt \

ca . crt root@200 .100.50. X :/ etc / openvpn

Agora na mquina Squeeze , adicione no final do arquivo client.conf:

root@squeeze :~ # vim / etc / openvpn / client . conf

...

# Configurando o certificado da VPN

ns - cert - type server

tls - client

Linux Servers Revolutions

Pgina 300

Linux Force

Servidor OpenVPN

tls - auth chave 1

ca ca . crt

cert client . crt

key client . key

10

cipher DES - EDE3 - CBC

Descrio das novas opes utilizadas:

ns-cert-type -> Indica que certificado foi assinado pelo servidor;

tls-client -> Habilita conexo TLS, ajudando a bloquear ataques DoS e flooding
na porta do OpenVPN.

Execute no servidor:

root@firewall :~ # service openvpn start

Execute no cliente:

root@squeeze :~ # service openvpn start

Checando a conexo no servidor...

root@firewall :~ # ifconfig

tun0

Link encap : N o Especificado

Endere o de HW

00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00
3

inet end .: 10.0.0.1

P -a - P :10.0.0.2

Masc :255.255.255.255

. . . e no cliente:

Linux Servers Revolutions

Pgina 301

Linux Force

Servidor OpenVPN

root@firewall :~ # ifconfig

tun0

Link encap : N o Especificado

Endere o de HW

00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00
3

inet end .: 10.0.0.2

Linux Servers Revolutions

P -a - P :10.0.0.1 Masc :255.255.255.255

Pgina 302

Captulo 15
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.
Sites pesquisados:

Linux Force

Referncias Bibliogrficas

http://www.dicas-l.com.br
http://www.vivaolinux.com.br
http://pt.wikipedia.org/wiki/Sudo
http://wiki.ubuntu-br.org/RootSudo
http://pt.wikipedia.org/wiki/Pluggable_Authentication_Modules
http://ajmoreti.blogspot.com/2011/09/entendendo-e-configurando-o-pam.html
http://gnulinuxbr.com/2010/04/01/pam/
http://www.prefirolinux.com/pam/65-limitando-usuarios-com-o-pam.html
http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-dhcp-configuring-server.html
http://www.isc.org/sw/dhcp/.
http://pt.wikipedia.org/wiki/Network-Attached_Storage
http://computerworld.uol.com.br/tecnologia/2007/10/30/ idgnoticia.2007-10-29.3996045044/
http://pt.wikipedia.org/wiki/Direct_Attached_Storage
http://pt.wikipedia.org/wiki/RAID
http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-raid-approaches.html
http://placa-pai.blogspot.com/2011/02/raid-6.html
wester.com/linuxsamba.php
http://www.gta.ufrj.br/grad/99_1/guilherme/DNS_HTML/historia.htm

Linux Servers Revolutions

Pgina 304

Linux Force

Referncias Bibliogrficas

http://www.cooperati.com.br/wordpress/2011/10/20/dns-domain-name-system/
http://gnulinuxbr.com/2010/05/04/domain-name-system-servidor-dns-no-debian-parte1/
http://gnulinuxbr.com/2010/05/06/domain-name-system-%E2%80%93-servidor-dns-nodebian-%E2%80%93-parte-2/
http://gnulinuxbr.com/2010/05/17/domain-name-system-%E2%80%93-servidor-dns-nodebian-%E2%80%93-parte-3/
http://gnulinuxbr.com/2010/05/20/servidor-apache-no-debian-parte-1/
http://pt.kioskea.net/contents/crypto/ssl.php3
http://en.wikipedia.org/wiki/Secure_Sockets_Layer
http://www.prefirolinux.com/forum/viewtopic.php?f=2&t=12
http://www.vivaolinux.com.br/artigo/OpenLDAP-com-suporte-ao-MySQL

Linux Servers Revolutions

Pgina 305

Das könnte Ihnen auch gefallen