運用常時接続時代のパーソナル・セキュリティ対策(第2回)8.パケット・フィルタの設定(4) デジタルアドバンテージ |
||
次は、いよいよルールに沿ってフィルタを設定する。まず外向きのTCP接続はすべて許可するが外部からの接続要求は拒否する。ただしソース・ポート番号が20番(FTPのデータ・ポート)の接続要求だけは許可する(次のリスト1行目と2行目)。
UDPは、DNS(ソース・ポート:53番)、BOOTP/DHCP(ソース・ポート:67番と宛先ポート:68番)、NTP(ソース・ポート:123番)の3つを許可する(3〜5行目)。
ICMPは、Echo(type:8)、Echo Reply(type:0)の2つだけを許可する(6〜7行目)。
|
|
※先頭の1:などは説明のために付けた行番号なので実際には入力する必要はない。また、表示の都合上1行が複数の行に分かれているが、実際には1行で入力しないとエラーとなる。以上のコマンド列を ここ に用意したので、テキストをすべて選択、コピーして、netshのコマンドラインに貼り付けると実行できる。ただしあらかじめ“routing ip”コンテキストに変更しておくこと。 |
これらのルールはかなり複雑に見えるかも知れないが、よく見ると簡単な構造であることが分かる。
「name="インターネット 接続" filtertype=input」は、先ほどのset filterコマンドと同じであり、インターネット側のインターフェイスのインバウンド・フィルタを設定することを表している。
「srcaddr=0.0.0.0 srcmask=0.0.0.0 dstaddr=0.0.0.0 dstmask=0.0.0.0」は全コマンドに共通であるが、パケット中のソースIPアドレスと宛先IPアドレス(およびそれらのネットマスクの値)を表している。これらはすべて0なので、どんなIPアドレスにもマッチする。つまりIPアドレスは任意(関知しない)ということである。もともとインターネット側のIPアドレスはDHCPで割り当てられるので不定であり、特定の値に限定することはできない。もし固定的なIPアドレスを割り当てているのなら、その値をこの宛先アドレス部分に記述することにより、より限定的な接続のみを許すように設定できる。
その次にある「proto=」はネットワークのプロトコルの種類を表し、tcp/tcp-est/udp/icmp/any、および数値が指定できる。これらのうちtcp/udp/icmpはそれぞれのプロトコルを表すが、それら以外のプロトコルの場合は数値で指定する。anyはどんなプロトコルでもかまわないことを表す(anyは、IPアドレスだけで例外ルールを決めるような場合に使用する)。tcp-estは、接続が「確立済み(established)」のTCPコネクションのみを表す。「確立済み」とは、以下のようなTCPにおけるパケットのやり取りのうち、一番最初のSYNのみのパケットを“除いた”パケットを表す。つまり2番目以降のパケットすべてのことを指す。インバウンドのパケット・フィルタにおいて、確立済みのTCPパケットだけを許可するということは、言い換えると、TCP通信の先頭にあるパケットは受け付けない、ということである。これは結局、外部からの接続要求(TCPのアクティブ・オープン)を拒否しつつ、内部から外部への接続はそのまま通すという意味になる。
TCPコネクションの確立 |
|||||||||
TCPはステートフルな(状態を持つ)通信プロトコルである。サーバ側とクライアント側(ここでいうサーバ/クライアントとは、TCPの接続を待ち受けする側と呼び出す側のこと)の2つがきちんと区別されており、どちらから接続要求を出すかによってサーバになったり、クライアントになったりする。サーバ側では、あるポートに対して待ち受け(パッシブ・オープン)しており、そこにクライアント側から接続要求を送ると(アクティブ・オープン)、通信が開始される。全二重通信をサポートしているので、SYNを送ってACKを待つのは、両方の側から行う必要がある。「proto=tcp」とするとこれらすべてのパケットにマッチするが、「proto=tcp-est」とするとA以降のパケットにのみマッチする。 | |||||||||
|
「srcport=nnn dstport=mmm」は、それぞれソース・ポート番号と宛先ポート番号を表している。「0」ならば任意のポートを表すが、そうでなければ、特定のポート番号を持つパケットのみを表すことになる(ポート番号として、ある範囲を表すような指定はできない。複数のポートをフィルタリングしたい場合は、ひとつずつルールを追加する必要がある)。ただしICMPプロトコルの場合は、srcportとdstportではなく、ICMPのtypeとcodeを使う。
省略形式コマンドによるフィルタ設定
以上のコマンドをnetshで実行すればパケット・フィルタが設定されるが、実際にこのような長いコマンド列を入力するのは大変なので、先ほどのように省略形式を使ってみよう。
|
|
※ 以上のコマンド列を ここ に用意したので、テキストをすべて選択、コピーして、netshのコマンドラインに貼り付けると実行できる。ただしあらかじめ“routing ip”コンテキストに変更しておくこと。 |
このように、省略形を使うと容易に入力することができるが、1つだけ注意点がある。最後の2つのコマンドはICMPに関するフィルタであるが、ここでは「type=」と「code=」を省略することができない(ヘルプ・メッセージには省略できるように記述されているにもかかわらずである)。
運用 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|