Centro Universitário UNIBENNETT Curso de Ciência da Computação Monografia Trabalho de Conclusão de Curso



Documentos relacionados
SISTEMA OPERACIONAL & SOFTWARE LIVRE

16:21:50. Introdução à Informática com Software Livre

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Introdução 12/06/2012. Software Livre

Aula 01. Introdução ao Linux

Como é o desenvolvimento de Software?

Laboratório de Redes de Computadores e Sistemas Operacionais

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

PREPARATÓRIO RIO PARA CAIXA ECONÔMICA

São programas de computador utilizados para realizar diversas tarefas É a parte lógica do computador, o que faz o computador realmente funcionar.

Curso Introdução ao Linux. Desmistificando o Software Livre. Nícholas André nicholas@iotecnologia.com.

FACULDADE DE TECNOLOGIA SENAC PELOTAS CURSO TÉCNICO EM INFORMÁTICA PRONATEC PROFESSOR: NATANIEL VIEIRA ALUNOS: ANA CAROLINA, ROMÁRIO, WAGNER.

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 16

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Sistema Operacional LINUX

Universidade Federal de Goiás. Alexandre Ferreira de Melo CERCOMP / UFG

Sistemas Distribuídos

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Administração de Sistemas Livres. Prof. Lais Farias Alves

No mercado atual, podemos encontrar vários tipos de sistemas operacionais que fazem parte das seguintes classes:

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

1 / 6. Cartilha O ABC do Software Livre. O que é PcLivre?

Desenvolvendo Websites com PHP

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Oficina de ferramentas de Gerência para Redes em Linux. Prof. Jefferson Santiago

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

Gestão em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini

I N F O R M Á T I C A. Sistemas Operacionais Prof. Dr. Rogério Vargas Campus Itaqui-RS

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

4 Estrutura do Sistema Operacional Kernel

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 01. Prof. André Lucio

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

AULA 3 FERRAMENTAS E APLICATIVOS DE NAVEGAÇÃO, DE CORREIO ELETRÔNICO, DE GRUPOS DE DISCUSSÃO, DE BUSCA E PESQUISA (PARTE II)

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Laboratório de Redes. Professora Marcela Santos

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Circuito Curitibano de Software Livre

INTERNET HOST CONNECTOR

Revisão 7 Junho de 2007

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

Módulo 6 Usando a Internet. Internet. 3.1 Como tudo começou

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Como configurar s nos celulares. Ebook. Como configurar s no seu celular. W3alpha - Desenvolvimento e hospedagem na internet

PORTARIA Nº 178 DE 25 DE OUTUBRO DE 2012.

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Servidor de s e Protocolo SMTP. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes

Servidor de Correio Eletrônico Postfix

Windows 2008 Server. Windows 2008 Server IFSP Boituva Prof. Sérgio Augusto Godoy.

O modelo Bazar de Produção de Softwares. O caso das Comunidades Virtuais de Software livre.

(eletronic mail )

1969 ARPANet - Advanced Research Projects Agency Network

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

Principais Sistemas Operacionais. Prof. Fernando Nakayama de Queiroz

ISO/IEC 12207: Gerência de Configuração

Confrontada com o gabarito oficial e comentada. 75. A denominada licença GPL (já traduzida pra o português: Licença Pública Geral)

Figura 01 Kernel de um Sistema Operacional

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Noções de Software. André Aziz Francielle Santos

Manual do usuário - Service Desk SDM - COPASA. Service Desk

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

Manual Xerox capture EMBRATEL

Projeto de Redes de Computadores. Desenvolvimento de Estratégias de Segurança e Gerência

Prof. Jefferson Costa

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Firewall. Alunos: Hélio Cândido Andersson Sales

Cadastramento de Computadores. Manual do Usuário

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

Introdução a Sistemas Abertos

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

Processos Técnicos - Aulas 4 e 5

Um Driver NDIS Para Interceptação de Datagramas IP

Introdução a Banco de Dados

s editores de s Como configurar contas de nos principais Como configurar contas de s nos principais editores de s

INTRODUÇÃO: 1 - Conectando na sua conta

Redes de Computadores. Prof. André Y. Kusumoto

Sistema de Chamados Protega

Cartilha. Correio eletrônico

Sistema de Controle de Solicitação de Desenvolvimento

COMPARAÇÃO ENTRE OS SERVIDORES DE S MAIS UTILIZADOS ATUALMENTE

Outlook XML Reader Versão Manual de Instalação e Demonstração UNE Tecnologia

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Introdução aos Sistemas da InformaçãoAula 4 p. 1

Transcrição:

Centro Universitário UNIBENNETT Curso de Ciência da Computação Monografia Trabalho de Conclusão de Curso Rio de Janeiro 2007.2

2 FELIPE MARTINS RÔLLA ORIENTADOR: WILLIAM AUGUSTO R. DE SOUZA DESENVOLVIMENTO, OTIMIZAÇÃO E IMPLEMENTAÇÃO DE SEGURANÇA EM SISTEMAS OPERACIONAIS LINUX PARA SERVIDORES DE E-MAIL CORPORATIVOS BASEADOS EM QMAIL Monografia apresentada ao Centro Universitário Bennett do Instituto Metodista Bennett, como parte dos requisitos para obtenção do título de Bacharel em Ciência da Computação. Centro Universitário Metodista Bennett

Rio de Janeiro 12/2007 3

4 TERMO DE APROVAÇÃO FELIPE MARTINS ROLLA DESENVOLVIMENTO, OTIMIZAÇÃO E IMPLEMENTAÇÃO DE SEGURANÇA EM SISTEMAS OPERACIONAIS LINUX PARA SERVIDORES DE E-MAIL CORPORATIVO BASEADOS EM QMAIL. ESTE TRABALHO FOI JULGADO ADEQUADO PARA A OBTENÇÃO DO GRAU DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO E APROVADO EM SUA FORMA FINAL PELA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO BANCA EXAMINADORA: PROFESSOR WILLIAM AUGUSTO R. DE SOUZA, M. SC. PROFESSORA GRAZZIELA FIGUEREDO, M. SC. PROFESSOR PROF. SANDOVAL GONÇALVES, M. SC.

5 Agradecimentos Gostaria de agradecer a todas as pessoas que contribuirão direta ou indiretamente para este projeto e que continuarão contribuindo com idéias, força e dedicação. Ao meu orientador William Augusto R. de Souza que acreditou em mim quando ninguém acreditava. À Rafaela Haddad minha namorada pela dedicação e compreensão por todo este tempo. Ao Coordenador e Prof. José Xexéo por sempre buscar o melhor esforço em cada aluno. A professora Grazziela Figueiredo por me dar a honra de participar da banca mesmo com os problemas existentes. A todos os amigos e amigas que contribuíram para o projeto trazendo sugestões, palavras de força nos piores momentos. À Tino Reichardt, contribuidor do projeto, que nos cedeu a licença de utilização de seus softwares e à Dan. J. Bernstein, desenvolvedor do qmail, sem eles este trabalho não seria possível. Aos professores Fernando Miranda, Nelson, que sempre acreditaram neste projeto deste o princípio.

6

7 SUMÁRIO SUMÁRIO... 6 Índice de Figuras... 9 Índice de Tabelas... 10 Glossário... 11 1 - Introdução... 13 1.1. Motivação... 15 1.2. Objetivos... 16 1.3. Etapas de desenvolvimento... 17 2 Licença de Software... 19 2.1. Definição... 19 2.2. Software livre... 20 2.2.1. GNU Public License (GPL)... 21 2.3. Software proprietário... 22 2.3.1. Creative Commons... 23 2. 4. Comparação entre licenças... 24 3 Sistema Operacional Linux... 26 3.1. História e definição... 26 3.2. Comparação entre Distribuições... 28 3.3. Distribuição Slackware... 32 4 Servidores de e-mail código aberto... 34 4.1. Definição e Funcionamento... 34

8 4.2. Sendmail, Postfix e Qmail... 38 5 Qmail... 41 5.1. Definição... 41 5.2. Segurança e Estrutura Hierárquica... 42 5.3. Licença de Uso... 46 5.4. Problemas existêntes... 46 6 - Otimizações do Slackware para Qubit... 48 6.1. Pacotes utilizados e descartados... 48 6.2. Empacotamento de softwares... 50 6.3. Menus interativos de instalação... 52 6.3.1. Particionamento... 52 6.4. Kernel e Patches... 55 6.4.1. Patch para ReiserFS v.4.0... 55 6.4.2. Patch para BootSplash... 58 7 - Hardening... 60 7.1. Hardening de Sistema... 61 7.2. Hardening de Serviços... 64 7.2.1. SSH e serviços de acesso remoto... 64 8 - qmail e Patches... 68 8.1. Comparação entre versões e padrões atuais... 68 8.2. Medidas Anti-Spam... 70 8.3. Medidas de Autenticação e Segurança... 74 8.4. Medidas para testes de Bad Mail... 77 8.5. Medidas para melhorar mensagens de Status... 78 8.6. Medidas para Logs de email... 80 8.7. Patch para BootSplash... 81 9 - Softwares Utilizados para serviços... 82 9.1. EZmlm e EZmlm-idx... 82 9.2. Autoresponder... 82 9.3. Vpopmail... 83 9.4. Courier-imap/imaps e Courierpassd... 84 9.5. Webmail... 84 9.6. ClamAV... 85 9.7. SpamAssassin... 85 10 - Padronização... 86

9 10.1. Diretórios e Links... 86 10.2. Arquivos e Conteúdo... 87 11 - Conclusão... 93 12 - Objetivos Futuros... 95 12 - Referências Bibliográficas... 96

10 ÍNDICE DE FIGURAS Figura 1 - Funcionamento do Correio Eletrônico (WIKIPEDIA, 2007).... 8 Figura 2 - Esquema de daemons do qmail (LIFE WITH QMAIL, 2007)... 64 Figura 3 - Lista de Hard Disks gerada por Controladora...... 64 Figura 4 - Particionamento Manual e Automático... 8 Figura 5 - Alguma coisa... 64 Figura 6 - Alguma coisa...... 64

11 ÍNDICE DE TABELAS Tabela 1 - Comparação entre licenças de software (WIKIPEDIA, 2007).... 8 Tabela 2 - Aprovação de licenças por Organizações (WIKIPEDIA, 2007)... 15 Tabela 3 - Dispositivos e Softwares de Segurança (WIKIPEDIA, 2007)... 15 Tabela 4 - Arquiteturas de Processadores Suportadas (WIKIPEDIA, 2007)... 15 Tabela 5 - Usuários do servidor qmail (LIFE WITH QMAIL, 2007)... 15

12 GLOSSÁRIO ACL - Access Control Lists ARPANet - Advanced Research Projects Agency Network BSD - Berkeley Software Distribution COPYRIGHT - Conjunto de direitos exclusivos que regulamentam o uso de uma ideia ou informação em particular DARPA - Defense Advanced Research Projects Agency EMAIL - Eletronic Mail FHS - File Hierarchy System FIREWALL - Dispositivo de uma rede de computadores que tem por função regular o tráfego entre redes distintas e impedir a transmissão e/ou recepção de dados nocivos ou nào autorizados entre redes FSF - Free Software Foundation GNU - Anagrama recursivo para GNU is Not Unix GNU FDL - Free Document License GNU GPL - GNU Public License GNU LGPL - Light GNU Public License HA - High Availability HARDENING - Medidas de segurança tomadas no aumento da segurança de código ou determinado ambiente de computação. IMAP - Internet Message Access Protocol

KERNEL - Cerne, é o núcleo de um sistema operacional e representa a camada de software mais próxima ao hardware, sendo responsável por gerenciar recursos do sistema operacional MINIX - Mini Unix MIT - Massachussets Institute of Technology MTA - Mail Transfer Agent MTU - Mail Transfer User MUA Mail User Agent MX Mail Exchanger PATCH - Códigos auxiliares incluidos no código fonte para implementação de funcionalidades ou correção de erros POP - Post Office Protocol SELINUX - Security Enhanced Linux SMTP - Simple Mail Transfer Protocol SSL - Secure Sockets Layer TCP/IP - Transfer Control Protocol / Internet Protocol TLS - Transport Layer Security UCLA - University of California Los Angeles VPN - Virtual Private Network

1 - INTRODUÇÃO A Internet tem revolucionado o mundo dos computadores e da comunicação como nenhuma outra invenção jamais conseguiu, ligando usuários de todas as partes da Terra no clique de um botão. Invenções importantes como o telégrafo, telefone, fax e outras serviram de base para preparação do cenário atual de super integração e comunicação existente. Os primeiros registros de interações sociais que poderiam ser realizados através de redes de computadores que se tem notícia foram uma série de memorandos escritos por J.C.R. Licklider, do MIT (Massachussets Institute of Technology), em agosto de 1962. Esta série de memorandos previa a existência de vários computadores interconectados globalmente de forma que todos poderiam acessar dados e programas de qualquer lugar rapidamente. Essencialmente o conceito é muito parecido com o que temos hoje com a Internet. Licklinder foi o primeiro gerente do programa de pesquisas de computador do DARPA, começando em outubro de 1962. O primeiro trabalho sobre a teoria de troca de pacotes existente foi publicado por Leonard

Kleinrock, do MIT, em julho de 1961. Leonard Kleinrock começava assim a convencer a todos da possibilidade teórica das comunicações usando pacotes ao invés de circuitos o que representou um grande passo para a criação das redes de computadores atuais. Outro grande passo foi fazer os computadores destas redes conversarem entre si. Foi no DARPA que nasceram os conceitos de redes de computadores atuais que viriam a formar a ARPANET, em 1967, rede esta precursora da Internet.. A ARPANET foi desenvolvida por instituições militares americanas para dinamizar as comunicações entre postos, portanto demorou pouco tempo para que surgisse a primeira troca de mensagens via rede, troca esta que só foi possível depois do desenvolvimento do primeiro Processador de Interface de Mensagens (IMP) pelo DARPA, em 1968. Após um mês de implementação do primeiro IMP na UCLA foi feita a primeira troca de mensagens entre servidores do DARPA e o SRI (servidor localizado na UCLA). Nascia ai a era da comunicação digital, e por assim dizer os serviços de troca de mensagens conhecidos hoje como e-mail. Atualmente a troca de mensagem via servidores de e-mail são responsáveis por 50% do tráfego de internet de todo o meio corporativo segundo dados do Wikipedia, (http://en.wikipedia.org/wiki/email#origin), e seu consumo cresce a cada dia devido a sua rápida popularização, facilidade de uso e pragas virtuais decorrentes disto. Devido a este fato é importante que os sistemas funcionem de forma a possuírem performance e segurança para atender a demanda do serviço na Internet.

1.1. Motivação Atualmente existem diversas soluções para e-mail corporativo desenvolvidas por vários fabricantes internacionalmente conhecidos como Microsoft (Exchange Server), IBM (Lotus Notes Workgroup), Critical Path, entre outras. Cada uma dessas soluções possui um conjunto de funcionalidades análogas porém condizentes diretamente a política de serviços da empresa. É importante frisar que todas as soluções supracitadas recaem sobre a licença de software proprietário, portanto sua utilização deve ser de acordo as restrições técnicas e de custo impostas por cada desenvolvedor. Para aumentar a concorrência e expandir o mercado no que diz respeito às tecnologias de servidores de e-mail e no que tange performance e custo, surgiram diversas outras soluções livres, cada uma avaliada e testada pela grande comunidade de software livre. A maior parte possui implementações próprias em ambientes Linux previamente desenvolvidos e padronizados transformando portanto sistemas complicados e complexos em sistemas intuitivos e de fácil instalação e adoção no meio corporativo. Porém a quantidade de distribuições Linux voltadas para o campo de servidores de e-mail é diretamente relacionada à funcionalidades, praticidade e facilidade de configuração do MTA (Mail Transfer Agent) ou cliente de e-mail escolhido, sendo dele Postfix, Sendmail, entre outros. Sendo assim cada distribuição Linux, embora use o mesmo MTA como foco, é implementada e desenvolvida de forma totalmente diferente e muitas vezes incompatível com outros sistemas, terminando por existirem diversas soluções diferentes para um mesmo problema. Isto gera um aumento no esforço de suporte ao ambiente criado bem como inconsistência de procedimentos.

Embora existam soluções análogas não inexiste atualmente uma distribuição Linux para servidores de e-mail voltada totalmente para o MTA qmail. Um dos fatos que contribuem para isto é a extrema complexidade quando da implementação de um servidor completo qmail e também na existência de vários tutoriais completamente incompatíveis entre si, gerando inclusive dúvidas quanto a sua implementação, já que cada administrador implementa apenas os recursos pertinentes a sua rede esquecendo muitas vezes que o sistema deve ser escalar permitindo assim uma utilização mais dinâmica e extensa. Outro fato é o código do qmail não ser intensamente mantido por seu criador o matemático Dan. J. Bernstein, desvantagem esta totalmente suprida pela grande comunidade de software livre. Porém esta comunidade gera outros problemas como desenvolver ferramentas diferentes para resolução de um mesmo problema gerando assim uma gama de aplicações análogas, aumentando o trabalho do administrador para padronização e criação de uma solução de e-mail concisa e estável. 1.2. Objetivos Este trabalho é uma extensão dos esforços da comunidade de código aberto em atuação na Internet no desenvolvimento de um sistema de e-mail padronizado, eficiente e seguro. A proposta é desenvolver uma sistema operacional Linux baseado na Distribuição Slackware 12.0 com foco na criação, instalação, configuração e implementação de uma solução completa de serviço de e-mail baseado em qmail, MTA desenvolvido pelo matemático Dan J. Bernstein como alternativa rápida e segura ao famoso MTA Sendmail desenvolvido por Eric Allman. Este sistema será

desenvolvido de forma a aproximar o usuário leigo ao mundo dos servidores de e-mail de forma a transformar o processo de implementação em um processo mais intuitivo e totalmente padronizado. O desenvolvimento deste projeto baseia-se no fato de que não existe atualmente uma distribuição totalmente voltada para este servidor específico, como existem para outros servidores como postfix e sendmail. Serão implementados os mais novos conceitos de configuração de servidores seguros utilizando otimização de código via patches, configurações, boas práticas de configuração de serviços e hardening de sistema. Este projeto visa dinamizar e facilitar a implementação e configuração de um servidor de e-mail qmail seguindo os padrões de utilização corporativa atual, reduzindo o tempo médio de tais operações de 48 horas para 1,5 hora máximo, implementando um sistema totalmente integrado com softwares recomendados atualmente como antivírus, anti-spams, e políticas de segurança de sistema e serviços. 1.3. Etapas de desenvolvimento Foram realizadas pesquisas sobre os principais MTAs de código aberto utilizados atualmente em serviços de e-mail. As pesquisas levaram em conta componentes estruturais, funcionais e de segurança na avaliação das diferenças entre cada um dos MTAs utilizados como base na escolha do MTA abordado. São traçados vários paralelos pertinentes a segurança, estabilidade, funcionalidade, freqüência de

atualizações oficiais e da comunidade de código aberto, instalação, configuração e uso, assim como estudos de casos reais de utilização no meio corporativo. Foram realizadas também pesquisas de intuitividade quanto a instalação do sistema, e funcionalidades pertinentes a este fim bem como extensa pesquisa sobre hardening (implementações de segurança) de sistema operacional Linux e serviços de e-mail qmail na criação de um serviço seguro.

2 LICENÇA DE SOFTWARE 2.1. Definição Uma licença de software compreende permissões, direitos e restrições à A um determinado software, sendo ele apenas um componente ou um programa completo. A utilização de um software sem obedecer as restrições impostas por sua licença podem constituir em uma infração dos direitos exclusivos do desenvolvedor do software sobre copyright ou, ocasionalmente, lei de patentes permitindo ao dono do software licenciado direitos para processar o usuário que a infringiu. Sob a licença de software, ela permite a utilização do software desde que esta esteja de acordo com os termos da licença. Se há uma brecha na licença, dependendo do tipo, pode terminar por conceder direitos ao proprietário da licença do software à processar quem a infringiu. Um desenvolvedor de software pode oferecer uma licença unilateral (sem dar ao licenciado oportunidades para renegociação de termos mais favoráveis), ou mesmo

como parte de um acordo de licença de software com terceiros. Virtualmente todo software proprietário produzido em larga escala é vendido sob alguma forma de licença. Os termos de tais licenças normalmente são negociados entre as partes, licenciador e licenciado. Em adição a garantia de direitos e imposição de restrições à utilização do software, as licenças tipicamente contém procedimentos que denotam confiabilidade e responsabilidade entre as partes. Em softwares corporativos e softwares de transação comercial são normalmente negociados por equipes especialistas em licenças de software. 2.2. Software Livre São denominados softwares livres, ou de domínio público, os softwares cuja licença permite qualquer tipo de uso, alteração, cópia, venda, e distribuição desejada pelo usuário em relação a seu código-fonte. Para que o código fonte possa ser alterado e aperfeiçoado é imperativo que ele esteja disponível para download sem qualquer restrição e de forma completa. Se um programa é livre ele pode ser facilmente implementado em um sistema operacional também livre. É importante enfatizar que software livre não é sinônimo de software gratuito pois a liberdade de distribuir, alterar e copiar independe da gratuidade. Existem softwares que podem ser obtidos na Internet de forma gratuita mas não podem ser alterados ou redistribuídos pois muitas vezes seu código-fonte é fechado ou recai sobre determinada licença que impede está operação.

Atualmente existem diversos tipos de licenças de software livre com as mais variadas permissões e restrições. A licença escolhida para este projeto é a GPL, ou GNU Public License, pela liberdade que apresenta em relação a cópia, alteração e redistribuição de código nela registrado como explicado adiante. 2.2.1. GNU Public License (GPL) A GNU Public License, ou simplesmente GPL, é a licença de software livre criada e idealizada por Richard Stallman, fundador da Free Software Foundation (FSF), no final da década de 1980. A GPL é a licença mais utilizada por projetos de software livre no mundo. Ela baseia-se em 4 premissas básicas: Liberdade de executar um programa para qualquer propósito (Liberdade nº 0). Liberdade de estudar como o programa funciona e adaptá-lo para suas necessidades (liberdade nº 1). O acesso ao código-fonte é um prérequisito para estar liberdade. Liberdade de distribuir cópias de modo que o usuário possa ajudar o seu próximo (liberdade nº2). Liberdade de aperfeiçoar o programa, a liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para estar liberdade.

Pelos termos da licença GNU podemos escrever, alterar, reenviar, trocar e vender quaisquer alterações feitas no código-fonte pois ele é de utilização livre. A licença GPL também possui outras duas sub-licenças: GNU FDL (GNU Free Document License) e a GNU LGPL (GNU Light Public License), que compreendem em licenças para documentação livre, e uma versão mais resumida e simples da GPL padrão para o desenvolvimento de drivers, bibliotecas e pequenos módulos ou addons, respectivamente. Atualmente todo e qualquer software desenvolvido ligado a comunidade de software e ao Free Software Foundation são licenciados sob a GPL. 2.3. Software Proprietário Softwares proprietários são aqueles cuja cópia, redistribuição ou modificação estão limitadas ou impossibilitadas pelas restrições de sua licença. Para utilizar, copiar, alterar código ou redistribuir, deve-se solicitar permissão ao desenvolvedor ou empresa que detém os direitos de propriedade do software requerido, ou pagar para fazê-lo. Algumas licenças de software proprietário possuem código livre que pode ser utilizado e alterado apenas para uso próprio mas impõe restrições quanto a redistribuição deste código modificado. Outras licenças permitem a utilização de determinado software de modo ilimitado ou temporário sem oferecer o código-fonte utilizado para compilá-lo. Existem ainda softwares cujos códigos-fontes não são distribuídos, são apenas executados via software de instalação e ao mesmo tempo são

pagos, como é o caso de muitos sistemas operacionais utilizados no mercado corporativo ou programas de cunho comercial. As restrições e permissões de cada licença variam para cada empresa e proprietário de software. 2.3.1. Creative Commons A licença Creative Commons permite aos proprietários de software garantir em parte ou totalmente seus direitos de software ao público enquanto retém outros, através de uma variedade de licenças e esquemas de contrato incluindo softwares de domínio público ou termos de licença de conteúdo aberto. O objetivo deste tipo de licença proprietária é evitar problemas com a lei de copyright no que tange o compartilhamento da informação. O projeto Creative Commons provê vários tipos de licença gratuitas as quais os proprietários dos direitos de software possam utilizar no lançamento de seus trabalhos na rede. Ao mesmo tempo que protege a propriedade intelectual de seus proprietários, evita problemas com a lei e permite, dentro das restrições impostas pelo proprietário, sua redistribuição, alteração e uso ao público. Exemplos de projetos que utilizam esta licença são Wikimedia (Wikimedia, 2007), Public Library of Science, Jurispedia, entre outros.

2.4. Comparação entre licenças A tabela seguinte compara várias características de cada uma das licenças, como um guia para os termos que cada uma das licenças contém: Licença Autor Última Versão Data de Publicação Link de código com licença diferente Mudanças sob licenças diferentes Academic Free License????? Apache License Apache Software Foundation 2 2004 Sim Sim Apple Public Source License Apple Computer 2 6-Aug-03 Sim Não Artistic License? 2? Sim Com restrições Berkeley Database License????? BSD license??? Sim Sim Boost license??? Sim Sim Common Development and Distribution License Sun Microsystems 1? Sim? Common Public License???? Não Cryptix General License????? Eclipse Public License Eclipse Foundation 1??? Educational Community License? 1? Sim Sim GNU General Public License Free Software Foundation 3 Jun-07 Não Não GNU Lesser General Public License Free Software Foundation 3 Jun-07 Sim Não Hacktivismo Enhanced-Source Software License Agreement Hacktivismo/Cult of the Dead Cow? 26-Nov-02?? IBM Public License IBM???? Intel Open Source License Intel Corporation???? LaTeX Project Public License LaTeX project 1.3c??? MIT license??? Sim Sim Mozilla Public License Mozilla Foundation 1.1? Sim Não Netscape Public License Netscape 1.1??? Open Software License????? OpenSSL license OpenSSL Project???? PHP License PHP Group 3.01??? Python Software Foundation License Python Software Foundation 2??? Q Public License Trolltech?? Não Não Sun Industry Standards Source License Sun Microsystems???? Sun Public License Sun Microsystems?? Sim Não W3C Software Notice and License??? Sim Sim X11 license??? Sim Sim XFree86 1.1 License????? zlib/libpng license????? Zope Public License????? Tabela 1 Comparação entre licenças de software (WIKIPEDIA, 2007)

A tabela abaixo lista para cada licença quais organizações as aprovaram como open source (código livre) e como está organizações as categorizam. Estas organizações aprovam normalmente versões específicas de licenças. Licence and specific version FSF approval OSI approval Academic Free License Sim Sim Apache License Sim Sim Apple Public Source License version 1.x Não Sim Apple Public Source License version 2.0 Yes Sim Artistic License Não Sim Clarified Artistic License Sim Sim Berkeley Database License Sim Sim BSD license Sim Sim Common Development and Distribution License Sim Sim Common Public License Sim Sim Cryptix General License Sim No Eclipse Public License Sim Sim Educational Community License? Sim GNU General Public License Sim Sim GNU Lesser General Public License Sim Sim Hacktivismo Enhanced-Source Software License Agreement No No IBM Public License Sim Sim Intel Open Source License Sim Sim LaTeX Project Public License Sim No License of Python Sim Sim MIT license Sim Sim Mozilla Public License Sim Sim Netscape Public License Sim No Open Software License Sim Sim OpenSSL license Sim No PHP License Sim Sim Q Public License Sim Sim Sun Industry Standards Source License Sim Sim Sun Public License Sim Sim Sybase Open Watcom Public License? Sim W3C Software Notice and License Sim Sim XFree86 1.1 License No No zlib/libpng license Sim Sim Zope Public License version 1.0 Sim? Zope Public License version 2.0 Sim Sim Tabela 2 Aprovação de licenças por Organizações (WIKIPEDIA, 2007)

3 SISTEMA OPERACIONAL LINUX 3.1. História e Definição Em 1991 praticamente todas as universidades do mundo utilizavam algum tipo de Unix como sistema operacional acadêmico nos quais seus alunos desenvolviam todo tipo de trabalho de pesquisa. Em sua grande maioria era utilizado o Unix BSD (Desenvolvido pela Berkeley). Como sua licença era muito cara para o meio acadêmico, as universidades passaram a adotar uma versão mais simples e com menos recursos chamada Minix, um clone de código aberto do Unix desenvolvido especialmente para suprir sua falta de verba. Como todo clone o Minix carecia de recursos básicos, utilizado portanto vastamente apenas como sistema base para projetos e trabalhos acadêmicos. Um aluno da Universidade de Helsink na Finlândia, Linus Torvalds, não concordava com esta visão e queria oferecer mais funcionalidades ao Minix fazendo-o tão completo quanto seu similar corporativo. Ele iniciou seu projeto em meados dos anos 1990 através de uma mensagem enviada às listas de e-mail da época convocando

programadores a se juntarem a ele no desenvolvimento de um sistema completo e totalmente gratuito que pudesse ser distribuído sem custos e de código livre. Por definição o sistema operacional Linux nada mais é do que um clone código aberto dos sistemas Unix da época possuindo kernel próprio desenvolvido por Linus Torvalds em adição aos programas já existentes da FSF (Free Software Foudation) fundada por Richard Stallman. Devido a sua rápida adoção pelo mercado corporativo e doméstico, existem atualmente diversas distribuições diferentes em funcionalidades e foco no mercado. Exemplos disso são as seguintes distribuições: Slackware (www.slackware.org) : Desenvolvida por Patrick Volkerding em Julho de 1993. É considerada a mais antiga e primeira distribuição Linux completa. Debian (www.debian.org) : Distribuição mais utilizada por desenvolvedores e acadêmicos de Linux pois segue completamente a filosofia da GNU da Free Software Foundation, totalmente licenciada pela GPL, ou seja, gratuito e de código aberto. Redhat (www.redhat.com) : Distribuição Linux criada para o mercado corporativo. Muitos de seus softwares são gratuitos porém praticamente tudo que diz respeito ao mercado corporativo é restrito e de código fechado, sendo assim pago. A Redhat hoje é considerada um gigante no meio corporativo Linux.

Conectiva ( www.conectiva.com.br ) : Vertente brasileira do Redhat alterado para uso nacional. É considerada a primeira distribuição Linux brasileira. Hoje não existe mais e foi integrada à distribuição Mandrake formando assim uma nova distribuição chamada Mandriva. Mandriva ( www.mandriva.com ) : Anteriormente conhecido como Linux Mandrake, foi formada pela união da Mandrake com a Conectiva. É atualmente uma das distribuições mais utilizadas no mercado europeu, junto com a Suse. Suse ( www.novell.com/linux ) : Criada por uma das maiores empresas de TI do mundo, a Novell Networks, sendo atualmente a distribuição mais utilizada no mercado europeu. 3.2. Comparação entre Distribuições Existem atualmente, entre distribuições corporativas e suas dissidências, cerca de 90 distribuições famosas largamente utilizadas no mundo. Obviamente existem outras dezenas dissidentes destas e portanto um pouco menos conhecidas. A escolha de determinada distribuição, muitas vezes chamada de flavor, ou sabor, depende da aptidão e gosto do usuário com o sistema em questão. Normalmente usuários mais experientes preferem distribuições mais robustas e experientes com um maior número de casos de sucesso como Slackware, Debian e Redhat, distribuições estas com maior respaldo da comunidade de software livre, ou de seus fabricantes. Usuários de entrada ou inexperientes preferem distribuições de escopo técnico menor e mais intuitivas como CentOS, Suse e Mandriva, por serem mais fáceis de utilizar.

Esta escolha esta diretamente ligada as seguintes características: Praticidade : É importante quando da utilização, manutenção e suporte da distribuição. Operações que podem levar horas quando a compilação de código é eminente podem ser reduzidas para minutos no caso da existência de ferramentas dinâmicas e de fácil uso diminuindo assim o tempo necessário com suporte e também a curva de aprendizado no treinamento de um profissional da área. Intuitividade : É importante para acelerar tarefas como manutenção do sistema e principalmente mais importante para o usuário final. Sendo este um usuário não muito técnico ter um sistema intuitivo, com softwares facilmente localizados no ambiente de janelas ou linha de comando, é primordial para um bom aproveitamento empresarial ou doméstico sem a necessidade de auxílio profissional do suporte. Segurança : Este é o item mais importante na escolha de uma distribuição para servidores. É extremamente importante uma vez que o Linux é considerado o sistema operacional mais adotado no meio corporativo para serviços críticos como High Availability, Firewall, VPN, E-mail entre outros. Deve-se verificar a freqüência de correções de erros bem como atualizações normais do sistema por meio de pacotes disponibilizados pelo desenvolvedor oficial. Funcionalidades : Devem possuir suporte aos mais novos sistemas de arquivos, algoritmos e ferramentas do mercado. Devem suportar diversos tipos de arquitetura de processadores diferentes para uma melhor adoção no mercado.

Como vimos a utilização é baseada no gosto e necessidade de cada administrador, bem como o hardware disponível para utilização. Outro paralelo de comparação necessário é em relação aos dispositivos de segurança existentes em cada distribuição. Cada distribuição depende de um determinado escopo para que suas funcionalidades sejam definidas, por exemplo, é importante para o Linux Redhat suportar diversos sistemas de arquivo e arquiteturas de processadores pois é a distribuição mais largamente utilizada no meio corporativo o qual quase sempre faz parte de um cenário totalmente heterogêneo, mas em relação a segurança não é necessário grade suporte, apenas os básicos como ACLs (Access Lists ou Listas de Acesso) e o pacote SELinux entre outras medidas externas para um melhor e seguro funcionamento do sistema. Por outro lado sistemas como Slackware, Gentoo, Engarde e Backtrace são praticamente todos orientados à algum campo de segurança e são as distribuições mais utilizadas para este fim, necessitando assim de mais recursos neste quesito. Podemos portanto caracterizar as distribuições quanto a este quesito na tabela a seguir: Distribuição AppArmor BGCC Exec Shield GrSecurity PaX Rsback SELinux Systrace RSBAC CentOS Linux Não Não Sim Não Não Não Sim Não Não Debian Linux Não Não Opcional Opcional Não Não Opcional Não Não Fedora Linux Não Não Sim Não Não Não Sim Não Não Gentoo Linux Não Sim Sim Opcional Sim Não Opcional Opcional Opcional Red Hat Enterprise Linux Não Não Sim Não Não Não Sim Não Não Mandriva Linux Não Não Sim Não Não Não Sim Não Não SUSE Linux Sim Não Não Não Não Não Não Não Não Slackware Linux Sim Não Opcional Não Não Não Sim Opcional Não Tabela 3 Dispositivos e Softwares de Segurança (WIKIPEDIA, 2007)