それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Windowsで総当りログインの対策をする(ログオン失敗回数制限)

Windowsのユーザーもロックアウト機構を使う。

暗号化を仕掛けても、総当たりを喰らえば、あっという間にパスワードを割られてしまうので、対策をする。

ローカルアカウントを保護

総当りなんてできるのかと言われると、SSHとRDPとSMBやWMIあたりで、総当りを掛けることができるので、ローカルアカウントを使うのであれば、ちゃんと総当り対策が必要にになる。

MSアカウントの場合

MSアカウントと紐付けていれば、PINコード(PCへログオン時)かパスワード(RDP/ssh時)になるので、総当り対策はMSアカウントベースになるのでだいぶ楽になると思う。ただ、私のPCは学校・職場アカウントが設定されているのでMSアカウントを有効化すると個人PCにあらゆる紐付けがされてしまうので思うように実験ができなった。

やること 

ローカルアカウントへの対策と確認する。

  • ロック回数を制限する
  • ロックアウト時間を制限する
  • 最大回数を制限する
  • 予備ユーザを作る
  • 現在の失敗回数を調べる
  • SSHでロックが解除されるか調べる
  • RDP でロックが解除されるか調べる

使うものポリシーエディタ

> gpedit.msc 

ポリシーエディタの起動

> gpedit.msc 

ADではなくSAMアカウントもgpedit.mscでいける。

私は、Win10 Pro なので、gpedit が使えたが、Win Homeなら secpol.msc かもしれない。

ロックまでの失敗回数を制限する

ロックアウトの方針を設定する。

f:id:takuya_1st:20220217170645p:plain

f:id:takuya_1st:20220217170706p:plain

回数を制限すると、他の項目も自動で有効になります。

f:id:takuya_1st:20220217170713p:plain

f:id:takuya_1st:20220217170721p:plain

0分にすると、自動で解除されなくなります。

f:id:takuya_1st:20220217170729p:plain

好きな時間を設定する

f:id:takuya_1st:20220217170838p:plain

予備アカウント(予備ユーザー)を作る

念の為に予備のアカウント(ローカルアカウント)を作っておくといい

予備のアカウントを作るとマイクロソフトログインが求められて、紐付けが要求されるので、無視してローカルアカウントとして作成しておくと楽です。

予備アカウントを作っておくと万が一に自分がロックアウトされたときに救われます。また、ロックアウトの実験にも役立ちます。

ローカルアカウントを作る

予備アカウントなので、ローカルアカウントの方が管理が楽だと思います。

f:id:takuya_1st:20220217171027p:plain

f:id:takuya_1st:20220217171042p:plain

忘れないように、「管理者」にしておく。

f:id:takuya_1st:20220217171126p:plain

AD-DCを作ったほうが楽だとは思うけどね。もう数台くらいなら予備アカウントを作るほうが楽ですね。

ロックの実験

別のアカウントでロックを解除が出来るように予備アカウントを作ったのでロックを実験する。

予備アカウントでパスワードを数回間違えてユーザをロックしてみる。管理者アカウントで解除する。

lusrmgr.msc でロック済みの確認

ユーザーが「ロックアウト」されて締め出された場合に、どのように表示されるか覚えておきます。

f:id:takuya_1st:20220217171311p:plain

失敗回数の確認

現在の失敗回数の確認

AD管理ユーザならBadLogonCountでわかるらしいのですが、ローカルアカウントの場合、SAMに保存されてなくて、ローカルだと確認方法がわからなかった。

SMB

SMBの接続もロックされることを確認した。

smb経由ログオン成功でカウンタがリセット確認

5回に制限しているるときに、4回失敗して、1回成功させる。そのあと数回失敗する。

takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 #### 成功
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 ## ロックされない

4回連続失敗後に、1回成功したらロックされなかった。

1回成功したら、ロック回数がリセットされるとわかる。

rdp

rdp 接続でのロックの確認

rdp も同様にロックされることを確認。

f:id:takuya_1st:20220217171331p:plain

ssh 接続でのロックの確認

ssh で公開鍵認証してもロックされていることを確認。

$ ssh 192.168.1.111  # 公開鍵認証
Connection reset by 192.168.1.111 port 22
$ ssh 192.168.1.111 -i ./ # パスワード
Connection reset by 192.168.1.111 port 22

Linuxは設定次第ではパスワードをロックするが、公開鍵認証は通った気がする。

SSHでの注意

SSH(Windows標準のOpenSSH Server)で実験して気づいたのだけれど、いくつか注意点が必要

ssh ログインでカウンタがリセットされるのか。

されない。

これは本当にやばい。

次のように確認した。

  • ssh で 3回失敗
  • ssh で公開鍵認証でログイン
  • ssh で 2回失敗
  • ユーザーがロックされることを確認

Windows内臓のSSH のロックはちょっとバグってるので注意が必要

5回に制限しているとき、1回成功してもリセットされなかった。

$ ssh  192.168.1.111 
passwordd:  # 失敗
passwordd:  # 失敗
passwordd:  # 失敗
$ ssh  192.168.1.111 
passwordd:  # 成功
$ ssh  192.168.1.111 
passwordd:  # 失敗
passwordd:  # 失敗
## ここでロックされる。

バグですかね。openssh設定で補修できると思う、調べるのめんどくさいからパス。

マイクロソフトがOpenSSHを組み込んだときにリセット忘れたのかもしれない。

どういうときにSSHログオンが問題になるのか

不注意でロックされる可能性。

次のように、複数のコマンドをLinux側から流し込むときなど

echo 1234 | ssh win-mine 

SSHではパスワードが3回間違えると、SSH接続が切断されるが、標準入力から流し込むときにうっかりすると3回間違えてロックがかかる。など不注意でロックされる可能性がある

基本的に公開鍵認証にしているはずなので起きないと思うけど。SSHでパスワードを有効にすると不意にロックしてしまうことがあると思う。

普段は公開鍵認証なので、パスワードで総当りされてロックされてればいい。

smb経由でカウンタがリセットされるのか確認

5回に制限しているるときに、4回失敗して、1回成功させる。そのあと数回失敗する。

takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 成功
takuya@ubuntu:~$ smbclient -L 192.168.1.111 # 失敗
## ロックされない

smb経由でログインすると、失敗回数はリセットされた。

sshで失敗したときと扱いが異なるので注意が必要

パスワードでロックが必要な理由

PC盗難などで、データ漏洩の防止。

HDD・SSDを暗号化しても、起動されて総当りでロック解除試行される。パスワードを割られてしまうと、暗号化も解除されるので意味がない。

メモリ見られるとかCPUのバスを見られるとかそういうサイドチャネルな攻撃はいったん考慮から分けておく。

PCは暗号化したらパスワードが最後の砦になる。

パスワードの代わりに、PINコードを使えばいい。指紋を使えばいい と思われるかもしれないが

パスワードをやめるという手もあるにはあるが、RDP/SSH/SMBがある以上パスワードなしにすることはできない。

RDPはユーザー証明書使うとか、SSHは公開鍵認証だけにするとか、SMB IPCはブロックするとかちゃんとファイアウォールを設定しておく必要がある。

そういうのは考え出すときりがないが、直ぐに可能な対策が「暗号化+ロックアウト」である。

PINコードの場合

PINコードは、直接ログインしたときにしか使えない。

これは、PCに直接ログインした特

f:id:takuya_1st:20220217175417p:plain

これは、RDP経由でログインしたとき

f:id:takuya_1st:20220217175427p:plain

PINコードはPCに保存

PINコードやWindows Helloは、PCに直接GUIでログインするときにだけ有効になっているというのがよく分かるのではないでしょうか。

マイクロソフトアカウントと連携ちゃうと、マイクロソフトアカウントのパスワードが有効になったり、ちゃんと設定しないとローカルパスワードでログインできちゃったり、混乱を来します。利用者は、「ローカルパスワード」だとおもって「甘い」パスワードを使っていると、それは実はマイクロソフトアカウントのパスワードだった。それはでインターネットからも使えるパスワードだった、甘いパスワードで乗っ取られちゃった。みたいなことも起こり得るのです。

参考資料

https://www.billionwallet.com/gpedit/password-fail-lockout-gpedit.html https://pc-chain.com/windows10-lockout/750/