Manhattan Island, N.Y.C.


Date/Time: 2006:08:05 19:12:09
Camera: FUJIFILM
Model: FinePix F401
Exporsure Time: 1/420
FNumber: 7.0
Aperture Value: 5.6
Focal Length: 5.7

Close

y2blog » IPv6(IPoE)のセキュリティ対策

8

15

2017

IPv6(IPoE)のセキュリティ対策

IPv6(IPoE)インターネット接続のセキュリティ対策


我が家のインターネット接続環境をIPv6(IPoE)+DS-Lite方式に切り替えた事により、これまでとは打って変わったように高速化され、快適な環境を手に入れることができたことを紹介してきた.IPv6に関してはまだ一部の先進的なユーザが利用しているだけだが、セキュリティ面で少し気になる事があるので、今回は警鐘を鳴らすという意味でIPv6(IPoE)のセキュリティについて言及しておくことにする.


ネットワークの専門家であれば、IPv6(IPoE)の利用にあたり最低限どのようなセキュリティ対策(FWなどのフィルタリング設定)を施さなければならないのかは理解している筈なのでここで敢えて言及する必要は無いだろう.しかしながら、ネットワークに関する知識のない人が、ホームページで紹介されている設定例を鵜呑みにして、IPv6接続環境を構築するのは非常に危険だ.


今までのIPv4環境では殆どの場合ホームルータが使われており、NAPTなどのIPアドレス変換メカニズムによってインターネット側からは自宅側のネットワークが隠蔽され見えないようになっている.つまりユーザは自分では特別なセキュリティ対策を施さなくてもホームルータが自動的に外部からのネットワーク攻撃を防いでくれている.


しかしながら、IPv6(IPoE)ではこれまでのIPv4方式のNAPTのような便利な機能は使えないものと思っていて欲しい.単純にルータにIPv6(IPoE)の設定を入れただけでは、IPv4でのNAPTのようなファイアウォール的な機能は働かないのだ.これは何を意味するのかというと、IPv6(IPoE)環境では自宅のネットワーク環境が、外部のインターネット側から丸見え状態と言うことだ.


インターネットマルチフィード社の『DS-Lite 接続確認機種情』ページやインターリンク社の『サービス別設定マニュアル(ZOOT NATIVE)』などに記載されている、各種DS-Lite対応ルータの設定例を参考に設定すれば、内容をきちんと理解していなくてもIPv6(IPoE) DS-Lite方式でインターネット接続が可能だ.


問題は、これらの設定例が殆ど例外なく最低限必要なセキュリティ設定については何も記載されていないことだ.つまり、この設定例のままだと自宅のネットワークやコンピュータがいきなりインターネットに晒されてしまうことになる.これは非常にマズイ!!!… と言う訳で、きちんとセキュリティ対策を施した設定について紹介しておくことにする. 



先ずは実験君


先ずは、YAMAHA RTX1100 でインターリンク社のZOOT NATIVEサービスでのRTXの設定例をそのままぶち込んだ状態で、自宅のインターネット環境がどのような状況に置かれるのか検証して見る事にしよう.



# show config 
# RTX1100 Rev.8.03.94 (Thu Dec  5 19:06:16 2013)
# MAC Address : 00:a0:de:xx:yy:zz, 00:a0:de:xx:yy:zz, 00:a0:de:xx:yy:zz, 
# Memory 32Mbytes, 3LAN, 1BRI
# main:  RTX1100 ver=e0 serial=N1xxxxxx5 MAC-Address=00:a0:de:xx:yy:zz MAC-Addr
ess=00:a0:de:xx:yy:zz  MAC-Address=00:a0:de:xx:yy:zz 
# Reporting Date: Aug 14 21:22:11 2017
login timer 3600
ip route default gateway tunnel 1
ipv6 prefix 1 ra-prefix@lan2::/64
ip lan1 address [ xxx.xxx.xxx.xxx/zz ] 
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 prefix ra-prefix@lan2::/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 dhcp service client ir=on
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address 2404:8e00::feed:100    <=== AFTR のIPv6アドレス (NTT東エリア)
 tunnel enable 1
dns server dhcp lan2


この設定で問題無くIPv6接続ができている事を確認できたら、外部のIPv6接続環境から自宅のネットワーク環境がどのように見えているのか確認して見よう.


IPV6 Test Web
先ずはIPV6接続環境が整っていることを確認しておく

Mac OSX Network Settings
Mac上で割り当てられたIPV6アドレスを確認しておく
Local Test Environment
自マシン上のWEBサーバと自宅内の別なWEBサーバに対してIPv6で接続できる状態にしておく

この状態で、自分のPC(ここでは Mac OS X を使っている)上や別なマシン上でWEBサーバを立ち上げ、IPv6環境でWEB接続ができることを確認しておく.”OS X Maverics Apache: It Works!” と表示されているのが 自分のPC上で稼働しているWEBサイトで、”smokeping” のグラフ表示されているのが自宅内の別なLinuxマシン上で稼働している自宅内限定WEBサイトだ.


自宅内のネットワークやPCがIPV6接続できている状態で、外部(自宅外)からこれらのWEBサイトにIPV6で接続してみることにする.外部のIPV6接続環境は用意できなかったので、このWEBサイトをホスティングしているサーバにsshでログインして、そこからテキストベースのWEB接続を試みることにする.


先ずは、ping6 コマンドで自分のPCから ping(icmp)が返される事を確認する.


iMac27:~ yasuaki$ ssh -p yyyyy -l xxxxx y2tech.net   <=== このサイト "y2tech.net" にログイン
xxxxx@y2tech.net's password: 
Last login: Mon Aug 14 21:00:02 2017 from xxxxxxxxx
[xxxxx@y2web ~]$ ping6 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9  <=== 自PCにping(IPv6)を打ってみる
PING 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9(2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9) 56 data bytes
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=1 ttl=55 time=22.0 ms
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=2 ttl=55 time=5.82 ms
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=3 ttl=55 time=5.73 ms
^C
--- 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2994ms
rtt min/avg/max/mdev = 5.731/11.217/22.093/7.690 ms


今度はHTTPでアクセスしてみることにする.HTTP接続は telnetコマンドで80番ポートを直接叩いてHTTPレスポンスを確認する.最初は自分のPC上のWEBサイトに接続してみる.



[xxxxx@y2web ~]$ telnet 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9 80
Trying 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9...
Connected to 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9.
Escape character is '^]'.
GET /     
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>OSX Apache2</title>
	<meta name="generator" content="BBEdit 8.7" />
</head>
<body>
<h1>OSX Marverics Apache : It works!</h1>
</body>
</html>
Connection closed by foreign host.


次に、自宅内の別なLinuxサーバ上で稼働しているWEBサイトにアクセスしてみる.



[xxxxx@y2web ~]$ telnet 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245 80
Trying 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245...
Connected to 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245.
Escape character is '^]'.
GET /smokeping/sm.cgi?target=Ping
<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HTML>
<HEAD>
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Refresh" CONTENT="60">
<TITLE>SmokePing Latency Page for Network Latency [ ping responses ]<STYLE type="text/css">
</TITLE>
<STYLE type="text/css">
<!--

.menubar, 
.menubar a
{
    color: white;
    text-decoration: none;
}

.menubar {
    background: #4c4c4c;
}

.menu,
.menuitem,
.menuopen,
.menuactive

 【以下省略】




最後に、traceroute6 コマンドで “y2tech.net” からどのような経路で自宅内のPCにアクセスできているのか確認しておく.



[xxxxx@y2web ~]$ traceroute6 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245
traceroute to 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245 (2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245), 30 hops max, 80 byte packets
 1  2001:e42:102:1816::1 (2001:e42:102:1816::1)  106.622 ms  106.560 ms  106.536 ms
 2  tkgrt1b-grt25e.bb.sakura.ad.jp (2001:e47:0:b6::1)  11.558 ms  11.538 ms  11.516 ms
 3  tkwrt1s-grt1b.bb.sakura.ad.jp (2001:e47:0:21::1)  0.353 ms  0.336 ms tkgrt1s-grt1b.bb.sakura.ad.jp (2001:e47:0:69::1)  0.438 ms
 4  tkcrt2-grt1s-2.bb.sakura.ad.jp (2001:e47:0:f8::1)  0.540 ms  0.548 ms tkcrt2-grt1s.bb.sakura.ad.jp (2001:e47:0:1a::1)  0.447 ms
 5  2001:7fa:7:1:0:5:5391:1 (2001:7fa:7:1:0:5:5391:1)  1.125 ms  0.872 ms  1.045 ms
 6  ike-bbrt10.transix.jp (2404:8e00:feed:100::a)  1.487 ms ike-bbrt10.transix.jp (2404:8e00:feed:103::a)  1.404 ms ike-bbrt10.transix.jp (2404:8e00:feed:100::a)  1.407 ms
 7  2404:8e00:feed:ff07::a (2404:8e00:feed:ff07::a)  2.586 ms  2.683 ms  2.686 ms
 8  * * *
 9  * * *
10  2409:10:ad40:1400::1 (2409:10:ad40:1400::1)  9.263 ms  8.220 ms  8.827 ms
11  2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245 (2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245)  9.063 ms  8.163 ms  8.428 ms
[xxxxx@y2web ~]$ 

この結果から明らかなように、インターネット側から自宅のネットワークが丸見え状態で晒されていることが解るだろう.恐ろしい!!!



セキュリティ対策編


IPv6接続でのセキュリティ対策の方法は幾つかあるが、とりあえず一番手っ取り早いルータのフィルタ設定で外部からの侵入を防ぐ方法を紹介しておく.一番実績のあるYAMAHAのルータでの例を挙げておくが、基本的な考えはメーカや機種が異なっていても同じなので自分でマニュアル等を調べながら設定を行って欲しい.


YAMAHA RTX系のルータ設定例


YAMAHAのルータは一般家庭や素人ユーザが使うような範疇の製品では無いが、IPv6(IPoE) DS-Lite接続する様なコアな人達はそれなりの知識を持った人達なので、SOHOや小規模な拠点などで実績の有るYAMAHAのRTXルータを選んでいると想像できる.YAMAHAのRTXのホームページには多くの設定例が載っており、技術的な情報も豊富なので、RTXユーザはまずこのRTXのホームページの設定例を見て研究しておいて欲しい.

ざっと見た限りでは、IPv6(IPoE) による DS-Lite の設定例は掲載されていないようだが、『フレッツ光ネクスト インターネット(IPv6 IPoE)接続』に、IPv6(IPoE)でのフィルタリング設定も含めて基本的な設定方法が紹介されている.

この設定例は、残念ながらDS-Lite方式ではなく直接IPv6で接続するためのものだが、基本的なフィルタリング設定の方法を知るにはこの例が参考になるだろう.


後は、インターネットマルチフィード社やインターリンク社のRTXの設定例とYAMAHAのRTXのホームページの設定例を組み合わせれば、IPv6(IPoE) による DS-Lite の設定の基本部分が完成だ.




ip route default gateway tunnel 1
ipv6 prefix 1 ra-prefix@lan2::/64
ip lan1 address [ xxx.xxx.xxx.xxx/zz ]      <=== 自分の"lan1"側のIPアドレス
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 prefix ra-prefix@lan2::/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 secure filter in 1010 1011 1012 2000
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106
ipv6 lan2 dhcp service client ir=on
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address [ AFTR ]  <===(NTT東日本の場合、2404:8e00::feed:100)
 tunnel enable 1
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident  <=== "ident" の必要性は???
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp
dns server dhcp lan2


上記の例では、YAMAHAのRTXホームページのフィルタリング設定例をそのまま載せてあるが、勿論人によってその内容は異なるので、各自の方針に合わせて設定すれば良い.ネットワークの専門家でなければ細かな内容は解り難いが、基本は 外部からのicmp6, DHCPv6 client(UDP 546)は受け入れて、それ以外は拒否( filter #2000 )する設定になっている.YAMAHAの例では ident (port #113)を通す設定になっているが、現在ではあまり使われていないようなので、この設定を外してデフォルトで ident を拒否 [ Reject(TCP RST) ] するようにしておいた方が良いかもしれない.


“ident” に関しては、『RTシリーズのIPパケット・フィルタに関するFAQ』、『TCP/113 AUTH/IDENT に関して』などの解説記事を参考にすると良いだろう.


YAMAHAのRTXシリーズの発信接続の戻りパケットを受け入れるダイナミックフィルタ機能(所謂ステートフルファイアウォール機能)の振る舞いについてはあまり理解していないが、#105,#106の TCP/UDP だけでも問題無いように思えるがどうなのだろう?この辺の設定については各自できちんと調べて、必要に応じて設定して欲しい.


上記のフィルタリング設定を施した上で、同様な実験を行ってみる.



[xxxxx@y2web ~]$ ping6 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9
PING 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9(2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9) 56 data bytes
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=1 ttl=55 time=10.4 ms
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=2 ttl=55 time=5.69 ms
64 bytes from 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: icmp_seq=3 ttl=55 time=5.87 ms
^C
--- 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2253ms
rtt min/avg/max/mdev = 5.698/7.332/10.423/2.187 ms

[xxxxx@y2web ~]$ telnet 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9 80
Trying 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9...
telnet: connect to address 2409:10:vvvv:vvvv:vvvv:vvvv:fe50:bb9: Connection timed out

[xxxxx@y2web ~]$ telnet 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245 80
Trying 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245...
telnet: connect to address 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245: Connection timed out

[xxxxx@y2web ~]$ traceroute6 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245
traceroute to 2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245 (2409:10:vvvv:vvvv:vvvv:vvvv:3dba:e245), 30 hops max, 80 byte packets
 1  2001:e42:102:1816::1 (2001:e42:102:1816::1)  51.492 ms  52.069 ms  52.033 ms
 2  tkgrt1b-grt25e.bb.sakura.ad.jp (2001:e47:0:b6::1)  11.856 ms  11.841 ms  11.770 ms
 3  tkgrt1s-grt1b.bb.sakura.ad.jp (2001:e47:0:69::1)  0.280 ms tkgrt1s-grt1b-2.bb.sakura.ad.jp (2001:e47:0:f4::1)  0.301 ms  0.288 ms
 4  tkcrt2-grt1s-2.bb.sakura.ad.jp (2001:e47:0:f8::1)  0.493 ms  0.490 ms  0.555 ms
 5  2001:7fa:7:1:0:5:5391:1 (2001:7fa:7:1:0:5:5391:1)  1.422 ms  1.364 ms  1.354 ms
 6  ike-bbrt10.transix.jp (2404:8e00:feed:104::a)  1.488 ms ike-bbrt10.transix.jp (2404:8e00:feed:107::a)  1.513 ms ike-bbrt10.transix.jp (2404:8e00:feed:103::a)  1.214 ms
 7  2404:8e00:feed:ff07::a (2404:8e00:feed:ff07::a)  4.030 ms  3.855 ms  3.708 ms
 8  * * *
 9  * * *
10  * * *
  ...

27  * * *
28  * * *
29  * * *
30  * * *
[xxxxx@y2web ~]$ 


この結果から分かるように、icmpは通る(フィルタ設定 #1010 で許可)が、HTTPは接続拒否されており、きちんと意図した通りのフィルタリングが行われ、意図しない外部からの接続を防いでいることが理解できるだろう.



IPv6(IPoE)接続ではフィルタリング設定は必ず行うこと!!!