
Scanner de vulnerabilidade OpenSSL Heartbleed (CVE-2014-0160).
$ git clone [email protected]:pblittle/suture.git
$ cd suture
$ bundle install
$ bundle exec ./bin/suture --help
$ bundle exec ./bin/suture <options> check
Suture é uma ferramenta para executar comandos arbitrários em suas instâncias AWS EC2. Você pode executá-la contra uma instância individual ou uma região inteira. Suture foi originalmente escrito para determinar se alguma de nossas instâncias EC2 em execução estava usando uma versão do OpenSSL suscetível à vulnerabilidade Heartbleed.
Uma verificação do Suture fará ssh em cada uma de suas instâncias EC2 e executará um comando determinado. A saída do comando será comparada a uma string ou expressão regular fornecida para validação.
Por padrão, o Suture executará openssl version -v para verificar a versão do OpenSSL. Se a saída do comando corresponder a 1.0.(1[a-f]|2-beta1), sabemos que a compilação não inclui a vulnerabilidade Heartbleed. Um relatório indicará o resultado da comparação.
Se você não estiver usando isso para a verificação da vulnerabilidade OpenSSL, basta passar um comando de verificação personalizado usando --check-command e o resultado desejado usando --check-result. Uma correspondência de regex será realizada para determinar o resultado.
Se preferir verificar apenas uma instância, passe a flag --instance-id com o ID da instância em questão. Isso reduzirá a consulta a uma instância.
Se você estiver verificando uma região diferente de us-east-1, forneça a região desejada usando a flag --region.
Você precisará começar fornecendo suas credenciais AWS para o suture. Você pode exportar as credenciais AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY:
$ export AWS_ACCESS_KEY_ID='your-access-key'
$ export AWS_SECRET_ACCESS_KEY='your-secret-key'
Alternativamente, você pode usar as flags de linha de comando --aws-access-key e --aws-secret-access-key para autenticar.
Por padrão, o suture usa o usuário ubuntu para conectar-se à instância. Isso pode ser alterado usando a flag --ssh-user. O caminho padrão da chave privada é ~/.ec2. Você pode substituir esse caminho usando a flag --identity-file-path.
Finalmente, execute o comando check para visualizar o status de suas instâncias:
$ bundle install
$ bundle exec ./bin/suture [<options>] check
Para opções adicionais de comando, ./bin/suture --help:
Usage: suture [<options>] check
-A, --aws-access-key-id KEY the access key identifier
-K SECRET, the access key identifier
--aws-secret-access-key
-x, --ssh-user USERNAME the ssh username
-i IDENTITY_FILE_PATH, the SSH identity file used for authentication
--identity-file-path
-I, --instance-id INSTANCE_ID the instance to check
--region REGION your AWS region
-c CHECK_COMMAND, the check command to run
--check-command
-r, --check-result CHECK_RESULT the check result to match
Você encontrará os valores de configuração padrão no hash de opções. Você deve substituir esses valores usando as flags de linha de comando acima.
options = {
:aws => {
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:ec2 => {
:ssh_user => 'ubuntu',
:instance_id => nil,
:identity_file_path => ::File.join(Dir.home, '.ec2')
},
:region => 'us-east-1'
},
:check_command => 'openssl version -v',
:check_result => 'OpenSSL 1.0.1g 7 Apr 2014'
}
git checkout -b my-new-feature)git commit -am 'Add some feature')git push origin my-new-feature)Esta aplicação é distribuída sob a Licença Apache, Versão 2.0.