Webアプリ制作チュートリアル #07「セキュリティ」

2024/08/20

Webアプリ

t f B! P L
eyecatch セキュリティについて何をどのように学習すればいいか分からないという質問を受ける事があります。 Webアプリ以外でも普通のホームページを作って公開する場合も、全く同じセキュリティレベルが求められます。 ニュースなどでよく聞く、「情報漏洩」は、セキュリティが甘いシステムで発生しているような印象がありますが、 多くの場合は、サーバー管理者などが情報を不正にコピーしているケースも多いため、それを防ぐ人的セキュリティも必要になるため、 デジタルセキュリティから、ヒューマンセキュリティなど、色々なインシデントや、漏洩手段などを知ることも学習につながります。 サービス公開をする上で、必須だけど二の次にされてしまいがちなセキュリティについて踏み込んで学習していきましょう。

セキュリティの種類

インターネットのセキュリティという言葉には、たくさんの意味が含まれます。
1. サーバーセキュリティ 2. ネットワークセキュリティ 3. サイバーセキュリティ 4. データセキュリティ 5. アプリケーションセキュリティ 6. クラウドセキュリティ 7. エンドポイントセキュリティ 8. 物理セキュリティ 9. 暗号化 10. 認証とアクセス管理(IAM)

1. サーバーセキュリティ

デジタル情報とシステムをサイバー攻撃から保護するための総合的なセキュリティ。 簡単に誰でもログインできてしまうシステムは問題ですが、管理権限へのログインを防止する事が重要です。

2. ネットワークセキュリティ

ネットワークインフラを不正アクセスや攻撃から保護するための対策。 ファイアウォール、IDS/IPS、VPNなどが含まれます。 ネットワークを介してアクセスされてしまうと、サーバーのほとんどの内容が改ざんされてしまいます。

3. サイバーセキュリティ

インターネットやネットワークに接続されたデジタルシステム、デバイス、およびデータを保護するための技術やプロセスの総称です。 インターネットセキュリティの別名です。

4. データセキュリティ

データの不正アクセス、改ざん、漏洩を防ぐためのセキュリティ。 暗号化、バックアップ、データマスキングなどが含まれます。

5. アプリケーションセキュリティ

ソフトウェアアプリケーションにおける脆弱性を防ぐためのセキュリティ対策。 セキュアコーディング、脆弱性スキャン、ペネトレーションテストなどが含まれます。 プログラムインシデントは、コーディングのスキルに依存するので、最近では、ホワイトハッカーという役割で、インシデントを見つける事を得意とするスキルが流行ってきているようです。

6. クラウドセキュリティ

クラウド環境におけるデータやアプリケーションのセキュリティ対策。 アイデンティティ管理、アクセス制御、データ暗号化などが含まれる。 クラウドもサーバーと同じですが、物理が無いため、あらゆる箇所での暗号化や、認証システムが重要になります。

7. エンドポイントセキュリティ

PC、スマートフォン、タブレットなどのエンドポイントデバイスを保護するための対策。 アンチウイルスソフト、EDR(Endpoint Detection and Response)などが含まれます。 Webアプリにおけるエンドポイントは、インターネットブラウザなので、ブラウザセキュリティとも言われます。

8. 物理セキュリティ

オフィスやデータセンターなどの物理的な場所を保護するための対策。 監視カメラ、アクセス制御システム、侵入検知システムなどが含まれます。 認証方法も、生体認証が多く、顔認証、指紋認証、網膜認証、静脈認証などなど新たな技術が取り入れられています。

9. 暗号化

データを保護するための暗号化技術。 TLS/SSL、AES、RSAなどが使用されます。 TLS/SSLは、ネットワークプロトコルの暗号化技術で、 共通鍵暗号方式(AES)と公開鍵暗号方式(RSA)は、データ暗号化の鍵技術です。

10. 認証とアクセス管理(IAM)

ユーザーの認証とアクセス権を管理するためのシステムとプロセス。 シングルサインオン(SSO)、多要素認証(MFA)などが含まれます。 ログインを頻繁に行わせるシステムはセキュリティレベルは高く保てますが、利用者のストレスが増します。 OAuth認証などを用いて、確実でセキュリティレベルが高く保てるシステム構築が求められます。 ※IAM(Identity and Access Management)

HTTPとHTTPS

Webアプリで必須のセキュリティ設定は、HTTPプロトコルをHTTPSにする、プロトコルセキュリティです。 暗号化に書かれている、SSLとTLSがそのプロトコルセキュリティですが、SSLは古い技術で、最近ではTLSという技術で設定されます。

SSLについて

SSL(Secure Sockets Layer)とは、インターネット上の通信を暗号化して保護する技術です。 インターネット上のデータ通信は、第三者によって傍受・改ざんされる危険性があるため、ホームページへSSLを導入することで、訪問者のブラウザとサーバー間のデータ通信を暗号化することで情報を保護します。

TLSについて

TLS (Transport Layer Security)の略語で、SSLの上位バージョンです。 SSL3.1がTLS1.0と同等になるため、古いSSLは、データ解析が可能になるため、情報漏洩につながるので、最近では使われていません。

バージョン年表

無料化したSSL/TLS

Let’s EncryptというSSL証明書が2016年に発足し、それまで高額だったSSL設定を簡易に無料で利用できるようになりました。 ただ、それまでのSSL証明書の有効期限が1年だったのに対し、90日という短期有効期間のために使いにくいと考える人もいるようです。 サーバーのCRON処理などにより、自動更新する事で、工数をかけずにずっと無料でHTTPSを使い続けることも可能なので、簡易にSSL/TLSを設ける場合は必ず使うことになるでしょう。

サイバー攻撃とは?

攻撃の種類として、次のような名称があります。
1. マルウェア 2. フィッシング 3. DDoS攻撃 4. ゼロデイ攻撃 5. ランサムウェア 6. SQLインジェクション

1. マルウェア

ウイルス、ワーム、トロイの木馬、ランサムウェアなど、システムやデータに損害を与える悪意のあるソフトウェア。

2. フィッシング

ユーザーを欺いて個人情報や認証情報を盗むための詐欺行為。 インターネットのホームページを複製するのは、5秒ほどあれば簡単にできてしまいます。 フィッシングサイトかどうかを見抜く方法は、URLアドレスが確実ですが、DNS改ざんなどされていない事が前提になります。

3. DDoS攻撃

サービスを停止させるために、膨大なトラフィックを送り込む攻撃。 サーバー負荷を意図的に増加させて、サーバーダウンをさせることを目的にします。 これは、ターミナルなどから最も簡単に行えるため、悪用厳禁のコマンドというのが存在します。

4. ゼロデイ攻撃

公開されていないソフトウェアの脆弱性を利用する攻撃。 サーバーに不要なアプリケーションをインストールすることはやめましょう。 また、それぞれのアプリケーションを最新バージョンに保つことで、セキュリティホールへの対応が必要になります。

5. ランサムウェア

システムの弱点を悪用する高度なマルウェアであり、強力な暗号化を使用してデータやシステム機能を人質にします。 サイバー犯罪者はランサムウェアを使用して、システムの解放やデータの暗号解除をする代わりに身代金を支払うよう要求します。

6. SQLインジェクション

脆弱なアプリケーションに悪意のあるコードが埋め込まれ、データベース照会がバックエンド・データベースに送られ、ユーザーが要求していないコマンドまたは似たアクションが実行されます。 SQLのエンドポイントに対しての攻撃でも、データの内容を改ざんされることもあるため、あらゆる防止策を考える必要があります。 リクエストヘッダや、VPNなど特定IPアドレスからの問い合わせのみ対応するネットワークセキュリティを基本的に設置するのがベースで、コードセキュリティも合わせて行いましょう。

踏み台攻撃

サーバーは、ターミナルコマンドで、数珠繋ぎ的にログインを繰り返す事ができます。 操作を覚えれば誰でも簡単にできるようになるので、簡易にログインができてしまうサーバーを放置しておくことは、簡単に悪用されてしまうことにつながります。 乗っ取られたサーバーで、DDos攻撃などを実行されると、サーバー管理者に責任が追及されてしまうので、セキュリティレベルの低い対策の状態を放置しておくと、ハッカーの的になり、結果的に大きな被害を被ってしまいます。 第三者から踏み台にされないために、サーバーセキュリティをしっかりとセットしておく事は必要不可欠ですね。

必要最低限のサーバーセキュリティ設定

・一般ユーザーからのSUアクセス防止 : sudoコマンドなどを禁止する。 ・鍵運用 : ログインは認証鍵を用いて行うようにする事。ID/PWのみでログインできてしまうシステムは、時間をかければ改ざんされてしまいます。 ・アクセスログの保持 : ログインした日時、アクセスIPアドレスの情報などを保持しておき、定期的に確認を行う運用が必要です。 ・アクセスポイントの限定 : VPSや固定IPアドレスからのアクセスのみを許可する事でほぼ第三者アクセスは防止できます。

あとがき

インターネットセキュリティは、日々情報が更新されていきます。 多くの情報漏洩が、人的で意図的に行われるため、組織の運用ルールや、複数人による監視ルール、実行ログの定期監視など、手間がかかるけど必須の項目を守る必要があります。 インターネットにサーバーを立ち上げるという事は、攻撃されるということに対して対抗できる状態にしておかなければ、都合のいいように利用される攻撃受けサーバーになりかねません。 ニュースなどでITトラブルを聞いた際に、原因は何だったのか? どういった対策が必要だったか?という事を自分なりに考えていくことも重要ですね。 世の中で発生しているITトラブルは、対岸の火事ではなく、自分事として見ることで、セキュリティスキルアップにつながります。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ