Categoria: Desenvolvimento

O que é Hardening

Hardening ( Técnica de blindagem de sistema ) é um processo de mapeamento das ameaças, mitigação dos riscos e execução das atividades corretivas em um sistema. Seu foco é a infraestrutura e seu objetivo é tornar um sistema mais seguro para enfrentar tentativas de ataques e invasões. Na tabela 1 a seguir apresenta-se as técnicas de Hardening mais utilizadas segundo as pesquisas realizadas. [Inframagazine 2011].

o que é Hardening

A técnica de Hardening pode ser utilizada em qualquer sistema operacional, implementando medidas e ações com o objetivo de fortalecer a segurança e proteger o sistema de possíveis invasores. A implementação das diretivas de segurança devem ser seguidas antes, durante e após a instalação e configuração do sistema operacional em uso. [Rodrigues 2008], [Inframagazine 2011].

 São boas práticas de segurança implementadas em um sistema utilizando as Técnicas de Hardening apresentadas na Tabela 1 a seguir:

Técnicas de Hardening mais utilizadas
Item Técnica [1] [2] [3] [4] Citações
1 Acesso Remoto * * * * 4
2 Adoção de Sistemas de Detecção e Prevenção de Intrusão * * 2
3 Antivírus * * * * 4
4 Ativar a instalação da (DEP) * 1
5 Atualizações e Patches * * * * 4
6 Criptografia * * * 3
7 Fechar Portas da Rede * * * * 4
8 Firewall * * * * 4
9 NetBios * * * * 4
10 Particionamento de Discos * * 2
11 Remoção de Logins e Usuários desnecessários * * * * 4
12 Remoção de Programas e Serviços desnecessários * * * * 4
13 Segurança e Auditoria de Senhas * * * * 4
14 SMB (Bloco de Mensagem de Servidor) * * 2
15 Zona Desmilitarizada – DMZ * * * * 4

Tabela 2 – Autores consultados na Pesquisa de Hardening

Legendas da Tabela: Técnicas de Hardening mais utilizadas
REFERÊNCIA FONTE
[1] Bernardo Maia Rodrigues, 2008
[2] Revista Inframagazine, 2011
[3] Guia do Hacker (Noob Saibot), 2010
[4] The Center for Internet Security, 2010

Baseado nas técnicas citadas na Tabela 1 , esse artigo aborda as 9 técnicas que tiveram 4 citações, ou seja, que os autores principais consultados na pesquisa, citam como as técnicas mais utilizadas em Hardening. As técnicas que este artigo aborda são: Acesso remoto, antivírus, atualizações e patches, fechar portas da rede, firewall, netbios, remoção de logins e usuários desnecessários, remoção de programas e serviços desnecessários e segurança e auditoria de senhas.

Quando se utiliza a técnica de Hardening existem três grandezas que devem ser consideradas e analisadas: a segurança, os riscos e a flexibilidade do sistema. Quando essas grandezas são analisadas se definem e são aplicadas as boas práticas de segurança mais adequadas ao sistema em uso, com o objetivo de se oferecer produtividade e segurança, levando em consideração que quanto maior a segurança menor o risco e também a flexibilidade do sistema. [Inframagazine 2011].

Hardening Técnicas mais utilizadas em Ambiente Windows ( Microsoft )

Acesso Remoto

Uma conexão remota permite o acesso total a outro computador que esteja conectado à mesma rede ou à internet. Através da conexão remota é possível acessar os arquivos e usar todos os programas e recursos da rede do computador que permitiu o acesso remoto. [Windows, Microsoft  2012]. Quando se utiliza a técnica de hardening o acesso remoto deve se desabilitado dos computadores da rede, evitando que as informações sejam roubadas, eliminadas ou corrompidas por pessoas ou softwares mal intencionados. [Rodrigues 2008], [Noob Saibot].

Adoção de Sistemas de Detecção e Prevenção de Intrusão

Um sistema de detecção e prevenção de intrusão permite notificar, rastrear e identificar tentativas de ataques e invasões em um sistema. Baseado na detecção de uma tentativa de ataque ou invasão a ferramenta é acionada e toma um ação baseada na detecção do problema e conforme as configurações da ferramenta que está sendo utilizada. [COPPE/UFRJ].

Antivírus

Antivírus é um software que detecta, evita, atua, remove e neutraliza programas mal – intencionados (vírus). Os Vírus são programas desenvolvidos para interferir no comportamento do computador, gravando, corrompendo ou excluindo dados ou para se espalharem para outros computadores através da internet. A melhor forma de prevenção é a atualização do antivírus utilizado no computador constantemente; grande parte dos softwares antivírus permitem uma atualização automática, programada pelo administrador do sistema. [Windows, Microsoft  2012].

Nenhum computador está livre de ataques de vírus, algumas medidas de segurança devem ser tomadas, com o objetivo de diminuir o risco desses ataques, tais como: Treinamento e conscientização dos usuários sobre as normas de segurança da informação, não baixar arquivos de origem duvidosa na rede externa, não inserir discos inseguros nos computadores, não abrir e-mails de pessoas desconhecidas ou que venham com anexos do qual não se sabe a origem, não abrir arquivos executáveis anexados a e-mails, mesmo que venham de pessoas conhecidas, não fazer downloads de programas de sites da internet, não usar dispositivos que pertencem a empresa em computadores de segurança duvidosa. O administrador do sistema deve se manter sempre atualizado e seguir medidas de segurança com o objetivo de proteger o sistema de possíveis ameaças. Algumas medidas de segurança que o administrador deve tomar: Antivírus sempre atualizado, fazer backups periódicos, configurar os clientes de e-mail para não interpretarem HTML ou qualquer Script, configurar o Office para não executar macros sem permissão, atualizar o Office periodicamente, pois a cada dia que se passa novas falhas são descobertas e podem ser exploradas em um sistema desprevenido. [COPPE/UFRJ].

Ativar a Prevenção de Execução de Dados (DEP)

A DEP é um recurso de segurança que ajuda a proteger, evitar a perda e roubo de dados sigilosos e danos ao computador causados por vírus e outras ameaças de segurança. Monitora automaticamente todos os programas e serviços essenciais que estão sendo executados no Windows para garantir que estão usando a memória do sistema operacional com segurança, caso algum programa tente executar código da memória de maneira incorreta, a DEP fecha o programa. Se houver necessidade é possível aumentar a proteção configurando para que a DEP monitore todos os programas que estão em uso no computador ou selecionar programas e serviços que não se deseja que a DEP monitore. [Windows, Microsoft  2012].

Atualizações e Patches

Os componentes, programas e serviços instalados no sistema operacional devem ser atualizados frequentemente. O sistema operacional Windows tem um sistema automático chamado Windows Update que verifica a versão do sistema operacional atual e faz a verificação de pacotes desatualizados, apontando possíveis falhas relacionadas aos pacotes instalados, auxiliando a manter o sistema sempre atualizado, mais seguro e liberando somente atualizações de programas que o usuário tem necessidade. O Windows update não instala todas as atualizações na mesma hora, vai  instalando aos poucos, por esse motivo o computador poderá ficar vulnerável durante o tempo em que as atualizações não forem feitas. Baixar os arquivos no site e monitorar as atualizações de novos patches é uma maneira de manter seu sistema mais seguro. [Rodrigues 2008], [Noob Saibot].

A Microsoft lança a cada mês um pacote de atualizações com o objetivo de corrigir bugs, falhas de segurança e trazer outras melhorias necessárias ao sistema em uso, nos casos de falhas de segurança consideradas muito críticas os pacotes de atualizações para as devidas correções são lançados mais rapidamente. Os sistemas devem ser sempre atualizados com os últimos patches (programas criados com o objetivo de corrigir e interromper erros, problemas, bugs e vulnerabilidades identificadas nos softwares), evitando assim que usuários mal-intencionados se aproveitem das falhas recentes do sistema em uso para invadi-lo, comprometendo a segurança. É uma solução rápida e barata para promover correções, muito utilizada por empresas que não querem lançar novas versões de seus programas. [Hammerschmidt 2012], [Rodrigues 2008].

Criptografia

A criptografia permite guardar e transmitir mensagens de forma segura, garantindo a privacidade da informação. Benefícios da criptografia para a segurança da informação:

  • Integridade:  É possível ao receptor de uma mensagem verificar se esta foi alterada durante o trânsito.
  • Autenticação: É possível ao receptor de uma mensagem, verificar sua origem, um intruso não pode se fazer passar pelo remetente desta mensagem.
  • Disponibilidade: O sistema deve estar sempre pronto a responder as requisições de usuários autenticados  como legítimos pelo sistema, através de login e senha.

No Windows existe um recurso chamado Sistema de Arquivos com Criptografia (EFS), que é usado para armazenar informações no disco rígido em um formato criptografado. [COPPE/UFRJ].

Fechar Portas da Rede

Quando um sistema operacional é instalado, alguns aplicativos (serviços) abrem portas introduzindo vulnerabilidades no sistema, facilitando uma invasão através da exploração dessas portas abertas. Existe um aplicativo chamado Nmap (Network Mapper é um aplicativo livre e de código aberto, utilizado para explorar uma rede para efetuar uma auditoria de segurança), que permite que se faça uma varredura por todas as portas abertas no sistema e se possa criar com essa lista de portas abertas, regras no firewall para bloquear as portas que não devem estar disponíveis. Depois que as regras forem configuradas no firewall é importante fazer uma nova varredura e analisar se as portas abertas que poderiam colocar o sistema em risco foram fechadas. [Inframagazine 2011].

Firewall

Barreira de proteção que ajuda a controlar o tráfego de dados entre um computador ou rede onde o computador está instalado e a internet. Permite a transmissão e recepção de dados autorizados pelo administrador da rede. É considerado um ponto de conexão entre duas redes não confiáveis e permite que a comunicação entre elas seja segura e monitorada a todo momento. Como funciona o Firewall do Windows: Quando alguém utilizando a internet ou uma rede tenta se conectar ao computador, essa tentativa é chamada de pedido não solicitado, quando o firewall recebe um pedido não solicitado ele bloqueia a conexão. Quando houver necessidade do usuário executar programas de mensagens instantâneas ou utilizar a internet ou uma rede para receber informações o firewall sempre perguntará se o usuário deseja bloquear ou desbloquear esses tipos de conexão. [Souza], [Rodrigues 2008].

NetBios

O protocolo NetBios é uma interface que fornece às aplicações de uma rede, um serviço de transmissão orientada à conexão, um serviço de nomes para identificar e localizar os usuários da rede e os computadores, um serviço opcional de transmissão de datagramas não confiável e outros recursos compartilhados necessários para registrar ou resolver nomes para serem utilizados na rede. [Rodrigues 2008], [Windows, Microsoft 2012].

O Windows disponibiliza todos os seus serviços através do protocolo NetBios. Nas redes onde o Netbios é disponibilizado pelo TCP/IP, um atacante consegue verificar quais os diretórios, impressoras e pastas compartilhadas em cada computador da rede. Quando os usuários disponibilizam pastas no acesso compartilhado é mais fácil para um hacker conseguir acesso aos arquivos das pastas compartilhadas. [Windows, Microsoft 2012].

Nas aplicações onde o protocolo NetBios está ativado, algumas portas das máquinas de uma rede ficam abertas e através delas é possível invadir a rede e comprometer a segurança do sistema, as portas utilizadas pelo protocolo NetBios são as portas UDP/137, UDP/138, UDP/139. É possível desabilitar a interface NetBios porém sem esse protocolo, os serviços de nomes NetBios,  O serviço transmissão de datagramas NetBios e o serviço de seção NetBios podem ser prejudicados ou até paralisados.

  • O serviço de nomes NetBios: Permite a resolução de nomes sem usar um servidor WINS ( Serviço de cadastramento na Internet do Windows é um banco de dados distribuído, que registra e consulta mapeamentos dinâmicos de nomes NetBIOS para computadores e grupos usados em uma rede. O WINS mapeia nomes NetBIOS para endereços IP e foi desenvolvido para solucionar os problemas que aparecem na resolução de nome NetBIOS em ambientes roteados. (Microsoft, TechNet.2012).
  • O serviço transmissão de datagramas NetBios: É usado por aplicações como o serviço Mensageiro e serviço do Browser.
  • O serviço de seção NetBios: É responsável pelas transferências / impressões pela rede, e pelas aplicações remotas (Gerenciador do Servidor e o Gerenciador de Usuários).

Antes de desabilitar o NetBios, é necessário configurar o TCP/IP para usar o WINS. [Rodrigues 2008].

Particionamento de Discos

Em segurança da informação o particionamento de discos é muito importante. Quando se particiona um disco o nível de segurança aumenta no sistema, isso porque cada partição tem sua tabela de alocação de arquivos separada. [Inframagazine 2011].

Remoção de Logins e Usuários desnecessários

Após a instalação do sistema e no dia a dia é importante que o administrador da rede faça a análise de todas as contas de usuários e remova as contas desnecessárias.  Contas que não são mais utilizadas devem ser removidas para evitar que pessoas mal intencionadas utilizem essas contas para realizar atividades suspeitas ou indevidas, que comprometam a segurança da rede. A conta de usuário administrador é a conta mais visada por usuários mal intencionados e cracker, quando se consegue acesso a conta do administrador, se consegue acesso total ao sistema e rede de uma empresa. Essa conta deve conter uma senha considerada forte e só deve ser utilizada pelo administrador quando for necessário fazer configurações no sistema, em outros casos é recomendando que até mesmo o administrador use uma conta de usuário comum no sistema, para que a segurança seja garantida. [Inframagazine 2011].

Os principais motivos que levam um atacante a desenvolver e a propagar Malwares (códigos maliciosos): Obtenção de vantagens financeiras, coleta de informações confidenciais, vandalismo. Utilizar contas não administrativas garante uma proteção eficaz contra Malwares (códigos maliciosos que executam ações danosas e atividades maliciosas em um computador, quando instalados, passam a ter acesso aos dados armazenados no computador e podem executar ações em nome dos usuários, de acordo com as permissões de cada usuário. São formas dos Malwares (códigos maliciosos) infectarem ou comprometerem um computador: Exploração de vulnerabilidades existentes nos programas instalados, auto-execução de mídias removíveis infectadas (Ex:pendrives), acesso a páginas web maliciosas (utilizando navegadores vulneráveis), ação direta de atacantes (após a invasão do computador, incluem arquivos contendo códigos maliciosos), execução de arquivos infectados (Ex: anexos de mensagens eletrônicas, mídias removíveis, páginas web ou diretamente de outros computadores (através do compartilhamento de recursos). Os códigos maliciosos possibilitam a prática de golpes, a realização de ataques e a disseminação de Spam (e-mails não solicitados, que são enviados para um grande número de pessoas). A maioria das atividades diárias (navegar na Internet, ler email, mensageiros instantâneos), não necessitam de privilégios administrativos. Desse modo a conta do administrador deve ser usada somente para tarefas de manutenção, instalação e configuração do sistema, reduzindo o risco a segurança do sistema, através Malwares (códigos maliciosos). [CERT.Br. 2006].

Limitando as contas dos usuários do sistema é possível garantir uma proteção maior contra exploits (falhas), que necessitam de privilégios elevados para explorar falhas remotas. Conseguindo acesso a conta de administrador, um intruso pode:

– Instalar rootkits (programas e técnicas que permite esconder e manter a presença de um invasor ou de outro código malicioso em um computador comprometido). Os rootkits instalados comprometem a privacidade dos usuários, e podem ser reconfigurados e utilizados para esconder a presença e os arquivos inseridos por atacantes ou por outros códigos maliciosos. O conjunto de programas e técnicas dos rootkits podem: Remover evidências em arquivos de logs, instalar outros códigos maliciosos, como backdoors (para assegurar o acesso futuro ao computador infectado), esconder atividades e informações (como arquivos, diretórios, processos, chaves de registro, conexões de rede), mapear potenciais vulnerabilidades em outros computadores (por meio de varreduras na rede), capturar informações da rede onde o computador comprometido está localizado, pela interceptação de tráfego. [CERT.Br. 2006]

– Instalar keyloggers ( aplicativos ou dispositivos que ficam em execução em um determinado computador para monitorar todas as entradas do teclado, gravando tudo que é digitado. Quem deixou o programa em execução pode conferir tudo o que foi digitado durante um determinado período, como: senhas de acessos e outros dados sigilosos. Grande parte dos computadores hospeda um keylogger, porque em algum momento algum usuário abriu um arquivo que continha o programa disfarçado. Um keylogger é ocultado utilizando email ou outros tipos de conteúdos baixados da internet, essa ação é conhecida como a prática de “esconder keyloggers”. Um keyloggers pode ser utilizado por empresas para monitorar a atividade dos seus funcionários. [CERT.Br. 2006], [ Machado.TecMundo 2012].

– Instalar controles do ActiveX (programas usados na Internet para melhorar a navegação, permitindo animação ou ajudando em tarefas como a instalação de atualizações de segurança em Microsoft Update), incluindo softwares maliciosos e infectados com Spyware (software que executa determinadas ações, sem o consentimento do usuário, como: exibição de anúncios, coleta de informações pessoais e alteração de configurações do seu computador. Fazem alterações inconvenientes, causam lentidão ou pane no computador, podem alterar a página inicial, a página de busca do navegador ou adicionar componentes desnecessários ou indesejados ao navegador. Também podem dificultar a restauração das configurações originais.) e Adware (software que exibem anúncios, que rastreiam informações pessoais e confidenciais). [Microsoft 2012], [Honeycutt 2004], [CERT.Br. 2006].

– Substituir os arquivos de programas do sistema operacional com Trojans ou cavalo de tróia ( programa malicioso que entra em um computador disfarçado como um programa comum e legítimo, possibilita a abertura de uma porta de forma que usuários mal intencionados possam invadir o computador. A principal forma de propagação é pela internet, geralmente são oferecidos como ferramentas com funções úteis para os computadores. Se passa por um programa que simula alguma funcionalidade útil, mas esconde um programa que pode causar malefícios aos computadores e aos usuários, abrindo portas, possibilitando invasões ou roubando senhas de usuário.

Existem dois tipos comuns de Trojans que são: os Keyloggers (utilizados para roubar senhas) e os Backdoors (arquivos que possibilitam aberturas de portas para invasão). Os Trojans não se auto copiam e não necessitam infectar outros programas para executar suas funções, são autônomos necessitando apenas ser executados por algum usuário, se instalam com arquivos que quando apagados podem gerar perda de dados. Em muitos casos os antivírus não conseguem identificar um trojan como ameaça; uma medida de segurança eficaz é tomar cuidado com arquivos executáveis desconhecidos ou de origem duvidosa vindos de terceiros, devendo executá-los somente quando se tem certeza de sua procedência e com um antivírus instalado sempre atualizado. [CERT.Br. 2006], [ Pereira.TecMundo 2008].

– Acessar informações sensíveis das contas dos usuários do sistema.

– Desabilitar / Desinstalar antivírus e firewall.

– Cobrir os rastros apagando logs do sistema.

– Desativar o boot do sistema.

– Instalar e executar serviços considerados desnecessários ou inseguros.

– Capturar / Registrar as ações de todos os usuários do sistema.

– Se a conta de administrador for a mesma nos outros computadores da rede e da sub-rede, o intruso pode ganhar controle total ou parcial sobre a rede e os computadores configurados na mesma. [Inframagazine 2011], [CERT.Br. 2006].

Remoção de Programas e Serviços desnecessários

Desativar serviços desnecessários e inseguros é uma medida de segurança que deve ser tomada pelos administradores do sistema. Todos os serviços instalados devem ser verificados, quanto a necessidade de utilização, se não forem necessários ou considerados inseguros devem ser removidos. A desinstalação de serviços considerados desnecessários deve ser executada para evitar que possíveis vulnerabilidades sejam exploradas e o sistema venha a sofrer ameaças que afetem a segurança. Os serviços que permitem acesso remoto ao sistema são considerados inseguros e devem ser desativados, porém conforme a necessidade da rede alguns serviços não podem ser desativados, o administrador deve analisar e procurar deixar habilitados somente serviços considerados necessários ao sistema em uso. [Inframagazine 2011], [Junior 2010], [Noob Saibot].

São serviços considerados desnecessários ou inseguros no sistema operacional Windows:

– Auxiliar de netbios e o netbios (devem ser desativado para dificultar um processo de invasão remota).

– Gerenciador de conexão de acesso remoto e de acesso remoto automático.

– Serviço de área de trabalho remota e registro remoto.

[Rodrigues 2008], [Noob Saibot].

Segurança e Auditoria de Senhas

A senha deve ser única, intransferível e de propriedade de um único usuário. [Inframagazine 2011]. As medidas de segurança que devem ser tomadas com as senhas, estão definidas na norma ISO 27002 nos itens 11.2.3 e 11.3.1 ( as senhas devem ser controladas por meio de um processo de gerenciamento formal e os usuários devem ser orientados a seguir boas práticas de segurança da informação na escolha, utilização e troca de suas senhas). Para maior segurança nas senhas de usuários o administrador do sistema deve possibilitar a alteração da senha no primeiro login que o usuário fizer no sistema, orientando o usuário a não escolher senha consideradas fracas, tais como: sequências simples (ex: 123), datas de aniversário e nomes próprios, não reaproveitar senhas quando as mesmas forem expiradas e não divulgar suas senhas a terceiros. As regras para a escolha de senhas consideradas fortes devem ser levadas em consideração, tais como: estipular um número mínimo de caracteres (ex: 8 caracteres), utilizar letras minúsculas, maiúsculas, números e caracteres especiais, estabelecer a regra de alteração das senhas em um intervalo de tempo, definido pelo administrador do sistema ou pela empresa. Com essas medidas o administrador do sistema consegue impedir que pessoas mal intencionadas consigam quebrar a senha utilizando força bruta.

A ferramenta John the Ripper é capaz de avaliar se a senha dos usuários de um sistema é fraca ou não é uma ferramenta de Brute Force (força bruta, que testa combinações de senha para encontrar a resposta). Quando o administrador toma conhecimento dos usuários que utilizam senhas fracas no sistema, solicita a substituição da senha por outra que atenda a política de segurança estabelecida pela empresa, garantindo um sistema mais seguro e com menos riscos a exploração de possíveis vulnerabilidades. [Inframagazine 2011], [Rodrigues 2008].

Bloco de Mensagem de Servidor (SMB)

É um protocolo padrão da Internet, usado pelo Windows para compartilhar arquivos, impressoras, portas seriais e para se comunicar entre os computadores. Em uma rede, os servidores tornam os sistemas de arquivos e recursos disponíveis para os clientes. Os clientes fazem solicitações SMB para recursos e os servidores fornecem respostas SMB caracterizando-o como um protocolo de solicitações e respostas cliente servidor. Existe uma falha na maneira como o servidor valida os parâmetros de um pacote SMB:       Quando um sistema cliente envia um pacote SMB para o sistema do servidor, ele inclui parâmetros específicos que fornecem o servidor com um conjunto de “instruções”, o servidor não valida adequadamente o tamanho do buffer estabelecido pelo pacote, se o cliente especifica um tamanho de buffer menor do que o necessário, isso pode fazer com que o buffer seja saturado, enviando uma solicitação de pacote SMB criada para uma finalidade específica, um invasor poderia fazer com que o buffer fosse saturado. Se essa falha for explorada pode levar à corrupção de dados, falha no sistema ou permitir que um invasor execute um código de sua escolha. Um invasor precisa de uma conta de usuário válida e precisa ser autenticado pelo servidor para explorar essa falha.[Microsoft, TechNet. 2012].

O SMB trabalha junto com o NetBios, opera na porta 445, essa porta é onde se localiza o tráfego mais intenso de vírus. Quando desabilitamos oNetBios todo o tráfego que passava por ele é direcionado para o SMB, em vista disso esse serviço deve ser desabilitado para garantir a segurança do sistema. O SMB é desabilitado quando se remove os itens: Compartilhamento de Arquivos e Impressoras para Rede Microsoft ( pode ser desabilitado mesmo que exista uma rede local, desde que não seja necessário o compartilhamento de impressora e arquivos na rede) e o Cliente para Redes Microsoft ( deve ser desabilitado quando não existe uma rede local). Com a desabilitação concluída as portas TCP/445 e UDP 445 são fechadas e nenhum sistema poderá se conectar com o servidor via SMB (Bloco de Mensagem de Servidor) e consequentemente os servidores não poderão mais acessar pastas compartilhadas na rede e muitas ferramentas para gerenciamento não se conectarão aos servidores. [Rodrigues 2008].

Zona Desmilitarizada – DMZ

Uma rede nomeada DMZ é um  segmento de uma rede separado de outras redes, parcialmente protegida; são sub-redes onde se hospedam os servidores / serviços de um provedor, protegendo contra ataques da Internet utilizando um firewall. É uma segunda rede criada no firewall para hospedar apenas os serviços que serão acessíveis pela Internet, evitando que usuários anônimos entrem na rede privativa (LAN), para acessar esses serviços e coloque em risco dados particulares; proporciona uma segurança adicional entre a rede corporativa e a internet pública. Se localiza entre redes protegidas e redes desprotegidas que contenham todos os serviços e informações para clientes ou públicos. Em uma rede DMZ é possível incluir regras de acesso específico e sistemas de defesa, possibilitando a simulação de uma rede protegida e localizando possíves invasores que caiam na rede, são como armadilhas virtuais que possibilitam localizar a origem do ataque. O propósito de uma Zona Desmilitarizada (DMZ) é separar os serviços externos: HTTP e FTP da rede local, limitando os danos que uma invasão a rede local possa causar. Para atingir este propósito os computadores que fazem parte de uma rede DMZ não devem conter nenhuma forma de acesso à rede local. É necessário especificar uma faixa de endereços IP’s, ou informar diretamente os endereços das máquinas que devem ser incluídas em uma rede DMZ.

          É possível criar dois tipos de DMZ’s:

  • DMZ Interna: Só pode ser acessada pelos usuários da rede interna.
  • DMZ Externa: Pode ser acessada por qualquer usuário da internet.

Ao adicionar uma rede DMZ é utilizada uma terceira porta de interface no firewall. Com esta configuração é possível que o firewall troque dados tanto com a rede geral quanto com a máquina isolada usando Network Address Translation (NAT). [Clube do Hardware 2012].

Fonte: TCC de Kelly Nisi

Como criar seu próprio game

Tiny and Big, do estúdio alemão Black Pants, que decidiu apostar em engine própriaComo Fazer um Jogo

Provavelmente, em algum momento de devaneio ou de brilhante inspiração no chuveiro, qualquer jogador já pensou em um game ideal. Uma história empolgante, personagens fortes e bom nível de entretenimento. Por que então não colocar a mão na massa e torná-lo real? A seguir vamos percorrer os elementos básicos na jornada de se tornar um desenvolvedor independente.

O primeiro passo: identificar sua habilidade

Mais que uma grande ideia, o desenvolvimento de qualquer game geralmente respeita sete grandes etapas: design do jogo, programação, design de níveis, arte e animação, áudio e música, narrativa e negócio.

É difícil pensar que algo tão empolgante e explosivo como um game respeite essa ordem de produção quase industrial, mas, na maioria das desenvolvedoras de grande e médio porte, as etapas são muito bem respeitadas. “Geralmente um estúdio gasta um grande esforço na engine, no código e jogabilidade. Quando chega a hora da narrativa, apela para um grande artista gráfico para juntar todos os elementos necessários da história com animações”, diz Talita Goldstein, brasileira e produtora da Minority, do game Papo & Yo.

Se ao ler os termos “engine”, “jogabilidade” e “código” formou-se um nó em seu cérebro, provavelmente será necessário avançar em leitura e pesquisa para se familiarizar um pouco com os bastidores dos jogos. Atualmente, grandes games são produzidos utilizando kits de desenvolvimento, como Unity 3D, UDK (dos responsáveis pelo game Unreal) e Cryengine (da Crytek, do game Crysis). Esses kits criam toda a ambientação básica de programação e são como o esqueleto ou a infraestrutura do jogo. Através deles é possível desenvolver um game e migrá-lo automaticamente para várias plataformas (com os devidos custos).

Além da vantagem de driblar as dificuldades iniciais de programação, os kits possuem uma grande comunidade de desenvolvedores, com tutoriais, aulas e complementos para tornar a vida do designer bem mais simples. Outro incentivo, como no Unity 3D, é o custo zero. A solução é gratuita para os desenvolvedores independentes e, dependendo do tamanho do projeto, os custos de migração de plataforma não são tão altos.

Por outro lado, se desenvolver toda essa estrutura faz parte do seu objetivo como programador, é possível começar praticamente do zero, seja seu game feito em flash, Java ou C#. Aqui o válido é não complicar. Escolha a linguagem de maior familiaridade e veja o que é possível fazer com ela.

Desenvolver uma engine própria pode trazer bons resultados. Essa foi a aposta do estúdio Black Pants, que apresentou o curioso Tiny and Big no festival independente BIG, em São Paulo.  “Fizemos tudo do zero. Desde a engine até a arte final. Ninguém do time tinha trabalhado com games. Se soubéssemos o quão difícil, teríamos optado por Unity 3D ou outro caminho menos problemático”, confessa o alemão Florian Grolic, responsável pelo design do game.

Para todos os efeitos, Florian explica que não basta ser um cara com uma ideia, é preciso ser “corajoso e identificar qual sua ambição, seu desejo e perseguir seu sonho”.

Parcerias fundamentais

Não há como escapar. Sem uma grande compreensão de programação, dificilmente um game sairá do papel. A não ser que você seja um gênio computacional e ao mesmo tempo criativo, será necessário buscar apoio em outras pessoas. O crucial para um time é que ele seja complementar. “Também é importante encontrar pessoas que você se dê bem em relação ao trabalho. Buscar amigos pode ser um erro, pois normalmente acontecem frustrações pelo caminho e discussões são inevitáveis”, diz Grolic.

Por outro lado, é preciso encontrar uma sintonia. Em geral, ela surge da familiaridade de cada um com o projeto, ou mesmo de valores fundamentais. “Na Minority todos compartilham seus esforços. Mesmo com 15 funcionários e propostas de crescimento, não abandonamos nosso funcionamento indie. Isso é o que nos faz trabalhar com prazer”, comenta Talia.

Outro ponto importante é o custo. É provável que um primeiro game não vá consumir mais poder de processamento que o seu próprio PC de casa, principalmente se você trilhar por um caminho mais simples – como desenvolver um game para web em Flash ou mesmo algo mais simples para smartphones.

Quando as proporções são ampliadas, mais dinheiro vai ser necessário. Se o seu projeto é genial, um ótimo time foi escalado e tudo está funcionando como deveria, mas, faltam aqueles dólares para desenvolver mais os personagens ou mesmo migrar a plataforma, chegou o momento de caçar um investidor. Nem sempre um programador é um bom marqueteiro. Nesses casos, é importante ter um bom porta-voz, em especial na hora de apresentar seu game para um possível investidor.

Buscando formação

Com um número já interessante de faculdades de desenvolvimento de games, o Brasil está se tornando um território promissor. Cursos de games, como o da Fascisa, em Campina Grande (PB), estão surgindo com projetos recheados de cultura local, inovação e qualidade técnica.

Se desenvolver games é sua paixão – e, depois de um test drive de maneira independente, você acha que leva jeito – analisar os cursos e seus programas de ensino pode ajudar a sanar deficiências conceituais, de programação, modelagem e outras.

Código de Ética e Práticas Profissionais de Engenharia de Software

Princípio 1º: Público

Engenheiros de software devem atuar consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 1.01.   Aceitar total responsabilidade pelo seu próprio trabalho. 1.02.   Moderar os interesses do engenheiro  de software, do empregado, do cliente, e dos usuários, com o bem público. 1.03.   Aprovar software somente se o mesmo estiver absolutamente convicto que seja seguro, de acordo com suas especificações, passe nos testes apropriados, e não diminua a qualidade de vida, diminua a privacidade, ou prejudique o meio ambiente. O efeito final do trabalho deve ser pelo bem público. 1.04.   Esclarecer para as pessoas ou autoridades apropriadas qualquer perigo real ou potencial ao usuário, ao público, ou ao meio ambiente, que se creia esteja associado ao software ou documentos relacionados. 1.05.   Cooperar com os esforços para enviar desculpas a prejuízos graves causados ao público por software, sua instalação, manutenção, suporte, ou documentação. 1.06.   Ser justo e evitar obter vantagens em todos os assuntos, particularmente os públicos, referentes a software ou documentos relacionados, métodos e ferramentas. 1.07.   Considere questões de falta de habilidade física, alocação de recursos, desvantagens econômicas e outros fatores que podem diminuir ao acesso aos benefícios do software. 1.08.   Seja encorajado a participar voluntariamente de tarefas por boas causas e para contribuir com a educação pública a favor da disciplina.

 

http://igti.com.br/blog/wp-content/uploads/2017/08/iStock-514570298-1500x500.jpg

 

Princípio 2º:  Cliente e Empregado

Engenheiros de software devem atuar de um modo que atenda os melhores interesses de seu cliente e empregado, consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 2.01.    Prover trabalho nas suas áreas de competência, sendo honestos e transparentes sobre qualquer limitação sobre sua experiência e educação. 2.02.    Não utilizar software conscientemente que tenha sido obtido ou retido de modo ilegal ou antiético. 2.03.    Usar a propriedade do cliente ou do empregado somente nos modos em que esteja autorizado, e com o conhecimento e consentimento do empregado. 2.04.    Estar certo de que qualquer documento sobre o qual se dependa esteja aprovado, quando necessário, por alguém autorizado pela sua aprovação. 2.05.    Manter em segredo qualquer informação confidencial obtida no seu trabalho profissional, contanto que tal confidencialidade esteja consistente com os interesses públicos e consistentes com a lei. 2.06.    Identificar, documentar, coletar evidências, e reportar ao cliente ou ao empregador, prontamente se, na opinião dos mesmos, um projeto esteja a ponto de falhar, de se provar muito caro, violar a lei de propriedade intelectual, ou problemático em qualquer outro ponto de vista. 2.07.   Identificar, documentar, e reportar assuntos significativos de interesse social, dos quais esteja alertado, em software ou documentos relacionados, ao empregador ou ao cliente. 2.08.    Não aceitar trabalho externo em detrimento ao trabalho executado ao seu empregador primário. 2.09.    Não promover interesses adversos ao seu empregador ou ao seu cliente, a não ser que um interesse de valor ético maior esteja sendo compromissado; neste caso, informe ao empregador ou a outra autoridade apropriada sobre o envolvimento ético.

Princípio 3º:  Produto

Engenheiros de software devem assegurar que seus produtos e modificações relacionadas estejam de acordo com os maiores padrões profissionais possíveis. Em particular, engenheiros de software devem, apropriadamente: 3.01.  Comprometer com a alta qualidade, custos aceitáveis, e uma seqüência de atendimento racional, assegurando que os acordos entre as partes estejam claros e sejam aceitos pelo empregado e pelo cliente, e estejam disponíveis para avaliação do usuário e do público. 3.02.  Assegurar metas e objetivos apropriados, para cada projeto em que se trabalha ou se efetue proposta. 3.03.  Identificar, definir e objetivar assuntos éticos, econômicos, culturais, legais e de meio ambiente, relativos a projetos de trabalho. 3.04.  Assegurar que estejam qualificados para qualquer projeto em que trabalhem ou se proponham trabalhar, por uma combinação apropriada de educação, treinamento e experiência. 3.05.  Assegurar que um método apropriado é utilizado para qualquer projeto no qual trabalhem ou se proponham trabalhar. 3.06.  Trabalhar para acompanhar padrões profissionais, quando disponíveis, que sejam mais apropriados para as tarefas à mão, afastando-se deles somente quando houver justificativa ética ou técnica. 3.07.  Comprometer-se para entender completamente as especificações do software no qual estão trabalhando. 3.08.  Assegurar que as especificações para o software no qual esteja trabalhando tenha sido bem documentado, satisfazendo os requerimentos dos usuários e tenham as aprovações apropriadas. 3.09.  Assegurar estimativas quantitativas realistas de custos, atendimento, pessoas, qualidade, e saídas de cada projeto em que se trabalha ou propõem trabalhar e prover transparência ao acesso a estas estimativas. 3.10.  Assegurar adequados testes, depuração e revisões do software e documentos relacionados em que se trabalha. 3.11.  Assegurar documentação adequada, incluindo problemas significativos descobertos e soluções adotadas, para qualquer projeto em que se trabalha. 3.12.  Trabalhar para desenvolver software e documentos relacionados que respeitem a privacidade de todos que possam ser afetados pelo software. 3.13.  Ser cuidadoso para usar somente dados precisos derivados por significados éticos e legais, e usá-los somente de modo apropriadamente autorizado. 3.14.  Manter a integridade dos dados, sendo sensível a dados com ocorrências vencidas ou erradas. 3.15.  Tratar todas as formas de manutenção de software com o mesmo profissionalismo de um novo desenvolvimento.

Princípio 4º:  Julgamento

Engenheiros de software devem manter integridade e independência nos seus julgamentos profissionais. Em particular, engenheiros de software devem, apropriadamente: 4.01.  Ponderar todos os julgamentos técnicos pela necessidade de suportar e manter valores humanos. 4.02.  Somente endossar documentos preparados sob sua supervisão ou por suas áreas de competência e com os quais estejam de acordo. 4.03.  Manter objetividade profissional com respeito a qualquer software ou documento relacionado que seja chamado a avaliar. 4.04.  Não se envolver em práticas financeiras enganadoras como subornos, duplo faturamento ou outras práticas financeiras impróprias. 4.05.  Divulgar para todas as partes envolvidas aqueles conflitos de interesses dos quais não se possa racionalmente sair ou que não possam ser evitados. 4.06.  Recusar participar, como um membro ou orientador, em grupo profissional, privado ou governamental em assuntos relativos a software em que seus empregados, ou seus clientes tenham conflitos de interesses em potencial.

Princípio 5º:  Administração

Administradores e líderes de engenheiros de software devem creditar e promover uma postura ética no gerenciamento do desenvolvimento e manutenção de software. Em particular, estes gerentes ou líderes de engenheiros de software devem, apropriadamente: 5.01.  Assegurar o bom gerenciamento para qualquer projeto no qual trabalhe, incluindo procedimentos efetivos para promover a qualidade e reduzir o risco. 5.02.  Assegurar que engenheiros de software sejam informados dos padrões antes de serem responsabilizados pelos mesmos. 5.03.  Assegurar que engenheiros de software conheçam as políticas de emprego e procedimentos para proteção de senhas, arquivos e informações que são confidenciais ao empregado ou confidenciais a outros. 5.04.  Determinar trabalho somente depois de ter levado em conta apropriadas contribuições de educação e experiência, equilibradas com o desejo de promover mais educação e experiência. 5.05.  Assegurar estimativas quantitativas realistas de custo, tempo de atendimento, pessoas, qualidade e saídas em qualquer projeto no qual se trabalhe ou se proponha trabalhar, e prover transparência ao acesso a estas estimativas. 5.06.  Atrair engenheiros de software potenciais somente pela completa e precisa descrição das condições do emprego. 5.07.  Oferecer remuneração justa e racional. 5.08.  Não prejudicar injustamente alguém de obter uma posição para a qual a pessoa esteja perfeitamente qualificada. 5.09.  Assegurar que haja concordância racional sobre a criação de qualquer software, processo, pesquisa, escrita, ou outra propriedade intelectual para a qual um engenheiro de software tenha contribuído. 5.10.  Prover condições para ouvir acusações de violação de uma política ou deste código pelo empregado. 5.11.  Não pedir a nenhum engenheiro de software para fazer nada inconsistente com este Código. 5.12.  Não punir ninguém por expressar opiniões éticas sobre um projeto.

Princípio 6º:  Profissão

Engenheiros de software devem desenvolver a integridade e reputação da profissão consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 6.01.  Ajudar a desenvolver um ambiente organizacional favorável a agir eticamente. 6.02.  Promover conhecimento público de engenharia de software. 6.03.  Estender conhecimento de engenharia de software pela participação apropriada em organizações profissionais, encontros e publicações. 6.04.  Suportar, como membro de uma profissão, outros engenheiros de software empenhados em seguir este Código. 6.05.  Não promover seu interesse próprio em detrimento da profissão, cliente ou empregado. 6.06.  Obedecer todas as leis que governam seu trabalho, a não ser, em circunstâncias excepcionais, que seu cumprimento seja inconsistente com o interesse público. 6.07.  Ser preciso ao descrever as características do software no qual se trabalha, evitando não somente assertivas falsas, mas também assertivas que podem ser racionalmente percebidas como especulativas, vagas, enganadoras, imprecisas ou falsas. 6.08.  Assumir responsabilidade na detecção, correção e reporte de erros em software e documentação associada nos quais esteja trabalhando. 6.09.  Assegurar que clientes, empregados e supervisores conheçam a concordância dos engenheiros de software a este Código de Ética, e as subseqüentes ramificações de tal concordância. 6.10.  Evitar associações com negócios e organizações que estejam em conflito com este Código. 6.11.  Reconhecer que violações deste Código são inconsistentes com a profissão de engenheiro de software. 6.12.  Expressar opiniões às pessoas envolvidas quando violações significativas a este Código são detectadas, a não ser que seja impossível, contra-producente ou perigoso. 6.13.  Reportar violações significativas deste Código a autoridades apropriadas quando está claro que a consulta a pessoas envolvidas nestas significativas violações seja impossível, contraproducente ou perigosa.

Princípio 7º:  Coleguismo

Engenheiros de software devem ser justos e dar suporte aos seus colegas. Em particular, engenheiros de software devem, apropriadamente: 7.01.  Encorajar colegas a aderirem a este Código. 7.02.  Assessorar colegas no seu desenvolvimento profissional. 7.03.  Creditar amplamente o trabalho de outros e evitar aceitar créditos não merecidos. 7.04.  Revisar o trabalho de outros de uma forma objetiva, cândida e de modo apropriadamente documentado. 7.05.  Ouvir de modo justo, opiniões, assertivas ou reclamações de colegas. 7.06.  Ajudar colegas em estarem totalmente a par das atuais práticas de trabalho incluindo políticas e procedimentos de proteção com senhas, arquivos e outras informações confidenciais, e medidas de segurança em geral. 7.07.  Não interferir injustamente na carreira de nenhum empregado; entretanto, consideração pelo empregado, pelo cliente, ou pelos interesses públicos incentivarão engenheiros de software, em boa fé, a questionar a competência de um colega. 7.08.  Em situações fora de suas próprias áreas de competência, buscar por opiniões de outros profissionais que tenham competência nestas áreas.

Princípio 8º:  Indivíduo

Engenheiros de software devem participar de aprendizado por toda sua vida otimizando a prática da sua profissão e devem promover uma abordagem ética da profissão. Em particular, engenheiros de software devem continuamente se esforçar por: 8.01.  Evoluir seus conhecimentos em desenvolvimentos de análise, especificação, projeto, desenvolvimento, manutenção e teste de software a documentação relacionada, junto com o gerenciamento do processo. 8.02.  Melhorar sua habilidade para criar software de qualidade, seguro, confiável, e útil por custos racionais em tempo racional. 8.03.  Melhorar sua habilidade para produzir documentação precisa, informativa e bem escrita. 8.04.  Melhorar seu entendimento sobre software e documentos relativos ao trabalho em que trabalha, e do ambiente em que será usado. 8.05.  Melhorar seu conhecimento de padrões relevantes e leis que governam o software e a documentação relacionada em que trabalha. 8.06.  Melhorar seu conhecimento deste Código, sua interpretação, e sua aplicação no seu trabalho. 8.07.  Não dar tratamento injusto a ninguém por causa de alguma acusação irrelevante. 8.08.  Não influenciar outros a tomarem nenhuma ação que envolva uma quebra deste Código. 8.09.  Reconhecer que as violações pessoais deste Código são inconsistentes com um profissional de engenharia de software.