Windowsのユーザーもロックアウト機構を使う。
暗号化を仕掛けても、総当たりを喰らえば、あっという間にパスワードを割られてしまうので、対策をする。
ローカルアカウントを保護
総当りなんてできるのかと言われると、SSHとRDPとSMBやWMIあたりで、総当りを掛けることができるので、ローカルアカウントを使うのであれば、ちゃんと総当り対策が必要にになる。
MSアカウントの場合
MSアカウントと紐付けていれば、PINコード(PCへログオン時)かパスワード(RDP/ssh時)になるので、総当り対策はMSアカウントベースになるのでだいぶ楽になると思う。ただ、私のPCは学校・職場アカウントが設定されているのでMSアカウントを有効化すると個人PCにあらゆる紐付けがされてしまうので思うように実験ができなった。
やること
ローカルアカウントへの対策と確認する。
使うものポリシーエディタ
> gpedit.msc
ポリシーエディタの起動
> gpedit.msc
ADではなくSAMアカウントもgpedit.mscでいける。
私は、Win10 Pro なので、gpedit が使えたが、Win Homeなら secpol.msc
かもしれない。
ロックまでの失敗回数を制限する
ロックアウトの方針を設定する。
回数を制限すると、他の項目も自動で有効になります。
0分にすると、自動で解除されなくなります。
好きな時間を設定する
予備アカウント(予備ユーザー)を作る
念の為に予備のアカウント(ローカルアカウント)を作っておくといい
予備のアカウントを作るとマイクロソフトログインが求められて、紐付けが要求されるので、無視してローカルアカウントとして作成しておくと楽です。
予備アカウントを作っておくと万が一に自分がロックアウトされたときに救われます。また、ロックアウトの実験にも役立ちます。
ローカルアカウントを作る
予備アカウントなので、ローカルアカウントの方が管理が楽だと思います。
忘れないように、「管理者」にしておく。
AD-DCを作ったほうが楽だとは思うけどね。もう数台くらいなら予備アカウントを作るほうが楽ですね。
ロックの実験
別のアカウントでロックを解除が出来るように予備アカウントを作ったのでロックを実験する。
予備アカウントでパスワードを数回間違えてユーザをロックしてみる。管理者アカウントで解除する。
lusrmgr.msc でロック済みの確認
ユーザーが「ロックアウト」されて締め出された場合に、どのように表示されるか覚えておきます。
失敗回数の確認
現在の失敗回数の確認
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 も同様にロックされることを確認。
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 ログインでカウンタがリセットされるのか。
されない。
これは本当にやばい。
次のように確認した。
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に直接ログインした特
これは、RDP経由でログインしたとき
PINコードはPCに保存
PINコードやWindows Helloは、PCに直接GUIでログインするときにだけ有効になっているというのがよく分かるのではないでしょうか。
マイクロソフトアカウントと連携ちゃうと、マイクロソフトアカウントのパスワードが有効になったり、ちゃんと設定しないとローカルパスワードでログインできちゃったり、混乱を来します。利用者は、「ローカルパスワード」だとおもって「甘い」パスワードを使っていると、それは実はマイクロソフトアカウントのパスワードだった。それはでインターネットからも使えるパスワードだった、甘いパスワードで乗っ取られちゃった。みたいなことも起こり得るのです。
参考資料
https://www.billionwallet.com/gpedit/password-fail-lockout-gpedit.html https://pc-chain.com/windows10-lockout/750/