FTPでファイルをアップロード、ダウンロードする際、ASCII(アスキー)モードとBinary(バイナリ)モードかを選ぶことができます。
<ASCIIモード> ASCIIモードは、主に画像ファイル以外を転送する際に使われ、別名テキストモードとも言われています。HTMLファイルやテキストファイル、CGIファイル、その他のスクリプトファイルはASCIIモードで転送するのが望ましいです。 ASCIIモードでファイルを転送すると、そのファイルに含まれている改行コードや文字コードがOS環境によって転送先と異なっていても、ファイルを受信する側のOS環境に合わせて自動的に変換されます。 <Binaryモード> Binaryモードは、GIFファイルやJEPGファイル、PNGなどの画像ファイルや、FLV(フラッシュビデオ)、MP4などの動画ファイルを転送したい場合に適しており、これらのファイルはバイナリファイルと呼ばれ、文字コードを含まないファイル形式として扱われます。もし、バイナリファイルをASCIIモードで転送すると、破損の原因になりかねません。 バイナリファイルは、専用のアプリケーションで扱うことを前提に文字コードを考慮せず作られています。その為、Binaryモードでファイルを転送する際、改行コードの変換は必要なく、そのまま転送を行います。 Ajaxとは「Asynchronous JavaScript + XML」の略語で、Webブラウザ内で表現力の高いWebページを構築する技術の一つです。例としてGoogle map やGmailが挙げられます。
そもそもAsynchronousという言葉は「非同時性」「非同期に」という意味で、Ajaxの技術的長所はJavascriptとXMLを使って、Webページ全体の読み込みとは非同期にサーバーと通信を行うことができる点にあります。 そのため、通常の同期通信のようにサーバーからレスポンスが返ってくるまで他の作業ができないといった事は発生せず、Ajaxではページの必要な部分だけを書き換えたりすることができます。 <同期通信> 同期通信とは、送信者と受信者のタイミングを合わせてデータのやり取りを行う仕組みのことです。Webブラウザからサーバーにリクエストを送信し、サーバーからレスポンスが返ってくるまで他の作業をする事は出来ません。また、Webブラウザからサーバーにリクエストを送信し、レスポンスが戻ってくる時というのは、Webページ全体の情報を通信していることになります。そのため、画面の遷移(切り替わり)が行われる際は、一瞬画面が白くなります。 <非同期通信> 非同期通信とは、送信者と受信者のデータのやり取りのタイミングを合わせずに通信を行う仕組みのことです。Webブラウザからサーバーにリクエストを送信し、サーバーからレスポンスが返ってこなくても、他の作業を行うことができます。つまり、Webブラウザからサーバーにリクエストするのは一部の情報だけなので、その部分以外のページには何の影響もなく、画面の遷移(切り替わり)が行われる際も白くなることはありません。 Ajaxを使用することで、画面遷移をせずにコンテンツを書き換えることができ、また、他の処理と同時並行でサーバーとのやりとりを行うこともできるので、サーバー負荷の軽減やユーザビリティの向上に繋がります。 Pingとは、Packet Internet Groperの略で、TCP/IPネットワークにおいて、相手先ホストとのネットワーク疎通が正しく行われているかを確認するためのコマンドのことを言います。
Pingは、ICMP(Internet Control Message Protocol)のechoコマンドの仕組みを使って、ネットワーク疎通を確認したいホストに対してIPパケットを発行し、そのパケットが正しく届いて返答が行われるかを確認します。 Pingコマンドが正常に実行できれば、通常はホスト間のネットワークは正常であると判断されます。一方、エラーが発生した場合は何らかのネットワーク障害が発生しているとも考えられ、ICMPパケットの返答内容から、ある程度のエラーの原因を把握することは可能です。しかし、その原因の把握についてはあくまで推測の域を超えることはなく、例えば、ハード面の障害なのか、ルーターの障害なのかといった確認は別の方法で詳細に行う必要があります。 jQueryとは、プログラム言語「Javascript」のコードを容易に記述できるように設計されたライブラリのことを言います。ここでいうライブラリとは、よく使う機能をパーツ化してまとめたものという意味で、つまり、jQueryはJavascriptのライブラリと言われるだけあって、Javascriptの利用度の高い機能がぎゅっとまとめられています。
<jQueryを利用するメリット> そもそもJavascriptとは主にブラウザ上で使われる言語で、Webサイトでユーザーの操作に反応してアニメーション効果をつけたり、表示そのものを動的に見せたりなど様々な画面で使われています。 こういった複雑なプログラムをJavascriptで一から書くと何十行にもなりますが、jQueryを使用すると短いコードで記述することができ、プログラムが出来ない人でも比較的簡単に扱うことができます。また、基本的にどのブラウザでも問題なく動作するのも使用するメリットの一つです。 <jQueryを利用するには> 実際にWebサイト上でjQueryを使えるようにするには、あらかじめjQueryをHTML上に記述し、読み込んでおく必要があり、主に2種類の読み込み方法があります。 (1)ローカル環境でも、Webサーバーでも、どちらでも構わないので、jQueryのサイトからダウンロードを行います。 (2)公開されているWeb上のソース(パス)を読み込ませます。 jQueryを利用するには、先にjQueryを読み込んでからプログラムを記述する必要があり、ライブラリの記述をして動作の記述を行うという順番を守らないとプログラムの実行がなされない場合があります。 S/MIME(Secure/Multipurpose Internet Mail Extensions)とは、インターネットで電子メールを送受信する際に、第三者による盗聴、なりすまし、メールの改ざんといった、主にフィッシング詐欺を防止する技術の一つです。
電子メールのセキュリティを向上する暗号化方式の一つであり、電子証明書を用いてメールの暗号化とメールへの電子署名を行うことができます。 MIMEとは、Multipurpose Internet Mail Extensionsの省略で、電子メールで添付ファイルを送るときに使われる技術のことです。 電子メールでファイルの受け渡しが行われる際、「そのファイルがどういう種類のファイルなのか」を表す情報も一緒に送られます(例えば、「text/plan」「text/html」「image/png」等)。 このように、画像や音声、コンピュータプログラムの実行ファイル、HTML文書、オフィスソフトの文書ファイルなど、テキスト以外のバイナリデータをテキストデータに変換して送っているのがMIMEです。 S/MIMEとは、このMIMEを拡張し、電子署名を利用した認証やメールの暗号化を行えるようにしたものを言い、信頼できる第三者機関である認証局が発行した電子証明書を使い、送信するメールの暗号化や、電子署名を付けたメールを送ることができます。 S/MIMEを使ってメールの送受信を行うには、送信者と受信者の両方がS/MIMEに対応するメールソフト使っている必要があります。 BINDとはDNS(Domain Name System)を実装する際、一般的に使われているアプリケーションで、世界中で運用されているDNSサーバの大半で用いられています。
そもそもBINDとは、関連づける、結びつけるという意味を持つ英単語で、IT分野においては、個々の要素やデータ、ファイルなどが相互に関連づけられている状態、または、そのような状態を実現できる機能を表します。 ここで、DNSを簡単に説明しておくと、DNSの目的とはホスト名(ドメイン名)とIPアドレスを関連づけること(名前解決)です。DNSはドメイン名に対応して階層化されており、その最上位に位置するDNSサーバをルートサーバと言います。DNSサーバは、自分が知らないホスト名に関する名前解決のリクエスト、例えば「www.7artisan.com」というホスト名の名前解決リクエストがあった場合、まずはルートサーバに問い合わせを行います。その後、下位のサーバへとホスト名を問い合わせていき、最終的にホスト名に対応するIPアドレスが返される仕組みになっています。 このDNSにおける問い合わせの方法はRFC(インターネット技術に関する技術仕様がまとめられた文書)によって標準化されており、この問い合わせに答えるプログラムの一つがBINDです。 BINDはISC(Internet Systems Consortium)によって開発保守が行われています。オープンソースソフトウェアとして公開されているので、ユーザーは自由に利用、改変することができます。 ほとんどのLinux系サーバに標準で梱包されていることもあり、幅広く利用されています。 インターネットでデータのやり取りを行う際、反応するまでに幾らかの待ち時間が発生しますが、これをレイテンシ(遅延時間)と言います。
詳しく言えば、例えば、メモリやハードディスクなどのデバイスにデータを出すよう要求を送ってから、その要求がデータの記憶された箇所までアクセスする時間と、デバイスから読み出されたデータが実際に結果として返ってくるまでに、わずかながら生じる遅延時間のことです。 この遅延時間が短いことをレイテンシが小さい(低い)、遅延時間が長いことをレイテンシが大きい(高い)と言い、レイテンシが小さい方がデバイスの性能が高く、ネットワークも高品質であるとされます。 ちなみに、「レイテンシが大きい」という事と、「インターネットが遅い」というのは違う問題で、インターネットが遅いというのは、大抵サーバーの処理が追いついていないか、インターネット帯域が不足し、パケットロスが発生している場合だと考えられます。レイテンシが大きいというのは、サーバ環境が良好で、インターネット帯域も十分なネットワークであっても発生する時間の遅れのことを言います。 サーバ環境やインターネット帯域含めた個々のシステムが、高いデータ処理能力を持っていたとしても、それらのシステム間のデータ転送にレイテンシが発生してしまえば、システム全体の処理能力は低くなってしまいます。 そこで、サーバの処理能力向上やネットワーク帯域の確保などの施策が施される場合もあります。 また、コンピューターのCPUとメモリとの間ではクロック周波数が異なり、また、CPUの高速化にメモリの速度がついていけていないという現状もあり、この場合レイテンシは生じやすくなります。 インターネット通信においてレイテンシが大きいと利用者の不満につながり、ゲームなどのような即効性が求められるコンテンツをWebサイトやアプリで提供している場合、レイテンシの小ささが非常に重要になってきます。レイテンシは安定したサービス提供を行うための重要なデータ転送の指標なのです。 ドキュメントルートとは、Webサーバ(HTTPサーバ)やFTPサーバなどを利用して外部に公開するデータが設置されたサーバ上のファイル/ディレクトリのことで、仮想ルートディレクトリとも言います。
まず、ルートディレクトリとはハードディスクなどの外部記憶装置の中で、一番上の(第一階層の)ディレクトリのことで、その中にはサブディレクトリがあり、それぞれのサブディレクトリには色々なファイルが保存されています。 ドキュメントルートとは、外部記憶装置に保管されているファイル/ディレクトリのうち、HTTPやFTPでアクセス可能なコンテンツのファイル/ディレクトリのことで、そのサーバにアクアセスした際の、一番上のファイル/ディレクトリ(ルートディレクトリ)にあたります。 ※Webサイトも「http://ドメイン名/」の様に「/」で区切られたディレクトリ構造になっており、一番上の階層、つまりドキュメントルートに設定したディレクトリに「index.html」ファイルを設置することで、サイトのトップページデータを表示します。 ※FTPサーバでは、ユーザーに重要なファイルを操作されることがない様、特定のディレクトリより上の階層にはアクセスできない様に設定することが可能です。 サーバ上にあるシステムのルートディレクトリには、サーバ自体を管理するOSなどが保存されているため、外部に公開することはできません。一方、サーバで公開しているウェブサイトのルートディレクトリには外部から様々な人がホームページ情報などを閲覧する為、アクセスを行います。 そこで、サーバ内の特定のディレクトリを、サーバで公開する用のルートディレクトリ(外部からアクアセス可能)として仮想的に指定し、この様にWebサーバやFTPサーバのために指定されたルートディレクトリをドキュメントルート(仮想ルートディレクトリ)と言います。 ハッシュ関数とは、重要なデータの受け渡しを行う際に、そのデータが通信途中で改ざんされていないか、またWebサイトからダウンロードしたファイルが壊れていないかなど、データの改ざん検知やファイルの同一性確認をするために使われる技術の一つです。
文書や画像、そしてプログラムに至るまで、コンピューターのデータはすべて「0」と「1」からなる数値で出来ており、ハッシュ関数は、それらの数値(元データ)がどんな大きさであろうと、一定の法則で一定の長さにギュッと短縮した値(160ビット程度のデータ)に変換します。その値のことをハッシュ値と言います。 ハッシュ値は、長さが一定(160ビット)なので、同じハッシュ値になるよう改ざんするのは困難で、元データが1ビットでも変わると全く異なる値になるのが特徴です。また、ハッシュ値から元データの復元を行うことも、ハッシュ値から元データを特定することもできません。 この特徴を活かして、例えば、電子メールの改ざんを検出するには、電子メールを送る際にハッシュ値も送信し、受信者は受け取ったデータのハッシュ値を計算します。そして、値が一致すれば改ざんされていない、一致しない場合は通信途中で改ざんされているとわかります。 Webサイトからファイルをダウンロードする場合も、ダウンロードしたファイルから計算したハッシュ値と、Webサイトに載っているハッシュ値が一致すれば、同一のファイルであると確認することができます。 オンプレミス(on premises)とは、サーバーやソフトウェアなどの情報システムを使用者(個人、または企業)が自ら管理する施設内に導入、設置し、運用を行うことをいい、自社運用型とも言われています。
従来は自社でサーバーを運用するのが一般的な形態でしたが、現在のようにインターネット上に仮想サーバーを置き、それらを必要な時に必要に応じて利用するクラウドコンピューティングが普及するにつれて、オンプレミスはクラウドコンピューティングと区別するための言葉として使われるようになりました。 <オンプレミスのデメリット> クラウドコンピューティングは、サーバーなどのインフラ環境をあらかじめ拡張可能な仮想空間で提供するので、利用者は必要な分を必要に応じて利用することができたり、サーバーなどの初期導入費用も発生しないので、大幅なコスト削減を期待することができます。 それと比較してオンプレミスは、一から必要な機器やネットワークなどを自社で構築・運用するので、サーバーなどのシステム導入に時間を要するのと、初期コストも高くかかります。また、インフラの管理や維持コストが発生し、ネットワークトラブルなどの障害が起こった時には自社で対応しなければならず、システムに関する知識が必要とされます。 <オンプレミスのメリット> ところが一方では、オンプレミスは全てを自社で構築するため、サーバーやシステムを自由に構築することができ、システムのカスタマイズに柔軟に対応することができます。 また、自社の閉じられたネットワーク内でシステムを構築・運用するので、他のネットワーク環境の影響を受けにくく、情報セキュリティが高いのも魅力的です。お客様の個人情報などを扱うサイトなどを運営する場合、安心できる場所にデータを補完できるのは大きな安心につながります。 そして、同一ネットワーク内のシステムとの連携や統合などもクラウドコンピューティングより自由度が高いのも特徴です。 コストを抑えられるという点から多くの企業や個人がクラウドコンピューティングへと移行する傾向がありますが、望みのシステム環境を自由に作るという点やカスタム性の高さからオンプレミスの魅力も見直されており、クラウドコンピューティングとオンプレミスを両方バランスよく取り入れるハイブリッドクラウドという方法も注目されています。 クラスタとは、複数台のコンピューターをネットワークで接続し、一台のコンピューターシステムとして処理や運用ができるようにする方法のことです。コンピューターのスケーラビリティ(拡張性)とアベイラビリティ(可用性)を高めることを目的とし、主にサーバを対象として構築されます。
*スケーラビリティ(拡張性):負荷の増大や用途の拡大に応じて、どれだけ柔軟にシステムの性能や機能を向上させ、拡張できるかを表したもの。 *アベイラビリティ(可用性):システムが使用できる状態を維持し続ける能力のことを表し、「壊れにくい」「復旧が早い」など、耐障害性や信頼性の高いシステムに使われます。 クラスタ構成を採るシステムでは、クラスタソフトと呼ばれるソフトウェアがコンピューターの障害復旧や負荷分散を図ります。これによって、たとえ一台のコンピューターに障害が発生しても、残りの正常なコンピューターに処理を引き継ぐことができ、一台が障害によって停止しても、システム全体が止まることはなく、処理を継続したまま修理や交換が可能になります。 また、稼働している本番用のコンピューターに障害が発生した場合、本番用コンピューターから待機用のコンピューターへ処理を引き継ぐことをフェイルオーバーと呼び、フェイルオーバーの後、障害から復旧した本番用のコンピューターへと再び切り替え、待機用コンピューターを元の構成へと戻すことをフェィルインと呼びます。 クラスタ構成を採るシステムでは、上記のように、一方のコンピューターを「本番用」とし、もう一方を「待機用」として使うこともあれば、両方でアプリケーションを稼働させる場合もあります。 このようにクラスタによって、コンピューターが相互連結されることで、システムの冗長化を図り、たとえ障害が起こったとしてもシステムの停止時間を最小限に抑えることが可能となるのです。 その他、「クラスタ」はハードディスクなどの物理的な記憶装置における単位であるセクタを、一つのまとまりとした単位の意味として使われることもあります。 ロードバランサーとは、サーバーにかかる負荷を軽減するために、システムに対するリクエストを複数のサーバーに分散させ、なるべく均等に負荷がかかるように処理のバランスを調整する装置のことを言います。
この仕組みによって、Webサイトへのアクセス集中やサーバー障害が起こったとしても、サービス利用者は安定してサービスを受け続けることが可能になります。 そもそもサーバーはCPUやメモリーなどのリソースを使って、利用者からの指示の処理を行うので、何らかの理由でアクセスが集中して処理数が増えると、ブラウザのページ表示が遅くなったり、表示されなくなる事があります。 これはサーバーに負荷がかかっている事を表しており、サーバーからの応答速度の遅延や、障害発生によるシステムダウンを防ぐためにも、ロードバランサーを導入して、ある程度余裕と柔軟性のあるシステム構築が必要になります。 <ロードバランサーの役割> ・ぺージ表示の速度低下を防ぐ サーバーに負荷がかかると、サーバーの処理数が増えてサーバーのリソース(CPUやメモリー)を奪い合い、それが原因でWebサイトのページ表示に遅れが生じることがあります。SEO対策の必要性が高まる中、このような事態は避けるためにロードバランサーを導入し、ロードバランサー対象のサーバ台数も増やすことで、サーバーにかかる負荷を分散させます。 ・ダウンしているサーバーにリクエストを転送しない ロードバランサーの仕組みは複数台のサーバーで構成されており、ロードバランサーはこれらのサーバーを死活監視し、サービスが正常稼働していないサーバーにはリクエストを送りません。そのため、万が一一台のサーバーに故障が発生しても、サービス全体の停止を防ぐことができます。 ロードバランサーの仕組みは、アクセス数の多いWebサイトの運用には必要不可欠なのです。 ミラーリングとは、データやディレクトリ構造を記憶装置に書き込む際に、全く同一の複製データを同じタイミングで別の記憶装置に書き込むことを言います。
<ミラーリングをするメリット> ・信頼性 それまで使用していた記憶装置に障害が発生したとしても、もう一方の記憶装置からデータを読み出し、復旧させることが可能になります。 ・高速性 ミラーリングのデータ複製は、ただ単にデータを複製するわけではなく、以前に複製したデータを基に、新たに更新されたデータの差分だけを複製しているので、複製作業が高速で行われます。 <ディスクミラーリング> ミラーリングが一番行われるのはハードディスクで、ディスクミラーリングと言います。複数台のハードディスクが接続されている環境において、それらの全てに同じデータを同時に記録することで、ハードディスクの故障に備えます。 ディスクミラーリングは、主にディスクアレイ(RAID)における複製を指し、ミラーリングするRAIDをRAID1と言います。 そもそもRAIDとは複数のハードディスクを組み合わせて一台のハードディスクのように認識・表示させる技術のことで、RAID1はRAIDの方法の一つであり、、同じデータを二つのハードディスクに書き込むことで対障害性を高めた構成のことを言います。 たとえ、これらのRAID装置がなくても、バックアップソフトを使うことで外付けのハードディスクにミラーリングをすることは可能です。 <サーバーやWebサイトのミラーリング> サーバー運用においては、「ミラーリングサーバー」と呼ばれるサーバーを設けることで、サーバーの機能や内容を複数台で同期し、万が一障害やメンテナンスが起こった場合でも、同じ内容を複数のサーバーからユーザーに提供することが可能になります。 また、このようにサーバーをミラーリングすることで公開されるWebサイトを「ミラーサイト」と言います。ミラーサイトを設置することで、ユーザーからのアクセス負荷を分散させることができたり、ネットワーク上の距離が近いサーバーにアクセスすることも可能なので、動画などの重たいデータをダウンロードする際のテータ転送速度の短縮に効果が期待できます。 APIとはApplication Programming Interfaceの略で、OSやアプリケーションソフトの機能を外部から手軽に利用できるように提供する仕組み(Interface)の事で、その仕組みには、それぞれの機能を呼び出す際の使用や操作方法が定められています。
サービス提供者側がプログラムをAPIで公開しておくことで、ソフトウェア開発者は提供されたプログラムを使う事ができ、アプリケーションを開発する際に全てのプログラムを独自に開発する必要がなく、開発工程の大幅短縮が可能になります。 また、ソフトウェア開発者がAPIを利用すれば、同じ機能を持つサービスを一から開発する必要がないので、開発費用の削減や効率アップにもつながります。 従来、APIといえばOS側(プラットフォーム側)が、その汎用性の高い機能をアプリケーションソフト向けに提供していた機能を指しており、そこで用いられるプログラミング言語がAPI利用者と同じ言語で提供されていました。 近年では、API提供者と利用者のやりとりがHTTP/HTTPSベースで実現するWeb APIが普及しており、この場合、API提供者と利用者のアプリケーションが異なるプログラミング言語で開発されていても、双方を連携させる事が可能です。(API利用者が、webサーバにアクセスして必要なデータをHTTPリクエスト送信し、目的のデータを受け取った後、Webブラウザに表示したり、CSV等の形式に変換する事ができます) プロキシ(Proxy)という英単語には「代理」という意味があり、ITにおいてはその意味の通り、インターネットへの接続を代行するコンピューター、またはそのような機能を持つサーバーのことをいいます。
通常であれば、あるサイトを見たい時、クライアントはWebブラウザから目的のサイトにアクセスをし、サーバ側は要求されたページをWebブラウザに返信してサイトを表示します。 これをプロキシ経由で行う場合、クライアントがWebブラウザから外部へのアクセス要求を行なった際、プロキシサーバーがその要求を受信し、プロキシサーバーが接続元となって外部Webサーバーへアクセス要求を行います。そして、外部サーバ側から返ってきた応答も、プロキシサーバーを経由して、クライアントのコンピューターへ取り次ぎます。 つまり、プロキシサーバーは、クライアントから見ると外部サーバーが接続してきたように見え、外部サーバーからするとクライアントが接続してきたように見えるので、クライアントの存在や、そのアドレスをある程度秘匿にする事ができます。 企業の社内LANに接続されたコンピューターがインターネットへ接続する際、ほとんどの場合、社内LANと外部インターネットの間にはプロキシサーバーが置かれ、プロキシサーバーを経由したネットアクセスが行われています。 プロキシサーバーは、企業の社内LANと外部インターネットの境界に置かれ、この場所はDMZ(非武装地帯、緩衝地帯の意味)と呼ばれます。 社内にプロキシを導入する場合、Webブラウザなどにプロキシを経由する設定を行わなければなりませんが、内部の利用者全員に設定させる必要があるため、管理コストの増大等の問題が起きる可能性があります。それを回避する方法として、「透過プロキシ」という方法があり、ネットワーク内の通信装置の設定などによって、全てのアクセスを強制的に(自動的に)プロキシ経由にすることが可能です。 <プロキシサーバーの主な機能・役割> ・キャッシュ機能 プロキシサーバーは一度アクセスしたwebサイトのデータを自らのストレージに保存しておくキャッシング機能を実装しており、クライアントから再び同じデータへのアクセス要求があった際には、キャッシュに保存したデータからクライアントに返信するため、素早い表示を行う事ができます。 ・フィルタリング プロキシサーバーは内外を流れるデータをアプリケーションレベルで把握する事ができるので、好ましくないURLをアクセス禁止にするようなフィルタリングを行ったり、外部からウイルスなど不正データが入ってくるのを防ぐファイアーウォールのような役目を果たすことも可能です。 ・匿名性 プロキシサーバーを経由せず、直接外部のWebサーバーにアクセスした場合、接続先にIPアドレスなどのプライベート情報が伝わってしまい、特に、企業などのように専門回線を使用している場合は危険度が高くなります。プロキシサーバーを経由すると、接続元がプロキシサーバーのIPアドレスとなるため、接続先に自らのIPアドレスを伏せておく事ができ、内部の匿名性を確保できるメリットがあります。 DMZ(DeMilitarized Zone)とはインターネットなどの外部ネットワークと、社内ネットワークなどのプライベートネットワークの間に置かれるネットワーク領域のことです。直訳して「非武装地帯」とも呼ばれます。
インターネットに公開するWebサーバは外部からのアクセスを許可しているため、ネットワークを通じたハッキングやウイルス侵入など、常に悪意ある攻撃の危険にさらされています。 そのため、内部の情報資産を守ることを目的にファイアーウォールを設置し、不正な外部ネットワークからのアクセスを遮断するのですが、この状態だと、内部ネットワークからインターネットへのアクセスができず、Webサイトの公開やメール管理もできません。 そこで、外部ネットワークと内部ネットワークをファイアーウォールによって分断し、さらに、そのファイアーウォールと外部ネットワークの間にDMZを設け、ここに、外部とのアクセスを必要とするWebサーバー、メールサーバー、プロキシサーバーなどを置き、外部ネットワークとのアクセスを行います。つまり、DMZとはファイアーウォールという城壁に守られた、内部ネットワークの外にある緩衝地帯なのです。 DMZの構成にはファイアーウォール1台だけで構成する方法がありますが、最近では、より強固なセキュリティを確保するため、「内部ネットワーク>ファイアーウォール>DMZ>ファイアーウォール>外部ネットワーク」という2台のファイアーウォールを設ける方法が主流になっています。 DMZの特徴は「外部ネットワーク→DMZ」「内部ネットワーク→DMZ」「DMZ→外部ネットワーク」の通信は許容しながらも、「DMZ→内部ネットワーク」の通信は制限しているところです。内部ネットワークを保護しながら外部ネットワークへのアクセスを可能にし、万が一、外部ネットワークから内部ネットワークへ不正アクセスがあった際には、DMZが袋小路としての機能を果たします。 IoTは「Internet of Thins」の略で、直訳すると「モノのインターネット」という意味です。簡単にいうと、IoTとは、これまでインターネットに繋がっていなかった身の回りのモノが、通信機能を持って、ネットワークに繋がることを表します。
IoTにおける「モノ」を考えた場合、テレビやエアコンといった家電製品をインターネットにつなげることで、遠隔でコントロールができるというイメージを連想しがちですが、IoTの対象はより多岐に渡っています。 実際に、IoTは様々な分野で活用されており、車、物流、農業、医療、交通機関などにおいて活用が進められています。その他、IoTの考え方には、一見するとインターネット接続に関係のない机や椅子、ベッドなども含まれます。 このように、モノがネットワークを通じてサーバーやクラウドに接続されるようになると、ネットワーク上に膨大なデータが集まり、そのデータを解析したり、他のサービスに連携させることで、より価値の高いサービスを生み出す可能性につながります。 CSRF(Cross Site Request Forgery)とは、webアプリケーションに存在する脆弱性の一種、また、その脆弱性を利用した攻撃方法のことです。
掲示板やアンケートフォームなどを処理する「フォーム」と呼ばれる機能を持っているwebアプリケーションが、本来拒否すべきはずの他サイトからの不正なリクエストを受け取り、処理してしまうことから被害が発生します。 この脆弱性を悪用すると、誰かになりすましてSNSにコメントしたり、掲示板やアンケートフォームに犯罪予告を不正に書き込んだり、オンラインショッピングサービスを勝手に利用すること等ができてしまいます。 <攻撃の仕組み> (1) 攻撃者が不正リクエストを仕掛けた攻撃用のwebサイトを準備します。 (2) 攻撃者が、被害者が閲覧しているサイトやメールにURLを仕込む等して、攻撃用webサイトを見るように誘導します。 (3) 被害者が攻撃用webサイトを閲覧すると、攻撃用webサイトにあらかじめ用意された不正リクエストが攻撃対象のサーバーに送信されます。 (4) 攻撃対象のサーバー上のwebアプリケーションからすると、正規のユーザーが正当なリクエストを送信してきたと認識するので、不正リクエストはそのまま受け入れられ、処理が行われます。(ここがCSRFの脆弱性の厄介な所です) (5) 攻撃用webサイトを閲覧している被害者は、アクセスするつもりのないwebサイトに強制的にアクセスさせられ、コメントなどが勝手に書き込まれます。 ※書き込まれたWebサイトのアクセスログには、被害者のPCからのアクセス情報(IPアドレス等)が残ります。そのため、攻撃用webサイトに誘導された被害者が、攻撃対象のサーバーへ不正リクエストをした攻撃者として認識される恐れがあります。 <CSRFの対策> ・web管理者側 CSRFはwebアプリケーション全体に影響が及ぶので、設計段階から対策を行う必要があり、サイト外からのリクエストを受信、処理しないシステムを作り込むのが大事です。 ただ、CSRFの対策は全画面で行うわけではなく、パスワードの変更といった重要な処理を行うページを選別して行います。具体的には、攻撃者に推測されにくい、任意の情報を照合する処理(例えばセッションID、ページトークン、ランダム数字)を実装するといった方法です。画像化されたチェックコードを表示してユーザーに入力させる画像キャプチャ機能の実装も効果的です。 ・ユーザー側 電子メールやwebサイト内に仕込まれた不審なURLを安易にクリックするのは避け、個人端末にもセキュリティソフトを導入し、攻撃用webページにアクセスするのを事前にブロックするのが最良の方法です。 APT攻撃(Advanced Persistent Threat)とは、サイバー攻撃の一種で、一定の明確な目標の元に、特定の組織や個人をターゲットにして、持続的に行われる攻撃のことをいいます。
APTは、金銭的な利益や犯罪目的、愉快犯というより、スパイ行為や妨害工作を行うタイプの攻撃です。複数の既存の攻撃方法を組み合わせて、特定のコンピューターシステム(例えば国家や企業など)へ侵入し、機密情報を盗んだり改ざんしたり、またはシステム自体を破壊するなど、産業スパイや国家機関による活動の一環とも考えられています。 事例としては、2010年に多くの企業がIEの脆弱性を利用してンピューターシステムに侵入され、特に Googleがメールアカウントやパスワードを盗まれるといった甚大な被害にあった「Operation Aurora」を挙げることができるでしょう。 APT攻撃は国家や組織が情報を盗むことを目的に行うケースが多く、例えば、ウイルスソフトでは対応できないコンピューターウイルスを新たに開発して送り込んだり、内部の者にしかわからない固有名詞や隠語を使ってウイルスを添付したメールを送るなど、やり口が巧妙なのも特徴の一つです。 そのため、対策としては、一つの方法ではなく、複数の防御方法を組み合わせるなど多層的に行う必要があるでしょう。APT攻撃の目的な主に「情報を盗む」ところにあるので、対策をしっかりとって被害が出ないようにすることが大事です。 ステートフルパケットインスペクション(SPI:Stateful Packet Inspection)とは、ルータやファイアーウォールなどが持つセキュリティ機能の一つで、パケットフィルタリングを拡張したものです。
LAN側からインターネットに送信したデータをセッションログとして記録しておき、インターネットからパケットが送られてきた際、そのパケットがセッションログと矛盾しないかどうかを確認し、不正と判断した場合、接続を遮断します。 一般的なパケットフィルタリングでは、管理者側が事前に設定した基準(パケットを遮断するかしないかの基準)に基づいてパケット通過の可否を行なっています。そのため、不正アクセスである可能性の高いパケットであっても、事前に通す設定になっていたら通してしまい、データのやり取りが始まる危険があります。 これに対してSPIでは、それまでの通信の状態を記録しておき、現在の通信状態と矛盾するパケットは不正パケットとして遮断することができます。つまり、自身を通過するパケットの一連の流れを監視して、送られてくるパケットの順番や内容などをチェックして矛盾が見つかればパケットを破棄します。要は、パケットを遮断するかしないかの基準が一定であるパケットフィルタリングに比べて、SPIは一連のパケットの流れを丸ごと遮断するのかしないのかの判断材料にします。 セッションハイジャックとは、コンピューター通信で利用されるセッション(通信の確立)情報を窃取し、本人(クライアントやサーバー)になりすまして通信を行うサイバー攻撃のことです。WebサイトやWebサービスの不正利用を主な目的としています。
*セッションとは、接続を開始してから切断するまでの一連の通信のことを言います。例えば、Webページにアクセスしたユーザーが、IDとPWを入力してログインを行い、その後、ログアウトするまでが1セッションです。 Webアプリの中には快適なサービスを提供するために、ユーザー毎にセッションIDやCookie情報を生成し、個人認証を行って、通信をやりとりしているものがあります。セッションハイジャックはこれらの情報を何らかの方法で盗んで、ユーザーになりすますという攻撃です。 *セッションIDとは、Webサイトにアクセスしたユーザーのセッションを一意に識別するために、WebサーバやWebアプリがユーザーに付与する識別用のIDのことです。 近年では、LINEでアカウントの乗っ取りが発生したことがありますが、これはセッションハイジャックによるものと言えます。 <セッションハイジャックが起こる仕組み> (1)セッションIDが日付や連番、登録名といった、推測しやすい文字列で構成されている場合 攻撃者は正規の経路でWebサイトに何度かアクセスし、その度に生成されるセッションIDの法則を見つけ出します。そして、正規ユーザーがログインしたタイミングを見計らい、同じIDを使って本人になりすますことができます。 (2)不正アクセスによってセッションIDが盗難される場合 攻撃者は何らかの方法で正規ユーザーとWebアプリの間に介入し、ネットワークの情報を傍聴したり、正規ユーザーを全く別のページへ誘導することで、セッションIDを盗難します。 (3)強制的に目的のセッションIDを正規ユーザーに使わせる場合 攻撃者は正規に取得したセッションIDを何らかの方法で正規ユーザーに利用させ、正規ユーザーがWebサイトにログインするのを確認したら、攻撃者も同じセッションIDを使って不正ログインを働きます。基本的に正規ユーザーは強制的にセッションIDを使わされていることに気づきません。 セッションハイジャックの被害発生を防ぐには攻撃者にセッションIDを察知されないようにすることが大事です。 (1)セッションIDを推測困難なものにする。 (2)セッションIDをワンタイム化する。 (3)URLにセッションIDを含めない。 WebサービスとブラウザはセッションIDをやり取りする際、URLにセッションIDを含んでいることがあるので、CookieにセッションIDを含めるか、フォームデータのhiddenフィールドでやり取りする方法に切り替えるのが良いでしょう。 (4)SSL通信でセッションIDを難読にする。 SSL暗号化通信では、セッションIDも暗号化できるので、攻撃者による推測や盗難を防ぐのに効果的です。 (5)WAFによる対策をとる。 WAFとは、Webアプリケーションの脆弱性を狙ったサーバー攻撃に対するセキュリティ製品で、攻撃者によるセッションIDやCookieの盗難・不正利用を防ぎ、Webサイトを保護することができます。 XSS(クロスサイトスクリプティング)は、Webサイトの入力フォームでユーザが入力した情報を受けつけるWebアプリケーションが運営されている場合に発生する脆弱性のこと、もしくはその脆弱性を利用した攻撃方法のことです。
攻撃者は入力フォームに悪意のあるスクリプト(Javascript)を埋め込み、そのスクリプトがユーザのWebブラウザ上で実行されることで、Cookieの内容を盗難したり、ユーザがサイトに入力する情報を読み書きする等の被害を起こします。 <XSSによって引き起こされる被害の例> 1)攻撃者は△△銀行の利用者ログインサイトにXSS脆弱性があることを見つけ、サイトにユーザがIDとPWをログインした場合に、攻撃者が別に用意したサイトへ情報が送信されるよう細工をする。 2)攻撃者は△△銀行だと偽り利用者へ無差別にメールを送信し、思わずクリックしてしまう様 な誘い文句とともにリンク先を添付しておく。 3)利用者がリンクをクリックすると、いつも通りのログインサイト(SSL証明書も問題なく表示されている)が開く。 4)利用者がログインサイトにIDとPWを入力し、OKボタンを押すと、攻撃者が別に用意したサイトへ情報が送信される。*利用者が自分のIDとPWが盗まれたことに気づく可能性はほとんどありません。 XSSの発生原因は、Webサイトのプログラム設計におけるセキュリティ上の不具合やミスであり、そのミスを利用して悪意あるプログラムが埋め込まれます。その為、ユーザ側での対処は難しく、サイト運営側が責任を持って対処する必要があります。 <XSSによって引き起こされる不正行為> ・Cookie情報や個人情報を盗んで、悪意ある第三者へ送信することで、ユーザーのなりすまし被害を起こす。 ・入力フォームの送信先を変更し、悪意ある第三者へ情報を送信する。 ・強制的にページを移動させて、悪意あるサイトへ誘導する。 ・ページ全体や一部を書き換えて、偽ページを作り出す。 ユーザー側で出来る対処方法としては、アクセスしているドメインではないURLに移動していないか確認したり、XSSで利用されるスクリプトの多くがJavascriptなので、Javascriptを無効にするという手もあります。(Javascriptの無効に関しては、Javascriptが多くのサービスで利用されているので、無効にしてしまうとサービスを利用できないといった事態も否めません) サイト運営側は、悪意あるスクリプトが埋め込まれないよう入力チェックをしっかり行うということ、そしてWEBアプリケーションファイアーウォール(WAF)を導入するのも効果的です。 マルウェアとは不正目的で作られた悪意あるソフトウェアや悪質なコードの総称で、不正プログラム全体を指します。
これらの不正プログラムには様々な種類があり、大きくは自己増殖をするのか否か、何かのファイルに寄生するのか、単体で活動するのかに分類されますが、中には複数の定義を満たすものもあります。 マルウェアには動作形態の違いから様々な種類がありますが、代表的な種類と概要は次の通りです。 ・「ウイルス」 ファイルに寄生して、そのファイルを破壊し、ユーザーの意図しない挙動を行う不正プログラム。ウイルスは、ユーザーがPCやアプリケーションを起動した際に動作を開始し、PCから別のPCヘと自身を複製しながら蔓延します。 ・「ワーム」 あるPCから別のPCヘと自身を複製しながら蔓延し、ファイルを破壊して、ユーザーの意図しない挙動を行う不正プログラム。一見、ウイルスと似ているが、ファイルには寄生せずに、独立してファイルの動作を妨げます。 ・「トロイの木馬」 不正な意図から作成されたソフトウェアを、一見無害に見えるソフトウェアに潜り込ませて正体を偽り、対象のPCに送り込んで実行させるプログラム。ターゲットのPCからデータを盗んだり、データを消去したりといったような相手を陥れる動作をします。 ・「ボット」 外部からの指令により一斉に不正行為を働くプログラムで、感染していても指令があるまで動かないので、感染している事に気づきづらい。ウイルス感染などによってPCにボットが組み込まれると、遠隔操作によって第三者にPCを自由に使われてしまうなどの危険があります。 ・「スパイウェア」 利用者の意図に反してインストールされ、利用者の個人情報やアクセス履歴などを収集し、外部のPCに送信する機能を持つソフトウェア全般のこと。ウイルスやワームとしてPCに侵入したり、他のアプリケーションとセットで導入される場合もあります。 マルウェアの侵入経路は、メールやインターネットといったネットワーク経路や、OSやドライバーの脆弱性を突いて勝手にダウンロードされるなど様々です。ユーザーが知らないうちにPCに侵入しているという事も頻繁に起こっているので、日頃からOSやドライバーを最新状態にし、セキュリティ対策をしっかり行う事が大事でしょう。 DDoS攻撃(Distributed Denial of Service attack)とは、サイバー攻撃の一種で、標的となるコンピューターに対し、あるタイミングで一斉に複数のマシンから過剰な負荷を与えることで、サービス不能状態に陥れる攻撃のことです。
DoS攻撃の手法を分散型(Distributed)に発展させたもので、DoS攻撃は一台のマシンから攻撃を仕掛けるのに対し、DDoS攻撃はトロイの木馬やマルウェアを使って不正に乗っ取った複数のマシンから単一の標的に攻撃を仕掛けます。DDoSは複数のマシンを使う為、使用できるIPアドレスの数がDoSより多く、標的により大きな負荷をかけることができます。 トロイの木馬やマルウェアを使って不正に乗っ取られる複数のマシンは、サーバばかりでなく一般のコンピューターである場合も多く、それらは攻撃者がDDoS攻撃を仕掛ける際に、攻撃元をわかりにくくするための踏み台として使用されます。また、標的となるコンピューターにとっては、不正アクセスではなく通常アクセスであることが多いため、防御するのが困難でもあります。 DDoS攻撃は主に下記の2つのタイプに分かれます。 (1)大量のパケットを送り込み、ネットワーク帯域幅やネットワーク装置のリソースを消費させることで、標的のコンピューターの処理を飽和させ、機能不全にするというもの。最も古いタイプの攻撃手法であり、現在でも多く発生しています。 (2)TCPやHTTPなどのプロトコルで予想させる動作を利用して、過剰な負荷をかけ、正常な処理を妨げるというもの。少ないトラフィックで大きな負荷を与えることができる上、サーバ運営者は攻撃を受けている事に気づかないこともあります。 DoS攻撃やDDoS攻撃を受けるリスクを減らすには、 ・(DoS攻撃の場合、攻撃元が一つで単純なので)攻撃元のIPアドレスを特定したら、そのIPアドレスからのアクセスを遮断する。 ・サイバー攻撃の多くが海外からのアクセスなので、運営しているWebサイトが国内向けであれば、海外からのアクセスを遮断する。 DoS攻撃、DDoS攻撃は標的になると厄介なもので、コストは発生してしまいますが、ネットワークトラフィックの監視システムやDDoS攻撃対策ツールを導入するというのも有効な手段です。 DoS攻撃(Denial of Service attack)とは一台のPCから一つの対象に攻撃を行うスタイルで、インターネット上でサービスを提供している各種サーバやネットワークに機能障害を起こさせる事を目的としている、サイバー攻撃の一種です。
手口としては単純で、攻撃対象であるホストやサーバに対し、短時間の間に大量のデータを送りつけることで、データを受信したホストやサーバのトラフィックが異常に膨れ上がり、負荷に耐えられなくなったホストやサーバがダウンするというものです。 DoS攻撃は具体的には次の通りです。 ・フラッディング(flooding)型攻撃 相手に対して、一見正常に見えるデータを大量に送信し続けることで負荷をかける攻撃です。中でも「F5攻撃」は有名で、これはブラウザの更新キーであるキーボードの「F5 」にちなんで名付けられています。 F5キーを押すと「httpリクエスト」が実行されますが、これはキャッシュを保存せずに情報を要求できるため、攻撃対象に大きな負荷をかけることできます。F5攻撃は、この特性を利用して、不必要に相手にF5リクエストを送信し、F5キーを連続して押させることで、サーバへ大量にアクセスし、結果、サーバは負荷がかかりダウンしてしまいます。 ・脆弱性型攻撃 ネットワークプロトコルの仕様を悪用したり、OSやアプリケーションの脆弱性を狙った攻撃で、例えば、送信元を宛先と同じであると偽装したパケットを相手に送りつけ、相手を正常に通信できない状態に追い込むといったもの(LAND攻撃)が挙げられます。 DoS攻撃を防ぐには、OSやアプリケーションを最新の状態に保つことが重要で、その上でファイアーウォールや監視システムを導入するといった手段を取り入れるといいでしょう。 |