ちょっと話題の記事

手軽なセキュリティスキャンサービス Walti.ioを試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。 先日セキュリティスキャンサービスのWalti.ioが正式リリースしたので、早速試してみました。

Walti.ioとは?

Walti.ioとはSaas型のセキュリティスキャンサービスです。セキュリティスキャンが可能なものはファイアウォール設定(Portscan)、HTTPS設定(sslyze)、HTTPサーバ設定(nikto)、WEBアプリケーション脆弱性(skipfish)となっています。 Walti.ioの面白い特徴としてチームでの使用をサポートしていることが挙げられます。

アカウントの作成

まずはWalti.ioのアカウントを作成します。

Walti.ioのサイト(https://walti.io/)へアクセスし「今すぐアカウントを作成」をクリックします。

Walti_io___サーバーサイドのセキュリティスキャンをもっと身近に。

氏名、Username(アカウントID?)、Email、Passwordを入力します。

Walti_と_TweetDeck_と_Authy_と_Authy

チームで使用するための「組織」の情報を入力します。

Walti

これでアカウントの設定は完了です。

Walti_と_TweetDeck_と_Walti_と_ec2-user_ip-172-31-28-154__

[組織設定]-[組織に参加しているユーザ]で、同じ組織でWalti.ioを使用するユーザを招待しましょう。管理者を招待する場合には「管理者を[組織名]に招待する」、一般ユーザを招待する場合には「ユーザを[組織名]に招待する」をクリックします。

Walti

招待するユーザのメールアドレスを入力して招待します。

Walti

セキュリティテストの許可申請

次にスキャン対象のURLを入力したいところを我慢して、許可の申請をしましょう。 次のIaasベンダー(2014年12月31日時点)の場合は事前に許可を得ているので、そのままスキャン可能です。

  • さくらインターネット
  • IDCFフロンティア
  • BIGLOBEクラウドホスティング
  • ニフティクラウド

AWSの場合はAWS 脆弱性/侵入テストリクエストフォームに申請を行います。リクエストフォーム中の"Scanning IP addresses (Source)"にはWalti.ioのFAQ「どのIaaSやVPSへ対応していますか?」に記載があるIPアドレスを記載します。今後のアップデートでスキャン元のIPアドレスを固定できるようです。 申請後2、3日でAWSから回答がありますので許可を受けたら次を進めます。

スキャン対象の設定

Walti.ioでセキュイティチェックのスキャン対象URLを設定します。

トップの画面の「新規ターゲット」をクリックします。

Walti

セキュリティスキャンを行うURLを入力します。

Walti_と_Route_53_Management_Console_と_TweetDeck

「所有者確認」をクリックして、対象URLのサイトの所有確認を行います。

Walti

所有者確認のステップを確認します。

Walti

以下の用にURLの所有確認用のファイルの設定方法が表示されます。

Walti_と_TweetDeck

対象のWebサーバで、以下のコマンドを実行して認証用のファイルを配置しましょう。

cd /var/www/html/
sudo curl -skL -o waltiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.html "https://console.walti.io/ownershipfiles?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

なお、所有者確認を行うサーバのアクセス元IPアドレスは、セキュリティスキャン用のIPアドレスとは異なるようですので、セキュリティグループでアクセス元を制限している場合は注意しましょう。

ファイルを配置して「確認&スキャン」をクリックすると、所有者確認の完了後に、初回スキャンが始まります。所有者確認完了後に自動でスキャンが始まるので注意しましょう。

Walti_と_EC2_Management_Console_と_TweetDeck

初回のスキャンはportscanとniktoが実行されました。

Walti_と_EC2_Management_Console

スキャンが完了すると以下のように、結果の概要が表示されます。 今回はApache 2.2のデフォルト設定の状態でスキャンし、portscanでポート80、niktoで5件の内容が検知されました。

Walti_と_朝まで生セキュリティ

niktoの結果詳細は、以下のレポートになります。

  • The anti-clickjacking X-Frame-Options header is not present. クリックジャッキング防止のためのX-Frame-Optionsが設定されていないので、設定した方が良いでしょう。
  • Allowed HTTP Methods: OPTIONS, GET, HEAD, POST OPTIONS、GET、HEAD、POSTのメソッドが許可されているので、必要なメソッドのみ許可すべきです。
  • /icons/: Directory indexing found. ディレクトリインデックスが有効になっているので、無効にしましょう。
  • Server leaks inodes via ETags, header found with file /icons/README, inode: 263668, size: 5108, mtime: 0x438c0358aae80 ETagの生成にinodeを使用しているためファイル自体に変更がなくてもETagの値が変わり不必要にネットワーク帯域を使用してしまうため、ETagの生成にinodeを使用しなくしましょう。
  • /icons/README: Apache default file found. Apacheのデフォルトファイルが残っているので不要なファイルは消しましょう。

Walti

ターゲットを登録すると毎月10円分のスキャンが行えるようになります。友人の招待やSNSでの紹介、クレジットカードの登録で最大260円/月まで無料で使用できます。

Walti

さいごに

Walti.ioはAPIも公開しているので、CIの一環としてセキュリティスキャンを行うことも可能です。AWSの場合は脆弱性テストの申請が必要ですが。 Walti.ioはツール診断なので本格的なセキュリティ診断を行う場合は診断士によるマニュアル診断の組み合わせが必要となります。しかし、手軽にセキュリティスキャンを行うことができるサービスは有用です。

そもそもセキュアな設定、コードを書かなければならないので、Walti.ioなどのセキュリティ診断を過度に頼らずに、日頃セキュリティを意識する必要があります。 最近のアプリケーションではセキュアコーディングは必須となっていますのでWalti.ioでセキュリティのチェックを行い、堅牢なシステムを作成しましょう。

次は、skipfishを使用したWebアプリケーション脆弱性のスキャンを行いたいと思います。