🐱

「サーバーの基本」要点

2022/01/01に公開

書籍

https://www.amazon.co.jp/イラスト図解式-この一冊で全部わかるサーバーの基本-きはし-まさひろ/dp/4797386665

1. サーバーとは

  • サーバーとは、サーバーソフトウェアを入れたPC。
    • webサーバー用ソフトウェアをインストールして起動すれば、webサーバーになる。
  • 1台のPCに、複数のサーバーソフトウェアを入れて、複数の(サーバーの)役割を任せることができる。
  • メールの送信はSMTP、受信はPOPというプロトコルを使う。(webはHTTP(S))
サーバーの種類 要約 代表的なソフトウェア
webサーバー HTTPに則りクライアントと通信し、リクエストを受け取って何らかの処理をするもの。そして、場合によってはアプリケーション(例:Rails)にリクエストを投げる。 Apache, IIS(マイクロソフト), nginx
webアプリケーションサーバー RailsでいうとPumaやUnicornなど。Railsアプリケーションを動かしているもの。 Tomcat, WeblogicServer(オラクル), IIS(マイクロソフト)
SSLサーバー 証明書 OpenSSL
DNSサーバー
プロキシサーバー
メール(SMTP/POP)サーバー
FTPサーバー
DBサーバー MySQL, Oracle(オラクル), SQL Server(マイクロソフト)
NTPサーバー
Syslogサーバー
SNMPサーバー
参考記事

https://qiita.com/jnchito/items/3884f9a2ccc057f8f3a3

2. ネットワークの基礎知識

別途、腰を据えて勉強する必要がある。この章は割愛。

3. サーバーを用意する

  • サーバー用のOSをサーバーOSという。UNIX系サーバーOSとWindows系サーバーOSがある。
    • UNIX系 : Linux, AIX(IBM)など
      • Linuxのディストリビューション (=Linuxカーネルとその他の機能をまとめ、ユーザが使いやすいようにしたもの。)
        • RedHat : 大規模システムで使われる。有料。
        • CentOS : RedHatの商用部分を除いたもの。
        • Debian : 広く使われている。
        • Ubuntu : Debianベース。使いやすい。
    • Windows系

4. 社内サーバーの基本

DHCPサーバー

アドレスプール(配布するよう設定したIPアドレス)から未使用のIPアドレスをクライアント(PCなど)に配布する。
家にあるルーターには、大抵この機能が付いている。(詳しくは下記記事を参照。)

参考記事

https://www.officedaytime.com/tips/router2.html

DNSサーバー

  • DNSサーバーは、キャッシュサーバーとコンテンツサーバーに大別される。

  • クライアントがインターネットにアクセスするとき、クライアントからリクエストを受けたキャッシュサーバーが、コンテンツサーバー(権威DNSサーバー)に問い合わせ、ホスト名+ドメイン名に対応するIPアドレスを教えてもらう。(=名前解決)

    • www.sample.co.jpでいうと、
      ホスト名: www
      ドメイン名: sample.co.jp
  • キャッシュサーバーは、名前解決した情報をキャッシュしている。
    コンテンツサーバー(権威DNSサーバー)が、対応表を持っている。

  • DNSサーバーはミッションクリティカルなため、シングル構成でなく、プライマリDNSサーバーとセカンダリDNSサーバーの2つで冗長構成にするのが基本。

プロキシサーバー

プロキシ(proxy) = 代理

クライアントからのインターネットに対する通信を一旦受け取り、クライアントに代わってアクセスする。

以前は、よく閲覧するWebサイトのデータをキャッシュすること(キャッシュ機能)が大きな目的だったが、
今はURLフィルタリング(閲覧していいサイトを限定する)やアンチウイルス(ダウンロードファイルなどにウィルスがないか確認する)などのセキュリティ機能の強化ができるようになっている。

5. 公開サーバーの基本

DMZとは

(DeMilitarized Zone = 非武装地帯)

外部ネットワークと内部ネットワークの間に配置するネットワーク地帯のこと。
(外部に公開するために、内部から隔離した場所。)

内部ネットワークを保護することが目的。
外部からも内部からもDMZは見えるが(「外部、内部→DMZ」はOK)、
「DMZ→内部」は見えないようファイアウォールを設定することで、
「外部→DMZ」のファイアウォールを突破されて乗っ取られても、「DMZ→内部」にはアクセスできないため、内部を保護できる。

公開するサーバー(Webサーバー)は、DMZに配置する。

参考記事

https://www.sbbit.jp/article/cont1/37677
https://wa3.i-3-i.info/word12988.html

NATとは

プライベートIPアドレスをグローバルIPアドレスに変換する。(→インターネットへ接続が可能となる。)
ファイアウォールの機能の一部。

  • 広義のNAT : 複数の端末が1つのルータを介し、ポート番号を変更してインターネットにアクセスする前提。
  • 狭義のNAT : 1つの端末が1つのルータを介してインターネットにアクセスする前提。ポート番号が変換されないため、複数のデバイスが同時にインターネットにアクセスするのは困難。
参考記事

https://it-trend.jp/firewall/article/60-0002

クラウド環境(AWS)のサーバーを公開する

  1. ドメイン名を申請・取得。
    ドメイン取得業者(レジストラ)でドメイン名を申請・取得。(例:お名前.com)
  2. 公開サーバーを用意。
    EC2インスタンス(サーバー)を作成。サーバーソフトウェアをインストール。
  3. グローバルIPアドレスを割り当てる。
    インスタンスは動的にIPアドレスが割り当てられるため、ElasticIPで、固定のグローバルIPアドレスを割り当てる。
  4. Route53に、管理するドメインを登録。
    1.で取得したドメイン名を登録。そのドメイン名を管理するDNSサーバーが表示される。
  5. レジストラにDNSサーバーを登録。
    1.のレジストラに、4.で表示されたDNSサーバーを登録する。
  6. 固定IPアドレスとホスト名を関連づける。
    Route53で、3.で設定したElasticIPと、FQDN(ホスト名+ドメイン名)を関連づける。
  7. セキュリティグループで必要な通信を許可する。
    セキュリティグループで、インスタンスに対する必要最低限の通信のみを許可し、セキュリティを高める。

SSLサーバー

SSL

データを守るために、SSLは3つの技術を組み合わせて使っている。

  • 暗号化 : データを暗号化することで、盗聴を防ぐ。
  • メッセージダイジェスト : データをもとにハッシュ値を計算して、サーバー・クライアントで同じ値であることを確認することで、改ざんを防ぐ。
  • デジタル証明書 : 証明書によってそのコンピュータが本物である確認することで、なりすましを防ぐ。

SSLの暗号化方式

  1. 最初に公開鍵暗号化方式を使ってサーバーとクライアントで共有しないといけない鍵を交換。
  2. 次にその鍵を使って、共通鍵暗号化方式でデータをやり取りする。
公開鍵暗号化方式

サーバー側で暗号化鍵(公開鍵)と復号鍵(サーバー保管の秘密鍵)をペアで作る
クライアントは公開鍵で暗号化し、サーバーは秘密鍵(自身で保管している復号鍵)で復号する。
処理が複雑なのが問題。

共通鍵暗号化方式

サーバーとクライアントで共通の鍵を使って暗号・復号する。
同じ鍵を、どうやってサーバーとクライアントに届けるかが問題。(鍵配送問題)

デジタル証明書

SSLサーバーには必ずデジタル証明書をインストールする必要がある。(手順は下記)

  1. サーバーで秘密鍵・公開鍵を作成。
  2. 公開鍵をCSR(証明書署名要求)として認証局(CA局)に提出。(秘密鍵は当然外部に出さずに大事に保管しておく。)
  3. 認証局はCSRにデジタル署名(お墨付き)を与え、デジタル証明書として返す。
  4. 認証局から返ってきたデジタル証明書をサーバーにインストール。

SSLで暗号化するときの流れ

デジタル証明書をインストールしたら、いよいよSSLサーバーとして動作するようになり、クライアントのSSLサービス要求を受け付けられる。

  1. クライアントが接続してくると、サーバーはデジタル証明書公開鍵とデジタル署名)を返す。
  2. クライアントは返されたデジタル署名を見て、デジタル証明書が正しいかチェックする。
    正しければ、共通鍵の素公開鍵で暗号化して、サーバーに送る。
  3. サーバーは秘密鍵で復号し、共通鍵の素を取り出す。【公開鍵暗号化方式
    (ここまでの処理をSSLハンドシェイクという。)
  4. クライアントとサーバーは共通鍵の素から共通鍵を作り、その鍵で暗号化通信をする。【共通鍵暗号化方式

Webアプリケーションサーバー

Webシステムのほとんどは、Webサーバー・Webアプリケーションサーバー・DBサーバーの3層構造になっている。

VPNサーバー

VPNとは

Virtual Private Newwork = 仮想専用線。
インターネット上に安全な仮想の専用線を作ることで、特定のユーザが安全に通信できる。

下記の2種類ある。

  • 拠点間VPN
    地理的に離れた拠点同士をつなぐ。
    IPsecというプロトコルを使う。拠点間を認証し、通信を暗号化することでセキュリティを確保。
    ルーターやファイアウォールなど、ネットワーク機器が持っている拠点間VPN機能をVPNサーバーとして使う。
  • リモートアクセスVPN
    インターネットに接続さえできれば、会社のサーバーにアクセスできるようになる。(自宅からオフィスに接続する など)
    IPsecVPNとSSL-VPNがある。(詳細は割愛)
参考記事

https://pfs.nifcloud.com/navi/tech/vpn.htm
https://solution.netone-pa.co.jp/blog/342

6. サーバーを障害から守る

障害対策の技術

  • 冗長化
    • チーミング : 複数のNICを論理的に1つに見せる。(Linuxではボンディングという。)
      • フォールトトレランス : 物理NICがアクティブ/スタンバイで動作。
      • ロードバランシング : 物理NICがアクティブ/アクティブで動作。
    • RAID : 複数のストレージドライブを論理的に1つに見せる。
    • クラスタリング : 複数のサーバーを論理的に1つに見せる。
      • クラスター : 複数のサーバーをネットワークで接続し、1台のサーバーのように見せる技術。
    • サーバー負荷分散技術 : 複数のサーバーに通信を振り分けて処理負荷を分散する。
    • 広域負荷分散技術 : 複数の**サイト(地理的に離れた拠点)**に通信を振り分けて処理負荷を分散する。
  • バックアップ
    • UPS : 電源制御。

7. サーバーのセキュリティ

ファイアウォール

ネットワークの出入口に配置し、IPアドレスやポート番号で通信を許可・拒否する。

ファイアウォールの種類

  • ファイアウォール(トラディショナル)
  • UTM
  • 次世代ファイアウォール
  • WAF : アプリケーションレベルで通信を制御。(クロスサイトスクリプティング、SQLインジェクション、CSRF(クロスサイトリクエストフォージェリ))

Discussion

ログインするとコメントできます