sábado, 20 de agosto de 2016


Esta dica é ideal para pessoas que utilizam computadores ou servidores com pouca memória RAM, como é o caso da T1, T2 da Amazon e etc. Neste post iremos utilizar o zRam, um módulo do Kernel muito simples de se instalar, que já executa todas as suas configurações Default diretamente na inicialização do sistema, cuja função é de criar blocos de memória parecidos com a SWAP, que armazena dados da RAM e os comprime diretamente na memória do sistema.

Essa operação gera um ganho significativo de performance em servidores que necessitem de processos que consumam grande quantidade de memória e poucas threads de processamento. Ele já tem suporte para versões do Kernel acima da versão 3.2 e já vem nativo em algumas distribuições e inclusive em algumas versões do Android. A instalação é bem simples.
 # sudo apt-get install zram-config  # Debian 
 # sudo yum install zram # CentOS

Checando o funcionamento do zram


Podemos ver se o sistema está iniciando, e as operações de movimentação dos blocos de memória através do comando nativo dmesg:
 root@matheus:/home/matheus# dmesg | grep -i zram  
 [  19.458938] zram: Added device: zram0  
 [  19.459214] zram: Added device: zram1  
 [  19.570123] zram0: detected capacity change from 0 to 477995008  
 [  19.577613] Adding 466788k swap on /dev/zram0. Priority:5 extents:1 across:466788k SSFS  
 [  19.578612] zram1: detected capacity change from 0 to 477995008  
 [  19.586030] Adding 466788k swap on /dev/zram1. Priority:5 extents:1 across:466788k SSFS  
 root@matheus:/home/matheus#   

Para ter certeza, vamos consutar o arquivo swaps da pasta virtual de configuração do sistema, pra ver se existe algum dispositivo ativo do zram
 root@casa:/home/andrea# cat /proc/swaps  
 Filename                    Type          Size     Used     Priority  
 /dev/dm-0                partition     1981948     0     -1  
 /dev/zram0               partition     466788     37124     5  
 /dev/zram1               partition     466788     37088     5  
 root@casa:/home/andrea#   

Espero ter ajudado :)

zRam :: Otimizando a memória RAM do Linux

sábado, 13 de agosto de 2016


Fala galera, tudo bem? Hoje vim trazer uma série de dicas bem bacanas pra quem curte utilizar o VIM para automatizar algumas tarefas na hora de edição de arquivos e até mesmo em desenvolvimento. Na verdade, vim trazer uma lista de vários recursos nativos do VIM que podem fazer com que o mesmo se aproxime de uma IDE de desenvolvimento completa na hora de programar scripts direto nos servidores ou localmente mesmo, daí vai de você.

Antes de mais nada, vou advertir que o conteúdo deste post não é para usuários iniciantes, então se você não teve nenhum contato com o VIM como ferramenta de edição de texto, ou está começando, sugiro que dê uma olhada no post que eu fiz explicando alguns comandos diários do VIM.



Setando o Filetype no VIM

Para fazer o vim reconhecer o tipo de arquivo que você está se editando, ou seja, para ele respeitar o destaque de funções específicas da sua linguagem, seja ela PHP, Python, Ruby, Shell e etc, precisamos habilitar o filetype no console do VIM.
 filetype plugin on  

Setando a verificação de Sintaxe no VIM

Para fazer com que o editor reconheça e destaque partes do seu código, como classes, chaves, funções variáveis , constantes e etc, é interessante ligar o Syntax ON no console do VIM
 :syntax on #Set  
 :syntax off #Unset  


Setando a exibição do numero de linhas no VIM 

Para habilitar a exibição do número de linhas no VIM, basta utilizar o set nu. Essa como outras ficas já foram dadas neste post. Mas vou repetir algumas aqui só pra deixar tudo mais enxuto pra quem abrir essa paginazinha do zero. Para retirar a numeração, basta setar o nonu
 :set nu  #Set
 :set nonu  #Unset

Ajustando o Espaçamento nos Tabs

Esta é uma variável que eu prefiro não adicionar no meu .vimrc, porque eu programo em algumas linguagens além do PHP, e isso me incomoda um pouco quando eu vou programar em Javascript ou em Python que eu utilizo espaçamento nos Tabs de 4 enquanto no PHP eu utilizo espaçamento de 2 nos tabs.
 :set expandtab ts=4 sw=4   


Setando o Auto Indent no Vim

Acho que uma das coisas que mais dificultam no desenvolvimento utilizando diretamente o VIM é o fato da indentação de código. Porém para resolver isso existe o Auto Indent no console, conhecido como o parâmetro ai. Após configurar o espaçamento, o Auto Indent irá respeitar certinho o que você definir.
 :set ai  #Set
 :set noai  #Unset

Setando o autocomplete de PHP no VIM

Por default, todos as funções do Omni Completation vem desabilitadas por padrão. No PHP, funciona bem pra caramba, basta setar no console o parâmetro
 :set omnifunc=phpcomplete#CompletePHP  

Enquanto estiver escrevendo alguma função no PHP, basta pressionar o CTRL + x e CTRL + o para abrir as opções de autocomplete.


Dividindo o terminal com outros arquivos utilizando o Split

Para dividir a exibição do editor em várias páginas, utilizamos o comando Split. Podemos abrir mais janelas, já com um documento aberto, ou abrir elas todas de uma vez utilizando o parâmetro -O quando chamamos do vim para editar os arquivos. Para navegar entre os splits, basta utilizar o CTRL+ww
 # vim -O arquivo1.php arquivo2.php arquivo3.php  


Para abrir um documento, já com a janela aberta, basta utilizar no console o comando:
 :split arquivo.php  

Checando análise de erros de sintaxe diretamente pelo VIM

O VIM funciona como um X-Debug integrado, validando praticamente todo o arquivo editado, fazendo várias validações como sintaxe, variáveis não definidas, funções não fechadas e etc. Depois de salvar o arquivo, digite no console:
 :!php -l %  



Abrindo vários arquivos e navegando entre eles

Em alternativa com o Split, podemos reservar toda a tela do terminal para somente um documento, e mesmo assim estar editando vários de uma só vez. Você pode navegar entre os documentos abertos utilizando :n no console para avançar e :N para voltar entre os arquivos, e utilizar :ls para listar os documentos abertos. Para abrir vários documentos, a maneira é bem similar:
 # vim documento1.php documento2.php documento3.php  

Para navegar entre os documentos:
 :n #Ir para o próximo documento  
 :N #Ir para o documento anterior  
 :n documento4.php # Abrir novo documento
 :ls #listar documentos abertos


Persistindo as configurações 

Se você sempre for usar algumas opções de edição, como o autocomplete, o auto indent, a numeração de linhas, não é muito legal ficar sempre setando os parâmetros um atrás do outro sempre que abrir um arquivo. Para isso, nós devemos setar todos os comandos dentro do arquivo .vimrc do usuário.
 $ vim ~/.vimrc  



Update 15/08/2016

Busca inteligente de arquivos no diretório do projeto com CtrlP

Site do projeto: http://kien.github.io/ctrlp.vim/ 

Essa dica veio do Rafael, que trabalha aqui comigo. O Ctrl P é um plugin muito bacana de busca do diretório atual, te possibilitando abrir janelas com os arquivos encontrados a partir do parâmetro buscado. Por exemplo, se eu setar CTRL + P e em seguida digitar "controller" ele vai buscar pra mim todos os arquivos que tenham "controller" no nome.


Instalação do CtrlP

 $ cd ~/.vim  
 $ git clone https://github.com/kien/ctrlp.vim.git bundle/ctrlp.vim  

Com o projeto clonado, edite sem vimrc e adicione a seguinte linha:
 $ vim ~/.vimrc  
set runtimepath^=~/.vim/bundle/ctrlp.vim 


Agora no VIM, rode o comando no console para carregar os helps
:helptags ~/.vim/bundle/ctrlp.vim/doc

Agora só reiniciar seu VIM e digitar um CTRL + P para acionar as buscas

Espero ter ajudado :)


VIM :: Transformando o editor texto em um ambiente de desenvolvimento PHP




O Robomongo é um client de consulta bem bacana e performático para bancos não relacionais de alta performance MongoDB. Ele possibilita configurar várias conexões e realiza as consultas de forme bem simples e intuitiva, possibilitando até mesmo vários modos de visualização e exportação das querys construídas no console pra te auxiliar no desenvolvimento das suas aplicações.

Site do projeto: https://robomongo.org/

Download do projeto:

Faça o Download do software para a sua plataforma no link de Download do site do projeto. Baixando o mesmo vamos descompactar e mover o mesmo para a pasta /opt do sistema.

Link de Download: https://robomongo.org/download

 # wget https://download.robomongo.org/0.9.0-rc9/linux/robomongo-0.9.0-rc9-linux-x86_64-0bb5668.tar.gz  
 # tar xvf robomongo-0.9.0-rc9-linux-x86_64-0bb5668.tar.gz  
 # mv robomongo-0.9.0-rc9-linux-x86_64-0bb5668/ robomongo  ; mv robomongo /opt/
 # cd robomongo/bin/  
 # ./robomongo  


:)


Robomongo :: Um cliente muito poderoso para MongoDB

quinta-feira, 4 de agosto de 2016



Fala galera, tudo bem?
Mais uma vez aqui fazendo um post na correria por conta do tempo apertado por conta do trabalho e uns projetos pessoais, mas pra não deixar passar em branco vou dar uma dica bem bacana pra quem trabalha ou usa o Git para coisas recreativas.

Quem mandou essa dica foi meu amigo Rafael, que trabalha comigo, gente boa pra caramba e manja muito de Git. Ele mandou o link lá do blog do Glauco Custodio, uma dica inicialmente pra quem trabalha em projetos que utiliza várias branches, e uma vez ou outra faz algum tipo de confusão e desenvolve uma nova feature ou commita algo em uma branch errada e acaba atrasando ou perdendo todo o trabalho. Coisas feias acontecem as vezes. Nós iremos customizas a bash do nosso usuário para ler o arquivo .git de dentro do repositórios e nos mostrar em qual branch estamos desenvolvendo, onde vai ficar basicamente assim:


Basta editar o .bashrc ou o .bash_profile dentro da pasta home do usuário, e alterar o PS1, pattern responsável pela customização do template do bash do usuário, e adicionar a seguinte linha:

 # vim ~/.bashrc # Ou...  
 # vim ~/.bash_profile   
 export PS1='\u@\h\[\033[01;34m\] \w\[\033[0;32m\]$(__git_ps1 " (%s)")\[\033[01;34m\]$\[\033[00m\] '  

Agora é só reiniciar a sessão, ou dar um source no arquivo de configuração que você modificou
 # source ~/.bashrc # Ou  
 # source ~/bash_profile   


Espero ter ajudado :)

Git :: Configurando o Bash do usuário para mostrar a Branche atual do projeto


O MongoDB é um banco de dados NoSQL orientado a documento, ou seja, é um serviço que segue um conceito de armazenamento de dados sem Transactions e Joins entre tabelas. Ele é utilizado justamente por sua altíssima performance quando se trata de grande quantidade de dados e metadados. Em comparação com outros serviços de bancos de dados relacionais, ele atende quando sua aplicação trabalha com consultas simples,mas que atue em uma massa muito grande de informações de primeiro momento, mas seu uso e muito amplo em vários outros quesitos operacionais. Hoje vou dar um Cookbook de como instalar o serviço em sistemas GNU/Linux. Mas antes, segue um Benchmark do uso de um banco SQL normal comparando performance com o MongoDB para geração de Logs

 Benchmark: Inserção de Registros Simples de uma tabela, sem Joins   
   
 Mysql  
   
 inserindo 50k  
 Tempo (segundos): 26.963586091995  
 inserindo 50k  
 Tempo (segundos): 35.74323797226  
 inserindo 50k  
 Tempo (segundos): 27.360780954361  
 inserindo 50k  
 Tempo (segundos): 27.239809989929  
 Leitura dos 200k : Tempo (segundos):0.16633296012878  
   
 =============================================================  
   
 MongoDB  
   
 inserindo 50k  
 Tempo (segundos): 6.9094848632812  
 inserindo 50k  
 Tempo (segundos): 9.049604177475  
 inserindo 50k  
 Tempo (segundos): 4.2792370319366  
 inserindo 50k  
 Tempo (segundos): 10.331115007401  
 Leitura dos 200k : Tempo (segundos): 0.14360809326172  

Instalando o MongoDB no Debian Linux

Para fazer a instalação do MongoDB em distribuições baseadas em Debian, é bem simples: Basta adicionar a chave GPG, adicionar o repositório adicional do MongoDB e instalar o pacote
 # sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10  
 # echo echo “deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse” > /etc/apt/sources.list.d/mongodb.list  
 # sudo apt-get update ; sudo apt-get install mongodb-org  

Instalando o MongoDB no CentOS/RHEL 7

Para instalar o Mongo em distribuições da família Red Hat, primeiramente crie a entrada para o repositório do Mongodb e cole o conteúdo
 # vim /etc/yum.repos.d/mongodb.repo  
 [mongodb]  
 name=MongoDB Repository  
 baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/  
 gpgcheck=0  
 enabled=1  

Instale os pacotes do MongoDB
 # yum -y update ; yum -y install mongodb-org mongodb-org-server  

Pacotes adicionais que você pode querer utilizar

 # apt-get install mongodb-org-mongos # Ferramenta para criação de Clusters de Mongo  
 # apt-get install mongodb-org-server #Servidor de Mongo   
 # apt-get install mongodb-org-shell # Client Shell para MongoDB  
 # apt-get install mongodb-org-tools # Ferramentas Auxiliares para o MongoDB  


Espero ter ajudado :)


MongoDB :: Instalação do Banco de Dados NoSQL de Alta Performance no Linux

sexta-feira, 29 de julho de 2016


O w3af é um uma ferramenta de auditoria de vulnerabilidades em aplicações Web que visa realizar vários testes automatizados e parametrizados diretamente no framework de acordo com a necessidade. A ferramenta é escrita em Python e tem seu código inteiramente publicado no Github. Eu gostei muito da tool por ser intuitiva, e me proporcionar um teste de cabo a rabo dos meus projetos pessoais e dos trabalhos freelance (Sim, eu testo a segurança do Freelance). Normalmente eu uso o Uniscan e o Arachni para esse tipo de análise, mas quis testar algo diferente dessa vez e resolvi dar oportunidade pra ferramenta e acabei gostando pra caramba.

Site do projeto: http://w3af.org/

Download do Projeto via Git

Instalando as Dependências 

Vamos instalar as dependências do projeto utilizando a ferramenta Pip:
 # sudo pip install pyClamd==0.3.15 PyGithub==1.21.0 GitPython==0.3.2.RC1 pybloomfiltermmap==0.3.14 nltk==3.0.1 chardet==2.1.1 tblib==0.2.0 futures==2.1.5 pyOpenSSL==0.15.1 ndg-httpsclient==0.3.3 pyasn1==0.1.8 lxml==3.4.4 scapy-real==2.2.0-dev guess-language==0.2 cluster==1.1.1b3 msgpack-python==0.4.4 python-ntlm==1.0.1 Jinja2==2.7.3 markdown==2.6.1 psutil==2.2.1 mitmproxy==0.13 ruamel.ordereddict==0.4.8 xdot==0.6  


Clonando o Projeto

O projeto está aberto no Github pra todo mundo. Para fazer o Download, basta clonar o projeto e executar o script w3af_gui para abrir a interface gráfica do Framework ou o w3af_console para abrir o sistema via cli

 # git clone --depth 1 https://github.com/andresriancho/w3af.git  
 # cd w3af  
 # ./w3af_gui  # Interface Gráfica
 # ./w3af_console #Cli


Troubleshoot: libxml-dev

Talvez ocorram alguns problemas ao instalar bibliotecas do pip por conta do xmllib. Então, caso ocorra, instale os pacotes:
 # sudo apt-get install libxml2-dev libxslt1-dev  



Parametrizando e Rodando um Scan no w3af 

O w3af possui muitos modulos de testes de vulnerabilidades específicas, porém existem muitos patterns de teste já pré parametrizados dentro do framework, como:


  • OWASP Top 10 -- Referente a um scan focado no Top 10 Vulns mantido pela Owasp
  • Audit High Risk -- Referente a Scans de vulnerabilidades mais perigosas
  • Bruteforce -- Testes automatizados de Brute Force nas dependências do site
  • Fast Scan -- Scan rápido de reconhecimento 
  • Full Audit -- Scan completo, com quase todos os módulos habilitados
  • Full Audit Spider -- Scan completo, porém adicionando spiders no site
  • Sitemap -- Executa somente um mapeamento das paginas e links do site
  • Web Infraestructure  -- Audita a infraestrutura do servidor



Após selecionar os módulos que você quer usar no ataque, você pode referenciar o alvo no campo "Target" do GUI. E aplicar e iniciar a varredura. Na aba Logs, ficaram sendo mostrados em tempo real os testes e as vulnerabilidades encontradas dentro do site.


Na Aba Results, serão mostradas as vulnerabilidades e informações relevantes encontradas durante os testes dos módulos pré-selecionados por você, junto com os parâmetros usados e referências criadas para o mesmo. Normalmente com detalhes dos requests que o software gerou para detectar a vulnerabilidade.


A dica de hoje é bem rápida, estou em uma correria lascada.

Espero ter ajudado :)

w3af :: Framework de Scanning e Auditoria de Vulnerabilidades Web

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com