PROJETO INTEGRADOR SISTEMAS OPERACIONAIS No mundo computacional um dos softwares mais importantes é o Sistema Operacional, sendo o responsável pela integração das aplicações e o hardware. Existem inúmeras aplicações desde softwares básicos como uma calculadora ou mais complexo como jogos. O sistema operacional é a base onde são implementados os serviços IP tais como DNS, DHCP, PROXY entre outros. A segurança da informação inicia na parte física onde devemos limitar o acesso físico não autorizado dos equipamentos e se estende até os mínimos detalhes dos softwares. O sistema operacional não diferente de qualquer outro software no quesito segurança é preciso ser escolhido e implementadas algumas técnicas para o aumento da segurança, tarefa conhecida como hardening. Para implementar os serviços IP desse projeto escolhemos o sistema operacional Linux devido alguns fatores tais como: - Fácil customização - Código aberto - Software gratuito - Mantido por uma comunidade internacional - Pelo fato do código ser aberto as atualizações de segurança não dependem de uma empresa - Estabilidade do sistema - Baixo consumo de recursos se devidamente configurado - Compatibilidade com os Hardwares modernos e antigos - Possibilidade de upgrades e atualizações sem necessidade de desembolsar dinheiro - Diversidade de distribuições, onde torna mais fácil achar alguma que melhor atende para o trabalho desejado Como foi dito anteriormente necessitamos escolher uma distribuição específica para o melhor desempenho dos serviços, neste projeto utilizamos o Centos 6, uma distribuição com base na distribuição RED HAT recompilada sem softwares proprietários e sem logos e afins da RED HAT, essa distribuição utiliza o Kernel 2.6. O Kernel é a base do sistema operacional, no mundo Linux existem inúmeras distribuições que trabalham com o mesmo kernel, mas cada uma possui uma particularidade em específico. O sistema de escalonamento de processos e gerenciamento de memória também foi levado em consideração para a escolha do sistema. O Kernel a cada nova versão altera alguns parâmetros e alguns modos de gerencia, veja abaixo algumas das particularidades do Kernel 2.6 com alguns comparativos com o seu principal concorrente pago Windows. Cada processo possui uma prioridade, que é recalculada dinamicamente. O escalonador entrega a CPU para o processo que possui a maior prioridade. O escalonador é preemptivo. O Linux considera dois tipos de processos: o Processos interativos (time-sharing o -Processos tempo real Para processos interativos (dentro da mesma prioridade) o algoritmo é Round Robin. Para processos de tempo real (dentro da mesma prioridade) o algoritmo pode ser: o FCFS (o processo executa até terminar ou se bloquear) o Round Robin Processos de tempo real possuem prioridade sobre os demais processos. O escalonador possui 140 níveis de prioridade (quanto menor o número, maior é a prioridade). Prioridades de 1 a 100 são para processos de tempo real; de 101 a 140 para os demais processos de usuário (interativos ou não interativos). Nos níveis de prioridade 101 a 140, os processos recebem fatias de tempo de 20 ms. Os processos de tempo real podem ser FIFO ou Round Robin, e possuem uma prioridade estática. o - Processos FIFO executam até voluntariamente liberarem a CPU (o nível de prioridade é mantido e não são preemptados). o - Processos Round Robin recebem fatias de tempo. Quando todos terminam suas fatias, é dada outra fatia e eles continuam rodando no mesmo nível de prioridade. A prioridade dos processos de usuário é a soma de sua prioridade básica (valor de seu nice) e seu bonus dinâmico, que varia de +5 a –5. O escalonador classifica os processos em interativos e não interativos, pela observação de seu comportamento. o Interativos são aqueles que ficam bloqueados por longos períodos, esperando por I/O, executam rapidamente e ficam novamente esperando por I/O. O escalonador calcula a “média de tempo bloqueado” de um processo e a utiliza para calcular o bônus do processo. A idéia é aumentar a prioridade de processos interativos (I/O bound) e diminuir a prioridade de processos não interativos (CPU bound). No Linux, as operações READ são síncronas e bloqueantes (pois existe a suposição de que o processo que executou a operação necessita dos dados para continuar), enquanto as operações WRITE são assíncronas e não bloqueantes. Por este motivo, as operações de leitura possuem prioridade em relação às operações de escrita. As requisições de E/S são ordenadas, de acordo com o cilindro a ser acessado, de forma a minimizar o deslocamento do braço do disco. Para evitar postergação indefinida, para cada requisição é atribuído um deadline de atendimento. O escalonador 2.6 implementa duas políticas: política de deadlines e política antecipatória. Agora que já foi demonstrado algumas das características do nosso sistema operacional optamos por aplicar o Hardening para mantê-lo mais seguro, algumas das tarefas e serviços que foram configurados foram: Retirada do acesso root direto pelo SSH Alteração da porta padrão do SSH Habilitado tempo máximo de inatividade no SSH Removida as permissões não necessárias a executáveis Instalação somente dos serviços a serem utilizados Utilização de senhas com no mínimo 8 caracteres composta por pelo menos 3 tipos de caracteres entre maiúsculas, minúsculas, especiais e números. Não utilização de palavras ou seqüências nas senhas Desativado usuários que não sejam necessários estar ativos Restringido acesso do servidor para IPs específicos e somente alguns usuários com acesso a gerência remota Colocada senha no GRUB Habilitado o iptables como firewall onde só foram liberadas as portas específicas dos serviços em execução Atualização de todos pacotes de segurança tanto do Sistema operacional quanto dos aplicativos e serviços utilizados. Ajustadas as permissões dos arquivos Configurado o Selinux Após o hardening do sistema operacional é necessário realizar as devidas configurações de cada serviço de acordo com as necessidades sendo interessante sempre utilizar as opções de segurança disponíveis como por exemplo ao montar um proxy utilizar criptografia nas senhas. O sistema operacional mesmo estando seguro as aplicações podem conter brexas, ou seja, antes de colocar qualquer serviço ou servidor em produção é interessante realizar um pentest para verificar se ainda existem vulnerabilidades. REFERÊNCIAS BIBLIOGRÁFICAS DE OLIVEIRA, Rômulo; ALEXANDRE, Carissimi; TOSCANI, Simão. Sistemas Operacionais. Editora: BOOKMAN COMPANHIA EDITORA LTDA ROGÉRIO MACHADO RAMOS, Antônio. Escalonador Linux Windows.. Disponível em: http://www.inf.pucrs.br/~ramos/sop_escalonadorlinuxwindows.pdf Acesso em: 15 out. 2015