de administração de servidores. Sua estrutura geral e seu funcionamento são diferentes dos sistemas operacionais da Microsoft. Isso ocorre porque o mundo Unix recebeu influências nas fases de projeto e de execução. De certa forma, podemos ver claramente a “filosofia Unix” no design do GNU/Linux. Para algumas pessoas, essa diferença em relação ao mundo do Microsoft Windows pode ser bastante assustadora, mas não precisamos pensar assim. Uma vez compreendidos alguns conceitos básicos, é possível verificarmos que a administração de servidores GNU/Linux envolve o mesmo grau de dificuldade que o de máquinas que usam o Microsoft Windows. De certa forma, os desafios e os objetivos são também muito similares. Tendo em mente esses aspectos, no final deste livro-texto exporemos diversos aspectos da administração de máquinas no mundo GNU/Linux. Veremos um pouco do seu histórico e aprenderemos a fazer a instalação de uma distribuição. No mundo GNU/Linux, assim como no mundo Unix, muitos programas são configurados utilizando arquivos de texto. Isso significa que o administrador de sistemas passa uma quantidade considerável de tempo editando esses arquivos. É fundamental que o administrador conheça bem um editor de texto para que tal processo de edição seja feito da forma mais rápida possível. Nesse sentido, apresentaremos o editor de texto Vim, uma evolução do Vi, que é extremamente comum no mundo GNU/Linux. A administração de máquinas GNU/Linux é feita, principalmente, utilizando-se a linha de comando, ou seja, usando-se o terminal. Isso é outra tradição vinda do mundo Unix. É importante que o administrador de sistemas esteja familiarizado com a utilização de ferramentas que executam apenas no terminal, dada sua ampla disponibilidade e seu largo emprego. 11 Aliás, a utilização de ferramentas via linha de comando permite que seja realizado um item importante para a administração de servidores: a automação de tarefas via scripts. Assim, em vez de digitarmos longas e repetidas sequências de comandos, podemos criar scripts que as executam automaticamente, inclusive em horários determinados. Abordaremos a questão dos malwares e as diversas maneiras como sistemas de segurança são implementados em servidores. Observe que alguns desses aspectos estão relacionados ao projeto do sistema operacional; outros, à sua implementação; e outros, à sua configuração e ao seu uso. Veremos que a questão da segurança envolve muitos fatores, nem todos eles de natureza técnica. Dessa forma, contemplaremos variada gama de situações relacionadas à administração de servidores, com foco na segurança. Esperamos que o conteúdo aqui apresentado ajude o leitor com informações úteis para sua carreira, seja como administrador de servidores Microsoft Windows, seja como administrador de servidores GNU/Linux. 13 SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX) Unidade I 1 INTRODUÇÃO À PROTEÇÃO E À SEGURANÇA EM SISTEMAS OPERACIONAIS Sistemas de arquivos geralmente contêm informações valiosas para seus usuários. Portanto, a proteção dessas informações contra o uso e/ou a divulgação não autorizados é um aspecto estrutural fundamental da maioria dos sistemas de arquivos existentes e dos sistemas operacionais (SOs) contemporâneos que os empregam. Nesse sentido, neste tópico serão apresentados os conceitos de proteção e segurança de SOs e serão abordadas as ameaças às quais estão sujeitos sistemas de computação reais em operação contínua (ou quase contínua) em qualquer lugar do mundo atualmente. 1.1 Sistemas operacionais e suas formas de proteção De modo simplificado, podemos dizer que um processo é um programa em execução. É fundamental que determinado processo que execute no ambiente oferecido a ele por um sistema operacional esteja protegido das atividades de todos os outros processos também em execução no mesmo ambiente. Tal proteção requer o emprego de mecanismos que assegurem que somente processos adequadamente autorizados pelo SO possam realizar operações apenas sobre os arquivos, os trechos de memória e os demais recursos disponíveis. De acordo com Silberschatz, Galvin e Gagne (2015), a proteção diz respeito a um mecanismo destinado ao controle do acesso de programas e ao controle de processos ou de usuários aos recursos definidos por um sistema de computação. Esse mecanismo, naturalmente, deve ser implementado de forma sólida e incontornável. Além disso, tal implementação precisa ser feita de modo que haja uma forma padronizada de solicitar e conceder (ou não) o acesso apenas quando necessário, ou de suspender (ou abortar) o processo solicitante, quando não for possível conceder tal acesso. 1.1.1 Finalidades da proteção em um sistema operacional Existem vários motivos para investirmos na segurança de um sistema operacional. Um deles é proteger o sistema e garantir que ele permaneça operando de forma adequada. Outro aspecto importante nesse contexto é assegurar que o acesso e o uso da informação sejam realizados em conformidade com políticas previamente estabelecidas (SILBERSCHATZ; GALVIN; GAGNE, 2015). Nem sempre a violação de segurança acontece de modo intencional: um usuário com pouco conhecimento a respeito de um sistema computacional pode causar distúrbios se tiver permissões de 14 Unidade I manipular elevada quantidade de dados e fizer isso de maneira equivocada. É importante garantirmos que esse tipo de situação não ocorra. Um sistema orientado à proteção fornece meios para diferenciar o uso autorizado do uso não autorizado. O papel da proteção em um sistema de computação é o de fornecer um mecanismo para a imposição das políticas e das regras que governam o uso de recursos. Essas políticas e regras podem ser estabelecidas de várias maneiras: • pela introdução de itens no projeto do sistema; • pelo gerenciamento do sistema; • pelas atitudes de proteção dos usuários individuais quanto aos seus próprios arquivos e programas. Um sistema de proteção deve ter a flexibilidade necessária para permitir a imposição de uma variedade de políticas, visto que as políticas de uso de recursos podem mudar de acordo com o tempo, as peculiaridades de utilização de determinado processo ou sistema e o tipo de aplicação, por exemplo. Outro aspecto importante que devemos ter em mente, no âmbito da análise deste tópico, é a diferença conceitual existente entre mecanismo e política: • quando pensamos em um mecanismo, estamos interessados em descrever a maneira como algo é feito; • quando pensamos em uma política, estamos interessados em definir o que deve ser feito (e não em estabelecer o modo como algo é feito). Essas duas ideias, política e mecanismo, são complementares, sendo que o objetivo geral de um administrador é a definição de políticas com foco na descrição dos mecanismos, que devem apresentar flexibilidade. 1.1.2 Princípios associados à proteção no projeto de sistemas operacionais Frequentemente, um princípio geral pode ser usado em todo um projeto, e seguir esse princípio simplifica o processo de tomada de decisões e mantém o sistema como um todo consistente e de fácil entendimento. Um princípio geral essencial para a proteção, que já foi testado ao longo do tempo, é conhecido como princípio do privilégio mínimo, o qual determina que programas, usuários e subsistemas recebam apenas os privilégios necessários e suficientes para a execução de suas tarefas (SILBERSCHATZ; GALVIN; GAGNE, 2015). Podemos fazer uma analogia ilustrativa desse princípio com o caso de um faxineiro que limpa a seção de atendimento ao cliente de uma empresa e recebe um cartão de acesso para viabilizar seu trabalho. 15 SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX) É claro que, se tal cartão permite acesso apenas às dependências cuja limpeza é de responsabilidade desse funcionário, os problemas causados por sua perda, seu roubo ou sua clonagem serão bem menores do que se o acesso for dado à empresa inteira. Um sistema operacional que obedece ao princípio