Faculdade de Engenharia da Universidade do Porto
Virtualização da instalação e
configuração da IPBrick
Pedro Miguel Pereira Serra
Tese submetida no âmbito do
Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Major de Telecomunicações
Orientador: Pedro Souto (Professor Auxı́liar)
Junho de 2008
c Pedro Serra, 2008
Resumo
Este projecto enquadrou-se no desenvolvimento de uma nova versão da IPBrick, que é
uma distribuição de Linux especı́fica vocacionada para as necessidades das empresas. Tem
como especial foco a preparação deste servidor integrado para usar diversas distribuições
de Linux como sistema operativo de base, ao invés uma única, a Debian, como acontecia
nas versões anteriores. Esta nova IPBrick é um produto que permitirá à iPortalMais atingir novos mercados que trabalham com diferentes plataformas de software.
Partindo da última versão disponı́vel, alterou-se a aplicação de configuração IPBrick para
uma nova arquitectura que permite a abstracção do sistema operativo que a sustenta.
Esta restruturação significa que embora a IPBrick possa usar diferente sistemas operativos, a configuração do sistema é independente do sistema operativo instalado. Por
outras palavras, para o utilizador da IPBrick, o sistema operativo usado é transparente.
i
ii
Abstract
This project was carried out in the context of the development of a new version of
the IPBrick, which is a Linux distribution especially targeted to the needs of enterprises.
The major feature of this new version is that the IPBrick will be available with different
operating systems, instead of only the Debian Linux, as happened up to this new version.
This new IPBrick feature will allow iPortalMais to access to new markets.
Starting with the last version of IPBrick, the IPBrick administration application was
rewritten according to a new architecture that allows the abstraction of the operating system that supports it. This change on the IPBrick structure will allow the use of different
operating systems as a base for IPBrick, while keeping the configuration the same for the
final users, independently of the base operating system used.
iii
iv
Agradecimentos
A todos os que contribuı́ram para este trabalho.
À minha famı́lia.
Aos que contribuem para que o mundo evolua para uma cada vez maior harmonia
entre seres. Certamente estará incluı́do neste grupo o inventor da bicicleta.
Obrigado
Pedro Serra
v
vi
“Eu sei que tenho limite, só não sei qual é.”
Carlos Braga
vii
viii
Conteúdo
1 Introdução
1.1 O que se Pretende? . . . .
1.2 Enquadramento . . . . . .
1.3 Abordagem . . . . . . . .
1.4 Estrutura da Dissertação .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Plataformas Tecnológicas
2.1 IPBrick . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 IPBrick.I . . . . . . . . . . . . . . . . . . .
2.1.2 IPBrick.C . . . . . . . . . . . . . . . . . . .
2.1.3 Análise Técnica da IPBrick . . . . . . . . .
2.2 Outras Ferramentas de Administração de Sistema .
2.2.1 YaST . . . . . . . . . . . . . . . . . . . . .
2.2.2 Webmin . . . . . . . . . . . . . . . . . . . .
2.2.3 cPanel e WebHost Manager . . . . . . . . .
2.2.4 DirectAdmin . . . . . . . . . . . . . . . . .
2.3 Interoperabilidade em Linux . . . . . . . . . . . . .
2.4 Linux . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Red Hat Enterprise Linux . . . . . . . . . .
2.4.2 Debian . . . . . . . . . . . . . . . . . . . . .
2.4.3 Ubuntu . . . . . . . . . . . . . . . . . . . .
2.4.4 Comparação entre Distribuições . . . . . . .
2.5 Programação . . . . . . . . . . . . . . . . . . . . .
2.5.1 PHP . . . . . . . . . . . . . . . . . . . . . .
2.5.2 JavaScript . . . . . . . . . . . . . . . . . . .
2.5.3 AJAX . . . . . . . . . . . . . . . . . . . . .
2.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . .
3 Requisitos
3.1 Instalação . . . . . . . . . . . . . . . . . . . . . .
3.2 Serviços . . . . . . . . . . . . . . . . . . . . . . .
3.3 Interface e Base de Dados . . . . . . . . . . . . .
3.3.1 Gestão de Pacotes e Actualizações . . . .
3.4 Caracterı́sticas de Desenvolvimento da IPBrick 5
3.5 Resumo dos Requisitos . . . . . . . . . . . . . . .
ix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
2
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
7
8
11
12
13
14
15
15
16
17
18
19
19
24
24
25
26
27
.
.
.
.
.
.
29
29
30
30
30
31
31
x
4 Arquitectura e Projecto da Aplicação
4.1 Análise à IPBrick V4.3 . . . . . . . . .
4.2 Nova Aplicação de Configuração . . .
4.2.1 Camadas . . . . . . . . . . . .
4.2.2 Estrutura de Ficheiros . . . . .
4.2.3 IPBrick Development Standards
4.2.4 Serviços . . . . . . . . . . . . .
4.3 O Pacote IPBrick . . . . . . . . . . . .
4.4 Gestão de Actualizações e Software . .
4.4.1 Pré-instalação . . . . . . . . . .
4.4.2 Pós-instalação . . . . . . . . .
4.4.3 Pós-remoção . . . . . . . . . .
4.5 Planeamento . . . . . . . . . . . . . .
4.6 Resumo . . . . . . . . . . . . . . . . .
CONTEÚDO
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
34
35
36
37
38
38
39
39
40
40
40
41
5 Implementação
5.1 Exemplo Serviço: Apache2 . . . . . . . . .
5.1.1 Actualização de Definições . . . . . .
5.1.2 Script de Geração . . . . . . . . . .
5.1.3 Templates dos Sites Base da IPBrick
5.1.4 Script de Aplicação . . . . . . . . . .
5.2 Construção do Pacote IPBrick . . . . . . . .
5.3 Testes . . . . . . . . . . . . . . . . . . . . .
5.4 Resumo . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
43
44
45
46
47
47
47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Conclusões e Trabalho Futuro
49
6.1 Trabalho Realizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
A Testes
51
A.1 Serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.2 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
B Construção do Pacote IPBrick
61
B.1 control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.2 preinst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.3 postinst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Referências
69
Lista de Figuras
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
Configuração da IPBrick.IC . . . . . . . . . . . . . . . . . . . .
IPBrick.IC como um servidor de Comunicações . . . . . . . . .
Interface de configuração da IPBrick.I: Listagem de utilizadores
Interface de configuração da IPBrick.C: Funcionalidade VoIP .
Interface de configuração da IPBrick: Configuração avançada .
Interface gráfica do YaST . . . . . . . . . . . . . . . . . . . . .
Interface gráfica do Webmin . . . . . . . . . . . . . . . . . . . .
Interface gráfica do cPanel . . . . . . . . . . . . . . . . . . . . .
Interface gráfica do DirectAdmin . . . . . . . . . . . . . . . . .
Modelo de funcionamento do AJAX [1] . . . . . . . . . . . . . .
4.1
4.2
4.3
Modelo de funcionamento da IPBrick 4.3 . . . . . . . . . . . . . . . . . . . . 34
Abstracção da aplicação de configuração relativamente ao SO . . . . . . . . 35
Novo modelo de funcionamento para IPBrick 5 . . . . . . . . . . . . . . . . 38
xi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
8
9
10
11
13
14
15
16
26
xii
LISTA DE FIGURAS
Lista de Tabelas
2.1
2.2
Serviços da IPBrick.I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Serviços da IPBrick.C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xiii
7
8
xiv
LISTA DE TABELAS
Abreviaturas e Sı́mbolos
AD: Active Directory
AJAX: Asynchronous Javascript And XML
COAS: Caldera OpenLinux Administration Software
CSS: Cascade Style Sheet
DHCP: Dynamic Host Configuration Protocol
DMZ: DeMilitarized Zone
DNS: Domain Name System
FTP: File Transfer Protocol
GUI: Graphical User Interface
HTML: HyperText Markup Language
HTTP: HyperText Transfer Protocol
IDS: Intrusion Detection System
IPSec: IP Security
PAM’s: Pluggable Authentication Modules
PHP/FI: PHP Hypertext Preprocessor / Form Interpretor
RPM: Red Hat Package Manager
SAM: System Administration Manager
SIP: Session Initiation Protocol
SMH: System Manager Homepage
SO: Sistema Operativo
SSL: Secure Sockets Layer
SSH: Secure SHell
TLS: Transport Layer Security
VPN: Virtual Private Network
VoIP: Voice over IP
YaST: Yet another Setup Tool
xv
xvi
ABREVIATURAS E SÍMBOLOS
Capı́tulo 1
Introdução
Na actualidade é uma tendência as empresas estarem cada vez mais suportadas por
plataformas informáticas de redes e de comunicações, onde a velocidade e segurança são
factores importantes. A administração de redes, a gestão dos seus recursos, impressoras,
faxes, ficheiros, contas de e-mail, etc. são ameaçados por virus, worms e intrusões que
põem em risco o sistema de informação da empresa.
O trabalho consiste no desenvolvimento de uma nova versão da IPBrick que, pode dizerse, é uma distribuição de Linux especializada para as necessidades das empresas, com interface de configuração simples integrada. É aliás a sua aplicação de configuração integrada
uma das caracterı́stica que a torna especial, possuindo uma organização própria e separando marcadamente configurações básicas do sistema das suas configurações avançadas.
A IPBrick é um produto desenvolvido pela iPortalMais para satisfazer as necessidades
empresariais ao nivel de redes e comunicações.
1.1
O que se Pretende?
De forma generalizada, o que se pretende é que o servidor integrado IPBrick, que
actualmente é baseado em Debian Linux, passe a estar disponı́vel com diferentes sistemas
operativos de base, também de uma forma integrada. Isto é: tudo o que a IPBrick é
como conceito deve estar preparado para ter qualquer sistema operativo como sua base,
abstraindo a configuração, instalação e funcionamento, da especificidade que possa estar
associada a cada sistema.
Esta disponibilização de diversos sistemas operativos na IPBrick é uma caracteristica
pretendida na nova versão da IPBrick: a IPBrick 5. No entanto esta dissertação vai
cingir-se ao trabalho realizado pelo autor, enquadrando o resto do desenvolvimento de
uma forma mais genérica para que este trabalho fique enquadrado no grande projecto que
é o desenvolvimento da nova versão 5 da IPBrick.
1
2
Introdução
É de realçar também que o ponto de partida a nı́vel quer teórico quer prático é uma
versão anterior de IPBrick: a versão 4.3.
1.2
Enquadramento
Este projecto foi desenvolvido na empresa iPortalMais - Soluções de Engenharia para
Internet e Redes, Lda. Enquadra-se no âmbito da cadeira de dissertação do Mestrado
Integrado de Engenharia Electrotécnica e de Computadores da Faculdade de Engenharia
da Universidade do Porto. Teve inicio em Fevereiro de 2008 e com duração de um semestre.
O autor já tinha trabalhado na empresa anteriormente onde desenvolveu um projecto
relacionado com a FEUP, o que facilitou a integração e permitiu um pronto começo do
projecto. O autor teve participação activa no processo de desenvolvimento geral do projecto da IPBrick 5 com maior responsabilidades na parte da aplicação de configuração
IPBrick.
1.3
Abordagem
Para se conseguir a abstracção do SO pretendida é necessário uma abordagem bem
estruturada que permita lidar com a complexidade do sistema e com a redefinição da sua
plataforma de desenvolvimento.
A abordagem seguida advém primeiramente das necessidades que se encontram para
a busca do objectivo principal. Por isso, logo à partida há a necessidade de conhecer bem
o sistema, o conceito de IPBick, os serviços que integra e a sua filosofia de funcionamento.
Isto implica um estudo da IPBrick e também das tecnologias que esta envolve.
Outro estudo essencial é o dos sistemas operativos que se pretendem usar como base da
IPbrick. Neste caso vão ser usadas três distribuições: o Debian “etch”, o Ubuntu “Gutsy”
e o Red Hat Enterprise Linux. É necessário estudar as suas caracterı́sticas e diferenças
entre eles, abordando mais detalhadamente os pontos que têm mais influência no projecto.
A IPBrick inclui um conjunto de serviços que no geral são baseados em software livre.
Esse software é habitualmente independente das distribuições utilizadas e requer também
o estudo da sua configuração. Mas essa independência não é sempre verificada, sendo
por vezes até uma marca de uma determinada distribuição de Linux a sua maneira de
compilar e configurar um determinado serviço. Além disso, associada a cada versão de
uma distribuição, está associada uma versão de um software. Logo isto implica possiveis
novas funcionalidades e diferentes configurações. É necessário então estudar e documentar
estas diferenças pois são necesssárias para o motor da IPBrick.
Após esse estudo que dará um enquadramento mais real das possibilidades de como
abstrair a configuração e geração da IPBrick do SO de base, proceder-se-á à redefinição
de especificações de uma forma mais detalhada e a um desenho de um protótipo a implementar.
1.4 Estrutura da Dissertação
3
Finalmente realiza-se a implementação propriamente dita de um protótipo que deverá cumprir o requisitos definidos. Todo este processo será acompanhado por testes que
confirmarão as alterações efectuadas.
1.4
Estrutura da Dissertação
Este relatório pretende apresentar o trabalho do autor na iPortalMais. Por isso a a
descrição é mais pormenorizada nas áreas da responsabilidade do autor, como é o caso
do processo de actualização do software para as versões adequadas e a aplicação de configuração da IPBrick No entanto não pode deixar de descrever partes que foram participadas de forma menos pormenorizada mas que são essenciais para a compreensão do
projecto na sua globalidade.
Para além deste capı́tulo, esta dissertação contém mais 5 capı́tulos. No Capı́tulo 2,
são apresentadas as tecnologias relacionadas com este projecto destacando-se o estudo da
IPBrick de forma mais técnica, assim como as diversas distribuições de Linux que serão
incluidas neste projecto. No Capı́tulo 3 definem-se os requisitos que se pretendem implementar. No Capı́tulo 4 descreve-se o projecto do trabalho a implementar. No Capı́tulo 5
apresenta-se o método de implementação e um exemplo do trabalho prático desenvolvido.
No Capı́tulo 6 faz-se uma avaliação do trabalho realizado de forma conclusiva assim como
o trabalho futuro.
4
Introdução
Capı́tulo 2
Plataformas Tecnológicas
O desafio que este trabalho levanta é melhorar uma ferramenta que utiliza um conjunto
de tecnologias que é necessário compreender bem. Por esse motivo, este capı́tulo começa
com uma análise comlpeta da IPBrick desde os serviços fornecidos até a uma análise
mais técnica. Depois disso apresenta-se uma análise de ferramentas de administração
existentes de forma a fazer um enquadramento dos desenvolvimentos que existem a nı́vel
de configuração, especialmente nas caracterı́sticas que se procuram para esta nova versão
da IPbrick, como são a busca de uma configuração integrada, independência do SO e
interoperabilidade com Linux. A última secção do capı́tulo faz uma apresentação de Linux
e uma análise das suas caracterı́sticas que terão importância neste projecto. São também
estudadas as três distribuições de Linux que vão ser usadas neste projecto.
Por último faz-se uma apresentação das linguagens de programação mais importantes
no desenvolvimento da IPBrick e analisa-se a sua influência no projecto da IPBrick 5.
2.1
IPBrick
A IPBrick é o ponto de partida e o ponto de chegada deste projecto.
É um servidor integrado completo, desenvolvido sobre a tecnologia Linux, e possui uma
interface de gestão funcional com acesso via web, que permite efectuar a sua configuração
sem que o seu administrador possua conhecimentos profundos de Linux ou mesmo de redes
e serviços. Para além da interface funcional, a IPBrick tem ainda uma interface avançada,
a partir da qual um administrador de redes e sistemas tem acesso directo a todos os seus
serviços, tais como DNS (Domain Name System), DHCP (Dynamic Host Configuration
Protocol ), LDAP (Lightweight Directory Access Protocol ), servidor de correio electrónico,
servidor de ficheiros, gestor de projectos, VPN (Virtual Private Network ) server, firewall
entre outros.
5
6
Plataformas Tecnológicas
Figura 2.1: Configuração da IPBrick.IC
A IPBrick é um sistema operativo para gestão de redes com administração simples e
funcional, devido à sua interface gráfica GUI (Graphical User Interface - Interface Gráfica
do Utilizador). Desta forma, as empresas não dependem mais de peritos informáticos para
manter a espinha dorsal do negócio em funcionamento com elevada disponibilidade.
A IPBrick estabelece um padrão de estabilidade e segurança na transferência de dados.
Como o centro de todo o trabalho colaborativo, pode ligar-se através do MS Outlook ou
através de um web browser. A tecnologia baseada em Linux garante confiança, velocidade e
eficiência nas transferências de dados. Com a integração do antivı́rus Kaspersky minimizase o risco de perda da integridade dos dados.
Todas as configurações são preservadas, gravando-se inclusive a data e hora das mesmas
para permitir a recuperação de qualquer configuração [2].
2.1.1
IPBrick.I
A IPBrick.I disponibiliza todos os serviços necessários de um servidor de Internet.
IPBrick.I pode ser o servidor de e-mail, ficheiros, domı́nio, fax, impressão e de backup.
Para além do calendário/agenda partilhados e gestor de contactos (sincronizados via MS
Outlook ou browser web), é possı́vel gerir todos os projectos da empresa de um ponto
central.
IPBrick.I integra-se facilmente com serviço de directório. Em termos de escalabilidade
oferece um conceito master/slave baseado em LDAP e MS Active Directory (AD).
O servidor de Intranet IPBrick.I pode ser utilizado em três modos diferentes:
master, slave e AD client. Consequentemente os utilizadores da IPBrick, grupos e dispositivos [terminais e telefones SIP (Session Initiation Protocol )] podem ser definidos na
IPBrick ou no Windows AD (Active Directory). Na Intranet, a tecnologia IPBrick é capaz
de funcionar num ambiente totalmente IPBrick ou integrada com sistemas Windows [2].
A IPBrick.I disponibiliza o seguinte conjunto de serviços, sendo estes apresentados na
Tabela 2.1:
2.1 IPBrick
7
Tabela 2.1: Serviços da IPBrick.I
Serviços
Servidor de áreas de trabalho individuais e de grupo
Servidor LDAP (gestão de máquinas, utilizadores e grupos)
Servidor de Domı́nio (com roaming-profiles e centralized scripting)
Servidor de correio electrónico
Servidor de impressoras
Servidor de base de dados
Servidor de DHCP (Dynamic Host Configuration Protocol )
Servidor de DNS (Dynamic Network Services)
Servidor de imagens de estações de trabalho
Servidor de Groupware (Calendário e Livro de Endereços)
Servidor de Backup (ARKEIA)
Gestor de projectos (dotProject)
Serviços Opcionais
Kaspersky Anti-Malware
Correio Electrónico (AntiVirus, AntiSpam)
Servidor de ficheiros (AntiVirus)
Single sign-on (Autenticação Biométrica)
2.1.2
IPBrick.C
A IPBrick.C garante a segurança na transferência de dados entre Intranet e
Internet. Os dados transferidos (download and upload ) são filtrados, analisados e geridos pela IPBrick.C. Estas operações são executadas pelos principais componentes da
IPBrick.C: Mail-Relay, Servidor-Proxy, IDS (Intrusion Detection System), Antivı́rus e
AntiSpam. A IPBrick.C controla todas as interfaces disponı́veis para a Internet. O objectivo da IPBrick.C é gerir as ligações da empresa com a Internet. Os serviços oferecidos
são: servidor web, servidor FTP (File Transfer Protocol ), VPN (Virtual Private Network )
gateway e telefonia VoIP (voz sobre IP).
A tecnologia VPN não só permite o fluxo de dados seguro mas também permite a
escolha do espaço de trabalho conforme as necessidades. A IPBrick.C gere as ligações permanentes entre diversos pontos através de túneis IPSec (IP Security) assim como através
de túneis OpenSSL (Secure Sockets Layer e TLS Transport Layer Security) para ligações de
confiança. O correio electrónico assim como o tráfego web é continuamente filtrado através
de regras configuráveis. Relatórios com estatı́sticas apresentam a informação essencial em
gráficos de interpretação fácil. Através do web mail podem ser geridos os e-mails de uma
forma segura, mesmo que através de um browser web em qualquer lugar e momento.
A IPBrick.C pode ser colocada numa DMZ (DeMilitarized Zone) protegida por firewall,
como um servidor de comunicações protegida pela firewall, ou mesmo como um servidor
completo de comunicações e sistema de firewall integrado. A IPBrick.C pode importar os
utilizadores, grupos e dispositivos (estações de trabalho e telefones SIP Session Initiation
Protocol ) de uma IPBrick.I ou de um sistema Windows AD. Isto significa que, instalando
8
Plataformas Tecnológicas
Figura 2.2: IPBrick.IC como um servidor de Comunicações
a IPBrick.C como servidor de comunicações, não é necessário redefinir as informações do
sistema já disponı́veis no servidor de Intranet da empresa [2].
A IPBrick.C disponibiliza os seguintes serviços de empresa para a ligar à Internet,
sendo estes representados na Tabela 2.2
Tabela 2.2: Serviços da IPBrick.C
Serviços
Relay de correio electrónico
webmail
Servidor web
Servidor Proxy (HTTP, HTTPS, FTP com estatı́sticas)
Traffic shaping
Port security (packet based firewalling)
IDS (Intrusion Detection System)
Servidor de VoIP (RTP bases routing)
Integração transparente com PBX (ISDN E1/BRI e linhas analógicas)
Serviços Opcionais
Kaspersky Anti-Malware
Correio Electrónico (AntiVirus, AntiSpam)
Servidor de ficheiros (AntiVirus)
Integração transparente com PBX (ISDN E1/BRI e linhas analógicas)
2.1.3
Análise Técnica da IPBrick
Interface Gráfica
A interface de configuração de sistema da IPBrick foi desenhada para ser de fácil
utilização, com o objectivo de poder ser uma ferramenta de administração utilizável por
alguém sem necessáriamente conhecimentos informáticos profundos. No entanto não deixa
de ser uma ferramenta muito extensiva em termos de configurações avançadas. Faz parte
2.1 IPBrick
9
Figura 2.3: Interface de configuração da IPBrick.I: Listagem de utilizadores
da filosofia da IPBrick esta forte separação entre uma configuração básica, que pode ser
gerida de forma fácil e com conhecimentos mı́nimos de administração, e uma configuração
avançada que permite aos utilizadores mais experientes personalizar o seu sistema à sua
maneira.
A interface está organizada por módulos, estando as funcionalidades de cada serviço
separadas consoante a sua função. Por exemplo o serviço de correio electrónico da IPBrick.I
contem configuração de utilizadores enquanto na IPBrick.C já contem a configuração da
funcionalidade mail copy.
São apresentados na Figura 2.3 e na Figura 2.4 da página 10 exemplos da interface de
configuração para um serviço de intranet e outro de comunicações, nas quais podemos ver
o diferente menu.
Seguidamente na Figura 2.5 da página 11 apresenta-se a interface com um exemplo de
configuração avançada, na qual se pode verificar a subdivisão do menu de configurações
avançadas, assim como os serviços disponibilizados neste sub-menu.
Modo de Funcionamento
A IPBrick tem um modo de funcionamento próprio. As suas configurações são efectuadas através da interface de configuração apresentada e guardadas numa base de dados.
No final das modificações efectuadas, para que estas se tornem activas, é necessário fazer
uma aplicação de configurações. Ao efectuar essa aplicação, o motor da IPBrick vai fazer
uma análise ao modificado e encarrega-se de fazer todas as acções necessárias para as
modificações realizadas. Por exemplo, dependendo da modificação podem se necessários,
cópia de ficheiros, modificação de ficheiros, começo ou paragem de serviços, etc.
10
Plataformas Tecnológicas
Figura 2.4: Interface de configuração da IPBrick.C: Funcionalidade VoIP
Organização
Analisando a nı́vel mais técnico, o que é então a IPBrick? Esta questão pode ser
respondida separando por camadas. A IPBrick é:
• I Sistema operativo base
• II Pacotes adicionados e modificados
• III Geração de configurações
• IV Interface de gestão e base de dados
Parte-se de um sistema operativo base, complementa-se esse sistema com alteração e
adição de software, formando um sistema operativo próprio IPBrick. As camadas III e
IV pertencem à aplicação de configuração e estão interligadas e dependentes a nı́vel de
programação.
Olhando esta estrutura por camadas pode-se dizer que o objectivo do projecto da
IPBrick 5 é gerar a instalação de I, II automaticamente a partir da definição do que é uma
IPBrick, depois construir a geração dos ficheiros de configuração para qualquer versão
partindo de um código comum.
Este objectivo implica que a separação entre as camadas III e IV esteja bem definida,
de forma a se poder trabalhar na camada III para que esta faça também a abstracção da
interface de configuração para o SO.
2.2 Outras Ferramentas de Administração de Sistema
11
Figura 2.5: Interface de configuração da IPBrick: Configuração avançada
2.2
Outras Ferramentas de Administração de Sistema
Nesta secção faz-se uma análise a outras ferramentas de administração de sistemas
existentes que se enquadram nas funções e serviços também fornecidos pela IPBrick. Esta
análise além de procurar avaliar o enquadramento tecnológico da IPBrick comparada com
os outros produtos disponı́veis, procura avaliar os produtos existentes na caracterı́stica
especı́fica que a IPBrick procura com este projecto: a interoperabilidade em vários sistemas
operativos, mais propriamente entre distribuições de Linux.
Os sistemas operativos Linux estão ligados, desde a sua criação, à utilização por parte
de pessoal especializado ou com fortes conhecimentos técnicos. Hoje em dia o Linux está
também virado para os utilizadores domésticos e evoluiu muito no sentido de permitir
uma utilização por qualquer pessoa, mesmo sem formação em computadores. No entanto,
a administração de um sistema operativo ou de uma rede de computadores é uma tarefa
que pode ser muito complexa e exigir conhecimentos técnicos profundos.
Muitos defendem que um verdadeiro administrador edita os ficheiros manualmente,
mas a verdade é que as ferramentas que simplificam a configuração sempre foram procuradas e sempre tiveram porta aberta nos mercados. Várias ferramentas surgiram que tinham como objectivo facilitar a tarefa de administração, das quais muitas desenvolveram-se
e continuam hoje em desenvolvimento mas muitas outras estagnaram e foram descontinuadas. Isto pode dever-se a diversos factores, desde a grande evolução em termos de ligações
de Internet que transformaram a realidade de fornecimento de serviços, até ao grande desenvolvimento que se deu a nı́vel gráfico no mundo do Linux, proporcionando a criação
de interfaces gráficas a ferramentas de configuração de serviços. Apesar disso estes desenvolvimentos manifestaram-se mais em ferramentas especı́ficas e não de uma administração
12
Plataformas Tecnológicas
integrada. A nı́vel de Linux para servidores as opções que se desenvolveram foram mais a
nı́vel comercial e vocacionados para administradores com formação especı́fica.
Um dos problemas dos administradores de sistemas sempre foi a diferença entre as
ferramentas diferentes usadas para distribuições diferentes. O OpenLinux usa o COAS,
a SuSE o YAST e o Red Hat usava o LinuxConf. Há ainda outras ferramentas com
uma filosofia diferente e baseadas numa interface web que não estão ligadas a nenhuma
distribuição especı́fica, mas cujos serviços estão mais vocacionados para uma determinada
area.
Vai-se seguidamente averiguar o comportamento das mais relevantes.
2.2.1
YaST
“YaST is the most powerful installation and system management tool in the
Linux environment. It is an open source project sponsored and actively developed by Novell.” [3, About YaST]
Apesar desta afirmação ser proveniente da página oficial do Yast, das ferramentas de
configuração estudadas o YaST é realmente das que tem mais funcionalidades e a mais
evoluida.
O YaST “nasceu” em Janeiro de 1995. Começou por ser escrito em C++ com GUI por
um dos fundadores do SUSE: Thoamas Fehr, e Michael Andres. A primeira distribuiçao
do YaST foi no entanto com o Slackware nesse mesmo ano. Um ano depois sai oficialmente
o YaST 0.53 no SUSE Linux 4.2.
É a ferramenta de instalação e configuração do openSUSE, do SUSE Linux Enterprise e das distribuições de Linux baseadas em SUSE. É famoso por ser uma ferramenta
completa integrada de facil utilização mas principalmente por ter uma interface gráfica
muito atractiva. É uma ferramenta potente e permite uma personalização fácil do sistema
durante e depois da instalação.
O YaST tem um guia para a instalação dividido em passos simples, que permitem a
definição das configurações básicas. Permite também uma instalação com mais detalhe
para utilizadores com maior nı́vel de conhecimento. Pode também configurar todo o
sistema desde hardware, a rede, serviços do sistema, definições de segurança, etc. Uma
diversidade de serviços podem ser alcançados através do YaST. YaST é aliás o nome da
ferramenta inicialmente criada sendo YaST2 o nome da interface gráfica.
Na Figura 2.6 da página 13 podemos ver a interface gráfica do YaST2.
Apresentam-se de seguida os serviços mais importantes do YaST:
• Gestão de actualizações: Instalar e remover pacotes de software, actualização on-line
• Gestão e configuração de hardware
• Interface de configuração: Edição dos ficheiros de configuração através de interface
gráfica facilitada ao serviço
2.2 Outras Ferramentas de Administração de Sistema
13
Figura 2.6: Interface gráfica do YaST
• Ferramenta de particionamento de discos
• Configuração de rede: DHCP servidor e cliente, ISDN, modem, placa de rede, hostname
• Serviços de rede: DNS, servidor HTTP, proxy, Samba, SSH, FTP
• Administração de aplicações Novell
• Segurança e utilizadores: Firewall, utilizadores, grupos, super utilizador, certificados
• Outros: Logs de sistema, configuração de auto-instalação, opções de inicialização,
colocar suporte.
Avaliando os foruns e lista de bugs desta ferramenta podemos verificar que algumas
queixas surgem mais a nı́vel de velocidade e problemas de gestão de dependências entre
pacotes de software. Tem um historial de uma considerável quantidade de bugs.
2.2.2
Webmin
O Webmin nasceu em 1997 pela mão de James Cameron. A sua criação surgiu da
necessidade de dar capacidade a utilizadores menos experientes para adicionar registos
DNS através de uma interface web da empresa. Daı́ surgiu a ideia que um browser podia
servir para configurar muitos mais serviços e o Webmin desenvolveu-se [5].
Segundo a página web oficial [6]o Webmin funciona em mais de 40 distribuições incluindo (Red Hat, SuSE, Sun, Mac OSX, Mandrake e FreeBSD). É distribuı́do sob licença
BSD e por isso pode ser utilizado livremente para fins comerciais e não comerciais.
Uma das vantagens do Webmin é ser uma aplicação web, por isso precisa apenas de
um navegador que lide com o HTML. Inclui também um mini servidor web próprio para
14
Plataformas Tecnológicas
Figura 2.7: Interface gráfica do Webmin
não haver necessidade de ter um instalado ou não estar dependente deste. Tem também
configurações de segurança que permitem uma utilização remota segura da aplicação.
Podemos reparar na avançada e agradável interface de configuração do Webmin, na
Figura 2.7.
Os serviços disponibilizados por esta aplicação são muito vastos, havendo também
módulos que são desenvolvidos pela comunidade.
2.2.3
cPanel e WebHost Manager
O cPanel e o WHM (WebHost Manager) são duas aplicações usadas em conjunto
formando uma ferramenta poderosa de controlo de web hosting servindo tanto clientes
como pessoal administrativo.
Estas duas aplicações disponibilizam:
• Interface gráfica de configuração baseada na web
• Separação de serviços cliente / administrador
• Servidor de mail e webmail
• Administração de domı́nios
• Administração de servidor
• Instalação automática de aplicações
Apresenta-se também na figura 2.8 o aspecto da interface gráfica do cPanel onde se
notam diversos serviços disponibilizados para configuração.
2.3 Interoperabilidade em Linux
15
Figura 2.8: Interface gráfica do cPanel
2.2.4
DirectAdmin
O DirectAdmin é uma ferramenta em tudo idêntica ao cPanel junto com o WebHost
Manager. Muda a interface mas os serviços e a vocação para serviços de web hosting são
praticamente equivalentes.
A aplicação divide os serviços em quatro categorias:
• Gestão para utilizadores
• Gestão para administradores
• Gestão para revendedores
• Opções gerais
A interface gráfica do DirectAdmin é apresentada na Figura 2.9 da página 16.
2.3
Interoperabilidade em Linux
A questão da interoperabilidade acompanha aliás o cosmos do Linux desde há muito. A
liberdade de criar versus a cooperação no desenvolvimento capaz de servir todos, independentemente da sua especificidade, é um tema discutido e com algum trabalho desenvolvido
como é o caso do LSB (Linux Standards Base). Existe aliás muita discussão dentro deste
projecto apesar de ter evoluı́do com o apoio de algumas distribuições de Linux.
Esta questão é mencionada para se ter um enquadramento da situação da interoperabilidade e de como esta questão existe e é necessário ser desenvolvida dentro do mundo
16
Plataformas Tecnológicas
Figura 2.9: Interface gráfica do DirectAdmin
Linux. Este projecto destina-se especı́ficamente à IPBrick que é Linux e deve ter esta
questão presente.
Destaca-se que muitos projectos tinham como objectivo ou mais valia esta ambição de
interoperabilidade, apesar desta questão estar longe de estar respondida e poucos acabam
por fornecer essa interoperabilidade.
2.4
Linux
Linux é o termo geralmente usado para designar qualquer sistema operativo que utilize
o kernel Linux. Foi desenvolvido por Linus Torvalds, inspirado no sistema Minix. O
seu código fonte está disponı́vel sob licença GPL para qualquer pessoa utilizar, estudar,
modificar e distribuir de acordo com os termos da licença.
Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a
Sun Microsystems, a Hewlett-Packard, e a Novell [10].
Como foi referido, a IPBrick é uma distribuição especı́fica de Linux. Seguindo o objectivo deste projecto, a IPbrick pretende ser Linux sem se restringir a uma distribuição,
mas idealmente a qualquer plataforma Linux como sua base. Daı́ a procura de estudar o
que caracteriza as diferentes distribuições de Linux.
De forma geral podemos distinguir algumas caracterı́sticas que marcam habitualmente
as diferenças entre as diversas distribuições de linux:
• Gestão de actualizações: Todas as distribuições de Linux têm um ou outro
método para distribuir ficheiros quer seja através de CD ou através de actualizações
via web. Uma usam binários pré-compilados, outras os ficheiros com o código fonte,
2.4 Linux
17
outras ainda metodos diferentes com caracterı́sticas especı́ficas para cada. Muitas
distribuições usam o RPM ( Red Hat Package Manager ) e os debs, abreviatura
usada para os pacotes de software da Debian.
Esta distinção entre a gestão de software das diversas distribuições é importante
por diversas questões, das quais se destacam a compatibilidade e a disponibilidade
resultante da popularidade e consequente rapidez de desenvolvimento.
• Configuração: Ainda que muitas vezes as diferenças sejam poucas, a localização
dos ficheiros de configuração diferem de distribuição para distribuição.
• Software: O software que é disponibilizado de base em cada versão também é
diferente. Ainda que teoricamente se pode compilar qualquer software para qualquer
distribuição, isso pode implicar um esforço considerável. Algumas ferramentas são
mesmo especı́ficas de algumas distribuições que muitas vezes marcam a diferença.
• Comercialização: Por norma o Linux é de código aberto e disponı́vel para qualquer
pessoa. Há no entanto várias distribuições comerciais de base ou que se tornaram
comerciais, vocacionadas para empresas e com mais ou menos disponibilização de
assistência técnica ou outros serviços.
Abordando o trabalho prático a ser desenvolvido, apresentam-se seguidamente as três
distribuições de Linux que vão ser utilizadas para a implementação deste protótipo, procurando realçar as suas caracterı́sticas e especificidades que serão mais crı́ticas neste desenvolvimento.
2.4.1
Red Hat Enterprise Linux
O Red Hat Linux é uma das mais antigas e mais populares distribuições de Linux. Foi
fundado em 1994 por Bob Young e Marc Ewing. tem a sua sede em Raleigh, Carolina do
Norte, nos Estados Unidos da America [11].
Originou o formato de pacotes de software RPM usado por muitas distribuições como
SuSE, Caldera, Mandrake. Esta inovação foi um dos factores importantes da sua fama.
Inicialmente estavam disponı́veis duas distribuições: uma livre e outra virada para o
mercado. Actualmente a escolha é entre o Fedora Core e o Red Hat Entrepise Linux
havendo uma mais clara separação entre a componente comercial e a distribuição aberta
desenvolvida pela comunidade.
O Red Hat Entrepise Linux é usado em milhões de servidores em todo o mundo. A
versão actual é a 5, para a qual a Red Hat prometeu melhorias a nı́vel de aplicações
disponı́veis e certificação destas, melhoramento e facilidade em virtualização e também
em compatibilidade de hardware [11].
O Red Hat Enterprise Linux é famoso por ser certificado por enumeras empresas de
hardware e software, dando a esta distribuição o valor associado ao software livre e a
confiança de uma plataforma empresarial solida.
18
Plataformas Tecnológicas
2.4.2
Debian
O Debian GNU/Linux foi anunciado em 1993. Ian Murdock, o seu fundador, visionou
a criação de um projecto não comercial desenvolvido por centenas de voluntários programadores nos tempos livres. Na altura a ideia parecia destinada ao fracasso pois os que
acreditavam nela estavam em clara minoria relativamente aos cépticos. Mas a realidade
foi bem diferente. O Debian não só sobreviveu como se desenvolveu com grande sucesso,
transformando-se na maior distribuição de Linux no espaço de uma década. Além disso
tornou-se provavelmente na maior comunidade de software colaborativo de todos os tempos [12].
O sucesso da Debian pode ser avaliado pelos seguintes números: 20 000 pacotes de software compilados para 11 arquitecturas de processadores, é desenvolvido por mais de 1000
programadores voluntários e é responsável por inspirar mais de 100 distribuições baseadas
no Debian Linux, incluindo uma das mais famosas distribuições actuais: o Ubuntu [12].
O seu sistema de gestão de pacotes de software: APT, é um dos seus pontos fortes como
acontece com o Red Hat. Em termos de filosofia de desenvolvimento o Debian organiza-se
de uma maneira especı́fica. Existem três ramificações de desenvolvimento:
• Stable (4.0) — Intitulada de etch. Ramificação estável.
• Testing (X.Y) — Intitulada de Lenny. Ramificação com algum grau de estabilidade
mas que ainda exige mais testes.
• Unstable (Sid) — Ramificação instável. Ramificação de desenvolvimento, onde é
incluı́do software proposto com frequência.
[13]
Estes diversos graus de estabilidade definidos no seu desenvolvimento dão-lhe caracterı́sticas próprias. Por um lado é conhecida por ser uma distribuição com elevada
estabilidade e é muito usada em servidores e sistemas que exigem alta fiabilidade. Por
outro lado essa estabilidade é conseguida por um processo de testes que exige tempo e
esse tempo faz com que o Debian Linux, na sua versão stable não esteja a par das ultimas
versões de software. Com este prejuı́zo, o Debian é conhecido como a distribuição melhor
testada e com menos bugs. outro senão desta demora é a falta de acompanhamento no
desenvolvimento, relativamente à evolução do hardware.
Surgem ainda outras questões desta organização de desenvolvimento. Devido à estrutura fortemente democratizada surgiram algumas discussões devido decisões mais polémicas,
que contribuı́ram de certa forma para alguma estagnação e atraso no desenvolvimento,
assim como “lutas” infindáveis entre programadores que não contribuem para o desenvolvimento rápido do projecto.
2.4 Linux
2.4.3
19
Ubuntu
O Ubuntu nasceu em Setembro de 2004 através do multimilionário Sul Africano Mark
Shuttleworth. O projecto ganhou popularidade a uma velocidade fantástica, como não
tinha acontecido com nenhum outro. Em pouco tempo existiam foruns de discussão cheios
de utilizadores e programadores ansiosos. Nos anos que se seguiram o Ubuntu tornou-se a
mias popular distribuição de Linux e contribuiu muito para o desenvolvimento do Linux
fácil de utilizar e divulgação do sistema operativo livre capaz de competir fortemente com
qualquer solução proprietária [12].
O sucesso do Ubuntu deve-se a diversos factores.
Primeiramente foi criado pelo
carismático multimilionário que foi o segundo turista espacial e um dos primeiros programadores ligados ao Debian. A sua empresa, a Canonical Ltd., é a financiadora deste
projecto que devido ao seu abastado fundador, distribuem gratuitamente CD’s para o
mundo inteiro. Além do apoio, da estabilidade financeira e de meios, o Ubuntu criou
uma forte base estrutural baseada na web com documentação, wiki’s, um sistema de bugreporting criativo, assim como uma abordagem profissional para os utilizadores finais.
Com isto o Ubuntu conseguiu contornar os erros cometidos por outras distribuições e
acelerar o seu processo de desenvolvimento [12].
Técnicamente o Ubuntu é baseado na versão instável do Debian: “Sid ”, mas com
alguns pacotes de destaque como o GNOME, Firefox e OpenOffice actualizados para a
suas versões mais recentes. Tem novas versões tendencialmente de 6 em 6 meses com
versoes ocasionais com suporte com updates de segurança para 3 a 5 anos, denominadas
LTS (Long Term Support). As versões não LTS são suportadas até 18 meses.
Outras caracterı́sticas que dão ao Ubuntu caracterı́sticas especiais são o live CD com
uma instalação guiada e facilitada, assitência na migração para utilizadores de Windows,
temas de ambiente de trabalho e suporte para as ultimas tecnologias de efeitos 3D com
instalação simplificada de drivers proprietários da ATI e NVIDIA.
Em termos de criticas ao Ubuntu podemos dizer que são concentradas especialmente
na sua relação com software proprietário. Houve alguma polémica pela relação da ultima
versão do Ubuntu com os drivers proprietários. Esta questão alonga-se a outras aplicações
proprietárias que são suportadas pelo Ubuntu.
Em termos de gestão de pacotes de software, o Ubuntu é uma base Debian e por isso
usa o APT com backgroud do dpkg (Debian package).
2.4.4
Comparação entre Distribuições
Após apresentadas algumas caracterı́sticas sobre as três distribuições que vão ser utilizadas neste projecto, vai-se proceder a uma análise mais comparativa entre elas.
Na verdade interessa detalhar bem estas diferenças para que se possa fazer uma integração correcta da instalação e da aplicação de configuração independentemente de qual
distribuição seja a base operacional da IPbrick. O que acabou de se afirmar é uma vez
20
Plataformas Tecnológicas
mais o reforço do objectivo primordial deste projecto: preparar a IPBrick para ter diversos
sistemas operativos como base. Mais especı́ficamente várias distribuições de Linux como
sistema operativo base.
Tendo em conta que duas das três distribuições que vão ser usadas no prototipo deste
projecto são o Debian e o Ubuntu, que são de alguma forma similares devido ao Ubuntu
ser baseado em Debian, este estudo comparativo vai centrar-se mais entre o Debian e o
Red Hat, sendo posteriormente feitas algumas considerações comparativas relativamente
ao Ubuntu.
Gestão de Pacotes
No que diz respeito às diferenças entre distribuições de Linux, destaca-se e desenvolvese um pouco mais a questão da gestão de software. Além de ser uma das caracterı́sticas
mais importantes na caracterização de uma distribuição, pois contribui para a estabilidade
do sistema, a facilidade de actualização do sistema e integração de novas ferramentas, é
também uma caracterı́stica que é necessário estudar com detalhe para a implementação
deste projecto.
Em Linux o software é distribuı́do em pacotes. Um pacote é um conjunto de ficheiros
e informação sobre o software a ser instalado, com instruções para a sua instalação, configuração e remoção. Um pacote pode conter software diversificado desde aplicações mais
populares como processadores de texto ou programas de edição de imagem, até partes
especı́ficas do sistema operativo e actualizações. Hoje em dia as actualizações do sistema
para uma nova versão são feitas através de pacotes. Outra grande vantagem dos pacotes
é que se trata de uma reorganização dos ficheiros, o que transforma milhares de ficheiros
relacionados em muito menos pacotes. Isto torna o processo de instalação e gestão de
software muito mais organizado e simples de lidar.
Mas ter uma organização simplificada e agradável não é suficiente para garantir um
bom sistema de gestão de pacotes. O núcleo da questão está em como gerir esta organização. Como manter a ligação e registo dos ficheiros e pacotes assim como a relação
entre eles?
Entre as soluções existentes há duas maneiras de abordar a organização interna de
pacotes. Uns concentrar-se mais nos ficheiros que estão envolvidos no pacote, outros
concentrar-se mais nas etapas do processo para instalação dos pacotes vendo o pacote
como um todo. Ambos tem a suas vantagens e desvantagens e o resultado final de qualquer
sistema de pacotes é uma mistura destas duas componentes procurando o melhor processo
para lidar com estas questões.
No enquadramento deste projecto há dois sistemas diferentes. O RPM, usado pela Red
Hat e o APT (que tem o dpkg em mais baixo nı́vel) pelas distribuições Debian e Ubuntu.
Uma das principais diferenças entre o Red Hat e o Debian é na gestão de pacotes.
Aliás esta é uma das mais notórias diferenças para um utilizador domestico de Linux, mas
2.4 Linux
21
para este projecto salta-se essa análise mais especı́fica da visão do utilizador pois, para
este, a configuração da IPBrick deve ser única e independente do SO.
As diferenças técnicas entre os dois sistemas é clara, desde as regras de nomeação até
ao método de organização de ficheiros. Algumas vantagens e desvantagens são atribuidas
a cada um dos sistemas, se bem que a evolução destes tendeu a corrigir esses problemas e
hoje em dia são ambos bastantes estáveis e completos, sendo mais adequados a ser usados
cada um para as distribuições para que estão preparados. Por este motivo pode dizer-se
que as diferenças entre eles na actualidade é muito mais uma preferência do utilizador do
que por uma clara sobreposição de um sobre o outro.
As caracterı́sticas técnicas são no entanto diferentes. No Red Hat as especificações de
um pacote são incluidas num ficheiro com sufixo .spec. Neste são incluidas a informação
relativa ao pacote assim como as instruções de instalação, remoção, mas também as informações necessárias a construção do próprio binário. Podem ser instalados vários pacotes
a partir de uma só especificação, ou seja, de um só ficheiro .spec. O ficheiro de especificações tem uma nomeação própria tendo que ter o nome do pacote a instalar. O seu
conteúdo está dividido por secções cada uma com a sua função. Estas especificações são
as seguintes:
• Preâmbulo - Aqui vão definidas as caracterı́sticas do pacote, como o nome, versão,
revisão, requisitos, etc. É aqui que estão os dados que são apresentados quando
alguém pede informações sobre o pacote.
• Secção de preparação - Inclui as instruções de preparação da construção do pacote.
Estas instruções são executadas habitualmente antes da descompactação da fonte.
• Secção de construção - Esta secção contem todas as instruções necessárias para
compilar o código fonte.
• Secção de instalação - Contem as instruções relativas à instalação.
• Scripts de instalação - Pode conter instruções a serem executas antes ou depois
da instalação, assim como antes ou depois da remoção.
• Secção de verificação - Nesta secção estão definidas verificações extra além das
que o sistema RPM faz por defeito.
• Secção de limpeza - Pode ser incluı́do nesta secção um script de limpeza. Apesar
de já ser efectuada uma limpeza pelo motor do RPM
• Lista de ficheiros - Esta secção é muito importante. Define os ficheiros que o
pacote comporta assim como as suas permissões. Esta lista tem que estar coerente
ou a instalação não será concluı́da.
22
Plataformas Tecnológicas
Nos pacotes .deb em vez de um ficheiro de especificações, existe uma pasta onde são
incluidos os ficheiros todos de instalação. Estes ficheiros estão divididos por funcionalidade,
existindo os seguintes:
• control - Script de controlo. Onde vão o nome, a versão, a listagem de dependências,
a descrição, etc.
• preinst - Script de pré instalação. Será executado antes da instalação.
• postinst - Script a executar depois da instalação
• prerm - Script de pré remoção. A executar antes de efectuara desinstalação.
• postrm - Script de pós remoção. A executar no final da desinstalação
A nomeação standard também é diferente. No Debian o nome do pacote é do tipo
nome ver-rev arq.deb, onde nome é o nome da aplicação, ver é a versão principal, rev
a revisão dentro desta versão e arq a arquitectura para o binário é destinado. No Red
Hat a nomeação é nome-ver-rev.arq.rpm sendo o significado das abreviaturas idênticos ao
explicado para os debs.
Software
Outra diferença entre as distribuições de Linux em geral é o software que estas incluem.
Para o nosso projecto é importante no sentido em que haverá um repositório base que
será o disponibilizado pela distribuição respectiva. Posteriormente este repositório será
completado para passar a ser o repositório IPBrick.
Há que destacar a plataforma Debian que é conhecida por ter uma quantidade fora do
normal de software disponı́vel, enquanto que o Red Hat é mais limitado. O Ubuntu tem
a vantagem de ter a base Debian e recebe os mesmos “louros” que este, neste aspecto já
que há grande compatibilidade entre eles.
A questão principal no que diz respeito ao enquadramento deste trabalho é a das
versoes usadas por cada uma das distribuições. O Ubuntu, como é baseado no Debian
unstable, é o que tem o software mais recente. O Red Hat vem de seguida e o Debian por
ultimo. Isto não significa obrigatóriamente uma grande alteração em termos de estrutura
de ficheiros ou de configuração. Depende das modificações que cada versão acarretar,
ou mais propriamente as alterações entre as diferentes versões que vão ser usadas pelas
diferentes distribuições usadas.
Por exemplo o servidor web Apache 2, que servirá ao longo deste trabalho como serviço
exemplo, tem as seguintes versões nas três distribuições abordadas:
• Debian : apache2.2.3-4+etch1
• Red Hat : httpd-2.2.3-6.el5.0.1
2.4 Linux
23
• Ubuntu : apache2.2.4-3ubuntu0.1
Entre as três pode verificar-se que apesar das pequenas diferenças de versão deste
serviço, tem implicações no seu funcionamento.
Configurações
Enquanto que muitos serviços e aplicações são bastante independentes da distribuição
implicando que a configuração destes é idêntica para qualquer distribuição, alguns serviços
mais básicos são habitualmente diferentes assim como as ferramentas de configuração usadas por cada. Estas diferenças acabam por ser uma marca importante de cada distribuição.
Neste aspecto de configuração dos serviços básicos (nome da maquina, rede, grupos
e utilizadores) o Ubuntu e o Debian partilham as mesmas ferramentas de configuração e
consequentemente a mesma metodologia. O Red Hat precisa de uma configuração diferente.
Noutros serviços e aplicações que vão de base em cada distribuição temos duas situações
distintas. Uma é relativa a aplicações que estão bastante independentes do sistema e por
isso a sua configuração entre distribuições é idêntica. Outra é a especificidade que algumas
aplicações ganham consoante a distribuição em que estão incluidas.
Um exemplo desta ultima é o servidor web apache2. Enquanto que no Red Hat este
se chama http e tem uma compilação e organização de ficheiros de configuração própria,
no Debian e Ubuntu o servidor web chama-se apache2 e os seus ficheiros de configuração
seguem uma organização diferente. Além disso, a IPBrick utiliza os seus próprios módulos
e configurações de base que terão que ser incluidos. Apesar disso esta versão do apache
é muito versátil e uma solução pode passar por tentar aproximar as configurações, com
o risco de afastamento de uma caracterı́stica da distribuição. Para completar a exemplificação resta dar um exemplo básico de um pormenor da configuração: no Red Hat está
definido no httpd.conf (ficheiro de configuraçao principal) as portas que estão a receber
ligações enquanto que no Debian e no Ubuntu existe um ficheiro próprio ports.conf onde
são definidas. Mas em ambos os casos sao definidos da mesma forma:
#file ports.conf
Listen <porta1>
Listen <porta2>
Ubuntu
Nesta analise comparativa entre distribuições o Ubuntu foi já referido relativamente
a algumas caracterı́sticas, mas foi de certa forma deixado de parte. Isto porque as suas
caracterı́sticas são muito idênticas ao Debian, sua distribuição “mãe”. Há no entanto
que realçar algumas caracterı́sticas que terão importância quando da sua integração neste
servidor integrado que é a IPBrick.
24
Plataformas Tecnológicas
O Ubuntu, por ser baseado na ramificação unstable do Debian, é a distribuição que
apresenta as versões mais recentes dos pacotes incluı́dos. Este factor a nı́vel de integração
vai ser tão mais importante quanto maior for o salto entre as versões. Aliás esta é uma
tarefa essencial neste objectivo de integração da IPbrick com várias distribuições de Linux
como SO de base: estudar essas diferenças e actuar consoante elas. Como exemplo, nas
versões usadas, temos alguns módulos configurados de forma diferente que terão que ir
de base no servidor web e uma configuração diferente dos PAM’s, dois pormenores muito
importantes sem os quais a IPBrick não funcionará correctamente.
2.5
Programação
2.5.1
PHP
PHP (PHP: Hypertext Preprocessor) é uma linguagem de script open source de uso
geral, muito utilizada e especialmente preparada para o desenvolvimento de aplicações
Web. É embutı́vel dentro do HTML.
A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados
por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto
de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi
lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms
Interpreter, um interpretador de comandos SQL. Mais tarde, Zeev Suraski desenvolveu o
analisador do PHP 3 que contava com o primeiro recurso de orientação a objectos [7].
Caracterı́sticas:
• Velocidade e robustez
• Estruturação e orientação a objecto
• Portabilidade - independência de plataforma - escreva uma vez e “corre” em qualquer
lugar.
• Tipos gerados dinâmicamente
• Sintaxe similar a Linguagem C/C++ e PERL
Em Junho de 2004 foi lançada a versão 5 do PHP, introduzindo um novo modelo de
orientação a objecto, como por exemplo:
• Reformulação dos Construtores e adição de Destructores
• Visibilidade de acesso
• Abstracção de objecto
• Interfaces de objectos
2.5 Programação
25
O tratamento de objectos do PHP foi completamente reescrito, permitindo um desempenho melhor e mais vantagens. Enquanto na versão anterior era preciso muito esforço
para atender à orientação a objectos e aos padrões de projectos (alguns não eram possı́veis),
o PHP 5 veio para sanar essa deficiência e facilitar a vida aos programadores.
A interface de configuração da IPBrick é uma aplicação PHP. Daı́ a importância de
explorar esta tecnologia. Mas a influência do PHP na IPBrick vai mais além da mais
comum utilização para a aplicação web. Esta ferramenta é explorada mais profundamente
para diversas tarefas a nı́vel de interacção com o sistema e em diversas tarefas de integração
com outras aplicações.
Relativamente à utilização do PHP neste projecto, é necessário avaliar duas vertentes:
• Actualização: Na versão anterior da IPBrick usava-se o PHP 4.3. É necessário estudar as alterações e implicações na codificação antiga assim como novas funcionalidades que se podem aproveitar.
• Nova estrutura: Como se vai utilizar e modificar o PHP 5 para construir a camada
de abstracção proposta, tornando a IPbrick funcional e idependente, com vários
sistemas operativos de base.
2.5.2
JavaScript
O JavaScript é uma linguagem de scripting utilizada em desenvolvimento web da óptica
do cliente. O seu nome oficial é ECMAScript, cujo desenvolvimento é mantido pela organização ECMA. O standard é baseado em JavaScript (Netscape) e em JScript (Microsoft),
e chama-se ECMA-262.
Esta linguagem foi inventada por Brendan Eich para o Netscape Navigator 2.0 e apareceu em todos os navegadores web da Netscape e da Microsoft desde 1996. Foi influenciada
por muitas linguagens e desenhada para se parecer com Java, só que mais fácil para se
trabalhar com ela [8].
Algumas caracterı́sticas de destaque:
• Desenhada para dar interactividade às páginas HTML
• É uma linguagem de scripting
• Embutivel no HTML
• Linguagem interpretada e leve.
• É livre. Qualquer um pode usar.
Na IPBrick o JavaScript é uma tecnologia muito usada e com tendência a ser mais usado
e de forma mais complexa. Na versão da IPBrick da qual se parte para este projecto, o
JavaScript é usado embebido no HTML com uma estrutura definida e é utilizado de uma
forma bastante simplificada maioritariamente para validação e popups de confirmação.
26
Plataformas Tecnológicas
Figura 2.10: Modelo de funcionamento do AJAX [1]
Relativamente à implementação que se pretende para a nova versão, o JavaScript
de estar organizado de uma forma estruturada desde a organização de ficheiros até à
organização do código. Isto enquadrado obviamente na arquitectura que se definir. A
nı́vel de interactividade com o sistema não terá influência visto que se esta a falar de um
linguagem que é interpretada no cliente, no navegador.
2.5.3
AJAX
AJAX (Asynchronous JavaScript And XML) é o uso sistemático de tecnologias, como
Javascript e XML, providas por navegadores web para tornar páginas mais interactivas com
o usuário, utilizando-se de solicitações assı́ncronas ao servidor. AJAX não é somente um
novo modelo, é também uma iniciativa na construção de aplicações web mais dinâmicas e
criativas. AJAX não é uma tecnologia, são realmente várias tecnologias conhecidas juntas,
cada uma fazendo sua parte, oferecendo novas funcionalidades e uma maior dinâmica às
páginas e aplicações web [9].
É AJAX é uma ferramenta muito importante no desenvolvimento web actual, permitindo dar dinamismo e eficácia à utilização de páginas e aplicações web. Isto acontece
principalmente porque existem frameworks e bibliotecas de efeitos que facilitam a vida aos
programadores. O modelo de funcionamento do AJAX é apresentado na Figura 2.10.
As primeiras inclusões de AJAX na IPBrick foram feitas apenas recentemente, não
tendo saı́do numa versão final comercializada com esta tecnologia. No entanto, tendo
em conta a atitude da iPortalMais em estar na vanguarda tecnológica, adivinha-se uma
IPBrick mais ao estilo AJAX num futuro próximo. Isto implica que a versão que se está
a desenvolver com este trabalho prepare esta inclusão, de acordo com a nova estrutura e
os parâmetros que estão a ser estabelecidos.
2.6 Resumo
27
Relativamente à parte de abstracção do SO, não terá que haver preocupações nesta
integração, pois estamos a falar de tecnologias que funcionam praticamente no lado do
cliente. Ao preparar a nova organização é necessário ter em conta que a utilização de
AJAX vai exigir a inclusão de diversos scripts organizados de uma forma especı́fica, assim
como estarem com permissões de acesso do browser. Um exemplo é apresentado de seguida:
/frameworks
/js
/ajax
/css
Neste exemplo de organização, mostram-se as diferentes componentes de uma estrutura
AJAX onde /frameworks contem os ficheiros relativos às frameworks que se utilizarem, /js
inclui os scripts de JavaScript de efeitos, comportamentos, etc. e a pasta /ajax contem
scripts que vão lidar com a base de dados e construir o XML necessário. A pasta /css já
é utilizada e contem os CSS’s necessários utilizados para apresentação.
2.6
Resumo
Neste capı́tulo fez-se uma introdução às tecnologias envolvidas mais importantes, que
serão a base deste projecto.
Nesta altura da dissertação já se deve conseguir prever de que forma cada tecnologia
vai influenciar o desenvolvimento deste projecto. Deve também ser possı́vel ter uma ideia
clara do que é a IPBrick como conceito e conhecer a filosofia e modo de funcionamento da
aplicação de configuração.
Foi apresentada uma secção de outras soluções de administração de sistemas presentes
no mercado, para se poder avaliar a posição da IPBrick a nı́vel tecnológico e compará-la
com outras soluções existentes.
Outra secção apresenta sucintamente algumas linguagens de programação usadas e a
sua influência no projecto.
Destaca-se ainda que foram apresentadas as três distribuições que vão ser usadas para o
desenvolvimento do prototipo da IPBrick 5. Destacou-se também os pontos que distinguem
estas distribuições e as áreas mais criticas de análise inter-distribuição.
28
Plataformas Tecnológicas
Capı́tulo 3
Requisitos
Neste capı́tulo vai-se fazer uma aproximação ao problema a nı́vel mais técnico. Apresenta-se aqui uma descrição geral do que se pretende implementar, separando por secções
funcionais. Cada uma dessas secções é analisada separadamente e daı́ resultarão os requisitos deste projecto como um todo. Um resumo dos requisitos será apresentado no fim
do capı́tulo com a especificação dos que vão ser implementados pelo autor e que serão
desenvolvidos nos capı́tulos seguintes desta dissertação.
Pretende-se que a IPBrick seja configurada de forma independente do sistema operativo
base. Na prática, a IPBrick deverá existir não apenas com o Debian Linux como sistema
operativo mas também com outras distribuições de Linux. Quer isso dizer que, quando
se instala a IPBrick, deverá poder-se escolher a distribuição de Linux que queremos como
sistema operativo.
Em termos de funcionamento não deverá haver alterações. Os serviços vigentes na
versão 4.3 da aplicação são mantidos, assim como a aplicação de configuração que deverá
ser usada de forma única pelo utilizador independentemente do SO de base. Isto implica
que a nova versão da IPBrick será construı́da sobre a versão actual, a versão 4.3.
A IPBrick 5 deverá ter uma instalação e configuração de forma automática com diversos
sistemas operativos à escolha. Mais propriamente várias distribuições de Linux à escolha,
nomeadamente o Debian, Ubuntu ou Red Hat.
3.1
Instalação
A IPBrick é distribuı́da para os clientes e parceiros num DVD, o qual, quando inserido
num computador, deverá efectuar toda a instalação automática após escolhido o sistema
operativo base pretendido.
29
30
Requisitos
No inı́cio da instalação deve ser ”perguntado”ao utilizador qual a distribuição Linux a
instalar. A restante instalação será feita de forma automática sendo o disco ejectado no
caso da instalação ser bem sucedida.
Após a finalização deste processo o computador requer um reinı́cio do sistema, depois
do qual estará instalado e funcional um sistema operativo IPBrick baseado na distribuição
Linux escolhida e uma configuração base padrão da IPBrick.
3.2
Serviços
Os serviços que a IPBrick inclui devem ser disponibilizados nas versões que o novo
sistema operativo base dispõe.
Em caso de ser um serviço que não conste no repositório de uma distribuição, passa a
ser incluı́do no secção “IPBrick” do repositório.
Os serviços que a IPBrick tem que disponibilizar são os disponibilizados na versão
anterior. Estes serviços foram apresentados na Tabela 2.1 e Tabela 2.2, no Capı́tulo 2. Os
serviços opcionais apresentados não são incluidos na implementação deste protótipo.
3.3
Interface e Base de Dados
A interface de configuração da IPBrick deverá manter-se e ser independente do sistema.
Aliás, será igual para qualquer sistema e comunicará com este sempre de forma igual.
A aplicação de configuração da IPBrick deverá funcionar em PHP 5.
Neste fase do trabalho a abordagem limitar-se-á a garantir que a aplicação é operacional
nos diferentes sistemas e nas actualizações que foram efectuadas. É necessário uma especial
atenção para algumas tecnologias que sofreram uma maior actualização ou alteração como
é o caso do PHP 5, que tem uma forte influencia no motor de configuração da IPBrick e
sofreu alterações que implicam modificação do código.
A nova versão incluirá todo o desenvolvimento feito até ao update 19 da versão 4.3.
3.3.1
Gestão de Pacotes e Actualizações
O sistema deverá poder ser actualizado pela interface da IPbrick.
A IPBrick dispõe de uma interface de actualização que é um front-end para o gestor
de actualizações do sistema operativo base instalado. Esta interface / front-end devem
estar preparados para interagir com o gestor de actualizações adequado: dpkg no caso do
Debian e Ubuntu, e RPM no caso de Red Hat.
As actualizações devem garantir a estabilidade do sistema assim como a estabilidade
da aplicação de configuração da IPBrick.
3.4 Caracterı́sticas de Desenvolvimento da IPBrick 5
3.4
31
Caracterı́sticas de Desenvolvimento da IPBrick 5
A nova versão da IPBrick deverá ter as seguintes caracterı́sticas:
• Manter o conceito de IPBrick, equivalente à versão anterior.
• Ter um motor de criação de um DVD com a IPBrick, contendo os diversos sistemas
operativos suportados
• Ter uma instalação automatizada de todo o sistema com permissão para escolher o
sistema operativo que lhe servirá de base.
• Ter um motor de criação de pacotes de software, tendo este que suportar os diversos
sistemas disponibilizados pela IPBrick.
• Ter o repositório actual da IPBrick/Debian actualizado para a nova versão estável
(etch) e construir uma estrutura de repositórios adequada para os diversos SO’s
também incluidos. Isto é: Ubuntu Gutsy e Red Hat Enterprise Linux.
• A aplicação de configuração IPBrick deverá configurar qualquer serviço e sistema
operativo suportado de forma idêntica ao que acontecia com a versão anterior.
• A estrutura de desenvolvimento da IPBrick deverá estar preparada de forma a que
haja uma abstracção entre a configuração de cada serviço e o sistema operativo de
base, para que a configuração por parte do utilizador seja sempre a mesma independentemente do SO instalado.
• O repositório da aplicação de configuração deve estar de forma a incluir uma separação clara da nova estrutura definida, assim como de toda a documentação de
desenvolvimento deste processo.
3.5
Resumo dos Requisitos
Seguidamente apresentam-se um resumo dos requisitos:
• Deve ser mantido o conceito de IPBrick.
• A IPBrick deverá incluir possibilidade de configuração para três distribuições de
Linux de base: Debian etch, o Ubuntu Gutsy e Red Hat Enterprise Linux.
• A configuração da IPBrick deve ser feita de forma igual pelo utilizador, independentemente do sistema operativo que estiver como base.
• A IPBrick 5 e as aplicações que vão integradas de base deverão usar PHP 5
• Os serviços fornecidos pela IPBrick devem ser os mesmos que são disponibilizados
na IPBrick 4.3.
32
Requisitos
• A interface web nao deverá ser alterada. Deve manter o aspecto e funcionalidades
da IPBrick 4.3.
Capı́tulo 4
Arquitectura e Projecto da
Aplicação
Neste capı́tulo apresenta-se a modelação para o que se quer da IPBrick 5 assim como
a abordagem prática seguida para satisfazer os requisitos definidos.
4.1
Análise à IPBrick V4.3
Começa-se com uma análise da estrutura e modo de funcionamento da versão anterior
da IPBrick para se perceber o que é necessário alterar. Dá-se também destaque aos pontos
mais fracos da aplicação para que se possa actuar nesses aspectos e corrigi-los.
A IPBrick 4.3 está estruturada de uma forma integrada, sendo pouco clara a distinção
entre as várias camadas que a constituem.
A organização dos ficheiros da IPBrick 4.3 é a seguinte:
/opt/ipbox/include
/opt/ipbox/LIB
/opt/ipbox/PHP
/opt/ipbox/scripts
/opt/ipbox/libs
/opt/ipbox/log
/opt/ipbox/site
Pela estrutura de ficheiros pode notar-se uma organização própria da IPBrick. Nesta
versão os ficheiros relativos à apresentação estão na pasta include, dentro da qual estão
separados por serviços e dentro destes encontram-se os ficheiros de apresentação, assim
como os de acção.
Esta versão apresenta algumas incoerência notórias como a nomeação dos ficheiros.
Por exemplo os ficheiros .php de acções, apresentam tanto nomes em inglês como em
33
34
Arquitectura e Projecto da Aplicação
Figura 4.1: Modelo de funcionamento da IPBrick 4.3
português e sufixos que não seguem um padrão. Isto é devido à origem da IPBrick, que
é uma evolução de um produto anterior chamado IPBox e daı́ até o nome da pasta que
contém a aplicação se ter mantido.
Outra caracterı́stica de funcionamento importantes é a forma como a aplicação submete as configurações. A IPBrick tem um motor de configuração que é responsável pela
geração e aplicação de configurações no sistema, assim como outras alterações necessárias
à configuração propriamente dita do sistema. Esta é uma caracterı́stica muito importante
neste trabalho, porque é a parte em que há mais modificações.
Na versão 4.3 há uma mistura do motor de configuração propriamente dito com a
aplicação vista pelo utilizador e a apresentação. Além disso, o acesso à base de dados é
feito de uma forma diversificada por ficheiros de acção, scripts e ficheiros de apresentação.
Os templates de configuração são scripts PHP e estão localizados na raı́z. Na raı́z
estão também localizados ficheiros de configuração geral da IPBrick.
Em relação ao funcionamento a IPBrick usa uma base de dados onde guarda todas a
configurações efectuadas. Após efectuar a confirmação de configurações, é executado um
script que gere a sequência de ordens a ser executadas no sistema.
É importante realçar este funcionamento da IPBrick: o facto de se fazer uma configuração determinada de um ou vários serviços e no final, para que as configurações
façam efeito, há a necessidade de submeter as definições. Isto demonstra a estrutura do
funcionamento da actual interface de configuração e é também este funcionamento que se
vai manter na nova versão. Apresenta-se na Figura 4.1 o explicado.
4.2
Nova Aplicação de Configuração
Na Figura 4.2 da página 35 apresenta-se o esquema da nova arquitectura. Pode-se
verificar que há uma clara separação entre a interface de gestão da configuração para o
interpretador, que representa o motor de configuração.
Na definição da nova arquitectura para a IPBrick é necessário ter em conta não só
as funcionalidades pretendidas por este projecto mas também as restantes caracterı́sticas
idealizadas para a nova versão 5 da IPBrick. Esta análise mais geral é necessária pois estáse a trabalhar na base e definir propriedades que vão ter influência em todo o sistema.
4.2 Nova Aplicação de Configuração
35
Figura 4.2: Abstracção da aplicação de configuração relativamente ao SO
Redefiniram-se então diversos parâmetros de modo a formar padões que servirão de
base para todo o novo desenvolvimento da IPBrick 5.
4.2.1
Camadas
O código do software IPBrick está dividido nas seguintes camadas:
• Gráfico
• Tratamento de dados e JavaScript
• Núcleo ou Dados e Base de dados
• Sistema Operativo
Gráfico
Esta camada é responsável unicamente pela aspecto gráfico da aplicação. Encontra-se
no nı́vel 4. É uma camada que não vai estar presente nos desenvolvimentos abrangidos
por esta dissertação.
Tratamento de Dados
Esta camada prepara, controla e passa os dados à camada gráfica. Encontra-se no
nı́vel 3.
JavaScript
Esta camada prepara, controla e passa os dados a camada gráfica em Java script/AJAX,
ou por outras palavras do lado do cliente. Encontra-se no nı́vel 3.
36
Arquitectura e Projecto da Aplicação
Núcleo ou Dados
Esta camada tem as funções, binários e scripts necessárias para interagir com o sistema
operativo e base de dados. Encontra-se no nı́vel 2.
Base de Dados
Esta camada tem as funções necessárias para aceder e consultar dados das base de
dados necessárias. Encontra-se no nı́vel 2.
Sistema Operativo
Esta camada é a base do sistema. Encontra-se no nı́vel 1.
4.2.2
Estrutura de Ficheiros
Esta arquitectura conduziu à seguinte estrutura de ficheiros:
Aplicação
/opt/ipbrick/temp
/opt/ipbrick/data
/opt/ipbrick/core
/opt/ipbrick/core/LIB
/opt/ipbrick/core/libs
/opt/ipbrick/core/lang
/opt/ipbrick/core/tpl
/opt/ipbrick/core/scripts
/opt/ipbrick/graphic
/opt/ipbrick/JS
/opt/ipbrick/PHP
/opt/ipbrick/site
/opt/ipbrick/log
/home1/_ipbrick/backupDB
/home1/_ipbrick/log
Outras: Desenvolvimento
~/public_html/work/ipbrick/Software/DEBIAN
~/public_html/work/ipbrick/Software/REDHAT
~/public_html/work/ipbrick/Software/UBUNTU
~/public_html/work/ipbrick/SQL
4.2 Nova Aplicação de Configuração
4.2.3
37
IPBrick Development Standards
Na restruturação do código tendo em vista as novas especificações e alterações, há a
necessidade de criar uma base de definições e padrões que garantam um desenvolvimento
coerente pela equipa de desenvolvimento actual e futura.
Existe portanto um documento nascido de uma reunião de ideias, necessidades e discussão, de padrões para o desenvolvimento da IPBrick. Este documento é actualizado no
decorrer desta implementação e é uma documentação essencial tendo em vista a evolução
e trabalho futuro deste software.
Este documento inclui basicamente os padrões e definições que este novo modelo agrega
e que se exemplifica de seguida:
Variáveis
Usar sempre nomes em inglês
Variável global
$_IPBRICK
$_IPBRICK["field"]["specific_var"]
exemplos:
$_IPBRICK["dbremote"]["srvipbrick"] = $dbsrvipbrick_remoto
Prefixos de Scripts
lst
view
act
ins
ins_act
mod
mod_act
del
del_act
Nomes dos Ficheiros Geradores de Configuração
As funç~
oes de export tem nomes padronizados da seguinte forma:
export_serviço_distribuiç~
ao
exemplo:
export_hosts_debian
tags para Templates de Configuração
Os templates de configuraç~
ao s~
ao apenasd e texto e cont^
em tags com nomes no seguinte formato:
38
Arquitectura e Projecto da Aplicação
Figura 4.3: Novo modelo de funcionamento para IPBrick 5
---nometag--exemplo:
---ipbrickhostname---
4.2.4
Serviços
Abstrair a IPBrick do sistema operativo base é abstrair cada serviço fornecido e configurável por ela. Assim faz sentido desenvolver este projecto seguindo essa mesma filosofia:
abordando serviço a serviço e trabalhando serviço a serviço.
As alterações necessárias vão ser realizadas mantendo a lógica funcional da versão 4.3.
A abordagem para conseguir que a aplicação se comportasse de forma a configurar
o sistema consoante o SO instalado foi reestruturar o código do motor configuração. A
consequência foi “partir” o código em funções e separar o quanto possı́vel funcionalidades, retirando as acções própriamente ditas desse script principal e agrupar as acções
em ficheiros, que serão chamados pelo script principal consoante as necessidades.
O que eram scripts mais extensos, que englobavam o processo de configuração total
do sistema passam a ser pequenos funções ou grupos de funções que ou são genéricos ou
chamam a especificidade necessária para o que estão destinados. Estas funções usam a
nova variável global que identifica o SO. O objectivo é poder, para cada ordem dada pelo
utilizador, assegurar que a função chamada é orientada ao SO instalado.
Para melhor esclarecer a abordagem, apresentam-se de seguida na Figura 4.3 o novo
modelo para a IPBrick 5, que se pode comparar com o modelo da versão 4.3 anteriormente
apresentado na Figura 4.1 da página 34.
4.3
O Pacote IPBrick
O pacote IPBrick inclui à aplicação de configuração e interface web. Este pacote além
de representar um dos blocos da IPBrick, é ainda a componente mais especı́fica deste
servidor integrado.
4.4 Gestão de Actualizações e Software
39
Instala todas as bases de dados que servem de base ao funcionamento da interface
de configuração de todos os serviços fornecidos pela IPBrick. São também instalados
os ficheiros da interface de configuração e todas as aplicações que vão integrados com a
IPBrick de base:
• Contacts (Gestão de contactos da IPBrick)
• Ibquota (gestão de quotas por utilizador)
• Horde (plataforma de webmail, calendário e gestão de contactos)
• Wcalendar (web agenda ADN calendar)
• myIPBrick (módulo de administração por utilizador da IPBrick)
É necessária a construção deste pacote que será incluido no processo de instalação da
IPBrick.
4.4
Gestão de Actualizações e Software
Para se conseguir o especificado em termos da actualização da IPBrick, é necessário
ter um motor de construção de pacotes que aborde genéricamente os pacotes IPBrick e
contemple a especificidade de cada distribuição de Linux.
Entre as três distribuições que se abordam, a gestão de pacotes é baseada na mesma
ferramenta (dpkg) no Debian e no Ubuntu, enquanto que no Red Hat é um sistema completamente diferente (rpm). Isto implica que a geração de pacotes tem que estar automatizada
de forma a criar a estrutura vocacionada para o sistema de destino ou pacotes genéricos
que contenham todos os ficheiros necessários a qualquer distribuição.
Nesta dissertação vai-se apenas analisar a estruturação para a criação de pacotes IPBrick, especificando o modelo utilizado, que vai ser utilizado para construir o pacote
IPBrick para Debian e Ubuntu.
Na construção de pacotes IPBrick distinguem-se três fases: pré-instalação, pós-instalação
e pós-remoção. Como o próprio nome indica e foi explicado no Capı́tulo 2, Secção 2.4.4,
estas diferentes partes referem-se às instruções a efectuar antes da instalação, depois da
instalação e depois da remoção de cada pacote. A instalação própriamente dita é gerida
automáticamente pelo dpkg (ou rpm no caso do Red Hat).
Apresentam-se de seguida, as diversas fases da instalação assim como a descrição das
tarefas caracterı́sticas de um pacote IPBrick, para cada uma.
4.4.1
Pré-instalação
A secção de pré-instalação deverá começar com um cabeçalho que contenha as caracterı́sticas do pacote, o seu nome, a sua versão, a descrição e variáveis IPBrick necessárias.
40
Arquitectura e Projecto da Aplicação
Deverá também conter uma verificação das dependências especı́ficas de pacotes IPBrick, assim como de conflitos. Uma verificação de dependências e conflitos já é utilizada
por omissão pelo proprio motor do dpkg. Esta é uma verificação extra para uma possivel
especificidade interna da IPBrick.
Outra secção presente na pré e também nos outros scripts de instalação é um conjunto
de variáveis e funções que são fixas. Elas vão ser responsáveis por diversas tarefas durante
o processo de instalação do pacote, como por exemplo, ligação à base de dados, obtenção
de variáveis, tratamento de dados, etc.
Outra secção que também está presente nos três scripts de instalação do pacote é a
secção de base de dados. Nesta secção são definidas as ordens a executar. Isto é: as
alterações pretendidas para as diversas fases da instalação. Nesta secção de pré-instalação
devem ser inseridas as modificações especı́ficas da aplicação ou serviço que o pacote inclui.
Esta secção de base de dados deve estar preparada para desfazer as alterações caso algum
erro ocorra, e é por este motivo que está nesta fase de pré-instalação.
4.4.2
Pós-instalação
O script de pós-instalação contém também a mesma parte de variáveis equivalente ao
de pré-instalação por uma questão de validação.
A secção de funções genéricas também é igual ou muito idêntica pois são funções
necessárias para as diversas partes do script.
Na secção de base de dados estão as instruções que guardam a confirmação da instalação. Para que fique o registo e a condição do pacote instalado.
4.4.3
Pós-remoção
No script de pós-remoção as secções são idênticas. Nele vão todas as tarefas a ser
executadas após a remoção de um pacote IPBrick.
4.5
Planeamento
Como a aplicação é complexa procurou-se definir e escalonar tarefas de forma a ser
exequı́vel de implementar e testar por patamares. Seguiu-se então a seguinte lista de
tarefas, que foi usada como plano de projecto:
• Instalar um computador com cada distribuição de Linux.
• Estudar e documentar as configurações dos serviços a disponibilizar para cada distribuição.
• Construir o procedimento automatizado de configuração, serviço a serviço.
• Instalar a versão anterior da aplicação de configuração da IPBrick (a 4.3) com updates
até ao 19.
4.6 Resumo
41
• Modificar o código da aplicação de configuração IPBrick para que esta esteja funcional nas novas versões de tecnologia que a suportam, assim como as modificações
que se definiram ser necessárias para a nova arquitectura.
• Configurar e construir um procedimento para automatizar a configuração de cada
um dos serviços.
• Testar geração e aplicação de configurações de serviços.
• Instalar as aplicações integradas de base na IPBrick. Adaptar estas às novas caracterı́sticas do software.
4.6
Resumo
Neste capı́tulo descreve-se o modelo a implementar para a satisfação dos requisitos
definidos para a aplicação de configuração da IPBrick 5.
É feita uma análise por partes para uma melhor compreensão das várias áreas de acção
e as definições feitas para cada uma.
Conclui-se este capı́tulo com um resumo dar tarefas definidas para a implementação.
42
Arquitectura e Projecto da Aplicação
Capı́tulo 5
Implementação
Neste capı́tulo apresenta-se a implementação da solução descrita no capı́tulo anterior
através de um exemplo: o servidor Web Apache.
5.1
Exemplo Serviço: Apache2
Este serviço tem a particularidade de ser um dos serviços com maiores alterações, pois
sofreu uma actualização fortı́ssima da versão 1.3 para a versão 2. Esta alteração exigiu
uma grande restruturação no código da IPBrick pois a filosofia de geração teve que ser
completamente remodelada.
O processo da submissão das configurações que se explica é da responsabilidade do
motor de configuração da IPBrick. Este motor tem um script principal chamado “actualização de definições” que vai gerir o processo, chamando outros scripts especı́ficos de
geração, aplicação e outras ordens ao sistema.
5.1.1
Actualização de Definições
Como foi já explicado, depois de fazer alterações na configuração do sistema é necessário
aplicar definições para que as alterações provoquem efeito. Quando o utilizador carrega em
actualizar definições é chamado o script actualiza_def que está dividido em três partes
fundamentais: geração, aplicação e reinı́cio de serviços.
Apresenta-se de seguida excerto exemplificativo de como este script vai chamar os
exemplificados antes para aplicara configuração:
<?
// GERAÇ~
AO
...
//**************************** Apache *******************************//
if (count($alterado_apache2)>0)
43
44
Implementação
{
include ("../include/apache/export_webserver.php");
if ($debian) export_apache2_debian ($socket_gcf, $dominio, $nome_serv, $ip_novo);
if ($ubuntu) export_apache2_ubuntu ($socket_gcf, $dominio, $nome_serv, $ip_novo);
if ($redhat) export_apache2_redhat ($socket_gcf, $dominio, $nome_serv, $ip_novo);
...
}
// APLICAÇ~
AO
if (count($alterado_apache2)>0)
{
include ("../include/apache/config_webserver.php");
if ($debian) apply_apache2_debian ($ipsocket);
if ($ubuntu) apply_apache2_ubuntu ($ipsocket);
if ($redhat) apply_apache2_redhat ($ipsocket);
}
// REINICIO DE SERVIÇOS
if (count($alterado_apache2)>0)
{
$ipsocket->IpSocket_Write("/etc/init.d/apache2 reload");
}
?>
Nas subsecções que se seguem descreve-se a implementação de cada uma das 3 partes
acima mencionada.
5.1.2
Script de Geração
A componente da geração dos ficheiros de configuração do Apache2 diz respeito à
configuração de virtualhosts, os quais podem ser criados, modificados e removidos através
da aplicação de configuração da IPBrick.
Apresentam-se excertos do código de forma a perceber-se a sua estrutura:
<?
function export_apache2_mainsites_debian ($socket, $domain, $servername, $int_ip)
{
//instruç~
oes necessárias para utilizar os templates e gerar os sites..
...
}
function export_apache2_mainsites_ubuntu ($socket, $domain, $servername, $int_ip)
{
export_apache2_mainsites_debian ($socket, $domain, $servername, $int_ip);
5.1 Exemplo Serviço: Apache2
45
}
function export_apache2_mainsites_redhat ($socket, $domain, $servername, $int_ip)
{
export_apache2_mainsites_debian ($socket, $domain, $servername, $int_ip);
}
?>
Como se pode verificar, a maneira de lidar com as configurações é idêntica para as três
distribuições.
5.1.3
Templates dos Sites Base da IPBrick
A IPBrick usa templates de configuração que na versão anterior eram compostos por
partes de texto e partes dinâmicas de PHP mas que, para a versão 5, se definiu serem completamente ficheiros de texto com tags que serão substituidas pelo motor de configuração
da IPBrick.
Estes templates são usados pelo script de geração para gerar os ficheiros de configuração
com as caracterı́sticas pretendidas.
Como exemplo apresenta-se um excerto do template de um dos sites base da IPBrick:
<VirtualHost *:443 >
ServerAdmin webadmin@---fullhostname--DocumentRoot ---ipbrickrootpath---site
ServerName ---fullhostname--ErrorLog ---ipbrickrootpath---log/apache/error.log
TransferLog ---ipbrickrootpath---log/apache/access.log
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
Alias /ssh ---ipbrickrootpath---data/utilitarios/ssh
Alias /vnc-java ---ipbrickrootpath---data/utilitarios/vnc-java
Alias /awstatsicons /usr/share/awstats/icon
php_admin_value safe_mode 0
php_admin_value open_basedir none
php_admin_value upload_max_filesize 500M
php_admin_value post_max_size 500M
---setenvif--ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order deny,allow
46
Implementação
---allowdeny--</Directory>
---aclrestrict--</VirtualHost>
5.1.4
Script de Aplicação
Este script é responsável por substituir a configuração existente no sistema, pela gerada pelo script de geração. Muitas vezes só é necessário copiar os ficheiros para locais
determinados, outras vezes é necessário realizar outras tarefas como alteração de variáveis,
modificação de outros ficheiros além dos gerados, alteração de permissões, etc.
Apresenta-se de seguida um exemplo da sua codificação:
<?
function apply_apache2_debian ($ipsocket)
{
// instruç~
oes necessária à aplicaç~
ao das configuraç~
oes
while(..) {
install_main_sitefiles ($ipsocket);
install_specific_sitefiles ($ipsocket, $idapache, $servername);
install_awstats ($ipsocket, $idapache, $servername);
}
}
function install_main_sitefiles ($ipsocket)
{
//copia sites principais
}
function install_specific_sitefiles ($ipsocket, $idapache, $servername)
{
// copia sites especificos
}
function install_awstats ($ipsocket, $idapache, $servername)
{
//copia estatisticas para o sitio respectivo.
}
?>
5.2 Construção do Pacote IPBrick
5.2
47
Construção do Pacote IPBrick
Como tarefa final apresenta-se o modo de criação do pacote IPBrick.
Primeiramente é necessário criar a estrutura de ficheiros desde a raiz. Depois trata-se
da compilação necessária dos ficheiros e definição das permissões adequadas para cada
ficheiro.
Após esta preparação é necessário criar os scripts de instalação.
No final obteremos uma estrutura como se indica de seguida:
/ipbrick_5_0/
/ipbrick_5_0/DEBIAN/
/ipbrick_5_0/DEBIAN/control
/ipbrick_5_0/DEBIAN/preinst
/ipbrick_5_0/DEBIAN/postinst
/ipbrick_5_0/opt
/ipbrick_5_0/opt/<...>
/ipbrick_5_0/...
Apresentam-se exemplos dos scripts de instalação no Anexo B
5.3
Testes
Neste projecto os testes foram efectuados repetidamente em cada fase do trabalho,
diversas vezes. Este é um trabalho de experimentação que exigiu uma verificação constante
a cada passo, cada definição e alteração de configuração que se realizaram.
Salienta-se que ao longo do tempo de desenvolvimento do projecto, efectuaram-se reuniões semanais nas quais se discutia mais as questões de projecto, sendo o restante tempo
dedicado à implementação e testes. Daı́ a relevância dos testes neste trabalho e a sua
constância.
Apresenta-se uma lista dos testes mais relevantes efectuados no Anexo A
5.4
Resumo
Este capı́tulo ilustrou o modelo de implementação da arquitectura definida anteriormente através dum exemplo: o serviço Web Apache.
Obviamente os pormenores da implementação variam de serviço para serviço, mas o
processo é suficientemente uniforme para poder ser aplicado a todos os serviços e tomar
em consideração o sistema operativo base instalado.
48
Implementação
Capı́tulo 6
Conclusões e Trabalho Futuro
O panorama a nı́vel de ferramentas integradas de administração de sistema para Linux
é diversificado. As soluções comerciais idênticas à IPBrick estão habitualmente dependentes de um hardware especı́fico. As caracterı́sticas de independência de hardware e uma
interface de configuração com uma clara separação entre uma configuração simples e uma
avançada, marcam uma diferença da IPBrick para outras soluções de administração de
sistema.
A IPBrick é muito mais que um sistema operativo. É um servidor integrado completo que tem alguns anos de desenvolvimento e que partiu das necessidades concretas de
empresas em todo o mundo. É um produto com caracterı́sticas próprias, em constante
desenvolvimento que está a ganhar popularidade em Portugal e pelo mundo, havendo cada
vez mais parcerias entre a iPortalMais e empresas estrangeiras.
Para a iPortalMais a IPBrick é uma base de desenvolvimento muito importante. Além
do valor do produto por si, é uma base de desenvolvimento para outros produtos que a
empresa fornece como é o caso do gestor documental iPortalDoc.
Ter a IPBrick disponı́vel em diversos sistemas operativos base surgiu da interacção
com diversas entidades empresariais. É uma ideia inovadora que poderá abrir novas oportunidades de negócio para a iPortalMais.
O projecto abordado nesta dissertação é parte de um projecto mais geral que é o
desenvolvimento da versão 5 da IPBrick em todas as suas áreas.
6.1
Trabalho Realizado
Neste projecto trabalhou-se essencialmente sobre a aplicação de configuração da IPBrick e a preparação desta para funcionar com três distribuições de Linux: Debian etch,
o Ubuntu Gutsy e Red Hat Enterprise Linux.
49
50
Conclusões e Trabalho Futuro
Primeiramente actualizaram-se os serviços para as versões pretendidas das três distribuições e estudou-se as diferenças de configuração para estas. Sendo este trabalho
desenvolvido em equipa.
Modificou-se a estrutura do código existente na versão 4.3 de forma a permitir uma
configuração adequada ao sistema operativo que estiver instalado de base. Desta modificação resultou uma maior separação do código em funções especı́ficas para cada sistema
operativo. O script responsável que incluı́a todas as instruções de submissão das aplicações
passou a ter um papel mais de gestão, sendo as acções propriamente ditas chamadas através
deste, consoante as necessidades do sistema instalado.
O desenvolvimento foi acompanhado de testes que permitiram o ajuste de configuração
e a confirmação do funcionamento desta ferramenta.
6.2
Trabalho Futuro
A IPBrick como servidor integrado completo é um produto para servir organizações.
Este trabalho originou uma abertura de portas a nı́vel de interacção com outras plataformas.
No seguimento desta maior abrangência da IPBrick há oportunidade de integrar ferramentas especı́ficas que apenas trabalham noutras plataformas.
Outro trabalho de interesse é utilizar os motores e procedimentos criados para inserir
outros sistemas operativos como o FreeBSD.
Estando a base da IPBrick preparada, há trabalho a fazer a outros nı́veis como a
nı́vel gráfico que tem estado em constante desenvolvimento. A utilização de AJAX é um
exemplo disso. O desenho da nova versão, com uma maior independência entre as diversas
camadas de desenvolvimento, facilitará essa evolução.
Anexo A
Testes
A.1
Serviços
Rede
IP
• Configurar IP numa placa de rede.
• Configurar IP um ou mais alias numa placa de rede.
• Configurar o mapeamento de interface fı́sicas em devices logicos.
• Configurar um interface por DHCP.
• Configurar uma ligação ADSL (pppoe).
Domı́nio
• Configurar o nome e domı́nio da maquina.
Rotas
• Rota por defeito.
• Configurar rotas de rede.
• Configurar rotas de serviços.
VPN
IPSEC
• Activar e parar o serviço.
• ipsec verify
51
52
Testes
• Estabelecer uma ligação VPN.
VPN SSL
• Activar e parar o serviço.
• Criar um certificado.
• Revogar um certificado.
• Estabelecer uma vpn com o servidor.
• Testar conectividade.
• Verificar configurações atribuidas dinamicamente: servidor de dns, servidor de netbios e rotas.
• Verificar ligações activas.
PPTP
• Activar e parar o serviço.
• Configurar um acesso.
• Estabelecer uma ligação VPN.
• Verificação se o servidor de WINS atribuido funciona.
• Verificação se o servidor de DNS atribuido funciona.
• Aceder a um share smb.
• Aceder a um site web.
SSH
• Acesso ao servidor unicamente com o utilizador operator.
• Verificação que não é possivel aceder com mais nenhum utilizador para alem do
operator.
Mail
Qmail
• Activar e parar o serviço.
• Envio de email para dominio local.
A.1 Serviços
53
• Envio de email para dominio remoto pertencendo a rede de relay.
• Envio de email para dominio remoto não pertencendo a rede de relay (com autenticação).
• Rotas por dns e por smtp.
• Verificação no MX do dominio de envio.
• Verificação do HELO.
• Tamanho maximo dos emails globalmente.
• Destinarios validos.
• Remetentes invalidos.
• Gerir fila de espera dos emails.
• Relay por dominio e por email.
• Alias de mails por utilizador.
• Forward de mails por utilizador.
• Quota de mails por utilizador.
• Respostas automaticas por utilizador.
• Tamanho maximo dos emails por utilizador.
• Activar e desactivar contas de mail.
• Configurar listas de distribuição de mail.
• Copia de email.
Fetchmail
• Activar e parar o serviço.
• Push mail de um servidor POP3 caixas individuais.
• Push mail de um servidor POP3 caixas de grupo.
• Push mail de um servidor IMAP caixas individuais.
• Push mail de um servidor IMAP caixas de grupo
• Push mail de um servidor APOP (testado unicamente a sintaxe).
54
Testes
Courier IMAP e POP
• Activar e parar os serviços.
• Configurar uma conta em IMAP e IMAPs.
• Configurar uma conta em POP e POPs.
• Gerir pastas e emails.
• Testar o envio e recepção de mails.
Webmail
• Gerir pastas e emails.
• Testar o envio e recepção de mails.
• Gerir os contactos.
• Configurar o servidor de IMAP e SMTP.
Gestão de utilizadores e maquinas
• Criar utilizadores no servidor local em varias areas de trabalho.
• Criar grupos.
• Criar maquinas.
• Criar grupos de maquinas.
• Criar utilizadores no servidor remoto em varias areas de trabalho.
• Testar quota de um utilizador local e remoto.
Servidor de ficheiros e dominio
Samba
• Activar e parar o serviço.
• Aceder aos shares sem ter a máquina no dominio.
• Criar shares nas varias areas de trabalho.
• Criar shares visiveis.
• Criar shares com reciclagem.
• Criar shares com acesso de leitura por utilizador.
A.1 Serviços
55
• Criar shares com acesso de leitura e escrita por utilizador.
• Criar shares com acesso de leitura por grupo.
• Criar shares com acesso de leitura e escrita por grupo.
• Testar autenticação nas partilhas com os utilizadores (partilhas criadas e partilhas
do utilizadores).
• Colocar uma maquina no dominio.
• Testar permissões do perfil.
• Testar mapeamento das drives das homes dos utilizadores.
• Testar perfil ambulante e local.
• Testar alterar a password a partir da estação cliente.
• Testar modo PDC (com domain logon).
• Testar modo BDC com e sem domain logon.
• Testar modo STANDALONE (sem domain logon).
• Testar a biometria.
Automount
• Verificar automontagem localmente.
• Verificar automontagem entre master/slave.
Proxy
SQUID
• Activar e parar o serviço.
• Testar acesso web em modo proxy padrão.
• Testar acesso web em modo proxy transparente.
• Testar acesso web em modo proxy com autenticação LDAP.
• Configuração de proxy remotos e dominios que não usam os proxy remotos.
• Configurar o numero de processos para filtragem.
• Activar e desactivar a cache do proxy.
56
Testes
• Modificar tamanho da cache.
• Modificar localização da cache.
• Configurar endereço para as actualizações das listas negras.
• Verificar que as actualizações estão a ser realizadas com sucesso.
• Configurar as listas de acesso (ACLs).
• Testar acesso web em modo proxy com autenticação NTLM.
• Testar com anti-virus para proxy (ICAP).
Frox
• Activar e parar o serviço.
• Testar o ftp em modo transparente.
Estatisticas
• Testar estatisticas globais do proxy.
• Testar estatisticas por maquinas do proxy.
• Testar estatisticas por utilizadores do proxy.
• Geração das estatisticas globais, por maquina e por utilizador na rotação dos logs.
• Geração das estatisticas globais, por maquina e por utilizador pelo cron.
LDAP
• Configuração do ldap em modo standalone.
• Administração dos dados do ldap em modo standalone.
• Configuração do ldap em modo slave.
FTP
• Activar e parar o serviço.
• Criar, modificar e apagar contas ftp nas diferentes areas de trabalho em modo escrita
e leitura.
• Criar, modificar e apagar contas ftp nas diferentes areas de trabalho em modo leitura.
• Gerir conta/acesso ftp de acesso aos sites web.
A.1 Serviços
57
HTTP
apache2
• Activar e parar o serviço.
• Configurar para disponibilizar o site da ipbrick na interface externa ou só na interface
interna.
• Gerir sites web disponiveis na internet.
• Gerir safe mode dos sites web.
• Gerir pastas que o php pode aceder dos sites web.
• Gerir endereços dos sites web.
• Gerir endereços alternativos dos sites web.
• Gerir email do administrador os sites web.
• Gerir conta/acesso ftp de acesso aos sites web.
• Gerir localização dos sites web.
• Gerir codificação dos sites web.
• Gerir url escrito no site.
• Gerir o protocolo de acesso aos sites web: http ou https.
• Gerir alias dos sites web.
• Gerir redireccionamentos dos sites web.
• Gerir proxy inverso dos sites web.
Estatı́sticas
• Testar estatisticas do sites.
• Geração das estatisticas dos sites na rotação dos logs.
• Geração das estatisticas dos sites pelo cron.
58
Testes
DNS
• Activar e parar o serviço.
• Configurar o servidor para resolver num servidor de dns local ou remoto.
• Configurar uma zona de resolução directa master.
• Configurar uma zona de resolução directa master.
• Configurar um nome (IN A e IN PTR).
• Configurar um alias (CNAME).
• Configurar um servidor de mail (IN MX).
• Configurar uma zona de resolução inversa slave.
• Configurar uma zona de resolução inversa slave.
• Configurar forwarders.
DHCP
• Activar e parar o serviço.
• Configurar intervalos de redes para atribuição de IP dinamicamente a maquinas
desconhecidas.
• Configurar maquinas conhecidas.
• Configurar o dhcp em varias interfaces de redes.
• Configurar o Dynamic DNS.
• Configurar master/slave dhcp.
Trafego
Firewall
• Activar e parar o serviço.
• Gerir novas regras.
• Bloquear msn.
A.2 Resumo
59
QOS
• Activar e desactivar Qos.
• Gerir novas regras.
• Configuração do url de actualizações do apt.
• Configuração das chaves conhecidas dos apt.
cron
• Geração das estatisticas do proxy e dos sites.
A.2
Resumo
Neste capitulo mostram-se os testes os testes mais relevantes efectuados ao longo deste
projecto.
60
Testes
Anexo B
Construção do Pacote IPBrick
B.1
control
Source: ipbrick
Section: admin
Priority: optional
Maintainer: Support IPBrick <[email protected]>
Package: ipbrick
Architecture: all
Pre-Depends:
Version: 5.0
Description: IPBrick v5.
B.2
preinst
#!/usr/bin/php
<?php
/////////////////////////////////////////////////////////////
//
Variaveis proprias deste patch
/////
/////////////////////////////////////////////////////////////
$idbugfixes="0000001";
$idbugfixesname="ipbrick";
$controlname="ipbrick";
$title=$idbugfixesname." - IPBrick";
$description="<br>
IPBrick.
<br>
";
$datestart="123456789";
$dateapply=time();
$version="5";
61
62
Construção do Pacote IPBrick
///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//
Verificaç~
ao da autenticidade deste script
/////
////////////////////////////////////////////////////////////////////////
$included_files = get_included_files();
if ($_SERVER["SCRIPT_FILENAME"]!="/var/lib/dpkg/tmp.ci/preinst" ||
$included_files[0]!="/var/lib/dpkg/tmp.ci/preinst" || count($included_files)!=1)
{
echo "ACCESS IS NOT ALLOWED!\r\n";
exit (1);
}
else
{
$_ipbrick_certificate_key = "xxxxxxxxxxxxxxxx";
}
////////////////////////////////////////////////////////
//
Dependencias e conflitos
///
////////////////////////////////////////////////////////
$predepends = array ();
$conflicts = array ();
///////////////////////////////////////////////////////////
//
Variaveis fixas dum patch
////
///////////////////////////////////////////////////////////
$dbhost="127.0.0.1";
$dbport="5433";
$dbname="ipbrick";
$dbuser="admin";
$dbpass="passadmin";
///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//
Funcoes genericas
////
//////////////////////////////////////////////////////////
function parseResultObj($resultado)
{
$n_rows = pg_numrows($resultado);
B.2 preinst
unset($entidades);
for($i=0; $i<$n_rows; $i++)
{
$entidades[$i]=pg_fetch_Object($resultado,$i);
}
return $entidades;
}
function exitwitherror()
{
global $dbconn;
@pg_close ($dbconn);
@pg_close ($dbconndefaultconf);
echo
echo
echo
exit
"\r\n";
"\r\n";
"\r\n";
(1);
}
/////////////////////////////////////////////////////////////////
//
Funç~
oes especı́ficas deste update
/////
/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//
Patch codigo fixo
////////
////////////////////////////////////////////////////////////////
echo "\r\n";
echo "\r\n";
echo "\r\n";
//Codigo para verificar se ainda está dentro do periodo de actualizaç~
oes.
if (is_file (’erro_acesso2.php’))
{
...
if ($_key_ipbrick_version_info!="ipbrick-version-trial")
{
...
if ($key_expires_day<$datestart)
{
echo "Update period has expired!\r\n";
exit (1);
}
63
64
Construção do Pacote IPBrick
}
}
else
{
echo "IPBrick licence not found!\r\n";
exit (1);
}
//Liga a BD
$dbconn = @pg_connect ( ... );
if (!$dbconn)
{
echo "Unable connect to database! - 0x0001!\r\n";
echo "\r\n";
echo "\r\n";
echo "\r\n";
exit (1);
}
//Verifica se este patch é para a versao desta ipbrick
$query="select valor from ipbrickconfig where idipbrickconfig=2";
$resultado = @pg_exec($dbconn, $query);
if (!$resultado)
{
echo "Unable connect to database! - 0x0002!\r\n";
exitwitherror();
}
$versioncheck = parseResultObj ($resultado);
//Verifica em que vers~
oes pode ser aplicado
if ($versioncheck[0]->valor!= $version)
{
echo "This update isn’t for this version!\r\n";
exitwitherror();
}
//Verifica se este patch já foi instalado
$query="select * from bugfixes where idbugfixes=’".$idbugfixes."’";
$resultado = @pg_exec($dbconn, $query);
if (!$resultado)
{
echo "Unable connect to database! - 0x0003!\r\n";
exitwitherror();
}
B.2 preinst
65
$bugfixescheck = parseResultObj ($resultado);
if ($bugfixescheck[0]->idbugfixes==$idbugfixes)
{
echo "This update is already installed!\r\n";
exitwitherror();
}
$erropredepends = 0;
for ($i=0; $i<count($predepends); $i++)
{
$query = "select * from bugfixes where idbugfixes=’".$predepends[$i]->idbugfix."’";
$resultado = @pg_exec($dbconn, $query);
if (!$resultado)
{
echo "Unable connect to database! - 0x0004!\r\n";
exitwitherror();
}
$predependscheck = parseResultObj ($resultado);
if ($predependscheck[0]->idbugfixes!=$predepends[$i]->idbugfix)
{
echo $idbugfixesname." depends on ".$predepends[$i]->idbugfixname."!\r\n";
echo "However: Package ".$predepends[$i]->idbugfixname." is not installed.\r\n";
$erropredepends = 1;
}
}
if ($erropredepends!=0)
{
exitwitherror();
}
$erroconflicts = 0;
for ($i=0; $i<count($conflicts); $i++)
{
$query = "select * from bugfixes where idbugfixes=’".$conflicts[$i]->idbugfix."’";
$resultado = @pg_exec($dbconn, $query);
if (!$resultado)
{
echo "Unable connect to database! - 0x0005!\r\n";
exitwitherror();
}
$conflictscheck = parseResultObj ($resultado);
if ($conflictscheck[0]->idbugfixes==$conflicts[$i]->idbugfix)
{
66
Construção do Pacote IPBrick
echo $idbugfixesname." conflicts with ".$conflicts[$i]->idbugfixname.",
which is already installed!\r\n";
echo "Installation cancelled.";
$erroconflicts = 1;
}
}
if ($erroconflicts!=0)
{
exitwitherror();
}
//Cria base de dados temporaria para a migraç~
ao das configuraç~
oes predefinidas
...
//Liga a BD das configuraç~
oes predefinidas
$dbconndefaultconf = @pg_connect ( ...
);
if (!$dbconndefaultconf)
{
echo "Unable connect to database! - 0x0007!\r\n";
echo "\r\n";
echo "\r\n";
echo "\r\n";
exit (1);
}
////////////////////////////////////////////////////////////////////////////
//
BASE DE DADOS MYSQL
/////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//
BASE DE DADOS POSTGRESQL
/////
///////////////////////////////////////////////////////////////////////////
// cria base de dados da IPBrick
///////////////////////////////////////////////////////////////////////////
@pg_close ($dbconn);
@pg_close ($dbconndefaultconf);
echo "\r\n";
B.3 postinst
67
echo "\r\n";
echo "\r\n";
exit (0);
?>
B.3
postinst
Neste script apresenta-se a parte que difere do script de pré-instalação.
/////////////////////////////////////////////////////////////////////////////
//
BASE DE DADOS POSTGRESQL
////
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//Insere registo da instalacao deste patch
$bugfixes_query = "
insert into bugfixes (idbugfixes, title, description, datestart,
dateapply, version) values (’".$idbugfixes."’, ’".addslashes ($title)."’,
’".addslashes ($description)."’, ’".$datestart."’, ’".$dateapply."’, ’".$version."’)
";
$resultado = @pg_exec($dbconn, $bugfixes_query);
if (!$resultado)
{
echo "Error executing bugfixes query\r\n";
$erro=1;
}
$resultado = @pg_exec($dbconndefaultconf, $bugfixes_query);
if (!$resultado)
{
echo "Error executing bugfixes query\r\n";
$erro=1;
}
@pg_close ($dbconndefaultconf);
//actualiza o ficheiro de configuraç~
oes predefinida e apaga a base de dados temporaria.
...
68
Construção do Pacote IPBrick
////////////////////////////////////////
//Alteraç~
oes sistema
////////////////////////////////////////
/////////////////////////////////////////
// Restart dos serviços
/////////////////////////////////////////
echo "Update $idbugfixes was successfully installed!\r\n";
echo "<br>IPBrick successfully instaled.\r\n";
@pg_close ($dbconn);
echo
echo
echo
exit
?>
"\r\n";
"\r\n";
"\r\n";
(0);
Referências
[1] Philipp Hoschka. Multimodal web applications for embedded systems, Junho 2006.
http://www.w3.org/2005/Talks/200506-Toulouse/slide3-0.html.
[2] Lda. iPortalMais Soluções de Engenharia para Internet e Redes. Manual da ipbrick,
2008. http://www.ipbrick.com.
[3] openSuSE. Página oficial do YaST, Junho 2008. http://en.opensuse.org/YaST/
About.
[4] solucorp. Página Oficial do Linuxconf, 2005.
linuxconf/.
http://www.solucorp.qc.ca/
[5] Keith Pettit. Managing Services with Webmin, Outubro 2003. http://www.samag.
com/documents/s=8892/sam0310d/sam0310d.htm.
[6] Webmin. Página Oficial do Webmin, Junho 2008. http://www.webmin.com.
[7] PHP Documentation Group.
manual/en/.
Php manual, Junho 2008.
http://www.php.net/
[8] W3Schools. Introduction to javascript, Junho 2005. http://www.w3schools.com/
JS/js_intro.asp.
[9] Wikipedia, the free encyclopedia. Ajax (programming), Junho 2008. http://en.
wikipedia.org/wiki/Ajax_%28programming%29.
[10] Wikipedia, the free encyclopedia. Linux, Junho 2008. http://en.wikipedia.org/
wiki/Linux.
[11] Red Hat Inc. Aboute Red Hat Enterprise, 2008. http://www.redhat.com.
[12] Distrowatch, Junho 2005. http://distrowatch.com.
[13] Debian GNU/Linux. Página oficial da debian, 2008. http://www.debian.org.
69
Download

Texto integral - Repositório Aberto da Universidade do Porto