本記事はプロモーションを含みます
VPS(Virtual Private Server)は管理者権限が使えるため非常に応用範囲が広く人気があります。その一方でサーバー管理は自分でおこなわなければならず、特にセキュリティについてしっかりと自分で守らなければいけません。
今回はさくらのVPSのアクセス制限機能である「パケットフィルター」について利用する際の注意点を解説したいと思います。
結論から先に書くと、さくらのVPSのパケットフィルターはセキュリティ的に問題があるので使わない(無効化)することをおすすめします。
さくらのVPSでパケットフィルターを利用する方法は以下の記事で解説しているので、詳しくは記事をご覧ください。
Linux VPSでIPアドレス制限をする複数の方法を解説|さくらのVPSは要注意本記事ではさくらのVPSのパケットフィルターの仕様と使わない方が良いと考える理由を解説します。
Contents
さくらのVPSのパケットフィルター機能の仕様に注意
さくらのVPSには他のVPSと同様に通信制限をおこなう機能が提供されています。
この機能はOSのファイアウォール機能を使うほどではないだとか、自分でファイアウォール設定をおこなうことは難しいだとか、そういう方に向けて手軽に通信制限ができるようにするものです。
さくらのVPSの「パケットフィルター」はデフォルトで有効化されていて、初期設定ではSSH通信を全IPアドレス向けに公開しているように見えます。
”公開しているように見える”と書いたのは、実際にはそれ以外の通信も公開しているからです。
さくらのVPSの「パケットフィルター」の仕様
さくらのVPSのパケットフィルターを利用する上で必ず認識しておいて頂きたいのは、次のような仕様である点です。
- TCP/UDPの32768~65535番をアクセス制限しない
- UDPの123番(NTP)を制限しない
- IPv6通信を制限しない
- ICMPを制限しない
- フラグメントパケットを制限しない
TCP/UDPの32768~65535番をアクセス制限しない
パケットフィルターはカスタム設定によってプロトコルやポート番号を指定できますが、32768~65535番は指定できません。
UDPの123番(NTP)を制限しない
UDPの123番は一見するとアクセス制限できます。
ところが実際にはこの設定は効いていません。ためしにUDP 123番宛てに通信をしてみると範囲外のIPアドレスから着信します。
IPv6通信を制限しない
IPv6を有効化している場合、IPv6でアクセスされると一切の制限がなくなります。
ICMPを制限しない
PINGなどICMP通信を制限できません。
フラグメントパケットを制限しない
意図的にパケットをフラグメントされるとフィルターが効かなくなります。これはお粗末過ぎる気がします…。
大昔のファイアウォールにもフラグメントパケットを再構築できず全通しになる「穴」がありました…
アクセス制限できないポートがあると危険な理由
セキュリティは攻撃者の目線で考える必要があります。
WEBアプリにOSコマンドインジェクションの脆弱性がある場合、よくあるパターンとして攻撃者は~/.ssh/autorized_keys
ファイルに攻撃者自身の公開鍵を追加しログインシェルを奪取します。
一見すると「さくらのVPSのパケットフィルターでSSH接続を制限しているのだから、攻撃者はログインできないはず」思うかも知れません。
しかし攻撃者目線で見ると簡単に突破できます。
もしもさくらのVPSのパケットフィルターのように通信制限しないポートがあると、そのポートを使ってポート転送をおこないSSHログインが可能となります。
簡単に書くと、たとえば攻撃者はVPSのTCP 60000番で待ち受けて、その通信をVPS自身のの22番(SSH)に転送させることができます。
攻撃者によく使われるポート転送ツールとして有名なのはChiselです。
OSコマンドインジェクションなどの脆弱性を使いVPS上で攻撃者は次のコマンドを実行します(chiselはあらかじめダウンロードしておく)。
vps$ ./chisel server -p 60000
これでVPSはTCP 60000番で待ち受けます。攻撃者は次に自身の端末で次のコマンドを実行します(192.168.0.123はVPSのIPアドレス)。
hacker$ ./chisel client 192.168.0.123:60000 61000:192.168.0.123:22
このコマンドを実行すると攻撃者の端末からVPSのTCP 60000番に接続します。そして、その接続はVPS上でTCP 22番へ転送されます。
最後に攻撃者は自分の端末で次のコマンドを実行します。
hacker$ ssh foo@localhost -p 61000
これで攻撃者はVPSの60000番を経由してVPSへSSHログインできるようになります。つまり、次のような接続の流れになります。
hacker ➝ hacker:61000 ➝ vps:60000 ➝ vps:22
このあたりは理解するのに少し難しいかも知れませんが、要は遮断していないポートがあると攻撃者はポート転送を使ったり、そのポートを利用して攻撃ができるという事です。
未使用ポートでも通信制限しないと攻撃者に利用される
結論:さくらのVPSのパケットフィルターはおすすめできない
ネットでさくらのVPSについて解説しているブログなどを拝見しましたが、さくらのVPSのパケットフィルターの仕様を理解している人は少ないように感じました。
仕様を知らない方からするとパケットフィルターは手軽にIPアドレス制限ができてVPSを安全に保てるような印象があります。
さくらのVPSのパケットフィルターの仕様を知っていて、アクセス制限が不完全だと知った上で使う分には良いのですが、それを知らずに適切にフィルターされていると思っている方が多いのではないでしょうか。
わたし個人としてはパケットフィルターを無効化してOSのファイアウォール機能(ufwなど)でフィルタリングすることをおすすめします。
Linux VPSでIPアドレス制限をする複数の方法を解説|さくらのVPSは要注意まとめ
さくらのVPSは非常にユーザーが多く、無料のお試し期間もあることから特に初心者の方の利用が多いので気になり記事にしました。
VPSはセキュリティ対策を自分で責任を持っておこなう必要があるので、さくらのVPSのパケットフィルターは無効化した上でOSのファイアウォール機能を使い適切なフィルター設定をおこなう事をおすすめします。