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 | - name: Configure UFW |
ufwのDefaultルールがDenyなので、IPv6の設定はDefaultルールに包含されている形になっています。
1 | $ sudo ufw status verbose |
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関連の記録処理に関連する何らかのソフトウェアの変更だというところまで…