sshdのauth.logにufwで拒否しているはずのIPv6アドレスが記録されていた

WebARENA IndigoでVPSを契約して、そこでUbuntuを動かしています。(国内最安値で、常時稼働だとEC2より安いと思います。ちゃんと比較してないですが。)

そこでsshdのログの出力(IPv6)で気づきがあったので記録に残しておきます。

WebARENA Indigoでのファイアウォール設定

WebARENA Indigoでは、IPv6のアドレスが付与されますが、VPS基盤側で提供されているファイアウォールではIPv6の制御をすることができません。(サービス仕様

そのため、IPv6はufwで制御していて、Ansibleで下記の設定を行っています。
(IPv4は基盤側のFWに任せてるので全てALLOW、IPv6はhttp/httpsのみALLOW)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
- name: Configure UFW
hosts: localhost
become: yes
tasks:
- name: Install UFW
apt:
name: ufw
state: present

- name: Reset UFW to default
ufw:
state: reset

- name: Allow all IPv4 traffic
ufw:
rule: allow
proto: any
from_ip: 0.0.0.0/0

- name: Allow IPv6 traffic on port 80
ufw:
rule: allow
proto: tcp
port: '80'
from_ip: '::/0'

- name: Allow IPv6 traffic on port 443
ufw:
rule: allow
proto: tcp
port: '443'
from_ip: '::/0'

- name: Deny all other IPv6 traffic
ufw:
default: deny
proto: any
from_ip: '::/0'

- name: Enable UFW
ufw:
state: enabled

ufwのDefaultルールがDenyなので、IPv6の設定はDefaultルールに包含されている形になっています。

1
2
3
4
5
6
7
8
9
10
11
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To Action From
-- ------ ----
Anywhere ALLOW IN Anywhere
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)

auth.logを見ていた時に気づいたこと

ある日、何気なくauth.logをみていると、IPv6アドレスがFromになっているsshdの遮断ログが記録されていました。

1
sshd[XXXX]: refused connect from IPv6アドレス

sshdのポートはIPv6では開放しておらず、本来ならばsshdでアクセス拒否する前に、ufw側で拒否していてsshdには到達しないはずです。

で、AWS Cloudshellから試したところ、IPv4でSSHアクセスしても(ssh -4)、FromのサーバがIPv6アドレスを持つ場合、sshdのログ上ではIPv6のアドレスで記録されることがわかりました。
ちなみにサーバ側のsshd_config内でAddressFamily inetにしてもこの記録仕様に変化はありませんでした。

で、よくよくそのアドレスをみてみるとIPv4-mapped IPv6 Addressの形式でした。(ex. ::ffff:203.0.113.1
おそらくですが、IPv6対応した機器からのアクセスはIPv4でアクセスしてもこのような形式で記録されるのではないかな?と思います。

このサーバの拒否のログのなかでIPv4-mapped IPv6 Addressの形式でアクセスがきているのがここ1ヶ月でも約250件中1件だけでした。
もし先ほどの仮説が合っていたら、攻撃者の機器もまだまだIPv6が普及していないということなので、逆にIPv6だけに限定するだけで、セキュリティ強化にある程度の効果のある対策になる気がしました。

と、色々考察したけど多分間違っていて、単に何らかのバージョンアップによってログ記録仕様が変更されただけではないかな?と考えています。

というのも、この日以降、すべてこの形式で記録されるようになったからです。

このタイミングでopensshのバージョンアップ対象にはなっておらずなので、わかることはtcp/ip関連の記録処理に関連する何らかのソフトウェアの変更だというところまで…