1. nzzy

    No comment

    nzzy
Changes in body
Source | HTML | Preview
@@ -1,63 +1,91 @@
#1.はじめに
 サーバーと通信するゲームはいつもネットワークからの攻撃にさらされます。中でも一番やっかいなものにDDoS攻撃という攻撃があります。本記事では、Alibaba Cloudで契約することで、
- Alibaba Cloud以外で稼働しているシステムを防御できるAntiDDoS Premiumの紹介と、
- AntiDDoS Premiumが持つ特殊機能TOAについて
紹介します。
#2.DDoS攻撃とは
 DDoS攻撃とは、世界中にある大量のIT機材を利用して、特定のサービスに対し大量の通信を浴びせることでサービスを妨害する攻撃です。攻撃に使われる通信は、
- 電文そのものがサービスの不具合を誘発させるものを使ったり、
- 通常は無害な通信あるいは、無効な通信を数100Gbpsもサービスの回線に浴びせることで回線を飽和させてサービス停止に追い込むもの
があります。
 攻撃を受けている側は、どこのIPアドレスから来るかもわからない大量の通信を浴びせられつづけるため、IPアドレスを使って適切に防御することもできず、また、あまりに多い無効のパケットで回線設備(ファイヤーウォール、ルータ等)を過負荷にさせられてしまうので本来のサービスは全く提供できなくなってしまいます。
![adv-ddos-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/374c6844-970f-63ad-f62c-45dbc68a2580.png)
#3.Alibaba Cloudの持つDDoS攻撃防御サービス
 Alibaba Cloudで使えるDDoS攻撃防御のサービスは複数あります。こちらを表に載せます。
| サービス名 | 概要 |
|:----------------|:------------------|
|Anti DDoS Basic | Alibaba Cloud上にあるシステムをDDoS防御するサービス。|
|Anti DDoS Premium | Alibaba Cloud外に設置しているシステムをDDoS防御することができるサービス |
|Anti DDoS Pro |中国国内にサーバを用意しているものを対象として利用できるDDoS防御サービス|
|Game Shield | ゲームアプリケーションに特化した様々な攻撃を防御できる。DDoS防御も含まれる。 (但しアプリケーションと連動必須)|
今回は Anti DDoS Premiumについて紹介します。
#4. Anti DDoS Premiumはどういう形で入るか?
Anti DDoS Premiumは、Alibaba Cloud外で稼働しているシステムのDDoS攻撃防御を行うことができるというサービスです。某クラウドサービスのように、サービスを提供しているクラウドのシステムしかDDoS攻撃から守れないという度量の狭いサービスではありません。外部のシステムまで十分に守れるということからDDoS防御については自信の程が伺えますね。
 守られるシステム側から見たAnti DDoS Premiumの入り方を図にしてみます。
![adv-ddos-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/d373fcbc-98bb-8170-bcf0-84f0950270d1.png)
 図の通り、システムの前段にProxyサーバとして入る形で防御対象のシステムを防御します。
- また、クライアントのIPアドレスは以下の表のようにして保存されます。残念ですが、UDPは現状クライアントのIPアドレスをそのままでは知る方法はありません。UDPにおいてクライアントのIPアドレスを知るには、クライアントアプリケーションがUDPの電文にクライアントのIPアドレスを含めるような動作をさせるしかありません。
+ また、クライアントのIPアドレスは以下の表のようにして保存されます。HTTP/HTTPSについては、WebSocketももちろん対応しています。なお、残念ですが、UDPは現状クライアントのIPアドレスをそのままでは知る方法はありません。UDPにおいてクライアントのIPアドレスを知るには、クライアントアプリケーションがUDPの電文にクライアントのIPアドレスを含めるような動作をさせるしかありません。
| プロトコル |種別(※1)| クライアントのIPアドレスはどこに保存されるか?|
|:---------|:------|:---------------------------------------|
-|HTTP | Web Site |X-Forwarded-Forヘッダ |
-|HTTPS | Web Site | X-Forwaded-Forヘッダ |
+|HTTP/WebSocket(※2) | Web Site |X-Forwarded-Forヘッダ |
+|HTTPS(TLS1.2等)/HTTP/2/WebSockets(※2) | Web Site | X-Forwaded-Forヘッダ |
|任意のTCP| Non-Web Site |TCP Optionフィールドに格納。TOA機能を有効にした特定のLinux Kernelなら復元できる。|
-|任意のUDP| Non-Web Site |現状記録されない。(知りたい場合はクライアントのアプリケーションでUDP電文にIPアドレス情報の埋め込みが必要)|
+|任意のUDP(※2)| Non-Web Site |現状記録されない。(知りたい場合はクライアントのアプリケーションでUDP電文にIPアドレス情報の埋め込みが必要)|
※1. Anti DDoS Premiumの設定画面で、「Web Site」か、「Non-WebSite」の設定画面が分けられています。
+※2. HTTP/HTTPSプロトコルであっても指定できるポート番号が限られています。詳しくは
+   Protection of non-standard ports
+   https://www.alibabacloud.com/help/doc-detail/127448.htm
HTTP/HTTPSに限り、Anti DDoS Premium側で、クライアントのIPアドレスをX-Forwarded-Forヘッダに記録してくれます。任意のTCP通信は、後述するAnti DDoS Premiumのもつ特殊機能であるTOAを用いることで、クライアントのIPアドレスをサーバ側で知ることができます。UDPは残念ですが、クライアントのIPアドレスを知る方法はありません。
#5. Anti DDoS Premiumを使う
 では早速使ってみましょう。
 Step1. まずAnti DDoS Premiumのメニューを選び、購入操作をします。購入はボタンを押すだけですから簡単ですね!
![adv-ddos-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/752a8027-85d8-477f-4f91-8ea23ad8b9b2.png)
- Step2.
+ Step2. 次に守りたいHTTP/HTTPSの通信を設定します。DDoSから守るべきHTTP/HTTPS通信がある場合はこちらに設定していきます。設定の仕方は図のような操作をして設定します。
+![adv-ddos-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/91dda759-0a86-1454-9169-1f5062a2f050.png)
+ 
+ Step3. 次に守りたいHTTP/HTTPSではない通信を設定していきます。設定の仕方は図のような操作をして設定します。
+![adv-ddos-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/13a6d2e2-ae2c-dbe4-2476-32835762d90b.png)
+
+以上で、あっという間にシステムがDDoS防御されるようになります。
+
+#6. 通信設定が沢山あるとき
+
+実際に通信設定をするとわかるのですが、守りたい通信1つ1つを設定するのは骨が折れます。ここで設定のXMLファイルを入手して好きなエディタで加工して一気に指定する方法があります。図に紹介します。とても簡単ですね!
+![adv-ddos-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545419/55f15008-887e-261d-7f61-5e3f89395aa0.png)
+
+#7. 特殊機能TOAについて
+
+ Alibaba CloudのAnti DDoS Premiumのマニュアルを読んでも、実は使えるのに記載が無い機能としてTOAがあります。ここではTOAについて記載します。
+
+ TOAとは、TCP Option Addressという機能の略となります。TCPパケットのOptionフィールドに特殊なIDとクライアントのIPアドレスを入れておき、特殊なLinuxカーネルのモジュールで復元して、システムコールの結果として返却するというものとなります。本機能のメリット・デメリットを表にすると以下のとおりです。
+
+メリット:
+ 通常のSocketプログラムなら、クライアントのIPアドレスが通常の手続きで入手できる。間にAnti DDoS Premiumが入っていることを気にする必要が無い。
+
+デメリット:
+  1. 現状Linuxカーネルが特殊なものが必要なので、特殊なカーネルで起動できない環境(一部のクラウドサービス)ではそもそも利用ができない。
+  2. TOAを悪用したパケットをサーバに直接流し込まれるとクライアントのIPアドレスが偽装されてしまう。
+