Rio de Janeiro
Agosto / 2011
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
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
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.
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.
8
Seleccionada a regio:
E finalmente o pas:
9
Escolher tambm o tipo de teclado utilizado:
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.
11
12
Indicar o gateway ou aceitar o sugerido:
13
14
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.
/
(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.
17
18
E, finalmente, instalado o kernel linux:
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:
20
E confirmar a password:
21
22
seguida, escolher o mirror mais prximo:
23
24
25
26
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.
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
* com o vim:
server:~# vim /etc/network/interfaces
29
das
interfaces
de
rede
guardada
no
arquivo
30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
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
lo
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)
localhost
32
192.168.1.100 server.home.lan server
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
33
localhost
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
eth0:0
35
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
# [...]
69540 0
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
Verificao
O comando ifconfig permite verificar o estado das interfaces de rede:
server~# ifconfig
bond0
38
RX bytes:7963037 (7.5 MiB) TX bytes:444479 (434.0 KiB)
Interrupt:19 Base address:0x2000
eth1
lo
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.
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
42
Initializing package states... Done
Reading task descriptions... Done
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
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/"
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;
Verificao
Ao atualizar a lista de pacotes disponveis devero constatar os novos
repositrios:
45
Utilizao
O repositrio est pronto a ser utilizado, com a sequncia habitual aptitude
update, seguido de aptitude full-upgrade.
46
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
2048g/36CA98F3 2007-03-31
48
pub 1024D/F42584E6 2008-04-06 [expires: 2012-05-15]
uid
Utilizao
O repositrio est pronto a ser utilizado, com a sequncia habitual aptitude
update, seguido de aptitude install <nome_do_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
50
-apticron
51
Cliente SFTP.
Clientes Windows
PuTTY
Terminal SSH.
WinSCP
Cliente SFTP.
FileZilla
Cliente SFTP.
Configurao
Todas as configuraes
/etc/ssh/sshd_config.
do
servidor
SSH
esto
no
arquivo
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
#[...]
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.
Configurao
Para configurar o fuso horrio, utilizar o comando dpkg-reconfigure tzdata e escolher
a zona correta, no menu interativo:
server:~# dpkg-reconfigure tzdata
54
E em
seguida
o pas:
O
resultado afixado:
Current default timezone: 'Europe/Lisbon'
Local time is now:
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
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
==============================================================================
-mail.tyroll.dk 192.38.7.240
2u
- 64
+dnscache-madrid 216.165.129.244 2 u
+services.bslfd. 145.238.203.10 3 u 61 64
56
*arethusa.tweake 193.190.230.66 2 u 61 64
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
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.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.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$
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
# [...]
/var/www/munin
<Location /munin>
Order allow,deny
Allow from all
AuthType Digest
AuthName "munin"
AuthUserFile /etc/apache2/munin.passwd
Require valid-user
</Location>
62
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.
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.
65
# jail.{conf,local} configuration files.
destemail = root@localhost
# [...]
= ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# [...]
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
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:
nic-hdl:
HC55-AP
e-mail:
bjnic@bjtelecom.net
address:
Beijing Telecom
address:
phone:
+86-010-58503461
fax-no:
+86-010-58503054
country:
cn
changed:
bjnic@bjtelecom.net 20040115
mnt-by:
MAINT-CHINATELECOM-BJ
source:
APNIC
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.
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
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".
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
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
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
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
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 ]
[ None found ]
[ Not found ]
[ Not found ]
[ 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 ]
[ OK ]
[ OK ]
[ OK ]
[ OK ]
75
Checking version of ProFTPd
[ OK ]
[ OK ]
[ No update ]
[ No update ]
[ No update ]
[ No update ]
76
Checking file i18n/cn
[ No update ]
[ No update ]
[ No update ]
[ 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.
78
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; };
};
files dns
80
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
Name: m01.bc01.mm.fccn.pt
Address: 193.137.196.101
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.
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.
Linux
No caso de sistemas Linux, editar o arquivo /etc/resolv.conf e acrescentar ou
substituir o nameserver:
# [...]
nameserver 192.168.1.100
82
# [...]
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
ns
192.168.1.100
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
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
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
127.0.0.1
127.0.0.1#53
gateway.home.lan
Name: router.home.lan
Address: 192.168.1.1
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
88
89
#vim /etc/bind/named.conf
Adicione a linha
include /etc/bind/rndc.key;
90
server 192.168.0.2 {
keys {
TRANSFER;
};
};
Adicione a linha
include /etc/bind/rndc.key;
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";
};
};
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:~#
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
# [...]
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.
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).
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?
#
INTERFACES="eth0"
96
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;
}
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.
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
#[...]
100
get errors about IP-forwarding you must set them to have individual
#
#Default:
# none
visible_hostname proxy.home.lan
# [...]
(bytes)
Objects larger than this size will NOT be saved on disk. The
you wish to get a high BYTES hit ratio, you should probably
101
#
#
#
#
#
#Default:
# maximum_object_size 20480 KB
# [...]
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/"
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'
# [...]
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'
# [...]
105
naughtynesslimit = 240
# [...]
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):
106
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.
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.
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
= 127.0.0.1
= 0.0.0.0
112
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
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
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
115
psql 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
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;
116
mytestdb = # SELECT * FROM empregados;
employee_id | first_name | last_name
------------- + ------------ + ----------1 | Jack | Espadilha
(1 linha)
Voc ser solicitado a especificar vrios valores para o novo usurio. Para
eliminar este usurio, emitir o seguinte comando:
dropuser alison
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 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
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
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
Tambm informar qual o banco de dados a ser conectaro por este usurio:
host bancodedados usuariodobanco 192.168.0.0/32 md5
120
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
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
122
/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
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:
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:
arquivo
Descrio
server.key
A chave privada
server.key.insecure
client.csr
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/
126
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
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
-----------------------------------------------------
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
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
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
# [...]
133
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).
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
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
# [...]
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
# [...]
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
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
arquivo/etc/apache2/mods-
140
# module (enable it with 'a2enmod').
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
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
141
Re-type new password:
Adding password for user user2
Verificao
Num browser inserir a URL de um repositrio:
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
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
144
prprio utilizador:
server:~# mkdir /etc/skel/Documents; chmod 0700 /etc/skel/Documents
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
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
# [...]
Verificao
Num PC da rede local dever ser possvel acessar partilha de arquivos do
servidor:
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):
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
# [...]
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:
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();
?>
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
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();
?>
153
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!
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
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>
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
Durante esta fase, sero pedidas informaes para configurao da base de dados:
158
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
[...]
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>
Verificao
Utilizando um navegador, insira o endereo de acesso interface webmail
http://192.168.1.100/roundcube:
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".
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:
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
163
Username: fribeiro
Password:
dav:/webdav/> quit
Connection to `server.home.lan' closed.
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
off
#[...]
"Debian"
ServerType
standalone
DeferWelcome
off
165
#[...]
#[...]
~/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:
167
Configurao
A configurao consiste
/etc/proftpd/proftpd.conf:
em
ativar
seo
ftp
Group
nogroup
anonymous ftp
off
10
welcome.msg
.message
022 022
Anonymous
do
ficheiro
168
#
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
# </Directory>
</Anonymous>
Utilizao
O servidor ftp pode ser acessado atravs de um simples browser ou utilizando
um cliente ftp, como o Filezilla:
169
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
# [...]
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
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
Fail2Ban: http://www.fail2ban.org/wiki/index.php/Main_Page
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
174
MuninExchange: http://muninexchange.projects.linpro.no/
OpenSSH http://www.openssh.com/
175
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/