SMTPサーバ(平成21年春期 午後問4)
問題を解く上で必要な知識
▼DMZとは何か
インターネットとDMZの間のファイアウォール、DMZと社内LANの間のファイアウォールで何を設定すべきかの読解
▼SMTPサーバの機能
- SMTPサーバをどこに設置するのか
メールソフトに設定するサーバーにはそれぞれ別々の役割があります。SMTPサーバーはメール送信の際に必要なサーバー、たいしてPOPサーバー・IMAPサーバーはメール受信に必要なメールサーバーです。
▼経験則による推測
DMZにメールサーバ、WEBサーバを設置して社内LANにDBサーバを設置することで社内のみからDBサーバへアクセスできるようになっている。
▼足りなかった知識(新しい学び)
各種メールサーバの機能分類(SMTPサーバはメールの送信、POPサーバ、IMAPサーバはメールの転送を行う)
→DMZ上のSMTPメールサーバからインターネット上のメールサーバへの送信を行う
→通信要件から使用するポート番号と通信プロトコルを見て、実装されているか確認する。
→社外アクセス(インバウンド、アウトバウンド)の要件として、踏み台サーバとNAT ゲートウェイの間にプロキシサーバを設置する必要がある。プロキシサーバで許可されている通信はエンドポイント(AZ、各サービス)として定められている。
▼追加の知識(実装)
SESでSMTPエンドポイントを利用するにはメールアドレスの認証とユーザー名・パスワードの取得をすれば良い。
【エンドポイントとは何か】
エンドポイントは、プロトコル・サービス・リージョンコードで構成されています指定方法は簡単で、多様なサービスのアクセス方法を簡素化するために考えられました
【Amazon SESを利用してSMTPエンドポイントを設定する】
EC2インスタンスからメールを送信したいという要望は時々出てきます。 AWSのメール送信サービスには、SES(Simple Email Service)があります。 SESでメール送信するには、「AWSのAPIを利用する」 「SMTPインターフェースを利用する」の2通りある。
・VPC エンドポイントを介して、Amazon SES(以降、SES)の SMTP エンドポイントに接続できる。
SESはAPIを利用して送信だけではなく、EC2などにインストールされたSMTP対応のソフトウェア(Sendmail、Postfixなど)からSESをリレーしてメール送信することが可能。
→メール送信するソフトウェアがSMTPに対応していれば、SESにリレーさせてメール送信が可能。
Amazon SES を使用して SMTP を設定および接続する
Amazon SES を用いた VPC エンドポイントの設定 - Amazon Simple Email Service Classic
【Amazon SESを使うメリット】
エンドポイントはNATを経由せずに他のAWSサービスと接続できるようにする。
エンドポイント経由でメールを送信することのメリットとして以下が挙げられる。
・プライベートなサブネットからAWSのサービスにアクセスする際にNATゲートウェイ、NATインスタンスなどが不要となるため、AWSの利用料を削減できる
・インターネットを経由せずAWSのサービスにアクセスできるため、よりセキュアなアクセス経路が実現できる
Amazon (Simple Email Service)SESですが、バウンス(メールの不着)率が上がると、最悪SESの利用を停止されてしまいます。
SESを設定しただけではバウンスが起きたかどうかがわからないので、Simple Notification Service (Amazon SNS)を使ってSESのバウンスが発生した場合、メールで通知を受けるように設定できる
Amazon SESのバウンスをSNSで取得する。 【ブログ】 » 群馬県高崎市の写真撮影・ホームページ制作会社| Kiraba(キラバ)
【VPCの構成について】
そもそもなぜ複数のVPCを作成しているのか?
→複数のVPCを作成することで障害時に業務を継続できるようにしている
クラスタシステムとは、ネットワーク上で複数のサーバを連携させ、1つのシステムとして利用するシステムです。 単体システムに比べて高い可用性や拡張性を実現できます。 どれかひとつのノードで障害が発生しても、残りのサーバがバックアップすることで、業務を継続できます。
クラスタソフトウェア[DNCWARE ClusterPerfect]・・・クラスタシステムとは|東芝デジタルソリューション
クラスタシステムとしては以下の分類がある。
ロードバランスクラスター:業務の負荷分散を目的としたクラスター
HPC(High Performance Computing)クラスター:業務の性能の向上を目的としたクラスター
HA(High Availability)クラスター:業務継続を目的としたクラスター
AWSを利用する場合はロードバランサーとしては複数のVPCを構築することでHAクラスター構成にして、ロードバランサーとしてELBを用いて負荷分散をしていることが多い。
【冗長化】
障害発生時にサービスを継続させるため、サーバー冗長化を行う。
Active-ActiveかActive-Standby。Active-Standbyの場合、テストとしては切り替わりが成功することを確認する。
【踏み台サーバも冗長化する】
【そもそもVPCってなんだっけ】
VPCではサブネットを設定する。
セキュリテイグループでインバウンドトラフィックとアウトバウンドトラフィックをコントロールすることができるため、インスタンスの仮想ファイアウォールとして機能する。
IPSec
IPSecとは
IPSecとはIPパケットを暗号化して安全な通信を行うためのプロコトル。
IPv4,IPv6にも利用できるが、Iv6には標準でIPv6の機能が組み込まれている。
(引用元:https://www.kagoya.jp/howto/network/ipsec-vpn/)
IPSecの構成要素
以下のような要素でIPSecは構成されている。
(1)認証ヘッダー Authentication Header(AH)
・データの認証機能(ESPと異なる)
・パケットの送信元の認証(ESPと同様)
・暗号化機能はなし(ESPと異なる)
(2)セキュリティペイロードのカプセル化 Encapsulation Security Payload(ESP)
・データの認証機能(AHとは異なる)
・パケットの送信元の認証(AHと同様)
・暗号化機能があり通信内容を秘匿できる(AHとは異なる)
無線LANのアクセス制御方式(平成29年春期 午後問4)
無線LANではフレームを使用してデータを送信する。フレームにはデータフレームやACKフレームがあり、データはデータフレームに格納して送信する。データフレームには、フレームの制御情報とTCP/IPパケットが含まれる。一つのデータフレームに格納できるデータ長には上限があり、上限を超えるデータを送信したい時には、データを複数のデータフレームに分けて送信する。無線LANでは、複数の機器から送信されるフレームがなるべく衝突しないように工夫して、フレームを送信する。
- データフレームを送信しようとする機器は,送信前に他の機器がフレームを送信しているかどうかを調べる。
- 他の機器がフレームを送信していれば,そのフレームの送信が終了するまで待機する。
- 他の機器がフレームを送信していなければ,W1だけ待機する。
- W1の間に,他の機器がフレームの送信を開始しなければ,データフレームを送信し,受信側機器からのACKフレームの到着を待つ。
- W1の間に,他の機器がフレームの送信を開始したときは,(2)に戻る。
- データフレームを受信した機器は,データフレームを受信後,W2だけ待機した後,ACKフレームを送信する。
- 複数のデータフレームを送信する必要があるときは,(1)~(6)を繰り返す。
(基本情報技術者過去問題 平成29年春期 午後問4)
代表的なLANのアクセス制御方式には、有線LANで使用されているCSMA/CD方式と無線LANで採用されているCSMA/CA方式があります。
CSMS/CD(Carrier Sense Multiple Access with Collision Detection)方式では、同じ伝送路を使用する他のノードが送信中でないことを確認するとすぐに送信を開始し、送信が完了する前にフレームの衝突を送信側が検出(Collision Detection)すると、一定の手順を経て再送します。
しかし、無線LANでは衝突の検知が難しいため、CSMA/CA(Collison Avoidance :衝突回避)方式が使われます。CSMA/CA方式では、無線チャネル(伝送路)の使用状況を確認(Carrier Sense)し、伝送路が未使用であれば、ノードごとに異なる通信待機時間(乱数で決定)だけ待ってから送信を開始します。待機中に別のノードが送信を開始してしまうと、送信を開始したノード以外は待機状態に戻り、再び伝送路が未使用になると、残りの通信待機時間(送信できなかったノードは徐々に短くなる)がて供されます。
このような仕組みで、フレームの衝突をできるだけ回避し、いつまでも送信できないノードが発生するのを防ぎます。なお、フレームが正しく送られたかどうかは、受信側からACK(Acknowledge: 肯定応答)フレームが返ってくるかどうかで判断します。ACKフレームが返ってこない場合は、送信に失敗したものとして再送信されます。
3台の機器A、B及びCがある場合について考える。
機器Bを機器Cから離すことによって機器Bと機器Cの間の物理層の通信速度が遅くなった場合、機器Aは機器Bによるフレーム送信が終了するまで待機する時間が長くなるため、機器Aから機器Cへのデータの送信速度は遅くなる。
図の(3)W1待機時間は他の機器が通信している場合に発生する。データフレームの個数は変化しないため、W1の待機回数は以前と変わらない。
また本問では「無線LANの物理層の通信速度は、危機感の距離や障害物の有無によって変化する」とあり、機器B~Cの物理層の通信速度の低下は、機器A~Cの物理層の通信速度への影響要因ではない。
また、最大フレーム長が固定値であるため、伝送速度が変化してもやり取りされるフレームの個数は変わらない。したがって送信データ量も変化しない。
暗号化技術
共通鍵暗号化方式
共通鍵暗号(AES、3-keys Triple DES)は暗号化と復号にペアの鍵を用いるもので、片方の鍵で暗号化したものは、ペアとなるもう一方の鍵でしか復号できない方式。
暗号化や復号を高速で行える反面、暗号化で使用した共通鍵が流出すると容易に復号され、暗号の意味をなさない。
このため共通鍵暗号方式では、送信側と受信側で共通鍵の共有をいかにして安全に行うかがポイントとなる。
公開鍵暗号方式
公開鍵暗号方式は、共通鍵の事前共有の難しさを解決するために提案された方式で、暗号化と復号に異なるペアを用いる。暗号化のための鍵だけを公開し(公開鍵)、復号のための鍵は秘密に保持しておく(秘密鍵)。送信者が公開鍵で暗号化したデータは受信者が秘密に保持している秘密鍵でしか復号できないため、通信経路の途中で盗聴されても安全。
ただし、この際の注意点は、公開鍵が確実に本人のものであるかどうかを確認すること。攻撃者が実在する組織や個人になりすまして、公開鍵を公開している可能性がある。
これを見抜くためには、公開鍵の正当性を保証している認証局の証明書、及びその証明書が信頼できる第三者認証機関(CA)により発行されたものであることを確認する。化したデータもAさんの公開鍵でしか復号できない。
行えること
・Aさんが秘密鍵で暗号化したデータを、他者はAさんの秘密鍵で復号
→このようなデータはAさんだけが作れるので、ディジタル署名でデータの改ざんの検知に用いられる。
・他者がAさんの公開鍵で暗号化したデータを、Aさんの秘密鍵で復号
→このようなデータはAさんだけが読めるので盗聴の防止に用いられる。
RSAの問題点と楕円曲線暗号(DSA)
鍵の一部を成す素数を本来はランダムに選ぶアルゴリズムだが、不備によって自身の公開鍵とは異なる値であっても他者の公開鍵と同じ素数を含んでしまうと、互いに他方の秘密鍵を計算で解読できてしまう。
RSA暗号はこのような脆弱性を抱えているため、楕円曲線暗号を用いることがある。
SSHとは
SSHは遠隔ログインのための通信プロトコル及びソフトウェアであり、通信データの盗聴対策や、通信相手の成りすましを防ぐ仕組みを備えている。SSHではサーバにログインしてデータをやり取りする通信(ログインセッション)に先立って、安全な通信経路の確立と利用者認証を行う必要がある。(FE 平成29年秋)
遠隔ログインを実現する代表的なプロトコルにはTELNETやSSHがある。
TELNETはログイン時のパスワードなども平文で送受信するため、盗聴や改ざんのリスクが指摘された。そんな中、SSH(Secure Shell)が登場した。
安全な通信経路の確立
SSHによる安全な経路の確立は次のようにして、データの受信側で送信元の確認と改ざん検知を行う。
具体的には、送信者がメッセージダイジェストを「自身の秘密鍵」で暗号化したものを本文につけて送信し、受信者側はディジタル署名を「送信者の公開鍵」で復号して照合する。
クライアントがサーバ認証を行う場合、「サーバが偽物ではないか」を確認したい。
この場合、検証対象はサーバとなる。クライアントはあらかじめ入手して正当性を確認しておいたサーバの公開鍵を用いて、サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。
-
(1):クライアントがサーバにアクセスする。
-
(2):サーバとクライアントが,SSHセッションで使用する暗号アルゴリズムについて合意する。
-
(3):サーバとクライアントが,通信データの暗号化に使用するセッション鍵と,他のSSHセッションと区別するためのセッション識別子について合意する。
-
(4):①クライアントがサーバ認証を行う。サーバ認証では,クライアントがあらかじめ入手して正当性を確認しておいたaを用い,サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。
-
(5):合意した暗号アルゴリズムとセッション鍵を用いて,②共通鍵暗号方式による通信データの暗号化を開始する。これ以降の通信は,全て暗号化される。
利用者認証の概要
クライアントからサーバへのログインでは、サーバは利用者認証を行う。SSHの利用者認証の方式にはディジタル署名を用いる公開鍵認証とパスワードを用いるパスワード認証がある。
公開鍵認証では、クライアントの公開鍵を事前にサーバに登録しておき、この登録されている公開鍵に対応すする秘密鍵をクライアントが持っていることをサーバが確認する。
この確認では、クライアントがセッション識別子などに対するディジタル署名をサーバに送信し、サーバがクライアントの公開鍵を用いてディジタル署名を検証する。