web-dev-qa-db-ja.com

クラウドベースのアプリケーションのセキュリティチェックを月に4時間しか持っていません-時間の使い方は?

私は、Azureにデプロイされたアプリケーションの世話をしなければなりませんでした。私は月に4時間割り当てられています。

私は基本的に、このアプリケーションをセキュリティで保護/維持するために半日の仕事をしています。私の時間の効率的な使用とは何ですか?

私は集中する必要があります:

  • すべてのコンポーネントが最新であることを確認していますか?
  • すべてのログをチェックして、怪しげなものがないことを確認しますか?
  • アプリケーションを自分で「ハッキング」しようとしていますか?
  • セキュリティの観点からシステムを詳細に文書化していますか?
  • この/関連技術の現在の脆弱性を調査していますか?
  • バックアップなどが正しく機能していることを確認していますか?
  • 災害復旧関連?
  • 「ハッキングされる」ことに関するポリシーを作成していますか?
  • 不正なパターンを検索するツールを使用してソースコードを監査しますか?

またはいくつかの組み合わせ/他の何か?

私は経験ベースの回答を探しています。できれば、この種のセキュリティ保守を行う人からの回答を探しています。既存のベストプラクティス/ガイドラインがあり、それも本当に役立つ場合。

テクノロジースタックは次のとおりです。

  • SQL Serverデータベース(Azure SQL)
  • C#Web API
  • Angular Front End

いくつかの追加コンポーネントがありますが、私は実際には技術固有の答えを探しているのではなく、これに取り組む方法に関する戦略を探しています。

44
user230910

Azureソリューションのセキュリティを段階的に維持および改善できるように、Azureのトップセキュリティのベストプラクティスから始めます。

  1. azureサブスクリプションに同意し、Azure Security Center Standardにアップグレードします。これにより、セキュリティの脆弱性を見つけて修正し、アクセスとアプリケーション制御を適用して悪意のあるアクティビティをブロックし、分析を使用して脅威を検出し、攻撃に迅速に対応できます。
  2. キー、データベースの資格情報、APIキー、証明書をAzure Key Vaultに保存します。さらに、ソリューションのキーとシークレットがアプリケーションのソースコードに格納されていないことを確認してください。
  3. application Gatewayの機能であり、一般的なエクスプロイトや脆弱性からWebアプリケーションを保護するWebアプリケーションファイアウォール(WAF)をインストールします。
  4. 管理者アカウントに多要素検証を実施します。
  5. 仮想ハードディスクファイルを暗号化します。
  6. azure仮想マシンとアプライアンスをAzure仮想ネットワークに配置することにより、それらを他のネットワークデバイスに接続します。
  7. 追加の軽減機能を提供するDDoS保護標準を使用して、DDoSを軽減および保護します。

1〜7の準備ができたら、次のことに集中してください。

  1. azureはWindowsの更新を自動的にプッシュしないため、VM更新の管理
  2. パッチ管理、バックアップ、インシデント管理、変更管理、緊急ユーザーアクセス、特権アクセスなどの重要なクラウド運用のプロセスを確実にセットアップします。
  3. パスワード管理を有効にし、適切なセキュリティポリシーを使用して乱用を防止します。
  4. セキュリティセンターのダッシュボードを確認して、すべてのAzureリソースのセキュリティ状態の概要を維持し、必要に応じて推奨事項に対応できるようにします。

Azureセキュリティのベストプラクティス に関するMicrosoftのドキュメントをお読みください。

ドキュメンテーション:

Microsoft Azure Security Fundamentals

Microsoft Azureセキュリティドキュメント

27
Refineo

コメントで述べたように、私も1か月に4時間は低すぎることに同意します。理解し、さらに重要なことに、4hではあまり期待すべきではないことを関係者に理解させます。彼らがあなたに4時間与えたことを考えると、彼らがこのアプリケーションのセキュリティ保護について真剣に考えているようにも見えません。

コメント、回答、自分の考えをもとに、ひとつにまとめてみます。ここに私はあなたのオプションが正しいように見えるべきだと思う方法です。

  1. もっと時間をかけてください。わずか4時間でアプリケーションを保護する必要があるかどうかを理解させると、実用的ではありません。
  2. 代理店を雇い、4時間かけてスコープを定義し、アクションに優先順位を付け、結果を確認します。 (@ネルソン)
  3. 上記を実行できない場合は、垂れ下がった果物を固定して、4時間でより多くの地面をカバーできるようにすることをお勧めします。これが私が重要だと思うものです
    • 外部向けサービスを更新に設定します。 (更新のための重要なアプリケーションを見つけて設定するには、約1時間)。役に立たないと思われる不要なポートやサービスを閉じます。
    • MFAのセットアップ(約10分)-時間がないため、迅速なセットアップを行い、一般的な攻撃からユーザーを保護して警告します。
    • シークレットを確認します-それらが安全に保管されていることを確認し、コードでスキャナーを実行してハードコードされたシークレットを見つけます。 (〜1時間)
    • 災害復旧-問題が発生した場合の保護を設定するために、貴重な4時間を費やすことをお勧めします。異なるゾーンでバックアップ(可能な場合は2)の作成を開始します。プラットフォームがこれであなたを助けると思いますが、それでもまだ時間がかかります。この間、大まかな災害復旧計画を作成することもできます。 (〜1.5時間)
    • 最後に、あなたが残した少しの時間で、文書化します。行ったこと、行っていないこと、およびアプリケーションをさらにセキュリティで保護するために誰かが次に4時間経過したときの次のステップを文書化します。 (〜残り物)

DoS保護は適切で必須ですが、上記の計画にそれを適合させる方法を見つけることができず、何もそれを交換することができませんでした。多分それはあなたの次のステップで文書化されるべきです。

全体として、それは4時間で何かを確保するというはるかに難しい要求です。しかし、私がそれを任された場合、私は上記の手順でそれを行います。システムがすでにハッキングされているかどうかの調査がこれらの4時間で実行可能かどうかはわかりません。保護に4hが与えられたら、アプリケーションを潜在的な脅威から保護するために費やすか、システム内の攻撃者を調査するかを選択できます(別のプランが必要です)。その最初の選択はあなた次第です。

46
Izy-

これは非常に重要な回答です(実際のセキュリティとはほとんど関係がありません)ので、私のアドバイスは無視してください。この質問自体はかなり意見に基づいているため、まったく別の「種類」の答えを試してみようと思いました。

アプリケーションのセキュリティを担当しました。これは良いことです!

残念ながら、雇用主はアプリケーションを保護するために何が必要かについて非常に非現実的な期待を持っています。 4時間は、この仕事をうまく行うのに十分な時間とは言えません。明らかに、これはほとんどの企業(1か月にちょうど0時間の専用セキュリティ時間を割り当てている)よりも優れています。けれども現実は4時間はピットです。だからこれはあなたがすることです:

  1. 人々がここで与えるすべての提案で実行します
  2. 1か月に4時間以上過ごす
  3. 雇用主を不幸にしたり、直接命令に従わないのを避けるために、自分の時間に余分な仕事をしてください。今後数か月間、定期的にかなりの時間を費やす予定です。
  4. 今回は、セキュリティの脆弱性に関するコードのレビュー、SEIMシステムのインストールと使用、ロギングシステムのインストールと使用(ELKスタックが一般的に使用されています)、侵入検知システム、自動アプリケーションスキャンなどについて学びます。 (完全なリストは長すぎると思いますが、余暇に数か月の作業ですべてを学びますが、最善を尽くしてください!)
  5. あなたの会社はあなたの自由労働の恩恵を受けることになり、それは少し悲しいですが...
  6. 正式な職務の一環として、セキュリティの専門家になるためのトレーニング(役職が必要な場合は、アプリケーションセキュリティエンジニアになる準備ができています)を行い、実際のWebアプリケーションを本番環境で保護します。使用する!
  7. アプリケーションセキュリティエンジニアとして次の仕事に応募してください。たぶんあなたはもっと楽しい仕事をするより良い仕事を見つけるでしょう、そしてあなたもおそらくより良い給料をもらえるでしょう!

明らかに、結果がどうなるかについては保証できませんが、実際に与えられたのは、転職のためのトレーニングを自分で始める許可です。あなたの未来に投資する機会!セキュリティの専門家はエンジニアよりも需要が高いので、個人的に私はこれを採用して実行します。特にそれが私の好意でうまくいったなら、近視眼のために私が彼らに与えるつもりだった自由な仕事のために私の現在の雇用主に恥ずかしさえしません。

8
Conor Mancone

私は提案します

  1. リスク評価
  2. ここに記載されているリスト(自分自身と回答の両方)を実行可能な項目にまとめます。
  3. 結果を上司に戻して、時間を増やすか、上司に優先順位を付けてもらいます。
6
Bergi

アプリケーションが非常に小さいと想定します。ログのスクリプトを書いて、場違いなものを検索します(理想的には、これは4時間の作業期間中には行われません)。主要なアプリケーションの障害回復がすでに行われているはずです(チェックアプリケーションでこのような作業が必要な場合。).

  1. 何が使用され、誰が使用するか、また使用頻度もわかるように、ドキュメントは重要です。これは、スクリプトの開発に役立ちます。

  2. 1か月分のログを圧縮するにはスクリプトが必要なので、慎重に選択してください。

  3. バックアップを確認します。

  4. 常に使用されているテクノロジーと、POCまたはエクスプロイトがあるかどうかを確認してください。そこに飛び込んで自分でエクスプロイトを試み始めないでください。

  5. アプリケーションが不可欠な場合は、追加のサポートを要求します。

理想的には、ドキュメントとスクリプティングだけが残りの時間をとるべきであり、かなり単純である必要があります。これは、プロジェクトの価値を判断し、4時間で十分かどうかを選択するのに最適ではありません。

ターゲットを理解することは、ターゲットをよりよく保護するのに役立ちます。

うまくいけば、彼らがそれを提供してくれるより良い答えがあると思います。

3
S S

OP、あなたは主に開発者であるように見えます あなたの貢献 を見てください。では、セキュリティを強化するために開発者は何ができるでしょうか?

最初の月:

  • 2時間:バージョンを外部の依存関係/コンポーネント/ライブラリにぶつけて、アプリの再構築を試みます。失敗した場合の非互換性を文書化します。
  • 2時間:CI/CD、テスト、masterブランチ、そして本番環境への独自の変更をプッシュするために必要なことをすべて実行します。他の開発がある場合はそれをピギーバックするようにしてください。ただし、この場合は、実際に有用なことを行った証跡を残すように特に注意してください(たとえば、いくつかのPRを作成します)。

毎月繰り返しますが、2つの境界線を調整します。 (最終的な分割は3時間50分ではなく10分に近い可能性があります。)

このようにして、最悪のベクターを修正します。人気のあるコンポーネント/ライブラリの1つに、1か月前に公開された脆弱性(CVE)があります。ボットの群れがインターネット全体をスキャンし始め、すべての脆弱なデプロイメントが発生します。 (情報に基づいて?)推測するだけでサードパーティコンポーネントをアップグレードする場合、被害者になることはなく、必要性本当に不愉快な状況。

これは開発者にとっては取るに足らないことですが、ほとんどの企業では、開発者はこのような面白くないメンテナンスを避けています。これは、(アプリケーションを再コンパイルしないため)典型的なセキュリティ部門にとって大きな問題になります。 「ログを分析する」、「WAFを実装する」、または「脆弱性スキャンを実行する」ための多大な努力は、主に残りのすべての可能な角度からそのギャップをカバーするためにあります。


あなたの質問から、あなたはlearningに集中する方法を尋ねているようです。私は今ここでその前提に挑戦したいと思います。 1か月に4時間割り当てられた人は、すでに自分自身の教育から恩恵を受けて、彼ら自身の申請をすでに切り捨てました。それらの無責任!このプロジェクトに特化した何かを学び、それを実装し、エラーについて学び、繰り返す...それは毎月4時間のチャンクで行うことはできません。それはあなたの決定ではなかったので、これを「修正」しないでください!このプロジェクトの時間に、あなたがすでによく知っていることをしてください。

それはスターターです。あなたが自由な時間に学び、実行しようとするのは、あなたの好みとあなた自身のビジネスです。このサイトには広すぎると思いますが(セキュリティに興味がないと判断した可能性がありますが、これはまったく問題ありません)、他のサイトからは大量のリードが与えられました。他のプロジェクトでも役立つものを探してください。前者または後者の一部は、この4時間に収まり、プロジェクトの状態を改善するのに役立ちます。

3
kubanczyk

他の人がすでに4時間と言ったのは手間が少なすぎますが、役立つと思われる場合に備えて、いくつかの推奨事項を提供します。

  • Qualysなどの脆弱性スキャナーを実行します。これにより、XSS、SQLインジェクション、CSRFなどの多くの有用なアプリの脆弱性が検出されます。
  • コードレビューツールを実行して、明らかな不正行為を特定します(つまり、ユーザー入力をデータベースに送信する前に適切にエスケープしない)
  • OWASPの脅威などから保護する適切な内部(ホストベース)および外部(エッジまたはクラウドベース)WAFをインストールします。クラウドベースのいくつかのWAFは、DDoSといくつかのブルートフォース攻撃から保護します。
  • インフラストラクチャを信頼によってVLANゾーンに分離し、それらの間のデータフロー(エッジ、プレゼンテーション、ビジネスロジック、データなど)を最小限に抑えます
  • 他の誰かが以前にそれを言及しましたが、非常に重要です:特権資格情報(APIキー、db credsなど)をソースコードとは別に保存していることを確認してください。
  • すべてのインフラストラクチャを強化します。
  • しばらく時間がかかる場合がありますが、セキュリティリスクのヒートマップまたはバランススコアカードを作成し、上級関係者に見えるようにすることをお勧めします。優れたセキュリティ対策によりリスクを軽減できますが、それだけで特効薬はありません。
3
ChrisFNZ

そのようなことをしなければならなかったシステム管理者から、私はdev VMを作成することをお勧めします。これはprodと交換できます。

  1. サーバーをバックアップします。
  2. データベースを独自のサーバーに分離します。それらが1つのIPアドレス、それを必要とする運用サーバー/サービスとのみ通信できることを確認してください。 (1回限りの変更、非常に重要です。)
  3. メインサーバーのクローンを作成し、新しいサーバーに別のIPアドレスを割り当てます。
  4. 必要な変更、更新、レビュー、チェックをすべて行います。
  5. 4時間のウィンドウが利用可能になったら、メインのサービスを停止します。
  6. データベースをバックアップします。重要なステップ。
  7. すべてのローカル変更をメインからクローンにプッシュします。
  8. すべてが正常に見え、正常に動作していることを確認します。
  9. メインとクローンのIPアドレスを入れ替えます。
  10. クローンは現在メインです。
  11. すべての別のバックアップを作成します。 (はい、別のものを実行します。)
  12. Mainでサービスを呼び出します。
  13. 何かが発生した場合のバックアップとして、他のシステムはそのままにしておきます。
1
Blerg

リスクについては触れません。個人データなどが格納されますが、複雑なアプリケーションの場合、時間効率が非常に高いアプローチの1つにファズテストがあります。インジェクション攻撃の可能性があるメタキャラクターであり、エラー500が発生するたびに脆弱性を報告します。

悲しいことに、通常の対応は「それは悪用できない」であり、特に、あなたがそうであるようなセキュリティのない環境では。また、脆弱性をエクスプロイトに変えるには、予算の4時間以上かかります。

別の答え:この雇用主はいつでも廃業する可能性があるので、CVを磨く時間を費やしてください。

0
chrishmorris