Seguindo o principio do "release early, release often", estamos orgulhosos de liberar a primeira versão do HnTool, uma ferramenta cujo objetivo é fazer uma análise simples do servidor e dizer quais as falhas de segurança que existem.
Nesta primeira versão você terá:
- Suporte ao Arch Linux, CentOS, Debian, Fedora, Gentoo e Ubuntu.
- Testes para Apache, PHP, Portas, PostgreSQL, SSH e outros.
- Relatório em HTML ou terminal.
- Estrutura interna modular e fácil de contribuir.
Temos muitas ideias para as próximas versões do HnTool, entre elas:
- Módulos para MySQL, FTP, DNS, Squid, Iptables, Samba, DHCP, cups
- Um report mais detalhado, mostrando como corrigir a falha encontrada
- Opção para atualizar os módulos pela própria ferramenta
- Analisador web, através de upload de arquivos de configuração
- Suporte a traduções
Baixando e instalando
Para instalar o HnTool pelo fonte, baixe-o desde endereço e faça:
$ tar xvf hntool-0.1.tar.gz
$ cd hntool-0.1
# python setup.py install --prefix /usr/ --root /
Se você usa Arch Linux você pode instalar o HnTool através do pacote criado:
$ wget http://hntool.googlecode.com/files/hntool-0.1-1-i686.pkg.tar.xz
# pacman -U http://hntool.googlecode.com/files/hntool-0.1-1-i686.pkg.tar.xz
NOTA: Por enquanto só há pacote para o Arch Linux. Se você usa alguma distribuição baseada em rpm ou deb e sabe criar pacote, por favor, não se acanhe. Crie um e adicione em um bug report. Se precisar de um guia, pode usar o PKGBUILD que fiz para criar o pacote do Arch Linux.
Usando
Para rodar o HnTool basta executar o seguinte comando:
# hntool
Isso irá gerar um relatório no terminal:
Se preferir, você pode gerar um relatório em HTML com o comando:
# hntool -t html > index.html
Para maiores informações rode:
# hntool -h
Reportando Bugs
O HnTool está em um estado tão inicial e com tanto código sendo adicionado frequentemente que, com certeza, você vai encontrar vários bugs. Por favor, não deixe de relatá-los em http://code.google.com/p/hntool/issues/list.
Contribuindo
Contribuir com o projeto é fácil. Você pode dar sugestões, reportar bugs e pedir novas funcionalidades. Além disso, você pode contribuir criando módulos. Veja como é fácil:
Todos os módulos seguem a seguinte estrutura:
Como falei, resolvi criar o hntool de forma modular. A estrutura de um modulo é, mais ou menos, assim:
import os class rule: def short_name(self): return "ssh" def long_name(self): return "Checks security problems on sshd config file" def __init__(self, options): pass def analyze(self, options): check_results = {'ok': [], 'low': [], 'medium': [], 'high': [], 'info': []} ssh_conf_file = ['/etc/ssh/sshd_config', '/etc/sshd_config'] for sshd_conf in ssh_conf_file: if os.path.isfile(sshd_conf): try: fp = open(sshd_conf,'r') except IOError, (errno, strerror): check_results['info'].append('Could not open %s: %s' % (sshd_conf, strerror)) continue lines = [x.strip('\n') for x in fp.readlines()] # Checking if SSH is using the default port if 'Port 22' in lines or '#Port 22' in lines: check_results['low'].append('SSH is using the default port') else: check_results['ok'].append('SSH is not using the default port') # Closing the sshd_config file fp.close() return check_results def type(self): return "files"
Explicando melhor:
- short_name(self): Uma string contendo o nome curto do modulo. Ele será usado, por exemplo, na hora de listar todos os módulos existentes (hntool -l).
- long_name(self) : Aqui é a descrição do módulo. Também será mostrada na listagem dos módulos.
- analyze(self): É aqui que fica o código de verdade. O resultado desse método deve ser sempre uma lista com 5 elementos, que correspondem aos níveis de segurança encontrados - ok, info, low, medium e high, respectivamente.
- type(self): Cada módulo será de um tipo. "files" para módulos que lidam com arquivos de texto simples(/etc/passwd, por exemplo) ou de configuração. "services" para módulos que lidam com serviços.
Autores
Muita gente foi importante para este release, contribuindo com sugestões, bugs reports, código e, claro, apoio. Muito obrigado, Alexandro Silva, Aurélio Heckert, Candido Vieira, Elton Pereira, Italo Valcy, Késsia Pinheiro, Rafael Gomes, Rafael Gonçalves Martins, picoloto, Sebastian SWC. :-)
Bem, é isso. Aguardem novidades na versão 0.2.
0sem comentários ainda