
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는 AWS EC2 인스턴스에서 임의의 명령을 실행하기 위한 도구입니다. 개별 인스턴스 또는 전체 리전을 대상으로 실행할 수 있습니다. Suture는 원래 실행 중인 EC2 인스턴스들이 Heartbleed 취약점에 노출된 OpenSSL 버전을 사용하고 있는지 확인하기 위해 작성되었습니다.
suture check 명령은 각 EC2 인스턴스에 SSH로 접속하여 주어진 명령을 실행합니다. 명령의 출력은 검증을 위해 제공된 문자열 또는 정규 표현식과 비교됩니다.
기본적으로 Suture는 OpenSSL 버전을 확인하기 위해 openssl version -v 명령을 실행합니다. 명령 출력이 1.0.(1[a-f]|2-beta1)와 일치하면 해당 빌드에 Heartbleed 취약점이 포함되지 않은 것입니다. 보고서에 비교 결과가 표시됩니다.
이 도구를 OpenSSL 취약점 확인 용도로 사용하지 않는 경우, --check-command로 사용자 정의 확인 명령을, --check-result로 원하는 결과를 전달하기만 하면 됩니다. 결과 판정은 정규 표현식 매칭으로 수행됩니다.
단일 인스턴스만 확인하려면 해당 인스턴스 ID와 함께 --instance-id 플래그를 전달하세요. 그러면 쿼리가 하나의 인스턴스로 축소됩니다.
us-east-1이 아닌 리전을 확인하는 경우 --region 플래그로 원하는 리전을 지정하세요.
먼저 suture에 AWS 자격 증명을 제공해야 합니다. AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY 자격 증명을 내보내거나:
$ export AWS_ACCESS_KEY_ID='your-access-key'
$ export AWS_SECRET_ACCESS_KEY='your-secret-key'
또는 명령줄 플래그 --aws-access-key와 --aws-secret-access-key를 사용하여 인증할 수 있습니다.
기본적으로 suture는 인스턴스에 연결할 때 ubuntu 사용자를 사용합니다. --ssh-user 플래그로 변경할 수 있습니다. 기본 개인 키 경로는 ~/.ec2입니다. 이 경로는 --identity-file-path 플래그로 덮어쓸 수 있습니다.
마지막으로 check 명령을 실행하여 인스턴스 상태를 확인하세요:
$ bundle install
$ bundle exec ./bin/suture [<options>] check
추가 명령 옵션은 ./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
기본 구성 값은 options 해시에서 확인할 수 있습니다. 위의 명령줄 플래그를 사용하여 이 값들을 덮어써야 합니다.
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)이 애플리케이션은 Apache License, Version 2.0에 따라 배포됩니다.