ネスペ勉強メモ4【アプリケーション】
ネスペ試験の個人メモです
DNS
ドメイン用語
TLD…トップレベルドメイン。大きく分けて2種類あり、com,org,netなどの汎用的に利用できるドメインgTLD(generic)とjp,cn,ukなどの国ごとに定められたドメインであるccTLD(country code)がある
ホスト名…IPアドレスを指定している部分(最初の区切り)
FQDN(完全修飾ドメイン)…ホスト名+ドメイン名
ドメインはICANNによって管理されているが、全てのドメイン登録やDNSサーバ設定をICANNが管理しているわけではなく、ICANNなどのドメイン管理機関が認定したレジストラと呼ばれるドメイン登録業者が代行している。レジストラの例としてはGMOのお名前ドットコムなど
国際化ドメイン…カタカナ、ハングル、漢字などに対応したドメイン名のこと
名前解決の仕組み(正引き)
端末Aがwww.example.co.jpのIPアドレスを問い合わせる流れは下記の通り。※端末Aが仕様しているDNSサーバをxDNSサーバとする。
端末はxDNSサーバに対象のFQDNを問い合わせる
xDNSサーバはキャッシュに情報がなければルートDNSサーバに問い合わせを行う
対象サーバはjpドメインのアドレスを返す
xDNSサーバはjpドメインのDNSサーバに問い合わせを行う
対象サーバはco.jpドメインのアドレスを返す
xDNSサーバはco.jpドメインのDNSサーバに問い合わせを行う
対象サーバはexample.co.jpドメインのアドレスを返す
xDNSサーバはexample.co.jpドメインのDNSサーバに問い合わせを行う
対象サーバはwww.example.co.jpドメインのアドレスを返す
xDNSサーバは端末にIPアドレスを返す
この時の端末(クライアント)からの問い合わせを再帰的問合せという。クライアント上で名前解決の問い合わせを行うプログラムのことをスタブリゾルバという。
一方、登録されているDNSサーバ(xDNSサーバ)が他のDNSサーバへ何度も問い合わせることを反復的問合せという。このDNSサーバのことをフルサービスリゾルバという。
また、フルサービスリゾルバは高速化を図るために自身にキャッシュ情報を持っていることから、フルサービスリゾルバのことをキャッシュサーバとも言う。
フルサービスリゾルバから反復的に問い合わせを受けるサーバ(ルート, jp, co.jp, example.co.jp)のことをコンテンツサーバという。
逆引きの仕組み
192.0.2.1の逆引きを例にあげる。
逆引きのドメインツリーは以下のようになる
1.0.2.192.in-addr.arpa
逆引きドメインツリーのSLD.TLDは「.in-addr.arpa」となっており、第三ドメイン移行はIPアドレスを逆から記載する。
フォワーダ
スタブリゾルバとフルサービスリゾルバの間に入るDNS サーバのことをフォワーダという。
フォワーダを置くことのメリットはフルサービスリゾルバー相当の機能を、簡易に実装できるというメリットが有る。
DNSSEC
DNSのゾーン情報に電子証明を付与する規格。DNSキャッスポイズニング対策に効果あり。詳細は省く。
ゾーン情報
SOAレコード
ゾーン全体に関する情報を記載する。ゾーンにつき1レコード存在する。
NSレコード
ゾーンに対して権威あるDNSサーバを登録する。(プライマリDNS、セカンダリDNS)
PTRレコード
逆引きレコード
DNSラウンドロビン
あるホスト名に対して複数のAレコードを設定することが可能。この場合登録されているIPアドレスに対して順番に接続が行われるため、負荷分散に有効であり、これをDNSラウンドロビンという。
デメリットとして1つのサーバーが停止した場合接続するたびにつながったり、繋がらなくなったりする。
プライマリ/セカンダリDNSサーバ
名前解決の仕組みで説明したコンテンツサーバは問い合わせがきたら次に問い合わせるべきDNSサーバのIPアドレスを送り返す。この時、問い合わせるべきDNSサーバがひとつだけしか存在しない場合、万が一障害が発生した場合に通信ができなくなるため、冗長性確保のため通常は複数設定しておく。このうちの1台をプライマリDNS(マスタDNS)サーバといい、残りをセカンダリDNS(スレーブDNS)サーバという。
プライマリ、セカンダリの2台のDNSサーバを設置した場合は、ゾーン情報の登録はプライマリDNSサーバで行う。セカンダリDNSはプライマリDNSからゾーン情報を取得できるようにする。このことをゾーン転送といい、TCP53番ポートで同期を図る。
また、ゾーン転送の転機は2種類あり、1つ目は「SOAレコードに登録されたリフレッシュ期間が満了すること」2つ目は「プライマリDNSからセカンダリDNSへの更新通知発生時」
※ゾーン転送はセカンダリよりもプライマリのバージョンがが新しい場合のみ発生する(SOAにシリアル番号があるためそれを見て判断できる)
また、前回更新から変化した分だけを転送する(いわゆる差分更新)も可能である。特にDDNS(Dynamic DNS)利用環境では頻繁にゾーン情報が変わるためこの設定を行うとトラフィック量軽減に効果的である。
DynamicDNS
BIND8x移行はDDNS(DNSの動的変更)に対応している。
DDNSの利用例としては個人で固定IPを持っていないけど自宅でサーバを稼働させる場合などに用いられることがある。
DNSキャッシュポイズニング
キャッシュサーバ(フルサービスリゾルバ)の中でもインターネット上のどこからでも問い合わせを受けるサーバをオープンリゾルバという。
オープンリゾルバの場合、DNSの反復問い合わせ中に不正なパケットを投げるとキャッシュサーバがIPアドレスを誤認して別のサーバのIPを正しいものと思い込ませることができる、これをDNSキャッシュポイズニングという。
DNSキャッシュポイズニングへの対策は以下の2つの要因を取り除けば良い。
コンテンツDNSサーバとキャッシュDNSサーバを別々に設置して,キャッシュDNSサーバに対するインターネット外部からの再帰的問い合わせを禁止する。
問い合わせパケットの送信元ポート番号をランダムにする。(順番になっていると推測が立ってしまうため、DNSキャッシュポイズニングの成功率が上がってしまう)
電子メール
MUA(Mail User Agent) … メーラーのこと
MTA(Mail Transfer Agent) … ソフトウェア(postfix, qmail)のこと
メールヘッダ
Return-Path … エンベローブFROMを格納する、最後に処理したMTAが追加する。(実質的なFROMアドレス)
Received … MTAの配信記録
※エンベローブFROM … 郵便では封筒に書かれる差出人にあたるもの。 メールでは実際に送信した差出人(送信元)にあたる。
MIME
メールの仕様が策定された当時は文字コードがASCIIコードしか使えなかったが、昨今ではバイナリファイルやマルチバイト文字も使える。その理由は一旦ASCIIコードにエンコードした後に、受信側でデコードするといったことをしておりこの規格のことをMIMEという。
Webシステム
HTTP2 … HTTP1と比較すると多重化、ヘッダ圧縮、フロー制御などの拡張機能がある。
HTTPのコネクションについて
HTTPはTCPコネクションを確立して通信を行うが、ページ遷移ごとにコネクションを取り直すと時間がかかりすぎるため、通常は持続的接続機能を使って、コネクションの再利用をする。
ステートレス/ステートフルな通信
複数ページにまたがってセッションを維持・管理できない通信をステートレスという。逆にセッションの維持・管理ができるものをステートフルという。
ステートフルな通信を行うには「URLリライティング」「Cookieへの保存」「Hiddenフィールドの使用」などをすることで実現できる。
※URLリライティング … クエリパラメータにセッション情報を付与すること。セッション盗用の危険性高。基本的にはセッションIDをCookieに保存する手法がとられるが、Cookieを受け入れないブラウザなどに対応する場合はURLリライティングの手法を使う場合がある。
リクエストメソッド
HEADメソッド … GETメソッドを送ったときのヘッダ情報だけを取得する際に使用する
CONNECTメソッド … プロキシサーバにトンネリング処理を要求する際に使用する。
※URLのクエリの後の#のことをフラグメントという。ページ内部の特定の場所を指定する際に使用するもの。
Webアプリケーション
サーブレット
Javaクラスファイルでサーバに格納されているもの。これがGET,POSTのメソッドを判別してリクエストを実行したりしてくれるらしい。
Cookie
Cookieの属性は以下の通り
Expires … 有効期限を日時で指定。0を指定するとブラウザを閉じたら消去。複数系なので要注意。
Domain, Path … 有効なCookieを検索する際に使われる。domain共通のCookieの場合はDomainだけ記載されてるし、ページごとのCookieならPathを指定することでそのページだけで有効になる
Secure … クライアントはHTTPSで通信しているときだけCookieをサーバに送信する。Secureって書くだけで有効になる
HttpOnly …. Javascriptからのアクセスを禁止する。HttpOnlyって書くだけで有効になる。