プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

QNAP NAS の admin 無効後のスナップショットレプリカでトラブル

知り合いの方と Twitter でやり取りしてたら、今更ながら QNAP でマルウェア被害が起こってることに気がつきました。

QlockerランサムウェアについてのQNAPからのお知らせ

怖い怖い。

幸い、自分の NAS はこれには巻き込まれてなかったんですが、この機にセキュリティをちょっとだけ強化したいと思い立ちました。

NASのコントロールパネルにログインするたびに、

  • デフォルトの admin ユーザーを使ってるので無効にして、新しい管理者アカウント使いましょう
  • 2段階認証を有効にしましょう

との警告が出てくるので、これに対応することにしました。

で、これに対応したら、スナップショットレプリカで問題が起きたので、そのあたりに事をメモしておきます。

なお、 試した際の QTS のバージョンなどは下記の通りです。

  • スナップショットレプリカの送信側: QNAP TS-231P, QTS 5.0.0.1808
  • スナップショットレプリカの受信側: QNAP TS-251+, QTS 4.5.4.1800

なお、参考までに、セキュリティ強化のアドバイスがQNAPのブログにありますので、リンク張っときます。

QNAP NASを無防備にインターネットに直接接続してはいけない理由とは | QNAP ブログ

admin の無効化

やりかたは簡単で、公式のドキュメントに従えばすぐに終わります。

  1. 新規に管理者権限を持つユーザーを作成
  2. 新しく作った管理者ユーザーでログイン(以後、新規追加管理者、と呼ぶことにします)
  3. デフォルトの admin を無効にする

とすればできます。 そのうえで、『コントロールパネル』->『アプリケーション』->『Telnet/SSH』で、『アクセス許可の編集』を選択し、

f:id:junichim:20210921113515p:plain

新規追加管理者に対して、SSHを許可しておきます。

ターミナルからもログインしてみて問題ないことを確認しておきます。

2段階認証を有効化

こちらも簡単です。

ログイン後、画面のアカウント名にあるドロップダウンリストをクリックし、メニューから『オプション』を選択します(下記画像は admin でログインしたときのものです)。

f:id:junichim:20210921114031p:plain

『2段階認証』タブを選択し、『使用開始』をクリックします。

f:id:junichim:20210921114208p:plain

QRコードが表示されるので、

f:id:junichim:20210921114338p:plain

スマホでQRコードを読み取ります(認証アプリは Google Authenticator を使ってます)。スマホ側で設定ができたら、『次へ』ボタンを押すと、スマホに表示されるセキュリティコードを入力するように求められるので、入力して問題がなければ設定完了です。

問題発生

さて、ここまでやって問題がないように思えたのですが、一つ重大な問題が起きてました。 2台のQNAPでレプリケーションを行っているのですが、夜中に動いているレプリケーションが失敗していました。

調べてみると、レプリカジョブを設定した際に使用していたアカウントが admin だったのですが、レプリカの受信側のNASでも admin を無効にしたため、アカウント認証が失敗したのが原因でした。

ということで、新規にレプリカジョブを設定しました。

レプリカジョブのユーザー名の設定方法

下記の記事をみると、 QTS 4.5.4 以降であれば、スナップショットレプリカのユーザー名を変更できるようです。

In Snapshot Replica, why can’t my NAS connect to the remote NAS? | QNAP

ネット上のディスカッションの記事などを見ると、adminは変更できない、というのもあるのです、 QNAP の記事があるということは仕様変更があったんでしょうね、多分。

ということで、これに従って、ユーザー名を変更してみます。

新規にレプリカジョブを設定

ユーザー名を変更としましたが、実際は(後述する理由により)新規にレプリカジョブを設定しました。

送信側のNASにログインして、『ストレージ&スナップショット』を開いて『スナップショットレプリカ』を選択します。

『レプリケーションジョブの作成』を押して、レプリカジョブを設定していきます。受信側 NAS のアカウント情報として、 admin を無効にしているので、新規追加管理者のユーザー名を指定して、『テスト』を実施すると、

f:id:junichim:20211020154952p:plain

のように、受信側NASの2段階認証を無効にしろ、と出てきます。

それってセキュリティ的にどうなんだろうか?と思いつつも仕方ないので、2段階認証を無効にして、再度『テスト』を実行すると、

f:id:junichim:20211020155552p:plain

のように成功と表示されます。

あとは、ジョブを実行するスケジュールや送信時のオプション(圧縮の有無や暗号化の有無など)を選択して、ジョブを作成します(下記画面の下側のジョブです)。

f:id:junichim:20211020155907p:plain

動作確認のため、『▶』のボタンを押すとすぐにレプリカジョブが実行されます。問題なくジョブが完了すれば、OKです。

不可解な現象

上記のレプリカジョブの設定が成功するまでにいろいろと試しました。その際に不可解な現象が2点ほどあったので、メモっておきます。

現象1

上記の設定方法として、『新規にレプリカジョブを設定』としたのですが、普通に考えれば、既存のレプリカジョブのユーザー名を変更すればいいのでは?となると思います。

実は、最初はこのように既存のジョブに対して、ユーザー名を変更して試したのですが、こんな感じになぜかジョブが失敗する、というのがありました。

f:id:junichim:20211021094836p:plain

いろいろと調べたのですが、結局原因はわからずじまいでしたが、現象としては、

  • 既存のレプリカジョブのユーザー名を変更することは可能
  • 『今すぐ実行』をおこなうと、ジョブは問題なく開始する
  • しかし、ジョブの最後でエラーが発生し、レプリカジョブそのものは失敗と記録される
  • 一方、受信側NASでは、スナップショットが記録されている

というものでした。なお、送信側のレプリカジョブのログを見ると、エラーは

f:id:junichim:20211020160714p:plain

というものでした。

いろいろと試したのですが、結局、既存のレプリカジョブ(今まで動作していたジョブ)を使うとなぜか失敗する理由はわかりませんでした。ひょっとしたら、保存済みのスナップショットの絡みとかがあるのかもしれませんが、そこまで試してないので原因は不明です。

今回の自分の場合は、古いほうのスナップショットレプリカジョブと受信側NASにあるすでに取得済みのスナップショットをそのまま残しておけば、レプリカジョブ自体は新規に作っても問題なかったのでよかったのですが、もしどうしても同じジョブを使わないといけない場合はちょっと苦労しそうですね。

なお、参考までに、スナップショットレプリカでの似たような問題が、下記にも載ってました。

Snapshot Replicas and changing from Default Admin account - QNAP NAS Community Forum

現象2

これはレプリカジョブそのものの不具合というのではありませんが、ちょっと不思議な現象だったので、メモっときます。

レプリカジョブでユーザー名が admin の設定のジョブが残っている状態(adminを指定している古いジョブと新規追加管理者を指定している新しいジョブが2つある状態)で、動作確認のため NAS を2台とも再起動しました。

すると、受信側の NAS にログインすると

f:id:junichim:20211020161021p:plain

こんな感じに、『IP アドレス 192.168.x.x をブロックした』と警告メッセージが出てます。この IP アドレスは送信側のNASのものです。

実際に、『コントロールパネル』->『セキュリティ』->『許可/拒否リスト』を見ると、下記画像のように、接続拒否になっています。

f:id:junichim:20211020172850p:plain

どういうことだろうか?と思い QuLog Center を開いて、システムアクセスログを確認すると、

f:id:junichim:20211020173238p:plain

のように、 admin アカウントおよび新規追加管理者でのログインの失敗が記録されています。

ここで『コントロールパネル』の『セキュリティ』を確認すると、『IPアクセス保護』のタブに

f:id:junichim:20211020162730p:plain

とあります。1分間に5回以上 SSH でのログインに失敗があると一時的にブロックするとあります(画面の設定値はNASのデフォルト値です)。どうも、これにひっかかったようです。

どういうことでしょうか?単純に推測すると、 NAS を起動したタイミングでレプリカジョブに設定しているユーザーによりログインが試みられているのではないかと思われます。

この推測の元、いろいろやってみます。

『セキュリティ』画面から、ブロックしていた制限を削除すると、新規追加管理者のほうはログイン成功が記録されるようになりました(起動時の一時的なログイン失敗と考えればよいのかな?)。

一方、QuLog Center を確認すると、 admin アカウントのほうは引き続きログイン試行を行い、接続失敗になっています(ただし、ログを見るとログイン試行は連続で3回ほどだったので、接続拒否の試行回数5回/分に達しないためか、接続拒否には追加されなくなっていました)。

次に、送信元のレプリカジョブのユーザー名を admin から、新規追加管理者に変更したら、 admin でのログイン失敗の記録が収まりました。

なので、この一連の動作は、やはりレプリカジョブの挙動だと推測されます。

なんとなく現象がわかったのでいいんですが、いきなり接続拒否のメッセージが出てきたら焦りますね。

まとめ

結局、スナップショットレプリケーションの関係で、管理者アカウントは下記のように設定しました。

  • レプリケーションの受信側 NAS は、 admin を無効化し、新規ユーザーを作成し、2段階認証は無効にしました
  • レプリケーションの送信側 NAS は、 admin を無効化し、新規ユーザーを作成し、2段階認証を有効にしました

また、スナップショットレプリカについては、

  • admin アカウントを無効にして、レプリカジョブを設定することは可能
  • ただし、うまくいかない場合もあるので、場合によっては試行錯誤も必要かも
  • NAS の再起動時は、ログイン失敗により接続拒否になっていないことを確認したほうがベターかも

というあたりでしょうか? 検証が不十分な面もある情報ですが、一事例として何かのご参考になればと思います。

にしても、QNAP さん自身も一般的な推奨事項として、 admin は無効にしましょうと言ってるので、 admin を無効化するなら、レプリカジョブももうちょい賢く対応してほしいものです。 > QNAP さん

いずれにしても、マルウェアとか、ほんとやめてほしいですね。