Lesson 4

セキュリティ基礎

Lesson 4 Chapter 1
ファイアウォール

レッスン3では、様々な機能を持つサーバーについて学習してきました。
どのサーバーにおいても、ネットワークを使用して情報をやり取りするには適切なセキュリティ対策が必要です。

セキュリティリスクには大きく分けて「脅威」と「脆弱性」があります。

  • 「脅威」不正アクセスで、システムに損害を与える可能性がある原因
  • 「脆弱性」セキュリティホールなど、システムに存在する弱点や欠点

このレッスンでは、大切なシステムやデータを守るためのセキュリティについて学習していきましょう。

まずチャプター1では、サーバーを守るためにネットワークの出入口に配置される「ファイアウォール」について説明します。

ファイアウォールの役割

ファイアウォールは、ネットワークの出入口で外部からの不正アクセスや、外部への許可されていない通信を守るための「防火壁(Firewall)」としての役割を担います。

ファイアウォールは予め設定したルールに従い、通信を許可したり拒否したりする機能を持ちます。 ルールとして以下のような項目を設定することができます。

  • IPアドレス/ポート番号
  • プロトコル
  • 通信方向

設定によっては強固なセキュリティ環境を実現することも可能ですが、利用者の利便性を考慮することも重要です。

ファイアウォールは以下の図のようなイメージで、不正アクセスの侵入や、許可されていない通信を防いでくれます。 server-lesson4-1

ファイアウォールのルール

ファイアウォールのルールは、内部ネットワークと外部ネットワーク間で通信が発生するときに、通信の可否を決めるルールです。 ファイアウォールに設定するルールには「許可ルール」と「拒否ルール」があります。
それぞれの内容について以下の表をご覧ください。

名称 内容
許可ルール 特定の通信を許可するためのルール
拒否ルール 特定の通信を遮断するためのルール

この「許可ルール」と「拒否ルール」は、以下の表のように「インバウンド通信」と「アウトバウンド通信」ごとに設定します。

名称 内容
インバウンド通信 外部から内部に通信を行うときの設定(受信時の設定)
サーバーを外部に公開している場合に該当
アウトバウンド通信 内部から外部に通信を行うときの設定(発信時の設定)
インターネットを利用してWebサイトを閲覧する場合などに該当

例えば、「インバウンド通信」の場合、Webサーバーを公開しているならHTTPとHTTPS以外の通信は不要です。 「HTTPとHTTPSの通信だけを許可して、それ以外は拒否する」といった設定が考えられます。
また、社内のユーザーがインターネットを利用する場合は「アウトバウンド通信」になります。 メールしか利用できないなどというのは不便なので「基本的には許可して、危険な通信だけを拒否する」といった設定を行います。

ファイアウォールの種類

ファイアウォールは、以下の表のように防御方法に応じて3種類に分けることができます。

名称 内容
パケットフィルタリング型 通信をパケット単位で監視して、設定したルールに従って通信の可否を判断。
サーキットレベルゲートウェイ型 パケットフィルタリング型の動作に加えて、通信を許可するポート指定や制御を行う。
使用するアプリケーションごとに設定可能。
アプリケーションゲートウェイ型 HTTPやFTPなどのアプリケーションプロトコルごとに通信を制御する。
送受信するデータの中身を監視するため高いセキュリティ効果。

セキュリティポリシー

どのような通信を許可し、どのような通信は拒否するかの方針が「セキュリティポリシー」です。 セキュリティポリシーを明確にすることにより、必要な機能を持ったファイアウォールを選定することができるようになります。

ファイアウォールを設置することは、外部ネットワークに接続した環境にとって必須のセキュリティ対策です。
ファイアウォールを設置しただけで完全なセキュリティ対策になるわけではなく、あくまでも、ネットワークに対する攻撃や不正アクセスに対するセキュリティ対策の1つと考える必要があります。

このチャプターではファイアウォールを学習しました。次のチャプターではセキュリティ対策におけるプロキシについて学習しましょう。

Lesson 4 Chapter 2
プロキシ

プロキシサーバーは、レッスン3-5で学習した「通信を代理で行う」サーバーです。
セキュリティ対策としてのプロキシには「URLフィルタリング」や「アンチウィルス」などがあることをご紹介しました。
このチャプターではセキュリティ対策における「プロキシ」の役割について具体的に学習していきましょう。

プロキシの役割

企業でプロキシサーバーを利用している例でご紹介します。
プロキシサーバーは、企業の社内ネットワークから、外部にあるインターネットに接続する際に、出入口で中継を行い情報の受け渡しを行います。 内部と外部の通信を直接行うのではなく、いったん中継してデータを確認することによりセキュリティを強化します。
チャプター1のファイアウォールと同じ役割のように見えますが、プロキシはどのようにセキュリティを強化しているのでしょうか? 詳しく見ていきましょう。

セキュリティ対策としてのプロキシの機能

セキュリティを強化する役割でのプロキシの機能を説明していきます。

  • URLフィルタリング
  • URLフィルタリングとは、不適切なURLや業務とは無関係なWebサイトへのアクセスを制限する機能です。 フィルタリングの方法にはいくつか種類があります。
    以下の表にフィルタリングの種類をまとめましたのでご覧ください。

    名称 内容
    ホワイトリスト方式 アクセスしても良いURLをリストに登録し、それ以外は接続できない
    ブラックリスト方式 アクセスしてはいけないURLをリストに登録し、それ以外は接続可能
    レイティング方式 Webサイトに対して一定の基準で格付けを行い、その結果からアクセスの遮断を判断する
    カテゴリフィルタリング方式 Webサイトをカテゴリで分類して、指定したカテゴリに該当する場合は遮断する

    URLフィルタリングは、セキュリティ強化だけではなく、業務の生産性を向上させる目的もあります。

  • アンチウィルス
  • プロキシ上でウィルスチェックを行うことにより、社内ネットワークにウィルスの侵入を未然に防ぐ機能です。
    プロキシサーバーでは、ウィルスのパターンを定義したファイルを「シグネチャ」として保持しています。やり取りするファイルをいったん内部で展開してシグネチャと照合します。

    シグネチャ

    これまでに見つかったマルウェアのデータパターンを「シグネチャ」と呼びます。 アンチウィルスでは、対象のファイル内にシグネチャと一致するデータパターンがないかを確認しています。

  • アクセスログ
  • 誰がどのWebサイトへアクセスしたのかを記録する機能です。 例えば、もしサイバー攻撃による被害が発生した場合、ログの解析を行うことで、いつ・誰が・どこから接続したのかを確認することができます。
    アクセスログについてはレッスン6-5で詳しく解説します。

社内ネットワークとインターネットを接続する際に、中継役となるプロキシサーバーのイメージをご覧ください。 server-lesson4-2

ファイアウォールとプロキシの違い

ファイアウォールとプロキシは、どちらもネットワークの出入口で通信を監視する役割を担います。
同じような機能に感じますが、ファイアウォールはIPアドレスやポート番号などで通信をフィルタリングします。 それに対して、プロキシはURLでフィルタリングします。また、プロキシではアンチウィルスやアクセスログなどの機能も提供しています。 このような違いがあるため、セキュリティ対策としてファイアウォールとプロキシの両方を使用する場合が多いです。

このチャプターではセキュリティ対策におけるプロキシを学習しました。次のチャプターではSSHについて学習しましょう。

Lesson 4 Chapter 3
SSH

SSH(Secure Shell)とは、ネットワークを使用して別のコンピュータにログインしたり、サーバーにアクセスするためのプロトコルです。 このチャプターではSSHについて学習していきましょう。

SSHの役割

SSHが普及する前は「telnet(コンピュータを遠隔操作するためのプロトコルの1つ)」や「ftp」などでリモート通信が行われていました。 しかし、これらの通信は暗号化されていないため、盗聴されるリスクがありました。 SSHを使用することで、認証部分を含めたすべての通信が暗号化されるため、安全に通信をすることが可能になりました。

SSHとSSLの違い

レッスン3-3で学習したSSLも通信を暗号化するサービスですが、SSLはクライアントとサーバー間の通信を暗号化するプロトコルで、 SSHは遠隔でコンピュータを操作するときの通信を暗号化するプロトコルという違いがあります。

SSHの認証方式

SSHでの認証方式には「パスワード認証方式」「公開鍵認証方式」があります。

  • パスワード認証方式
  • SSH接続のパスワード認証は、サーバーのユーザーアカウントに設定している情報で行います。 サーバーに登録しているユーザー名とパスワードが分かれば誰でも接続可能です。 そのため、パスワードが流出すると誰でもログインできてしまう危険性があります。

  • 公開鍵認証方式
  • 公開鍵認証方式は「公開鍵」と「秘密鍵」のペアを使用して認証を行います。
    事前に作成した公開鍵をサーバーに登録しておき、秘密鍵を自分のPCに保管します。 サーバーにログインする際に、秘密鍵を使用して署名を作成しサーバーへ送信します。 サーバーは受け取った署名を事前に登録している公開鍵で検証して成功した場合のみログインできる仕組みです。
    秘密鍵を持っているPC以外からはログインできないため、セキュリティを強化することができます。

では、公開鍵認証方式の流れを図で確認しましょう。
server-lesson4-3 「公開鍵」と「秘密鍵」のキーペアはどのOSでも簡単に作成できるので、作成したら公開鍵をサーバーに登録することがポイントです。

SSHの種類

SSH接続を受け付ける代表的なサーバーソフトウェアを以下の表でご紹介します。

名称 内容
OpenSSH サーバーとクライアント両方の機能を持ち、UNIX系OSにデフォルトでインストールされていることが多い
2019年以降はWindowsにもデフォルトでインストールされている
Apache MINA/SSHD JavaでSSHサーバーを構築することができるライブラリ

SSH接続するクライアント側のソフトウェアは「OpenSSH」のほか、「PuTTY」や「Tera Term」が有名です。

OpenSSHは、UNIX系OSだけでなくWindowsでもデフォルトでインストールされるようになっているので、GitHub利用時などに利用する機会があるかもしれません。

このチャプターではSSHを学習しました。次のチャプターではVPNについて学習しましょう。

Lesson 4 Chapter 4
VPN

VPN(Virtual Private Network)とは、物理的に離れた場所にある2つの拠点間を、特定のユーザーだけが利用できる仮想のネットワークでつないで安全な通信を実現する技術です。 従来は安全な通信を行うために、物理的な「専用線」を構築していましたが、VPNを利用することで専用線を引く必要も少なくなりました。
「送信側」「受信側」それぞれに設置したVPN装置で「トンネリング」を行うことで、第三者に見えない仮想的な「トンネル」を形成します。 形成したトンネルでデータを送るときには「カプセル化」という処理を行うことで、セキュリティを強化した通信が可能になります。
それぞれの処理については、このあと詳しく説明します。

専用線

専用線とは、ある2つの拠点間を物理的な専用の通信回線で接続する回線のことです。 セキュリティ効果は強固ですが、非常に高価で、構築や保守にもコストがかかります。また1拠点対1拠点の接続しか対応できません。

VPNの役割

企業のネットワークを例にVPNの役割を説明していきます。
企業が独自に構築した社内ネットワーク内で通信する場合、外部に接続することはないので安全な通信を行うことができます。 ですが、物理的に距離が離れた本社と支社などで通信を行う場合はどうでしょうか?
このような場合、従来は専用線を構築して安全な通信を確保することが一般的でした。 その課題として、構築に時間がかかることや、高額な費用などがあげられていました。 これらの課題を解決するために登場したのがVPNです。VPNを利用することで、コストを抑えて安全性の高い通信を行うことが可能になります。 現代ではリモートワークで外部から社内システムにアクセスする際にも利用されています。

VPNの仕組み

では、VPNの仕組みについて詳しく見ていきましょう。
VPNを支える技術には、冒頭でも登場した「トンネリング」と「カプセル化」の他に、「認証」と「暗号化」を使用して通信の安全性を強化しています。
どのような技術を使用しているのかをひとつづつ解説していきます。

  • トンネリング
  • VPNはネットワーク上に仮想的な専用線を構築します。
    通信を行う2つの拠点間で仮想的な通信経路を形成することを「トンネリング」と呼びます。 そこで通信を行うことにより外部からの不正アクセスを防止しています。

    トンネリングによって形成された通信経路は「トンネル」と呼ばれています。 トンネルでは、本来通信を行いたいプロトコルとは「別のプロトコル」で通信を行います。 これが、外部から通信経路を見えなくする仕組みです。 しかし、別のプロトコルで通信を行うため、データがそのままの状態では通ることができません。 これを通信可能にするために、次で説明するカプセル化を行います。

  • カプセル化
  • カプセル化は、本来通信を行いたいプロトコルとは「別のプロトコル」で形成されているトンネルで、データの状態を変えて通信可能にする技術です。
    ネットワーク上を移動するデータは、送信できるサイズに分割して送信されています。この分割されたデータのことを「パケット」と呼びます。
    カプセル化は、パケットを「別のプロトコルのパケット」で包み込むことで通信可能な状態にします。 これにより、公衆回線を利用しても安全性の高い通信を実現しています。

  • 認証と暗号化
  • このあとの「VPNの種類」でご紹介しますが、VPN接続の1つに、導入している企業も多い「IPsec-VPN」があります。 IPsec-VPNでは「IPsec(アイピーセック)」というプロトコルを使用して認証と暗号化を行います。
    IPsecは仕組みが複雑なので、1つの例として下の図と共に説明していきます。

server-lesson4-4

    < 認証とトンネリング>

  1. IKE(Internet Key Exchange Protocol)プロトコル
  2. IKEプロトコルは、鍵交換に用いられるプロトコルです。
    ここでは「事前共通鍵(Pre-Shared Key)」を使用した方法でご紹介します。

    1. 準備段階として予め各通信を行うVPN装置に「事前共通鍵」を設定しておきます。
    2. 事前共通鍵を設定しておくことにより、VPN装置間で相互に認証が行われます。
    3. 接続が確立すると、データの暗号化に必要な鍵の生成と、IKEプロトコルを使用して鍵交換が行われます。
    4. 双方向でトンネルが形成されます。
      ※送信用と受信用では別のトンネルを形成します。

    < カプセル化と暗号化 >

  1. トンネルモード
  2. パケットの暗号化は「トランスポートモード」と「トンネルモード」の2種類あります。 トランスポートモードは、パケットの「ヘッダ部」と「データ部」のうちデータ部のみを暗号化するモードです。 トンネルモードは、ヘッダ部も含むパケット全体を暗号化します。ここでは、トンネルモードをご紹介します。

    1. トンネルモードでは、パケットのヘッダ部を含めた全体を暗号化します。
    2. 暗号化したパケットに新しいヘッダ部を付け加えてカプセル化を行います。
    3. 「ESP(Encapsulating Security Payload)」プロトコルを使用して転送します。
      ESPプロトコルは、データの暗号化と完全性検査(認証)を行う事で、情報漏洩と改ざんを防ぐプロトコルです。
    4. 受信先VPN装置でパケットのカプセル化解除と復号をして、受信相手に届けられます。

多くの企業で利用されている「IPsec-VPN」の処理のイメージをご紹介しました。 補足として、転送するときのプロトコルにはESPの他に「AH(Authentication Header)」もあります。 AHはデータの暗号化を行わず転送する仕様なので、暗号化したデータ通信が禁止されている国で使用されているようです。

VPNの種類

VPNの仕組みを学習したので、次はどのような種類があるのか学んでいきましょう。
VPNには、「インターネットVPN」「エントリーVPN」「IP-VPN」「広域イーサネット」の4つの種類があります。
さらに「インターネットVPN」には「IPsec-VPN」と「SSL-VPN」の2種類ありますので、順番にご紹介していきます。

  • インターネットVPN
  • インターネットVPNとは、既存のインターネット回線を利用してトンネルリングを行います。 インターネットへの接続環境があればどこでも利用できるので、コストを抑えることができますが、他のVPNよりも安全性や通信の安定性は低くなります。
    主に使用されているインターネットVPNには次の2種類があります。

    • IPsec-VPN
    • IPsec-VPNとは「Internet Protocol Security」の略で、パケットを暗号化してVPN接続を行うプロトコルです。 IPsec単体で暗号化が完結されるので、インターネットVPNの中ではもっともセキュリティ性が高い接続方式として、多くの企業で導入されています。 端末にソフトウェアをインストールすることで、外部からのリモート接続も可能です。

    • SSL-VPN
    • SSL-VPNは、暗号化にSSL技術を使用してVPN接続を行います。 クライアントからの接続にはWebブラウザを使用して接続できるため、複雑な設定をしなくてもVPN接続が可能になります。 指定のURLにWebブラウザ経由でログインし、それをVPN装置が認証サーバーと連携して認証します。 認証に成功すると、以降プロキシとして、クライアントとWebサーバー間の接続を管理します。

  • エントリーVPN
  • エントリーVPNとは、各拠点から通信事業者のアクセスポイントまでは既存のインターネット回線を利用します。 アクセスポイントからアクセスポイントの間は通信事業者が提供する閉域網を利用してトVPN接続を行います。 インターネット回線と閉域網を併用するので、インターネット回線の混雑状況により通信速度が安定しないこともあります。

  • IP-VPN
  • IP-VPNとは、通信事業者が独自に用意した閉域網を使用してVPN接続を行います。 利用するには通信事業差者との契約が必要で、エントリーVPNより通信速度が安定しやすかったり、安全性も高くなります。 ただしその分コストは高くなります。

  • 広域イーサネット
  • 広域イーサネットとは、通信事業者の専用回線を利用して、企業ごとに専用のネットワークを構築します。 広域イーサネットでは、レイヤー2と呼ばれる通信事業者の通信網を使用するため、他のVPN接続ではプロトコルに制限がありますが、広域イーサネットには制限がありません。 自由にネットワークを構築できて、より安全性が高くなるメリットがありますが、コスト面の高さや範囲の狭さなどのデメリットもあります。

閉域網

閉域網とは、誰でも利用できるインターネットとは違い、インターネットから分離することでセキュリティを確保したネットワークのことです。 インターネットは開かれたネットワークであることに対し、閉域網は閉じられたネットワークを意味します。

VPNの比較

各VPNの特徴が分かりやすいように、表にまとめましたのでご覧ください。
通常のインターネット回線を利用するか、閉域網を利用するかが大きな違いになります。 扱う情報の機密性によって、選択するVPNの種類は変わってくるでしょう。

VPN 回線 通信速度 コスト セキュリティ 主なプロトコル
インターネットVPN
・IPsec-VPN
インターネット ベストエフォード型
(混雑状況により変動)
低い やや高い IP
(IPsec)
インターネットVPN
・SSL-VPN
低い 普通 IP
(SSLで暗号化)
エントリーVPN インターネット+閉域網 比較的低い やや高い IP
IP-VPN 閉域網 ギャランティ型
(通信速度保障)
高い 高い IP
広域イーサネット 非常に高い 非常に高い 制限なし

このチャプターではVPNを学習しました。次のチャプターではDNSのセキュリティ対策について学習しましょう。

Lesson 4 Chapter 5
DNS

レッスン3-4でDNSサーバーについて学習しました。 ホスト名からIPアドレスを名前解決するDNSサーバーですが、この仕組みを悪用したセキュリティ攻撃が後を立ちません。
このチャプターではDNSサーバーのセキュリティ対策について学習していきましょう。

DNSサーバーの脆弱性

DNSサーバーは、Webサービスやメールを利用するために無くてはならない重要なシステムです。 それなのに、DNSの通信のほとんどが信頼性より高速性を重視するUDP(User Datagram Protocol)を使用しています。 また、受け取った情報が正しいのかチェックも行っていません。 このような特性から、DNSは長い間攻撃者の標的とされています。

DNSサーバーの攻撃手法

では、どのようにDNSサーバーが攻撃されるのか確認しましょう。

  • DNSキャッシュポイズニング攻撃
  • DNSキャッシュポイズニング攻撃とは、悪意のある攻撃者がキャッシュサーバーに偽のDNS情報を送りこむことで、不正なサイトにアクセスさせたり、キャッシュサーバーの機能を停止したりする攻撃です。

  • ゾーン転送要求攻撃
  • DNSサーバーは基本的に1台ではなく2台以上で構成され冗長化されています。
    例として2台で構成されている場合、プライマリ(メイン)とセカンダリ(予備)のDNSサーバーは、バックアップとして同じゾーンファイルを保持する必要があります。 2台のDNSサーバーで、ゾーンファイルを同期する機能を「ゾーン転送」と呼びます。
    通常このゾーン転送は、プライマリから変更の通知を受けたとき、または一定時間経過後に確認処理を行って、変更があった場合はセカンダリ側から要求します。 このゾーン転送を要求することを「ゾーン転送要求」と呼びます。
    ゾーン転送要求攻撃とは、ゾーン転送要求を外部から送り込み、その応答を見て内部構成を把握し、不正なDNS情報を送り込む攻撃です。

  • カミンスキー攻撃
  • カミンスキー攻撃とは、まずキャッシュサーバーに対して、「ドメインは存在するが、存在しないホスト名」を問い合わせることで、キャッシュサーバーからDNSサーバーに強制的に問い合わせを行うようにさせます。 これにより任意のタイミングで「DNSキャッシュポイズニング攻撃」を仕掛けるチャンスを作ろうとする攻撃です。

  • DNSフラッド攻撃
  • DNSフラッド攻撃とは、1つまたは複数のDNSサーバーを対象に、名前解決のためのリクエストを大量に送信するDDoS攻撃です。
    攻撃者がDNSサーバーに対して、名前解決できない大量のリクエストを一方的に送信することにより、DNSサーバーのキャッシュは無効なリクエストで肥大化します。 これにより、正当なユーザーの名前解決を妨害してアクセスできなくする攻撃です。
    ※DDoS攻撃については、レッスン5-1で詳しく学習します。

DNSサーバーの冗長化

DNSサーバーは、目的のWebサーバーにアクセスするための重要なサーバーです。 負荷分散や障害が発生した場合などに備えて、シングル構成ではなく「プライマリDNSサーバー」と「セカンダリDNSサーバー」の冗長構成で運用するのが基本です。

DNSのセキュリティ対策

DNSサーバーを攻撃者から守るために行われている、セキュリティ対策を確認していきましょう。

  • サーバーソフトウェアのバージョンアップ
  • 最新のセキュリティパッチを適用することにより脆弱性をなくす。

  • 外部向けと内部向けにゾーン情報を分離する
  • 外部向け用と内部向け用にゾーン情報を分離して、制限をかけることにより、内部情報の漏洩を防止する。

  • ゾーン転送制限
  • ゾーン転送をセカンダリDNSサーバーからの要求のみ受け付けて、それ以外は受け付けないように制限することにより情報漏洩を防止する。

基本的にはこのような対策をしていますが、さらにセキュリティを強化するために「DNSSEC」という仕組みが利用されています。

DNSSEC

DNSSEC(DNS Security Extensions)とは、DNSの脆い点を改善するためにDNSのセキュリティを拡張することで、「DNS応答が正しいサーバーから応答されたものであるかを検証する仕組み」です。
この検証にはレッスン3-3で登場した「公開鍵暗号化方式」と「電子署名」の仕組みを応用して行います。

電子署名

「電子署名」とは、送信者が送信するメッセージ内容のハッシュ値を計算して、そのハッシュ値を秘密鍵で暗号化します。この暗号化したハッシュ値が「電子署名」です。
送信者はメッセージと共に電子署名を受信者に送ります。受信者は受け取ったメッセージ内容についてハッシュ値を計算します。そして電子署名を送信者の公開鍵で復号します。 復号したハッシュ値が同一であればメッセージが改ざんされていないことが分かります。

下の方にある図と共に説明します。
①クライアントから、ドメインを管理しているコンテンツサーバーへ問い合わせが入ります。
②コンテンツサーバーには、予め「DNSデータ」のハッシュ値を計算して暗号化した「電子署名」があります。
③リクエストされたDNSデータが見つかると、応答として「DNSデータ」「公開鍵」「電子署名」をセットで送ります。
④キャッシュサーバーは、受信した「DNSデータ」のハッシュ値を計算して、「電子署名」を「公開鍵」で復号した結果が同じかを確認します。
同じならIPアドレスをクライアントに渡し、違う場合は不正な応答と判断して、名前解決に失敗したとユーザーに返答します。

server-lesson4-5

信頼の連鎖

上記の方法での検証には、受け取った公開鍵が当人(親ゾーン)のものであると確証できることが前提となります。
あるゾーンの管理者(子ゾーン)は、親ゾーンの管理者に自ら(子ゾーン)の「公開鍵のハッシュ値(Delegation Signer)」を送信します。受け取った親ゾーンの管理者は、受け取った公開鍵のハッシュ値が正しいことを確認し、自ら(親ゾーン)の秘密鍵で署名して公開します。 この仕組みにより、あるゾーンで受け取った公開鍵についても、親ゾーンが公開している署名を、受け取った公開鍵で復号することで本物かどうか確認できます。 これをその親ゾーンでも同様に、さらにその親ゾーンにDelegation Signerを登録することで信頼の連鎖ができるようになります。

このチャプターではDNSサーバーのセキュリティ対策を学習しました。次のチャプターではユーザーの操作権限について学習しましょう。

Lesson 4 Chapter 6
ユーザーの操作権限

同じシステムを複数人で使用していた場合、誰でも全ての操作が可能な状態だとしたら、どうなるのか想像できるでしょうか?
全ての操作が可能ということは、誰でもファイルの作成や、編集、削除ができたり、アプリケーションをインストールしたり、設定の変更ができるということです。

このような状態では、自分が作ったファイルを誰かに削除されてしまったり、設定を変更されてシステムが不安定になってしまうかもしれません。 故意ではなかったとしても、誤操作で起こる可能性もあります。
誰でも全ての操作ができてしまうと、何が起こるのか予測できない怖さがあります。

上記のようなことがないように、OSにはアカウントごとに制限を付ける機能があります。 このチャプターでは、アカウントごとに制限を付ける「ユーザーの操作権限」について学習していきましょう。

ユーザーの分類

Windows系OSでもLinux系OSでもログインしたアカウントによって大きく分けて「一般ユーザー」と「管理者ユーザー」に分類されています。
各ユーザーにどのような違いがあるのか、以下の表にまとめましたのでご覧ください。

OS 名称 役割
Windows系OS 管理者ユーザー PC全体を管理。
全ての設定を変更できて、全てのファイルとプログラムを操作可能。
一般ユーザー ほとんどのアプリケーションを使用可能。
ほかのユーザーアカウントや、PCのセキュリティに影響しない項目を設定可能。
プログラムのインストール・アンインストールは管理者権限(管理者のパスワード)が必要。
Linux系OS 管理者ユーザー root、スーパーバイザー。
システム管理にまつわるあらゆるコマンドを実行できる。
一般ユーザー システム管理はできない。
自分のディレクトリ内でのファイルの追加・閲覧・変更が可能。
システムユーザー システム内で特定のプログラムを実行するための専用アカウント。
※プログラム実行用なのでログイン用には使用してはいけない。

システムユーザー

Linux系OSにシステムユーザーというアカウントがあります。
これはログインには使用しないアカウントですが、どのように利用されるのか説明します。
サーバーの運用は、1サーバー1機能しか提供していない訳ではなく、Webサーバーとメールサーバーなど複数の機能を持たせることもあります。 root権限でログインすると全てのプログラムを動かすことが可能です。そのため、もしどれかのプログラムに脆弱性があり乗っ取られてしまった場合、システム全体が乗っ取られてしまいます。 それを避けるために、特定のプログラムを動かす場合は専用のシステムユーザーで実行するようにしています。

個人で使用しているPCの場合は、管理者ユーザーでログインをしていても問題は少ないですが、サーバーの場合は基本的に一般ユーザーでログインすることが推奨されています。 なぜかというと、管理者ユーザーはシステム全体の操作ができるので、誤操作で設定を変えてしまったり、ファイルを削除してしまう可能性があるからです。
一般ユーザーでログインした場合でも、必要なときにだけ一時的に管理者の権限を使用することができるようになっています。これは、Windows系OSでもLinux系OSでも同様です。
万が一の場合を意識して行動することがセキュリティ対策として重要なことです。

このチャプターではユーザーの操作権限を学習しました。次のチャプターではフォルダ/ファイルのアクセス権限ついて学習しましょう。

Lesson 4 Chapter 7
フォルダ/ファイルのアクセス権限

アクセス権についてはレッスン3-9でも、ファイルサーバーで設定するアクセス権についてご紹介しました。
このチャプターではさらにフォルダ/ファイルのアクセス権限について詳しく学習しましょう。

アクセス権とは

アクセス権とは、ひとつのシステムを複数のユーザーで利用する際に、ネットワーク上で共有しているフォルダやファイルを、ユーザーによって取り扱いを制限するための権限です。 Windows系OSとLinux系OSで違いがあるので説明していきます。

Windows系OSのアクセス権

Windowsのフォルダ/ファイルのアクセス権には「NTFSファイルシステムに内在するアクセス権」と「SMB/CIFS(共有フォルダ)サービスに内在するアクセス権」の2種類あります。

  • NTFSファイルシステムに内在するアクセス権
  • NTFS(NT File System)とは、Windowsにおけるファイル管理の仕組みです。 フォルダ・ファイル1つ1つにアクセス許可・拒否のルールが設定されています。

    NTFSアクセス権には「基本のアクセス許可」と「高度なアクセス許可」が存在します。 「高度なアクセス許可」には13種類もあります。その13種類の組み合わせで、よく使われる組合わせを「基本のアクセス許可」、基本のアクセス許可とは違う組合せを「特殊なアクセス許可」と呼びます。

    まずは「基本のアクセス権」を以下の表にまとめました。
    レッスン3-9のファイルサーバーで説明した内容を詳細に分けたものです。

    基本のアクセス許可 ファイルへのアクセス許可 フォルダへのアクセス許可
    フルコントロール すべての操作が可能
    変更 所有権の変更、アクセス権の変更以外の操作が可能
    読み取りと実行 ファイルの読み取りと実行が可能 フォルダへのアクセス
    フォルダの内容の一覧表示が可能
    フォルダーの一覧表示
    読み取り フォイルの読み取りが可能
    書き込み ファイルへの書き込みが可能 フォルダ配下にファイルやフォルダの作成が可能
    特殊なアクセス許可 高度なアクセス許可の組合せが特殊な場合
    ※上記の組合せにない組合せ

    次に「高度なアクセス許可」をご紹介します。
    かなり細かく分類されているのが分かると思います。

    高度なアクセス許可 ファイルへのアクセス許可 フォルダへのアクセス許可
    フォルダのスキャン/ファイル実行 プログラムとして起動可能 対象フォルダの1つ下のフォルダへアクセス可能
    フォルダの一覧/データ読み取り ファイルのデータ領域を閲覧可能 対象フォルダ内へアクセス可能、一覧表示可能
    属性の読み取り Time Stampなどの属性情報を閲覧可能
    拡張属性の読み取り 拡張属性情報(ユーザーが独自につけた属性)を閲覧可能
    ファイルの作成/データの書き込み ファイルへの書き込みが可能 対象フォルダ配下にファイルの作成が可能
    フォルダーの作成/データの追加 ファイルへの追記が可能(上書き保存不可) 対象フォルダ配下にフォルダの作成が可能
    属性の書き込み Time Stampなどの属性情報を書き込み可能
    拡張属性の書き込み 拡張属性情報を書き込み可能
    サブフォルダとファイルの削除 対象フォルダ配下のフォルダとファイルの削除が可能
    削除 ファイルの削除が可能 対象フォルダの削除が可能
    アクセス許可の読み取り アクセス権情報の読み取りが可能
    アクセス許可の変更 アクセス権の変更が可能
    所有権の取得 所有権の変更が可能

    基本のアクセス許可で対応できないケースでは、高度なアクセス許可から選択する必要がでてきます。 そのときに設定したアクセス権は「特殊なアクセス許可」に分類されます。

  • SMB/CIFS(共有フォルダ)サービスに内在するアクセス権
  • SMB/CIFSは、Linux系など別のコンピュータがWindowsマシンの共有フォルダにアクセスする場合に適用されます。 このアクセス権は「読み取り」と「読み書き」の2種類のみとなります。

Linux系OSのアクセス権

Linux系OSでは、ファイルやディレクトリ(フォルダ)に設定するアクセス権を「パーミッション」と呼びます。
パーミッションを確認するには、適当なディレクトリで以下のようにコマンドを実行することで表示されます。
※例として、sample.txtを作成して、その詳細情報を表示するコマンドです。

$ touch sample.txt

$ ls -l sample.txt

そうすると、以下のような行が表示されます。

-rw-r--r-- 1 user group 0 Jan 17 11:02 sample.txt

パーミッションの読み方は左側の「-rw-r--r-- 1 user group」を見て確認します。
分かりやすくするため[]で分割します。
①[-]②[rw-]③[r--]④[r--]⑤[1]⑥[user]⑦[group]

まず最初の1文字目①の意味は、

種別 意味
- ファイル
d ディレクトリ(フォルダ)
l シンボリックリンク(Windowsでいうとショートカットと同じ仕組み)

となっていて、今回は「-」なのでファイルを表しています。

2文字目から4文字目②「rw-」はファイルの所有者に対する権限で⑥「user」の部分が所有者名、
5文字目から7文字目③「r--」はファイルの所有グループに対する権限を表し⑦「group」の部分がグループ名、
8文字目から10文字目④「r--」はその他に対する権限を表しています。
※⑤の「1」はハードリンク数(1つのファイルに対して、対応するファイル名を複数持つことができる)を表しています。

Linux系OSのアクセス権は「読み取り」「書き込み」「実行」の3種類があります。

種別 権限
r 読み取り
w 書き込み
x 実行

つまり、対象のsample.txtはファイルで、
所有者の「user」は「読み取り」「書き込み」の権限があり、
グループの「group」では「読み取り」のみ権限があり、
その他に「読み取り」の権限があることを表しています。

Linux系OSでは、root権限かファイルの所有者だけがパーミッションを変更することが可能です。

アクセス権の設定は、不正アクセスから重要な情報を守るための設定です。 アクセスすべき正当なユーザーに対してのみ、必要な操作を許可することでセキュリティを強化することに繋がります。

以上、本レッスンではセキュリティの基礎を学習しました。
次のレッスンではサイバー攻撃について学習していきましょう。