Você está na página 1de 175

Ficha Catalográfica elaborada pela Bibliotecária Christiane Maria Montenegro Sá Lins CRB/3 - 952

E56a

ENCONTRO UNIFICADO DE COMPUTAÇÃO EM

PARNAÍBA. (5: 2012: Parnaíba, PI).

Anais do V ENUCOMP 2012, Parnaíba, PI, 12 a 14 de novembro de 2012: [recurso eletrônico]/ Organização [de] Thiago C. de Sousa e Rodrigo Augusto R. S. Baluz. - Parnaíba: FUESPI, 2012.

194 p.: Il. ISBN: 978-85-61946-80-7

1. Ciência da Computação. 2. Congressos. I. Sousa, Thiago C. de (org.) II. Baluz, Rodrigo Augusto R. S. (org.)

CDD 001.642

III. Título.

ii

PREFÁCIO

Em 2008, as instituições parnaibanas que atuam no ensino superior, técnico e profissional de informática sentiram a necessidade de criar um evento de computação maior e mais completo para a cidade. Assim, surgiu o projeto ENUCOMP (Encontro Unificado de Computação em Parnaíba), criado numa parceria do CEEP, FAP, IFPI e UESPI, cujas propostas foram pautadas na contribuição para a troca de experiências, buscando a união dos acadêmicos; no fortalecimento da parceria no desenvolvimento da educação e da informática; e no incentivo à produção de trabalhos científicos ligados à tecnologia. Mantendo estes mesmos ideais, o evento vem alcançando um crescimento consistente ano após ano e ganhando envergadura. Em sua quinta edição, com cerca de 300 participantes vindos de diversos Estados brasileiros, o ENUCOMP já é uma referência regional no Norte-Nordeste do Brasil na área de computação.

A edição deste ano, que ocorre nos dias 12, 13 e 14 de novembro, inclui cinco palestras, com temas sobre inovação, acessibilidade, métodos ágeis, computação ubíqua e educação à distância, bem como seis mini-cursos com assuntos relativos à criação jogos 2D e para Facebook, simulação e segurança de redes, desenvolvimento web e sistemas embarcados. Além disso, a programação do ENUCOMP 2012 também fortaleceu a sua vertente científica ao montar um excelente Comitê de Programa, composto por quase quarenta pesquisadores e professores de renomadas universidades e empresas de todas as cinco regiões brasileiras, para realizar a arbitragem de artigos por pares. Como consequência, foram recebidos trabalhos provenientes de 1/3 dos Estados da Federação, sendo selecionados apenas nove para apresentação no evento, o que significou um taxa de aceitação de 26%, nível dos melhores congressos nacionais da área. Os artigos versam sobre três grandes áreas da computação: Inteligência Artificial, com trabalhos sobre agentes inteligentes, testes de agentes e algoritmos genéticos para estimação de sistemas de potência; Sistemas Distribuídos, com temas relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento de download ; e Visão Computacional, com assuntos referentes à aplicação de realidade aumentada, análise de imagens via séries temporais e conversão de dados em RDF. Assim, este volume dos Anais Eletrônicos do ENUCOMP 2012 é composto por 12 capítulos: 6 relacionados aos mini-cursos trabalhados durante o encontro, e outros 6 formados pelos artigos científicos selecionados pelo Comitê de Programa para apresentação mas não premiados.

Por último, gostaríamos de agradecer enormemente aos palestrantes, aos ministrantes de mini- cursos e aos membros da equipe de apoio e do comitê de programa, por acreditarem em nosso evento. O trabalho voluntário realizado por vocês de foi fundamental importância para o sucesso do ENUCOMP. Desejamos que o evento possa trazer frutos para o trabalho de todos.

iii

Até a próxima!

trazer frutos para o trabalho de todos. iii Até a próxima! Thiago Carvalho de Sousa Coordenação

Thiago Carvalho de Sousa Coordenação Geral ENUCOMP 2012

Coordenação Geral:

COMISSÃO ORGANIZADORA

Athânio de S. Silveira, Instituto Federal do Piauí (IFPI) Francisco das Chagas C. do Nascimento, Centro Estadual de Educação Profissional (CEEP) Rodrigo Augusto R. S. Baluz, Faculdade Piauiense (FAP) Thiago C. de Sousa, Universidade Estadual do Piauí (UESPI)

Equipe de Apoio:

Antônio S. de Sousa, Instituto Federal do Piauí (IFPI) Átila R. Lopes, Universidade Estadual do Piauí (UESPI) Francisco das Chagas Rocha, Universidade Estadual do Piauí (UESPI) José Flávio G. Barros, Faculdade Piauiense (FAP) Mayllon V. da Silva, Faculdade Piauiense (FAP) Nécio de L. Veras, Instituto Federal do Ceará (IFCE) Régis P. Magalhães, Instituto Federal do Piauí (IFPI)

Comitê de Programa:

André Fujita, Universidade de São Paulo (USP) Aryldo Russo Júnior, Grupo AeS Atila Lopes, Universidade Estadual do Piauí (UESPI) Carlos Giovanni Nunes, Universidade Estadual do Piauí (UESPI) Celina Takemura, Embrapa Christian Paz-Trillo, Centro Universitário SENAC-SP Claudia Melo, Thought Works David Pereira, Banco Central do Brasil (BCB) Eduardo Guerra, Universidade Federal do Pará (UFPA) Eduardo Ueda, Petrobras Esdras Bispo Júnior, Universidade Federal de Goiás (UFG) Eyder Rios, Universidade Estadual do Piauí (UESPI) Fábio Kepler, Universidade Federal do Pampa (UNIPAMPA) Fábio Siqueira, Programa de Educação Continuada da Escola Politécnica da USP (PECE) Flávio Coutinho, Universidade de São Paulo (USP) Harilton Araújo, Centro de Ensino Unificado de Teresina (CEUT) José Flávio Barros, Faculdade Piauiense (FAP) Francisco das Chagas Rocha, Universidade Estadual do Piauí (UESPI) Haniel Barbosa, Universidade Federal do Rio Grande do Norte (UFRN) Jaclason Machado, Universidade Federal do Piauí (UFPI) Jesus Mena, Universidade Federal do ABC (UFABC) José Bringel Filho, Universidade Estadual do Piauí (UESPI) Karina Valdivia, Universidade de São Paulo (USP) Márcio Monteiro, IBM do Brasil Marcos Couto, Oracle do Brasil Mayllon Silva, Faculdade Piauiense (FAP)

iv

Comitê de Programa (cont.):

Mehran Misaghi, Sociedade Educacional de Santa Catarina (SOCIESC) Nécio Lima, Instituto Federal do Ceará (IFCE) Pedro Alcântara Neto, Universidade Federal do Piauí (UFPI) Raphael Cobé, Instituto Federal do Rio Grande do Norte (IFRN) Régis Magalhães, Instituto Federal do Piauí (IFPI) Raimundo Barreto, Universidade Federal do Amazonas (UFAM) Ricardo Lira, Universidade Estadual do Piauí (UESPI) Ricardo Sekeff, Centro Internacional de Pesquisas A.C. Camargo Rodrigo Baluz, Faculdade Piauiense (FAP) Rodrigo Veras, Universidade Federal do Piauí (UFPI) Sérgio Barros, Universidade Estadual do Piauí (UESPI) Thiago Carvalho, Universidade Estadual do Piauí (UESPI) Vladimir Rocha, Infomobile

v

SUMÁRIO

ANAIS ELETRÔNICOS V ENUCOMP

Introdução

Facebook

Erick Baptista Passos

ao

Resumo

Desenvolvimento

de

Jogos

para

Nesse capítulo, mostramos um pouco da história dos jogos eletrônicos, conceitos de game design, e um tutorial inicial sobre a criação de jogos para Facebook usando ferramentas simples, tais como HTML dinâmico e Javascript.

1.1 - Introdução

Jogos eletrônicos são uma das áreas de trabalho mais interessantes da atualidade. Os motivos são diversos, desde a atração que as pessoas tem pelo produto desse trabalho, até o fato de ser uma produção com base em criatividade, competência, sendo uma mistura de arte e ciência.

Nesse capítulo, apresentaremos um breve histórico dos jogos eletrônicos, faremos uma apresentação sobre game design, o principal conceito por trás de jogos, sejam eles eletrônicos ou não, e discutiremos sobre algumas ferramentas para o desenvolvimento de jogos simples para a rede social Facebook. Nas seções principais do texto, serão mostrados todos os passos para a criação de um jogo web simples para Facebook.

1.2 - Histórico

Os primeiros jogos eletrônicos de que se tem notícia, Tennis for Two e Spacewar, foram desenvolvidos como um experimento pessoal, e como uma demonstração do poder gráfico de um novo modelo de computador do MIT, respectivamente. Na Figura 1.1 podemos ver o jogo Tennis for Two, que consiste de um osciloscópio onde você move a onda de um lado para o outro como se fosse uma bola de tenis.

1

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP F igura 1.1 - O jogo Tennis for Two Comercialmente, a história

F igura 1.1 - O jogo Tennis for Two

Comercialmente, a história dos j ogos eletrônicos se inicia com o advento das m áquinas arcades, uma evolução das máquinas me cânicas de pinball, adotando botões, circuitos eletrônicos e um monitor de TV para exibir as im agens. Os arcades obtiveram muito sucesso, e várias empresas proeminentes surgiram nessa ép oca, entre elas a Atari. A Figura 1.2 mostra o jogo Atari Night Driver.

elas a Atari. A Figura 1.2 mostra o jogo Atari Night Driver. Figura 1.2 - Atari

Figura 1.2 - Atari Night Driver, um jogo arcade que também fez bastante suces so nos consoles.

para o ambiente

doméstico, no que sucederam. O s principais exemplos dessa primeira geração s ão o Odissey e o

Os consoles surgiram após o suc esso dos arcades, e visavam expandir o mercado

2

ANAIS ELETRÔNICOS V ENUCOMP

Atari, mostrado na Figura 1.3, j e um de seus maiores sucessos, o jogo Space I nvaders, também lançado originalmente como um arcade, mostrado na Figura 1.4.

originalmente como um arcade, mostrado na Figura 1.4. Figura 1.3 - O Atari VG S 2600,

Figura 1.3 - O Atari VG S 2600, de 1978, o primeiro console de grande sucesso.

VG S 2600, de 1978, o primeiro console de grande sucesso. F igura 1.4 - O

F igura 1.4 - O jogo Space Invaders

das empresas de

desenvolvimento, o que gerou u ma grave crise de conteúdo entre 1983 e 198 4, que culminou

Atari original. Muitos jogos de baixa qualidade , e cópias baratas

principal causa dessa crise. Muitos previram o fim dos jogos consoles NES, da Nintendo (Figura 1.5), e M aster System da

com a falência e dissolvição da

O aquecimento do mercado de

jogos levou a uma expansão muito rápida

de produtos de sucesso foram a

eletrônicos, mas o advento dos

Sega, em 1985 e 1986 respectiva mente, mostraram que o mercado estava apenas no seu início.

3

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 1. 5 - NES, Nintendo Entertainment System O lançamento das séries

Figura 1. 5 - NES, Nintendo Entertainment System

O

lançamento das séries Super

Mario (Figura 1.6) e Zelda para NES, mostrara m o quanto o uso

de

personagens carismáticos pod e alavancar as vendas desse tipo de produto. De sde essa segunda

geração, todos os consoles e pro dutoras buscam a criação de séries e personagen s marcantes.

e pro dutoras buscam a criação de séries e personagen s marcantes. Figura 1.6 - O

Figura 1.6 - O jogo Super Mario 1, para NES

4

ANAIS ELETRÔNICOS V ENUCOMP

No final dos anos 1980, o merc ado de jogos eletrônicos para computador se i niciou através de empresas de garagem, principal mente na Inglaterra. Em meados da década de 1 990, começaram a surgir jogos com o uso de po nto de vista de primeira pessoa, onde a image m aparenta ser a

visão do personagem. Exemplo s desses jogos são o Wolfenstein 3D, Doom

Entretanto, o advento dos jogos

em perspectiva 3D real (três dimensões) só o correu realmente

com o lançamento do jogo Qua ke (Figura 1.7), de 1996. Desde então, muitos jogos de sucesso

usam essa técnica de visualizaçã o.

e Duke Nukem.

sucesso usam essa técnica de visualizaçã o. e Duke Nukem. Figura 1.7 - O jog o

Figura 1.7 - O jog o Quake, desenvolvido em 1996 pela ID Softwa re

1.3 - Game Design

Antes de se começar a desenvo lver um jogo, é importante se trabalhar os co nceitos que irão

compor essa experiência de

conhecimento milenar chamada de game design, ou projeto de jogos. Game desi gn trata de como se projetam as mecânicas de jo gos, ou seja, as regras que definem como o jo go funciona, seja ele eletrônico, de tabuleiro, ou u m esporte.

do

entretenimento.

Esse

é

o

assunto

abordado

numa

área

Todos nós jogamos, mesmo q ue não concientemente, já que jogos basica mente exploram instintos que estão presentes nos nossos cérebros. Um game designer precisa co nhecer um pouco desses instintos para poder criar experiências interessantes para o jogador.

Os principais instintos que são e xplorados em game design são os seguintes:

5

ANAIS ELETRÔNICOS V ENUCOMP

Exploração - o ser humano é curioso por natureza, e em jogos isso pode ser explorado através da criação de ambientes interessantes, o que faz o jogador ter vontade de continuar jogando para descobrir as novas áreas, paisagens e personagens. Essa característica é mais marcante nas mulheres, mas muitos homens também gostam de exploração;

Aprendizado - nós somos recompensados quimicamente quando aprendemos algo novo, quando desenvolvemos uma nova habilidade que antes não tinhamos. Esse instinto é responsável por grande parte do desenvolvimento técnico da humanidade. Em jogos, é importante estimular o jogador a aprender novas ações que lhe permitam vencer os desafios;

Desafios - vencer desafios em si também é uma atividade recompensadora, especialmente para os homens, que são normalmente mais competitivos.

Mecânicas de jogo

Mecânicas de jogo são os elementos mais básicos que definem a atividade. Ao se projetar um jogo, são as primeiras decisões a serem tomadas. Para entender o que são as mecânicas, podemos fazer um exercício simples: remova tudo o que puder de um jogo que você conhece, como gráficos, música, estória, personagens. Substitua tudo por elementos visuais simples, como círculos, caixas, etc. O que sobram são as mecânicas, ou seja, a coordenação entre os controles, o visual e o tempo (para atingir alvos, pular em plataformas, evitar obstáculos, tudo no momento exato).

Em alguns jogos, as mecânicas podem envolver áudio, como em jogos musicais de ritmo, mas mesmo nesses casos, podemos substituir as músicas em questão por batidas ritmadas, coordeanadas com o visual da tela, onde o jogador deve apertar a tecla de cor correspondente no momento exato para ganhar os pontos.

Na Figura 1.8 temos uma visão simplificada do que poderia ser o protótipo de um jogo de plataforma usando apenas elementos visuais simples. Um protótipo desses permite que se testem as mecânicas rapidamente, antes de se comprometer com o design visual. Se o jogo for divertido apenas com caixas simples, será também divertido com visual apurado. Entretanto, se o jogo não for divertido dessa forma, dificilmente será após a adição da arte.

6

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 1.8 - Um protótipo de jogo de plataforma usando apenas elementos

Figura 1.8 - Um protótipo de jogo de plataforma usando apenas elementos visuais simples.

Um outro conceito importante de game design é o loop de desafio, que ajuda a se projetar como se apresentam as regras para o jogador. Todo jogo é uma repetição da seguinte sequência:

apresenta-se um desafio ao jogador; o jogador realiza uma ação; através das regras, se verifica se o jogador venceu o desafio; caso afirmativo, o jogador é recompensado (usando os instinto citados anteriormente), caso negativo, o jogador é punido; volta-se ao passo de apresentar um desafio. A Figura 1.9 mostra um desenho esquemático desse conceito.

A Figura 1.9 mostra um desenho esquemático desse conceito. Figura 1.8 - O loop de desafio,

Figura 1.8 - O loop de desafio, um conceito de game design.

1.4 - O Jogo Exemplo

7

ANAIS ELETRÔNICOS V ENUCOMP

Agora iremos apresentar o jogo que será usado como exemplo. Será um jogo simples, para um único jogador, onde o seu desafio é atravessar uma sala até uma porta do lado oposto ao que ele inicia. Como o jogo é em turnos, a sala é composta por um conjunto de casas (células quadradas) em um tabuleiro, e o jogador deve usar o mínimo de movimentos possíveis para chegar ao destino final.

O problema é que a sala está infestada de monstros que o jogador não pode ver. Se o jogador parar numa casa que possui um monstro, ele perde a partida. Felizmente, ele pode perceber a presença de um monstro em uma casa adjacente, quando isso ocorrer. A estratégia então é recuar e buscar outro caminho, ou então arriscar para tentar não perder movimentos. A Figura 1.9 mostra uma imagem do protótipo desenvolvido em HTML dinâmico.

uma imagem do protótipo desenvolvido em HTML dinâmico. Figura 1.9 - Protótipo do jogo. A casa

Figura 1.9 - Protótipo do jogo. A casa verde é a saída, a casa amarela é onde o jogador está, e as casas pretas mostram onde ele já passou. Ao chegar numa casa próxima a um monstro, um aviso é emitido.

1.5 - Implementação de Mecânicas

8

ANAIS ELETRÔNICOS V ENUCOMP

O protótipo do jogo foi todo criado em HTML 4 dinâmico, usando a linguagem Javascript, sem

necessidade de uso de tecnologias de servidor, como PhP, Ruby ou Java. Na Figura 1.10 podemos ver o código base HTML que carrega a página do jogo. Observe que apenas fazemos carga da biblioteca jQuery, para facilitar o trabalho em HTML dinâmico, e dos arquivos

Javascript criados especialmente para o jogo.

e dos arquivos Javascript criados especialmente para o jogo. Figura 1.10 - Arquivo HTML básico do

Figura 1.10 - Arquivo HTML básico do jogo. O elemento DIV chamado “container” servirá como tabuleiro, e seu conteúdo será criado dinamicamente com Javascript.

A criação das casas do tabuleiro é feita através da inserção de elementos DIV diretamente no

HTML através de Javascript. Cada uma das 100 casas (tabuleiro 10x10) é representada por uma DIV de fundo cinza, a qual é associada uma função ligada ao evento clique. A Figura 1.11 mostra o trecho de código Javascript que cria as DIVs para representar as casas do tabuleiro.

que cria as DIVs para representar as casas do tabuleiro. Figura 1.11 - Trecho de código

Figura 1.11 - Trecho de código Javascript que cria as casas do tabuleiro. Cada casa é uma DIV, que é posicionada proceduralmente, e tem uma função associada ao evento clique.

A função associada ao evento clique é responsável pela lógica do jogo. Os seguintes passos são

verificados sempre que o jogador clica em uma casa do tabuleiro:

9

ANAIS ELETRÔNICOS V ENUCOMP

O jogador pode se mover para essa casa? A função só continua em caso afirmativo;

Move o jogador para a nova casa e conta o movimento;

A nova casa contém um monstro? Caso afirmativo, o jogador perde a partida;

A nova casa é o destino final? Caso afirmativo, o jogador vence a partida;

Existe um monstro em casa adjacente? Caso afirmativo, emitir alerta.

Para implementar essa lógica, o tabuleiro é representado por uma matriz 10x10 de números inteiros, onde o valor zero (0) representa uma casa livre, e o valor um (1) representa a presença de um monstro. As funções de checagem de derrota e presença de monstro usam essa matriz, enquanto a função de checagem de movimentação possível apenas verifica se a casa clicada é adjacente à atual. Na Figura 1.12 podemos ver o código da função que checa a validade do movimento.

ver o código da função que checa a validade do movimento. Figura 1.12 - Função que

Figura 1.12 - Função que checa se a casa clicada é adjacente àquela ocupada pelo personagem, o que indica um movimento válido.

O restante do código fonte para as mecânicas está incluído no DVD de anais do evento, num arquivo chamado “jogo.js”. O arquivo zipado incluído no DVD contém esse e os demais arquivos que fazem parte do jogo desenvolvido.

1.6 - Integração com o Facebook

Ao se criar um jogo para Facebook, ao contrário do que muitos imaginam, não se está criando um aplicativo web que irá rodar nos servidores dessa rede social. O que o Facebook permite é a autenticação, e o acesso remoto (via serviços web) a vários dados do perfil dos jogadores, seu grafo de amigos, entre outras informações.

Esses serviços remotos podem ser acessados diretamente através de requisições em protocolo HTTP, mas é mais produtivo se utilizar uma das SDKs disponibilizadas, seja ela oficial, ou mantida por uma comunidade. Existem SDKs para as linguagens mais populares, tais como PhP, Objective C (iOS), Android/Java e Javascript, entre outras. Para isso, basta que você registre a sua aplicação no endereço http://developers.facebook.com/ e baixe uma das SDKs oficiais para

10

ANAIS ELETRÔNICOS V ENUCOMP

iniciar

a

programação.

Para o nosso exemplo, usaremos a SDK oficial Javascript para fazer a integração diretamente do browser. Iremos apenas fazer a autenticação/autorização do jogador via Facebook, para, em caso de vitória numa partida do jogo, publicar uma mensagem no mural do jogador. O arquivo “facebook-utils.js” inclui todo o código de acesso à rede social, e é bastante simples, sendo baseado no exemplo incial de autenticação da documentação oficial.

A função de inicialização contida no arquivo verifica se o jogador está logado no Facebook, e se já autorizou o uso do aplicativo. Caso contrário, o código abre uma pequena janela para que o jogador possa fazer isso. A função mais interessante, mostrada na Figura 1.13, usa a API de grafos do Facebook para postar a mensagem de vitória no mural do jogador.

para postar a mensagem de vitória no mural do jogador. Figura 1.13 - Função que publica

Figura 1.13 - Função que publica uma mensagem no mural do usuário logado no Facebook.

1.7 - Conclusão e Outras Idéias

Nesse capítulo, mostramos alguns conceitos básicos sobre o projeto de jogos, e um exemplo simples, feito como um protótipo em HTML4 dinâmico, de um jogo com elementos de rede social. A tendência que tem-se observado é o uso cada vez mais acentuado dessas tecnologias abertas que permitem a criação de jogos para diversos dispositivos diferentes (PC, Android, iOS, Mac, Linux), especialmente com o novo padrão HTML5.

Nesse exemplo preferimos utilizar HTML4 por ser uma tecnologia que funciona em browsers antigos, como o IE 8 e inferior. Uma atualização interessante seria desenvolver os gráficos do jogo para uso da tag CANVAS de HTML5, permitindo um melhor uso de animações e efeitos. Para tanto, recomenda-se o uso de alguma biblioteca que facilite o trabalho, tal como a CreateJS.

Também é possível se utilizar animações e efeitos interessantes com HTML4. No jogo Cangaço, da Sertão Games, utilizamos apenas HTML4 com a biblioteca Spritely, com resultados bastante interessantes.

11

ANAIS ELETRÔNICOS V ENUCOMP

Outro aspecto que recomendamos explorar é uma maior imersão nas características sociais dos jogos, tal como o uso de desafio multiplayer, ou pelo menos contra um único amigo, como explorado nos jogos Song Pop, e Cangaço Wargame.

Referências

Cook, Daniel (2012). What are game mechanics? http://www.lostgarden.com/2006/10/what-are- game-mechanics.html. Acessado em 09/11/2012.

CreateJS (2012). A suite of Javascript libraries and tools for building rich, interactive experiences with HTML5. http://www.createjs.com/#!/CreateJS. Acessado em 09/11/2012.

Facebook Inc. (2012). Facebook Developers Portal. http://developers.facebook.com. Acessado em 07/11/2012.

Sertão Games (2012). Sítio oficial do Cangaço Wargame. http://cangaco.com. acessado em

09/11/2012.

W3Schools (2012). Introdução ao padrão HTML5. http://www.w3schools.com/html/html5_intro.asp. Acessado em 09/11/2012.

12

ANAIS ELETRÔNICOS V ENUCOMP

Criação

Python/C

de

jogos

2D

Leinylson Fontinele Pereira

com

técnicas

3D

utilizando

Abstract

The game in our context is the electronic game, a simulation and interactive visual displays on a screen. The interaction is such that the player must have some specific goal or how to go out somewhere, destroy something, solve a problem, etc. The game developer should be aware of all possible situations that will be experienced by the player, the knowledge and application of specific techniques to create an immersive environment and free of errors typical of computer graphics, as well as all processes that involve the creation of a game / animation, for use by companies in disseminating their products through the adoption of "gamification" or for personal entertainment.

Resumo

O jogo no nosso contexto é o jogo eletrônico, uma simulação visual e interativa exibida numa tela. A interação é tal que o jogador deve ter algum objetivo específico como ir ou sair para algum lugar, destruir algo, resolver um problema, etc. O desenvolvedor de jogos deve estar ciente de todas as situações possíveis que serão sentidas pelo jogador, o conhecimento e aplicação de técnicas específicas para criar um ambiente imersivo e livre de erros típicos da computação gráfica, bem como todos os processos que envolvem a criação de um jogo/animação, seja para uso de empresas na difusão de seus produtos por meio da adoção de gamificação ou ainda para entretenimento pessoal.

2.1. Do que é feito um jogo?

Um jogo nos dá um controle sobre um personagem ou um objeto virtual, de modo que possamos ter um controle e uma imersão no ambiente virtual que se aproxime do nosso controle e imersão no ambiente real só que com regras e motivações diferentes.

13

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 2.1 Componentes da criação de um jogo 2.2. O Jogador O

Figura 2.1 Componentes da criação de um jogo

2.2. O Jogador

O Jogador é um participante do jogo. Um jogador pode ser uma pessoa real ou um jogador controlado

pelo próprio jogo. Neste artigo, estamos nos referindo a um jogador real, onde a interação do jogo com

o jogador é feito com dispositivos de entrada e saída do jogo, geralmente a tela e um controle em que na maioria das vezes, o jogador controla o personagem central do jogo.

2.3. Personagem

O personagem de um jogo de videogame é personagem fictício para que o jogador controle. Nos

primeiros jogos o personagem era apenas uma figura sem expressão, dotada de alguma característica especial (andar, pular) e não possuíam uma história ou motivação. O primeiro personagem de videogame foi o Mario (ver figura 2.2), criado por Shigeru Miyamoto para a Nintendo. Com o tempo, os personagens de videogame foram incorporados à cultura pop. Com Mário surgiu o conceito de mascote do jogo. Esse tipo de personagem carismático agrega um grande valor por sua importância publicitária graças a sua identificação com o público. Muitas ideias vêm dos sonhos, surgem de pequenos conceitos

expandidos em Brainstorm. Grandes ideias poder parecer ridículas no começo.

expandidos em Brainstorm . Grandes ideias poder parecer ridículas no começo. Figura 2.2 A criação do

Figura 2.2 A criação do Mário

14

ANAIS ELETRÔNICOS V ENUCOMP

2.4. Menus

Os menus são interfaces de texto e/ou imagens onde o jogador deve fazer escolhas e ajustes. Antes de o jogo começar, os menus servem para fazer ajuste de preferenciais do jogo, escolha do tipo de jogo, desempenho do hardware, etc. Dentro do jogo eles servem para fazer escolhas e ajustes mais complexos. Nem todo jogo precisa de menus dentro do jogo, mas certamente vai precisar de um menu antes do jogo começar .

2.5. HUD

Sigla para Head Up Display. É um método de representação visual de informações importantes para o jogador. São como menus não interativos. Em geral eles exibem informações como munição, life, arma selecionada, pontuação, dinheiro ou itens. O HUD (ver figura 2.3) é desenhado por último na tela, de modo que ele fique sempre visível para o jogador. Ele não deve se mover muito ou conter palavras para que não distraia o jogador e sempre que possível ser iconográfico, ou seja, usando imagens que representem a informação (ícones).

usando imagens que representem a informação (ícones). Figura 2.3 Exemplo de HUD 2.6. Som e Música

Figura 2.3 Exemplo de HUD

2.6. Som e Música

Embora não sejam fundamentais no jogo, os sons existem nos jogos desde o primeiro jogo. Os sons ajudam a caracterizar certas ações, aumentar o nível de imersão do jogador e deixa-lo mais concentrado no jogo. Os sons podem ser construídos por sonoplastia. Deve-se ter em mente que diferentes sons provocam diferentes efeitos sobre o sistema sensorial do jogador. Os sons ligados a uma ação ou personagem não precisam ser os mesmos sons ligados a estes no mundo real. Pose-se usar sons diversos a fim de obter efeitos cômicos, criar tensões, força ou simplesmente obter sensações agradáveis.

A música serve para se criar uma base para as imagens e os outros sons. Com a construção da música certa, pode-se criar ambientes agradáveis, tensos, pode-se deixar o jogador mais nervoso com uma música mais rápida e pode-se até usar o recurso do silêncio para criar um clima de suspense. É sempre bom ter algum repertório de músicas no jogo, e ter músicas de duração razoável, caso contrário,

15

ANAIS ELETRÔNICOS V ENUCOMP

as músicas podem ficar chatas e repetitivas. As músicas de jogos também criam uma lembrança especial do jogo nos jogadores e cria um sensação agradável ao se jogar.

2.6. Física

Um jogo é uma simulação e na maioria das vezes, uma representação do mundo em que vivemos. Essa representação, seja por limitações de software e hardware ou por escolha estética, não contém todos os aspectos do mundo real. Porém, um aspecto que quase sempre está presente é o físico.

Esse aspecto se manifesta principalmente na detecção de colisão. Se o objeto A depois que ele se mover colide em algo então faz alguma coisa. Essa alguma coisa pode variar de jogo para jogo. Pode ser que o objeto A seja um personagem e o algo seja uma parede. Então o "faz alguma coisa pode ser nada, ele bate na parede, portanto não anda, mas pode ser que o personagem tenho batido em algo que o machuque como o fogo, então o "faz alguma coisa" pode ser tirar vida do jogador. Uma técnica de colisão bem simples e que vamos usar aqui é verificar se o retângulo que envolve o sprite toca o retângulo que envolve o outro sprite (ver figura 2.4 e 2.5).

que envolve o outro sprite (ver figura 2.4 e 2.5). Figura 2.4 Colisão entre retângulos Figura

Figura 2.4 Colisão entre retângulos

figura 2.4 e 2.5). Figura 2.4 Colisão entre retângulos Figura 2.5 Máquina de Estados Finitos 2.7.

Figura 2.5 Máquina de Estados Finitos

2.7. Quem participa da criação?

Você que sempre gostou de jogar e decidiu cursar Ciência da Computação para aprender como é que aqueles games são feitos e logo se viu travando uma batalha para passar em Cálculo, Álgebra Linear e Geometria Analítica. O desenvolvimento de um moderno e comercialmente

16

ANAIS ELETRÔNICOS V ENUCOMP

viável game, envolve uma ampla variedade de habilidades e uma equipe especializada (ver figura

2.6).

2.7.1.

Game Designer

Elabora os elementos do jogo bem como sua mecânica. Os elementos são os personagens e o cenário, a mecânica são as possibilidades que o jogador tem de interagir com o jogo. Empresas que elaboram jogos de ponta modernos dividem as responsabilidades do game designer com outros profissionais relacionados, sendo os principais, o combat designer e o level designer.

2.7.2. Roteirista

Descreve como é a trama do jogo, o perfil psicológico dos personagens e a interação entre eles (social e/ou psicológica), a qual não necessariamente corresponde àquela entre o jogador e os personagens do jogo.

2.7.3. Tester

Trabalha na equipe de Q&A (Quality Assurance - Controle de qualidade). Testa diversos aspectos do jogo e relata os pontos falhos ou a serem melhorados.

2.7.4. Programador

Elabora a programação do jogo, desenvolvendo códigos para lidar com AI, música, interação, etc.

2.7.5. Engenheiro de software

Projeta os componentes de software do jogo envolvendo diversos aspectos como a composição dos objetos, a interface deles, a interrelação existente entre eles, etc.

2.7.6. Programador Web e Programador de redes

Realiza toda a implementação e configuração necessária para a execução do jogo em navegadores e a disponibilização de interatividade em rede nos jogos multiplayers on-line.

2.7.7. Programador de AI

Responsável por programar os algoritmos de Inteligência Artificial usados no jogo. Dentre estes algoritmos estão o de planejamento estratégico de grupo num atirador de primeira pessoa, a montagem da estratégia do time controlado pela CPU num jogo de esportes, o planejamento de caminho para levar um personagem NPC (personagens não-jogáveis) de um local ao outro, etc.

2.7.8. Engenheiro de som

Produz os efeitos sonoros e a música tema.

2.7.9. Level designer

17

ANAIS ELETRÔNICOS V ENUCOMP

Faz o projeto da fase em que o jogador se encontra. Determina quais elementos compõem a fase, verifica a presença de alguma característica distintiva no terreno como aclives, declives, montanhas, etc.

2.7.10. Combat Designer

Projeta como será o combate entre o jogador e o computador. Quais são os elementos que devem estar presentes no combate, qual o papel destes elementos (dano, cobertura, etc).

qual o papel destes elementos (dano, cobertura, etc). Figura 2.6. Equipe de desenvolvimento de jogos 2.8.

Figura 2.6. Equipe de desenvolvimento de jogos

2.8. Como é feito um jogo de duas dimensões?

De maneira similar ao modo convencional, a criação de jogos de duas dimensões (2D), utiliza-se da orientação do plano cartesiano (x,y) bastando observar algumas peculiaridades quanto a orientação do eixo y (ver figura 2.7).

quanto a orientação do eixo y (ver figura 2.7). Figura 2.7. Sistema de coordenadas 2.9. O

Figura 2.7. Sistema de coordenadas

2.9. O que são engines?

18

ANAIS ELETRÔNICOS V ENUCOMP

Definição: “É a ferramenta que se encarregará por entender como o hardware gráfico, irá controlar os modelos para serem renderizados, tratará das entradas de dados do jogador, tratará de todo o processamento de baixo nível e outras coisas que o desenvolvedor de jogos normalmente não deseja fazer ou não tem tempo para se preocupar” (ver figura 2.8).

ou não t em tempo para se preocupar” (ver figura 2.8). Figura 2.8 Estrutura de um

Figura 2.8 Estrutura de um Motor de Game (Game Engine)

2.9.1. PyGame

O Pygame é um conjunto de módulos que você importa num código em Python, os quais lhe disponibilizam uma série de funcionalidades auxiliares para criação de aplicativos multimídia e games.

Segue abaixo algumas características da engine para programadores da linguagem python:

Vários processadores podem ser usados facilmente:

O uso de vários núcleos adiciona um desempenho muito maior ao seu jogo. As funções internas são implementadas em C e Assembly:

Código em C costuma ser de 10 a 20 vezes mais rápido que Python. Já

Assembly tem uma performance de mais de 100 vezes maior que Python.

Portátil:

Aplicativos programados em Pygame podem rodar tanto em plataformas Windows

(ver figura 2.9) quanto em Linux, Solaris, FreeBSD, Mac OS, Android, entre outros. O código ainda dá suporte a Dreamcast e também pode ser usado em dispositivos móveis.

Simples:

O Pygame é usado no projeto OLPC (One Laptop Per Child) para ensinar programação a crianças. Ao mesmo tempo, também é a preferência de programadores experientes.

19

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 2.9 Janela gráfica do PyGame 2.9.2. Allegro Allegro é uma biblioteca

Figura 2.9 Janela gráfica do PyGame

2.9.2. Allegro

Allegro é uma biblioteca de funções para jogos 2D feita em C. Apesar de ter algumas funções para jogos 3D ela não é indicada para isso, sendo no lugar dela uma API3d como OpenGL ou DirectX. De acordo com a Companhia Oxford de Música, Allegro é o italiano para "rápido, vivo e brilhante". Ele também é um acrônimo recursivo que representa "Allegro Low Level Game Routines" (Rotinas de jogo de baixo nível Allegro).

Segue abaixo algumas características da engine para programadores da linguagem C:

Biblioteca para construção de jogos e aplicações multimídia em geral; Free Source e multi-plataforma (DOS, Windows, Linux, Mac (OS X), BeOS e QNX); Voltada mais especialmente para jogos 2D; Conhecida pela facilidade de adicionar entrada de dados via teclado, mouse e joystick; Suporta arquivos de configuração e de dados comprimidos (.dat); Temporizadores.

2.10. Inicialização das bibliotecas

Esta é a principal função, e deve obrigatoriamente ser chamada para uma aplicação funcione, a chamada desta função deve ser a primeira a ser feita, antes de qualquer outra função.

Allegro: #include <allegro.h>

int allegro_init();

PyGame: import sys, os, pygame

from pygame.locals import*

2.11. Paleta de cores

A especificação de uma paleta (ver figura 2.10) de cores, dar-se através dos parametros R(Red), G(Green), B(Blue) nas seguintes funções:

Allegro: int makecol( int iRed, int iGreen, int iBlue );

20

ANAIS ELETRÔNICOS V ENUCOMP

Passando-se os valores dos tons (que variam de 0 a 255), de vermelho, verde e azul, esta função retorna o código da cor. Exemplo de uso: makecol (255, 0, 0 );

PyGame: Realizada de forma similar

makecol (255, 0, 0 ); PyGame: Realizada de forma similar Figura 2.10 Paleta de cores 2.12.

Figura 2.10 Paleta de cores

2.12. Temporizadores

Interrompe a execução do programa durante um intervalo de tempo igual ao passado como parâmetro, em milisegundos:

Allegro: void rest(unsigned int uiTime);

PyGame: Clock = pygame.time.Clock()

Clock.tick(int Time)

2.13. Pixel a pixel

Colore um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiro parâmetro, na cor passada no quarto parâmetro:

Allegro: void putpixel(BITMAP *bmp, int iX, int iY, int iColor);

Recupera o valor da cor de um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiro parâmetro, na cor passada no quarto parâmetro:

Allegro: void getpixel(BITMAP *bmp, int iX, int iY, int iColor);

Preenche um bitmap com a cor especificada, em um espaço fechado, a partir do ponto X e Y:

Allegro: void floodfill(BITMAP *bmp, int iX, int iY, int iColor);

2.14. Formas primitivas

A primeira função desenha uma linha vertical, a segunda função desenha uma linha horizontal e a ultima função desenha uma linha entre 2 pontos quaisquer, respectivamente:

21

ANAIS ELETRÔNICOS V ENUCOMP

Allegro: void vline(BITMAP *bmp, int iX, int iY1, int iY2, int iColor);

void hline(BITMAP *bmp, int iX1, int iY, int iX2, int iColor);

void line(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

A primeira função desenha um retângulo sem preenchimento, com o contorno colorido,

enquanto a segunda função desenha um retângulo com preenchimento:

Allegro: void rect(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

void rectfill(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

A primeira função desenha um círculo sem preenchimento, com o contorno colorido,

enquanto a segunda função desenha um círculo com preenchimento:

Allegro: void circle(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);

void circlefill(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);

A primeira função desenha uma elipse sem preenchimento, com o contorno colorido,

enquanto a segunda função desenha uma elipse com preenchimento:

Allegro: void ellipse(BITMAP*bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor); void ellipsefill(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor);

2.15. Texto

Função para exibir um texto na tela, o sexto parâmetro deve ser -1 para um fundo

transparente:

Allegro: void textprintf_ex(BITMAP*bmp,FONT font,int X,int Y, int Color,int CorFundo,char Text);

PyGame: Font = pygame.font.Font("font.ttf",128)

2.16. Modo gráfico

Especificado antes de começar a desenhar:

Allegro: int set_gfx_mode (int card, int w, int h, int v_w, int v_h);

Onde:

O

valor

de

card

é

usualmente

GFX_AUTODETECT,

 

GFX_AUTODETECT_FULLSCREEN ou GFX_AUTODETECT_WINDOWED;

 

w, h largura e altura, respectivamente;

 

v_w, v_h largura e altura virtual (normalmente, 0), respectivamente.

2.17. Desenhando objetos - BITMAPs

Bitmaps são matrizes de pixels, em que cada valor indica uma cor. Tela é um BITMAP especial chamado screen, BITMAPs adicionais podem ser criados com:

Allegro: BITMAP *bmp = create_bitmap(int width, int height);

2.18. Periféricos de entrada

2.18.1 Teclado

22

ANAIS ELETRÔNICOS V ENUCOMP

Para inicializar as rotinas do teclado:

Allegro: install_keyboard();

Váriável global int key[ ], permite ver quais teclas estão pressionadas, através de constantes definidas para identificar cada tecla (ver tabela 2.1).

PyGame: Realizada de forma similar.

Tabela 2.1. Constantes representativas de cada tecla

Tabela 2.1. Constantes representativas de cada tecla 2.18.2 Mouse Para inicializar as rotinas do mouse: Allegro:

2.18.2 Mouse

Para inicializar as rotinas do mouse:

Allegro: install_mouse();

PyGame: Realizada de forma similar

2.19. Som digital (WAV) e música (MID)

Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma:

Allegro: som1 = load_wav(“arquivo.wav”);

musica = load_midi(“arquivo.mid”);

2.20. Algumas técnicas de programação de jogos

2.20.1. Animação

Dar a impressão de que coisas se movem, pode significar mover um pixel ao longo da tela mas, geralmente, significa uma mudança repetitiva da apresentação de algo para que dê a ideia de que se move.

23

ANAIS ELETRÔNICOS V ENUCOMP

A técnica mais simples de animação é quando limpamos a tela, desenhamos os

objetos, limpamos a tela novamente, desenhamos os objetos nas novas posições. O Desafio

é como causar a impressão de movimento dos personagens? A solução é utilizarmos sprites, ou seja, um conjunto de dados que definem determinado objeto ou personagem num jogo (ver figura 2.11). Para uma pessoa, por exemplo, podemos ter um sprite que contenha as posições vertical e horizontal dela no mundo, a direção para onde ela está virada e os bitmaps que podem representá-la durante o jogo.

virada e os bitmaps que podem representá-la durante o jogo. Figura 2.11 Exemplo de sprite 2.20.2.

Figura 2.11 Exemplo de sprite

2.20.2. Double Buffering

O Problema:

Quando vamos fazer animações usando o Allegro, surgem alguns problemas relacionados aos vários métodos que podem ser utilizados. O método mais simples que podemos imaginar é aquele em que limpamos a tela, desenhamos os objetos, limpamos a tela novamente, desenhamos

os objetos nas novas posições, e assim por diante. Este método, porém, tem um grave problema:

a tela pisca a cada limpeza.

A

Solução:

Dispomos de um bitmap auxiliar (chamado de buffer) que, normalmente, possui o tamanho da tela (ou o tamanho da região onde ocorre a animação). Desenhamos, neste buffer, os objetos que devem ser apresentados na tela. Após isso, desenhamos o conteúdo do buffer na tela, fazendo com que os objetos apareçam. Limpamos, então, o buffer, desenhamos os objetos novamente em suas novas posições, passamos o conteúdo do buffer para a tela, e assim por diante.

2.20.3. Scrolling

24

ANAIS ELETRÔNICOS V ENUCOMP

O Problema:

Como dar movimento ao personagem e aos objetos envolvidos?

A

Solução:

Movimento de cenário. O scrolling consiste em movimentar o fundo do cenário e,

normalmente, deixar o personagem controlado parado, o que causa uma sensação de movimento.

O scrolling pode ser horizontal, vertical ou em ambas as direções.

2.20.4. Parallax Scrolling

O Problema:

Como causar a sensação de profundidade presente em jogos 3D?

A

Solução:

Utilizar vários fundos que se movimentam em velocidades diferentes.

2.20.5. Detecção de Colisão

O Problema:

Como verificar se dois sprites estão sobrepostos, ou seja, se houve uma colisão?

A Solução:

Existe o método que chamamos de força bruta (checar cada ponto de um sprite com cada ponto de outro sprite) qué é ineficiente, a maior parte dos outros métodos são aproximativos. Veremos o principal deles, que consiste em dividir os sprites em retângulos, de forma que possamos verificar se cada retângulo está ou não sobreposto a outro. Fazer com que o sprite tenha sua movimentação limitada às bordas do nosso jogo não deixa de ser uma forma de detecção de colisão, bem simples, é verdade. Porém, em jogos 2D, geralmente se deseja realizar detecção de colisão entre dois ou mais sprites no jogo.

2.20.5.1 Colisão entre Esferas

O Problema:

Contudo, apesar do sistema de detecção de colisões estar utilizando o algoritmo do bouncing box, depois de alguns testes você perceberá um problema. Se os sprites colidirem

25

ANAIS ELETRÔNICOS V ENUCOMP

diagonalmente, eles irão colidir antes de atingirem um ao outro de verdade. Isso está ocorrendo justamente por utilizarmos caixas para representar a forma geométrica das esferas, e agora?

A Solução:

Quando queremos testar colisões entre esferas, teremos que verificar se a distância entre os centros delas são menores que a soma dos seus raios. Em caso positivo, então uma colisão ocorreu. Essa é a forma mais eficiente de detectar colisões entre duas esferas. Para detectar a colisão entre duas formas circulares, usamos o teorema de Pitágoras: (r2 = x2 + y2) (ver figura

2.12). Figura 2.12. Teorema de Pitágoras Referências
2.12).
Figura 2.12. Teorema de Pitágoras
Referências

Andrade, Kleber de Oliveira, Introdução ao Desenvolvimento de Jogos , http://pt.scribd.com/doc/79874524/desenvolvimento-de-jogos, Outubro.

McGugan, Will, Beginning Game Development with Python and Pygame , 2007.

Game Level Design ,

http://www.gamasutra.com/view/feature/175950/the_fundamental_pillars_of_a

, Outubro.

PyGameLib , http://www.pygame.org/, Outubro.

php

26

ANAIS ELETRÔNICOS V ENUCOMP

Fundamentos em Segurança e Hardening em Servidores Linux baseado na Norma ISO 27002

Felipe Santos Barbosa

Abstract

Lack of maturity concept of information security, both as managers from the IT technical staff about potential problems that may occur due to the lack of correct management of sensitive information of the company and the impacts that may cause the image of the corporation. Many administrators with little security experience preparing their servers with a basic installation and after their applications are already in operation they leave the way it is, the adoption of hardening techniques in the UNIX solutions come with standard ISO27002 controls. Having as its main objective to show how to seek compliance of best practices suggested in the standard.

Resumo

Falta amadurecimento do conceito segurança da informação, tanto de gestores como por parte da equipe técnica de TI sobre possíveis problemas que podem ocorrer pela falta do gerenciamento correto das informações sigilosas da empresa e os impactos que possam causar a imagem da corporação. Muitos Administradores sem muita experiência em segurança preparam seus servidores com uma instalação básica e, depois que suas aplicações já estão em funcionamento eles deixam da maneira que está, a adoção de técnicas de Hardening em ambientes UNIX provem soluções de controles com a norma ISO27002. Tendo como seu principal objetivo mostrar como buscar a conformidade das boas práticas sugeridas na norma.

3.1.Introdução

A segurança da informação possibilita que o negócio da empresa seja realizado e sua

missão alcançada, fazendo com que a informação seja um ativo de grande importância que necessita ser protegida, independente do formato em que ela se encontra como, por exemplo:

impressa ou escrita em papel, armazenada eletronicamente, apresentada em filmes ou através de conversas.

Investir em segurança da informação não é apenas uma questão de investimento tecnológico, mas também de gestão de pessoas, o que faz com que esse aspecto seja um dos mais difíceis de ser abordado e que merece bastante atenção dos especialistas na tentativa de mitigar os riscos sofridos pelas empresas, pois são as pessoas que executam e suportam os processos de uma organização.

A necessidade do uso das informações e os riscos estão presentes em todos os negócios

sendo preciso saber conviver com eles e administrá-los com competência, pois uma indisponibilidade pode causar danos irreparáveis e as pessoas ainda não possuem consciência ou

27

ANAIS ELETRÔNICOS V ENUCOMP

não é disponibilizada a elas a importância de terem responsabilidade de ajudar a manter a confidencialidade e a integridade dessa informação.

Uma das estratégias utilizada pela equipe de segurança da informação para ajudar a atingir os seus objetivos é desenvolver um programa de conscientização com a finalidade de fazer com que todas as pessoas da organização entendam a necessidade de segurança e passe a se preocupar com esses aspectos em todas as situações do cotidiano, além de transformar o elo mais fraco da cadeia em um grande aliado na estratégia da segurança corporativa.

3.2.Ambiente Organizacional

O aumento da competitividade fez com que as empresas buscassem novos modelos de negócio, com maior rapidez, eficiência e qualidade nos serviços prestados e nos produtos. A informação passou a ser o ativo mais valioso da organização, exigindo um controle mais rígido e complexo.

Diante desse novo cenário, a segurança da informação, que antes era de conhecimento apenas de grandes empresas e profissionais especializados, passou a ser conhecida por um número maior de pessoas, porém a maioria das organizações toma uma postura reativa em relação à segurança, tomando decisões após a ocorrência de um incidente ou até mesmo chegando a ignorá-lo dependendo do seu impacto nos negócios.

Devido às constantes mudanças nas organizações e ambientes de TI é comum o surgimento de diferentes formas de ameaças e vulnerabilidades, tornando a sua gestão uma tarefa complexa e bastante abrangente.

Para auxiliar no processo de implementação e manutenção do sistema de gestão de segurança da informação as empresas utilizam as principais normas série 27000 que são a NBR ISO/IEC 27001:2006 - Tecnologia da Informação - Técnicas de Segurança - Sistema de Gestão de Segurança da Informação (SGSI) - requisitos, norma que trata da definição de requisitos para SGSI, e a NBR ISO/IEC 27002:2005 - Tecnologia da Informação - Técnicas de Segurança - Código de Prática para Gestão de Segurança da Informação, que é o código de melhores práticas para gerência da segurança da informação.

De acordo com Fontes (2000, p.53), há oito dimensões da segurança da informação (SI) que podem auxiliar em todos os aspectos e facilitar esse processo. São elas:

a) Organizacional: deve abranger as políticas, os termos de compromisso e as auditorias de

acordo com a filosofia e a cultura da empresa;

b) Controle de acesso a informação: envolve a identificação e autenticidade dos usuários nos

sistemas computacionais e como ele deverá ser feito. Também identifica o gestor e o responsável

pelo controle de acesso á informação;

c) Desenvolvimento e a manutenção de sistemas: define os procedimentos, padrões, metodologias e regras de desenvolvimento, aquisição e manutenção de sistemas;

d) Ambiente físico: envolve o controle de acesso e monitoramento do ambiente, além das

condições técnico/ambientais para os equipamentos de informática funcionem corretamente;

e) Ambiente descentralizado: deve levar em consideração a importância que os micros e redes

locais estão ganhando nas empresas;

28

ANAIS ELETRÔNICOS V ENUCOMP

f) Continuidade do negócio: planejamento de ações que permitem a continuidade do negócio,

recuperação ou contingência caso algum desastre ocorra. Deve levar em consideração todos os riscos e ameaças que envolvem o negócio da empresa;

g) Telemática: garante a comunicação da empresa com o mundo exterior. Deve ser monitorada e

garantir a proteção das informações internas, assim como a confidencialidade nas comunicações entre cliente/empresa;

h) Recursos Humanos: Fator de grande importância na implementação da SI. Abrange a campanha de conscientização dos usuários e as medidas que deverão ser tomadas para que isso ocorra.

A NBR ISO/IEC 27002-2005 cita a conscientização dos usuários como um processo,

porém não há um detalhamento ou procedimento de como isso deve ocorrer, permitindo que os gestores desenvolvam planos estratégicos de como isso deve ser feito, levando-se em consideração a realidade e a cultura da organização e lembrando que é uma estratégia à ser

realizada de maneira abrangente, contínua e testada.

Na descrição de acordo com a ABNT NBR ISO/IEC 27001-2006: A organização deve assegurar que todo pessoal que tem responsabilidades atribuídas definidas no SGSI seja competente para desempenhar as tarefas requeridas:

a) determinando as competências necessárias para o pessoal que executa trabalhos que afetam o SGSI;

b) fornecendo treinamento ou executando outras ações (por exemplo, contratar pessoal competente) para satisfazer essas necessidades;

c) avaliando a eficácia das ações executadas; e mantendo registros de educação, treinamento, habilidades, experiências e qualificações.

A organização deve também assegurar que todo o pessoal pertinente esteja consciente da

relevância e importância das suas atividades da informação e como eles contribuem para o alcance dos objetivos do SGSI (FONTES, 2006).

Diante dos dados de pesquisa da Módulo Security na sua 10ª Pesquisa Nacional de Segurança da Informação (2010), a estrutura da área de segurança da informação na maioria das empresas envolve profissionais que desempenham outras funções na área de TI, como Gerentes de TI/Redes. Somente em um pequeno número de empresas (13%) existe um cargo de CSO/Diretor de segurança (Figura 3.1).

29

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 3.1 Percentuais de Profissionais que desempenham funções na área de TI

Figura 3.1 Percentuais de Profissionais que desempenham funções na área de TI nas empresas

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação (2006,

p.8)

Segundo a Módulo Security (2006), apenas 25% das empresas preferem não terceirizar a área de Segurança da Informação, enquanto que aquelas que terceirizam dão a preferência aos serviços de administração e suporte a firewall e IDS (16%), help desks (13%) e análise de riscos

(9%).

3.3.Segurança da Informação

3.3.1. Uma Visão Geral

O conteúdo publicado nas redes sociais nem sempre são relevantes aos negócios da organização e muitas vezes podem reduzir a produtividade dos profissionais. A disponibilização de informações e a sensação de conforto, gerados pela liberação da utilização dessas ferramentas, pode favorecer o trabalho de pessoas maliciosas que utilizam de estratégias como a de Engenharia Social para obter informações sigilosas.

De acordo com Frank Wazmer, ChiefInformation Officer (CIO) da rede hospitalar norte- americana Health First, explica que a ameaça à imagem das companhias é latente quando seus funcionários fazem parte de redes sociais. “Esses sites tornam-se plataforma para que eles possam fazer reclamações, comentários impertinentes ou até divulgar dados confidencias de forma maciça”, Tendo como única solução a conscientização dos usuários e a definição das regras que devem ser aceitas por todos que fazem parte da empresa. “É o único caminho eficiente que conheço, já que nenhuma ferramenta até agora consegue deter os criminosos virtuais”, conclui (COMPUTERWORLD, 2010, p.55).

Dawel (2005, p.26) acredita que há no mínimo três explicações para que isso ocorra:

desconhecimento do perigo que pode estar dentro da empresa, negligência em tratar as ameaças

30

ANAIS ELETRÔNICOS V ENUCOMP

internas e a imperícia em lidar com assuntos relativos à segurança e tratá-las de forma amadora, achando que está sendo profissional.

Em uma pesquisa realizada pela empresa Módulo Security com Guelman (2006) foi publicado que uma das principais constatações de um estudo realizado pelo "CSI/FBI Computer Crime and Security Survey" que a segurança da informação é muito mais uma questão gerencial do que tecnológica, pois de nada adianta investir em tecnologia e proteção física se não temos a colaboração e o comprometimento das pessoas.

A 10ª Pesquisa Nacional de Segurança da Informação, realizada em 2006, pelo Módulo Security Solutions, empresa especializada em segurança da informação, com cerca de 600 profissionais ligados a área de tecnologia e segurança da informação de diversos segmentos de negócio, revelou que apesar de haver uma maior preocupação com investimentos em SI para ajudarem as empresas a estarem mais bem preparadas pra enfrentar algumas falhas de segurança, ainda é grande o número de empresas (33%) que não sabem quantificar as perdas ou sequer identificar os responsáveis pelo problema (21%). Porém a maioria das corporações (55%) considera como principal obstáculo para a implementação da segurança da informação a falta de conscientização dos executivos e usuários (Figura 3.2).

conscientização dos executivos e usuários (Figura 3.2). Figura 3.2 Principais obstáculos para a implementação da

Figura 3.2 Principais obstáculos para a implementação da Segurança da Informação

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação (2006, p.7)

Para ajudar a melhorar esse cenário é fundamental que a alta gerência tenha claro que a conscientização de seus funcionários é um fator crítico de sucesso no plano de segurança da informação. Para isso é necessário que seja realizada uma avaliação do nível de conhecimento que a direção da empresa possui sobre o assunto e que seja feito um nivelamento de informações utilizando as recomendações das normas, as melhores práticas e cases de sucesso, tendo como apoio, caso se faça necessário, uma consultoria especializada no assunto.

31

ANAIS ELETRÔNICOS V ENUCOMP

O aumento do nível de conscientização dos altos executivos e o crescente número de

ataques, invasões e vazamento de informações enfrentadas pela empresa, têm incentivado a capacidade dos funcionários que trabalham na área de Segurança da Informação, conforme

demonstrado na (Figura 3.3).

da Informação, conforme demonstrado na (Figura 3.3). Figura 3.3. Nível de capacitação dos profissionais que

Figura 3.3. Nível de capacitação dos profissionais que lidam com a Segurança da Informação na corporação

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação

(2006, p.14)

3.3.2. Generalidades e Conceitos

A preocupação com a segurança da informação e com os conhecimentos que ela

proporciona vem desde o inicio da existência do ser humano, antes mesmo da invenção e uso dos computadores. As civilizações antigas desenvolveram métodos de segurança da informação, como a cifra, onde cada letra do alfabeto era modificada e somente a pessoa que possuía a chave para decifrar o manuscrito conseguia ler a informação corrente. Esse método de cifra foi utilizado por muito tempo, inclusive na Segunda Guerra mundial para proteger informações estratégicas de guerra dos exércitos.

Com o avanço tecnológico, o aumento do uso e das facilidades que o computador proporciona, fez-se necessário o surgimento da segurança da informação e, ao longo do tempo, o desenvolvimento de normas e padrões que servem como guias de melhores práticas e auxiliam na sua estruturação.

Para que a segurança da informação tenha sucesso na sua implementação é necessário que ela envolva todas as áreas da empresa, ativos e pessoas e a atividade de conscientização do uso das políticas de segurança da informação e seja uma cultura da organização (FONTES,

2000).

3.3.3. Objetivos

A segurança da informação tem como objetivo a proteção das informações através de um

conjunto de orientações, normas, procedimentos, políticas e demais ações para garantir a sua

32

ANAIS ELETRÔNICOS V ENUCOMP

preservação contra possíveis danos, perdas, furtos e mau uso, afetando a continuidade do negócio e alcance de seus objetivos.

De acordo com a norma ABNT NBR ISO/IEC 27002:2005 a informação é um ativo e como outro qualquer ativo importante, é essencial para os negócios de uma organização e, consequentemente, necessita ser adequadamente protegida. Isto é especialmente importante no ambiente dos negócios, cada vez mais interconectado. Como um resultado desde o incrível aumento da interconectividade, a informação está agora exposta a um crescente número e a uma grande variedade de ameaças e vulnerabilidades (ABNT, 2005).

Um ativo é qualquer coisa que tenha valor para empresa, como serviços, equipamentos, pessoas, conhecimentos, sua imagem e reputação.

Segundo a NBR ISO/IEC 27002-2005 (ABNT, 2005) para que a informação possa estar protegida é necessário que ela possua os três princípios básicos da segurança, que são:

Confidencialidade, Integridade e Disponibilidade.

Confidencialidade: somente indivíduos autorizados possuem acesso a esse ativo, impedindo que a informação acabe sendo acessada por pessoas erradas ou divulgada sem autorização prévia. Exemplo: Acesso á folha de pagamento do RH por um funcionário não autorizado.

Integridade: o ativo ou a informação devem estar em seu formato original preservando a sua exatidão e completeza, ou seja, a informação não pode ter sofrido alteração.

Disponibilidade: o ativo deve estar disponível e acessível para o individuo autorizado sempre que necessário.

Além desses princípios básicos, a proteção também pode ser obtida através da auditabilidade (registro do acesso e uso da informação para posteriores consultas e averiguações), da legibilidade (de acordo com as leis aplicáveis, regulamentos, licenças e contratos para o negócio), do não repúdio (garantia de que o usuário da informação não possa negar as suas responsabilidades pelo seu uso) (TI EXAMES ISO/27002 FOUNDATION, 2011).

Para que sejam elaboradas as normas e diretrizes, como políticas de segurança da informação, de acordo com o tipo de negócio da empresa e o seu porte, tendo que haver um total comprometimento de toda a organização com nesse processo, desde a alta direção até os estagiários, prestadores de serviço e/ou partes envolvidas.

3.3.4. Políticas de Segurança da Informação

A política de segurança da informação (PSI), de acordo com Fontes é um documento que deve ser elaborado pela equipe técnica, geralmente a equipe de segurança da informação, juntamente com a alta direção visando estabelecer regras, normas e diretrizes de acordo com cada empresa. Ela deve garantir que todas as áreas e recursos da empresa sejam abrangidos e ser coerente com a sua visão, missão e objetivos, além de ser elaborado em uma linguagem de fácil entendimento por todos, evitando utilização de termos técnicos e aspectos de implementação (FONTES, 2000).

Todas as pessoas que fazem parte da empresa devem conhecer e seguir as políticas de segurança, independentemente do seu nível hierárquico ou do seu grau de participação, inclusive

33

ANAIS ELETRÔNICOS V ENUCOMP

os prestadores de serviço e stakeholders (FONTES, 2000).Segundo Fontes (2000, p.38) a PSI deve conter os seguintes tópicos:

a) a informação como um bem da empresa;

b) controle do acesso a informação;

c) definição do gestor da informação;

d) responsabilidades do usuário, da gerência e do gestor da informação;

e) preparação para situações de contingência, garantindo a continuidade da execução do negócio;

f) definição do uso profissional da informação da empresa;

g) definição da possibilidade, ou não, da empresa acessar arquivos pessoais do usuário, quando

de investigações criminais;

h) definição da identificação do usuário como pessoal e única, bem como a responsabilidade do

sigilo da senha;

i) conscientização dos usuários;

j) medidas disciplinares que serão utilizadas caso a política não seja cumprida.

A implantação da PSI tende a ser longa e deve ser realizada de maneira formal e

adaptável para que possa se adequar à realidade da empresa. Sua manutenção deve ser constante e seus tópicos revisados e atualizados de acordo com as suas necessidades e importância (FONTES, 2000).

3.3.5. Vulnerabilidades

A vulnerabilidade pode ser considerada uma falha no sistema computacional que cria

deficiências na segurança e que pode ser ocasionadas por configurações incorretas do computador ou de segurança (FONTES, 2000).

Segundo Sêmola (2002) e Moreira (2001) respectivamente, a fragilidade presente ou associada a ativos que manipulam e/ou processam informações que, ao ser explorada por ameaças, permitem a ocorrência de um incidente de segurança, afetando negativamente um ou mais princípios da segurança da informação: Confidencialidade, Integridade e Disponibilidade.

A vulnerabilidade é o ponto onde qualquer sistema é suscetível a um ataque, ou seja, é

uma condição encontrada em determinados recursos, processos, configurações, etc. Condição causada muitas vezes pela ausência ou ineficiência das medidas de proteção utilizadas com o intuito de salvaguardar os bens da empresa (SÊMOLA, 2002).

As vulnerabilidades podem ser encontradas em praticamente todos os ambientes, podendo ser de vários tipos, como: físicas, naturais, hardware, software, mídias, comunicação e humana. A identificação dessas vulnerabilidades e a implantação de medidas de segurança diminuem o grau de ameaça e aumenta a possibilidade da continuidade do negócio (MOREIRA,

2001).

Em relação a segurança da informação, a vulnerabilidade humana é um dos pontos mais frágeis e ela pode ser causada devido a negligência ou não conhecimento das políticas de segurança, falta de treinamento, sabotagens, compartilhamento de informações confidenciais

34

ANAIS ELETRÔNICOS V ENUCOMP

como senhas e envio de e-mails a pessoa não autorizada, destruição ou roubo de propriedade ou dados, entre outros. (SÊMOLA, 2002).

3.6. Ameaças

Para Araújo (2005), as ameaças são muitas das vezes consequências das vulnerabilidades existentes, provocando assim perdas de confidencialidade, integridade e disponibilidade.

A perda da confidencialidade ocorre quando há a quebra do sigilo de alguma forma, como o vazamento de informações e a descoberta da senha de um usuário. Quando a informação é acessada por pessoas não autorizadas e há alterações dessas informações ocorre a perda da integridade. Já a perda de disponibilidade é quando, por exemplo, a informação não está acessível a quem precisa dela, ou por motivos acidentais, fatores internos ou externos, má intenção ou ainda falha nos equipamentos (ARAUJO, 2005).As ameaças podem ser naturais, quando são causadas devido a fenômenos da natureza e não naturais quando são causadas pelo ser humano.

O erro humano é a causa mais comum para a perda de dados, que pode ocorrer de forma acidentalmente por apagar ou sobrescrever um arquivo existente na rede. Usuários frequentemente utilizam seus computadores com configurações pré-configuradas sem entender o que elas significam o que pode causar sérios danos. Muitos problemas originados nos computadores das empresas são causados por atividades executadas por seus próprios funcionários.

Kevin Mitnick, um dos maiores cyber criminosos dos EUA, que atualmente trabalha em prol da segurança da informação considera as pessoas como o elo mais fraco da segurança, devido à falsa sensação de segurança ocasionada pelo desenvolvimento e utilização de melhores tecnologias de segurança, tornando mais difícil a exploração de vulnerabilidades técnicas. Para Mitnick (2006), a quebra do "firewall humano" quase sempre é fácil, não exige nenhum investimento além do custo de uma ligação telefônica e envolve um risco mínimo.

As empresas estão se preocupando cada vez mais com a proteção da informação, pois estão convencidas de que ela é um ativo de grande importância e valor. Um dos pontos relevantes para que a proteção dessa informação ocorra é a conscientização dos seus funcionários quanto à utilização desse ativo.

De acordo com Fontes (2006) conscientização é mais do que um simples conhecimento:

estar conscientizado em proteção da informação é internalizar os conceitos e agir com naturalidade no cumprimento dos regulamentos. Significa que a segurança da informação deve fazer parte do dia-a-dia e não ser considerada um peso em nossas responsabilidades profissionais para a organização. Significa também que os executivos da organização devem avaliar e testar comprometidos com o nível estabelecido para a proteção.

Fontes (2006, p.32) destaca que vulnerabilidade humana pode ocorrer por diversos tipos de problemas, como descritos a seguir.

Pouco ou nenhum entendimento sobre segurança: segurança não é um instinto e deve ser ensinada às pessoas.

35

ANAIS ELETRÔNICOS V ENUCOMP

As ameaças devem ser claramente explicadas: muitas pessoas não acreditam que um problema

realmente exista por nunca terem sofrido ou conhecerem alguém que já tenha sido de algum tipo

de fraude eletrônica.

Questões culturais: o comportamento das pessoas não muda facilmente. O hábito de usar regras de segurança não deve ser utilizado apenas dentro da organização. As pessoas também devem ter hábitos fora do ambiente empresarial, fazendo com que a segurança seja uma rotina em seu dia- a-dia.

Resistência às medidas de segurança: as pessoas costumam ter a falsa sensação de perda de liberdade ao se submeterem às políticas de segurança, ou ainda, que são pessoas não confiáveis perante a organização.

Necessidades: geradas principalmente pela necessidade financeira.

Oportunidades: os funcionários têm o conhecimento de como a organização funciona diariamente, consequentemente possuem o conhecimento das fragilidades dos controles internos.

Racionalização: a conduta da pessoa a faz acreditar e a tornar a fraude como algo justo.

O fator humano no desenvolvimento e implantação das políticas de segurança da

informação é o ponto mais problemático para a organização, pois é o único aspecto que não pode ser diretamente controlado, como ocorre com os diversos tipos de sistemas e computadores que são programados a executar com fortes políticas de segurança.

A organização deve desenvolver um plano de conscientização dos usuários, como o objetivo de

introduzir a preocupação com a SI na cultura organizacional. Deve envolver todos os funcionários da organização e, caso se faça necessário, fornecedores e terceiros.

O processo de seleção dos profissionais também deve ser realizado de maneira criteriosa, levando-se em consideração a importância do ativo pelo qual o colaborador será responsável, além dos seus conhecimentos e da titularidade exigida pela função.

Os riscos considerados ativos podem ser mais bem gerenciados de acordo com as vulnerabilidades humanas se todas as pessoas reconhecerem o seu papel, suas responsabilidades e habilidades, fazendo a diferença na prática e contribuindo para a SI.

A empresa deve estabelecer regras que sejam claras e objetivas, medir a adesão às

políticas de segurança da informação periodicamente, ter um criterioso processo de seleção, prover treinamento, atualizações e reciclagens, fornecer informações de como se defender de ataques tecnológicos e engenharia social além de possuir um conjunto de tecnologias aplicadas a SI.

3.4. Motivos de Ameaça à Segurança

No começo dos anos 70 poucos eram as ameaças e danos que poderiam ser causados a informação pela utilização dos computadores, onde a maioria dos perigos era causada pela utilização de disquetes contaminados e, posteriormente, de CDs e jogos que carregavam vírus e cavalos de Tróia.

O aumento do uso de computadores pelas organizações para processar e armazenar informações

importantes e confidenciais sobre o seu negócio, o compartilhamento das informações através da rede, o desenvolvimento de novos negócios na internet, a sua facilidade de uso, baixo custo,

36

ANAIS ELETRÔNICOS V ENUCOMP

anonimato e, consequentemente, impunidade contribuíram exponencialmente para o crescimento dos ataques às informações pessoais e, principalmente empresárias.

Conforme publicado na 10ª Pesquisa Nacional de Segurança da informação há uma grande dificuldade das organizações em conseguir identificar os responsáveis pelas ameaças, fazendo com que elas se dediquem apenas a corrigir as falhas (48%), quando descoberta, ou tomar providências internas (25%), acionando por conta própria o causador do problema (MÓDULO SECURITY SOLUTIONS, 2006).

Os danos causados por vários tipos de ameaça podem gerar perdas significantes para as organizações. O conhecimento das vulnerabilidades dos sistemas e suas ameaças ajudam a mitigar os riscos com a implementação de medidas corretivas e custos aceitáveis para a organização.

Ainda de acordo com a mesma pesquisa, quando as organizações conseguem identificar os responsáveis é verificado que a maioria das falhas de segurança é causado por funcionários (24%) e hackers (20%). As ameaças que mais causam danos financeiros são os vírus (15%), spam (10%) e as fraudes (8%) (Figura 3.4).

os vírus (15%), spam (10%) e as fraudes (8%) (Figura 3.4). Figura 3. 4 Problemas que

Figura 3. 4 Problemas que geraram perdas financeiras

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação

(2006, p.6).

Para Mitnick (2003) não existe um computador 100% seguro, pois um criminoso fará de tudo para conseguir a informação desejada.Há um ditado popular que diz que um computador seguro é aquele que está desligado. Isso é inteligente, mas é falso: o criminoso convence alguém

37

ANAIS ELETRÔNICOS V ENUCOMP

a entrar no escritório e ligar aquele computador. Tudo é uma questão de tempo, paciência, personalidade e persistência. É nesse ponto que entra a arte da fraude (MITNICK, 2003).

O conhecimento das causas e riscos que as ameaças trazem se faz necessário, pois os usuários repetem seus comportamentos domésticos diários nos ambientes corporativos, comprometendo igualmente a segurança dos computadores utilizados.

3.4.1. Erros e Omissões

Também chamados de bug's do sistema, os erros e as omissões podem causar ameaças à integridade dos sistemas devido a problemas que podem ser gerados pela edição das informações diária, por diversos funcionários e/ou automaticamente pelo próprio sistema, como através de atualizações ou erros de programação, podendo contribuir direta ou indiretamente com as brechas de segurança. Alguns desses tipos de erros podem causar perdas irreparáveis ou criar vulnerabilidades e podem ocorrer durante todo o ciclo de vida do sistema. Uma pesquisa publicada pelo portal terra em julho de 2007 mostra que uma falha de segurança foi descoberta em um erro de programação bastante comum. O erro era considerado apenas “preguiça de programador", no entanto agora ele é considerado um defeito gravíssimo em segurança e está presente em milhares de programas e sistemas em todo o mundo.

Atualizações de segurança também são frequentemente liberados com frequência por diversos desenvolvedores de sistemas para correção de vulnerabilidades, descobertas em seus diversos sistemas para evitar que erros e/ou falhas de programação sejam explorados por pessoas mal intencionadas.

3.4.2. Fraude e Roubo

Podem ser ações causadas tanto por pessoas externas (conhecidas ou não) como, na grande maioria das vezes pelos próprios funcionários, utilizando-se de métodos tradicionais, como desvio de dinheiro e falsificação de documentos, ou através de novas formas. Os softwares e hardwares em geral também são alvos vulneráveis de roubo.

De acordo com uma recente comparação feita pelo Centro de Estudos, Respostas e Tratamento de Incidentes de Segurança - CERT.br (2011) notificações relacionadas a tentativa de fraude apresentam crescimento de 45,8%, em relação ao trimestre anterior e de 23,6% sobre o mesmo período de 2010. Houve aumento de 73,4% no número de notificações de páginas falsas de bancos e de sites de comércio eletrônico (Phishing), em relação ao quarto trimestre de 2010 e de 134,4% em relação ao mesmo período de 2010 (Tabela 3.1).

Tabela 3.1 Notificações de ataques classificados por tipo de ataque

Notificações de ataques classificados por tipo de ataque Fonte:

Fonte: http://www.cert.br/stats/incidentes/2011-jan-mar/total.html

38

ANAIS ELETRÔNICOS V ENUCOMP

Os itens apresentados na Tabela 3.1 têm os significados a seguir descritos.

 

Worm:

notificação

de

atividades

maliciosas

relacionadas

com

o

processo

automatizado de propagação de códigos maliciosos na rede.

 

DoS(DoS Denialof Service): notificação de ataques de negação de serviço, onde o atacante utiliza um computador ou um conjunto de computadores para tirar de operação um serviço, computador ou rede.

Invasão: um ataque bem sucedido que resulte no acesso não autorizado a um computador ou rede.

 

Web: um caso particular de ataques visando especificamente o comprometimento

de

servidores Web ou desfiguração de páginas na internet.

 

Scan: notificações de varreduras em redes de computadores, com o intuito de identificar quais computadores estão ativos e quais serviços estão sendo disponibilizados por eles. É amplamente utilizado por atacantes para identificar potenciais alvos, pois permite associar possíveis vulnerabilidades aos serviços habilitados em um computador.

Fraude: segundo Houaiss, é "qualquer ato ardiloso, enganoso, de má-fé, com intuito de lesar ou ludibriar outrem, ou de não cumprir determinado dever, logro”. Esta categoria engloba as notificações de tentativa de fraudes, ou seja, de incidentes em que ocorre uma tentativa de obter vantagens.

notificações de incidentes que não se enquadram nas categorias

Outros:

anteriores.

3.4.3. Sabotagem dos Funcionários

Os funcionários têm um amplo conhecimento de como é a estrutura organizacional da empresa, o funcionamento diário de sistemas e possíveis brechas facilitando a sabotagem. O número de incidentes gerados por esse tipo de ameaça não chega a ser maior do que o número de roubos, porém o custo desses incidentes pode ser significativamente maior. A insatisfação do funcionário, como a não aprovação constante de seu chefe, a falta de reconhecimento ou promoção de cargo ou salarial, pode levá-lo a esse tipo de ação, ajudando-o a atingir um nível maior de insatisfação no seu trabalho.

O site BR-Linux.org publicou em 2008, em uma de suas reportagens, que um problema

na rede da telefônica que deixou boa parte de São Paulo off-line pode ter sido causado por sabotagem interna. Segundo os próprios funcionários da companhia, uma semana antes do incidente, foram demitidos cerca de 700 funcionários da Telefônica, por conta de fechamento de contrato de terceirização com fornecedores. Um dos funcionários ainda citou que esse mesmo problema já havia ocorrido há um ano, porém o incidente não havia sido tão grave.

3.4.4. Hackers Maliciosos

Também chamados de crackers, referem-se a pessoas que se aproveitam de brechas e vulnerabilidades do sistema para invadi-lo. Podem ser tanto pessoas internas quando externas da empresa. Atualmente os danos causados pelos crackers são menores do que os causados pelos roubos e sabotagem de funcionários, porém recebem mais atenção do que as demais ameaças por

39

ANAIS ELETRÔNICOS V ENUCOMP

não haver o conhecimento do seu objeto e por tomar as pessoas vulneráveis por não conhecer a identidade dos hackers.

Em dezembro de 2009 um e-mail circulava pela internet oferecendo vacina para antigripe H1N1. Através desse e-mail os hackers maliciosos redirecionavam o usuário para um site falso que baixava automaticamente programas maliciosos para o computador da vítima. O computador contaminado era utilizado para furtar dados cadastrais, atacar outros computadores e transformar a máquina em um servidor de "spam" (REUTERS, 2009).

3.4.5. Espionagem Industrial

É a ação em que se obtêm informações confidenciais de empresas particulares ou

privadas com o propósito de vendê-las para outras empresas. A espionagem industrial pode ser

encomendada por empresas para obter informações precisas de empresas concorrentes ou pelo próprio governo para buscar vantagens econômicas ou nos seus negócios industriais. Os três maiores tipos de danos causados pelo roubo de informação são: o custo dessa informação, a informação do processo de manufatura e a especificação da informação no processo de desenvolvimento de novos produtos e serviços.

A ABIN (Agência Brasileira de Inteligência) publicou em 2008 no seu site uma

reportagem realizada por Xavier (2008) sobre espionagem industrial relacionado ao furto ocorrido na Petrobrás de informações sigilosas sobre pesquisas sísmicas que estavam armazenadas em dois laptops que estavam sendo transportados em um container pela empresa norte-americana Halliburton. Para Advir, diretor e dono da Ormax, uma empresa especializada em contra-espionagem localizada em São Paulo, “A espionagem industrial é praticada há muitos anos, mas tem crescido a passos largos graças à tecnologia mais barata e ao número da competição entre as empresas" (XAVIER, 2008, p.88).

3.4.6. Código Malicioso

Refere-se a vírus, worms, trojans, malwares em geral. Atacam tanto computadores pessoais quanto outros tipos de plataforma, como celulares. Atuais custos atribuídos à presença de códigos maliciosos podem resultar primeiramente pela parada do serviço para remoção do malware ou o tempo do funcionário envolvido no reparo do sistema, entretanto esses custos podem ser significantes.

Virus: é pequeno programa de computador que se replica propositalmente, algumas vezes em forma alterada. As versões replicadas do vírus original também são vírus.

Worm: programa de computador que se replica propositalmente. O resultado da replicação são cópias do original que se espalham por outros sistemas fazendo uso dos recursos da rede.

Trojans: programa que propositalmente conduz atividades secundárias, não observadas pelo usuário do computador e que podem causar dano à integridade do sistema infectado. (TI EXAMES ISO/27002 FOUNDATION, 2011).

Em uma entrevista realizada pela Módulo Security com Rob Slade (2006), especialista em vírus de computador, foi publicado que os vírus de macros surgiram em 1995 e acreditava-se que somente programas eram perigosos. Já em 1998 os criadores de vírus começam a disseminá-

40

ANAIS ELETRÔNICOS V ENUCOMP

los pela internet infectando um número maior de pessoas e se espalhando pela rede mundial quase que instantaneamente, porém o maior problema surgiu em 2003 quando esses desenvolvedores perceberam as possibilidades de fazer dinheiro com o uso desses malwares. O risco passou a aumentar de forma gradativa e a conscientização dos usuários não acompanhou esse processo.

Dessa forma, a conscientização passa novamente a ser um fator importantíssimo para as empresas na mitigação de riscos e vulnerabilidades em seus ativos, conforme Slade (2006) recomenda em um trecho de sua entrevista citando sobre as tendências para o futuro e o que as empresas poderiam fazer para melhor se protegerem.

Nós não podemos saber como as tecnologias perigosas podem ser, mas sabemos que serão como aplicações que colaboram para a "conveniência do usuário". Muito provavelmente, se relacionarão com ferramentas que existam. Em termos de proteção a conscientização continuará sendo a melhor defesa. Organize palestras para seus funcionários, ensine o que é perigoso e que todos os atalhos geralmente resultam em infecções. É apontado também que seminários para os usuários em geral são uma das mais efetivas proteções, em termos de custo- benefício: ensinando usuários que não trabalham para você, você ajuda na proteção. Os vírus que atingem usuários infectados enviam cópias e uma destas pode atingir você. (SLADE, 2006, p.2).

3.4.7. Spam

É um nome coletivo para mensagens indesejadas. O termo é normalmente usado para e- mail, mas mensagens de publicidade e em web sites também são consideradas como spam.O número de spams reportados para o CERT.br, órgão responsável por receber, analisar e responder a incidentes de segurança envolvendo redes conectadas à internet, chegou a um total de 31.367,42 somente entre janeiro e junho de 2011 e esse número vem crescendo exponencialmente a cada ano (Figura 3.5).

vem crescendo exponencialmente a cada ano (Figura 3.5). Figure 3.5 Spams reportados ao CERT.br por ano

Figure 3.5 Spams reportados ao CERT.br por ano Fonte: http://www.cert.br/stats/spam/

41

ANAIS ELETRÔNICOS V ENUCOMP

3.4.8. Exploração de Vulnerabilidades

Vulnerabilidades ocorrem, principalmente, em softwares comerciais ou, até mesmo, nas ferramentas de segurança como antivírus e firewalls. A Figura 3.6 exibe os incidentes reportados em 2011 referentes aos tipos de ataque pelos sistemas e usuários de computadores.

tipos de ataque pelos sistemas e usuários de computadores. Figura 3.6 Tipos de ataques reportados ao

Figura 3.6 Tipos de ataques reportados ao CERT.br no ano de 2011 Fonte: http://www.cert.br/stats/incidentes/2011-jan-mar/tipos-ataque.html

De acordo com resultados da 16ª edição do internet Security ThereatReport, divulgado pela Symatec só em 2010 foram descobertos mais de 286 milhões de novas ameaças com ataques direcionados às organizações. No universo da mobilidade, as incidências de ameaças subiram para 42%. Com isso, as empresas norte-americanas gastam em média, $7,2 milhões para sanar um vazamento de dados.

Em matéria divulgada pela DecisionReport (2011) Vendramini diretor Comercial da Symantec Brasil cita como tendência de ameaça para os próximos anos ataques direcionados como o Hydraq e o Stuxnet, esse último tem se mostrado uma ameaça crescente em todo o mundo pelo fato de ser considerado o maior ataque cibernético da história. O Stuxnet abriu uma porta para os malwares que alteraram a frequência de energia do motor, que ocasionou também a capacidade de produção de uma empresa.

3.4.9. Ameaça à Privacidade

Podem ter várias origens, uma delas é a venda de informações pessoais dos cadastros de moradores de uma determinada região ou país por funcionários públicos para empresas privadas para que elas possam disseminar sua marca e promover propagandas de seus produtos e serviços. A divulgação de informação também pode favorecer a engenharia social facilitando o ataque.

As informações também devem ser descartadas de forma adequada, evitando que pessoas mal intencionadas possam conseguir informações valiosas, como contas e senhas de usuários, configurações de computadores, número de contas bancárias, vasculhando o lixo de uma empresa.

3.4.10. A Fragilidade das Senhas Fracas

Na tentativa de se obter sucesso em um acesso não autorizado o primeiro alvo a ser atacado são as senhas de usuários, que geralmente não possuem uma complexidade na sua

42

ANAIS ELETRÔNICOS V ENUCOMP

elaboração, são anotadas e armazenadas em locais com pouca ou sem nenhuma segurança ou compartilhada com demais usuários. Ao obter sucesso na invasão o hacker pode acessar informações particulares ou confidenciais, instalar ou executar programas, tornar a máquina vulnerável e trazer sérios riscos à organização.

De acordo com a redação do site Correio 24 Horas (2011), o apresentador Luciano Huck teve a sua senha do Twitter roubada e divulgada aos seus seguidores. O hacker dizia que tinha trocado a sua senha e mandado de forma privada para a mulher do apresentador, Angélica. Poucos minutos depois, Huck brincou escrevendo para os seguidores. "Depois da indelicadeza de

ser hackeado no twitter

estou de volta! Ah

minha nova senha é: Angélica!", brincou.

3.5. Engenharia Social

Um engenheiro social recebeu a atribuição de obter os planos do seu novo produto que deve ser lançado em dois meses. O que vai impedi-lo? O seu Firewall? Não. Dispositivos avançados de autenticação? Não. Sistemas detectores de invasão? Não. Criptografia? Não. Acesso limitado aos números de telefone de discagem por modems? Não. Nomes de códigos nos servidores para dificultar que um estranho determine qual servidor podem conter os planos do produto? Não.

A verdade é que não existe uma tecnologia no mundo que evite o ataque de um engenheiro social (MITNICK, 2003).A ausência das medidas de segurança e a fragilidade humana podem facilitar o uso da engenharia social, que é uma técnica para obtenção de informações de uma organização ou pessoal através de métodos para enganá-las ou explorá-las.

Geralmente o infrator se passa por outra pessoa, fingindo ser um profissional ou outra personalidade, não utilizando de força bruta ou falhas de equipamentos para explorá-los.Segundo Mitnick (2003) a engenharia social usa a influência e a persuasão para enganar as pessoas e convencê-las de que o engenheiro social é alguém que na verdade ele não é, ou pela manipulação. Como resultado, o engenheiro social pode aproveitar-se das pessoas para obter as informações com ou sem o uso da tecnologia.

Em uma reportagem exibida pelo programa Fantástico - Globo (2011) nos deparamos

com a notícia de que "No Rio falso tenente-coronel do Exército atuava nas barbas da cúpula da "

Segurança Pública

Esta noticia, que muitos devem ter visto ou ouvido, causou um verdadeiro

alvoroço tanto na mídia como na alta cúpula de Segurança Pública no Estado do Rio de Janeiro, que foi colocada em uma situação um tanto constrangedora.

Em um dos seus trechos o falso coronel cita "Eu consegui porque entrei e ninguém me perguntou nada e nem pediu nenhuma identificação. “E se já não bastasse” ainda apresentava

documentos falsos criados por ele próprio e por último em mais uma de suas colocações cita

a parte que mais engana as pessoas é tão somente a convicção com que o engenheiro

Enfim, ele

utilizou-se de suas habilidades em convencer as pessoas, para se tornar parte de um projeto maior, que neste caso específico, era estar/atuar na cúpula da Secretária de Segurança Pública do Rio de Janeiro.

Algumas das características humanas utilizadas para a aplicação da engenharia social são (MITNICK, 2003, p.8):

" que

social se porta, a forma como coloca os assuntos e os resultados apresentados

".

43

ANAIS ELETRÔNICOS V ENUCOMP

a) vaidade pessoal e/ou profissional;

b) autoconfiança;

c) formação profissional;

d) vontade de ser útil;

e) busca por novas amizades;

f) propagação de responsabilidades;

g) persuasão.

Inúmeras ferramentas podem ser utilizadas pelos engenheiros sociais para alcançar os seus objetivos, entre eles podem-se destacadas a utilização do telefone, internet, e-mail, e/ou correspondências, chats, malwares em geral, espionagem, roubo de informações através de documentos descartados incorretamente (MITNICK, 2003).

Geralmente os engenheiros sociais bem-sucedidos têm a habilidade de lidar com as pessoas, são educados e agradam facilmente, o que ajuda no estabelecimento de afinidade e confiança. Utilizam-se de documentos aparentemente sem grande importância, o qual as pessoas da organização não veem nenhum motivo pelo qual ela deva ser protegida e restrita, e desenvolvem um ambiente de credibilidade, além de explorar a confiança da vítima sem levantar qualquer suspeita utilizando-se da crença de que a probabilidade de ser enganado é muito baixa (MITNICK, 2003).

Para que uma empresa ou pessoa evite a trapaça Mitnick (2003, p.32) diz que:

A sua empresa tem a responsabilidade de informar os empregados sobre como pode ocorrer um erro sério quando informações não públicas são tratadas da forma errada. Uma política de segurança bem desenvolvida, combinada a educação e treinamento adequados, aumenta bastante a consciência do empregado sobre o tratamento correto das informações comerciais corporativas. Uma política de classificação de dados ajuda você a implementar os controles adequados para divulgação das informações. Sem uma política de classificação de dados, todas as informações internas devem ser consideradas confidenciais, a menos que seja especificado o contrário.

De acordo com Mitnick (2003, p.33) as empresas devem seguir alguns passos que ajudam a protegê-la contra a divulgação de informações aparentemente inofensivas:

a) realização de treinamentos e conscientização fornecidos pela equipe de Segurança da

informação sobre os métodos utilizados pelos engenheiros sociais;

b) determinar o método apropriado de autenticação a ser usado quando os empregados interagem

com as pessoas que eles não conhecem pessoalmente ou por telefone.

c) classificação das informações que aparentam ser inofensivas verificando se o acesso a elas não

poderá levar o engenheiro social a acessar informações sigilosas da empresa;

d) o uso da terminologia interna pode fazer com o que o engenheiro social pareça assumir

autoridades e conhecimento;

44

ANAIS ELETRÔNICOS V ENUCOMP

e)evitar a divulgação dos telefones diretos dos CEOs ou diretos para pessoas desconhecidas. Elaborar uma política de identificação positiva pode auxiliar no fornecimento dessas informações somente aos colaboradores da empresa;

f) ter uma política escrita e bem divulgada sobre a divulgação de informações de código

contábeis dos grupos de trabalho e departamentos;

g)verificar sempre a identidade do solicitante juntamente com a necessidade que o requisitante tem que saber;

h) os funcionários deverão ser treinados a negar educadamente alguma informação até que a

solicitação possa ser verificada. As políticas e procedimentos da empresa com relação à divulgação de informação não pública devem ser sempre seguidos.

Portanto, trazendo isso à realidade corporativa, fica evidente que combater um engenheiro social é um dos mais difíceis papéis, até mesmo para os mais experientes CSO, pois depende da colaboração de todos da empresa. Essa colaboração só é possível de acontecer com um mínimo nível de maturidade em segurança da informação, e para alcançar isso, uma das ações que mais apresenta resultado são as políticas de conscientização de usuários (CORREIA,

2011).

3.6. Conscientização e Treinamento em Segurança

Um programa de conscientização e treinamento deve ser desenvolvido de acordo com os motivos pelo qual as pessoas são vulneráveis aos ataques. Um estudo realizado por Robert B. Cialdini durante 50 anos resumiu seis tendências básicas da natureza humanautilizadas pelos engenheiros sociais (MITNICK, 2003, p.12).

Autoridades: as pessoas têm a tendência de atender solicitações que são feitas por pessoas com autoridades ou que estão autorizados a fazer tal solicitação.

Afabilidade: as pessoas têm a tendência de atender solicitações quando o solicitante se faz passar por alguém agradável ou com interesses, crenças e atitudes semelhantes aos da vítima.

Reciprocidade: costumamos a atender a solicitações quando acreditamos que recebemos algo de valor como retribuição.

Consistência: após fazer um comprometimento público ou adotar uma causa as pessoas têm a tendência de atender as solicitações para não parecem pouco confiáveis ou indesejáveis.

Validação Social: o cooperativismo quando a ação parece estar de acordo com aquilo que as pessoas estão fazendo aparentando estar de forma correta e apropriada.

Escassez: as pessoas costumam cooperar quando o objeto que está sendo procurado está em falta ou disponível por um curtoperíodo de tempo e que outras pessoas estão competindo por ele.

O programa de conscientização e treinamento deve visar à mudança de comportamento dos funcionários motivando-os a querer fazer parte do programa protegendo os ativos da empresa e também as suas próprias informações. Ele deve atingir cada pessoa que tem acesso as informações confidenciais ou aos sistemas corporativos de computadores. Deve ser realizado de forma contínua e atualizado sobre as novas ameaças e vulnerabilidades e divulgado a todos os funcionários da corporação fazendo com que eles aprendam que cada colaborador tem um papel importante na defesa contra tentativa de invasão aos dados confidenciais.

45

ANAIS ELETRÔNICOS V ENUCOMP

Por definição, a engenharia social envolve algum tipo de interação humana.Com frequência, um atacante usa vários métodos de comunicação e tecnologias para tentar atingir o seu objetivo. Por esse motivo, um programa de conscientização bem feita tenta abortar alguns ou todos estes itens:

a) as políticas de segurança relacionadas com senhas de computador;

b) o procedimento de divulgação de informações ou material confidencial;

c) a política de uso do correio eletrônico, incluindo as medidas para evitar ataques maliciosos de

código;

d) a responsabilidade de questionar as pessoas que estão nas instalações sem o crachá;

e) como determinar a classificação das informações e as medidas adequadas para proteger as

informações confidenciais;

f)

a eliminação adequada de documentos confidenciais e mídia de computador que contenham,

ou

que já tenham contido material confidencial.

O

programa de conscientização deve ser realizado de forma constante, além de ser criativo e

utilizar todos os canais disponíveis de comunicação para que todos os colaboradores tenham acesso às mensagens e possam ter em mente os bons hábitos de segurança. Outra tática que pode ser utilizada é a linguagem no qual as mensagens são redigidas evitando que elas tornem familiares demais para serem ignoradas (MITNICK; SIMON, 2006).

3.7. O que é Hardening ?

Segundo o WikipediaHardening é um processo de mapeamento das ameaças, mitigação dos riscos e execuçao das atividades corretivas com foco na infraestrutura e objetivo principal de torná-la preparada para enfrentar tentativas de ataques.

Muitos administradores sem muita experiencia em segurança preparam seus servidores com uma instalação básica e, depois que suas aplicações já estão funcionando eles a deixam da maneira que está. Eis que muitas vezes surge a seguinte frase “ Ah, já esta funcionando, então está bom!”, e é ai que está o maior problema: achar que está bom.

O Sistema Linux torna-se bastante seguro uma vez devidamente trabalhado. E é por isso que deve ser aperfeiçoado suas configurações padrões. Apesar de ser seguro quando devidamente configurado é possível torná-lo ainda mais seguro. Adotar técnicas de hardening é ter que pensar em três fatores: Segurança, risco e flexibilidade. É necessário saber dosar muito bem esses três fatores para levar o sistema a uma ótima produtividade e segurança.

Sabe-se que não é possível ter 100% de segurança, mas, quanto mais segurança menos risco mas também pouca flexibilidade, ou seja é uma razão inversa proporcional. Por outro lado, se há grande flexibilidade no servidor, que permita qualquer tipo de programa nele, a segurança ficará baixa e os riscos vão aumentar (MELO, 2006).

Tabela 5.2 para visualizar uma representação gráfica desses cenários.

Segurança

Risco

Flexibilidade

46

ANAIS ELETRÔNICOS V ENUCOMP

Não há uma regra direta para esses três fatores representados na Tabela 5.2, isso vai depender de cada situação, de acordo com o tipo de necessidade. Por isso toda implentação de um servidor deve ser bem definida antes de ser feita, nem que ela tenha que ser desenhada no papel e analisada por várias vezes.

Embora as técnicas de hardening sejam de extrema importância, elas não se aplicam em todas as situações. Cada caso é um caso. É preciso analisar e descobrir o procedimento que será mais adequado para a necessidade em questão. Outro ponto importante é que ela é focada na camada de “userland”. Hardening é composto por 4 etapas bem definidas são elas:

1º Mapeamento das ameaças

Ameaças é qualquer evento que possa gerar impacto negativo em nossos ativos. Ex:

usúario insatisfeito, incêndio, falata de recurso. Pra uma ameaça poder se concretizar ela necessita de uma vulnerabilidade. Mesmo porque vulnerabilidade sozinha não faz nada. Quando se tem diversas vulnerabilidades e ameaças que possam comprometer nosso ambiente explrorando essa vulnerabilidade, temos um risco.

Dessa forma, enttão ameaças são circunstância e incidentes que podem gerar impactos negativo explorando uma vulnerabilidade tornando um potencial risco.

2º Mitigação do Risco

Visa reduzir/eliminar os riscos ao nível aceitável, mas qual é o nivelaceitavel ?aquele que meu ambiente pode trabalhar adequadamente de forma segura a zelar pelos 3 pilares da segurança da informação e que esteja proteigo contra ataques.

Há 3 formas de lidar com os riscos:

Evitar o risco: Medidas são tomadas para eliminar a ameaça de tal forma que a ameaça não leve a um incidente.

Suportar / Aceitar o risco: Considera que certos riscos são aceitos. Isto pode acontecer quando o custo da medida de segurança execede o dano. Nesta estratégia a organização vai optar por medidas de segurança repressivas. Ex: se houver um incêndio na sala deve-se apagar o fogo com o extintor de incêndio.

Neutralizar o risco Tomar o risco neutro: Medidas são tomadas mesmo que as ameaças já não se manifestam mais, mas se por ventura venham a se concretizar, o resultado do dano é minimizado. Nesta estratégia a organização pode optar pela combinaçao de medidas preventivas, detectivas e repressivas.

3º Ações corretivas e preventivas

Ações Corretivas e preventivas para os Riscos de TlAs ações corretivas e preventivas

fazem parte do dia-a-dia dos técnicos e gerentes operacionais de TI. São inerentes às suas funções e atreladas aos riscos do negócio sob sua responsabilidade. É recomendável que as ações

preventivas sejam

As ações preventivas devem estar previamente orçadas, contratadas, acompanhadas e atuantes. Podem se restringir a uma ação puramente técnica controlada internamente ou pode requerer uma ação externa (fornecedores, terceiros etc). As ações Preventivas estão atuantes pré-

mais utilizadas queascorretivas.

47

ANAIS ELETRÔNICOS V ENUCOMP

ocorrência do Risco. Por outro lado as ações corretivas são ativadas pós-ocorrência do Risco. Podem ser o último estágio antes do acionamento de um Plano de Contingência.

Ações corretivas em demasia podem ser o resultado de um planejamento ou operações inadequadas ou mesmo a falta deles. Ações corretivas, na maioria das vezes ocorrem de forma emergencial, sem planejamento e dependendo do procedimento e das ferramentas adotados podem ser mais nocivas para o ambiente de Tl do que benéficas.

Podem ser evitadas caso haja ações Preventivas.Um exemplo clássico é a gestão de servidores: é requerido que este passe por manutenções preventivas de hardware periódicas (disco, memória, capacidade, performanceetc), assim como é requerido também que seu

ambiente operacional (sistema operacional, software gerenciador de banco de dados etc) seja atualizado permanentemente de acordo com as orientações do fornecedor. Não havendo manutenções e atualizações preventivas Hardware e Software, riscos de indisponibilidade do

ambiente

potencializados.

As ações preventivas possibilitam uma gestão de menos risco. No caso citado, contratos de manutenção e suporte técnico junto a fornecedores e terceiros; treinamento técnico ao pessoal interno e outras ações impedem que haja exposição e perdas financeiras da empresa em função de indisponibilidade dos sistemas/serviços (IETEC-Instituto de Educação Tecnológica).

são

4º Estratégia de Segurança

Antes de decidir implementar um sistema de segurança um firewall por exemplo é importante ter o conhecimento de algumas estratégias básicas empregadas na construção destes, visando uma maior segurança e confiabilidade no firewall são métodos que podem e devem ser analisados.

Privilégio Mínimo: Garantir que o usuário só tenha acessoaos recursos que ele necessita ter acesso. Tomando o cuidado de não atribuir privilégios menores que o necessário, pois desta forma, tal objeto não conseguirá realizar suas tarefas. Este método é largamente utilizado, sendo importante para eliminar ou amenizar os danos causados por pessoas mal intencionadas.

No contexto de Internet, existem vários exemplos:

Todo usuário não precisa acessar todos os serviços de Internet existentes;

Todo usuário não precisa modificar todos os arquivos em seu sistema;

Todo usuário não precisa saber a senha de root (administrador) da máquina;

Todo administrador de sistema não precisa conhecer as senhas de root de todos os sistemas;

Todo sistema não precisa acessar todos os arquivos de todo outro sistema.

Muitos dos problemas se segurança comuns na internet podem ser evitados com a utilização deste princípio. Por exemplo, o Sendmail é um alvo muito visado pelos atacantes, devido sua complexidade e o fato de que ele funciona acoplado ao root. O nível de complexidade deste daemon aumenta a ocorrência de bugs, isto implica que, programas privilegiados devem ser tão simples quanto possíveis. Caso um programa complexo exija privilégios acentuados,

48

ANAIS ELETRÔNICOS V ENUCOMP

devemos procurar meios de separar e isolar as partes que necessitam destes privilégios das que não precisam (MELO, 2006).

Segregação de função: Consiste na separação entre as funções de autorização, aprovação de operações, execução, controle e contabilização, de tal maneira que nenhum funcionário detenha poderes e atribuições em desacordo com este princípio de controle interno.

A segregação de funções proíbe o usuário de, exercendo certa atividade, executar outra atividade ao mesmo tempo que implique em risco operacional para o negócio. A hierarquia organizacional reflete a estrutura dos papéis desempenhados pelos colaboradores dentro da organização.

Várias normas e regulamentos governamentais, como Sarbanes-Oxley (SOX), COBIT, ISO/IEC 27002, recomendam a implementação de controles, como o Perfil por Função, como forma de seguir as políticas de acesso. Mas para que os controles funcionem de maneira adequada, é extremamente importante que as pessoas tenham treinamentos corretos nos sistemas de informação e conscientização nos temas de segurança da informação.

Segurança por Obscuridade: É um princípio nada confiável, pois consiste unicamente em ocultar informações.

Exemplos práticos deste método são:

colocar uma máquina na Internet e achar que ninguém tentará invadi-la, simplesmente porque você não contou a ninguém sobre ela;

abrir um servidor Apache em uma porta diferente para que ninguém o utilize, a não ser as pessoas que você informou sobre sua existência;

configurar sua rede de forma que usuários internos vejam as informações de uma maneira e usuários externos (Internet) não consigam ver tais informações, como portas e serviços prestados em seus servidores.

Observe alguns pontos

sempre utilize esta técnica em conjunto de outras, pois manter a segurança apenas através da obscuridade é muito ruim;

não anunciar algo não é o mesmo que ocultá-lo;

utilizar um sistema de criptografia desconhecido, não garante segurança nenhuma (MELO, 2006);

Segurança em Profundidadeou em camada: implementar o máximo de controles possíveis no ambiente pra proteger o ativo. Este princípio de segurança é destinado à prevenção dos acidentes, e a minimização das respectivasconsequências, evitando que um problema isolado se alastre pelo sistema; instituindo múltiplos, redundantes e independentes níveis de proteção. A idéia aqui é não depender de um únicométodo de defesa, instalando vários níveis de proteção. Tornando a tentativa de invasão arriscada demais ou cansativa demais para os atacantes. Isto porque as chances de violar um nível de proteção do sistema são muito maiores do que as chances de violar um sistema com vários níveis de segurança(MELO, 2006).

49

ANAIS ELETRÔNICOS V ENUCOMP

3.8. Segurança no Sistemas de Arquivos

Sempre que o sistema Linux é instalado, as boas práticas de instalação aconselha particionar o disco e a colocar os principais diretórios em partição separadas, isso proporciona uma maior segurança, pois cada partição tem sua tabela separada.

Caso o diretório /está em uma partição e o /home em outra, no caso de algum problema no sistema ou até uma reinstalação, não perderia as informações no diretório /home.Entretanto,segurança de um particionamento não é apenas isso. Todas essas partições são montadas no diretório, e um erro que muitos administradores de sistema Linux cometem é não ler a documentação para conhecer melhor os recursos e descobrir que o camandomountpossibilita a utilização de algumas opções muito interessante, que permitem melhorar muito a segurança nas partições.

Caso todos os diretórios estivessem na mesma partição, no /, não seria possível ter essas opções e usufruir desses recursos. É possível retirar a permissão de Suid bit dos binários, mas só isso tambem não resolveria. Vamos cortar o mal pela raiz, com essas opções do mount, dizendo que na partição em questão os binários com permissão de Suid bit não terão efeito, entre outras configurações.

Conformidade com as recomendações

A segurança em sistemas de arquivos, a norma ABNT NBR ISO/IEC 27002:2005, recomenda, no item 10.4, que devemos proteger a integridade do software eda informação.

Execução do procedimento

A primeira opção do mounté o nosuid,que faz com que binários com permissão de Suid bit não surtam efeito na partição na qual está definido.

Ex: prático, adicionar um usuário.

# adduser teste

Faça uma cópia das shells do seu sistema para o diretório home desses usuário e atribua as shells a permissão de Suid bit.

# cp /bin/*sh /home/teste

# chmod 4755 /home/teste/*sh*

Logar em outro terminal com o usuário que foi criado e teste executar uma dessas shells.

$ cd /home/teste

$ ./sh

$ id

Na saida do comando id, podemos ver que esse usuário conseguiu permissão de root.

50

ANAIS ELETRÔNICOS V ENUCOMP

OBS.: Recomenda-se, para fins de melhor conhecimento do sistema, que esse teste seja feito em todas as shells disponíveis.

Para resolvermos isso, vamos remontar a partição onde está montada o /home, mas agora com a opção de nosuid.

# mount -o remount,rw,nosuid /home

# mount

O camandomountsem parâmentros nos mostra quais as partições estão montadas e suas

respectivas opções.

Com a partição remontada com nosuid, faça o teste novamente e veja que as asshells continuam com o suid bit ativado. Entretanto, quando forem executadas, não vão mais possibilitar o acesso no nível de root.

Outra opção que pode ser utilizado é o noexec, que impossibilita a execução de qualquer binário ou arquivo executável dentro da partição na qual essa opção está ativa.

Essa opção pode ser aplicada a todos os diretórios, mas um clássico exemplo é aplicá-la aos diretórios /home e /tmp. Crackerspodem ser aproveitar do diretório /tmp, onde por padrão qualquer usuário pode introduzir backdoors ou qualquer outro programa malicioso para ter um acesso completo ao seu sistema.

O mesmo exemplo realizado com o nosuid.Agora será remontar a partição com a opção

noexece tentar executar umas shells que copiamos para o /home.

# mount -o remount, rw,noexec /home

# mount

# ./sh

Observe que não foi possível executar a shell. Na tentativa de executá-las, retornou a mensagem “permissão negada”; nessa partiçao, nada de execução.

Uma última opção que podemos utilizar é o noatime. Ele não é especificamente uma opção para a questão de segurança, mas sim para a questão de performace, pois faz com que o kernel do linux execute uma rotina a menos quando o noatime esta definido e destinado à atuaização do tempo de acesso de arquivo.

Primeiro é conhecer o comando stat, utilizado para verificar o status de um arquivo ou de um sistema de arquivos.

# stat /etc/passwd

A saida desse comando nos retorna informações importantes, mas vamos nos focar nas

informações do Access(atime), do Modify (mtime)e do Change (ctime).Veremos suas diferenças.

Será criado dois arquivos, um no diretório /root e outro no /tmp, assumindo que o /root e o /tmp estão em partiçoes diferentes.

# touch /root/teste1

51

ANAIS ELETRÔNICOS V ENUCOMP

# touch /tmp/teste2

Verificar o seu status, mas focando nas informações do Access,do Modifye do Change.

# stat /root/teste1

# stat /tmp/teste2

Diante das primeiras informações, vamos fazer os testes e ver o que será mudado. Vamos visualizar o conteúdo dos arquivos, supondo que eles tenham algum conteúdo, e logo em seguida será verificado o status dos arquivos.

# cat /root/teste1

# cat /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Veja que os Accessdos arquivos estão diferentes. Quando nós visualizamos o conteúdo dos arquivos, fizemos um acesso a ele, logo o seu tempo de acesso (Access) foi modificado.

Agora mais um teste nesses arquivos. Será modificado sua permissão e logo em seguida visualizar o seu status.

# chmod 777 /root/teste1

# chmod 777 /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Com atenção observer que o Access dos arquivos estão diferentes. Quando é visualizado o conteúdo dos arquivos, é feito um acesso a ele, logo o seu tempo de acesso (Access) foi modificado.

Será feito um teste nesses arquivos. Modificar sua permissão e logo em seguida visualizar o seu status.

# chmod 777 /root/teste1

# chmod 777 /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Percebe-se que agora o Access não foi modificado, mas o Changefoi. Sempre que mudarmos a permissão de um arquivo, o Change será mudado, registrando a última data e hora da mudança.

Agora será inserido um conteúdo nesses arquivos e logo em seguida verificar o que foi modificado.

# echo abc> /root/teste1

52

ANAIS ELETRÔNICOS V ENUCOMP

# echo abc> /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Percebe-se que o Change foi alterado novamente, mas ele não foi alterado sozinho: o Modify também foi, pois agora não ocorreu só uma mudança de permissões, mas uma alteração no conteúdo do arquivo.

Veremos a diferença entre o Access,o Modify e o Change,podemos fazer a alteração na partição e ver o que será melhorado.

Agora é remontar a partição onde foi montado o diretório /tmp com a opção noatime.

# mount o remount,rw,noatime /tmp

# mount

Com a partição remontada com a opção noatime, vamos fazer o primeiro teste que foi realizado, o de listar o conteúdo do arquivo, e logo em seguida é verificado seu status dos arquivos.

# cat /root/teste1

# cat /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Observe que o Access(atime) do arquivo teste2 dentro do /tmp não foi modificado, justamente por causa da opção noatime que colocamos na remontagem da partição.

Isso pode ser muito útil para os diretórios de logs, onde o acesso é feito constantemente pelo sistema, pois faz com que ookernel deixe de executar uma rotina, o que ajuda sua performance.

DICA:Essas não são as únicas opções que o comando mount pode nos oferecer.

Para ver todas as opções possíveis, consulte o man do comando mount.

53

ANAIS ELETRÔNICOS V ENUCOMP

Tabela 5.3 : bom exemplo da maneira pela qual podemos aplicar essas opções aos nossos diretórios que estão montados em partições diferentes.

diretórios que estão montados em partições diferentes. 3.9. Programas Desnecessários Após a instalação de um

3.9. Programas Desnecessários

Após a instalação de um sistema Linux, devemos nos preocupar se todos os programas que foram instalados nele são realmente necessários. Mesmo que tenha sido instalação mas básica possível a verificação de programas é sempre uma boa escolha. Lembre-se de que o servidor não deve conter programas “Clientes”.

Conformidade com as recomendações

No que diz respeito a programas instalados, a norma ABNT NBR ISO/IEC 27002:2005 recomenda no Item 11.5.4 que devemos remover todo utilitário ou software desnecessário do sistema após uma checagem.

Execução de procedimento

Primeiramente é possível fazer uma pesquisa por todos os pacotes instalados no sistema, justamente com suas versões. Em seguida, enviamos a uma lista para ser mais bem analisada.

Debian:

#dpkg

l

/root/pacotes

|

awk

‘{print $2,$3}’

|

sed

‘1,7d’

>

Com esse commando, estaremos pesquisando todos os pacotes instalados. Com o dpkg é feito um filtro somente na segunda e na terceira coluna, que são os nomes dos programas e as versões. O sed removerá as sete primeiras linhas que são importantes para a nossa pesquisa e a direcionará isso para o arquivo de pacotes dentro do /root.

A retirada dos programas desnecessários será de acordo com a situação com que se está trabalhando. Pode ser que, para um caso específico, seja necessário algum programa que, em outros casos, não seja obrigatório. É importante que isso seja minunciosamente analisado.

Um exemplo é o programa wget, que é utilizado para fazer download sem a interação do usuário. Isso pode ser um grande risco para um servidor, já que um cracker pode aproveitar-se de problemas conhecidos do seu sistema e utilizar o wgetpara baixar programas maliciosos para seu

54

ANAIS ELETRÔNICOS V ENUCOMP

servidor, tais como exploits, backdoors, entre outros. Isso impossibilitará que ele tenha um fácil acesso ao servidor ou que mesmo o danifique.

Concluindo o exemplo, se o seu Linux tem o wget, podemos então removê-lo,

# apt-getremove purgewget

Faça uma análise completa dos programas que estão instalados por padrão no seu Linux e verifique o que é realmente necessário. Lembre-se de cada caso é um caso.

DICA: O sistema Operacional Windows também vem com um programa semelhante ao wget, o tftp. Caso esteja utilizando o Windows, também tome cuidado com esse programa, pois muitos Spywares se aproveitam dele.

Podemos ver que, mesmo o sistema seja instalado no seu modo básico, ainda existe programas que podemos ser retirados, pois talvez sejam até brechas de segurança em seu sistema se forem bem explorados.

3.10.Arquivos com permissão Suid bit

A permissão de Suid bit possibilita que um determinado binário que só pode ser executado, por exemplo, pelo usuário root seja executado por outro usuário comum do sistema. Muitos binários no sistemajá vêm com a permissão de Suid bit, pois alguns binários que somente o root pode executar precisam ser utilizados por um usuário. Exemplos clássicos desses comandos o su, o ping, o passwde muitos outros. Mas em uma coisa devemos pensar: será que todas esses binários que já estão com a permissão de suid bit vão ser utilizados por seus usuários? Será que eles precisam de todas esses comandos a disposição?

Mas qual o problema de se ter um Suid bit ativado. O problema pode ser muito grande se um cracker souber aproveitá-lo, explorando vulnerabilidades conhecidos para conseguir uma shell do root. Podemos pensar no exemplo clássico das shells com permissão de suid bit que quando executada por um usuário, pode liberar uma shell de root. O administrador tem que atenta-se para essas coisas. Como o sistema possui muitos binários com suid bit, problemas como esses das shells podem passar despercebidos.

Então o que podemos fazer?

Retirar todas as permissões de Suid bit do sistema de depois vamos setar essas permissões somente para os binários que julgamos fundamentais para um usuário. Devemos pensar sempre que vão existir casos diferentes, então os binários que julgamos importantes para um servidor firewall por exemplo, podem não ser os mesmos para um servidor de e-mail.

Conformidade com as recomendações

Por recomendação da norma ABNT NBR ISO/IEC 27002:2005, no item 11.6.1, o acesso á informaçãoe as funções dos sistemas e de aplicações por usuário e pessoal de suporte deve ser restrito de acordo com o definido na política de controle de acesso.

Execução do procedimento

55

ANAIS ELETRÔNICOS V ENUCOMP

Para remover todas as permissões de suid bit dos binários, temos que fazer uma pesquisa no sistema e gerar uma lista com todos eles para uma melhor análise.

Será criado um diretório chamado teste dentro do /root para fazermos os nossos testes e em seguidautilizaremos o comando findpara localizar com Suid bit.

# cd /root

# mkdirteste

# find / -perm -4000 > /root/teste/lista.suid

OBS.: O número 4000 representa a permissão de Suid bit, sendo que os três zeros são as permissões padrões do sistema ( 0 para usuário, 0 para grupo e 0 para outros), e o 4 representa a permissão a permissão Suid bit. Podemos ter também, no lugar do 4, o 2, que é Sgid bit, e o 1, que é Sticky bit, mas não vamos falar sobre eles aqui.

Faça uma listagem detalhada em um desses binários para ver como a permissão de suid bit aparece.

# ls - l /bin/su

Vemos que nas permissões do usuário aparece um s no lugar do x. Isso representa que a permissão de Suid bit está ativada, mas a permissão de execução (x) continua-lá.

Com a lista gerada, podemos ver qual desses binários precisa continuar com a permissão de suid bit. Vamos pegar um exemplo de um Bastion Host, que é o Firewall da sua rede. Podemos deixar dois binários com o Suid bit setado, que são o passwde o su. Podemos deixar o passwd para que o usuário possa mudar a sua senha de acesso caso ele seja um administrador e acesse essa máquina remotamente. Se estamos pensando em um firewall, mas não há motivos para um usuário comum acessa-lo. Já o suvai ser de vital importância, pois podemos fazer que tanto local ou remotamente o usuário root não tenha acesso direto. Assim, o administrador vai logar com seu usuário comum, que pode ter alguns privilégios a mais, e depois utilizar o supara se tornar o usuário root.

Vamos retirar todas as permissões de Suid bit dos binários.

# chmod -s -Rv /

Onde:

s - retira a permissão de Suid bit

R - é recursivo, do /para baixo

v - é o modo verbose (mostra o que está sendo feito pelo comando)

# ls l /bin/su

Logo vamos setar a permissão de Suid bit somente para os dois binários que desejamos.

56

ANAIS ELETRÔNICOS V ENUCOMP

# chmod +s /usr/bin/passwd

# chmod +s /bin/su

# ls l /usr/bin/passwd

# ls l /bin/passwd

Com esses comandos, as permissões de Suid bit foram setadas novamente para esses dois binários.

Pode ser que, para o servidor que você esteja configurando só o passawd e o sunão seja suficiente, talvez outros binários precisem estar com o Suid bit ativado. Cabe analisar o que será necessário para cada tipo de serviço.

Uma solução alternativa que podemos adotar é o comando sudo. Como ele podemos definir somente os comandos queremos para o usuário comum executar como se fosse root.

Instalando o sudo.

#apt-getinstallsudo

Depois que o sudo estiver instalado, editaremos o arquivo /etc/sudores, que é onde definimos quais usuários podem ter acesso aos comandos a serem definidos.

Alguns exemplos:

# vi /etc/sudores

Exemplo 1: teste ALL= /sbin/ifconfig, /sbin/iptables

Neste primeiro exemplo, vamos permitir que o usuário teste, possa executar os comandos ifconfig e iptablescomo se fosseroot. Dessa maneira, entretanto, ele vai pedir a senha do usuário na primeira vez que fomos executar esses comandos.

Podemos executá-los da seguinte maneira.

# sudoifconfig

# sudoiptables

Exemplo 2:teste ALL=NOPASSWD: /bin/reboot , /bin/halt

Estamos permitindo que o usuário teste, possa executar os comandos reboot e halt, mas dessa vez sem que seja necessário que ele digite a senha (NOPASSWD).

Exemplo 3:teste ALL= /usr/bin/passwd [A-z]*, !/usr/bin/passwd root

Este commando permite que o usuário teste mude a senha de qualquer usuário cujo login esteja no interlavo de A a Z, exceto o root.

No sistema Linux já vem com a permissão de suid bit ativado em muitos binários para facilitar a utilização deles para outros usuários, mas vimos também que nem sempre essa facilidade é uma boa, pois pode gerar brechas de segurança. Fiquemos atentos para esses tipos de permissões.

57

ANAIS ELETRÔNICOS V ENUCOMP

3.11. Segurança no Terminal

Quando falamos em segurança, a primeira coisa que vem à mente é um possível ataque remoto. Então, os nossos servidores que não estão conectados à internet não estão correndo nenhum perigo, certo? Errado, alias, dois fatos errados. Não estar conectado diretamente à internet não quer dizer que se está totalmente seguro, pois se um cracker conseguir passar pelo nosso firewall, ele vai conseguir chegar até os outros servidores que não tem acesso direto à internet, já que entrou em nossa rede interna. O outro fato é que um funcionário mal intencionado pode ter um acesso local (físico) ao nosso servidor, diretamente no teclado do próprio servidor.

Se somos administradores desprevenidos, vamos resolver um problema fora da sala e sem perceber deixamos o terminal do servidor logado, com usuário de root. Então, esse funcionário mal intencionado poderá fazer o que quiser, já que ele finge ser um cara que não entende nada de informática, mas na verdade tem um conhecimento maior do que o nosso.

Para esse tipo de situação, podemos aplicar alguns procedimentos.

Conformidade com as recomendações

No que diz repeito ao software instalado, a norma diz, nos itens 11.5.5 e 11.5.6, que devemos ter controle sobre os acessos no sistema a fim de evitar acessos não-autorizados e de não fornecer informações desnecessárias.

Execução do procedimento

1. Desabilitar o uso de CTRL+ALT+DEL

Desabilitar o Ctrl+Alt+Del no sistema Linux pode ser uma boa idéia, pois não permitirá que alguém pressione uma sequencia de teclas e faça com que o servidor reinicie. Isso é bom principalmente quando seu servidor Linux está no mesmo armário que um servidor com o sistema Windows, assim se evita que em algum momento você pressione Ctrl+Alt+Del no teclado do Linux pensando que é o do Windows.

Edite o arquivo /etc/inittab e comente a linha a seguir:

#ca:12345:ctrlaltdel:/sbin/shutdown t1 a r now

Você pode também mapear as teclas para executar um outro comando qualquer, por exemplo.

foi

desabilitado por segurança”

Depois das alterações, precisamos atualizar o arquivo /etc/inittab. Isso é feito com o comando seguinte:

#ca:12345:ctrlaltdel:/bin/echo

“Esse

recurso

# init q

2. Limitar o uso dos terminais texto

Dependendo da situação em um servidor, por questões de segurança não é muito interessante deixarmos o login habilitado em todos os terminais texto. Por exemplo, para impedir o login nos terminais 4,5 e 6 devemos editar o arquivo /etc/inittab e comentar as seguintes linhas:

58

ANAIS ELETRÔNICOS V ENUCOMP

# vi /etc/inittab

# 4:23:respawn:/sbin/getty 38400 tty4

# 5:23:respawn:/sbin/getty 38400 tty5

# 6:23:respawn:/sbin/getty 38400 tty6

Depois das alterações, precisamos realizar novamente o arquivo /etc/inittab

# init q

3. Bloquear o terminal com a variável TMOUT

No sistema Linux, temos uma variável que não vem setada por padrão. Essa variável é a TMOUTque controla em quando tempo o terminal será deslogado.

Primeiro, podemos setá-la manualmente com um tempo pequeno para testarmos.

# TMOUT=15

Estamos setando o valor da variável para 15 segundos. Logo, se o terminal não for utilizado durante os 15 segundos, ele será deslogado e o usuário será obrigado a logar-se novamente.

Para melhorar, podemos colocar essa variável dentro do arquivo global da variável, para que ela fixe toda vez que o sistema for iniciado.

# vi /etc/profile

If [ “ ’id –u’ “

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/b

in:/usr/bin/X11”

else

PATH=”/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games”

fi

if [ “$PS1” ]; then

-eq 0 ]; then

if [ “$BASH” ]; then

PS1=’ \u@ \h: \w \$ ‘

else

 

if [ “ ‘id –u’ “ –eq 0 ]; then

PS1=’# ‘

else

 

PS1=’$ ‘

fi

 

fi

fi

59

ANAIS ELETRÔNICOS V ENUCOMP

TMOUT=180

Export PATH

TMOUTumask 022

Dessa maneira, o sistema voltará para a tela de login se nenhum commando for executado num intervala de 180 segundo (3 minutos).

4. Bloquear o terminal com o programa Vlock

Com a variável TMOUT, fizemos com que o terminal seja deslogado automaticamente depois de um determinado tempo. Podemos fazer isso também manualmente com um programa chamado Vlock, que pode travar todos os terminais no momento em que quisermos.Instalação do programa:

# apt-getinstallvlock

Para travar todos os terminais, digite:

# vlock a

O Vlockexecutado com o parâmetro a bloqueia o uso de todos os terminais. Os

terminais só serão liberados mediante autenticação com senha do usuário que os travou.

Pequenos detalhes em configurações, uma variável e um simples programa podem nos ajudar a manter nosso servidor seguro, com todos os nossos terminais protegidos.

3.12. Gerenciamento de Privilégios

O usuário root é o usuário mais conhecido em sistemas *nix (o termo *nix aborda os

sistemas baseados em Unix). Quando algum cracker ou funcionário mal intencionado tentar um acesso ao nosso sistema, seu foco vai ser conseguir senha do usuário root. Se ele tiver sorte e consegui-la, terá acesso ao nosso sistema. Como evitar isso?

Vamos adotar alguns procedimentos para evitar que o usuário root tenha acesso direto ao sistema. Nós seremos obrigados a utilizar nossos usuários comuns para logar e depois utilizaremos o sudo ou su para virarmos root.

Conformidade com as recomendações

A norma ABNT NBR ISO/IEC 27002:2005, no item11.2.2, estabelece que concessão e o uso de privilégio devem ser restritos e controlados.

Execução do procedimento

1. Bloquear o login do root nos terminais texto

Não é seguro deixarmos o login como root habilitado para os terminais texto. O ideal é bloquear o login do root em todos os terminais texto, logar como usuário comum e, quando for necessário a realização de alguma tarefa administrativa, viramos usuário root usando o comando su.

Criando o usuário comum

#adduserlix

60

ANAIS ELETRÔNICOS V ENUCOMP

Uma das maneiras pelas quais podemos bloquear o login do root é editar o arquivo /etc/securetty e comentar as linhas referentes aos terminais que queremos desabilitar para o root. Vamos comentar as seguintes linhas:

# vi /etc/securetty

# tty1

# tty2

# tty3

# tty4

# tty5

# tty6

# tty7

# tty8

# tty9

# tty10

# tty12

Agora que as linhas dos terminais estão comentadas, podemos tentar nos logar em outro terminal com o usuário root. Veremos que não teremos sucesso.

Como dissemos, essa é uma das maneiras pelas quais se pode bloquear o acesso do root pelos terminais.

2. Determinar datas de expiração para contas de usuários

Se o nosso servidor for alocar uma grande quantidade de usuários, podemos especificar datas de expiração para as contas dos usuários. Dessa maneira, se aquele usuário utiliza a sua conta todos os dias, quando sua senha expirar ele poderá modifica-la e renovar a conta. Mas, se por algum motivo uma conta de um usuário não está sendo utilizada, ela será desativada no tempo especificado, dando-nos uma segurança de que essa conta não será usada com más intenções.

Utilizaremos o comando chage, que modifica os parâmetros do arquivo /etc/shadown, onde são feitos esses controles.

Primeiro vamos visualizar a configuração padrão de uma conta de um usuário, por exemplo, o usuário teste.

# chage l teste

E agora faremos algumas modificações para esse usuário.

# chage M 30 W 5 I 2 teste

# chage l teste

Onde:

-M é o tempo máximo da validade da conta.

61

ANAIS ELETRÔNICOS V ENUCOMP

-Wé o tempo de aviso.

-Ié o tempo antes de uma conta ser desativada.

Com essa configuração, estamos dizendo que a conta do usuário é válida por 30 dias. Quando estiverem faltando 5 dias para a conta expirar, o usuário começará a ser avisado quando for logar. Depois desses 30 dias, o usuário terá 2 dias para poder modificar a senha e para que a conta seja renovada. Enquanto ele não fizer isso, não conseguirá logar no sistema. Se nesses 2 dias o usuário não modificar a senha, a conta será desativada e somente o usuário root poderá realtivá-la.

3. Remover shells válidas de usuários que não precisam delas.

Usuários que não utilizam shell não têm necessidade de tê-la. Vamos remover as shells válidas de todos os usuários que não vãoexecutar oficialmente login no sistema através do terminal local (tty) ou via ssh. Combinado a isso, criaremos um usuário estratégico pertencente ao grupo de administradores, que também criaremos. Os usuários pertencentes a esse grupo terão permissão para realizar o logine posteriormente usar o su para se tornar root.

Primeiro vamos criar o grupo administradores. Logo em seguida, criaremos um usuário administrador e o adicionaremos ao grupo.

# groupadd administradores

# addusertoor

# gpasswd atoor administradores

Vamos visualizar o arquivo /etc/passwd. Veja que todos os usuários de sistema também possuem shells válidas.

# cat /etc/passwd | less

Criaremos um script para remover todas as shells válidas dos usuários, menos daqueles que nós especificamos.

# cd /root

# vi inválidos.sh

# ! /bin/bash

For USER in $(cat /etc/passwd | cut f l –d “:” | grep –v root | grep v toor | grep v lix)

do

usermod s /bin/false $USER

done

# ./inválidos.sh

Esse script, ele executa um for que pegará somente a primeira coluna do arquivo /etc/passwd, que são os nomes dos usuários que não estão especificados no grepv. Isso é armazenado dentro da variável USER. Logo depois, com o comando usermod, esse script passa todas as shells dos usuários que estão na variável USER para /bin/false, ou seja, uma shell inválida.

62

ANAIS ELETRÔNICOS V ENUCOMP

Depois da execução do script, visualize novamente o arquivo /etc/passwd e veja como ele ficou.

# cat /etc/passwd | less

Repare que todas shells dos usuários passaram a ser /bin/false, menos as dos usuários root, toor e lix. Podemos adotar a política de que, sempre que criarmos um usuário novo, ele seja criado com uma shell inválida. Caso ele precise de uma shell válida depois, podemos mudar isso no arquivo /etc/passwd.

Para fazer isso, podemos editar os seguintes arquivos.

# vi /etc/adduser.conf

Nesse arquivo podemos mudar a variável DSHELL para uma shell inválida.

DSHELL=/bin/false

Dessa maneira nossos usuários seriam criados por padrão com a shell/bin/false, uma shell inválida. Finalizando essa parte de shells, podemos visualizar o arquivo /etc/shells. Ele é um arquivo texto que contém os nomes de caminho completos das shells de login válidos. Esse arquivo é consultado pelo comando chsh (utilizado para mudar a shell de um usuário) e fica disponível para consulta por outros programas.

# cat /etc/shells

É preciso ficar atento, porque há programas que consultam esse arquivo para descobrir se um usuário é um usuário normal. Por exemplo, daemos (processos que são executados em background) de ftptradicionalmente desaprovam acessos aos usuários com interpretadores de comando não incluídos nesse arquivo.

3.20.Conclusão

O ambiente computacional e todas as suas tecnologias, com as mais modernas arquiteturas, plataformas e inúmeras formas de garantir mais segurança da informação ainda não é, e provavelmente não será, suficiente para conter o ímpeto curioso, criativo e astuto do cérebro humano.

A engenharia social, combinada com a fragilidade humana, contribui para um dos pontos mais vulneráveis que estão presentes em todas as organizações e que sempre existirão, pois não há uma receita milagrosa de como transformar um ambiente que manipulam informações em um local totalmente seguro.

Uma medida para dificultar o roubo ou o acesso indevido a essas informações são as condutas, os treinamentos, os hábitos e o conhecimento de técnicas deHardening em servidores, além da responsabilidade que se deve ter ao manipular, transmitir e descartar informações, sejam elas confidenciais ou não.

Se a informação não for considerada uma fonte preciosa será preocupante o agravamento da falta de instruções e conscientizações por parte dos funcionários e se tornará cada vez mais difícil a implementação da segurança da informação, pois o desafio de manter as informações confidenciais está cada vez menor e está cada vez mais fácil de encontrá-las e utilizá-las.

63

ANAIS ELETRÔNICOS V ENUCOMP

É importante ter em mente que a tarefa de se possuir profissionais capacitados e aptos a trabalharem com segurança é realmente difícil, porém é um investimento que não deve ser encarado como uma despesa a ser adicionada ao orçamento. Deve ser realizado de forma constante, pois seu retorno será em longo prazo e de acordo com as mudanças culturais da organização.

Mesmo o tema sendo discutido nas empresas, ainda assim percebe-se certo grau de desconhecimento em segurança da informação por partes dos gestores e administradores de TI,

de modo que isso

reflete no ambiente corporativo. A verdade é que se tem um longo caminho para ser alcançado e diante dos resultados pode-se perceber que as empresas já estão mais preocupadas em relação as suas informações geradas ao longo do dia, que devem ser tratadas e gerenciadas para que não ocorram situações como a imagem da empresa atrelada em fraudes ou vitimas de cibe criminosos.

que ainda têm a mentalidade de que “as coisas só acontecem aos outros

Referências

AMARAL,

Bruno

do.

Segurança

proativa.

Disponível

em

<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?infoid=9819&sid=4

2> Acesso em: 12 de Outubro de 2012.

ARAUJO, Eduardo Edson de. A vulnerabilidade humana na segurança da informação. 2005.

Disponível em

Bibliografia/Monografia%20Interven%C3%A7%C3%A3o%20humana%20Seguran%C3%A7

a.pdf>. Acesso em: 01 de Outubro de 2012.

<http://svn2.assembla.com/svn/GSIDEI/

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 27001:2006. Rio de Janeiro, 2006.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 27002:2005. 2.ed. Rio de Janeiro, 2005.

BR-LINUX.ORG. Pane na telefônica: funcionários suspeitam de sabotagem. Disponível em:

<http://br-linux.org/2008/pane-na-telefonica-funcionarios-suspeitam-de-sabotagem/> Acesso em: 15 de outubro de 2012.

CERT.BR. Incidentes reportados ao CERT.br janeiro a março de 2011. Disponível em:

<http://www.cert.br/stats/incidentes/2011-jan-mar/total.html> Acesso em: 01 de Outubro de

2012.

COMPUTERWORLD. Falhas de segurança em redes sociais geram risco para o negócio. Março 2010. Disponível em: <http://computerworld.uol.com.br/gestao/2010/03/04/falhas-de seguranca-em-redes-sociais-geram-risco-para-o-negocio/> Acesso em: 10 de Outubro de

2012.

CORREIA, Marco. Engenharia social no Governo do Rio de Janeiro percebeu?. Disponível em:

<http://marcoacorreia.wordpress.com B/2011/04/03/engenharia-social-no-governo-do-rio-de- janeiro-percebeu/>Acesso em: 18 de Outubro de 2012.

em:

<http://marcoacorreia.wordpress.com/ 2011/10/12/seguranca-da-informacao-e-novidade-nas- empresas/>Acesso em: 14 de Outubro de 2012.

CORREIA,

Marco.

Segurança

da

informação

é

novidade

nas

empresas.

Disponível

64

ANAIS ELETRÔNICOS V ENUCOMP

CORREIO 24 HORAS. Luciano Huck tem senha do Twitter roubada e brinca com a situação.

Disponível

<http://correio24horas.globo.com/noticias/noticia.asp?codigo=57227&mdl=49>. Acesso em:

15 de Outubro de 2012.

em:

DAWEL, George. A segurança da informação nas empresas. Rio de Janeiro: Editora Ciência Moderna Ltda., 2005.

DECISION

em

REPORT.

A

evolução

das

atividades

maliciosas.Disponível

<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?from_info_index=1

53&infoid=8903&sid=4> Acesso em: 27 de Outubro 2012.

ESTADÃO.

Hackers espalham vírus com oferta de vacina antigripe H1N1. Disponível em:

<http://www.estadao.com.br/noticias/geral,hackers-espalham-virus-com-oferta-de-vacina-

antigripe-h1n1,475155,0.htm> Acesso em: 15 de Outubro de 2012.

FONTES, Edison Luiz Gonçalves. Paulo : Saraiva, 2006.

FONTES, Edison Luiz Gonçalves. Vivendo a segurança da informação:orientações práticas para as organizações. São Paulo :Sicurezza Brasiliano & Associados, 2000.

GUELMAN, Luiz. Conscientização de usuários: como envolver seu público com a Segurança da Informação. 2006. Disponível em: <http://www.modulo.com.br/comunidade/entrevistas/616- conscientizacao-de-usuarios-como-envolver-seu-publico-com-a-seguranca-da-informacao>. Acesso em: 30 de Outubro de 2012.

MITNICK, Kevin D. A arte de enganar. São Paulo : Pearson Education do Brasil Ltda, 2003.

MITNICK, Kevin D.; SIMON, Willian L. A arte de invadir. São Paulo: Pearson Education do Brasil Ltda 2006.

MÓDULO SECURITY SOLUTIONS.10ª Pesquisa Nacional de Segurança da Informação.2006,

Segurança da informação:o usuário faz a diferença. São

Disponível em <http://www.modulo.com.br/media/10a_pesquisa_nacional.pdf> Acesso em:

24 de Outubro de 2012.

MOREIRA, Nilton Stringasci. Segurança mínima: uma visão corporativa da segurança de informações. Rio de Janeiro: Axcel Books, 2001.

REUTERS. Hackers espalham vírus com oferta de vacina antigripe H1N1. 2009, Disponível em <http://br.reuters.com/article/internetNews/idBRSPE5B00SZ20091201?sp=true> Acesso em:

24 Outubro 2012.

MELO, Sandro. BS7799 Linux da Tática à Prática em Servidores. São Paulo: Alta Books, 2006

SEMOLA, Marcos. Gestão da Segurança da Informação: uma visão executiva. Rio de Janeiro:

Campus, 2002.

SLADE, Robert. Exclusivo: entrevista com Rob Sladeespecialista em vírus de computadores.

Jun

<http://www.modulo.com.br/site?from%5Finfo%5Findex=8&infoid=791&lng=br&sid=91>

Acesso em: 24 de Outubro de 2012.

2006.

Disponível

em:

SYMANTEC.InternetSecurity

Threat

Report,

volume

16.2010,

Disponível

em:

<http://www.symantec.com/threatreport/#> Acesso em: 24 de Outubro de 2012.

65

ANAIS ELETRÔNICOS V ENUCOMP

Disponível em

<http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/219> Acesso em: 01 de novembro de 2012.

TERRA TECNOLOGIA. Erro de programação inofensivo vira ameaça à segurança. Disponível em: <http://tecnologia.terra.com.br/ interna/0,,OI1790208-EI4805,00.html> Acesso em: 15 de Outubro de 2012.

TI EXAMES. Curso preparatório para o exame ISO/IEC 27002 FOUDATION, 2011.

XAVIER, Herberth. Furto na Petrobrás traz à tona espionagem industrial. 2008. Disponível em:

<http://www.abin.gov.br/modules/articles/article.php?id=2008> Acesso em: 15 de Outubro de

TECHOJE.

Planos

de

Contingência

em

TI.

2012.

WIKIPEDIA, Hardening, Disponível em: <http://pt.wikipedia.org/wiki/Hardening> Acesso em :

30 de Outubro de 2012.

66

ANAIS ELETRÔNICOS V ENUCOMP

Desenvolvimento Web com Framework Primefaces

Jailson Nunes Leocadio, Roniere da Silva Sousa e Evaldo Sávio Silva Araújo da Costa

Abstract

This chapter describes the contents discussed in short course about Web Applications Development using the framework Primefaces. To this, it is presented a theoretical context of the technologies used for the construction of systems in order to situate and connect the roles in development. Understanding the characteristics of JavaServer Faces provides a deeper understanding of how Primefaces components work and how is their communication with each other and with the application logic. It is presented the set of elements of the JSF libraries, HTML and Primefaces.

Resumo

Este capítulo descreve os conteúdos discutidos em minicurso sobre o Desenvolvimento de Aplicações Web com utilização do framework Primefaces. Para isso, é feito a contextualização teórica das tecnologias empregadas para a construção dos sistemas, no sentido de situar e relacionar o papel de cada uma no desenvolvimento. Compreender as características do JavaServer Faces possibilita entender mais profundamente como funcionam os componentes do Primefaces e como se dá a comunicação deles entre si e com a lógica da aplicação. Apresenta- se o conjunto de elementos das bibliotecas JSF, HTML e do Primefaces.

4.1. Aplicações web

As aplicações web surgiram e agregaram benefícios sobre os modelos de sistemas até então existentes. Isso ocorreu devido ao estabelecimento da rede mundial de computadores e do grande fluxo de informações que constantemente flui dentro das organizações, e entre as instituições e as pessoas. Esse tipo de aplicação, geralmente, implementa características de dinamismo, rapidez, disponibilidade, atualização e portabilidade, que são propriedades necessárias para sobreviver frente ao mercado e ao modelo social atual. Por isso, as experiências na utilização de tecnologias de desenvolvimento, levam à criação de modelos e padrões que agregam as melhores práticas e tecnologias que proporcionam a concepção de produtos que atendam a todas essas demandas de forma simples e segura.

4.2. O Primefaces como uma extensão do JavaServer Faces

O framework open-source Primefaces corresponde a uma biblioteca de componentes UI (User Interface) que extende os componentes nativos do JavaServer Faces (JSF). Sendo assim, compreender as características e o modo de funcionamento de uma aplicação desenvolvida em JSF corresponde em conhecer também a dinâmica do Primefaces. Nos tópicos a seguir, será visto importantes tecnologias

67

ANAIS ELETRÔNICOS V ENUCOMP

que tornam possível o desenvolvimento de aplicações web com Java, e como elas trabalham em conjunto com o framework de visão aqui em estudo.

4.2.1. JavaServer Faces

Mantido pelo comitê JCP (Java Community Process) com o Java Specification Request (JSR 314), o JavaServer Faces é uma tecnologia que se apresenta no formato de um framework, utiliza o padrão de arquitetura MVC para o desenvolvimento de aplicações web em Java e emprega um modelo de interfaces gráficas baseado em eventos. Divulgado inicialmente em 2004, atualmente está em sua versão 2.

Ele possui dois grupos de componentes: a primeira são as Java APIs que modelam e definem os componentes UI; a segunda são as taglibs JSP que realiza a representação dos componentes em uma página JSP e também a conexão dos objetos no backend da aplicação. A API é ainda responsável pela manipulação dos componentes e seu ciclo de vida (estados), handle-event, validação server-side, conversão de dados, acessibilidade, além do suporte a internacionalização.

De acordo com diversos autores [Marafon 2006], [Rossi 2012], utilizar o padrão JSF proporciona diversos ganhos no desenvolvimento de aplicações web, dentre esses benefícios, cita-se: reusabilidade de componentes nas páginas, possibilidade de extensão pela utilização de bibliotecas de terceiros, a existência de IDEs e plugins adaptados para o desenvolvimento de sistemas que utilizam o framework; facilidade de construção de novos componentes, entre outros.

A primeira proposta de especificação para o JSF propõe oito principais metas:

Criar um framework de componentes GUI (Graphical User Interface) padrão que pode ser aproveitado para a criação de ferramentas de desenvolvimento, que permitam criar interfaces

gráficas de alta qualidade e gerenciar as conexões entre os componentes e o comportamento da

aplicação;

Definir um conjunto de classes base simples para os componentes GUI, estados dos

componentes, e eventos de entrada. Estas classes controlarão o ciclo de vida dos componentes

e a persistência de dados referentes a eles;

Fornecer um conjunto de componentes comuns, incluindo elementos padrão HTML de entradas de formulário. Eles serão derivados do conjunto das classes bases (item 1) e poderão ser usados para definir novos componentes;

Fornecer um modelo JavaBeans para emitir os eventos acionados no lado do cliente para a aplicação no lado do servidor, onde ocorre o controle do comportamento da aplicação;

Definir API's para validação de dados de entrada, incluindo suporte para a validação no lado do

cliente;

Especificar um modelo de internacionalização e localização dos componentes.

Gerar automaticamente saídas apropriadas para o cliente, de acordo com os dados disponíveis de configuração, como versão do navegador e etc.;

68

ANAIS ELETRÔNICOS V ENUCOMP

Gerar automaticamente saídas que contenham suporte de acessibilidade, como definido pela WAI (Web Accessibility Iniciative).

4.2.2. Padrão de Arquitetura MVC

O padrão de arquitetura MVC (Model, View e Controller) permite a separação entre a lógica de negócio

e as interfaces de visualização, pela divisão do sistema em três partes com responsabilidades distintas. Essas são denominadas de modelo, visão e controle.

O modelo é responsável por representar os dados, manter o estado da aplicação pela definição

dos dados armazenados e fornecer o acesso às informações quando necessário. A visualização é responsável por exibir as informações vindas do modelo e por captar e enviar aos controles, as ações dos usuários sobre os dados apresentados. O controle faz a ligação entre a visão e os modelos, acionando um ou outro, de acordo com as requisições recebidas. Essa interação produz modificações no

estado do sistema que então provoca respostas diferenciadas ao cliente.

Ao dividir em grupos as diversas tarefas de um sistema, o padrão MVC faz com que a aplicação passe a ter uma arquitetura onde a interface pode ser modificada sem preocupações com alterações na

camada de lógica do negócio [Engholm Júnior 2010]. A Figura 4.1 [Algaworks 2010], logo abaixo, mostra

a interação entre os componentes do MVC, nela é possível perceber como os componentes interagem para montar a dinâmica de funcionamento das aplicações que implementam esse padrão.

funcionamento das aplicações que implementam esse padrão. Figura 4.1 Arquitetura do JavaServer Faces baseada no MVC

Figura 4.1 Arquitetura do JavaServer Faces baseada no MVC

Em JSF, a camada de controle é composta por alguns elementos distintos. O servlet chamado de FacesServlet é quem recepciona e redireciona as requisições vindas da web e é ele também que envia a resposta que será exibida pela visão; os arquivos de configuração mapeiam as ações realizadas e definem as regras de navegação; e os manipuladores de ações e observadores de eventos são quem recebem os dados vindos das interfaces, realizam o acesso ao modelo quando necessário e retornam o resultado para o FacesServlet.

Já as views são providas pelos componentes de interface do JSF, que incluem componentes de

layout desde os mais simples, até outros mais complexos. Os componentes UI possuem propriedades,

69

ANAIS ELETRÔNICOS V ENUCOMP

métodos e eventos acessíveis pelo desenvolvedor, que possibilita identificar a interação do usuário com estes componentes de interface.

4.2.3. Características de uma Aplicação Java com JSF

As aplicações Java para a web quando construída de acordo com a especificação J2EE, possui um conjunto de padrões e modelos característicos bem definidos. Na figura 4.2 [Algaworks 2010], é possível ver a forma como o JSF está relacionado com outras tecnologias na construção das aplicações dentro desse padrão.

na construção das aplicações dentro desse padrão. Figura 4.2 Arquitetura de Aplicações Java para a Web

Figura 4.2 Arquitetura de Aplicações Java para a Web

O Java Servlet é a base para as aplicações Java e são responsáveis pela recepção de requisições do cliente e envio de respostas, geralmente por meio do protocolo HTTP. Já o JavaServer Pages (JSP) pode ser compreendido como uma abstração do Java Servlet e torna possível a utilização de código Java nesses sistemas web. As páginas JSP são executadas nas views e utilizam Java do lado do servidor para a criação de conteúdo dinâmico junto com as tags HTML. O JSP não oferece nada que não possa ser criado com servlets puros, porém ele oferece a vantagem de ser facilmente codificado, facilitando assim a elaboração e manutenção de uma aplicação web [Ferreirra e Martins 2009].

Nessa estrutura, existe o ciclo de vida formal do JSF, como pode ser visualidade na Figura 4.3, [Jacobi e Fallows 2007]. Quando ocorre uma requisição, enviada pelo navegador, o Faces Servlet recepciona essa requisição e dá inicio à execução dos seis passos mostrado na imagem: Restore View (Restaurar a view), Apply Request Values (aplicar os valores do request), Process Validations (processar as validações), Update Model Values (atualizar os valores do modelo), Invoke Application (invocar a aplicação) e Render Response (renderizar a resposta).

70

ANAIS ELETRÔNICOS V ENUCOMP

ANAIS ELETRÔNICOS V ENUCOMP Figura 4.3 Ciclo de vida formal do JSF 4.2.4. Componentes Visuais A

Figura 4.3 Ciclo de vida formal do JSF

4.2.4. Componentes Visuais

A especificação do JSF fornece um conjunto de componentes básicos, incluídos em duas bibliotecas, a

HTML , que possui componentes que representam diversos elementos HTML e a biblioteca Core , que

é responsável por tarefas comuns no desenvolvimento de sistemas, como internacionalização, validação

e conversão de dados [Algaworks 2010]. A Tabelas 1 4.1 e 4.2 mostram as tags disponibilizadas pela biblioteca nativa do JSF e HTML, respectivamente, além de uma descrição das mesmas.

Tabela 4.1 Tags nativas na biblioteca JSF.

Tag

Descrição

f:actionListener

Registra uma instância de javax.faces.event.ActionListener junto a um componente

f:ajax

Fornece recurso Ajax de forma padrão

f:attribute

Define o valor de um atributo no componente

f:convertDateTime

Converte datas e possui um conjunto de opções

f:convertNumber

Registra uma instância de NumberConverter

f:converter

Registra uma instância de Converter

f:event

Define o tipo de evento, por exemplo, para chamada de funções Ajax

f:facet

Adiciona um facet a um componente

f:loadBundle

Carrega um pacote de recursos de acordo com o local vigente

f:metadata

Engloba as tags f:viewParam

f:param

Configura um parâmetro para o componente associado

1 http://www.jsftoolbox.com/documentation/help/12-TagReference/

71

ANAIS ELETRÔNICOS V ENUCOMP

f:phaseListener

Adiciona um ouvidor de fases a um componente

f:selectItem

Adiciona um componente filho UISelect para o componente associado

f:selectItems

Adiciona um componente filho UISelectItems para o componente associado

f:setPropertyActionListener

Registrar uma instância de ActionListener no componente relacionado

f:subview

Cria um componente container que terá todo o core JSF e as tags aninhadas via “jsp:include” ou outra tag dinâmica

f:validateBean

Utilizado para validações de acordo com as definições do Bean

f:validateDoubleRange

Registra uma instância de DoubleRangeValidator no componente associado

f:validateLength

Registra uma instância de a LengthValidator no componente associado

f:validateLongRange

Registra uma instância de LongRangeValidator no componente associado

f:validateRegex

Valida expressões regulares

f:validateRequired

Define componente como requerido

f:validator

Registra uma instância de Validator instance no componente associado

f:valueChangeListener

Registra uma instância de ValueChangeListener no componente associado

f:verbatim

Cria um componente output como um filho do componente associado

f:view

A tag View tag é o container para todo componente JavaServer Faces usado na página

f:viewParam

Uso para URL

Tabela 4.2 Tags nativas na biblioteca JSF HTML.

Tag

Descrição

h:body

Renderiza um element Body do HTML

h:button

Renderiza um Button

h:column

Renderiza uma coluna dentro de um componente data table

h:commandButton

Renderiza um button que pode está associado a um backing bean ou a uma classe ActionListener

h:commandLink

Renderiza um link HTML

h:dataTable

Cria uma data table

h:form

Renderiza um elemento tipo form

72

ANAIS ELETRÔNICOS V ENUCOMP

h:graphicImage

Renderiza uma tag de imagem em HTML

h:head

Renderiza um elemento head

h:inputHidden

Renderiza um elemento input do tipo "hidden".

h:inputSecret

Cria um elemento input do tipo "password".

h:inputText

Cria um elemento input do tipo "text".

h:inputTextarea

Cria um elemento input do tipo "textarea"

h:link

Configura links

h:message

Renderiza mensagens específicas para um determinado componente

h:messages

Renderiza todas as mensagens para a view atual

h:outputFormat

Cria um elemento para exibição de texto

h:outputLabel

Renderiza um elemento "label"

h:outputLink

Renderiza um elemento link HTML que possua o atributo "href"

h:outputScript

Renderiza a tag HTML <script/>, que trás um JavaScript existente na biblioteca JSF 2.0

h:outputStylesheet

Definite arquivos de layout CSS

h:outputText

Tag básica para textos

h:panelGrid

Renderiza um panelGrid compatível com a tabela do HTML4

h:panelGroup

Container de componentes

h:selectBooleanCheckbox

Cria um elemento input do tipo "checkbox".

h:selectManyCheckbox

Cria uma lista de checkboxes.

h:selectManyListbox

Cria um “select” list

h:selectManyMenu

Cria um elemento "select” com múltiplos atributos

h:selectOneListbox

Renderiza um elemento HTML "select" de qualquer tamanho sem atributo "multiple"

h:selectOneMenu

Cria um elemento do tipo Select One Menu

h:selectOneRadio

Cria um elemento do tipo Select One Radio

4.3. Persistência com JPA

73

ANAIS ELETRÔNICOS V ENUCOMP

A JPA (Java Persistence API) é uma especificação que padroniza as ferramentas ORM (Object Relational

Mapper) para os sistemas desenvolvidos em Java. As ferramentas ORM fazem o mapeamento e transição automática de dados entre os paradigmas relacional e orientado a objetos (OO). Isso é necessário, tendo em vista que as aplicações Java são construídas seguindo as regras de OO e os SGDB s geralmente são organizados de acordo com o modelo relacional.

Dentre as implementações de JPA, destaca-se o Hibernate que é o mais utilizado para esse propósito; mas existem outras implementações como o EclipseLink e OpenJPA. As ferramentas que seguem as regras da JPA caracterizam-se por serem independentes de linguagem SQL, resultando num baixo acoplamento entre aplicação e os Sistemas Gerenciadores de Banco de Dados (SGDB).

4.4. Manipulação de Dados com JPQL

A Java Persistence Query Language (JPQL) é uma linguagem de consulta ORM que permite a realização

de consultas sobre classes e objetos. A linguagem suporta consultas de campos individuais de uma entidade e operações como update e delete, subqueries, join, group by, e having. A linguagem é uma extensão da EJB Query Language (EJB QL), e inclui outras funcionalidades não presentes nesta linguagem que a antecede. Todas as operações em JPQL podem ser realizadas no modo de consultas

dinâmicas ou estáticas.

4.5. Facelets

Até a versão 1.2 do JSF, existem algumas deficiências que dificultam a vida do programador de páginas, como a falta de um mecanismo para criação de templates de telas integrado ao JSF e também para criação de novos componentes visuais a partir da composição de outros componentes já existentes [Algaworks 2010], a partir disso, foi desenvolvido um framework denominado Facelets para facilitar o gerenciamento das telas criadas. Na versão 2 do JSF, o Facelets é o engine padrão que gerencia as interfaces.

Ao se utilizar Facelets, as páginas deverão ser construídas usando XHTML (eXtensible HyperText Markup Language), e não mais JSP, pois o framework possui um compilador XHTML responsável pelo gerenciamentos e reaproveitamento dos templates criados. A tag do Facelets possui as bibliotecas a seguir: component, composition, debug, decorate, define, fragment, include, insert, param, remove e repeat.

4.6. Primefaces

O Primefaces, em sua versão atual 3.4, é um framework composto por mais de 100 componentes para o

JSF, com suporte nativo a Ajax e HTML5. Possui boa documentação e ricos exemplos de códigos

disponibilizados na web para auxílio na utilização dos mesmos.

projeto Java que implemente JSF 2, é preciso fazer o download do arquivo primefaces-{version}.jar no

Para utilizar o Primefaces em um

74

ANAIS ELETRÔNICOS V ENUCOMP

site do framework, adicioná-lo ao classpath da aplicação web desejada, e importar o namespace para chamada dos componentes: xmlns:p="http://primefaces.org/ui".

A Figura 4.4 [primefaces.org], logo abaixo, mostra a codificação de alguns componentes do

Primefaces numa página web. Nela, os elementos estão definidos dentro de um formulário, que faz parte da biblioteca HTML e por isso foi definido pela tag <h:form>. Ainda há outros elementos da mesma biblioteca, são eles o panelGrid e o outputLabel. Neste código encontram-se dois elementos

simples do Primefaces: o inputText e o commandButton.

simples do Primefaces: o inputText e o commandButton. Figura 4.4 Codificação de componentes HTML e Primefaces

Figura 4.4 Codificação de componentes HTML e Primefaces

Os componentes são definidos por seus atributos configuráveis, que podem ou não está vinculado a classes Java denominadas Managed Bean, que são classes que fornecem ao desenvolvedor o acesso aos estados dos componentes na tela, ou seja, eles fazem a ligação entre interfaces gráficas e a lógica da aplicação. O resultado do código da Figura 4.4 é exibido na figura abaixo, Figura 4.5 [primefaces.org].