
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 version -v を実行して OpenSSL のバージョンを確認します。コマンドの出力が 1.0.(1[a-f]|2-beta1) と一致する場合、そのビルドには Heartbleed 脆弱性が含まれていないことがわかります。レポートには比較結果が示されます。
OpenSSL の脆弱性チェックにこれを使用しない場合は、--check-command でカスタムチェックコマンドを、--check-result で期待する結果を渡すだけです。結果の判定には正規表現マッチが実行されます。
1つのインスタンスだけをチェックしたい場合は、該当するインスタンス ID を --instance-id フラグで渡します。これにより、クエリは1つのインスタンスに限定されます。
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 の下で配布されています。