Samba 4.10 on FreeBSD 12.1 release

参考にさせてもらったページ

Samba-JP(日本sambaユーザ会)


LM認証レベルを "2" とする時の smb4.conf

アタシが運用する最古の samba は 2.11 ですので
Windows Server 2000 の Active Directry とか NT Donain 等の時代ですw
その辺からの互換性を維持しつつ samba3 そして今回の samba4.10 となりますので
認証レベルは甘くなります(下の表で数値が小さいほどセキュリティが甘い)


ここでちょっと言い訳させて貰うと

今回の samba を投入する環境は All 窓クライアントで窓のバージョンは近々7→10となる予定ですが
今後も一部は 窓7 が残ると思います

上でも述べてる通り, 既存のクライアントはsamba 2.11 や 3 に併せて LM認証レベルは 2
となっておりますが, 複数ある samba 3 の認証レベルを上げたりクライアント設定に全部回るという
気力も根性も無いので, そのまま互換性確保して行きます(許して

今回構築した samba4 は 2.11 からのリプレースとなりますが, 元のファイル名コードが CAP
であるのでバックアップ兼移行は窓クライアントからの全数コピーという荒技を余儀なくされました(^^;
あ移行先は utf-8 ですw 2.11 意外は全部それw

普通じゃコピーが終わらなかったりエラーが出るのでFastCopyで各共有ごとの同期を設定して
バッチファイルに食わせてタスクスケジューラにて夜中にこっそり起動してましたが
データ総容量が1.5TB程あったので, 差分コピーにも関わらず 2時間近くかかっておりました

実は今回の工事は移行計画の着想から数えると8年越しの作業になります(^^;
これはひとえにアタシがノロマであることと, 今回のコロナ禍による出張禁止と
在宅勤務による人払いでようやく本腰入れる時間と状況が取れたワケですw


LM認証レベルは Windows クライアント端末にて設定します
コントロールパネル > 管理ツール
> ローカルセキュリティポリシー
> セキュリティの設定
> ローカルポリシー
> セキュリティオプション
> ネットワーク:LAN Manager 認証レベル

LAN Manager 認証レベル
0: NTLM & の LM 応答を送信する
1: LM & 送信: ネゴシエーション時に NTLMv2 セッションセキュリティを使用する
2: NTLM 応答のみを送信する
3: NTLMv2 応答のみ送信する
4: NTLMv2 応答のみを送信します。 LM を拒否する
5: NTLMv2 応答のみを送信します。 NTLM & LM を拒否する
6: 未定義

上述のローカルセキュリティポリシーは Windows の professional 以上のエディション
にしか GUI が提供されていないので、Home edition 以下ではレジストリを操作する。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]

内にて右クリック > 新規 > DWORD(32ビット)値
して名前を LmCompatibilityLevel へ変更
そのままダブルクリックして値を上記に倣って変更する

"LmCompatibilityLevel"=dword:00000002

この認証レベル "2" のときの /usr/local/etc/smb4.conf は以下の4エントリを global セクションへ記載します

[global]
   client lanman auth = yes
   ntlm auth = ntlmv1-permitted
   client NTLMv2 auth = no
   lanman auth = no

samba のバージョンは安定版が2020年6月現在で 4.12 となっていて 4.10 は旧々安定版となります
が、構築や設定を「丸ぱくり」でないと使いこなせないエセ構築屋にとっては
最新バージョンだとしんどいので 4.10 としましたw
しかも下記抜粋にもありますように smb4.conf のデフォルト値やエントリの有無は
security = share がいつの間にか消えているように, ちょいちょい変わってくるので
特に認証設定とかのドキュメントはよく読んでおいた方がよろしいと思います

以下日本語 man から上記4エントリ分の抜粋
(因みに...試していないし試さないが以下4エントリが規定値のままであると
クライアント側のLM認証レベルは"4"あるいはそれ以上となるんじゃないかな)


client lanman auth (G)

このパラメーターは、smbclient(8) などの Samba のクライアントツールが 脆弱な LANMAN パスワードハッシュを使用した認証を行なうか否かを制御する。 無効にした場合、 Samba クライアントからは、NT パスワードハッシュを利用するクライアント (Windows NT/2000クライアント、Samba など。しかし Windows 95/98 は含まない) に対してのみ接続できる。

LANMAN 暗号化レスポンスは簡単に解読することが可能である。 これは大文字と小文字を区別しないことや、使用しているアルゴリズムなどに起因する。 Windows 95/98 サーバーが存在しない場合は、このオプションを無効にした方がよいだろう。

このオプションを無効にすると、client plaintext auth オプションも同時に無効となる。

同様に、 client ntlmv2 auth パラメーターを有効にした場合、NTLMv2 ログインのみが可能となる。

既定値: client lanman auth = no


ntlm auth (G)

smbd(8) がローカル passdb(SAM すなわち アカウントデータベース)に対して、NTLM レスポンスを用いたユーザー認証を 行なうかどうかを設定する。

このパラメーターを無効にした場合は、ローカル passdb に対しての NTLM 認証と LanMan 認証の両方が無効になる。

この設定はあくまでローカルユーザーに対して適用されるものであって、 参加しているドメインにおける認証は、どのようなドメインであってもフォワード され NTLM 認証が行われる。信頼されるドメインであれば、このパラメーター設定 が無効であったり、NTLMv2 認証のみに設定されていても構わない。 ドメインユーザーに対する NTLM 認証を制御するには、このパラメーターを各 DC において設定する必要がある。

lanman auth を no と設定し、 ntlm auth を ntlmv2-only と設定する のが既定値であり、この場合 NTLMv2 によるログインのみが許可される。 たいていのクライアントは NTLMv2 を既定としてサポートしているが、 古いクライアントの中には特別な設定を必要とするものもある。

NTLMv1 は、VPN や 802.1X で用いられる MS-CHAPv2 で主に利用されている。

利用可能な設定は以下のとおり。

Samba 4.5 において、既定値が yes から no に変更された。Samba 4.7 からはさらに ntlmv2-only に変更されたが、その動作は変わって いない。

既定値: ntlm auth = ntlmv2-only


client NTLMv2 auth (G)

このパラメーターにより、smbclient(8) がサーバーへの接続時に NTLMv2 暗号化パスワードレスポンスを使用した認証を行なうかどうかが設定される。

有効にすると、NTLMv2 および LMv2 レスポンス(両方とも以前のバージョンよりはセキュアである) が送信される。 ただし、古いバージョンのサーバー(Windows NT 4.0 SP3以前、Windows 9x および Samba 2.2)は、NTLMv2をサポートしているドメインにいない時、 NTLMv2 と互換性がない。

同様に、有効にした場合 NTLMv1、 client lanman auth および client plaintext auth 認証は無効となる。また、共有レベルの認証も同時に無効となる。

無効にした場合、 NTLM レスポンス (および可能であれば LANMAN レスポンス) が、client lanman auth の値に応じてクライアントから送信される。

Windows Vista および後継のバージョンはすでに NTLMv2 のみを使い、また、サイトに よって(特に「ベストプラクティス」のセキュリティポリシーを適用しているサイト)は NTLMv2 のみを許可し、脆弱な LM および NTLM レスポンスは許可していない。

client use spnegoもyesに 設定した場合、拡張セキュリティ (SPNEGO) が、NTLMSSPのみをNTLMv2で使うために 必要とされる。この動作はCVE-2016-2111 用のパッチによって導入された。

既定値: client NTLMv2 auth = no


lanman auth (G)

このパラメータは Samba 4.11 から非推奨となり、 (NTLM, NTLMv2 または Kerberos 認証とは異なり) LanMan は将来の Samba リリースでは削除される。

そのため、将来は、現在の既定値である lanman auth = no が強制された動作となる。

このパラメーターは、smbd(8) が LANMAN パスワードハッシュを使用した 認証を行なうか否かを制御する。無効にした場合、 NT パスワードハッシュを利用する クライアント(Windows NT/2000クライアント、smbclient など。しかし Windows 95/98 や MS-DOS クライアントは含まない)のみが Samba ホストに接続できる。

LANMAN 暗号化レスポンスは簡単に解読することが可能である。これは大文字と小文字を 区別しないことや、使用しているアルゴリズムなどに起因する。Windows 95/98 や MS-DOS クライアントが存在しない場合は、このオプションを無効にした方がよいだろう。

このパラメーターが no に設定された場合、これは、次のパスワードの 変更時に Samba の passdb 中の sambaLMPassword を空白にする動作も行う。この結果、 lanman クライアントは、あとで lanman auth を再度有効にしたとしても認証できなくなる。

encypt passwords オプションとは異なり、このパラメーターはクライアントの挙動を 制御するものではなく、 LANMAN レスポンスは依然としてネットワーク上を送信される。 Samba のクライアント(smbclient など)で LANMAN レスポンスを無効にするには client lanman auth を参照のこと。

このパラメータは ntlm auth パラメータによって上書きされるため、ntlmv1-permitted または yes が設定されてない限り、NTLMv2 ログインのみが許可され、 LM ハッシュは格納されない。最近のクライアントはすべて NTLMv2をサポートしている が、いくつかのクライアントは特別な設定をすることが必要である。

既定値: lanman auth = no


以上

RAJ商会 Mar.2020