You are on page 1of 177

1

OBSERVATORIO NACIONAL DO RIO DE


JANEIRO

Instalao de servidores Linux


Instalao bsica padro

Rio de Janeiro
Agosto / 2011

OBSERVATORIO NACIONAL DO RIO DE


JANEIRO

Documentao para norma tcnica interna


de instalao de servidores linux com
configurao padro.

Rio de Janeiro
Agosto / 2011

3
RESUMO
Mais que um guia de instalao de uma distribuio, em portugus
Embora as capturas de ecran mostrem que esta instalao foi feita a partir de uma
mquina virtual VMWare, os procedimentos de instalao so vlidos para uma
mquina real ou at mesmo de maquinas virtuais em servidores e outros.
A distribuio para servidor utilizada atualmente foi a Debian 6.0.2 mas podem ser
utilizadas qualquer outras distribuio que atendam a necessidades.
Os requisitos para instalao de um servidor Linux, so bastante simples, de acordo
com as necessidade de servios instalados nos servidores:
* alguma memria Ram;
* um disco;
* um leitor de CD-Rom (para fazer a instalao, depois pode ser descartado);
* uma ligao de rede, com acesso Internet

Palavras-chave: Servidores, Servidores linux, Servidor Basico

1 Antes da Instalao
1.1 Preparar o CD-Rom de instalao
O modo mais fcil de instalar o debian a partir de CD. Descarregar uma
imagem do CD de instalao (arquivo com a extenso .iso) e gravar um CD com
essa imagem, se for utilizar em maquinas virtuais isto no sera necessario.
Nos utilizamos somente o primeiro CD do Debian pois somente ele e
necessario para fazer a instalao basica de um servidor, o restante sera puxado
automaticamente por repositrios pelo programa gerenciador de pacotes.
Nos mirrors da debian, existem vrias imagens de CDs e DVDs de instalao,
desde um "mini" CD de 32M at a um conjunto de DVDs, com praticamente todo o
software que existe nos repositrios da debian.
Como o objectivo instalar um servidor, a melhor opo fazer uma
instalao mnima, e instalar a partir da Internet os pacotes que necessrios.
Descarregar o arquivo ISO de instalao
Pode
descarregar
o
arquivo
ISO
http://cdimage.debian.org/debian-cd/6.0.2/...

directamente

partir

de

Criar um CD-Rom de instalao


Utilizar um software de gravao que permita criar CD-Roms de arranque a partir de
imagens ISO. Notar que arrastar o arquivo ISO para o software de gravao no ,
provavelmente, a melhor opo.

1.2 Configurar o arranque a partir do CD-Rom


Esta opo pode ser configurada no BIOS do PC. Dever ser indicado o CDRom como o dispositivo de arranque prioritrio.
Em alguns sistemas mais recentes, possvel escolher a partir de um menu
qual o dispositivo de arranque.
Esta configurao varia de acordo com o sistema e BIOS instalado.

1.3 Ateno a eventuais perdas de dados


Ateno: durante a instalao do sistema, o disco ser formatado, pelo que
todos os dados sero destrudos. Verificar que o disco no tem dados importantes.
Em caso de dvida, fazer primeiro cpias de segurana do seu contedo.

1.4 root ou utilizador normal?


Regra geral, nunca se deve trabalhar num sistema Linux como root (super-

5
utilizador). Ter sempre em conta que, como root, o utilizador tem todos os poderes,
pelo que um pequeno erro ao digitar um simples comando pode ser catastrfico para
todo o sistema.
No entanto, para configurar um sistema , geralmente necessrio ter
privilgios de super-utilizador (root), uma vez que um utilizador normal no pode,
regra geral, editar arquivos de configurao, parar ou iniciar servios, etc.
A regra a aplicar a do bom senso: sempre que possvel, trabalhar sempre
como utilizador normal; apenas em caso de absoluta necessidade, mudar para root
e apenas durante o tempo estritamente necessrio.
O comando su permite mudar de identidade. Pode ser utilizado para um
utilizador normal se tornar root, caso conhea a respectiva password:
administrador@server:~$ su - root
Password:
server:~#

A partir deste momento e para todos os efeitos, o utilizador root que est
activo.
Para terminar a sesso como root, utilizar o comando exit:
server:~# exit
logout
administrador@server:~$

2 Instalao
2.1 Arranque do CD-Rom
Inserir o CD-Rom de instalao do linux no drive e iniciar ou reiniciar o
sistema. No esquecer de configurar o arranque a partir do CD-Rom. Para isso
verificar as definies da BIOS ou, entrar no menu que permite seleccionar o
dispositivo de arranque.

Para iniciar a instalao seleccione a opo Install e pressione [ENTER].

2.2 Localizao
Aps alguns segundos, dever ser escolhido a lnguagem de instalao, que
ser tambm a lnguagem utilizada pelo sistema. Para efeitos de compatibilidade,
iremos seleccionar English.

Em seguida, dever ser indicada a localizao geogrfica do servidor.


Baseado na lnguagem seleccionada, depois apresentada a lista de pases, nos
quais no consta Portugal, pelo que seleccionamos other:

8
Seleccionada a regio:

E finalmente o pas:

9
Escolher tambm o tipo de teclado utilizado:

2.3 Configurao de rede


A configurado de rede requer, basicamente, a atribuio de um endereo IP e
o nome do sistema.
O endereo IP e demais parmetros de rede podem ser obtidos
automaticamente a partir de um servidor DHCP ou configurados manualmente.
Endereo IP automtico via DHCP
O instalador tenta obter um endereo IP automaticamente, a partir de um
servidor DHCP:

10
Endereo IP manual
Caso o instalador no consiga obter automaticamente um endereo IP, ou
caso o processo seja interrompido, ser necessrio configurar manualmente a rede.

Neste caso, seleccionar a opo Configurar manualmente a rede:

11

Indicar o endereo IP do sistema:

Indicar a mscara de rede ou aceitar a sugerida:

12
Indicar o gateway ou aceitar o sugerido:

Indicar o endereo do servidor DNS ou aceitar o sugerido:

13

2.4 Nome do Sistema


Indicar o nome do sistema:

Indicar o domnio. Deve ser utilizado um domnio inexistente ou um dominio j


pre estabelecido como on.br. No utilizar nomes de domnios que existam na
realidade, tais como google.com ou linux.org, para evitar problemas na resoluo
de nomes.

14

2.5 Escolha do fuso horrio


Para permitir acertar correctamente o relgio do sistema, uma lista de fusos
horrios vlida para o pas escolhido previamente apresentada.

2.6 Particionamento do disco rigido


O particionamento consiste em organizar o disco em vrias reas ou
parties, cada uma com um objectivo ou tipo de arquivos especfico. Neste caso
optamos por dividir o disco em uma unica parties com LVM encrypted para termos
uma partio cryptografada caso algum consiga copiar os discos virtuais do
VMWARE, como iremos instalar em maquina virtual e procuramos escolher
servidores com raid em hardware no nos preucuparemos com gerencia de partio
pois seria muito trabalhoso, pois j temos a soluo melhor em funcionamento.
A opo Particionamento guiado permite criar de um modo fcil e rpido as
parties de acordo com o pretendido:

15
Escolher o disco onde criar as parties. Em Linux, os discos com interface
SCSI ou SATA so nomeados sda, sdb, etc, enquanto que os discos com interface
IDE (ou PATA) so nomeados hda, hdb, etc.

Em resumo, sero criadas 2 parties:

/
(root):
Ond
e sero

16
instalados os arquivos de sistema, nos escolhemos o tipo de partio xfs pois e a
mais recomendada em servidores, apesar de no aceitar redimencionamento em
tempo de execuo;
swap:
Memria virtual;
As parties sero formatadas, pelo que todos os dados existentes sero
eliminados.

A formatao das parties pode demorar algum tempo, dependendo do


tamanho do disco e tipo de hardware.

17

2.7 Instalao do sistema base


O instalador ir proceder em seguida instalao dos pacotes necessrios
para criar um sistema base. Este processo pode demorar algum tempo.
Numa primeira fase so descarregados os pacotes necessrios:

Depois os pacotes base so instalados:

18
E, finalmente, instalado o kernel linux:

2.8 Utilizadores e passwords


O instalador requer a configurao de 2 contas de sistema ou logins. A
primeira, root, uma conta especial, privilegiado e com plenos poderes; a segunda
ser a de um utilizador normal, com poderes limitados por segurana.
Root
Para a conta do super-utilizador (root) apenas pedida a password, uma vez
que essa conta tem que existir. Como este o utilizador com maiores privilgios,
deve ser escolhida uma password difcil de crackear.

19
Confirmar a password da conta root para verificar que no houve erros ao
digitar:

Utilizador normal
Um utilizador normal, sem privilgios especiais, deve tambm ser criado.
Indicar o nome completo desse utilizador:

Indicar o login do utilizador:

20

Escolher uma password:

E confirmar a password:

21

2.9 Configurao do gestor de pacotes apt"


A distribuio debian tem um poderoso sistema de gesto de pacotes de
software, chamado apt", que facilita a atualizao ou instalao de novos pacotes a
partir de vrias fontes, nomeadamente a partir de repositrios existentes na Internet.
Para uma eficiente instalao de pacotes a partir da Internet, deve-se
seleccionar o repositrio geograficamente mais prximo, utilizando um mirror:
Em primeiro lugar, deve-se escolher o pas:
Em

22
seguida, escolher o mirror mais prximo:

Caso se utilize um proxy para acessar Internet, indicar o endereo do proxy:

Finalmente, configurado o apt:

23

2.10 Concurso de popularidade


A comunidade debian mantm um concurso de popularidade interno, como
meio para obter estatsticas dos sistemas instalados. Caso se queira contribuir,
selecionar Yes, no nosso casso melhor e ser escolhido No:

24

2.11 Seleco do software a instalar


O instalador prope a instalao de um sistema standard. Como queremos
personalizar totalmente o nosso sistema, anulamos qualquer seleco existente de
modo a instalar apenas um sistema mnimo.

2.12 Instalao do gestor de arranque grub


O sistema est praticamente instalado, mas para que possa arrancar, deve
ser instalado o gestor de arranque grub no master boot record do disco:

25

2.13 Terminar a instalao


A instalao est terminada. Retire o CD-Rom de instalao do drive e
escolher continuar para terminar a instalao e arrancar com o novo sistema :

2.14 O primeiro arranque do sistema


Se este ecran for mostrado, parabns, a instalao foi bem sucedida!

26

2.15 Primeiro Login


O primeiro login:

27

3 Configurao
O servidor que acabou de ser instalado no ter qualquer funcionalidade
enquanto no for correctamente configurado.
O passo seguinte , portanto, a configurao do servidor.

3.1 Antes de Iniciar


A configurao do servidor consiste, basicamente, na instalao de pacotes
de software e da sua configurao.
Quando um pacote de software instalado, gerada uma configurao, muito
bsica, que oferece apenas uma funcionalidade muito reduzida. Para obter todo o
potencial de um software, necessrio personalizar e afinar a sua configurao.
Mas como um pequeno erro de configurao, pode tornar todo o sistema
intil, devem ser tomar algumas precaues antes alterar qualquer configurao.

3.1.1 Cpias de segurana


Nunca alterar um arquivo de configurao sem antes fazer uma cpia de
segurana. Em caso de problemas, ser possvel repor o arquivo original.
Por exemplo, caso seja necessrio alterar o arquivo de configurao
/etc/network/interfaces, primeiro fazer uma cpia:
server:~# cp /etc/network/interfaces /etc/network/interfaces.ori

Em seguida, editar o arquivo:


server:~# nano -w /etc/network/interfaces

Podem conferir-se as diferenas entre o arquivo original e o alterado com o


comando diff:
server:~# diff /etc/network/interfaces.ori /etc/network/interfaces
9,10c9,20
< allow-hotplug eth0
< iface eth0 inet dhcp
--> #allow-hotplug eth0

28
> #iface eth0 inet dhcp
>
> # Endereco IP fixo
> auto eth0
> iface eth0 inet static
>

address 192.168.119.100

>

netmask 255.255.255.0

>

network 192.168.119.0

>

broadcast 192.168.119.255

>

gateway 192.168.119.1

Caso se pretenda repor o arquivo original, pode-se apagar o arquivo


/etc/network/interfaces alterado, e repor o original:
server:~# rm /etc/network/interfaces
server:~# cp /etc/network/interfaces.ori /etc/network/interfaces

O arquivo /etc/network/interfaces tem agora o contedo original.

3.1.2 Que editor usar


Os arquivos de configurao so, regra geral, arquivos de texto, pelo que
podem ser alterados com um editor de texto.
Os puritanos defendem o vi ou o vim como editor de eleio. Uma alternativa
possvel e, eventualmente mais amigvel, o nano.
Qualquer um destes editores existe na instalao base, pelo que podem ser
usados imediatamente aps a instalao.
Para editar um arquivo com o vi ou o vim basta executar o programa desejado
com o do arquivo como argumento.
Por exemplo, para editar o arquivo /etc/network/interfaces:
* com o vi:
server:~# vi /etc/network/interfaces

* com o vim:
server:~# vim /etc/network/interfaces

29

* Para usar o nano deve-se acrescentar a opo -w para evitar a insero de


quebras de linha, o que poderia causar problemas num arquivo de configurao:
server:~# nano -w /etc/network/interfaces

3.2 Rede local


A rede local um elemento essencial para um servidor. No entanto, a
configurao extremamente simples.

3.2.1 Endereo IP esttico


Objectivo
A instalao por omisso do Debian configura a rede para obter um endereo
dinmico via DHCP. No entanto, para que o sistema seja configurado como um
servidor, deve ter um endereo IP esttico.
O objectivo configurar a interface de rede eth0 com o endereo IP esttico
192.168.1.100. Ao mesmo tempo ser indicado o endereo do dispositivo acesso
Internet, ou "gateway" (192.168.1.254). Numa configurao empresarial, este ser o
endereo esttico do router de uma rede ou de uma vlan.
Configurao
A configurao
/etc/network/interfaces:

das

interfaces

de

rede

# This file describes the network interfaces available on your system


# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# allow-hotplug eth0
# iface eth0 inet dhcp
# Static IP address
auto eth0
iface eth0 inet static
address 192.168.1.100

guardada

no

arquivo

30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

necessrio tambm indicar qual o endereo do servidor DNS. Nesta


configurao, o servidor DNS funciona no router da rede, pelo que o parmetro
nameserver deve ter o valor 192.168.1.x, no arquivo /etc/resolv.conf:
domain localdomain
search localdomain
nameserver 192.168.1.1

Reiniciar os servios de rede:


server:~# /etc/init.d/networking restart
Reconfiguring network interfaces...done.

Verificao
O comando ifconfig fornece informao detalhada sobre a configurao das
interfaces de rede. A configurao da interface eth0 deve exibir agora os parmetros
previamente definidos:
server:~# ifconfig
eth0

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8


inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe3c:96f8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6677 errors:0 dropped:0 overruns:0 frame:0
TX packets:3394 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7775032 (7.4 MiB) TX bytes:247832 (242.0 KiB)
Interrupt:19 Base address:0x2000

lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1

31
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Dever ser tambm possvel contactar servidores Internet:


server:~# ping -c3 www.debian.org
PING www.debian.org (194.109.137.218) 56(84) bytes of data.
64 bytes from klecker.debian.org (194.109.137.218): icmp_seq=1 ttl=128 time=67.7 ms
64 bytes from klecker.debian.org (194.109.137.218): icmp_seq=2 ttl=128 time=107 ms
64 bytes from klecker.debian.org (194.109.137.218): icmp_seq=3 ttl=128 time=93.6 ms
--- www.debian.org ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 67.780/89.547/107.240/16.365 ms

3.2.2 Nome do sistema


Objectivo
Aps a instalao, o nome do sistema pode ser alterado.
Configurao
O nome do sistema, ou hostname, guardado no arquivo /etc/hostname. Este
arquivo deve conter apenas o nome do sistema e no o nome completo do domnio:
server

O novo nome deve ser atribudo ao sistema:


server:~# hostname -F /etc/hostname

Finalmente, o nome do servidor deve ser associado a um nome completo de


domnio e a um endereo IP, no arquivo /etc/hosts:
127.0.0.1

localhost

32
192.168.1.100 server.home.lan server

# The following lines are desirable for IPv6 capable hosts


::1

localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Verificao
server:~# hostname --short
server
server:~# hostname --domain
home.lan
server:~# hostname --fqdn
server.home.lan
server:~# hostname --ip-address
192.168.1.100

3.2.3 Interface de rede virtual


Objectivo
Em certos casos vantajoso atribuir mais do que um endereo a um sistema.
Se o sistema tem vrias interfaces de rede, basta atribuir endereos diferentes a
cada uma. No caso de haver apenas uma ligao de rede, possvel criar interfaces
virtuais. Assim, a partir de uma interface eth0 so criadas uma ou mais interfaces
virtuais, eth0:0, eth0:1, etc.
Configurao
A configurao de uma interface virtual efectuada no arquivo
/etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback

33

# The primary network interface


#allow-hotplug eth0
#iface eth0 inet dhcp
# Static IP address
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# Virtual interface
# Static IP address
auto eth0:0
iface eth0:0 inet static
address 192.168.1.101
netmask 255.255.255.0

Na configurao da interface eth0:0 s so definidos os parmetros address e


netmask, uma vez que os restantes parmetros so iguais aos da interface eth0.
Graas linha auto eth0:0, no arquivo /etc/network/interfaces, a interface
virtual ser automaticamente activada a cada arranque do sistema. Ativando
manualmente as interfaces:
server:~# ifup eth0:0

Associar um nome de sistema ou hostname ao novo endereo, no arquivo


/etc/hosts:
127.0.0.1

localhost

192.168.1.100 server.home.lan server


192.168.1.101 virtual.home.lan virtual

# The following lines are desirable for IPv6 capable hosts

34
::1

ip6-localhost ip6-loopback

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Verificao
O comando ifconfig dever mostrar a interface virtual eth0:0 activada, com o
endereo IP e demais parmetros atribudos:
server:~# ifconfig
eth0

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8


inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe3c:96f8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7793 errors:0 dropped:0 overruns:0 frame:0
TX packets:4236 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7869739 (7.5 MiB) TX bytes:349972 (341.7 KiB)
Interrupt:19 Base address:0x2000

eth0:0

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8

inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0


UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0x2000
lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB)

O comando ping permite verificar se um servidor est acessvel e a responder


a comunicaes em rede:

35

server:~# ping -c3 virtual


PING virtual.home.lan (192.168.1.101) 56(84) bytes of data.
64 bytes from virtual.home.lan (192.168.1.101): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from virtual.home.lan (192.168.1.101): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from virtual.home.lan (192.168.1.101): icmp_seq=3 ttl=64 time=0.047 ms
--- virtual.home.lan ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.031/0.041/0.047/0.009 ms

3.2.4 Agregao de interfaces de rede


Objectivo
A maior parte dos sistemas atuais dispe de 2 ligaes Ethernet. Estas
podem ser utilizadas em separado ou em paralelo, numa tcnica chamada bonding.
Esta tcnica muito interessante, uma vez que possibilita o balanceamento de
dados (os dados so transmitidos pelas 2 interfaces) e tolerncia a falhas (caso uma
ligao falhe, a transmisso assegurada pela outra).
No nosso servidor, iremos agregar as duas interfaces fsicas do sistema eth0
e eth1 para criar uma nova interface de rede bond0 de alta disponibilidade.
Ethernet bonding:
Ethernet bonding, regulado pela norma IEEE 802.3ad com o ttulo link aggregation
um termo da disciplina de redes de computadores que descreve o acoplamento de dois
ou mais canais Ethernet em paralelo para produzir um nico canal de maior velocidade
e/ou aumentar a disponibilidade e redundncia desse canal.

Instalao
server~# aptitude install ifenslave

Configurao
Para criar a interface bond0 dever ser carregado e configurado o mdulo
bonding do kernel, o que feito no arquivo /etc/modprobe.d/aliases.conf:
# [...]
alias bond0 bonding

36
options bonding mode=balance-rr miimon=100 downdelay=200 updelay=200
# [...]

O parmetro mode=balance-rr indica que a interface ir operar em modo


balance-rr, em que os dados sero transmitidos alternadamente pelas diversas
interfaces fsicas.
Em seguida, carregue o mdulo em memria:
server:~# modprobe bonding

E verifique que est realmente carregado:


server:~# lsmod | grep bonding
bonding

69540 0

O passo seguinte a parametrizao da nova interface de rede e remover (ou


comentar) qualquer referncia s interfaces fsicas por ela usadas, o que feito no
arquivo /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# allow-hotplug eth0
# iface eth0 inet dhcp
# Static IP address
# auto eth0
# iface eth0 inet static
#

address 192.168.1.100

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

37
#

gateway 192.168.1.1

# Interface bonding
# Static IP address
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1

Finalmente, reiniciar os servios de rede:


server:~# /etc/init.d/networking restart

Verificao
O comando ifconfig permite verificar o estado das interfaces de rede:
server~# ifconfig
bond0

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8

inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0


inet6 addr: fe80::20c:29ff:fe3c:96f8/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:8713 errors:0 dropped:0 overruns:0 frame:0
TX packets:5014 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7963175 (7.5 MiB) TX bytes:448727 (438.2 KiB)
eth0

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:8711 errors:0 dropped:0 overruns:0 frame:0
TX packets:4978 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000

38
RX bytes:7963037 (7.5 MiB) TX bytes:444479 (434.0 KiB)
Interrupt:19 Base address:0x2000
eth1

Link encap:Ethernet HWaddr 00:0c:29:3c:96:f8


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:138 (138.0 B) TX bytes:4248 (4.1 KiB)
Interrupt:18 Base address:0x2080

lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3864 (3.7 KiB) TX bytes:3864 (3.7 KiB)

A interface bond0 tem atribudo um endereo Internet e as 3 interfaces


(bond0, eth0 e eth1) tm o mesmo endereo fsico ("HWaddr 00:30:1B:B0:C3:4A"),
para que sejam "vistas" pelo resto da rede como sendo apenas uma.

3.3 Software
3.3.1 Gestor de pacotes aptitude
Um dos pontos fortes da distribuio debian o seu gestor de pacotes
aptitude. A gesto das atualizaes e instalaes de software efetuada com a
ajuda deste poderoso e amigvel gestor de pacotes. Graas ao aptitude possvel,
por exemplo, atualizar todo um sistema apenas com um par de comandos, mas em
outras distribuies temos outros gerenciadores de atualizao to bons quanto o
aptitude.
Nota:
As verses mais antigas do debian utilizavam o gestor de pacotes apt. As verses atuais
do debian tendem a utilizar o gestor aptitude que, embora seja um front-end do apt, tem
bastantes vantagens, nomeadamente o facto de manter um registo (log) das aces

39
efectuadas, o que permite remover pacotes de uma forma mais "limpa". Para maior
comodidade, so listados abaixo os comandos aptitude com os equivalentes comandos em
apt. No entanto, neste guia, ser dada preferncias utilizao do aptitude.

Guia rpido do aptitude


Atualizao da lista de pacotes
aptitude update
Atualiza a lista de pacotes existente nos repositrios. Este deve ser o primeiro
comando a executar quando se pretende gerir pacotes (Equivalente a apt-get
update).
Instalao de pacotes
aptitude install <pacote>
Instala um pacote de software e todos os pacotes de que depende. possvel
instalar vrios pacotes de uma s vez, usando a sintaxe: aptitude install pacote1
pacote2 pacote3. (Equivalente a apt-get install <pacote>).
aptitude reinstall <pacote>
Re-instalar um pacote, substituindo os arquivos. Bastante til, quando se quer
repor arquivos que tenham sido alterados entretanto. (Equivalente a apt-get install
--reinstall <pacote>).

Actualizao do sistema
aptitude safe-upgrade
Instala todas as atualizaes disponveis, procedendo instalao de pacotes
para satisfazer todas as dependncias. (Equivalente a apt-get -u upgrade).
aptitude full-upgrade
Instala todas as atualizaes disponveis, procedendo instalao ou remoo de
pacotes para satisfazer todas as dependncias. (Equivalente a apt-get -u distupgrade).
Remoo de pacotes
aptitude remove <pacote>
Remove um pacote. possvel remover vrios pacotes de uma s vez, usando a
sintaxe: apt-get remove pacote1 pacote2 pacote3. (Equivalente a apt-get remove
<pacote>).

40
aptitude purge <pacote>
Remove totalmente um pacote, incluindo os arquivos de configurao.
(Equivalente a apt-get remove purge <pacote>).
Pesquisa de pacotes
aptitude search <critrio>
Procura na lista de pacotes e mostra as ocorrncias de critrio. (Equivalente a
apt-cache search <critrio>)
Informaes sobre pacotes
aptitude show <pacote>
Mostra informaes acerca do pacotes. (Equivalente a apt-cache show <pacote>)
Limpar a cache de pacotes
aptitude clean
Remove todos os arquivos de pacotes existentes em cache. (Equivalente a aptcache clean).
aptitude autoclean
Remove os arquivos de pacotes de verses ultrapassadas existentes em cache,
mas mantm os pacotes de verses atualizados. (Equivalente a apt-cache
autoclean).
Por segurana atualizar com frequncia
Por questes de segurana, imprescindvel que o servidor esteja sempre o
mais atualizado possvel. A comunidade debian est constantemente a atualizar
software para correo e bugs e falhas de segurana. Um sistema no atualizado
um convite a hackers e a crackers. A melhor fonte para procurar software atualizado
a Internet. Devem-se escolher criteriosamente as fontes de software ou
repositrios e proceder a atualizaes frequentes.
tambm importante, seguir de perto todas as informaes referentes a bugs
e falhas de segurana e qual a melhor maneira de os corrigir. A distribuio edita
listas com os anncios de segurana e respectivas correes quer na pgina da
distribuio quer em listas de distribuio.

3.3.2 Atualizaes
A atualizao do software feita em duas partes: a atualizao lista de
software disponvel e a instalao das evolues. Ambas as operaes so feitas
utilizando o comando aptitude, com diferentes opes.

41
Atualizao dos repositrios
A atualizao da lista de software disponvel nos repositrios muito simples:
server:~# aptitude update
Get:1 http://ftp.pt.debian.org lenny Release.gpg [189B]
Get:2 http://security.debian.org lenny/updates Release.gpg [189B]
Ign http://ftp.pt.debian.org lenny/main Translation-en_US
Ign http://security.debian.org lenny/updates/main Translation-en_US
Get:3 http://security.debian.org lenny/updates Release [40.8kB]
Ign http://security.debian.org lenny/updates/main Packages/DiffIndex
Ign http://security.debian.org lenny/updates/main Sources/DiffIndex
Get:4 http://security.debian.org lenny/updates/main Packages [17.4kB]
Get:5 http://security.debian.org lenny/updates/main Sources [4114B]
Hit http://ftp.pt.debian.org lenny Release
Hit http://ftp.pt.debian.org lenny/main Packages/DiffIndex
Hit http://ftp.pt.debian.org lenny/main Sources/DiffIndex
Fetched 62.6kB in 3s (17.5kB/s)
Reading package lists... Done

Instalao das atualizaes


A instalao das atualizaes igualmente simples:
server:~# aptitude full-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information

42
Initializing package states... Done
Reading task descriptions... Done

O sistema est atualizado.


NOTA:
imperativo efetuar atualizaes com bastante frequncia, de modo a garantir que o
sistema tenha sempre as mais recentes correes de bugs e atualizaes de segurana.

3.3.3 Repositrios
Lista de repositrios
Uma lista de repositrios j existe com as informaes fornecidas durante a
instalao. Para facilitar a manuteno, deve-se retirar o CD-Rom e acrescentar
mais alguns repositrios lista existente tais como os repositrios contrib e non-free,
bem como desativar (comentar) as referncias a pacotes de cdigo fonte(deb-src).
A lista de repositrios est em /etc/apt/sources.list:
#
# deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 NETINST Binary-1 20090214-16:03]/
lenny main
#deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 NETINST Binary-1 20090214-16:03]/
lenny main
deb http://ftp.pt.debian.org/debian/ lenny main contrib non-free
# deb-src http://ftp.pt.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib non-free
# deb-src http://security.debian.org/ lenny/updates main

Actualizar a lista local de pacotes com os novos repositrios:


server:~# aptitude update
Get:1 http://security.debian.org lenny/updates Release.gpg [189B]
Ign http://security.debian.org lenny/updates/main Translation-en_US
Ign http://security.debian.org lenny/updates/contrib Translation-en_US
Ign http://security.debian.org lenny/updates/non-free Translation-en_US

43
Hit http://security.debian.org lenny/updates Release
Ign http://security.debian.org lenny/updates/main Packages/DiffIndex
Get:2 http://security.debian.org lenny/updates/contrib Packages [20B]
Get:3 http://security.debian.org lenny/updates/non-free Packages [20B]
Hit http://security.debian.org lenny/updates/main Packages
Get:4 http://ftp.pt.debian.org lenny Release.gpg [189B]
Ign http://ftp.pt.debian.org lenny/main Translation-en_US
Ign http://ftp.pt.debian.org lenny/contrib Translation-en_US
Ign http://ftp.pt.debian.org lenny/non-free Translation-en_US
Hit http://ftp.pt.debian.org lenny Release
Hit http://ftp.pt.debian.org lenny/main Packages/DiffIndex
Get:5 http://ftp.pt.debian.org lenny/contrib Packages [95.0kB]
Get:6 http://ftp.pt.debian.org lenny/non-free Packages [121kB]
Fetched 216kB in 22s (9511B/s)
Reading package lists... Done
Current status: 659 new [+655].

Utilizando um proxy
Em alguns casos poder ser necessrio acessar Internet, atravs de um
proxy. Nesta caso, o aptitude dever ser configurado para usar o proxy. Existem dois
mtodos possveis:
* Definir uma varivel de ambiente http_proxy ou ftp_poxy tendo como valor a
URL do servidor proxy:
server:~# export http_proxy="http://proxy.isp.com:3128/"

O aptitude ter em conta esta varivel quando se ligar Internet.


* Incluir as definies do proxy na configurao do aptitude. Para indicar o proxy a
utilizar dever editar ou criar o arquivo /etc/apt/apt.conf:
Acquire::http::Proxy "http://proxy.isp.com:3128";

O formato da URL de um proxy "http://user:pass@xxx.xxx.xxx.xxx:port",


onde:
user:pass

44
nome do utilizador e password, caso o proxy necessite de autenticao;
xxx.xxx.xxx.xxx
endereo do servidor proxy;
port
porta de ligao ao servio de proxy;

3.3.4 Repositrio "debian-volatile"


Objectivo
A distribuio Debian conhecida por dar prioridade segurana, dando por
isso preferncia a software mais antigo, mas melhor testado. No entanto, a
segurana de alguns pacotes depende da sua atualizao constante. Tal o caso
dos pacotes anti-vrus e anti-spam. Para responder a essa necessidade foi criado
um repositrio de software actualizado chamado "debian-volatile". conveniente
adicionar este repositrio lista dos disponveis.
Configurao
A descrio do repositrio deve ser adicionada lista existente em
/etc/apt/sources.list:
#
# deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 NETINST Binary-1 20090214-16:03]/
lenny main
#deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 NETINST Binary-1 20090214-16:03]/
lenny main
deb http://ftp.pt.debian.org/debian/ lenny main contrib non-free
# deb-src http://ftp.pt.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib non-free
# deb-src http://security.debian.org/ lenny/updates main
# debian-volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Verificao
Ao atualizar a lista de pacotes disponveis devero constatar os novos
repositrios:

45

server:~# aptitude update


Hit http://ftp.pt.debian.org lenny Release.gpg
Get:1 http://security.debian.org lenny/updates Release.gpg [189B]
Hit http://volatile.debian.org lenny/volatile Release.gpg
Ign http://security.debian.org lenny/updates/main Translation-en_US
Ign http://volatile.debian.org lenny/volatile/main Translation-en_US
Ign http://ftp.pt.debian.org lenny/main Translation-en_US
Ign http://volatile.debian.org lenny/volatile/contrib Translation-en_US
Ign http://security.debian.org lenny/updates/contrib Translation-en_US
Ign http://volatile.debian.org lenny/volatile/non-free Translation-en_US
Ign http://security.debian.org lenny/updates/non-free Translation-en_US
Hit http://volatile.debian.org lenny/volatile Release
Get:2 http://security.debian.org lenny/updates Release [40.8kB]
Ign http://volatile.debian.org lenny/volatile/main Packages/DiffIndex
Ign http://volatile.debian.org lenny/volatile/contrib Packages/DiffIndex
Ign http://volatile.debian.org lenny/volatile/non-free Packages/DiffIndex
Hit http://volatile.debian.org lenny/volatile/main Packages
Ign http://security.debian.org lenny/updates/main Packages/DiffIndex
Hit http://volatile.debian.org lenny/volatile/contrib Packages
Ign http://security.debian.org lenny/updates/contrib Packages/DiffIndex
Hit http://volatile.debian.org lenny/volatile/non-free Packages
Ign http://security.debian.org lenny/updates/non-free Packages/DiffIndex
Get:3 http://security.debian.org lenny/updates/main Packages [17.4kB]
Get:4 http://security.debian.org lenny/updates/contrib Packages [20B]
Get:5 http://security.debian.org lenny/updates/non-free Packages [20B]
Ign http://ftp.pt.debian.org lenny/contrib Translation-en_US
Ign http://ftp.pt.debian.org lenny/non-free Translation-en_US
Hit http://ftp.pt.debian.org lenny Release
Hit http://ftp.pt.debian.org lenny/main Packages/DiffIndex
Hit http://ftp.pt.debian.org lenny/contrib Packages/DiffIndex
Hit http://ftp.pt.debian.org lenny/non-free Packages/DiffIndex
Fetched 58.4kB in 7s (7753B/s)
Reading package lists... Done

Utilizao
O repositrio est pronto a ser utilizado, com a sequncia habitual aptitude
update, seguido de aptitude full-upgrade.

46

3.3.5 Repositrio "backports"


Objectivo
Se um dos objetivos do Debian a estabilidade, o seu preo a utilizao de
software bastante testado e, portanto, antigo. No entanto, pode surgir necessidade
de instalar software mais recente o inexistente data de sada do debian. Para isso
existe o repositrio backports, que disponibiliza verses mais recentes ou inexistente
data de lanamento.
Configurao
A localizao do repositrio deve ser adicionada lista existente em
/etc/apt/sources.list:
# [...]
# debian-backports
deb http://www.backports.org/debian lenny-backports main contrib non-free
# [...]

A chave pblica do repositrio backports tambm deve ser adicionada lista de


chaves conhecidas pelo apt:
server:~# aptitude install debian-backports-keyring
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be installed:
debian-backports-keyring
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 3362B of archives. After unpacking 49.2kB will be used.
WARNING: untrusted versions of the following packages will be installed!
Untrusted packages could compromise your system's security.
You should only proceed with the installation if you are certain that
this is what you want to do.

47

debian-backports-keyring
Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Yes
Writing extended state information... Done
Get:1 http://www.backports.org lenny-backports/main debian-backports-keyring 2009.02.20 [3362B]
Fetched 3362B in 0s (11.4kB/s)
Selecting previously deselected package debian-backports-keyring.
(Reading database ... 35721 files and directories currently installed.)
Unpacking debian-backports-keyring (from .../debian-backports-keyring_2009.02.20_all.deb) ...
Setting up debian-backports-keyring (2009.02.20) ...
OK
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

Verificao
possvel listar as chaves utilizadas pelo apt:
server:~# apt-key list
/etc/apt/trusted.gpg
-------------------pub 1024D/6070D3A1 2006-11-20 [expires: 2009-07-01]
uid

Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>

pub 1024D/ADB11277 2006-09-17


uid

Etch Stable Release Key <debian-release@lists.debian.org>

pub 1024D/BBE55AB3 2007-03-31 [expires: 2010-03-30]


uid Debian-Volatile Archive Automatic Signing Key (4.0/etch) sub
[expires: 2010-03-30]

2048g/36CA98F3 2007-03-31

48
pub 1024D/F42584E6 2008-04-06 [expires: 2012-05-15]
uid

Lenny Stable Release Key <debian-release@lists.debian.org>

pub 4096R/55BE302B 2009-01-27 [expires: 2012-12-31]


uid

Debian Archive Automatic Signing Key (5.0/lenny) <ftpmaster@debian.org>

pub 2048R/6D849617 2009-01-24 [expires: 2013-01-23]


uid

Debian-Volatile Archive Automatic Signing Key (5.0/lenny)

pub 1024D/16BA136C 2005-08-21


uid

Backports.org Archive Key <ftp-master@backports.org> sub 2048g/5B82CECE 2005-08-21

Utilizao
O repositrio est pronto a ser utilizado, com a sequncia habitual aptitude
update, seguido de aptitude install <nome_do_pacote>.

3.3.6 Notificao de Atualizaes: Apticron


NOTA:
O pacote apticron depende da instalao de um agente de transporte de e-mail ou MTA
(Mail Transfer Agent). portanto necessria a instalao de um Servidor de Email antes
proceder instalao deste pacote.

Objectivo
Para garantir que o sistema possa ser atualizado, nada melhor que ser
informado das atualizaes disponveis. O apticron um utilitrio que executado
diariamente de uma forma automtica, verifica se tem atualizaes disponveis para
o nosso sistema e informa o administrador por email.
Instalao
server:~# aptitude install apticron

Resultado
Sempre que houver uma atualizao disponvel para o sistema, enviado um
email ao administrador do sistema:

49

From: root@home.lan (root)


To: root@home.lan
Subject: Debian package updates on server.home.lan
Date: Wed, 31 Dec 2008 17:14:09 +0000 (WET)
apticron report [Wed, 31 Dec 2008 17:14:09 +0000]
========================================================================
apticron has detected that some packages need upgrading on:
noisy.acert.lan
[ 10.0.0.100 ]
The following packages are currently pending an upgrade:
ed 0.7-3
========================================================================
Package Details:
Reading changelogs...
--- Changes for ed --ed (0.7-3) unstable; urgency=low
* Apply 08_ubuntu-doc-typo-fix.dpatch to fix spelling/grammar mistake.
Closes: #505729
-- Martin Zobel-Helas <zobel@debian.org> Sat, 15 Nov 2008 23:11:20 +0100
========================================================================
You can perform the upgrade by issuing the command:
aptitude full-upgrade
as root on noisy.acert.lan

50

-apticron

O administrador poder ento proceder atualizao do sistema, com o


comando aptitude full-upgrade.

3.4 Acesso remoto


Regra geral, no se acessa fisicamente um servidor, a no ser por razes
excepcionais (atualizao ou reparao de hardware, por exemplo). A melhor
maneira de gerir um servidor remotamente. No entanto, esse acesso dever ser
feito de uma maneira que garanta que a comunicao no seja interceptada por
terceiros.

3.4.1 Protocolo SSH


A soluo um protocolo de comunicaes que encripte os dados trocados,
tornando virtualmente impossvel a violao da privacidade da comunicao. Esse
protocolo o SSH, abreviatura de Secure SHell.
O protocolo SSH extremamente verstil, existindo atualmente software
cliente que possibilita o acesso linha de comandos, transferncia de arquivos e
criao de tneis seguros como suportes de comunicaes para outros protocolos.
Clientes SSH
Os clientes SSH dividem-se em 2 grandes grupos:
Terminal SSH
Emulador de terminal que permite acessar remotamente linha de comando,
utilizando o protocolo SSH.
Cliente SFTP
Aplicao cliente para transferncia de arquivos que utiliza o Protocolo de
Transferncia Segura de arquivos (Secure File Transfer Protocol (SFTP))
Clientes Linux
openssh-client
Pacote de software que fornece utilitrios para acesso remoto (cliente ssh),
cpia segura de arquivos (scp) e transferncia segura de arquivos (sftp), entre
outros.
FileZilla

51
Cliente SFTP.
Clientes Windows
PuTTY
Terminal SSH.
WinSCP
Cliente SFTP.
FileZilla
Cliente SFTP.

3.4.2 Servidor Ssh


Instalao
server:~# aptitude install openssh-server openssh-client

Configurao
Todas as configuraes
/etc/ssh/sshd_config.

do

servidor

SSH

esto

no

arquivo

Indicar os endereos onde o servio responde. Neste caso sero aceites


ligaes apenas no endereo 192.168.1.100, atravs da porta 22 e utilizando a
verso 2 do protocolo SSH:
#[...]
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
ListenAddress 192.168.1.100
Protocol 2
#[...]

Por segurana, desativar o login como root. Assim, para adquirir privilgios de
root, dever ser efetuado o login como utilizador no privilegiado e, posteriormente,
adquirir privilgios de root. Deste modo a password de root no est sujeita a um
ataque de fora bruta.

52
#[...]
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
#[...]

Verificar tambm que no so permitidos logins com passwords vazias:


#[...]
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
#[...]

Reiniciar o servio:
server:~# /etc/init.d/ssh restart

Verificao
Dever ser possvel estabelecer uma ligao ssh ao endereo 192.168.1.100.
A primeira vez que essa ligao for efetuada, dever ser confirmada a ligao,
uma vez que o servidor no consta na lista dos sistemas conhecidos do cliente.
fribeiro@laptop:~$ ssh 192.168.1.100
The authenticity of host '192.168.1.100 (192.168.119.100)' can't be established.
RSA key fingerprint is 73:af:63:85:5d:62:e4:b1:8c:43:d1:fc:7c:47:c1:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.100' (RSA) to the list of known hosts.
fribeiro@192.168.119.100's password:
Linux server 2.6.26-1-686 #1 SMP Wed Nov 26 19:14:11 UTC 2008 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

53
permitted by applicable law.
fribeiro@server:~$ logout
Connection to 192.168.1.100 closed.

E ligaes com o login root no sero aceitas:


fribeiro@laptop:~$ ssh -l root 192.168.119.100
root@192.168.119.100's password:
Permission denied, please try again.
root@192.168.119.100's password:
Permission denied, please try again.
root@192.168.119.100's password:
Permission denied (publickey,password).

3.5 Relgio do sistema


Em um servidor essencial assegurar que o relgio do sistema funcione corretamente.
Para alm de vrios servios dependerem disso, o relgio pode ser utilizado para acertar
outros sistemas.

3.5.1 Data e hora


Fuso horrio
imperativo configurar corretamente o fuso horrio em que o servidor se encontra. A
informao sobre o fuso horrio encontra-se no arquivo /etc/timezone:
server:~# cat /etc/timezone
Europe/Lisbon

Configurao
Para configurar o fuso horrio, utilizar o comando dpkg-reconfigure tzdata e escolher
a zona correta, no menu interativo:
server:~# dpkg-reconfigure tzdata

Um dilogo permite escolher a regio geogrfica:

54

E em
seguida
o pas:
O

resultado afixado:
Current default timezone: 'Europe/Lisbon'
Local time is now:

Wed Dec 17 16:32:35 WET 2008.

Universal Time is now: Wed Dec 17 16:32:35 UTC 2008.

Acertar data e hora


O comando date mostra a data atual do sistema:
server:~# date
Wed Dec 17 16:36:49 WET 2008

O comando date tambm permite acertar a hora do sistema manualmente, utilizando a


sintaxe reduzida date MMDDhhmm:
server:~# date 12171638
Wed Dec 17 16:38:00 WET 2008

3.5.2 Protocolo NTP


O protocolo NTP (Network Time Protocol) usado para manter certo o relgio do
sistema, sincronizando-o a partir de uma rede de servidores NTP via Internet.
Objetivo

55
Utilizar a rede de servidores NTP para acertar o relgio do sistema.
Instalao
server:~# aptitude install ntpdate ntp-doc

Utilizao
Em primeiro lugar, verificar o fuso horrio do sistema. Ver Fuso horrio
Em seguida acertar o relgio do sistema, utilizando como referncia um dos servidores
NTP:
server:~# ntpdate -u pool.ntp.org
17 Dec 19:25:19 ntpdate[2493]: adjust time server 82.94.235.106 offset -0.040144 sec

3.5.3 Servidor NTP


Objectivo
O protocolo NTP usado para manter certo o relgio do sistema, sincronizando-o a
partir de outros servidores NTP via Internet
Instalao
server:~# aptitude install ntp ntp-doc

Configurao
Verificar a configurao do fuso horrio e da data e hora do sistema.
Verificao
O comando ntpq -p permite verificar quais os servidores NTP a que estamos ligados.
Os *, + e - indicam respectivamente ligaes bem sucedidas, sincronizaes em curso e
servidores pouco fiveis.
Poder demorar alguns minutos at aparecer a lista e at 30 minutos para ocorrer a
primeira correo.
server:~# ntpq -p
remote

refid

st t when poll reach delay offset jitter

==============================================================================
-mail.tyroll.dk 192.38.7.240

2u

- 64

+dnscache-madrid 216.165.129.244 2 u

7 108.190 -7.183 8.268


- 64

+services.bslfd. 145.238.203.10 3 u 61 64

7 68.869 -19.759 8.377


3 46.870 -22.141 7.704

56
*arethusa.tweake 193.190.230.66 2 u 61 64

3 64.258 -24.997 12.523

3.6 Configurao de locales


Este um problema que tem um monte de pessoas que instalam a distribuio Debian
devido a um bug na instalao que faz com que configurao no sej salva. O problema mais
comum que voc no pode escrever a letra , ou usar qualquer sotaque e alguns programas
no carregar em castelhano, mas em Ingls.
Para corrigir isso tudo que voc tem que fazer reconfigure locales.
Reconfigurando locais
# apt-get install locales

Mas, certamente, no necessrio, e pode pular este passo porque seria um pouco
estranho no t-los instalados.
Para repor o resort local ferramenta dpkg que nos permite instalar / remover / configurar
pacotes de software. Ns (como root):
# dpkg-reconfigure locales

E a lista que ir selecionar o seguinte:


es_ES@euro ISO-8859-15
es_ES ISO-8859-1

Alm disso, escolha um padro, por exemplo, pt_BR


Finalmente, rode o seguinte comando (novamente como root):
# dpkg-reconfigure console-data

Com isso temos que definir e nosso local e, em princpio, j deveramos ser capazes de
usar os acentos ea letra n. Os programas devem abrir no idioma selecionado (aqueles
programas que usam a lngua local para decidir).

57
Para saber a qualquer momento o status do usurio local atual pode executar o
comando: locale

58

4 Monitorizao
monitorizar:
1. controlar; supervisionar; 2. acompanhar e avaliar (dados fornecidos por
aparelhagem elctrica);
No basta que o servidor esteja corretamente instalado e configurado.
imperativo que seja convenientemente controlado e acompanhado.
Para esta tarefa necessitaremos que esteja instalado nos servidores o
aplicativo sendmail para envio de e-mail dos respectivos logs para caixa postal.
# aptitude install sendmail

4.1 Arquivos log


Todos os processos a correr no servidor geram um registo de ocorrncias
bastante detalhados. Estes devem ser objecto de uma analise cuidada, para verificar
o correto funcionamento do sistema ou detectar eventuais falhas.

4.1.1 Logwatch
Objectivo
Instalar o pacote Logwatch, para receber diariamente por e-mail, um resumo
dos arquivos log do sistema.
O logwatch executado diariamente, analisa os arquivos log e envia um
resumo por e-mail ao administrador (root) do sistema.
NOTA:
importante que o alias de root esteja correctamente definido para um utilizador
"humano", no arquivo /etc/aliases. Este passo j deve ter sido seguido durante a configurao
do Postfix.

Instalao
server:~# aptitude install logwatch

Verificao
O logwatch enviar os relatrios por e-mail para root; no entanto tambm
pode ser executado mostrando os resultados no terminal:
server:~# logwatch
################### Logwatch 7.3.6+cvs20080702-debian (07/02/08) ####################
Processing Initiated: Thu Jan 1 17:18:04 2009

59
Date Range Processed: yesterday
( 2008-Dec-31 )
Period is day.
Detail Level of Output: 0
Type of Output/Format: stdout / text
Logfiles for Host: server
##################################################################
# [...]
###################### Logwatch End #########################

4.2 Monitorizao do servidor


De vez em quando importante ter um painel de informaes onde,
rapidamente, possamos verificar diversos parmetros do servidor, desde a ocupao
da memria, carga do processador, passando pelo estado de vrios servios,
espao em disco, etc. A aplicao de monitorizao munin ou a ocomon d-nos essa
perspectiva global e imediata no ON est sendo utilizada o OCOMON.

4.2.1 Munin
Objectivo
O pacote munin permite monitorizar diversos parmetros de um ou vrios
sistemas, como por exemplo, estado e carga dos servios, temperaturas, espao em
disco, etc.
O munin funciona segundo uma arquitetura cliente-servidor, em que um
sistema servidor recolhe e organiza dados recebidos de vrios sistemas clientes.
Para monitorizar apenas um servidor, devero ser instalados e configurados os
pacotes cliente e servidor no mesmo sistema.
NOTA:
O pacote munin utiliza uma interface web. necessrio, portanto, instalar um servidor
http. Para mais informaes, consultar: Servidor HTTP

Cliente
Instalao
A instalao consiste apenas em instalar o pacote cliente:

60
server:~# aptitude install munin-node munin-plugins-extra

Configurao
A configurao dos sistema cliente consistem em adicionar o endereo do
servidor lista de endereos que podem estabelecer ligao ao cliente. o endereo
deve ser acrescentado no formato expresso regular. No nosso caso, como o cliente
e o servidor o mesmo, basta adicionar o endereo 127.0.0.1.
Essa configurao efetuada no arquivo /etc/munin/munin-node.conf:
# A list of addresses that are allowed to connect. This must be a
# regular expression, due to brain damage in Net::Server, which
# doesn't understand CIDR-style network notation. You may repeat
# the allow line as many times as you'd like
allow ^127\.0\.0\.1$

O servio cliente dever ento ser reiniciado:


server:~# /etc/init.d/munin-node restart

Servidor
Instalao
Do lado do servidor necessrio a instalao do pacote munin:
server:~# aptitude install munin

Configurao
Devero ser acrescentados configurao os endereos dos clientes a
contatar, o que feito no arquivo /etc/munin/munin.conf:
# [...]
# a simple host tree
[server.home.lan]
address 127.0.0.1
use_node_name yes

61
# [...]

Caso existam mais clientes, basta adicionar os respectivos nomes e


endereos em blocos semelhantes ao listado.
Segurana
Como o munin fornece muita informao acerca das caractersticas do
sistema, o seu acesso deve ser bastante restrito. O servidor httpd apache2 pode
proteger uma diretoria, dando acesso apenas a utilizadores devidamente
autenticados e autorizados. Como se pretende o mximo de segurana, a
autenticao ser feita atravs do mtodo de autenticao "Digest" do apache2, que
transmite os dados de forma segura.
A configurao feita em 2 fases. Em primeiro lugar, ser exigido um
utilizador e palavra-passe vlidos para acessar diretorio /munin, o que feito no
arquivo /etc/apache2/sites-available/munin:
Alias /munin

/var/www/munin

<Location /munin>
Order allow,deny
Allow from all
AuthType Digest
AuthName "munin"
AuthUserFile /etc/apache2/munin.passwd
Require valid-user
</Location>

O mdulo de autenticao auth_digest deve estar ativo:


server:~# a2enmod auth_digest

E o novo site dever ser ativado:


server:~# a2ensite munin
Enabling site munin.
Run '/etc/init.d/apache2 reload' to activate new configuration!

Em segundo lugar, dever ser criado o arquivo de autorizaes para o recurso


munin, com os utilizadores e respectivas senhas:

62

server:~# htdigest -c /etc/apache2/munin.passwd munin fribeiro


Adding password for fribeiro in realm munin.
New password:
Re-type new password:

A opo -c cria o arquivo de novo. Para acrescentar outro utilizador, esta


opo deve ser omitida.
E reiniciar o servidor apache2:
server:~# /etc/init.d/apache2 restart

Verificao
Para verificar o funcionamento do munin, basta abrir um browser e indicar
http://server.home.lan/munin na barra de endereos:

Plug-ins
possvel expandir a funcionalidade do munin, recorrendo aos diversos
plugins
disponveis
no
stio
Internet
do
projeto,
em
http://muninexchange.projects.linpro.no. No entanto, a sua configurao sai fora do
mbito deste guia.

63

5 Segurana
Segurana:
A segurana a condio de estar protegido de perigo ou perda. A segurana tem que
ser comparada e contrastada com outros conceitos relacionados: Segurana, continuidade,
confiabilidade. A diferena chave entre a segurana e a confiabilidade que a segurana
deve fazer exame no cliente das aes dos agentes maliciosos ativos que tentam causar a
destruio.

Se a segurana a condio de estar protegido contra o perigo, ento a


melhor aposta conhecer os riscos e apostar na preveno.

5.1 Preveno de ataques de fora bruta


Um Ataque de Fora Bruta caracteriza-se por uma tentativa continuada de
obter acesso a um servio do sistema (ssh, smtp, http, etc.), tentando diversas
combinaes de nome do utilizador e senha. Para levar a cabo este ataque, o
atacante pode usar um software que gere diversas combinaes de caracteres ou
basear-se numa lista de palavras (dicionrio).
Em ambos os casos, um ataque deste gnero um vido consumidor de
recursos e potencialmente bastante perigoso, especialmente se os utilizadores do
sistema no tiverem um mnimo de cuidado na escolha das suas senhas.
Outro gnero de Ataque de Fora Bruta um Ataque de Negao de Servio
(DoS) ou Ataque Distribudo de Negao de Servio (DDoS), em que o servidor
bombardeado com solicitaes a um determinado servio em to grande nmero
que no as pode gerir, consumindo todos os recursos do sistema, ou tornando-o
instvel.
Felizmente, esses ataques podem ser detectados a tempo, possibilitando uma
ao preventiva, como por exemplo, ignorar ou bloquear o endereo IP de origem do
ataque.

5.1.1 Fail2Ban
Objectivo
O Fail2Ban uma aplicao que analisa continuamente os arquivos log e
bloqueia os endereos Internet de onde originaram vrias tentativas falhadas de
acesso com senha invlida.
O Fail2Ban extremamente eficaz na preveno de ataques de fora bruta e
de negao de servio (DoS).
Instalao

64
server:~# aptitude install fail2ban whois

Configurao
NOTA:
A configurao activada durante a instalao activa o fail2ban para a porta ssh. No
entanto outras portas podem ser monitorizadas e protegidas.

A documentao do Fail2Ban aconselha a que toda a configurao seja feita


em arquivos com a extenso .local. Estes podem ser criados copiando o arquivo de
configurao original, com a extenso .conf:
server:~# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Toda a configurao a partir de agora efetuada apenas no arquivo


/etc/fail2ban/jail.local.
Em uma primeira fase, definimos os endereos que no esto sujeitos a
restries (endereo local e rede local), durante quanto tempo os endereos
atacantes sero banidos (1800 segundos (30 minutos)) e aps quantas tentativas (3
tentativas permitidas). Essa configurao deve ser efetuada no arquivo
/etc/fail2ban/jail.local:
# [...]
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.0/24
bantime = 1800
maxretry = 3
# [...]

Tambm definido o endereo email para o qual sero enviados os alertas:


# [...]
#
# Destination email address used solely for the interpolations in

65
# jail.{conf,local} configuration files.
destemail = root@localhost
# [...]

Em seguida, configurada a ao a realizar quando detectado um possvel


ataque. Neste caso, o endereo IP do atacante banido e um email enviado ao
administrador do sistema.
# [...]
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
# [...]

Por ltimo, so definidos os parmetros do servio que se pretende proteger,


mais uma vez editando o arquivo /etc/fail2ban/jail.local:
# [...]
[ssh]
enabled = true
port

= ssh

filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# [...]

Finalmente, reiniciar o servio fail2ban:


server:~# /etc/init.d/fail2ban restart

66
Verificao
A cada (re)incio do servio fail2ban um email de notificao ser enviado ao
administrador do sistema:
Subject: [Fail2Ban] ssh: started
From: Fail2Ban <fail2ban@home.lan>
To: root@localhost
Date: Tue, 13 Jan 2009 22:14:28 +0000 (WET)
Hi,
The jail ssh has been started successfully.
Regards,
Fail2Ban

E a cada ataque que dispare uma ao defensiva, o administrador ser


tambm notificado:
Subject: [Fail2Ban] ssh: banned 219.143.232.144
From: Fail2Ban <fail2ban@home.lan>
To: root@localhost
Date: Tue, 13 Jan 2009 22:25:06 +0000 (WET)
Hi,
The IP 219.143.232.144 has just been banned by Fail2Ban after
3 attempts against ssh.
Here are more information about 219.143.232.144:
% [whois.apnic.net node-1]
% Whois data copyright terms
inetnum:
netname:
country:

http://www.apnic.net/db/dbcopyright.html

219.143.232.0 - 219.143.233.127
Sinotrans-Air-Transport-Development-Co-Ltd
CN

67
descr:
16F Building A Jinyun Plaza,NO.43 Xizhimen South Street,Xicheng District,
Beijing,P.R.China
admin-c:

HC55-AP

tech-c:

HC55-AP

status:

ASSIGNED NON-PORTABLE

changed:

bjnic@bjtelecom.net 20071010

mnt-by:

MAINT-CHINANET-BJ

source:

APNIC

person:

Hostmaster of Beijing Telecom corporation CHINA TELECOM

nic-hdl:

HC55-AP

e-mail:

bjnic@bjtelecom.net

address:

Beijing Telecom

address:

No. 107 XiDan Beidajie, Xicheng District Beijing

phone:

+86-010-58503461

fax-no:

+86-010-58503054

country:

cn

changed:

bjnic@bjtelecom.net 20040115

mnt-by:

MAINT-CHINATELECOM-BJ

source:

APNIC

Lines containing IP:219.143.232.144 in /var/log/auth.log


Dec 21 23:40:54 server sshd[4311]: Did not receive identification string from 219.143.232.144
Dec 21 23:44:19 server sshd[4318]: Invalid user globus from 219.143.232.144
Dec 21 23:44:19 server sshd[4318]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh
ruser= rhost=219.143.232.144
Dec 21 23:44:21 server sshd[4318]: Failed password for invalid user globus from 219.143.232.144
port 43536 ssh2
Dec 21 23:44:22 server sshd[4320]: Invalid user marine from 219.143.232.144
Dec 21 23:44:22 server sshd[4320]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh
ruser= rhost=219.143.232.144
Regards,
Fail2Ban

NOTA:
O pacote Fail2Ban pode ser utilizado para proteger servidores de e-mail, ftp, web,
etc, bastando para tal editar o arquivo /etc/fail2ban/jail.local para configurar os vrios

68
servios que se pretendem proteger.

5.1.2 Bloqueio de repetidas tentativas via kernel


Mostrarei como implementar um sistema de segurana para bloqueio de
ataques brute-force em seu servidor SSH. Ao mesmo tempo tambm mostra como
criar um esquema para permitir acesso remoto (para manuteno) a partir de
qualquer IP da internet.
No fcil acordar logo cedo e ao chegar ao trabalho ver que enquanto o
servidor que voc e responsvel estava ligado, algum sem ter muita coisa o que
fazer entupia os seus logs com linhas como essa:
Oct 7 13:31:36 titan sshd[2222]: Illegal user frank from ::ffff:212.50.31.6
Oct 7 13:31:39 titan sshd[2224]: Illegal user dan from ::ffff:212.50.31.6
Oct 7 13:31:41 titan sshd[2226]: Illegal user james from ::ffff:212.50.31.6
Oct 7 13:31:46 titan sshd[2230]: Illegal user radiomail
from ::ffff:212.50.31.6
Oct 7 13:31:49 titan sshd[2232]: Illegal user harrypotter
from ::ffff:212.50.31.6
Oct 7 13:31:51 titan sshd[2234]: Illegal user divine from ::ffff:212.50.31.6
Oct 7 13:31:54 titan sshd[2236]: Illegal user popa3d from ::ffff:212.50.31.6
Oct 7 13:31:57 titan sshd[2238]: Illegal user aptproxy
from ::ffff:212.50.31.6
Oct 7 13:31:59 titan sshd[2240]: Illegal user desktop from ::ffff:212.50.31.6
Oct 7 13:32:02 titan sshd[2242]: Illegal user workshop
from ::ffff:212.50.31.6
Oct 7 13:32:04 titan sshd[2244]: Illegal user mailnull from ::ffff:212.50.31.6
Oct 7 13:32:08 titan sshd[2246]: Illegal user nfsnobody
from ::ffff:212.50.31.6
Oct 7 13:32:11 titan sshd[2248]: Illegal user rpcuser from ::ffff:212.50.31.6
Oct 7 13:32:13 titan sshd[2250]: Illegal user rpc from ::ffff:212.50.31.6
Oct 7 13:32:16 titan sshd[2252]: Illegal user gopher from ::ffff:212.50.31.6

Caso percebam, existe uma coisa interessante nessas linhas de log. Foram
15 tentativas de acesso ao daemon sshd em cerca de aproximadamente 30
segundos. Ou seja, quase 1 a cada 2 segundos.
Uma soluo muito discutida em fruns nos EUA foi a seguinte:
# Create a reject-and-log-SSH-Bruteforce chain to forward things to.
iptables -N REJECT-SSH
iptables -A REJECT-SSH -j DROP

69
-m recent --rcheck --name SSH --seconds 60 --hitcount 10
iptables -A REJECT-SSH -j LOG --log-prefix SSH-Bruteforce:
iptables -A REJECT-SSH -j REJECT -p tcp --reject-with tcp-reset
iptables -A REJECT-SSH -j REJECT
# Kill SSH brute-force attacks. Allow only three connections per minute
# from any source.
iptables -A INPUT -p tcp --dport 22 -m state --state NEW
-m recent --update --name SSH --seconds 60 --hitcount 4
-j REJECT-SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW
-m recent --set --name SSH

Esta uma soluo parcial para ataques remotos de dicionrio usando


iptables no Linux. Ela funciona baseada no fato de ataques de dicionrio criarem
conexes repetidamente em um pequeno espao de tempo, enquanto usurios
tpicos e legtimos somente se conectam poucas vezes no mesmo espao de tempo.
Esta regra assume que
CONFIG_IP_NF_MATCH_RECENT.

seu

kernel

seja

compilado

com

Voc pode ajustar este script de acordo com suas necessidades. Como
escrito acima, as trs primeiras conexes em um perodo de 60 segundos sero
bem sucedidas e a quarta ir falhar com mensagem de "Connection reset by peer."
Se o atacante persistir, os seus pacotes sero ignorados sem nenhuma mensagem,
a partir da dcima tentativa.
Se acontecer de um usurio vlido tentar se conectar vrias vezes e comear
a receber "drops", tudo o que ele tem que fazer esperar um minuto ou dois e ele
estar apto a tentar se conectar novamente. Os usurios que tentarem se conectar
repetidamente continuaro sendo "dropados' indeterminadamente".

5.1.3 Bloqueio de inundao de servidores


Resumo
Nesse capitulo entenderemos uma das grandes dificuldades dos
administradores de rede de computadores, que so as tentativas de acessos
indevidos ou ataques investidos na rede. O interesse aqui mostrar que a melhor
defesa se faz quando se conhece a natureza do ataque.
Foi utilizada a distribuio Linux Debian 4 com o kernel verso 2.6.2x para

70
testes e exemplos usados para o desenvolvimento desse artigo.
Introduo
O HPING um software poderoso quando se fala de ataque de negao de
servio e para tanto preciso conhecer a relao cliente/servidor, ou seja, three-way
handshake. As mensagens servidor/cliente so trocadas em 3 vias.
O cliente envia uma requisio de conexo: pacote com flag syn com um
determinado nmero de sequncia x. O servidor recebe o pacote e responde com
uma mensagem de reconhecimento: flag syn-ack com um nmero de sequncia x+1
e y. O cliente reconhece o pacote syn-ack com y+1 e a conexo est estabelecida.
Para complementar, a conexo fechada quando o cliente ou servidor envia
um pacote com flag fin ou de forma abrupta com uma flag rst. Com base nestes
conhecimentos, um ataque do tipo Syn-flood ou enxurrada de pacotes utilizado
para desestabilizar ou derrubar recursos computacionais e podem acontecer em
vrios nveis do protocolo TCP.
O ataque consiste no envio de uma grande quantidade de pacotes com flags
setadas SYN para a vtima, de tal maneira que a mesma no consiga responder a
todos as requisies. Com um grande nmero de pacotes SYN apilha de memria
sofre um estouro e todas as requisies so desprezadas.
Exemplos de ataque
Exemplo 1:
A sintaxe do comando a seguinte:
$ hping2 <host da vtima> <parmetros>

# hping2 23.23.23.2 -p 80 -S -c 3
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=32792 rtt=0.1 ms
len=44 ip=23.23.23.2 ttl=64 DF id=0 sport=80 flags=SA seq=2 win=32792 rtt=0.1 ms

Nesta linha disparamos: -p 80 -c 3 (-p aponta a porta de envio dos pacotes e


-c --count count seta a quantidade de pacotes). Desta maneira podemos avaliar as
respostas do alvo.

71
Exemplo 2:
# hping2 23.23.23.2 -p 80 -S --faster --rand-source
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes

Nesta linha disparamos: -p 80 -S --fast --rand-source (-S setamos a flag como


syn, --fast Alias for -i u10000. O Hping ir enviar 10 pacotes por segundos; --randsource habilita o modo radom e troca o ip de origem dinamicamente). Desta forma
enviaremos a cada segundo 10 tentativas de conexo sem esperar a resposta do
host-alvo com ips diferentes a cada pacote enviado. At o momento em que este
alvo no poder responder todas as requisies e o kernel negar o servio.
Obs.: CUIDADO com o teste utilizando esta linha, pois o host de destino no
ir responder caso a segurana necessria no esteja implementada.
Etherape no momento da simulao do Ataque
Exemplo 3:
# hping2 23.23.23.2 -p 80 -S --faster --rand-dest
HPING 23.23.23.2 (eth0 23.23.23.2): S set, 40 headers + 0 data bytes

Nesta linha disparamos: -p 80 -S --fast --rand-dest (-S setamos a flag como


syn, --fast Alias for -i u10000. O Hping ir enviar 10 pacotes por segundos; --randdest habilita o modo radom e troca o ip de destino dinamicamente). Desta forma
enviaremos a cada segundo 10 tentativas de conexo sem esperar a resposta do
host-alvo com ips alvos diferentes a cada pacote enviado.
As flags podem ser setadas das seguintes formas:
-F --fin - Seta FIN tcp flag.
-S --syn -Seta SYN tcp flag.
-R --rst - Seta RST tcp flag.
-P --push - Seta PUSH tcp flag.
-A --ack - Seta ACK tcp flag.
-U --urg - Set URG tcp flag.
-X --xmas - Set Xmas tcp flag.

72
Modo de escuta:
-9 --listen signature
HPING2 em modo de escuta. Utilizando esta opo o hping aguarda pelo
pacote que contm esta assinatura e finaliza o pacote que contm a assinatura.
Exemplo.:
# hping2 -9 --listen 234-09sdflkjs45 -TESThello_word

Defesa baseada no conhecimento


Bem, conforme havamos combinado, agora temos que achar uma maneira
de resolver este problema em nossos servidores. H uma soluo que bastante
utilizada, mas ela no to eficaz. escrever em seu script firewall a seguinte regra
contra ataques Dos:
# iptables -A FORWARD -p tcp -syn -m limit -limit 1/s -j accept

Porm existe uma outra maneira de fazer com que seu Kernel seja mais
seguro. o chamado tyne de Kernel apesar de ser pouco falado muito eficaz e
consiste em setar os arquivos do /proc utilizando o sysctl.
Os arquivos que modificaremos as variveis se encontram dentro do
diretrio /proc/sys/net/ipv4/, onde os mesmos so responsveis pelas filtragens de
informaes de entrada e as que passam pelo host.
O interessante que os efeitos das configuraes das variveis dos arquivos
dentro do diretrio /proc so instantneas, a partir do momento que o arquivo
salvo, ou seja, em real time, j que o /proc um diretrio virtual. Essa uma das
grandes vantagens de configurar o kernel atravs dos parmetros do diretrio /proc.
Coloque as seguintes linhas dentro do arquivo voc pode estar abilitando outras
opes se assim desejar sysctl.conf:
net.ipv4.ip_forward= 1
net.ipv4.ip_default_ttl=255
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ratelimit=150
net.ipv4.icmp_ratemask=6457
kernel.printk=0

73
net.ipv4.tcp_syncookies=1

Cabe aqui neste momento pesquisa para fortalecer o conhecimento de


manipulao do Kernel a partir do /proc.

5.2 Deteco de rootkits


Um rootkit um pedao de cdigo malicioso que tenta alterar componentes
do sistema de modo a camuflar a sua existncia ou a existncia de arquivos
associados.
Por exemplo, um rootkit que altere os comandos ls ou ps, de modo a que o ou
os seus arquivos e processos em execuo no sejam listados, ser de muito difcil
deteco e poder assim abrir uma porta de entrada para o sistema,
comprometendo seriamente a sua segurana.
portanto imperativo que seja verificado periodicamente a possvel existncia
de rootkits no sistema, de modo a tomar medidas para os eliminar o mais
rapidamente possvel.

5.2.1 Rootkit Hunter


Objectivo
Instalar o pacote rkhunter, um sistema de deteco de rootkits que avisa por
email o administrador do sistema se detectar alteraes no sistema que indiciem a
presena de um rootkit.
Instalao
server:~# aptitude install rkhunter

Configurao
A configurao por omisso do pacote rkhunter normalmente suficiente: o
arquivo /etc/default/rkhunter define que a actualizao da base de dados feita
semanalmente, a verificao da existncia de rootkits feita diariamente, e os
resultados so enviados por email para o administrador de sistema (root).
Dever, no entanto ser feita a atualizao da base de dados de propriedades
de arquivos do rkhunter:
server:~# rkhunter --propupd
[ Rootkit Hunter version 1.3.2 ]
File updated: searched for 154 files, found 123

74

Utilizao
O rkhunter pode ser executado na linha de comandos:
server:~# rkhunter --check
[ Rootkit Hunter version 1.3.2 ]
Checking system commands...
Performing 'strings' command checks
Checking 'strings' command

[ OK ]

Performing 'shared libraries' checks


Checking for preloading variables

[ None found ]

Checking for preload file

[ Not found ]

Checking LD_LIBRARY_PATH variable

[ Not found ]

Performing file properties checks


Checking for prerequisites
/bin/bash
/bin/cat

[ OK ]
[ OK ]
[ OK ]

/bin/chmod

[ OK ]

/bin/chown

[ OK ]

/bin/cp
/bin/date
/bin/df
/bin/dmesg
/bin/echo

[ OK ]
[ OK ]
[ OK ]
[ OK ]
[ OK ]

# [...]
Checking application versions...
Checking version of GnuPG

[ OK ]

Checking version of Bind DNS

[ OK ]

Checking version of OpenSSL

[ OK ]

Checking version of PHP


Checking version of Procmail MTA

[ OK ]
[ OK ]

75
Checking version of ProFTPd

[ OK ]

Checking version of OpenSSH

[ OK ]

System checks summary


=====================
File properties checks...
Files checked: 123
Suspect files: 0
Rootkit checks...
Rootkits checked : 108
Possible rootkits: 0
Applications checks...
Applications checked: 7
Suspect applications: 0
The system checks took: 2 minutes and 4 seconds
All results have been written to the logfile (/var/log/rkhunter.log)
One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)
Actualizao da base de dados

A base de dados do rkhunter atualizada semanal e automaticamente. No


entanto, possvel proceder sua atualizao sempre que se quiser:
server:~# rkhunter --update
[ Rootkit Hunter version 1.3.2 ]
Checking rkhunter data files...
Checking file mirrors.dat
Checking file programs_bad.dat
Checking file backdoorports.dat
Checking file suspscan.dat

[ No update ]
[ No update ]
[ No update ]
[ No update ]

76
Checking file i18n/cn

[ No update ]

Checking file i18n/en

[ No update ]

Checking file i18n/zh

[ No update ]

Checking file i18n/zh.utf8

[ No update ]

77

6 Servidor Intranet
Uma vez terminada a configurao de base de um sistema servidor, altura
de expandir a sua funcionalidade de modo a fornecer um conjunto de servios para
a rede interna.

6.1 DNS
O DNS (Domain Name System - Sistema de Nomes de Domnios) um
sistema de de resoluo de nome e endereos IP. o DNS que informa que
"www.debian.org" tem o endereo IP "194.109.137.218" e vice-versa.

6.1.1 O Protocolo DNS


Sistema de Nomes de Domnios
Sempre que utilizado um nome para designar um servidor, tal como
www.debian.org, este deve ser traduzido para o endereo IP nico desse servidor. A
este processo chama-se resoluo e efetuado graas ao Sistema de Nomes de
Domnios ou DNS (Domain Name System).
Este sistema constitudo por uma rede global de servidores, organizados em
rvore, cada um contendo uma tabela de associaes de nomes de servidores e
respectivos endereos IP.
Como funciona o DNS
Supondo que se pretende contactar o servidor www.google.com. O sistema
ir iniciar uma srie de contatos a diversos outros sistemas para encontrar qual o
endereo associado ao endereo pretendido.
Uma verso muito simplificada seria a seguinte: Possivelmente, o sistema
ter que contactar o seu servidor de dns, que contactar os servidores dns de topo
para indagar acerca do domnio "google.com", e em seguida contactar o servidor dns
do google para saber o endereo IP de "www.google.com".
Embora cada pesquisa ou resoluo demore apenas alguns milissegundos, a
visualizao de uma pgina web num browser pode ser bastante penalizada por
este processo, principalmente, sabendo que os vrios elementos da pgina podem
estar hospedados em diversos servidores, cujos endereos devem resolvidos
individualmente.

78

6.1.2 Chace DNS


Objectivo
Embora os endereos Internet tenham nomes legveis (www.google.com),
estes devem ser traduzidos para o endereo IP (216.239.59.147) do respectivo
servidor. Essa converso efetuada realizando uma pesquisa no Sistema de Nomes
de Domnios ou DNS (Domain Name System). Uma cache DNS guarda localmente
os resultados dessa pesquisa para utilizao futura, evitando a repetio de
pesquisas e aumentando drasticamente a velocidade de resposta.
Instalao
server:~# aptitude install bind9 bind9-doc dnsutils

Configurao
A configurao gerada durante a instalao perfeitamente funcional sem
qualquer alterao. No entanto, vamos personalizar a instalao em 2 aspectos
principais: a que servidores que o nosso vai pedir ajuda na resoluo de nomes,
caso no o consiga fazer localmente (forwarders) e alguns aspectos de segurana.
Como forwarders utilizamos os servidores DNS do fornecedor de acesso
Internet
(Neste
caso,
sero
utilizados
os
servidores
OpenDNS
(http://www.opendns.com/). Por redundncia, acrescentar tambm o do router
padro da rede.
Por segurana s sero aceites ligaes recebidas pela interface local ou pela
destinada rede interna (listen-on { 127.0.0.1; 192.168.1.100; };). Tambm s sero
respondidos os pedidos de resoluo que partirem do prprio posto ou da rede
interna (allow-query { 127.0.0.1; 192.168.1.0/24; };). Todos os outros sero
ignorados, de modo a evitar eventuais utilizaes abusivas do nosso servidor DNS
por parte de terceiros.
A configurao guardada no arquivo /etc/bind/named.conf.options:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.

79
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
// OpenDNS servers
208.67.222.222;
208.67.220.220;
// ADSL router
192.168.1.1;
};
// Security options
listen-on port 53 { 127.0.0.1; 192.168.1.100; };
allow-query { 127.0.0.1; 192.168.1.0/24; };
allow-recursion { 127.0.0.1; 192.168.1.0/24; };
allow-transfer { none; };
check-names master ignore;
auth-nxdomain no;

# conform to RFC1035

// listen-on-v6 { any; };
};

Verificar se o arquivo de configurao foi corretamente editado:


server:~# named-checkconf

Actualizar o arquivo /etc/resolv.conf para que a resoluo de nomes passe a


ser feita localmente:
nameserver 127.0.0.1

Verificar tambm no arquivo /etc/nsswitch.conf que a resoluo de nomes


passa tambm pelo servio DNS:
# [...]
hosts:
# [...]

files dns

80

Reiniciar o servio DNS:


server:~# /etc/init.d/bind9 restart

Verificao
Como verificao, basta procurar o endereo IP de qualquer stio Internet. O
servidor DNS dever ser o nosso e o endereo IP do stio dever ser corretamente
mostrado:
server:~# nslookup www.fccn.pt
Server:
Address:

127.0.0.1
127.0.0.1#53

Non-authoritative answer:
www.fccn.pt

canonical name = m01.bc01.mm.fccn.pt.

Name: m01.bc01.mm.fccn.pt
Address: 193.137.196.101

O processo inverso, ou seja, procurar o nome a partir do endereo IP tambm


dever funcionar:
server:~# nslookup 193.137.196.101
Server:
Address:

127.0.0.1
127.0.0.1#53

Non-authoritative answer:
101.196.137.193.in-addr.arpa

name = m01.bc01.mm.fccn.pt.

Authoritative answers can be found from:


.

nameserver = f.root-servers.net.

nameserver = h.root-servers.net.

nameserver = g.root-servers.net.

nameserver = b.root-servers.net.

nameserver = i.root-servers.net.

nameserver = a.root-servers.net.

nameserver = j.root-servers.net.

nameserver = e.root-servers.net.

81
.

nameserver = l.root-servers.net.

nameserver = k.root-servers.net.

nameserver = c.root-servers.net.

nameserver = d.root-servers.net.

nameserver = m.root-servers.net.

Configurao dos clientes


Windows
Para sistemas Windows indicar, nas propriedades do protocolo Internet
(TCP(IP) da ligao de rede, o endereo do nosso servidor DNS (192.168.1.100)
como sendo o servidor DNS preferido.

Linux
No caso de sistemas Linux, editar o arquivo /etc/resolv.conf e acrescentar ou
substituir o nameserver:
# [...]
nameserver 192.168.1.100

82
# [...]

Para sistemas Windows indicar, nas propriedades do protocolo Internet


(TCP(IP) da ligao de rede, o endereo do nosso servidor DNS (192.168.1.100)
como sendo o servidor DNS preferido.
Configurao automtica de clientes
O servidor DNS tambm pode ser atribudo automaticamente aos clientes
atravs do protocolo DHCP. Para tal, basta acrescentar a opo domain-nameservers com o ou os endereos dos servidores DNS ao arquivo
/etc/dhcp3/dhcpd.conf do servidor DHCP:
# [...]
option domain-name-servers 192.168.1.100;
# []

6.1.3 Servidor DNS


Objectivo
Embora se possa atribuir nomes aos diversos sistemas de uma rede, estes
no se conseguem reconhecer entre eles sem um sistema de resoluo de nomes.
Para que um sistema consiga localizar o endereo IP associado ao nome de outro
sistema, necessrio que este esteja registado num servidor DNS, de modo a
permitir a resoluo de nomes.
NOTA:
Antes de instalar o servidor DNS, a Cache DNS dever estar previamente configurada e testada.

Instalao
server:~# aptitude install bind9 bind9-doc dnsutils

Configurao
A resoluo de nomes converte nomes de sistemas no seu endereo IP e
vice-versa. Assim, a configurao consiste, basicamente na criao de 2 zonas, uma
(zone "home.lan") que converte nomes em endereos IP e outra (zone "1.168.192.inaddr.arpa") que converte endereos IP no respectivo nome de sistema.

83

Zonas
As zonas so declaradas no arquivo /etc/bind/named.conf.local:
//
// Do any local configuration here
//
zone "home.lan" {
type master;
file "/etc/bind/db.home.lan";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.1.168.192";
};
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

Resoluo de nomes
A resoluo de nomes transforma os nomes dos sistemas nos endereos IP
correspondentes.
Para a zona "home.lan", os nomes "server", "virtual", "ns" e "router" so
associados aos respectivos endereos. A base de dados para a resoluo de nomes
na zona home.lan guardada no arquivo /etc/bind/db.home.lan:
;
; BIND zone file for home.lan
;
$TTL
@

3D
IN

SOA

ns.home.lan.

2008121701
8H

root.home.lan. (

; serial

; refresh

84
2H

; retry

4W

; expire

1D )

; minimum

;
NS

ns

MX

10 mail

; Inet address of name server


; Primary mail exchanger

ns

192.168.1.100

mail

192.168.1.100

server

192.168.1.100

virtual

192.168.1.101

router

192.168.1.1

gateway
gw

; router ADSL

CNAME router
CNAME router

O protocolo DNS permite tambm a criao de aliases, ou canonical names,


identificados pelo tipo de registo CNAME. Um alias um nome alternativo de um
sistema.
No final do arquivo podero ser declarados alguns aliases: o sistema "server"
passar tambm a ser conhecido (CNAME ou canonical name) como "proxy" e o
servidor "virtual" responder tambm pelos nomes "www" e "ftp":
// [...]
proxy

CNAME server

www

CNAME virtual

ftp

CNAME virtual

// [...]

Resoluo Inversa
A resoluo de inversa transforma endereos IP nos correspondentes nomes
dos sistemas.
A resoluo inversa implementada no arquivo /etc/bind/db.1.168.192:
;
; BIND zone file for 192.168.1.xxx

85
;
$TTL
@

3D
IN

SOA

ns.home.lan.

2008121701

root.home.lan. (

; serial

8H

; refresh

2H

; retry

4W

; expire

1D )

; minimum

;
NS

ns.home.lan.

; Nameserver address

100

PTR

server.home.lan.

100

PTR

ns.home.lan.

100

PTR

mail.home.lan.

101

PTR

virtual.home.lan.

PTR

router.home.lan.

Reiniciar o servio:
server:~# /etc/init.d/bind9 restart

Acrescentar o domnio home.lan no arquivo /etc/resolv.conf:


# [...]
domain home.lan
search home.lan
nameserver 127.0.0.1
# [...]

Modifique o arquivo /etc/default/bind9 p ara no ser apresentado mensagem de no


localizao por atraso.
#OPTIONS="-u bind"
OPTIONS=-u bind -4

Assim, quando nos referirmos ao sistema "server", este ser procurado no

86
domnio "home.lan", resultando no nome "server.home.lan".

Verificao
Verificar a resoluo de nomes:
server:~# nslookup server
Server:
Address:

127.0.0.1
127.0.0.1#53

Name: server.home.lan
Address: 192.168.1.100

Verificar que os aliases tambm so resolvidos:


server:~# nslookup gateway
Server:
Address:

127.0.0.1
127.0.0.1#53

gateway.home.lan

canonical name = router.home.lan.

Name: router.home.lan
Address: 192.168.1.1

Finalmente, verificar que a resoluo inversa:


server:~# nslookup 192.168.1.101
Server:
Address:

127.0.0.1
127.0.0.1#53

101.1.168.192.in-addr.arpa

6.1.4 DNSSEC

name = virtual.home.lan.

87
Para que possamos habilitar um DNSSEC em um outro servidor de DNS para que
assim tenhamos um DNS secundrio realizamos as seguintes configuraes.
Execute os passos abaixo no servidor SLAVE
Instale o Bind9
#aptitude install bind9

Crie o diretrio /etc/bind/zones


#mkdir /etc/bind/zones

Mude o dono e as permisses para este diretrio


#chown bind:bind /etc/bind/zones
#chmod g+w /etc/bind/zones

Edite o arquivo /etc/bind/named.conf.options


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

Adcione a linha abaixo:


dnssec-enable yes;

Crie a chave que ser compartilhada pelo servidores:


#dnssec-keygen -a hmac-md5 -b 128 -r /dev/urandom -n host on.br

Acesse o arquivo .private que estar no /etc/bind, como no exemplo abaixo:


cat /etc/bind/Kacme.local.+157+47805.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: fHRX4is1JElf9Al1v21odA==
Bits: AAA=

88

Guarde o hash da linha Key


Edite o arquivo /etc/bind/named.conf
#vim /etc/bind/named.conf

Adicione a seguinte linha:


key TRANSFER {
algorithm hmac-md5;
secret INFORME A CHAVE GERADA AQUI COM CONVERSO EM BASE64;
};

Adicione a seguinte linha:


server 192.168.0.1 {
keys {
TRANSFER;
};
};

Edite o arquivo /etc/bind/named.conf.local


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

Adicione informaes sobre o dominio


zone acme.local {
type slave;
file /etc/bind/zones/slave_on.local;
masters { 192.168.0.1; };
allow-notify { 192.168.0.1; };
};

Edite o arquivo /etc/bind/named.conf

89

#vim /etc/bind/named.conf

Adicione a linha
include /etc/bind/rndc.key;

Execute os passos abaixo no servidor MASTER


Edite o arquivo /etc/bind/named.conf.options
# vim /etc/bind/named.conf.options

Adcione a linha abaixo:


dnssec-enable yes;

Edite o arquivo /etc/bind/named.conf


#vim /etc/bind/named.conf

Adicione a seguinte linha:


key TRANSFER {
algorithm hmac-md5;
secret INFORME A CHAVE GERADA NO SLAVE AQUI COM BASE64;
};

Edite o arquivo /etc/bind/named.conf


#vim /etc/bind/named.conf

Adicione a seguinte linha:

90
server 192.168.0.2 {
keys {
TRANSFER;
};
};

Adicione a linha
include /etc/bind/rndc.key;

Reinicie o Bind9 em ambos servidores


#/etc/init.d/bind9 restart

Aps reiniciar o Bind no slave o arquivo slave_on.local deve surgir no diretrio


/etc/bind/zones. Se esse arquivo no for criado d uma olhada no arquivo de log daemons.log
e verifique o erro apresentado.

6.1.5 Seo VIEW (Split DNS)


Com essa nova opo de configurao pode-se fazer hoje o que antes era necessrio
com dois ou mais servidores DNS.
A idia principal por detrs desta nova opo permitir que possa ser configurado o
que se conhece como "split DNS", ou seja, separar em dois ou mais servidores DNS os
registros que podem ser acessados por toda Internet e os que somente so de interesse da
empresa. Isso usado principalmente em redes "desmilitarizadas", onde o servidor que se
encontra na DMZ, de acesso publico, contm somente os registros dos hosts "visveis" na
Internet e o interno, com os registros da rede interna.
Bastante til, tambm, em sites que implementam NAT.
Com a configurao abaixo ficar mais claro o entendimento deste novo recurso.
view "public" IN {
match-clients { any; };
zone-statistics yes;
recursion no;
zone "rnp.br" {

91
type master;
file "rnp-externo.br";
};
};
view "private" IN {
match-clients { 200.1.2.0/24; };
zone-statistics yes;
recursion yes;
zone "rnp.br" {
type master;
file "rnp-interno.db";
};
};

Neste exemplo, a zona "rnp-externo.db" contm o mapeamento dos hosts pblicos e


pode ser acessada por todos. J a zona "rnp-interno.db" somente acessada pelos hosts
internos, ou seja, todos da rede 200.1.2.0.
Se nenhuma "view" for especificada, o BIND tratar, por default, as zonas como sendo
da classe IN (Internet). Esse fato importante, pois voltaremos a falar sobre isso na seo de
"Dica til".
Dentro das "views" so especificadas a configurao das zonas primrias e
secundrias.

6.1.6 DNS Dinmico


O servidor acessa Internet, atravs do router (gateway), cujo endereo
interno 192.168.1.1. Este endereo, que sempre o mesmo (Esttico) e s
visvel na rede interna.
De cada vez que o router se liga Internet, -lhe atribudo um endereo
dinmico, que pode ser diferente a cada ligao. Ento, a questo que se coloca a
seguinte:
Quando estou em viagem, como posso ligar-me remotamente ao servidor, se
no sei qual o seu endereo?
A soluo configurar um servio de resoluo de nomes (DNS) na Internet.
Este servio permite associar um nome ao endereo dinmico, sendo apenas
necessrio actualizar o endereo cada vez que este alterado, o que se pode fazer
automaticamente.
Existem na Internet vrios servios de DNS dinmico, sendo alguns de

92
utilizao gratuita, como por exemplo o DynDNS.
Para configurar o servio, basta visitar o stio http://www.dyndns.com, criar
uma conta, e associar um nome ao endereo dinmico actual.
Em seguida, do lado do nosso servidor, deve ser configurada atualizao
automtica do endereo.
Objectivo
Instalar o cliente para atualizao automtica do endereo dinmico em
DynDNS. Ser ento possvel acessar ao servidor a partir de qualquer parte do
mundo, atravs de um nome fcil de memorizar.
Instalao
server:~#

aptitude install ddclient

Durante a instalao pedida a configurao do cliente:


Dynamic DNS service provider: www.dyndns.org
DynDNS fully qualified domain names: omeuservidor.dyndns.org
Username for dynamic DNS service: omeulogin
Password for dynamic DNS service: ***
Interface used for dynamic DNS service: eth0

Configurao
Embora durante a instalao tenha sido indicado que a interface de acesso
Internet a eth0, no pode ser esse o endereo a atualizar no DynDNS, pois o
endereo interno, no acessvel do exterior. O endereo que interessa atualizar da
interface externa do router. Este mais facilmente obtido a partir do exterior (web),
pelo que necessrio alterar a configurao guardada no arquivo /etc/ddclient.conf:
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
pid=/var/run/ddclient.pid
protocol=dyndns2
#use=if, if=eth0
server=members.dyndns.org

93
login=omeulogin
password='aminhapassword'
omeuservidor.dyndns.org
use=web, web=dyndns

Caso seja usado um proxy para acessar Internet, este dever constar no
arquivo de configurao /etc/ddclient.conf:
# [...]
proxy=proxy.isp.com:3128
# [...]

Reiniciar o servio ddclient:


server~# /etc/init.d/ddclient restart

Verificao
A aplicao ddclient permite visualizar as comunicaes com o servio
dynDNS:
server:~# ddclient -v
CONNECT: checkip.dyndns.org
CONNECTED:
SENDING: GET / HTTP/1.0
SENDING: Host: checkip.dyndns.org
SENDING: User-Agent: ddclient/3.6.7
SENDING: Connection: close
SENDING:
RECEIVE: HTTP/1.1 200 OK
RECEIVE: Content-Type: text/html
RECEIVE: Server: DynDNS-CheckIP/1.0
RECEIVE: Connection: close
RECEIVE: Cache-Control: no-cache
RECEIVE: Pragma: no-cache
RECEIVE: Content-Length: 105
RECEIVE:
RECEIVE:
<html><head><title>Current
84.85.86.87</body></html>

IP

Check</title></head><body>Current

IP

Address:

94
SUCCESS: omeuservidor.dyndns.org: skipped: IP address was already set to 84.85.86.87.

Neste caso o servio j estava atualizado com o endereo 84.85.86.87.


Dever tambm ser possvel resolver o nome "externo" do servidor:
server:# nslookup omeuservidor.dyndns.org
Server:
Address:

127.0.0.1
127.0.0.1#53

Non-authoritative answer:
Name: omeuservidor.dyndns.org
Address: 84.85.86.87

6.2 DHCP
Para que cada sistema ligado em rede seja corretamente identificado, deve
ter um endereo IP nico. Esse endereo pode ser atribudo manualmente a cada
posto ou de uma forma automtica e dinmica, graas ao protocolo DHCP (Dynamic
Host Configuration Protocol ou Protocolo dinmico de configurao de postos).

6.2.1 O Protocolo DHCP


Com o protocolo DHCP, quando um sistema ligado em rede, lhe atribudo
automaticamente um endereo IP nico. Ao mesmo tempo, fornecida uma srie de
parmetros de rede, tais como o endereo do gateway, o endereo do servidor dns,
etc. O protocolo DHCP torna a tarefa do administrador de rede bastante mais fcil,
pois a configurao centralizada, e no distribuda em cada posto.
NOTA:
Em cada segmento de rede deve existir apenas um servidor DHCP. Numa rede caseira, o router ADSL ou
Cabo, funciona geralmente como servidor DHCP. Neste caso, deve-se desligar o servio DHCP no router antes
de iniciar o servio noutro sistema.

6.2.2 Servidor DHCP

95
Instalao
server:~# aptitude install dhcp3-server

Configurao
O servio DHCP s estar disponvel para a rede interna. Por isso s aceitar
ligaes pela interface eth0, o que definido no arquivo de configurao
/etc/default/dhcp3-server:
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#

Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="eth0"

A parte principal da configurao mantida no arquivo /etc/dhcp3/dhcpd.conf.


Neste arquivo indicado o nome de domnio (option domain-name
"home.lan";), os endereos dos servidores DNS (option domain-name-servers
192.168.1.100, 192.168.1.1;).
tambm definida a durao normal e mxima da atribuio do endereo IP
atribudo (default-lease-time 600; max-lease-time 7200;). O cliente poder sempre
pedir uma nova atribuio antes da actual expirar, podendo receber ou no o mesmo
endereo IP.
Finalmente, para o segmento de rede 192.168.1.0, indicada a gama de
endereos disponvel para a atribuio (range 192.168.1.32 192.168.1.63;), qual o
router a utilizar (option routers 192.168.1.1;) e qual o endereo de broadcast (option
broadcast-address 192.168.1.255;)
#
# Sample configuration file for ISC dhcpd for Debian
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#

96

# The ddns-updates-style parameter controls whether or not the server will


# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "home.lan";
option domain-name-servers 192.168.1.100, 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
## SubRede home.lan
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.32 192.168.1.63;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}
# [...]

O protocolo DHCP possibilita a atribuio endereos especficos a


determinados sistemas, associando o nmero da placa de rede ao endereo
pretendido. No entanto, estes endereos fixos no devem estar na gama dos
endereos reservados para atribuio dinmica.
# [...]
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using

97
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host posto2 {
hardware ethernet 01:23:45:67:89:10;
fixed-address 192.168.1.2;
}
host posto3{
hardware ethernet 01:23:45:67:89:11;
fixed-address 192.168.1.3;
}

Reiniciar o servio dhcp:


server:~# /etc/init.d/dhcp3-server restart

Configurao dos clientes


Linux
Num cliente Linux, basta instalar o pacote dhcp client. A configurao gerada
durante a instalao dever ser suficiente.
server:~# aptitude install dhcp3-client dhcp3-common

Windows
Num cliente Windows, dever ser ativada a opo "Obter automaticamente
um endereo IP", nas propriedades TCP/IP da interface de rede. Numa rede caseira,
com acesso Internet via modem ADSL ou cabo, esta opo dever, em princpio, j
estar ativada.

98

6.3 Proxy
Um proxy um servio de rede pelo qual um sistema cliente se liga
indiretamente a outro sistema. Os dados deixam de ser trocados diretamente e
passam a ser tratados pelo servio proxy, que se coloca entre o servidor e o cliente.
Graas a esta arquitetura, possvel implementar diversos servios, tais
como regras de acesso, caches web, filtros de contedos, anti-vrus, comunicaes
annimas, etc.

6.3.1 Chace web: Squid


Objectivo
O pacote squid um proxy Internet com uma cache integrada. A vantagem de
uma cache internet a de guardar localmente dados pedidos anteriormente para,
numa utilizao futura, serem servidos localmente, evitando acessos repetidos a

99
servidores distantes.
Instalao
server:~# aptitude install squid

Configurao
A configurao do squid guardada no arquivo /etc/squid/squid.conf.
O squid aceita ligaes na porta 3128, por omisso. No entanto esta pode ser
alterada:
#[...]
# Squid normally listens to port 3128
http_port 3128
#[...]

Por segurana o squid s responder a pedidos originados na rede local ou


no prprio servidor. Esta restrio conseguida definindo uma lista de controle de
acesso ou ACL (Access Control List) (acl home.lan src 192.168.1.0/24) e autorizando
o acesso aos sistemas includos nessa lista (http_access allow home.lan):
# [...]
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# Example rule allowing access from your local networks. Adapt
# to list your (internal) IP networks from where browsing should
# be allowed
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks
http_access allow localhost
acl home.lan src 192.168.1.0/24
http_access allow home.lan
# And finally deny all other access to this proxy
http_access deny all
# [...]

100

O tamanho total da cache do squid pode ser afinado para um valor


conveniente, como por exemplo, 2048Mb:
# [...]
#Default:
# cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /var/spool/squid 2048 16 256
# [...]

A identificao do servidor proxy pode tambm ser definida:


# [...]
# TAG: visible_hostname
#

If you want to present a special hostname in error messages, etc,

define this. Otherwise, the return value of gethostname()

will be used. If you have multiple caches in a cluster and

get errors about IP-forwarding you must set them to have individual

names with this setting.

#
#Default:
# none
visible_hostname proxy.home.lan
# [...]

Opcionalmente, pode-se tambm configurar o tamanho mximo de um


objecto a guardar em cache definindo o parmetro maximum_object_size com um
valor em Kbytes:
# [...]
# TAG: maximum_object_size

(bytes)

Objects larger than this size will NOT be saved on disk. The

value is specified in kilobytes, and the default is 4MB. If

you wish to get a high BYTES hit ratio, you should probably

increase this (one 32 MB object hit counts for 3200 10KB

hits). If you wish to increase speed more than your want to

save bandwidth you should leave this low.

101
#
#

NOTE: if using the LFUDA replacement policy you should increase

this value to maximize the byte hit rate improvement of LFUDA!

See replacement_policy below for a discussion of this policy.

#
#

NOTE 2: In Debian the default is raised to 20MB allowing cache

of Packages files in debian repositories. This makes squid a

proper proxy for APT.

#
#Default:
# maximum_object_size 20480 KB
# [...]

Reiniciar o servio squid:


server:~# /etc/init.d/squid restart

Configurao de clientes
possvel configurar o browser Firefox para utilizar um proxy, acedendo ao
menu Ferramentas > Opes > Avanadas > Rede > Definies, ativar
a opo Configurao manual do proxy e inserir o endereo do servidor proxy
(192.168.1.100) e a porta (3128). Podem-se definir excepes para o prprio posto
(127.0.0.1) e para a rede local (192.168.1.0/24):

102
No caso de sistemas Linux, possvel declarar a varivel "http_proxy" com a
URL do proxy a utilizar:
fribeiro@server:~$ export http_proxy="http://192.168.1.100:3128/"

No entanto, na prxima sesso ter que ser declarada novamente.


Um mtodo mais duradouro declarar a varivel automaticamente a cada
login, incluindo a declarao no arquivo ~/.profile do utilizador:
fribeiro@server:~$ echo 'http_proxy="http://192.168.1.100:3128/"' >> ~/.profile

A declarao pode ainda ser feita de modo automtico e para todos os


utilizadores, se includa no arquivo de sistema /etc/profiles:
server:~# echo 'http_proxy="http://192.168.1.100:3128/"' >> /etc/profile

6.3.2 Filtro de contedos: Dansguardian


Objectivo
O pacote dansguardian um proxy de filtro de contedos. Quando um site
Internet acedido atravs do dansguardian, este analisa o seu contedo e, em
funo de uma lista de regras predefinidas e configurveis pelo utilizador, permite ou
bloqueia o acesso. assim possvel bloquear o acesso ao site indesejveis, impedir
a descarga de determinado tipo de arquivos, ou evitar a propagao de vrus.
NOTA:
A instalao do pacote dansguardian depende da instalao prvia de um servidor proxy como o squid e de
um anti-vrus como o ClamAV.

Instalao
server:~# aptitude install dansguardian

Configurao
Toda
a
configurao
/etc/dansguardian/dansguardian.conf.

efectuada

no

arquivo

103
As mensagens do dansguardian podem ser configuradas para diversas
lnguas (a lista completa pode ser consultada em /etc/dansguardian/languages):
# [...]
# language to use from languagedir.
language = 'portuguese'
# [...]

Por omisso, o dansguardian aceita ligaes na porta 8080. No entanto estas


definies podem ser alteradas:
# [...]
# Network Settings
#
# the IP that DansGuardian listens on. If left blank DansGuardian will
# listen on all IPs. That would include all NICs, loopback, modem, etc.
# Normally you would have your firewall protecting this, but if you want
# you can limit it to a certain IP. To bind to multiple interfaces,
# specify each IP on an individual filterip line.
filterip =
# the port that DansGuardian listens to.
filterport = 8080
# [...]

O prprio dansguardian deve usar um proxy para optimizao da largura de


banda, neste caso o squid, a correr no mesmo servidor:
# [...]
# the ip of the proxy (default is the loopback - i.e. this server)
proxyip = 127.0.0.1
# the port DansGuardian connects to proxy on
proxyport = 3128
# [...]

Caso tenha sido instalado o pacote anti-vrus ClamAV, o dansguardian pode


filtrar contedos para detectar vrus:

104

# [...]
# # Content Scanners (Also known as AV scanners)
# These are plugins that scan the content of all files your browser fetches
# for example to AV scan. The options are limitless. Eventually all of
# DansGuardian will be plugin based. You can have more than one content
# scanner. The plugins are run in the order you specify.
# This is one of the few places you can have multiple options of the same name.
#
# Some of the scanner(s) require 3rd party software and libraries eg clamav.
# See the individual plugin conf file for more options (if any).
#
contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'
# [...]

Aps terminar a configurao, deve ser comentada a linha de segurana:


# [...]
# UNCONFIGURED - Please remove this line after configuration
# [...]

O dansguardian utiliza, entre outras tcnicas, um sistema de anlise de texto


em que atribui penalizao a determinadas palavras consideradas "obscenas" e
atingindo um determinado limite a pgina bloqueada. Este limite pode ser alterado
em funo do perfil dos utilizadores, sendo que quanto mais alto for o valor, mais
permissivo o filtro. Normalmente so considerados razoveis os valores de 50 para
crianas pequenas, 100 para crianas mais velhas, 160 para adolescentes e 200 a
240 para adultos. Este valor deve ser indicado no parmetros naughtynesslimit do
arquivo /etc/dansguardian/dansguardianf1.conf:
# [...]
# Naughtyness limit
# This the limit over which the page will be blocked. Each weighted phrase is given
# a value either positive or negative and the values added up. Phrases to do with
# good subjects will have negative values, and bad subjects will have positive
# values. See the weightedphraselist file for examples.
# As a guide:
# 50 is for young children, 100 for old children, 160 for young adults.
# naughtynesslimit = 50

105
naughtynesslimit = 240
# [...]

Finalmente, reiniciar o servio dansguardian, para ter em conta as alteraes


efetuadas:
server:~# /etc/init.d/dansguardian restart

Configurao de clientes
possvel configurar o browser Firefox para utilizar um proxy, acedendo ao
menu Ferramentas > Opes > Avanadas > Rede > Definies, ativar
a opo Configurao manual do proxy e inserir o endereo do servidor proxy
(192.168.1.100) e a porta (8080). Podem-se definir excepes para o prprio posto
(127.0.0.1) e para a rede local (192.168.1.0/24):

No caso de sistemas Linux, possvel declarar a varivel "http_proxy" com a


URL do proxy a utilizar:
fribeiro@server:~$ export http_proxy="http://192.168.1.100:8080/"

106

No entanto, na prxima sesso ter que ser declarada novamente.


Um mtodo mais duradouro declarar a varivel automaticamente a cada
login, incluindo a declarao no arquivo ~/.profile do utilizador:
fribeiro@server:~$ echo 'http_proxy="http://192.168.1.100:8080/"' >> ~/.profile

A declarao pode ainda ser feita de modo automtico e para todos os


utilizadores, se includa no arquivo de sistema /etc/profiles:
server:~# echo 'http_proxy="http://192.168.1.100:8080/"' >> /etc/profile

Utilizao
Aps configurar o browser para utilizar o proxy dansguardian, sempre que o
utilizador tentar acessar a um site com contedo indesejvel, aparecer uma
mensagem informando que o acesso foi bloqueado e qual a razo. Um bom teste
tentar acessar pgina de testes da Eicar:

107
NOTA:
A configurao de base do dansguardian extremamente restritiva! Por exemplo, ser negado o acesso a
arquivos relativamente comuns, como do tipo "iso", "zip" ou "mp3". As listas de filtros podero ser encontradas
na directoria /etc/dansguardian/lists. No entanto, a sua configurao sai fora do mbito deste guia.

6.4 Base de dados


Algumas aplicaes a instalar nos servidores utilizaro como suporte uma
base de dados.
Introduo
muito fcil encontrar servios de hospedagem de sites que oferecem em
seus planos os Sistemas Gerenciadores de Banco de Dados (SGDB) MySQL e
PostgreSQL, embora isso seja mais comum com o primeiro. Como esses SGBD no
so usados apenas na internet, talvez seja de seu interesse utiliz-los em seus
projetos de software, uma vez que cada um dotado de vantagens interessantes,
como a gratuidade de uso. Para ajud-lo a escolher o melhor para sua aplicao,
este artigo apresenta as principais caractersticas de ambos, comeando com o
MySQL. Para tanto, recomendvel que voc tenha algum conhecimento sobre os
conceitos de bancos de dados.
Alguns termos
Mesmo aquelas pessoas que j trabalham com banco de dados podem ficar
"perdidas" no meio de tantos nomes de recursos. Assim, para facilitar a
compreenso, segue uma lista com uma breve explicao sobre os recursos mais
importantes:
- Referential integrity: tambm conhecido como "integridade referencial", esse
recurso consiste em restries ou regras existentes para uma correta insero de
dados, por exemplo, para impedir que uma tabela seja preenchida sem que isso
ocorra em outra;
- Schemas: recurso que permite cruzar informaes em um mesmo banco de dados,
mas em estruturas diferentes;
- SQL: sigla para Structured Query Language, uma linguagem utilizada em bancos
de dados relacionais;
- SSL: sigla para Secure Sockets Layer, consiste em um protocolo para a troca
segura de informaes;
- Stored procedures: esse recurso consiste em comandos SQL "guardados" no
servidor para, por exemplo, executar tarefas repetitivas, evitando que um cliente
tenha que execut-las constantemente;

108
- Transactions: tambm conhecidas como transaes, as transactions so instrues
executadas em um bloco designado por parmetros que indicam seu incio e seu
fim;
- Triggers: tambm chamados de gatilhos, os triggers so recursos que permitem o
acionamento de uma seqncia de comandos logo em seguida ou logo aps um
evento;
- Views: os views consistem em um tipo de tabela virtual formada por campos
extrados de uma tabela "verdadeira", facilitando o controle sob os dados acessados.
O banco de dados MySQL
O MySQL um dos sistemas de gerenciamento de banco de dados mais
populares que existe e, por ser otimizado para aplicaes Web, amplamente
utilizado na internet. muito comum encontrar servios de hospedagem de sites que
oferecem o MySQL e a linguagem PHP, justamente porque ambos trabalham muito
bem em conjunto.
Outro fator que ajuda na popularidade do MySQL sua disponibilidade para
praticamente qualquer sistema operacional, como Linux, FreeBSD (e outros
sistemas baseados em Unix), Windows e Mac OS X. Alm disso, o MySQL um
software livre (sob licena GPL), o que significa que qualquer um pode estud-lo ou
alter-lo conforme a necessidade.
Entre as caractersticas tcnicas do SGBD MySQL, esto:
- Alta compatibilidade com linguagens como PHP, Java, Python, C#, Ruby e C/C++;
- Baixa exigncia de processamento (em comparao como outros SGBD);
- Vrios sistemas de armazenamento de dados (batabase engine), como MyISAM,
MySQL Cluster, CSV, Merge, InnoDB, entre outros;
- Recursos como transactions (transaes), conectividade segura, indexao de
campos de texto, replicao, etc;
- Instrues em SQL, como indica o nome.
O MySQL surgiu na Sucia pelas mos de trs colegas: Allan Larsson, David
Axmark e Michael Monty Widenius. Trabalhando com base de dados, eles sentiram
a necessidade de fazer determinadas conexes entre tabelas e usaram o mSQL
para isso. Porm, no demorou para perceberem que essa ferramenta no lhes
atendia conforme o necessrio e passaram a trabalhar em uma soluo prpria.
Surgia ento o MySQL, cuja primeira verso foi lanada no ano de 1996.
Um fato importante a ser destacado sobre o MySQL que esse SGBD
tambm possui uma licena comercial, isto , paga. Neste caso, possvel obter
suporte diferenciado dos desenvolvedores.
Vale ressaltar tambm que, em fevereiro de 2008, o MySQL foi comprado pela
Sun Microsystems, que pagou a quantia de 1 bilho de dlares pela aquisio. Mais

109
informaes sobre essa transao neste link (em ingls).
O banco de dados PostgreSQL
O sistema gerenciador de banco de dados PostgreSQL teve seu incio na
Universidade de Berkeley, na Califrnia, em 1986. poca, um programador
chamado Michael Stonebraker liderou um projeto para a criao de um servidor de
banco de dados relacionais chamado Postgres, oriundo de um outro projeto da
mesma instituio denominado Ingres. Essa tecnologia foi ento comprada pela
Illustra, empresa posteriormente adquirida pela Informix. Porm, mesmo diante
disso, dois estudantes de Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o
Postgres linguagem SQL. Este projeto recebeu o nome de Postgres95.
Em 1996, quando o projeto estava estvel, o banco de dados recebeu o nome
de PostgreSQL. No entanto, enquanto ainda possua o nome Postgres95, o banco
de dados teve vrias mudanas. O seu cdigo foi totalmente revisado e a linguagem
SQL foi definida como padro.
Tecnicamente falando, o PostgreSQL um banco de dados relacional e
orientado a objetos. Um de seus atrativos possuir recursos comuns a banco de
dados de grande porte, o que o deixa apto a trabalhar, inclusive, com operaes de
misso crtica. Alm disso, trata-se de um banco de dados verstil, seguro, gratuito e
de cdigo aberto (disponvel sob uma licena BSD).
Entre suas caractersticas, tem-se:
- Compatibilidade multi-plataforma, ou seja, executa em vrios sistema operacionais,
como Windows, Mac OS X, Linux e outras variantes de Unix;
- Compatibilidade com vrias linguagens, entre elas, Java, PHP, Python, Ruby, e
C/C++;
- Base de dados de tamanho ilimitado;
- Tabelas com tamanho de at 32 TB;
- Quantidade de linhas de at 1.6 TB ilimitada;
- Campos de at 1 GB;
- Suporte a recursos como triggers, views, stored procedures, SSL, MVCC,
schemas, transactions, savepoints, referential integrity e expresses regulares;
- Instrues em SQL, como indica o nome.
MySQL x PostgreSQL
MySQL ou PostgreSQL, qual usar? Ambos so muito bons e no fazem feio
diante das alternativas pagas. Alm disso, possuem recursos e vantagens em
comum, o que significa que, para a maioria das aplicaes, ambos podem ser
usados. Na verdade, o correto no tentar descobrir qual o melhor, mas em que
situao um ou outro deve ser utilizado.

110
O PostgreSQL otimizado para aplicaes complexas, isto , que envolvem
grandes volumes de dados ou que tratam de informaes crticas. Assim, para um
sistema de comrcio eletrnico de porte mdio/alto, por exemplo, o PostGreSQL
mais interessante, j que esse SGBD capaz de lidar de maneira satisfatria com o
volume de dados gerado pelas operaes de consulta e venda.
O MySQL, por sua vez, focado na agilidade. Assim, se sua aplicao
necessita de retornos rpidos e no envolve operaes complexas, o MySQL a
opo mais adequada, pois otimizado para proporcionar processamento rpido
dos dados e tempo curto de resposta sem exigir muito do hardware. Se voc
precisa, por exemplo, de um banco de dados para armazenar o contedo do seu
site, de seu frum ou necessita manter um cadastro de usurios de um portal, o
MySQL "serve como uma luva", pois tais aplicaes no necessitam dos recursos
avanados que o PostgreSQL oferece.
Para escolher um destes dois SGBD, procure entender bem quais recursos
sua aplicao precisa. Tente estimar o volume de dados, avalie o hardware
disponvel, certifique-se das funcionalidades necessrias e, posteriormente, procure
por informaes mais detalhadas do MySQL e do PostGreSQL. Se sua aplicao for
simples - principalmente se for algo ligado internet -, no preciso pensar muito: o
MySQL uma escolha satisfatria, pois facilmente encontrado em servios de
hospedagem.
Todavia, h situaes em que tanto o MySQL quanto o PostgreSQL sero
boas escolhas. Nesses casos, recomendvel fazer testes com ambos e avaliar
qual oferece mais vantagens aplicao.
Finalizando
Um banco de dados pode ser a diferena entre ter e no ter um negcio, seja
ele de qualquer porte. Por isso, a escolha deve ser bem feita e aspectos como
desempenho, recursos, documentao e suporte devem ser considerados. Em todos
esses pontos o MySQL e o PostgreSQL so excelentes, por isso, a escolha entre um
deles s depende de sua aplicao.

6.4.1 Servidor MySQL


Objectivo
Instalar o servidor de base de dados MySQL, com uma configurao mnima.
NOTA:
A instalao por omisso do MySQL s aceita ligaes a partir do prprio posto (localhost). Isto no
problemtico, uma vez que a base de dados s ser utilizada por aplicaes do prprio posto.

Instalao
A instalao do pacote mysql-server recomenda a instalao de um pacote de

111
email, o que, por agora, no interessa, pois ser instalado mais tarde. Por isso,
sero instalados os pacotes mysql sem seguir as recomendaes, o que feito
acrescentando a opo without-recommends durante a instalao:
server:~# aptitude install --without-recommends mysql-server mysql-client

Configurao
A instalao por omisso do MySQL cria um utilizador root sem password. Por
segurana, o primeiro passo alterar a password de root. Este o utilizador root do
MySQL, no do sistema, pelo que as passwords devem ser diferentes:
server:~# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 5.0.51a-19 (Debian)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password=PASSWORD('nova-password') WHERE user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye

Configure o servidor Mysql para receber conexes externas no arquivo


/etc/mysql/my.cnf
#bind-address
bind-address

= 127.0.0.1
= 0.0.0.0

112

Para conseguir gerenciar o servidor remotamente sera necessario se logar na


maquina com tunel via ssh como em:
ssh -l<usuario> -L 3306:127.0.0.1:3306 bd.on.br

Desta maneira voc conseguira gerenciar o mysql como se estivese na


maquina tipo <mysql -uroot -p> ou utilizando uma ferramenta de mysql.

6.4.1.1 Criando certificados SSL para o mysql


Crie os certificados ca-cert.pem, server-key.pem e server-cert.pem e configure
no arquivo /etc/mysql/my.cnf
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Crie o ca-cert.pem com os seguintes comandos


server:/etc/mysql#openssl genrsa 2048 > ca-key.pem
server:/etc/mysql#openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem

Crie o server-*.pem com os seguintes comandos


server:/etc/mysql#openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem
server:/etc/mysql#openssl rsa -in server-key.pem -out server-key.pem
server:/etc/mysql#openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem
-set_serial 01 -out server-cert.pem

Crie o client-*.pem com os seguintes comandos que sero utilizados no


cliente para conexo ao banco.

113
server:/etc/mysql#openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem
server:/etc/mysql#openssl rsa -in client-key.pem -out client-key.pem
server:/etc/mysql#openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem
-set_serial 01 -out client-cert.pem

Verifique se os arquivos foram criados corretamente com o comando.


server:/etc/mysql# openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

Ateno tenha segurana com estes arquivos eles so a segurana da


comunicao dos servidores.

6.4.2 Servidor PostgreSQL


Use bancos de dados relacionais em PostgreSQL em Debian
O PostgreSQL sistema de banco de dados relacional um rpido, flexvel e
compatvel com os padres da plataforma de banco de dados open source. Este
guia ir ajud-lo a instalar e configurar o PostgreSQL em Debian 6 (Squeeze).
Supe-se que voc seguiu os passos detalhados em nosso guia de introduo , e
que voc est logado em sua VPS Linode como root via SSH.
Instalando o PostgreSQL
Execute o seguinte comando para instalar o PostgreSQL, as dependncias
necessrias e, em alguns pacotes que oferecem funcionalidade adicional:
server:~#aptitude install postgresql postgresql-contrib

Configurar PostgreSQL
Instale o adminpack
Este passo opcional. Emita o seguinte comando para instalar o adminpack
PostgreSQL, que fornece funcionalidade adicional referente ao gerenciamento
remoto atravs de ferramentas como pgAdmin :
su - postgres
psql template1 < /usr/share/postgresql/8.4/contrib/adminpack.sql

114

Voc dever ver uma sada semelhante ao seguinte:


CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION

Definir senha do usurio postgres


Alterar a senha do usurio postgres conta do sistema com o seguinte
comando. Se voc j estiver logado como o usurio postgres, por favor, emitir o
comando na primeira sada para voltar a uma shell de root.
passwd postgres

Emita os seguintes comandos para definir uma senha para o usurio postgres
administrativa. Certifique-se de substituir "changeme" com uma senha forte. Esta
senha ser usada para conectar ao banco de dados atravs da rede, a autenticao
ident sero utilizados para ligaes locais feitas com psql enquanto estiver
conectado em um shell como o usurio postgres.
su - postgres
psql -c "ALTER USER postgres WITH PASSWORD 'changeme'" -d template1

Criar um banco de dados


Mude para o "postgres" do usurio e criar um banco de dados, emitindo os
seguintes comandos:
su - postgres
createdb mytestdb

Conecte-se ao banco de dados de teste, emitindo o seguinte comando:

115
psql mytestdb

Voc dever ver uma sada semelhante ao seguinte:


postgres @ Arquimedes: ~ $ psql mytestdb
psql (8.4.5)
"Ajuda" tipo de ajuda.
mytestdb = #

Este o shell cliente PostgreSQL, voc pode us-lo para emitir instrues
SQL. Para ver uma lista de comandos disponveis, use o seguinte comando no shell:
\h

Voc pode encontrar mais informaes sobre um comando especfico,


adicionando-o aps o comando h \.
Criar tabelas
Para criar uma tabela em seu banco de dados de teste chamado
"empregados", emitir o seguinte comando:
CREATE TABLE empregados (employee_id int, first_name varchar, varchar last_name);

Para inserir um registro na tabela, voc deve emitir uma declarao como
esta:
INSERT INTO empregados VALUES (1, 'Jack', 'Espadilha');

Para ver o contedo da tabela "employees", voc deve emitir uma instruo
SELECT semelhante ao seguinte:
SELECT * FROM empregados;

Isso produziria uma sada semelhante ao seguinte:

116
mytestdb = # SELECT * FROM empregados;
employee_id | first_name | last_name
------------- + ------------ + ----------1 | Jack | Espadilha
(1 linha)

Para sair do psql shell, emita este comando:


\q

Criar Usurios do PostgreSQL (papis)


PostgreSQL refere-se aos usurios como "papis", que pode ter diferentes
privilgios em seus bancos de dados. Se um usurio classificado como um
"superusurio", que ter acesso administrativo total ao sistema de banco de dados.
Para adicionar um novo usurio para o PostgreSQL, digite o seguinte comando
como o usurio postgres:
createuser alison pwprompt

Voc ser solicitado a especificar vrios valores para o novo usurio. Para
eliminar este usurio, emitir o seguinte comando:
dropuser alison

Por padro, o PostgreSQL utiliza autenticao ident. Isso significa que as


conexes de banco de dados ser concedido aos usurios do sistema locais que
possuem ou ter privilgios no banco de dados a ser conectado. Essa autenticao
til nos casos em que um usurio do sistema especial ser executar um programa
(scripts locais, CGI / FastCGI processos pertencentes a usurios separados, etc.) No
entanto, voc pode desejar mudar este comportamento para exigir senhas. Para
isso, edite o arquivo /etc/postgresql/8.4/main/pg_hba.conf como root ou o usurio
postgres. Localize a seguinte linha:
Trecho do arquivo: /etc/postgresql/8.4/main/pg_hba.conf
local all all ident

117
Mude-o para o seguinte para usar a autenticao de senha:
Trecho do arquivo: / etc/postgresql/8.4/main/pg_hba.conf
local all all md5

Emita o seguinte comando como root para reiniciar o daemon banco de dados e
garantir que as alteraes tenham se propagado:
/etc/init.d/postgresql restart

Para conceder todos os privilgios sobre a mesa "empregados" para um usurio


chamado "Alison", emita os seguintes comandos como o usurio postgres:
psql mytestdb
GRANT ALL ON employees TO alison;
\q

Para usar o banco de dados "mytestdb" como "Alison", emitir o seguinte comando:
psql -U alison -W mytestdb

Voc ser solicitado a digitar a senha para o "alison" usurio e dado psql shell
acesso ao banco de dados.
Por padro o PostgreSQL vem configurado para receber apenas conexes
locais (localhost ou 127.0.0.1). Para conectar de outra mquina na rede preciso
alterar algumas configuraes bsicas em 2 arquivos.
So eles: postgresql.conf e pg_hba.conf.
No postgresql.conf vamos editar a seguinte linha:
#listen_addresses = localhost # what IP address(es) to listen on

Como em todo arquivo de configurao em programas linux, o # na frente da


linha significa um comentrio e com isso desabilita o parmetro seguinte, tomando

118
seu valor default, que no caso localhost. Descomente essa linha e substitua seu
valor por *. Assim seu PostgreSQL estar apto a ouvir conexes de qualquer
IP.Ento essa linha ficar da seguinte forma:
listen_addresses = * # what IP address(es) to listen on

Isso no quer dizer que ele estar aberto para qualquer IP da rede. possvel
criar polticas de acesso atravs de outro arquivo que falaremos a seguir.
Liberando as conexes no arquivo pg_hba.conf:
Este o arquivo do Postgre responsvel pela liberao de usurios, hosts e
bancos de dados. Nele possvel dizer qual usurio de qual ip (ou rede) conectar a
qual banco. possvel liberar qualquer usurio para coenctar a qualquer banco, mas
esta uma regra cautelosa a ser seguida pois pode comprometer a segurana do
seu servidor de bases de dados.
Por padro o arquivo vem com a seguinte configurao:
# local is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust

Pode haver alguma variao das configuraes padres de acordo com a


verso utilizada, mas geralmente algo que represente essas informaes.
Basicamente elas querem dizer que todas as conexes locais podem ser realizadas
por qualquer usurio do banco a qualquer banco de dados.
Liberando acesso remoto
Para liberar o acesso remoto basta criar uma nova regra seguindo o seguinte
padro:
host all all 0.0.0.0/0 trust

Com essa regra qualquer usurio de qualquer IP poder se conectar a


qualquer database.
Importante: O parmetro trust quer dizer que no ser solicitada qualquer
senha para conectar ao banco de dados. Ento, qualquer pessoa com acesso sua

119
rede poder se conectar ao servidor PostgreSQL sem nenhuma restrio. Se a sua
rede for restrita como uma turma de um curso ou um ambiente de desenvolvimento
interno de empresa no h riscos, porm, necessrio possuir um ambiente de rede
interno isolado.
Este parmetro til quando voc ainda no se conectou ao banco para criar
uma senha de acesso ao usurio postgres (do banco e no do sistema operacional).
Ento voc se conecta e reseta a senha do usurio. Logo em seguida, altere o
parmetro para md5. Assim, uma senha ser solicitada ao tentar conectar-se ao
servidor Postgre.
Assim ficar a regra de liberao:
host all all 0.0.0.0/0 md5

possvel tambm liberar o acesso apenas a uma rede especfica:


host all all 192.168.0.0/32 md5

Ou tambm, informar qual usurio poder conectar:


host all usuariodobanco 192.168.0.0/32 md5

Tambm informar qual o banco de dados a ser conectaro por este usurio:
host bancodedados usuariodobanco 192.168.0.0/32 md5

Na regra acima, o usurio usuariodobanco poder conectar-se apenas ao


banco bancodedados apenas se estiver dentro da rede 192.168.0.0.
Obs.: voc podera usar hostssl para conexo cryptografadas com o host no
lugar de host

6.4.2.1 Criando certificados SSL para o PostgreSQL


No servidor, trs certificados so necessrios no diretrio de dados.
/var/lib/postgresql/8.4/main:
root.crt (certificado raiz confivel)
server.crt (certificado de servidor)
server.key (chave privada)

120

Emitir comandos como root.


sudo cd /var/ lib/postgresql/8.4/main

Gerar uma chave privada (que voc deve fornecer uma senha).
openssl genrsa -des3 -out server.key 1024

Remova a senha.
openssl rsa -in server.key -out server.key

Defina a permisso adequada e proprietrio do arquivo da chave privada.


chmod 400 server.key
chown postgres.postgres server.key

Criar o certificado do servidor.


-Subj um atalho para evitar solicitando a informao.
-X509 produz um certificado auto-assinado, em vez de uma solicitao de
certificado.
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=BR/ST=Rio de
Janeiro/L=RJ/O=Observatorio Nacional/CN=ON/emailAddress=dtin@on.br'

Uma vez que somos auto-assinado, usamos o certificado do servidor como o


certificado raiz confivel.
cp server.crt root.crt

Voc precisar editar pg_hba.conf. Por exemplo:


# TYPE DATABASE USER CIDR-ADDRESS METHOD

121
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
hostssl all www-data 0.0.0.0/0 trust
hostssl all postgres 0.0.0.0/0 trust

Voc precisa editar postgresql.conf para realmente ativar ssl:


ssl = on

Servidor Postgresql deve ser reiniciado.


/etc/init.d/postgresql reiniciar

Se o servidor deixa de (re) comear, procure no log de inicializao do


postgresql, /var/log/postgresql/postgresql-8.4-main.log padro.
No cliente, precisamos de trs arquivos. Para o Windows, esses arquivos
devem estar em %appdata%\postgresql\diretrio. Para Linux ~/postgresql./ Diretrio.
root.crt (certificado raiz confivel)
postgresql.crt (certificado de cliente)
postgresql.key (chave privada)
Gerar os arquivos dos necessrios na mquina do servidor, e ento copi-los
para o cliente. Ns vamos gerar os arquivos necessrios no diretrio /tmp/.
Primeiro crie o postgresql.key chave privada para a mquina cliente, e remover a
senha.
openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

Em seguida, crie o postgresql.crt certificado. Deve ser assinado pelo nosso


raiz confivel (que est usando o arquivo de chave privada na mquina do servidor).
Alm disso, o nome comum do certificado (CN) deve ser definido como o nome de
usurio do banco de dados, vamos conectar.

122

openssl req -new -key /tmp/postgresql.key -out


Janeiro/L=Observatorio Nacional/O=bd/CN=www-data'

/tmp/postgresql.csr

-subj

'/C=BR/ST=Rio

de

openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt
-CAcreateserial

Copie os trs arquivos que criamos a partir do servidor /tmp/ diretrio na


mquina do cliente.
Copie o root.crt certificado raiz confivel da mquina do servidor para a
mquina cliente (para Windows pgadmin %appdata%\ postgresql\ ou Linux pgadmin
~ /.Postgresql/). Altere a permisso do arquivo do postgresql.key para restringir o
acesso apenas a voc (provavelmente no necessrio no Windows como o acesso
restrito j est herdado). Remova os arquivos do servidor /tmp/ diretrio.

6.5 Certificados SSL


Muitos servios necessitam de estabelecer uma ligao segura entre o cliente
e o servidor e confiar na identidade mtua. Essa segurana assegurada por uma
ligao encriptada e a confiana fornecida por certificados que atestam a
identidade do servidor. O protocolo TLS (Transport Layer Security) fornece uma
ligao segura encriptando a comunicao e autenticao da identidade atravs de
certificados digitais, emitidos por entidades certificadoras (Certificate Authority)
independentes e de confiana reconhecida.

6.5.1 Certifiados Ssl Auto-Assinados


Objectivo
Para estabelecer uma ligao segura e de confiana necessrio gerar
certificados que atestem a identidade do servidor. Esses certificados so geralmente
emitidos por entidades certificadoras (Certificate Authority) independentes e de
confiana reconhecida. No entanto, para uma utilizao mais caseira e econmica,
possvel criar um certificado "auto-assinado".
Instalao
server:~# aptitude install openssl ca-certificates

123
Gerao dos certificados
A gerao de um certificado SSL requer os seguintes passos: primeiro
gerada uma chave privada; em seguida esta usada para gerar um pedido de
certificao (Certificate Signing Request (CSR)). O pedido de certificao ento
enviado para a entidade certificadora (Certificate Authority (CA)) que devolve o
certificado assinado. Este ltimo passo pode ser feito pelo prprio, gerando assim
um certificado auto-assinado (Self-signed Certificate).
Criar uma directoria de trabalho:
server:~# mkdir certs
server:~# cd certs
server:~/certs#

Chave privada
Gerar a chave privada (Private Key) encriptada:
server:~/certs# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.............++++++
......++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

Chave privada sem password


A chave privada est encriptada e protegida por uma password, o que implica
que se escreva a password cada vez que um servio necessita da chave. Como
soluo, possvel gerar uma verso da chave sem a proteo da password:
server:~/certs# openssl rsa -in server.key -out server.key.insecure
Enter pass phrase for server.key:
writing RSA key

Esta chave sem password, deve ser guardada com especial cuidado e,
nomeadamente, s deve ser acessvel pelo utilizador root:
server:~/certs# chmod 600 server.key.insecure

124

Pedido de certificao
Gerar o pedido de certificao (Certificate Signing Request). No campo
Common Name dever ser indicado o nome do servidor para o qual est a ser
gerado o certificado. Caso se pretenda um certificado para vrios servidores no
mesmo domnio pode-se usar a sintaxe *.home.lan:
server:~/certs# openssl req -new -key server.key -out client.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PT
State or Province Name (full name) [Some-State]:Portugal
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Lan
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:*.home.lan
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Certificado auto-assinado
O pedido de certificado deveria ser enviado para a entidade certificadora, que
devolveria o certificado assinado. Neste caso, ser usado para criar um certificado
auto-assinado (Self-Signed Certificate), vlido por 365 dias:
server:~/certs# openssl x509 -req -days 365 -in client.csr -signkey server.key -out client.crt
Signature ok
subject=/C=PT/ST=Portugal/O=Home Lan/CN=*.home.lan
Getting Private key

125
Enter pass phrase for server.key:

O processo de criao dos certificados est concludo. No final foram gerados


os seguintes arquivos:

arquivo

Descrio

server.key

A chave privada

server.key.insecure

A chave privada sem password

client.csr

O pedido de assinatura do certificao

client.crt

O certificado auto-assinado.

O certificado auto-assinado vlido por 365 dias. No entanto, este pode ser
renovado em qualquer altura, bastando para tal regenerar o certificado autoassinado.
Instalao da chave privada e certificado auto-assinado
Finalmente, copiar as chaves privadas para /etc/ssl/private e o certificado para
/etc/ssl/certs:
server:~/certs# cp server.key server.key.insecure /etc/ssl/private/
server:~/certs# cp client.crt /etc/ssl/certs/

O certificado auto-assinado est pronto a usar.


Sendo o certificado auto-assinado, ou seja, no estando assinado por uma
entidade certificada, a sua utilizao dar sempre origem a um aviso por parte da
aplicao cliente:

126

6.5.2 Criando Certificados SSL com OpenSSL


Certificados digitais so utilizados vastamente em diversos servios de rede,
como contineres HTTP (exemplo: Apache Web Server), servidores de e-mail
(Exim4 ou Sendmail), servidores de nomes e diretrios (LDAP), e at para assinar
arquivos e documentos digitalmente, como o faz o AutoCAD. Este tutorial mostra,
passo a passo, como criar um certificado digital, utilizando a ferramenta OpenSSL. O
certificado criado poder ser importado e utilizado em qualquer aplicativo ou servio
que suporte conexo segura ou assinatura digital.
Para executar as instrues deste tutorial, voc deve ter o openssl
previamente instalado em sua mquina (possivelmente sua distro Linux j vem com
ele) e deve ter acesso de root, pois todos os comandos devero ser executados
como root, desde o incio.
Este tutorial inspira-se num tutorial bem detalhado que pode ser encontrado
aqui.
6.5.2.1 Criando um Diretrio para o SSL
Como o procedimento que iremos realizar gera vrios arquivos e diretrios,
alguns deles sensveis e cujo acesso deve ser restrito ao root, ento convm que se
crie no sistema um diretrio para se armazenar estas informaes. Pode estar em
qualquer lugar e possuir qualquer nome, vou sugerir /var/ssl. Aps criar o diretrio,
restrinja todo o acesso de leitura, escrita e execuo dele apenas ao root, por
motivos de segurana:
mkdir /var/ssl

127
chmod 700 /var/ssl

Confira a operao:
ls -l /var/
# deve conter uma linha semelhante a esta:
drwx------ 2 root root 4096 2011-01-06 15:41 ssl

Agora acesse o diretrio. Todas as demais operaes ocorrero de dentro dele:


cd /var/ssl/

6.5.2.2 Criando Subdiretrios e Banco de Dados dos Certificados


Uma vez dentro do diretrio, vamos criar dois subdiretrios, utilizados para
armazenar os certificados e as chaves privadas:
mkdir certs private

Agora vamos criar dois pequenos arquivos textos, um contendo um nmero


seqencial (utilizado para numerar os certificados na seqncia em que sejam
criados) e outro vazio, utilizado para indexar o certificado atual:
echo '100001' > serial
touch certindex.txt

6.5.2.3 Criando um Arquivo de Configurao do OpenSSL Personalizado


O OpenSSL utiliza um arquivo de configurao em modo texto que pode ter
qualquer nome. J existe um arquivo pronto que fica em "/etc/ssl/openssl.cnf". Voc
pode modific-lo e utiliz-lo, se desejar. Por questes de padronizao, eu sugiro
que voc crie o seu prprio arquivo de configurao, incluindo nele os dados
particulares de sua empresa ou instituio que devero aparecer no certificado.
Um exemplo deste arquivo est a seguir. A minha sugesto que voc o salve
como openssl.cnf.sample. Basta digitar "vi openssl.cnf.sample", apertar "i" (de
"incluir") e colar o seguinte contedo:
----------------------------------------------------#
# OpenSSL configuration file.
#
# Establish working directory.
dir = .

128
[ ca ]
default_ca = CA_default
[ CA_default ]
serial = $dir/serial
database = $dir/certindex.txt
new_certs_dir = $dir/certs
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 365
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 1024 # Size of keys
default_keyfile = key.pem # name of generated keys
default_md = md5 # message digest algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
# Variable name Prompt string
#------------------------- ---------------------------------0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department, division)
emailAddress = Email Address

129
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
commonName = Common Name (hostname, IP, or your name)
commonName_max = 64
# Default values for the above, for consistency and less typing.
# Variable name Value
#------------------------ -----------------------------0.organizationName_default = My Company
localityName_default = My Town
stateOrProvinceName_default = State or Providence
countryName_default = US
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
-----------------------------------------------------

Agora, voc j tem um modelo do arquivo de configurao do OpenSSL. No


vamos mexer no modelo, sob pena de perder as informaes e dicas contidas nos
comentrios. Vamos ento criar o nosso arquivo personalizado a partir do modelo, e
este se chamar simplesmente openssl.cnf:
cp openssl.cnf.sample openssl.cnf

Edite
este
arquivo
e
substitua
as
informaes
da
seo
"[ req_distinguished_name ]" por informaes em conformidade com as informaes
que voc deseja mostrar no certificado. Lembre-se: evite usar acentos, smbolos,
barras, sinais, ou qualquer outro caracter especial fora os smbolos alfanumricos
padres, pois isto pode criar problemas na codificao da chave!!

130
6.5.2.4 Criando o Certificado Principal
Antes de criar chaves, voc deve criar um certificado principal (root certificate),
baseado nas configuraes informadas no arquivo de configuraes. Todo o resto do
trabalho daqui por diante ser baseado neste certificado. Assim, para criar este
certificado, digite o comando abaixo (sempre de dentro da pasta principal que
criamos, e sempre como root!):
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config
./openssl.cnf

O que significa tudo isso??


-new: indica que se criar um novo Certificate Authority (autoridade certificadora);
-days 365: a quantidade de dias em que este certificado ser vlido. Algumas
pessoas gostam de deixar o certificado principal vlido por 10 anos. Neste caso,
informe "3650";
-keyout private/cakey.pem: o local e nome do arquivo de chave que ser criado;
-out cacert.pem: o arquivo de certificado que ser criado;
-config ./openssl.cnf: o arquivo de configurao que ser utilizado como base para a
criao deste certificado.
Depois que voc der ENTER, o OpenSSL vai pedir alguns dados importantes,
iniciando por uma senha (pass phrase). No perca esta senha!! Ela vai ser
necessria mais pra frente!! As outras informaes so as mesmas do arquivo de
configurao que voc j deve ter alterado, ou seja:
- Nome da Organizao (ou companhia, empresa, instituto ou rgo);
- Unidade da Organizao (ou departamento ou seo);
- Cidade;
- Estado (ou provncia ou regio);
- Pas (na verdade, apenas as duas letras do cdigo do pas. Ex: BR para Brasil);
- O chamado Common Name, geralmente o nome de servidor (hostname) ou IP do
mesmo.
6.5.2.5 Instalando o Certificado
Apenas com o exposto voc j tem o suficiente para usar o certificado. Foram
gerados dois arquivos, a saber:
cacert.pem: o seu certificado pblico. Pode ser renomeado e distribudo para
outras pessoas ou mquinas, ou mesmo via rede. Pode ser baixado e instalado em
navegadores ou clientes de e-mail.
private/cakey.pem: um arquivo privado e no deve ser distribudo. Ao contrrio,

131
deve ficar bem guardado e seguro!! Tambm pode ser renomeado, no entanto. Este
arquivo deve ser utilizado internamente para criar as assinaturas digitais,
necessrias para acessos seguros via SSL.

6.6 Anti-vrus
Embora seja pouco provvel que um vrus afete um sistema Linux,
perfeitamente possvel que seja um vetor de transmisso atravs dos servios de
email ou servidor de arquivos, por exemplo. Por outro lado, esses mesmos servios
tambm podem integrar um anti-vrus, contribuindo para aumentar a segurana da
rede local.

6.6.1 ClamAV
Objectivo
Instalao do pacote anti-vrus ClamAV. Este pode posteriormente ser
integrado num sistema de filtragem de emails ou arquivos.
Instalao
server:~# aptitude install clamav clamav-docs clamav-daemon clamav-freshclam

Para que o ClamAV possa verificar arquivos compactados, devem ser


tambm instalados alguns pacotes para descompactar arquivos:
server:~# aptitude install arc arj bzip2 cabextract lzop nomarch p7zip pax tnef unzip zoo

Se tiver acesso aos repositrios "non-free", possvel instalar mais alguns pacotes:
server:~# aptitude install lha unrar

Configurao
A atualizao da base de dados de assinaturas de vrus descarregada da
Internet pelo daemon clamav-freshclam 24 vezes ao dia. No entanto, essa
periodicidade pode ser alterada no arquivo /etc/clamav/freshclam.conf:

132
# [...]
# Check for new database 24 times a day
Checks 24
# [...]

Caso se pretenda utilizar um servidor proxy para acessar Internet, deve-se


alterar a configurao tambm em /etc/clamav/freshclam.conf:
# [...]
#
HTTPProxyServer proxy.home.lan
HTTPProxyPort 3128

Reiniciar o servio, para ter em conta as alteraes de configurao:


server:~# /etc/init.d/clamav-freshclam restart

Aps a instalao, deve ser feita a atualizao da base de dados de


assinaturas de vrus.
server:~# freshclam
ClamAV update process started at Mon Dec 22 15:24:37 2008
main.cvd is up to date (version: 49, sigs: 437972, f-level: 35, builder: sven)
daily.cvd is up to date (version: 8792, sigs: 40698, f-level: 38, builder: mcichosz)

As futuras atualizaes sero feitas automaticamente, vrias vezes por dia.


Verificao
O instituto EICAR (European Institute for Computer Antivirus Research) tem
uma srie de arquivos para testar software anti-vrus. Um dos arquivos
(eicar.com.txt) contm apenas uma inofensiva cadeia de caracteres, mas que deve
ser reconhecida como um "vrus":
fribeiro@server:~$ echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!
$H+H*' > eicar.com.txt

Testar o funcionamento do ClamAV:

133

fribeiro@server:~$ clamscan eicar.com.txt


eicar.com.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY ----------Known viruses: 478291
Engine version: 0.94.2
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Time: 3.294 sec (0 m 3 s)

A primeira parte do resultado indica que foi detectado a assinatura do "vrus"


de teste "Eicar". Na segunda parte, o sumrio indica que foi encontrado um arquivo
"infectado".
Testar tambm o daemon clamdscan:
fribeiro@server:~$ clamdscan eicar.com.txt
/home/fribeiro/eicar.com.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY ----------Infected files: 1
Time: 0.011 sec (0 m 0 s)

NOTA:
Para deteco de vrus, podem ser utilizados os comandos clamscan e clandscan. No entanto, a segunda
forma clandscan muito mais rpida, uma vez que sendo um daemon, est j carregada em memria, ao
contrrio do comando clamscan, que deve ser lido do disco para a memria cada vez que invocado. (Ver os
tempos de execuo de um e de outro nos exemplos acima).

Finalmente, o clamAV tambm disponibiliza um pacote de testes que pode ser


utilizado aps instalao:
server:~# aptitude install clamav-testfiles
server:~# clamdscan /usr/share/clamav-testfiles/
/usr/share/clamav-testfiles//clam.exe: ClamAV-Test-File FOUND

134
/usr/share/clamav-testfiles//clam.cab: ClamAV-Test-File FOUND
/usr/share/clamav-testfiles//clam.exe.bz2: ClamAV-Test-File FOUND
/usr/share/clamav-testfiles//clam.zip: ClamAV-Test-File FOUND
----------- SCAN SUMMARY ----------Infected files: 4
Time: 0.007 sec (0 m 0 s)

6.7 Antispam
A maior parte do correio eletrnico que circula na Internet considerado
spam, ou seja, correio no solicitado.
Felizmente existem ferramentas bastante poderosas para o filtrar.

6.7.1 Spamassassin
Objectivo
Instalao do pacote anti-spam spamassassin. Este pode posteriormente ser
integrado num sistema de filtragem de emails.
Instalao
server:~# aptitude install spamassassin spamc

As capacidades do spamassassin podem ser ampliadas com a instalao de


plugins:
server:~# aptitude install razor pyzor

Configurao
A instalao por omisso no ativa o daemon spamassassin. Para que este
inicie automaticamente, deve ser alterado o arquivo /etc/default/spamassassin:

135
# /etc/default/spamassassin
# Duncan Findlay
# WARNING: please read README.spamd before using.
# There may be security risks.
# Change to one to enable spamd
ENABLED=1
# [...]

E para que as regras de filtragem sejam atualizadas diariamente:


# [...]
# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1

Reiniciar o servio:
server:~# /etc/init.d/spamassassin restart

Verificao
No site do spamassassin, existe uma mensagem de teste que pode ser
descarregada em http://spamassassin.apache.org/gtube/gtube.txt e utilizada para
verificar a instalao. Basta descarregar essa mensagem e filtrar o seu contedo:
fribeiro@server:~$ wget http://spamassassin.apache.org/gtube/gtube.txt
fribeiro@server:~$ spamc < gtube.txt
Received: from localhost by server.home.lan
with SpamAssassin (version 3.2.5);
Mon, 22 Dec 2008 17:39:22 +0000
From: Sender <sender@example.net>
To: Recipient <recipient@example.net>
Subject: Test spam mail (GTUBE)
Date: Wed, 23 Jul 2003 23:30:00 +0200

136
Message-Id: <GTUBE1.1010101@example.net>
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on server.home.lan
X-Spam-Level: **************************************************
X-Spam-Status: Yes, score=1000.0 required=5.0 tests=GTUBE,NO_RECEIVED,
NO_RELAYS autolearn=no version=3.2.5
MIME-Version: 1.0
# [...]

Os cabealhos X-Spam-Status: Yes, score=1000.0 required=5.0 indicam


claramente que a mensagem foi classificada como sendo spam e poder ser filtrada
em conformidade.

6.8 Controle de verses


Quantas vezes, ao editar um documento, no houve necessidade de
recuperar a verso anterior, mas que ficou irremediavelmente perdida aps a ltima
salvaguarda? Isso teria sido possvel se o documento estivesse num sistema de
controlo de verses.

6.8.1 Subversion
Instalao
server:~# aptitude install subversion subversion-tools

Configurao
A configurao consistem em criar uma diretoria para albergar os futuros
repositrios subversion, bem como um grupo subversion. Os utilizadores com
direitos de acesso aos repositrios sero posteriormente adicionados a esse grupo.
server:~# groupadd subversion
server:~# mkdir -p /var/lib/svn/repos

137

Repositrios
Criao de repositrios
A criao de repositrios feita com o comando svnadmin. Deve tambm ser
feita a atribuio dos direitos de acesso:
server:~# svnadmin create --fs-type fsfs /var/lib/svn/repos/test_project
server:~# chown -R www-data:subversion /var/lib/svn/repos
server:~# chmod -R 770 /var/lib/svn/repos

Adicionar utilizadores
Finalmente, adiciona-se ao grupo subversion os utilizadores com direitos de acesso
aos repositrios:
server:~# addgroup fribeiro subversion
Adding user `fribeiro' to group `subversion' ...
Done.

Verificao
Como utilizador normal, com direitos de acesso aos repositrios, efetuar uma
consulta simples:
fribeiro@server:~$ svn log file:///var/lib/svn/repos/test_project
------------------------------------------------------------------------

Clientes SVN
TortoiseSVN
Um cliente svn para Windows o TortoiseSVN. possvel acessar aos
repositrios usando o protocolo "svn+ssh://":

138

6.8.2 Subversion via http(s)


Objectivo
Por vezes mais prtico acessar a um repositrio svn atravs do protocolo
https, podendo assim ser utilizado um simples browser com cliente svn.
NOTA:
A configurao do servidor svn via https depende da instalao prvia de um servidor http com suporte para
ligaes seguras, como o Apache2 + Ssl.

Instalao
A instalao do pacote libapache2-svn fornece o mdulo dav_svn para que o
apache posa funcionar com servidor svn via https:
server:~# aptitude install libapache2-svn

139

Configurao
A configurao dever ser indicada a URL do repositrio, a localizao dos
repositrios no sistema, e o tipo de acesso permitido.
A
configurao
available/dav_svn.conf.

mantida

no

# <Location URL> ... </Location>


# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
<Location /svn>
# Uncomment this to enable the repository
DAV svn
# Set this to the path to your repository
#SVNPath /var/lib/svn
# Alternatively, use SVNParentPath if you have multiple repositories under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
# You need either SVNPath and SVNParentPath, but not both.
SVNParentPath /var/lib/svn/repos
# [...]
# Basic Authentication is repository-wide. It is not secure unless
# you are using https. See the 'htpasswd' command to create and
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
# [...]
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'

arquivo/etc/apache2/mods-

140
# module (enable it with 'a2enmod').
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>

Esta configurao restringe os acessos apenas a utilizadores autenticados.


Opcionalmente, pode-se permitir o acesso annimo em consulta, abrindo excepes
para a operaes GET PROPFIND OPTIONS REPORT:
# [...]
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
# [...]

Criao de utilizadores
Antes de poder acessar ao servidor subversion, devero ser definidos os
utilizadores e respectivas palavras-passe, que sero guardadas no arquivo
/etc/apache2/dav_svn.passwd.
Ao criar o primeiro utilizador dever ser criado o arquivo, o que conseguido com a
opo -c:
server:~# htpasswd -c /etc/apache2/dav_svn.passwd fribeiro
New password:
Re-type new password:
Adding password for user fribeiro

Para adicionar os utilizadores seguintes:


server:~# htpasswd /etc/apache2/dav_svn.passwd user2
New password:

141
Re-type new password:
Adding password for user user2

Reiniciar o servidor apache2:


server:~# /etc/init.d/apache2 restart

Verificao
Num browser inserir a URL de um repositrio:

O repositrio estar tambm acessvel a partir de um cliente svn que suporte


o protocolo https, como por exemplo o TortoiseSVN.

6.9 Compartilhamento de Pastas


Uma das funes mais importantes de um servidor a possibilidade de
armazenar arquivos, permitindo a sua partilha e acesso de um modo controlado.

6.9.1 Samba
Objectivo
A instalao de um servidor samba permite, entre outras funcionalidades, a

142
partilha de arquivos com sistemas Windows.
Instalao
server:~# aptitude install samba

Durante a instalao ser solicitado o nome do grupo de trabalho ou domnio


a que o servidor pertence:

Configurao
Toda a configurao
/etc/samba/smb.conf.

do

servio

samba

Configurao global
# [...]
#======================= Global Settings =======================
[global]
## Browsing/Identification ###

feita

no

arquivo

143
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = home
# server string is the equivalent of the NT Description field
server string = %h server
# [...]

Segurana
Por segurana, possvel limitar o acesso ao servidor samba a apenas
alguns segmentos da rede. Assim, para garantir que o servidor de arquivos s estar
disponvel para a rede local, so listadas as interfaces de rede do prprio sistema
(lo) e da rede local (eth0), instruindo o servio a aceitar ligaes apenas por essas
interfaces:
#### Networking ####
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 127.0.0.0/8 192.168.1.0/24
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = true

Deste modo, o servio samba s aceitar ligaes do prprio servidor (lo) ou


atravs da interface de rede eth0.
Partilha por utilizador
A configurao por omisso do samba partilha toda a estrutura de diretoria
/home de cada utilizador. Isto significa que todos os arquivos, tais como os arquivos
de configurao e os arquivos do diretorio Maildir (onde esto todas as mensagens
de email) estariam tambm partilhados, o que no desejvel. Por isso ser criada
um diretrio exclusivamente para as partilhas samba dentro do home de cada
utilizador. Para que a diretrio seja criada automaticamente quando for criado um
novo utilizador, adicionado em /etc/skel, com direitos de acesso exclusivos para

144
prprio utilizador:
server:~# mkdir /etc/skel/Documents; chmod 0700 /etc/skel/Documents

No entanto, o diretrio de partilha dever ser criada para cada utilizador j


existente:
server:~# su - fribeiro -c 'mkdir ~/Documents; chmod 0700 ~/Documents'

Em seguida so definidos os parmetros das partilhas dos utilizadores,


indicando o caminho para o diretorio das partilhas individuais e permitindo o acesso
em escrita:
# [...]
#======================= Share Definitions =======================
[homes]
comment = Home Directories
path = /home/%S/Documents
browseable = no
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
read only = no
# [...]

Criao de utilizadores
Devero tambm ser criados os utilizadores e atribudas as respectivas
senhas na base de dados dos utilizadores do samba:
server:~# smbpasswd -a fribeiro
New SMB password:
Retype new SMB password:

Partilhas comuns
possvel definir tambm partilhas acessveis a todos os utilizadores, criando

145
um espao comum de troca e armazenamento de arquivos. Em primeiro lugar deve
ser criada uma diretrio para o armazenamento de arquivo. Essa diretrio dever ter
direitos de acesso limitados ao utilizador e um grupo chamado nogroup:
server:~# mkdir -p /home/common/public
server:~# chgrp nogroup /home/common/public
server:~# chmod 0770 /home/common/public

Em seguida, dever ser definida a partilha no arquivo de configurao do


samba, em que definido o caminho para a diretrio de partilha, e que a mscara de
criao de arquivos e diretrios permitir o acesso aos prprios utilizadores e ao
grupo nogroup. Finalmente forada a criao de arquivos no grupo nogroup para
que os utilizadores possam acessar sem restries a todos os arquivos. Todas as
alteraes so feitas no arquivo /etc/samba/smb.conf:
# [...]
### public share ###
[public]
comment = Public Share
path = /home/common/public
public = yes
browseable = yes
writable = yes
create mask = 0770
directory mask = 0770
force group = nogroup

Validao da configurao
A sintaxe do arquivo de configurao deve ser verificada:
server:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE

146
Press enter to see a dump of your service definitions
# [...]

Finalmente, reiniciar o servio:


server:~# /etc/init.d/samba restart

Verificao
Num PC da rede local dever ser possvel acessar partilha de arquivos do
servidor:

E o resultado final ser:

147

148

7 Servidor Internet
7.1 Servidor HTTP

7.1.1 Apache2
Instalao
server:~# aptitude install apache2 apache2-doc

Verificao
Num browser, inserir o endereo do servidor (http://192.168.1.100):

7.1.2 Apache2 + Ssl


Objectivo
A adio do suporte ssl ao servidor web permite o restabelecimento de
ligao seguras e encriptadas entre o servidor e o cliente. Deste modo, possvel
trocar passwords, com a certeza que esta no ser capturada por terceiros.
assim possvel usar as ligaes seguras como base para a implementao
de outros servios como, por exemplo, um servio webmail.
Configurao
Durante a instalao do apache2 criada uma configurao para acesso
seguro (https). No entanto, esta configurao dever ser alterada para incluir os

149
certificados auto-assinados gerados previamente.
A configurao guardada no arquivo /etc/apache2/sites-available/default-ssl:
# [...]
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile

/etc/ssl/certs/server.crt

SSLCertificateKeyFile /etc/ssl/private/server.key.insecure
# [...]

Em seguida, deve ser ativado o mdulo ssl:


server:# 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!

E o novo site tambm deve ser ativado:


server:# a2ensite default-ssl
Enabling site default-ssl.
Run '/etc/init.d/apache2 reload' to activate new configuration!

Finalmente, reiniciar o servio:


server:~# /etc/init.d/apache2 restart

150
Verificao
Num browser, inserir o endereo do servidor (https://192.168.1.100). Aps o
aviso sobre o certificado auto assinado, dever aparecer uma pgina:

O Firefox alertar para a existncia de um certificado auto-assinado que,


obviamente, no poder atestar. Para evitar este alerta no futuro, basta adicionar o
certificado lista de excepes do Firefox.

7.1.3 Apache2 + Php5


Objectivo
Expandir a funcionalidade do servidor Internet, ativando o suporte php.
Instalao
server:~# aptitude install php5 libapache2-mod-php5

151
Reiniciar o servidor apache:
server:~# /etc/init.d/apache2 restart

Verificao
Para verificar a instalao do suporte php, basta criar uma pgina Internet que
mostre as caractersticas da instalao php. Neste caso, iremos criar uma pgina em
/var/www/phpinfo.php:
<?php
phpinfo();
?>

Em seguida, tentar acessar pgina, utilizando um browser e inserindo o


endereo http://192.168.1.100/phpinfo.php:

Poder tambm ser testado o acesso seguro via protocolo https da mesma
maneira, utilizando o endereo https://192.168.1.100/phpinfo.php.
Uma vez testado o funcionamento, dever ser apagada a pgina de testes,
dado que as informaes nela contidas poderiam comprometer a segurana do
servidor:

152
server:~# rm /var/www/phpinfo.php

7.1.4 Apache2 + Php5 + Mysql


Objectivo
Expandir a funcionalidade do servidor Internet, ativando o suporte mySQL do
php.
Instalao
server:~# aptitude install php5-mysql

Reiniciar o servidor apache:


server:~# /etc/init.d/apache2 restart

Verificao
Para verificar a instalao do suporte mySQL do php, basta criar uma pgina
Internet que mostre as caractersticas da instalao php. Neste caso, iremos criar
uma pgina em /var/www/phpinfo.php:
<?php
phpinfo();
?>

Em seguida, tentar acessar pgina, utilizando um browser e inserindo o


endereo http://192.168.1.100/phpinfo.php. As informaes sobre o controlador
mysql devem aparecer:

153

O controlador mysqli tambm dever estar disponvel:

Uma vez testado o funcionamento, dever ser apagada a pgina de testes,


dado que as informaes nela contidas poderiam comprometer a segurana do
servidor:
server:~# rm /var/www/phpinfo.php

7.1.5 Apache2: Pginas pessoais


Objectivo
Oferecer a cada utilizador a possibilidade de criar pginas Internet pessoais.

154
Configurao
Uma vez a instalao do servidor http concluda, a configurao do suporte
para pginas pessoais consiste na ativao do mdulo userdir do servidor apache2:
server:~# a2enmod userdir
Enabling module userdir.
Run '/etc/init.d/apache2 restart' to activate new configuration!

E reiniciar o servidor apache2:


server:~# /etc/init.d/apache2 restart

O suporte para pginas pessoais no servidor http est ativado.


Utilizao
As pginas pessoais so acessveis atravs de um endereo do gnerico
"http://servidor/~utilizador". Quando o servidor recebe um pedido deste gnero, tenta
encontrar servir o contedo de uma diretoria especfico chamada public_html na
home do utilizador. Portanto, para que cada utilizador possa criar as suas pginas
deve, antes de mais, criar uma diretoria chamada "public_html" na sua home, onde
colocar os contedos.
fribeiro@server:~$ mkdir ~/public_html

Uma vez criada a diretoria, o utilizador pode comear a criar contedos.


Verificao
Utilizando um navegador, insira uma url que aponte para as pginas pessoais
de um utilizador:

155

NOTA:
Os espaos pessoais "herdam" todas as potencialidades do stio principal, ou seja, o utilizador tem ativado o
suporte para php, as ligaes seguras, acesso base de dados mySQL, etc.

7.2 Webmail
Uma interface webmail possibilita a consulta do correio eletrnico a partir de
qualquer sistema, recorrendo apenas a um navegador, sem que seja necessria a
instalao e configurao de um cliente de email.

7.2.1 Squirrelmail
Instalao
server:~# aptitude install squirrelmail

Configurao
A instalao do squirrelmail cria um arquivo de configurao para integrar com
o servidor apache2. Este arquivo deve ser disponibilizado no diretorio sites-available
da configurao do apache2:
server:~# ln -sf /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail

Forar ligaes seguras


Caso o servidor apache2 permita ligaes seguras, possvel forar a sua
utilizao. Fica assim reforada a segurana no acesso ao servidor webmail.
Em primeiro lugar, deve ser ativado o mdulo rewrite do apache. Este mdulo
permite re-escrever um endereo Internet (URL):
server:~# a2enmod rewrite

Em seguida, a configurao do apache deve ser alterada, para que passe a


utilizar uma ligao segura (protocolo https) sempre que algum tentar acessar
interface webmail. A alterao feita no arquivo de configurao /etc/apache2/sitesavailable/squirrelmail:

156

# [...]
# redirect to https when available (thanks omen@descolada.dartmouth.edu)
#
# Note: There are multiple ways to do this, and which one is suitable for
# your site's configuration depends. Consult the apache documentation if
# you're unsure, as this example might not work everywhere.
#
<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /squirrelmail>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

Este novo site deve ser ativado:


server:~# a2ensite squirrelmail

Por fim, reiniciar o servio apache2:


server:~# /etc/init.d/apache2 restart

Verificao
Utilizando um navegador, insira o endereo se acesso interface webmail
http://192.168.1.100/squirrelmail. Se o pacote squirrelmail-secure-login foi instalado,
a
ligao
dever
ser
redirecionada
para
uma
ligao
segura
(https://192.168.1.100/squirrelmail):

157

NOTA:
O squirrelmail uma interface de webmail muito poderosa e muito configurvel. possvel, por exemplo,
expandir as funcionalidades recorrendo a "plugins", que suportam calendrios, livros de endereos, filtros de
mensagens, e muito mais. Para personalizar o squirrelmail pode ser utilizado o comando squirrelmailconfigure.

7.2.2 Roundcube
Instalao
O pacote rouncube pode utilizar vrios tipos de bases de dados como
backend. Pela facilidade de configurao iremos optar pelo motor de base de dados
sqlite:
root@server:~# aptitude install rouncube-sqlite

Em seguida, instalamos o pacote principal:


root@server:~# aptitude install roundcube

Durante esta fase, sero pedidas informaes para configurao da base de dados:

158

O tipo de base de dados a escolher ser sqlite:

Configurao
A instalao do rouncube cria automaticamente um arquivo de configurao
para integrar com o servidor apache2. No entanto, por segurana, a configurao
no ativada automaticamente. Para a ativar dever editar-se o arquivo de
configurao que se encontra em /etc/apache2/conf.d/roundcube:
# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration

159
Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
[...]

O roundcube permite definir um servidor IMAP por omisso. Assim, no ter


que preencher o campo servidor sempre que se efectua o login. Para activar o
servidor de IMAP por omisso, editar o arquivo /etc/roundcube/main.inc.php. Neste
caso o servidor IMAP corre localmente no prprio servidor web, portanto no
localhost:
[...]
// the mail host chosen to perform the log-in
// leave blank to show a textbox at login, give a list of hosts
// to display a pulldown menu or set one host as string.
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
$rcmail_config['default_host'] = 'localhost';
[...]

Forar ligaes seguras


Se o servidor web suportar ligaes seguras, possvel forar ligaes
seguras ao servidor webmail, de modo a proteger passwords e demais informaes.
Primeiro verificar que o mdulo de re-escrita do apache2 est activado:
root@server:~# a2enmod rewrite

Em seguida editar o arquivo /etc/apache2/conf.d/roundcube e acrescentar no


final as instrues para substituir a parte http por https na URL:
[...]
# redirect to https when available (thanks omen@descolada.dartmouth.edu)
#
# Note: There are multiple ways to do this, and which one is suitable for
# your site's configuration depends. Consult the apache documentation if
# you're unsure, as this example might not work everywhere.

160
#
<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /roundcube>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

Por fim, reiniciar o servio apache2:


root@server:~# /etc/init.d/apache2 restart

Verificao
Utilizando um navegador, insira o endereo de acesso interface webmail
http://192.168.1.100/roundcube:

A pgina inicial do roundcube dever aparecer e, caso se tenha optado por


foras ligaes seguras, o endereo dever comear por https.

7.3 WebDAV
O protocolo WebDAV (Web-based Distributed Authoring and Versioning, ou

161
Criao e Distribuio de Contedo via Web) uma extenso do protocolo HTTP
que suporta escrita e permite criar ou modificar arquivos num servidor web. Isto
possibilita no s a criao e/ou atualizao de contedos de stios web de uma
forma bastante facilitada, mas tambm outras aplicaes, tais como criao de
calendrios partilhados, centralizao dos favoritos do Firefox ou at acessar a
documentos hospedados no servidor diretamente a partir do Explorador do MS
Windows, usando a funo "Pastas Partilhadas".

7.3.1 Servidor WebDAV


Instalao
Todos os mdulos do apache2 necessrios j foram instalados durante a
instalao do Servidor Apache2.
Configurao
O acesso rea webdav dever ser limitado a utilizadores autorizados. Para
tal ser definida no servidor web uma localizao /webdav protegida, o que
conseguido no arquivo /etc/apache2/sites-available/webdav:
Alias /webdav /var/www/webdav
<Location /webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/webdav.passwd
Require valid-user
</Location>

O mdulo dav_fs deve estar ativo:


server:~# a2enmod dav_fs

O mdulo de autenticao auth_digest tambm deve estar ativo:


server:~# a2enmod auth_digest

Dever ser criado o arquivo de autorizaes para o recurso webdav, com os

162
utilizadores e respectivas senhas:
server:~# htdigest -c /etc/apache2/webdav.passwd webdav fribeiro
Adding password for fribeiro in realm webdav.
New password:
Re-type new password:

A opo -c cria o arquivo de novo. Para acrescentar outro utilizador, esta


opo deve ser omitida.
O diretrio dever tambm ser criada no sistema de arquivos do servidor, com
os direitos de acesso corretos:
server:~# mkdir /var/www/webdav
server:~# chgrp www-data /var/www/webdav
server:~# chmod g+w /var/www/webdav

O novo site dever ser ativado:


server:~# a2ensite webdav
Enabling site webdav.
Run '/etc/init.d/apache2 reload' to activate new configuration!

E finalmente a nova configurao do servidor apache2 dever ser carregada:


server:~# /etc/init.d/apache2 reload

Verificao
Para testar a configurao, basta aceder ao servidor webdav com um cliente
webdav, como o cadaver. O cliente poder ter que ser instalado primeiro:
server:~# aptitude install cadaver

Acessar zona webdav do servidor:


server:~# cadaver http://server.home.lan/webdav
Authentication required for webdav on server `server.home.lan':

163
Username: fribeiro
Password:
dav:/webdav/> quit
Connection to `server.home.lan' closed.

O servidor est pronto para guarda um arquivo de calendrio


(http://www.mozilla.org/projects/calendar/faq.html#remote_server) ou sincronizar os
favoritos do firefox (https://addons.mozilla.org/en-US/firefox/addon/8426) ou ainda
acessar ao servidor webdav diretamente do explorador do Windows
(http://www.talkbroadband.com/articles/13/2/How-to-use-Microsoft-WebFolderswithin-Windows-XP).

7.4 Servidor FTP


Um servidor FTP permite o compartilhamento de arquivos de um modo
bastante simples. o sistema ideal para a armazenar arquivos que so
posteriormente acessados em leitura como, por exemplo, arquivos de msica, vdeo,
drivers de hardware, etc.
Alm disso, quando configurado com suporte TLS/SSL, pode ser acessado do
exterior de uma forma segura.

7.4.1 ProFTPD
Objectivo
Configurar um servidor ftp para uso na rede interna.
NOTA:
O protocolo ftp um protocolo considerado inseguro, uma vez que os nomes de utilizadores e senhas so
transmitidas em texto simples, sem qualquer tipo de proteo, pelo que so facilmente capturadas por terceiros.
Por este motivo, o servidor ftp deve ser utilizador apenas dentro do ambiente relativamente seguro de uma rede
interna. Caso se pretenda utilizar um servidor ftp de modo seguro deve ser adicionado o suporte para TLS (Ver:
Proftpd + TLS/SSL)

Instalao
server:~# aptitude install proftpd proftpd-doc

164
Durante a instalao, deve ser selecionado o modo de funcionamento
"standalone":

Configurao
Toda
a
configurao
/etc/proftpd/proftpd.conf.

do

ProFTPD

guardada

no

ficheiro

A instalao por omisso ativa o suporte IPV6 do ProFTPD. Como o nosso


servidor apenas suporta IPV4, o IPV6 deve ser desligado, para evitar mensagens de
erro durante o arranque do servio.
#[...]
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6

off

#[...]

Verificar que o servidor est configurado como standalone:


#[...]
ServerName

"Debian"

ServerType

standalone

DeferWelcome

off

165
#[...]

Finalmente, reiniciar o servidor ftp:


server:~# /etc/init.d/proftpd restart

Opo de segurana: Restrio de acessos


Na configurao por omisso, o servidor ProFTPD permite que o utilizador
navegue por todo o sistema de arquivos a que normalmente tem acesso. No
entanto, o ProFTPD permite restringir o acesso a apenas uma determinada diretorio.
Deste modo, o cliente fica confinado, no podendo acessar a qualquer outro recurso
fora desse mbito, o que constitui uma opo bastante segura.
No arquivo de configurao do ProFTPD, o parmetro DefaultRoot dever
indicar a diretoria destinada a ser acessado via ftp.
Acesso restrito home do utilizador
Para restringir o acesso via ftp apenas diretorio home de cada utilizador,
basta indicar ~ como DefaultRoot no arquivo /etc/proftpd/proftpd.conf:
#[...]
DefaultRoot

#[...]

Acesso restrito um diretoria especfico


Para restringir o acesso via ftp a uma directoria especfica na home de cada
utilizador do utilizador, necessrio primeiro criar o respectivo diretoria, e em
seguida alterar a configurao do servidor no ficheiro /etc/proftpd/proftpd.conf:
#[...]
DefaultRoot

~/ftp

#[...]

Em seguida, cada utilizador que pretenda acessar via ftp, deve criar uma
diretoria chamada ftp, na sua home:
fribeiro@server:~$ mkdir ~/ftp

166
Por ltimo, reiniciar o servio ftp para ativar as alteraes:
server:~# /etc/init.d/proftpd restart

Utilizao
O servidor ftp pode ser acedido atravs de um simples browser ou utilizando
um cliente ftp, como o Filezilla:

Em ambos os casos o acesso s ser permitido, mediante a introduo de um


nome de utilizador e senha vlidos.

7.4.2 Acesso ftp annimo


Objectivo
O pacote ProFTPD pode ser configurado de modo a permitir o acesso a
utilizadores annimos a uma rea restrita. Para evitar utilizaes abusivas, o acesso
annimo deve apenas permitir o acesso em leitura, proibindo qualquer escrita na
rea annima.
Tambm por segurana, o acesso ser tambm confinado diretorio home do
ProFTPD, situada em /home/ftp.

167

Configurao
A configurao consiste
/etc/proftpd/proftpd.conf:

em

ativar

seo

# A basic anonymous configuration, no upload directories.


<Anonymous ~ftp>
User

ftp

Group

nogroup

# We want clients to be able to login with "anonymous" as well as "ftp"


UserAlias

anonymous ftp

# Cosmetic changes, all files belongs to ftp user


DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell

off

# Limit the maximum number of anonymous logins


MaxClients

10

# We want 'welcome.msg' displayed at login, and '.message' displayed


# in each newly chdired directory.
DisplayLogin
DisplayChdir

welcome.msg
.message

# Limit WRITE everywhere in the anonymous chroot


<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Uncomment this if you're brave.
# <Directory incoming>
# # Umask 022 is a good standard umask to prevent new files and dirs
# # (second parm) from being group and world writable.
# Umask

022 022

Anonymous

do

ficheiro

168
#

<Limit READ WRITE>

DenyAll

</Limit>

<Limit STOR>

AllowAll

</Limit>

# </Directory>
</Anonymous>

No final, reiniciar o servio ftp para ativar as alteraes:


server:~# /etc/init.d/proftpd restart

Utilizao
O servidor ftp pode ser acessado atravs de um simples browser ou utilizando
um cliente ftp, como o Filezilla:

169

7.4.3 Proftpd + TLS/SSL


Objectivo
O protocolo ftp um protocolo inseguro, uma vez que transmite todos os
dados (incluindo os nomes de utilizadores e respectivas senhas) em modo de texto,
podendo ser facilmente interceptados e capturados por terceiros.
No entanto o servidor ProFTPD pode ser configurado de modo a exigir a
autenticao dos utilizadores e a encriptao de dados, se for ativado o suporte TLS
(Transport Layer Security).
Configurao
Na configurao por omisso do ProFTPD (ver 3.10.1. ProFTPD), o suporte
TLS (mod_tls.c) est desativado.
A ativao feita em duas fases: Em primeiro ligar dever ser configurado o
mdulo TLS no arquivo de configurao /etc/proftpd/tls.conf e em seguida incluir esta
configurao no arquivo de configurao principal /etc/proftpd/proftpd.conf.
A configurao do mdulo TLS feita no arquivo /etc/proftpd/tls.conf:
# [...]
<IfModule mod_tls.c>
TLSEngine
TLSLog

on
/var/log/proftpd/tls.log

TLSProtocol

SSLv23

# [...]
# Server SSL certificate. # [...]
# [...]
TLSRSACertificateFile

/etc/ssl/certs/server.crt

TLSRSACertificateKeyFile

/etc/ssl/private/server.key.insecure

# [...]
# Are clients required to use FTP over TLS when talking to this server?
#
TLSRequired

on

170
# [...]

Os
certificados
usados
em
TLSRSACertificateFile
e
TLSRSACertificateKeyFile foram gerados anteriormente, em 6.5. Certificados Ssl. A
opo TLSRequired on obriga a que os clientes ftp usem o protocolo TLS, caso
contrrio no aceitar ligaes. Se esta opo for desligada (TLSRequired off), o
servidor aceitar ligaes seguras e no seguras.
Em seguida esta configurao dever ser includa no arquivo de configurao
principal /etc/proftpd/proftpd.conf:
# [...]
#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
# [...]

Por ltimo, reiniciar o servio ftp para ativar as alteraes:


server:~# /etc/init.d/proftpd restart

Utilizao
O servidor ftp com suporte TLS pode ser acessado atravs de um cliente ftp
que suporte o protocolo TLS, como o Filezilla. Dever ser indicado pretendemos
uma ligao ao servidor ftp explicitamente sobre TLS:

171

Imediatamente aps o estabelecimento da ligao mostrado o certificado


utilizado, sendo pedida a confirmao que confivel:
Aps

172
aceitao do certificado, todas as comunicaes cliente/servidor sero encriptadas e
seguras.
NOTA:
Caso o servidor ftp permita o acesso annimo, este continua ativo, ou seja, continuam a ser permitidas
sesses annimas, ainda que a troca de dados se faa de modo encriptado. Para garantir que apenas utilizadores
autorizados possam acessar ao servidor ftp o acesso annimo deve ser desactivado.

173

REFERNCIAS
Wikipedia: Ataque de negao de servio: http://pt.wikipedia.org/wiki/Ataque_de_negao_de_servio

Aptitude vs Apt-Get http://pthree.org/2007/08/12/aptitude-vs-apt-get

Como usar o APT http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html

Como usar o APT, 2.1 O arquivo /etc/apt/sources.list http://www.debian.org/doc/manuals/apt-howto/ch-basico.pt-br.html#ssources.list

Debian Backports http://www.backports.org

Debian GNU/Linux System Administrator's Manual, Chapter 16 Time http://www.debian.org/doc/manuals/systemadministrator/ch-sysadmin-time.html

Debian Reference, Chapter 6 - Debian package management http://www.debian.org/doc/manuals/reference/ch-package.en.html

Debian Wiki: TimeZoneChanges http://wiki.debian.org/TimeZoneChanges

Debianhelp.co.uk: Ethernet Bonding Configuration in Debian: http://www.debianhelp.co.uk/bonding.htm

Fail2Ban: http://www.fail2ban.org/wiki/index.php/Main_Page

GNU nano http://www.nano-editor.org/

Guia de Instalao de Debian GNU/Linux (html) http://www.debian.org/releases/stable/i386/index.html.pt

Guia de Instalao de Debian GNU/Linux (pdf) http://www.debian.org/releases/stable/i386/install.pdf.pt

Guia de Instalao de Debian GNU/Linux: 3.6. Pr-Instalao do Hardware e Configurao do Sistema Operativo
http://www.debian.org/releases/stable/i386/ch03s06.html.pt

Guia Foca GNU/Linux, Captulo 15 - Servidor ssh http://focalinux.cipsga.org.br/guia/avancado/ch-s-ssh.html


Logwatch http://www.logwatch.org

Managing Accurate Date and Time http://www.tldp.org/HOWTO/TimePrecision-HOWTO/index.html

Managing Accurate Date and Time http://www.tldp.org/HOWTO/TimePrecision-HOWTO/index.html

174
MuninExchange: http://muninexchange.projects.linpro.no/

NTP: The Network Time Protocol http://www.ntp.org/

OpenSSH http://www.openssh.com/

Projecto Munin: http://munin.projects.linpro.no/

Referncia Debian, 10.3 Nomeando o computador http://www.debian.org/doc/manuals/reference/ch-gateway.pt-br.html#s-netname

Referncia Debian, 10.6.1 Configurando uma interface com um endereo IP esttico


http://www.debian.org/doc/manuals/reference/ch-gateway.pt-br.html#s-high-static

Referncia Debian, 10.6.6 Configurando mltiplas interfaces Ethernet para um gateway


http://www.debian.org/doc/manuals/reference/ch-gateway.pt-br.html#s-high-virtual

Referncia Debian, 6 - Gerenciamento de pacotes Debian - 6.2.4 aptitude http://www.debian.org/doc/manuals/reference/chpackage.pt-br.html#s-aptitude

Referncia Debian, 6 - Gerenciamento de pacotes Debian http://www.debian.org/doc/manuals/reference/ch-package.pt-br.html

Referncia Debian, 8.6.4 Definir a hora (NTP) http://www.debian.org/doc/manuals/reference/ch-tips.pt-br.html#s8.6.4

Referncia Debian, 8.6.4 Definir a hora (NTP) http://www.debian.org/doc/manuals/reference/ch-tips.pt-br.html#s8.6.4

Referncia Debian, 9.5 SSH http://www.debian.org/doc/manuals/reference/ch-tune.pt-br.html#s-ssh

Referncia Debian, Captulo 10 - Configurao de rede http://www.debian.org/doc/manuals/reference/ch-gateway.pt-br.html

Securing Debian Manual, 5.1 Securing ssh http://www.debian.org/doc/manuals/securing-debian-howto/ch-secservices.en.html#s5.1

Servidor debian Lenny: Data e hora: http://servidorlenny.wikidot.com/relogio-data

The debian-volatile Project http://www.debian.org/volatile

The Rootkit Hunter project http://rkhunter.sourceforge.net/

VMWare Player http://www.vmware.com/products/player/

175

VMWare Server http://www.vmware.com/products/server/

Wikipedia: Ataque de negao de servio: http://pt.wikipedia.org/wiki/Ataque_de_negao_de_servio

Wikipedia: Brute force attack: http://en.wikipedia.org/wiki/Brute_force_attack

Wikipedia: Brute force attack: http://en.wikipedia.org/wiki/Brute_force_attack

Wikipedia: Denial-of-service attack: http://en.wikipedia.org/wiki/Denial-of-service_attack

Wikipedia: Rootkit (pt) http://pt.wikipedia.org/wiki/Rootkit


ISC Bind http://www.isc.org/sw/bind/
Wikipedia (pt): DNS http://pt.wikipedia.org/wiki/Dns
ISC Bind http://www.isc.org/sw/bind/
Wikipedia: DNS http://pt.wikipedia.org/wiki/Dns
Linux Home Networking: Quick HOWTO: Ch18 Configuring DNS
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch18_:_Configuring_DNS
DNS Howto, 3. A resolving, caching name server http://langfeldt.net/DNS-HOWTO/BIND-9/DNS-HOWTO-3.html
Securing Debian Manual http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html#s-sec-bind
OpenDNS http://www.opendns.com/.
DNS Howto, 5. A simple domain http://tldp.org/HOWTO/DNS-HOWTO-5.html
Debian Clusters, Name Service: DNS and BIND: http://debianclusters.cs.uni.edu/index.php/Name_Service:_DNS_and_BIND
ddclient http://ddclient.sourceforge.net
DynDNS http://www.dyndns.com
DynDNS: Using ddclient With DynDNS.com Services
http://www.dyndns.com/support/kb/using_ddclient_with_dyndns_services.html
ISC DHCP http://www.isc.org/index.pl?/sw/dhcp/
Wikipedia: DHCP http://pt.wikipedia.org/wiki/Dns
Wikipedia: Proxy http://pt.wikipedia.org/wiki/Proxy

176
Wikipedia: Cache http://pt.wikipedia.org/wiki/Cache
Squid Web Proxy Cache http://www.squid-cache.org/
DansGuardian http://dansguardian.org/
DansGuardian Documentation Wiki http://contentfilter.futuragts.com/wiki/doku.php
EICAR http://www.eicar.org/
MySQL http://www.mysql.com/
Wikipedia: Autenticao http://pt.wikipedia.org/wiki/Autenticao
Wikipedia: Certificate Authority http://en.wikipedia.org/wiki/Certificate_authority
OpenSSL http://www.openssl.org/
Wikipedia: OpenSSL http://pt.wikipedia.org/wiki/Openssl
Wikipedia: Autenticao http://pt.wikipedia.org/wiki/Autenticao
Wikipedia: Certificate Authority http://en.wikipedia.org/wiki/Certificate_authority
Wikipedia: TLS http://pt.wikipedia.org/wiki/Tls
Wikipedia: TLS http://en.wikipedia.org/wiki/Transport_Layer_Security
How to create a self-signed SSL Certificate http://www.akadia.com/services/ssh_test_certificate.html
ClamAV http://www.clamav.net/
EICAR http://www.eicar.org/
Wikipedia (pt): Spam http://pt.wikipedia.org/wiki/Spam
The Apache SpamAssassin Project http://spamassassin.apache.org/index.html
GTUBE the Generic Test for Unsolicited Bulk Email http://spamassassin.apache.org/gtube/
Subversion http://subversion.tigris.org/
Version Control with Subversion http://svnbook.red-bean.com/
Wikipedia: Revision control http://en.wikipedia.org/wiki/Revision_control
HowtoForge: Setting up Subversion and websvn on Debian http://www.howtoforge.com/debian_subversion_websvn
TortoiseSVN http://tortoisesvn.tigris.org/

177
Samba http://www.samba.org
Samba Documentation: http://www.samba.org/samba/docs
Wikipedia: Samba http://pt.wikipedia.org/wiki/Samba_%28servidor%29
The Apache HTTP Server Project http://httpd.apache.org/
Wikipedia: Servidor Apache http://pt.wikipedia.org/wiki/Servidor_Apache
Apache 2.2 Documentation http://httpd.apache.org/docs/2.2
Debian Administration: Setting up an SSL server with Apache2 http://www.debian-administration.org/articles/349
Apache 2.2 Documentation: SSL/TLS Strong Encryption: FAQ http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html
Wikipedia: php http://pt.wikipedia.org/wiki/Php
PHP: Hypertext Preprocessor http://www.php.net
Wikipedia: MySQL http://pt.wikipedia.org/wiki/Mysql
MySQL http://www.mysql.com
MySQL 5.0 Reference Manual http://dev.mysql.com/doc/refman/5.0/en/index.html
Squirrelmail: http://www.squirrelmail.org
Roundcube: http://roundcube.net/
Sunbird WebDAV Calendar Publishing http://www.venuecom.com/help/hosting/WebDAV/Sunbird_Publishing
SyncPlaces Firefox extension http://www.andyhalford.com/syncplaces/index.html#description
My Docs Online - Using Web Folders and WebDAV http://www.mydocsonline.com/info_webfolders.html
WebDAV Resources http://webdav.org
Wikipedia: WebDAV: http://en.wikipedia.org/wiki/WebDAV
Debian Administration - WebDAV on Apache2: http://www.debian-administration.org/articles/285
The ProFTPD Project: http://www.proftpd.org/

You might also like