1331 文字
7 分
UbuntuにてIPv6のtemporary addressを使わないようにする。サーバ運用なので。

概要#

  • 自宅サーバをipv6対応しました。
  • Ubuntu Linuxを普通に使っていると、ipv6のアドレスは7日で変わってしまう。セキュリティ的な理由で。詳細は:RFC3041
  • 最近、Web上で話題になっていた、ipv6のパケットフィルタリングルールに関する話題にも関連しています。

仕様の調査#

IPv6の仕様の一つに、Privacy Extensions for Stateless Address Autoconfiguration in IPv6 (IPv6ステートレスアドレス自動設定のプライバシー拡張)があります。

要するに、IPv6はNATが基本的に存在しなく、グローバルアドレスが直接ノードに振られてしまう事によってサーバサイドから追跡可能になってしまう可能性があるからそれを防ぐために定期的に使うアドレスを変更する技術です。

逆に、勝手にIPv6アドレスが変わってしまっても困るので固定のアドレスと、一時アドレスの2つをNICにアサインして基本的には一時アドレスを使いましょうという方針です。

例えば、macosでは以下のようなIPv6アドレスの表示があり、片方が一時アドレスになります。

ipv6 最初の状態

NICをoffにしてonにするとipv6の片方が入れ替わる (下)

https://ipv6-test.com/ にGoogle Chromeでアクセスすると、この変更されたipv6のアドレスが表示されます。

では、このRFC3041をOSではどのように実装しているかというと、Linuxの場合は以下のパラメータで調整します。

https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

use_tempaddr - INTEGER
Preference for Privacy Extensions (RFC3041).
<= 0 : disable Privacy Extensions
== 1 : enable Privacy Extensions, but prefer public
addresses over temporary addresses.
> 1 : enable Privacy Extensions and prefer temporary
addresses over public addresses.
Default: 0 (for most devices)
-1 (for point-to-point devices and loopback devices)
temp_valid_lft - INTEGER
valid lifetime (in seconds) for temporary addresses.
Default: 604800 (7 days)
temp_prefered_lft - INTEGER
Preferred lifetime (in seconds) for temporary addresses.
Default: 86400 (1 day)
  • use_tempaddr <一時アドレスを使うかどうか制御>0なら無効、1なら一時アドレスを有効化しますが、パブリックアドレスを優先して使う。
  • temp_valid_lft: 有効期限(デフォルトは7日
  • temp_prefered_lft: 推奨される有効期間 (デフォルトは1日

手元のUbuntu 20で確認してみます。

Terminal window
> sudo sysctl -a|grep -e temp_valid_lft -e temp_prefered_lft -e use_tempaddr|grep wlx
net.ipv6.conf.wlx0013eff32167.temp_prefered_lft = 86400
net.ipv6.conf.wlx0013eff32167.temp_valid_lft = 604800
net.ipv6.conf.wlx0013eff32167.use_tempaddr = 2

use_tempaddrが2になっています。デスクトップ向けの設定という感じです。サーバならばこれが0か1になるべきです。

では、AWS EC2ではどのように設定されているかを見てみます。

Terminal window
$ sudo sysctl -a|grep -e temp_valid_lft -e temp_prefered_lft -e use_tempaddr|grep ens
net.ipv6.conf.ens5.temp_prefered_lft = 86400
net.ipv6.conf.ens5.temp_valid_lft = 604800
net.ipv6.conf.ens5.use_tempaddr = 0

0になっています。

まぁ、自宅サーバなのでuse_tempaddrは1に設定しておこうかと思います。

設定#

Terminal window
matsu@dell ~> sudo sysctl net.ipv6.conf.wlx0013eff32167.use_tempaddr
net.ipv6.conf.wlx0013eff32167.use_tempaddr = 2
matsu@dell ~> curl https://v6.ident.me/
240b:10:2120:f400:edc1:bcf0:567b:785d
matsu@dell ~> sudo sysctl -w net.ipv6.conf.wlx0013eff32167.use_tempaddr=1
net.ipv6.conf.wlx0013eff32167.use_tempaddr = 1
matsu@dell ~> curl https://v6.ident.me/
240b:10:2120:f400:f93f:c66f:26ff:46e3

設定の永続化をするために以下を/etc/sysctl.confへ追記

net.ipv6.conf.wlx0013eff32167.use_tempaddr=1

一応、ddns-route53の動作確認をします。今までは一時アドレスを使って、これからはpublic addressを使うようになっているかを確認しておきます。

root@dell /v/log# grep ddns syslog|grep IPv6|tail -n 10
Jun 6 13:00:02 dell ddns-route53[110094]: #033[90mSat, 06 Jun 2020 04:00:02 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:edc1:bcf0:567b:785d
Jun 6 13:00:02 dell ddns-route53[110094]: #033[90mSat, 06 Jun 2020 04:00:02 UTC#033[0m #033[32mINF#033[0m WAN IPv4/IPv6 addresses have not changed since last update. Skipping...
Jun 6 13:00:02 dell ddns-route53[1588297]: #033[90mSat, 06 Jun 2020 04:00:02 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:edc1:bcf0:567b:785d
Jun 6 13:00:02 dell ddns-route53[1588297]: #033[90mSat, 06 Jun 2020 04:00:02 UTC#033[0m #033[32mINF#033[0m WAN IPv4/IPv6 addresses have not changed since last update. Skipping...
Jun 6 13:30:02 dell ddns-route53[1588297]: #033[90mSat, 06 Jun 2020 04:30:02 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:edc1:bcf0:567b:785d
Jun 6 13:30:02 dell ddns-route53[1588297]: #033[90mSat, 06 Jun 2020 04:30:02 UTC#033[0m #033[32mINF#033[0m WAN IPv4/IPv6 addresses have not changed since last update. Skipping...
Jun 6 13:30:02 dell ddns-route53[110094]: #033[90mSat, 06 Jun 2020 04:30:02 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:edc1:bcf0:567b:785d
Jun 6 13:30:02 dell ddns-route53[110094]: #033[90mSat, 06 Jun 2020 04:30:02 UTC#033[0m #033[32mINF#033[0m WAN IPv4/IPv6 addresses have not changed since last update. Skipping...
Jun 6 14:00:02 dell ddns-route53[1588297]: #033[90mSat, 06 Jun 2020 05:00:02 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:f93f:c66f:26ff:46e3
Jun 6 14:00:03 dell ddns-route53[110094]: #033[90mSat, 06 Jun 2020 05:00:03 UTC#033[0m #033[32mINF#033[0m Current WAN IPv6: 240b:10:2120:f400:f93f:c66f:26ff:46e3

ddns-route53もtemporary addressを使っていたようなので、今回の設定によってpublic addressを使うようになりました。

あと、IPv6のフィルタリングが気になったのでポートスキャンしてみます。

Terminal window
$ nmap -6 240b:10:2120:f400:f93f:c66f:26ff:46e3
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-06 05:09 UTC
Nmap scan report for 240b:10:2120:f400:f93f:c66f:26ff:46e3
Host is up (0.012s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
3000/tcp open ppp
3001/tcp open nessus
3003/tcp open cgms

む。ipv6のフィルタ設定が漏れていたので、ちゃんとfilterをしました。世の中にサンプルとして公開されているYAMAHA RTX系ルータの設定って危険ですね。。。。再テストします。

Terminal window
$ nmap -6 240b:10:2120:f400:f93f:c66f:26ff:46e3
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-06 06:16 UTC
Nmap scan report for 240b:10:2120:f400:f93f:c66f:26ff:46e3
Host is up (0.013s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.79 seconds

まとめ#

  • 自宅サーバのIPv6アドレスが、長期間変更されないようになりました。

考察#

上記の解説をもとにして、こちらの記事を見てみると、この記事内で指摘しているセキュリティリスクを理解できると思います。ブルートフォースで端末のIPv6アドレスを探すのは非常に困難です。

しかしながら、サーバサイドに悪意のあるサーバや途中経路に悪意のあるノードがいる場合は、接続元のIPv6アドレスを知れるのでそこに対してアタックを仕掛けるのは容易になるというリスクがあります。

UbuntuにてIPv6のtemporary addressを使わないようにする。サーバ運用なので。
https://blog.teraren.com/posts/disable-temporary-address-of-ipv6-on-ubuntu/
作者
Yuki Matsukura
公開日
2020-06-06
ライセンス
CC BY-NC-SA 4.0

コメント