25 fevereiro 2010 ~ 1 Comentário

MacGyVIM

Tags: , ,


O “Vim” é um editor de texto extremamente configurável, criado para permitir a edição de forma eficiente, tornando-a produtiva e confortável. Também é uma melhoria do editor “Vi”, um tradicional programa dos sistemas Unix. Possui uma série de mudanças em relação a este último. O próprio slogan do Vim é Vi IMproved, ou seja, Vi Melhorado. O Vim é tão conhecido e respeitado entre programadores, e tão útil para programação, que muitos o consideram uma verdadeira “IDE (Integrated Development Environment, em português, Ambiente Integrado de Desenvolvimento)”.

Ele é capaz de reconhecer mais de 500 sintaxes de linguagens de programação e marcação, possui mapeamento para teclas, macros, abreviações, busca por Expressões Regulares2 , possui sistema de autocorreção, auto-identação, seleção visual, macros, seleção vertical de texto, sintaxe colorida e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como MacOS, Sun, Windows entre outras.

Se quiserem aprender mais sobre o VIM façam download do vimbook, um livo sobre o vim em português:
http://code.google.com/p/vimbook/downloads/list

Entretanto hoje estou aqui para falar sobre o arquivo vimrc, arquivo este que carrega as opções personalizadas do vim na hora da execução do mesmo. Durante uma das minhas aulas, um aluno me apresentou este arquivo personalizado e ao testar fiquei maravilhado. Dentre suas inúmeras características, eu destaco:


  • Faz busca incremental.

  • Habilita o uso do mouse (todos os modos) em terminais.

  • Habilita a numeração das linhas.

  • Utilizando a tecla F2 ele 'oculta' e F3 ele volta os comentários do arquivo atual.

  • Utilizando a tecla F4 ele alterna entre janelas sem sair do modo inserção (depois do :split).

  • Utilizando a tecla F5 ele embaralha as letras na tela e apertando F5 novamente ele volta ao normal.

  • Utilizando a tecla F6 ele procura a primeira linha vazia para começar a edição.

  • Utilizando a tecla F7 ele remove espaços redundantes no fim das linhas.

  • Utilizando a tecla F8 ele retira os ^M que ficam no final de arquivos salvos pelo windows.

  • Utilizando a tecla F9 ele cria o cabeçalho padrão para shell script.

  • Fecha automaticamente { ( [.

  • Salva os arquivos .sh com permissao de escrita.

  • Entre diversos outros.

Um verdadeira canivete para os administradores e programadores, que utilizam o VIM para editar os arquivos.

Para baixar este arquivo vimrc, bastar acessar o link abaixo.
https://docs.google.com/uc?id=0BzC6yI60arroZWE4MGZlMjctMDY5Ny00Y2Q4LThiOWMtNjc5NmNlNDJlM2Ey&export=download&hl=en_US

A partir disso, siga os seguintes passos:

- Baixe o arquivo "vimrc" no diretório "/etc/vim/"
- Renomeie o arquivo "vimrc" para "vimrc.original" (se der algum problema, você tem um backup)
- Abra e leia o arquivo "vimrc" e leia todas as funcionalidades, entre F2, F3, F4, F5, etc....
- Edite qualquer arquivo do sistema com o editor vim e se divirta. :) !!!

OBS: Este arquivo vimrc foi configurado para ser utilizado em sistemas baseados no Debian, entretanto muitas de suas opções funcionam em outras distribuição.

20 fevereiro 2010 ~ 4 Comentários

Fortalecimento de Servidores Linux

Um dos principais desafios ao instalar um servidor Linux é permitir que este permaneça seguro pelo maior tempo possível. Para tanto, é necessário conduzir a instalação de forma que se consiga reduzir ao máximo riscos em torno do servidor, sendo fundamental efetuar um planejamento de instalação diante das políticas de segurança e do gerenciamento de risco da organização.

Muitos administradores, sem experiência em segurança preparam seus servidores com uma instalação básica, importando-se apenas em colocar as aplicações funcionando. O sistema Linux quando não é devidamente configurado, torna-se tão vulnerável quanto qualquer outro sistema e é por isso que devemos ajustar as suas configurações para garantir a confidencialidade, integridade e disponibilidade de suas informações.

O Fortalecimento (Hardening) de Servidores é processo de mapeamento das ameaças, mitigação dos riscos e execução das atividades corretivas, objetivando tornar a infra-estrutura preparada para enfrentar tentativas de ataque.

Entretanto antes de pensarmos em técnicas e ferramentas para fortalecer o nosso sistema Linux é importante levar em consideração 3 fatores: segurança, risco e custo/impacto. Não é possível ter um sistema 100% seguro. Quanto mais segurança tivermos, menor será nosso risco. Em contrapartida, maior será o custo. É importante saber trabalhar com estes 3 fatores, pois não existe uma regra específica, depende de cada situação. Por isso, é extremamente importante analisar a funcionalidade de seu servidor e utilizar os procedimentos que atendam as suas necessidades. Tendo definido isso, vamos em frente.

As boa práticas de segurança em sistemas Linux começam na sua instalação (não irei me aprofundar neste assunto). É extremamente aconselhável particionar o disco e alocar os principais diretórios em partições separadas. Cada partição tem sua tabela de arquivos separada e no caso de haver problemas em alguma das partições, outras não serão afetadas.
Ainda durante a instalação, tente instalar o menor número de pacotes possível. Instale somente o sistema básico e vá alimentando-o com novos pacotes conforme a sua necessidade. Com isso você evitará a instalação de pacotes e serviços desnecessários e que podem tornar seu sistema mais vulnerável.

Após o sistema instalado, vamos realizar o seu fortalecimento, deixando-o o mais seguro possível. Abaixo irei listar 10 passos básicos que devem ser seguidos :

1º Removendo programas desnecessários

Vamos começar removendo todos os programas desnecessários, caso não tenham realizado uma instalação opt-in.

Em um sistema debian digite o comando:

$ dpkg -l | awk '{print $2, $3}' > programas_instalados.txt

Em um sistema Redhat-like, digite o comando:

$ rpm -qa > programas_instalados.txt

O dpkg é um gerenciador de pacotes para o Debian. Utilizando ele com o parâmentro -l (--list) ele irá listar todos os pacotes instalados no sistema e irá salvar o seu resultado no arquivo programas_instalados.txt. Analise o arquivo minunciosamente e remova todos os pacotes que não forem necessários para o seu trabalho, como bluetooth e impressora por exemplo.

Para remover os pacotes digite:

$ dpkg -r

Para remover os pacotes de um Redhat-like digite:

$ rpm -e

2º – Segurança em Sistemas de Arquivos

Além do particionamento do disco, o comando “mount” possui opções bem interessantes para elevar a segurança das tabelas de partições, tais como:

nosuid - Faz com que binários com permissão “suid bit” não possam utilizar esta propriedade na partição em que está definido.

noexec - Impossibilita a execução de binários ou arquivos executáveis dentro da partição na qual essa opção está ativada.

noatime - Diz para não atualizar o tempo de acesso dos inodes (melhorando a performance em partições onde há MUITO acesso a disco).

Estas opções devem ser utilizadas no arquivo “/etc/fstab”, exemplo:
/dev/hda4 /home ext3 defaults,nosuid noexec 1 2
/dev/hda5 /var/log ext3 defaults,nosuid,nodev,noexec 1 2

Vale salientar que existem outras opções do comando “mount”, consulte o “man” do comando para ver todas as opções possíveis.

3º Limitando recursos de redes do Kernel

Adicione as linhas abaixo no final do arquivo “/etc/sysctl.conf” :

# Ativa proteção contra ataques de IP Spoofing
net.ipv4.conf.all.rp_filter=1
# Desabilita pacotes roteados “na fonte”
net.ipv4.conf.all.accept_source_route=0
# Ignora mensagens ICMP de broadcast
net.ipv4.icmp_echo_ignore_broadcasts=1
# Registra todos os pacotes de origem suspeita (como pacotes forjados)
net.ipv4.conf.all.log_martians = 1

4º Gerenciando os serviços ativos do sistema

Muitos administradores, iniciantes ou até mesmo experientes, deixam de utilizar as vantagens de ferramentas clássicas do sistema para checar se o serviço está funcionando corretamente, se está sendo executado na porta certa, se está recebendo requisições inválidas ou até mesmo verificar se um invasor deixou um “backdoor” no sistema. Lembre-se que todas essas ferramentas estão ali para facilitar sua vida. Aproveite-as! Como exemplo, façamos uma varredura nos serviços em execução do sistema. No arquivo /etc/services encontra-se uma lista de portas padrão dos serviços mais conhecidos (alguns nem tanto :).

O comando “netstat” nos mostra informações sobre os serviços de redes no nosso sistema, exemplo:

$ netstat -tupan

O comando “fuser”, que faz parte do pacote psmisc, verifica cada processo(serviço) que está rodando em cada porta. Exemplo:

$ fuser -v 22/tcp
USER PID ACCESS COMMAND
22/tcp: root 5479 F.... sshd

Já o comando “lsof” nos mostra diversas informações do sistema, como usuários, arquivos, processos e conexões. Exemplo :

$ lsof


5º Desativando contas desnecessárias

Após a instalação do sistema e em atividades periódicas é interessante analisarmos todos os usuários do sistema. Alguns utilitários que instalamos adicionam usuários “padrão” no sistema, como ftp, mysql, nobody. Certifique-se de que estes usuários possuam no parâmetro “shell” caminhos para arquivos inexistentes. Na maior parte das vezes estes serviços não precisam de um interpretador shell válido, mas por serem contas válidas no sistema, podem ser utilizadas em determinados casos.

O comando “passwd -l” trava a conta de um usuário. Exemplo:

$ passwd -l # (Trava a conta do usuário)
$ passwd -u # (Destrava a conta do usuário)

6º Gerenciamento e Política de Senhas

O login.defs é um arquivo de configuração lido pelos programas login, não é parte da configuração do PAM. Porém pode auxiliar no gerenciamento do usuários e na definição de uma política de senha.

Você também pode implementar o controle de senhas pelo PAM (Módulo de autenticação plugável) com a biblioteca pam-cracklib.

Outro módulo do PAM bastante interessante é o pam-dotfile, que permite que você defina senhas diferentes, para um mesmo usuário, no serviços específicos como IMAP, SSH, FTP, entre outros.

7º Gerenciamento de Privilégios

A configuração abaixo trata a autenticação do usuário com o módulo pam_wheel.so, utilizando o grupo administradores. Com ele somente os usuários do grupo administradores poderão utilizar o comando /bin/su.

Edite o arquivo “/etc/pam.d/su e adicione a linha:
auth required pam_whell.so group=administradores

Os módulos “pam_limits.so” e “pam_time.so” também são muito úteis para gerenciar os recursos de uso e o controle de acesso ao servidor.

Obs: Tome muito cuidado ao editar esse arquivo. Erros podem impedi-lo de efetuar login no sistema! Mantenha sempre um terminal autenticado pronto para desfazer quaisquer modificações.

8º Fortalecimento do OpenSSH

O OpenSSH é uma suíte de ferramentas que provê criptografia em sessões de comunicações em uma rede de computadores usando o protocolo SSH. Ele é muito visado em ataques de “BruteForce”, portanto alguns ajustes são necessários. O SSHTest é um utilitário criado pela empresa Clavis Segurança da Informação em parceria com o GRIS (Grupo de Resposta a Incidentes de Segurança) do Departamento de Ciência da Computação da UFRJ para analisar arquivos de configuração do daemon OpenSSH, presente na maioria dos sistemas *NIX (incluindo Linux e *BSD), em busca não apenas de buracos na segurança de seu servidor como também por maneiras de melhorar a segurança do mesmo, pró-ativamente. Basta descompatar e executá-lo, e uma série de perguntas interativas serão feitas enquanto ele modifica o arquivo de configuração do servidor OpenSSH.

9º Instalação e Utilização de um IDS

É uma boa prática implantar softwares de verificação de integridade e detecção de intrusão no sistema antes do ambiente entrar em produção online.
Um sistema de detecção de intrusão baseado em redes (NIDS) é um sistema de detecção de intrusão que tenta detectar atividades maliciosas como ataques de negação de serviço e port scans monitorando o tráfego de rede. Um execelente NIDS é o Snort, uma das 5 melhores ferramentas de segurança Open-Source.
Já o sistema de detecção de intrusão baseado em Hosts (HIDS) faz analise de logs, checagem de integridade de arquivos e detecção de rootkits. Um excelente HIDS é o OSSEC, com muitas características interessantes e fácil de usar.

10º Implementação do Firewall

O Netfilter/Iptables é um excelente firewall nativo das distribuições Linux. Ele um firewall “statefull” que trabalha em nível de pacotes e realiza o controle de acesso através de regras de filtragem por, origem/destino, portas, protocolos, palavras chaves, etc. O Iptables ainda tem a vantagem de trabalhar com módulos, possibilitando a adição de mais funções a ele, ampliando ainda mais o seu poder.



Estes passos são apenas o ínicio do processo para melhorar a segurança de seu servidor. Segurança não é só a implementação, é preciso testar e avaliar se as suas configurações estão de fato protegendo o sistema. Além disso, é preciso promover a conscientização dos usuários, disseminando o que chamamos de “cultura de segurança”. Tudo isso sustentado por uma política de segurança clara e concisa, responsável pelo estabelecimento do ambiente propício à manutenção dos três pilares da S.I.: Integridade, Disponibilidade e Confidencialidade. Pois quando tratamos de segurança da informação, tecnologia não é uma panacéia.

Nos próximos artigos irei falar de outras técnicas de fortalecimento e proteção de perímetro.

Para quem deseja conhecer e se deliciar com todas as técnicas e ferramentas de proteção a servidores linux, aconselho a realizar o curso "Fortalecimento de Servidores Unix/Linux" da Clavis Segurança da Informação (vou cobrar a propaganda). Um curso bem completo, com metodologia própria e muito hand's-on, vale a pena conferir não só este como todos os outros cursos que são de altíssima qualidade.

Próximo artigo: Sistemas de Monitoramento.
Não percam. :) !!!!

Victor Santos

17 fevereiro 2010 ~ 5 Comentários

Blog Novo....

Tags:



Caros e raros leitores deste humilde blog, hoje vim aqui anunciar que estou de blog novo.
Depois de muitos contratempos e muitas mudanças, para a felicidade de vocês voltarei a postar regularmente neste meu espaço virtual, compartilhando assim não só casos e factóides de segurança, mas também sobre Linux.

Estou trabalhando agora em diversas empreitadas, com bons projetos e grandes parcerias.

Espero que vocês gostem deste novo blog e de seus posts que em breve contará com um novo integrante. Também teremos novidades como podcasts de curta duração e sortei de brindes.

Se quiserem saber mais, assine o meu RSS e fique atento.

Abs.[ ]