ユーザーがSambaパスワードを変更する方法

ユーザーがSambaパスワードを変更する方法

私は約5人のユーザー(セキュリティ=ユーザー)を持つSambaサーバーを持っています。これは安全ですか?より良い(より簡単な)方法はありますか?この問題を解決するためにSWATがありましたが、もはやそうではありません。


サーバーから:制限付きユーザーの作成(/bin/rbash + 単一ディレクトリパス)

$ sudo adduser --shell /bin/rbash pwchange

$ cat /etc/passwd
  pwchange:x:1001:1001:pwchange,,,:/home/pwchange:/bin/rbash

$ sudo vi /home/pwchange/.bashrc
  Add:
  export PATH=/usr/local/pwchange

$ sudo ln -s /usr/bin/smbpasswd /usr/local/pwchange/smbpasswd

ここでのアイデアは、pwchangeユーザーがsambpasswdコマンドのみを実行できることです。 Sambaユーザーのunixアカウントにはパスワードはありません(つまり、これらのアカウントを介したログインは許可されていません)。 Sambaユーザーは、セルフサービスSambaパスワードを変更するためにのみこの制限付きアカウントを使用できます。サーバーを閲覧する必要はありません!


クライアント:ターミナルまたはPuttyを介したSambaパスワードの変更(Windows)

user1@A3700:~$ ssh [email protected]

pwchange@V220:~$ smbpasswd -U user1
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user user1

答え1

それらすべてに同じ仮想アカウントへのアクセス権を与えることは賢明ではありません。何もアクセスできないようにロックしても、smbpasswdお互いのパスワードは引き続き変更できます。そして悪意のある権限上昇攻撃の可能性は常に存在します。

デフォルトでは、必要なのは、そのアカウントの権限をsmbpasswd維持しながら、自分のユーザーアカウントでのみコマンドを実行できるようにすることです。nologin

これはsshd_configの「ForceCommand」オプションを使用して行うことができます。

この試み:

  1. Samba アカウントのメンバーシップを持つ各ユーザーに同じグループを付与します。たとえば、「sambaOnly」とします。

    #From Root
    groupadd sambaOnly
    usermod -a -G sambaOnly Joe
    
  2. 次に、次のようにsshd_configファイルを変更しようとします。

    #From Root
    cat << EOF >> /etc/ssh/sshd_config
    Match Group sambaOnly
        ForceCommand smbpasswd
    EOF
    

急速に。私の理解(そして簡単なテスト)によると、これはSSH経由でログインすると自動的にsmbpasswdコマンドを実行し、それに応じてメッセージが表示されることを意味します。彼らは決してシェルにアクセスできません。コマンドが完了すると、自動的に切断され、シェルに再びアクセスできなくなります。

これがリモートシステムへのすべてのアクセスを削除するかどうかを100%確信することはできません。たとえば、同じシステムで異なるSSHサーバーを実行している場合は、ForceCommandアクセス制御の構成に従ってそのサーバーを介してログインできます。

また、端末に物理的にアクセスできる場合はログインできます。

しかし、私はこれがほとんどの状況では非常に強力なアクセス制御だと思います。

関連情報