Infraestrutura de Sítios Institucionais Utilizando Contêineres Docker

Documentos relacionados
Tópicos Especiais em Redes de Telecomunicações

Introdução a Computação em Nuvem

PROJETO LÓGICO DE REDE

Introdução a Computação em Nuvem

Sistema Gerenciador de Conteúdo. Maria de Fátima de Freitas Bueno Marcílio

Hospedagem Cloud Especificação e Requisitos. Termo de Referência nº 7/2018

Universidade Federal de Pernambuco Centro Informática Graduação em Sistemas de Informação

O CMS JOOMLA! UM GUIA PARA INICIANTES

Trabalho de Conclusão de Curso

Introdução ao Desenvolvimento de

Sistemas Operacionais II


O que é um CMS; O que é hospedagem; Recursos necessários para hospedar um CMS; Sobre o WordPress; Instalação XampServer no Windows 7: Criação do

Como Instalar Nagios 4 E Monitorar Seus Servidores no Ubuntu 14 Introdução

Qual a proposta? Hardening de infraestrutrua de hospedagem Firewall de aplicação Pentest de aplicações web Análise estática de código

MÁQUINAS VIRTUAIS EM SISTEMAS DISTRIBUÍDOS. Luiz C. Vieira

Redes de Computadores - 4º Período. Projeto Integrador

Desenvolvimento de Aplicações Distribuídas

a) Escopo de Serviço. b) Escopo de Usuários. c) Escopo dos Recursos. d) Escopo das Responsabilidades e Investimentos.

Política de Uso dos. Recursos de Tecnologia da Informação. da UFRGS. Versão /03/2017

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA

SISTEMA DISTRIBUÍDO PARA GERENCIAMENTO DE LIBERAÇÃO DE RELEASES DE SOFTWARE

Como uma arquitetura de nuvem flexível e escalável com OpenShift trouxe maior eficiência e agilidade à T.I.

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Servidores. Um Servidor, em redes de computadores, nada mais é que um host da rede capaz de oferecer um determinado serviço a outros hosts da redes.

Processos ca 3 pítulo

DVL: Uma Ferramenta para Criação de Laboratórios Práticos de Disciplinas da Área de TI Utilizando Virtualização Baseada em Contêineres

Virtualização do System302 em ambiente VMWARE

LanUn1vers1ty 6421: CONFIGURANDO E SOLUCIONANDO PROBLEMAS EM UMA INFRAESTRUTURA DE REDES WINDOWS SERVER 2008

Requisitos do sistema para o Qlik Sense. Qlik Sense February 2018 Copyright QlikTech International AB. Todos os direitos reservados.

Guia de instalação. McAfee Web Gateway Cloud Service

TERMOS DE SERVIÇO ULTIMA ATUALIZAÇAO

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Estrutura do SO. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Requisitos do sistema para o Qlik Sense. Qlik Sense September 2017 Copyright QlikTech International AB. Todos os direitos reservados.

Sistemas de Detecção de Intrusão

Curso. Liferay Desenvolvedor

Criando laboratórios de teste e cobaias virtuais

Regras de Uso: Serviço de Hospedagem de Sites

Catálogo de Serviços e Sistemas de TI

TECNOLOGIA EM REDES DE COMPUTADORES - 3º PERÍODO ADS - ADMINISTRAÇÃO DE SERVIDORES Grupo: Alexandre - Leonel - Mateus - Ricardo

ADMINISTRANDO O WINDOWS SERVER 2012

Computação em nuvem (Cloud Computing)

Resumo. Palavras-Chave

Redes de Computadores

Comparativo de Desempenho e Funcionalidades entre Docker e Vagrant

PROVA 03/07 Segunda-feira (semana que vem)

Conceitos relativos a Banco de Dados & Modelos de Informação de Banco de Dados. Introdução

MAPEAMENTO COLABORATIVO DE EPIDEMIA

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

Fundamentos de Marketing Ana Carolina Baracho Programação para internet Luiz E. Guarino (disciplina pai)

INTRODUÇÃO A SISTEMAS OPERACIONAIS

Versão: 1.0 Doc Manager

NFAS. Node.js Full Application Server. Versão 0.1 de Alain Mouette,

UnoTech Soluções em Histórico da Revisão Data Versão Descrição Autor 27/05/ 1.0 Construção do Documento Carlos GG Flor Página 2

APOSTILA 1 - TUTORIA SISTEMAS OPERACIONAIS

3 Trabalhos relacionados

BD e Cloud Gerenciamento de. Dados na Nuvem

Info NEXT. Soluções Seguras e Confiáveis. Sua empresa esta preparada para o futuro?

Visões Arquiteturais. Visões Arquiteturais

Introdução...xiii. Instruções de configuração... xiii Utilização do CD... xv Agradecimentos...xviii Suporte técnico...xviii

PMI como Proposta de Integração do Ensino, Pesquisa e Extensão

Instruções de operação. Site de aplicativos

BIBLIOTECA DIGITAL. 1. Introdução. 2. Linguagens e Ferramentas. Digital library. Eduardo de Medeiros Ribeiro, Márcio José Sembay.

OUTSOURCING. Gerenciamento de -Criar - Desativar - Criar regras, de . -Monitoramento -Configuração de contas no outlook

Reduzindo o time-to-market com uma infraestrutura gerenciada e automatizada: Caso ELO

INFORMÁTICA AULA 3 EXERCÍCIOS SEMANAL

TITULO: N o : REVISÃO: PROCESSO DE INSTALACAO SAMSUNG 003

SAP Fiori Casos de Uso e Melhores Práticas de Implementação

Neste passo a passo você aprenderá como levantar o slot para hospedagem de sites e como implementar soluções de CMS atualizados de uma maneira simples

Desenvolvimento de Aplicações Distribuídas

Instruções de operação Site de aplicativos

EasyAzure. EasyAzure. Guia do programa. Ingram Micro Brasil. Versão 1.7

Guilherme Fernando Gielow

Aula 05. Infraestrutura de TI: hardware e software Pearson. Todos os direitos reservados.

Alessandro Jannuzi Open Source Lead

CATÁLOGO DE SERVIÇOS DE TI Versão 2.0 DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

Teste como Serviço (TaaS) na Computação em Nuvem

Nuvem e Virtualização Redes Programáveis

USO PROFISSIONAL DE COMPUTADORES

PLANO DE CONTINGÊNCIA. Coordenação de Tecnologia da Informação - Exercício 2019

CENTRAL DE CURSOS 29/06/2014

A CASA DO SIMULADO DESAFIO QUESTÕES MINISSIMULADO 122/360

Engenharia de Software.

VISÃO GERAL. Faça a gestão da segurança de rede até 250 postos através de uma consola baseada na cloud.

Conteúdo CENTRO DE CIÊNCIAS JURÍDICAS DIREÇÃO DO CENTRO SETOR DE INFORMÁTICA E REDES

Histórico de alterações

Curso Online de E-commerce. Plano de Estudo

A CASA DO SIMULADO DESAFIO QUESTÕES MINISSIMULADO 44/360

Documento de Visão. Projeto T2Ti ERP Lite PAF-ECF

Arquitetura de Software visão emergente

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Projeto GT VCG Grade QueroQuero

FERRAMENTA WEB PARA AUXÍLIO À GERÊNCIA DE ERROS CONHECIDOS E PROBLEMAS COM BASE EM ITIL

Transcrição:

Infraestrutura de Sítios Institucionais Utilizando Contêineres Docker Carlos V. B. Santos 1, Felipe E. dos Santos 1, Luiz C. B. Martins 1 1 Centro de Informática CPD Universidade de Brasília (UnB) Brasília, DF Brazil {carlosvbs, felipesantos,luizmartins}@unb.br Resumo. Este artigo descreve a migração da infraestrutura de sítios institucionais no qual utilizava-se jaulas (jails/chroot) para o uso dos contêineres através do Docker, criando uma nova infraestrutura com um nó central de requisições (proxy) junto com a implementação de vários mecanismos de segurança que não estavam habilitados. O nosso objetivo é ter uma infraestrutura simples de gerenciar e manter, possibilitando a expansão e a atualização, conforme a necessidade, sem interferir no eco-sistema e nos outros sítios. 1. Introdução Com a expansão das aplicações Web são inúmeros os serviços e aplicativos oferecidos por instituições públicas e privadas acessíveis através da Internet ou Intranet, substituindo os habituais Softwares que requeriam uma instalação em cada Desktop. Segundo o Ibope Media, em 2013 eramos 105 milhoes de internautas [Assencio 2013], sendo o Brasil o quinto país mais conectado na época. Hoje ocupamos a quarta posição com mais de 120 milhões, ultrapassando o Japão 1. A grande quantidade de ambientes com diferentes configurações necessárias para disponibilização destes serviços Web traz grandes desafios para gerenciar estas plataformas no que tange tanto a configurações quanto a atualizações. Dentre estes serviços há a hospedagem de sítios institucionais e a dificuldade em gerenciar. A Universidade de Brasília (UnB) utiliza o Content Management System (CMS) Joomla! como padrão para publicação de sítios visto a sua facilidade para a publicação de informações, possibilitando assim que o gerenciamento de conteúdo pudesse ser descentralizado para as áreas fins [Martins 2017]. Outro aspecto importante é a heterogeneidade dos sítios que estão em versão diferentes e utilizam muitas vezes componentes diversos que nem sempre aceitam essas atualizações, além da maioria estarem simplesmente desatualizados. Desde a adoção do padrão Joomla! houve um grande aumento no número de sítios nos últimos anos que devido a arquitetura que visa a acoplamento de extensões e diversas versões utilizadas, no qual manter ambiente de hospedagem de sítios torna-se um desafio. O tema abordado então será a infraestrutura de sítios institucionais utilizando contêineres através da plataforma Docker, devido a sua agilidade, portabilidade e controle. Atualmente na infraestrutura dos sítios institucionais, utilizam as jaulas (jails) com a ferramenta chroot para alterar o caminho padrão de diretórios e restringir o acesso dos sítios ao seu respectivo escopo. Entretanto, essa implementação gera uma problemática 1 http://www.itu.int/en/itu-d/statistics/documents/statistics/2013/individuals Internet 2000-2012.xls

quanto a atualização do Sistema Operacional e suas bibliotecas que necessitam ser catalogadas e novamente direcionadas para cada jaula, demandando tempo e sem garantias de que as novas bibliotecas irão funcionar no ambiente. Outro aspecto importante é a heterogeneidade dos sítios que estão em versão diferentes e utilizam muitas vezes componentes diferentes, os quais nem sempre aceitam estas atualizações, cuja a encontramm-se desatualizados. Ainda há a necessidade de atualização do Sistema Operacional que implica em muitos casos na falha operacional de vários sítios pois utilizam versões muito antigas de seus componentes, forçando o sistema a manter-se estagnado e comprometendo, assim a segurança. Um contêiner é um aparato mínimo necessário para executar um determinado software, diferente de uma máquina virtual que agrega um sistema operacional inteiro. Com isso, somente as bibliotecas e as configurações essenciais para o funcionamento do software são necessários, tornando os contêineres uma opção eficiente, leve e auto-suficientes, garantindo que o sistema executado use sempre as mesmas configurações[dua et al. 2014]. O Docker 2 é uma plataforma open source escrito em Go, cuja a uma linguagem de programação é desenvolvida no Google 3. Essa plataforma não é um sistema de virtualização tradicional, pois no Docker nós temos recursos isolados os quais utilizam bibliotecas compartilhadas entre o host e o contêiner[anderson 2015]. A figura 1 mostra como é estruturada a arquitetura Docker. Figura 1. Arquitetura Docker 2 https://www.docker.com/ 3 http://wwww.google.com

2. Metodologia Visando solucionar esses problemas de infraestrutura, foi usado os contêineres como uma forma de isolar cada sítio no lugar das jails (chroot) e criou-se uma imagem Docker como referência, já com os recursos mais atualizados. Os sítios ficaram cada um em seu respectivo contêiner, dessa forma possibilitamos que caso algum deles necessite de bibliotecas adicionais para que elas possam ser disponibilizadas sem interferir no ecosistema, garantindo portanto, a independência e o isolamento de cada sítio. Além disso criou-se um contêiner para o Banco de Dados usando a imagem oficial do MariaDB 4 e efetuando uma ligação entre eles. Foi criamos também um outro contêiner com Apache 5 e mod proxy para receber todas as requisições e redirecioná-las para o Virtual Host adequado. Esse Proxy serve como ponto de convergência para a implementação do Web Application Firewall através do mod security. Foi definido também um redirecionamento de URL(Uniform Resource Locator) da porta 80 para 443 a fim de forçar o uso de TLS/SSL, uma camada essencial para segurança, principalmente na necessidade de usar o painel de administração fornecendo usuário e senha. Outra camada de mitigação de ataques é o uso do Fail2Ban para efetuar o bloqueio através do Iptables dos endereços IP que usarem de força bruta para tentar ganhar autenticação ou ataques de negação de serviço. Todos esses itens abordados não estavam implementados na infraestrutura anterior. Para a imagem Docker dos sítios foi utilizada como base a imagem Joomla! oficial disponível no sítio hub.docker.com que após os ajustes chamamos de site-php7. Para a imagem do proxy foi usada a imagem oficial do Debian em sua última versão (latest) e após os ajustes a chamamos de apache-proxy. Por fim a imagem do Banco de Dados não foi implementada alterações, mantendo a versão oficial do MariaDB (latest) também disponível no mesmo endereço. A figura 2 apresenta a arquitetura. Figura 2. Arquitetura utilizando Contêineres e Docker Foi fim, foram criados alguns arquivos de configuração que serviram de base ou template para todos os sítios implantados no contêineres conforme será descrito a seguir. 4 https://mariadb.org/ 5 http://apache.org/

Diretório com o arquivo docker-compose.yml que conterá todas as configurações dos contêineres utilizados no ambiente: 1 / o p t / d o c k e r / a m b i e n t e 2 docker compose. yml Diretório que servirá de volume para o contêiner de banco de dados: 1 / o p t / d o c k e r / mysql Diretório que conterá as chaves do certificado SSL: 1 / o p t / d o c k e r / s s l 2 c e r t s 3 p r i v a t e Diretório com as configurações do proxy para os Virtual Hosts: 1 / o p t / d o c k e r / apache2 2 l o g s 3 s i t e s e n a b l e d 4 sitexxx proxy. c onf Diretório que conterá os sítios hospedados nos contêineres: 1 / o p t / d o c k e r / s i t e s 2 sitexxx 3 l o g s 4 h t d o c s 5 c onf 6 sitexxx. conf Com exceção do diretório ambiente, os demais servem de volumes para os contêineres e persistência dos dados no host além de armazenar as configurações necessárias para o correto funcionamento da infraestrutura. 3. Resultados Conseguiu-se, entáo, definir uma infraestrutura segura e escalonável através da utilização dos contêineres. Obteve-se uma imagem com as configurações padronizadas e necessárias para o funcionamento dos sítios, no qual nos permite, se necessário, trata-los individualmente sem interferir nos demais. A figura 3 apresenta a diferença da arquitetura baseada em Máquina Virtual e a baseada em contêineres. Uma outra possibilidade dos contêineres é o uso de cgroups, no qual permite especificar os limites de utilização dos recursos de hardware para cada contêiner, como memória, CPU, rede e I/O, uma capacidade que as jaulas, portanto, não permitiam, evitando assim, que um determinado processo possa exaurir os recursos do servidor em detrimento dos demais. O uso dos contêineres nos permite também nos permite a facilidade de exportação do ambiente de homologação para a produção (deploy), de forma que todas as configurações definidas possam ser exportadas e importadas integralmente.

Figura 3. Virtual M vs Container 4. Conclusão A utilização de contêineres proporcionou um ambiente mais seguro, através da mitigação da superfície de ataque com atualizações de softwares, implementação de vários aspectos de segurança que não existiam no ambiente antigo, como o TLS/SSL, Fail2Ban, mod security e iptables. Obtivemos o resultado que esperavamos com as alterações implementadas na nossa infraestrutura o qual nos permite gerenciar e implementar especificidades para cada contêiner, sem interferir nos demais. Além disso, a convergência das requisições para um nó central, possibilita a criação e a gerência de regras de segurança que são aplicadas a todos, não necessitando consequentemente de configuração desses mecanismos individualmente, e assim ganhar tempo comparada ao processo de enjaulamento utilizado anteriormente. Outro fator importante dessa trabalho é a possibilidade de aplicar essa infraestrutura em outros ambientes, como por exemplo, nos serviços em Java que estão atualmente em uso sendo este ponto a ser tratato futuramente. Referências Anderson, C. (2015). Docker [software engineering]. IEEE Software, 32(3):102 c3. Assencio, C. (2013). Ibope aponta que acesso à internet cresce 3 http://exame.abril.com.br/tecnologia/ ibope-aponta-que-acesso-a-internet-cresce-3-no-2o-tri/. Acessado: 2017-03-27. Dua, R., Raja, A. R., and Kakadia, D. (2014). Virtualization vs containerization to support paas. In Cloud Engineering (IC2E), 2014 IEEE International Conference on, pages 610 614. IEEE. Martins, L. C. B. (2017). Despacho cpd ssi sites 0683276. Technical report, Centro de Informática - UnB.