UDP~3
トランスポート層で動作する機器といえば「ファイアウォール」でしょう。
IPアドレスやプロトコル、ポート番号などを使用して、通信を制御する機器です。
「ステートフルインスペクション」
「フィルタリングルール」
「コネクションテーブル」
を用いて、通信を制御しています。
■フィルタリングルール
どんな通信を許可し、どんな通信を拒否するかを定義している設定です。
「ポリシー」、「ACL」などとも呼ばれます。
「送信元IPアドレス」「宛先IPアドレス」「プロトコル」「送信元ポート番号」「宛先ポート番号」「アクション」などの設定項目で構成されています。
各設定項目で特定できない要素については「ANY」を設定します。
■コネクションテーブル
ステートフルインスペクションは、フィルタリングルールを、コネクションの情報をもとに動的に書き換えることによって、セキュリティ強度を高めています。
ファイアウォールは、自身を経由するコネクションの情報を「コネクションテーブル」と呼ばれるメモリ内のテーブルで管理しています。
「送信元IPアドレス」「宛先IPアドレス」「プロトコル」「送信元ポート番号」「宛先ポート番号」「コネクションの状態」「アイドルタイムアウト」など、各種要素からなるコネクションエントリから構成されています。
◇動作について
・許可パケットを通した後、許可したフィルタリングルールをもとにコネクションテーブルにコネクションエントリを作成します。
⇓
・作成したコネクションエントリから戻り通信用の許可エントリをフィルタリングルールに作成します。
戻り通信は、送信元と宛先を反転した通信です。
⇓
・戻り通信を受け取ると、動的に作成した戻り通信用の許可エントリに基づき、制御を実行します。
あわせて、コネクションエントリのアイドルタイム(無通信時間)を「0秒」にリセットします。
⇓
・ファイアウォールは通信が終了したら、コネクションエントリのアイドルタイムアウトをカウントアップします。
アイドルタイムアウトが経過すると、コネクションエントリとそれに関連するフィルタリングエントリを削除します。
アイドルタイムアウトの設定は機器ベンダによってさまざまで設定可能です。
コネクションエントリの数は、そのままファイアウォールのメモリの使用率に影響します。
大量のUDPデータグラムをさばく必要がある場合は、あらかじめアイドルタイムアウトを短く設定しておき、メモリを節約することも検討するとよいでしょうか。
次は、TCPについてです。ふぅ~
=======================
今日の一言:
戻り通信用の許可ルールを動的に作成するステートフルインスペクション!長い名前だ
=======================
UDP~2
レイヤ4プロトコルにおいて、もっとも重要なフィールドは
ポート番号
です。
「送信元ポート番号」と「宛先ポート番号」があります。
IPヘッダさえあれば、世界中のどの端末までもIPパケットを届けることができます。
しかし、IPパケットを受け取った端末は、そのIPパケットをどのアプリケーションで処理すればよいかわかりません。
そこで、ポート番号を使用します。
ポート番号とアプリケーションは一意に紐づいていて、
ポート番号さえ見れば、どのアプリケーションにデータを渡せばよいかわかるのです。
◆3種類のポート番号
ポート番号は、「0~65535」の数字です。(16ビット分)
割り当て範囲と使用用途によって、
「System Ports」
「User Ports」
「Dynamic and/or Private Ports」 に分類されます。
「System Ports」と「User Ports」は、宛先ポートに使用され、主にサーバアプリケーションの識別に使用されます。
「Dynamic and/or Private Ports」 は、送信元ポート番号に使用され、主にクライアントアプリケーションの識別に使用されます。
[0~1023] ⇒ System Ports(Well-known Ports) ・・・一般的なAppで使用
[1024~49151] ⇒ User Ports・・・メーカ独自のAppで使用
[49152~65535] ⇒ Dynamic and/or Private Ports・・・クライアント側でランダムに割り当てて使用
■System Ports
ポート番号「0~1023」。
ICANNの一部門であるIANAによって管理されています。
一般的なサーバアプリケーションが提供するサービスに一意に紐づいています。
■User Ports
ポート番号「1024~49151」。
IANAによって管理されています。
メーカが開発した独自のサーバアプリケーションが提供するサービスに一意に紐づいています。
■Dynamic and/or Private Ports
ポート番号「49151~65535」。
IANAによって管理されておらず、クライアントがコネクションを作るとき、送信元ポート番号としてランダムに割り当てます。
送信元ポート番号にこの範囲のポート番号をランダムに割り当てることによって、どのアプリケーションプロセスに応答を返せばよいかがわかるようになります。
なお、ポート番号の範囲はOSにより異なっています。
Windowsは、「49152~65535」
Linuxは、「32768~61000」 (...範囲から外れとるな)
次は、UDPパケットの動きを見ていければと思います!
=======================
今日の一言
ポート番号は上位層のアプリケーションを識別する!これ、レイヤ4の重要な役割!
=======================
UDP~1
UDPは、
User Datagram Protocol の略。
音声(VoIP)やマルチキャストの動画配信、名前解決、DHCPなど、即時性を求めるアプリケーションで使用するレイヤ4プロトコル。
パケットを送ったら送りっぱなし(コネクションレス)なので、
プロトコル自体に信頼性があるわけではありませんが、確認応答の手順を省略しているので、通信の即時性が高まります。
IPヘッダのプロトコル番号は、17 です。
UDPは、RFC768「User Datagram Protocol」で規格化されている。
文量は少ない、とのこと。⇒シンプル
◆UDPのパケットフォーマット
8バイト(64ビット)で、構成フィールドは4つ。
・送信元ポート番号(2バイト)
・宛先ポート番号(2バイト)
・UDPデータグラム長(2バイト)
・チェックサム(2バイト)
です。
~UDPデータグラム長~
UDPヘッダとアプリケーションデータを合わせたデータグラム全体のサイズを表す。
バイト単位の値がセットされる。
~チェックサム~
受け取ったデータグラムが壊れていないか、整合性のチェックをします。
チェックサムの計算には、(IPヘッダと同じく)「1の補数演算」が使われる。
IPヘッダから生成した疑似ヘッダとUDPデータグラムに対して計算を実行して値の妥当性をチェックします。
チェックに成功したらデータグラムを受け入れ、失敗したら破棄します。
ポート番号についての記載は続き。。。
==================
今日の一言
UDPは、シンプルっ!なだけに頭に入って来ん。
==================
エスケープ!
エスケープ文字って何ですか?と問われ、何か聞き覚えはあるけど、よくわからずにいました。
エスケープ文字は、「それに続く文字に別の意味を持たせる」文字のようです。
・・・わかりずらい説明ですね。
以下、引用します。
通常、以下の3つの役割があります。
- 意味を持つ文字列にエンコードする(文字列に意味を持たせる)
- キーボードから入力できない文字を表現する
- 望まない解釈となる文字の意味を打ち消す
一番目の「意味を持つ文字列にエンコードする」。これはターミナルなどで文字に色を付けたりする処理での利用方法です。コマンドラインアプリケーションでは、エスケープシークエンスを利用し、文字列に意味を持たせ文字や背景に色を付ける処理がよく行われています。
二番目の「キーボードから入力できない文字を表現する」はWebアプリでも見られます。例えば、文字列中のヌル文字は多くの言語で”\0″と標記します。
三番目の「望まない解釈となる文字の意味を打ち消す」がセキュリティ的に最も意味のある処理です。例えば、シングルクォートで囲まれた文字列にシングルクォートを書くには
とエスケープ文字の\でエスケープし、特殊な意味(この例の場合、文字列の終端文字の ‘ )を打ち消しています。(注:このエスケープが使えない場合もあることに注意。OSコマンドエスケープ、XPathエスケープ、標準SQLの場合は’(シングルクオート)は’(シングルクオート)でエスケープします)
英語ではこの処理を”Character Quoting”と言う場合があります。英文マニュアルなどでエスケープの事をQuoteと書いてある場合がありますが、日本語ではエスケープとした方が解りやすいと思います。
Webアプリではエスケープ処理とセキュリティは切っても切れない関係にあります。Webアプリが処理するデータのほとんどがテキストインターフェースを持ち、特別な意味を持つ文字があるからです。
特別な意味を持つ文字が一文字でもある場合、ユーザー入力などをそのまま出力するとシステムが誤作動(インジェクション攻撃)する可能性があります。そもそもプログラムは正しい(妥当な)入力に対して正しく動作するように作られています。この為、不正なデータの受け入れは常にリスクが伴います。
攻撃者が悪意を持たせた入力を処理すると、システムに不正な処理を実行させる事(インジェクション攻撃)が可能になる事例は数えきれないくらい在ります。
セキュリティ対策的には、エスケープ処理は攻撃用入力データを送信(インジェクション)された場合でも「特別な意味を持つ文字の意味を打ち消し」、システムが誤作動しなくなるようにする為に行います。インジェクションができない様にエスケープ処理しても、出鱈目な攻撃用入力データがシステムに保存されることを防げない場合もあることに注意が必要です。
Webアプリの脅威には様々な脅威がありますが、インジェクション攻撃がWebアプリにとって最大の脅威であることは、CVE等に登録される脆弱性情報からも明らかです。出鱈目な攻撃用入力データがシステムに保存されることを防げない場合があっても、エスケープ処理は様々なインジェクション攻撃の脅威に対するセキュリティ対策として重要な意味を持っています。
現在、Webシステムで問題となるインジェクション攻撃の大多数が”文字列”に対して”不正な処理を行う文字列”を”挿入”(インジェクション)することによって発生します。
■ そもそもエスケープとは何なのか?
【CCNA】FHRPとは
CCNAの勉強中ということで、今回はFHRPについてです。
FHRPとは・・・
First Hop Redundancy Protocol の略
何のためのプロトコルかというと、
主にデフォルトゲートウェイ(DGW)の冗長化のためのプロトコルです。
First Hop というのは、DGWのことですね。
PCなどのホストから異なるNW(ネットワーク)の宛先へ転送されるパケットが到達する最初のルーティング機器になるためです。
通常、各ホストでDGWは1つしか設定できないです。
そのため、DGWの機器に障害が発生した時などは、インターネット等へアクセスできなくなります。
再び別のネットワークへアクセスできるようにするためには、各ホストのDGWの設定を変えてあげなければならないのです。
動的にDGWを切り替えるような機能がないということですね。
だから、あらかじめDGW機器のほうで冗長化を図り、障害が発生した時などにも正常に通信ができるように備えておくことが必要です。
それを実現するプロトコルが、FHRPというわけです。
~FHRPの概要~
FHRPでは、複数のルータやレイヤ3スイッチをグループ化し、「仮想ルータ」を構成します。
各ホストは、DGWの設定でこの「仮想ルータ」のIPアドレスを設定すればいいことになります。
障害発生時などには作成したグループの中の別のDGW機器が機能するようにフェイルオーバーします。
別のDGW機器が役割を引き継ぐわけですね。
ただ各ホスト側から見れば、「仮想ルータ」のMACアドレス、IPアドレス宛てにアクセスするだけなので、別のDGWに入れ替わっても設定変更は必要ありません。
これでDGWの障害時にも通信に影響を出さずに、やり過ごすことができるのです。
(スマホ問題集付)徹底攻略Cisco CCNA Routing & Switching教科書 ICND2編[200-105J][200-125J]V3.0対応
ブログを開設しました【2020年】
こんにちは!
私は、ITエンジニア3年目の社会人29歳です。
2017年に転職して未経験としてITエンジニアになって、
現在セキュリティエンジニア(インフラエンジニア)として奮闘中です。
このブログについては、自己の成長のために「発信」の場として設けました。
主に、ITインフラのことについて勉強したことをまとめて、
記載していければと思っています。
2020年もよい年に!
どうぞよろしくお願い申し上げます!!
試しに貼ってみます↓
□□□□□□□□□□□□□□□□□
『とにかく早い者勝ちっ!』
ドメイン取るならお名前.com
https://px.a8.net/svt/ejp?a8mat=3B4W97+FA4JQQ+50+2HEVMR
□□□□□□□□□□□□□□□□□