Ubuntuでユーザーのログイン機能を制限する方法

はじめに

システム管理の基本的な部分は、ユーザーとグループの設定と管理です。このタスクの一部には、システムのすべてのエンティティのログイン機能の監視が含まれます。

このガイドでは、ユーザー管理と認証ログについての考え方を紹介します。

この概念については、Ubuntu 22.04サーバーで探求しますが、他の現代のLinuxディストリビューションでも同じ手順で進めることができます。このチュートリアルでは、Ubuntu 22.04上でサーバーの初期設定を行うためのガイドに従って、Ubuntu 22.04サーバーをセットアップすることができます。

前のチュートリアルで述べたように、サーバー上の一部のユーザーはサービスに関連しており、通常のアカウントとして使用されることは意図されていません。

このセクションでは、これらのユーザーのログイン機能をさまざまな方法で制限する方法について確認します。

/etc/passwdを使用してアクセス制限する方法

ログインの機能を制限する方法の一つは、アカウントのログインシェルを特別な値に設定することです。

これの例として、/etc/passwdファイル内でgrepコマンドを使用して検索することができるmessagebusユーザーがあります。

  1. less /etc/passwd | grep messagebus

 

Output

messagebus:x:102:105::/nonexistent:/usr/sbin/nologin

ログインが成功したときに実行されるシェルまたはコマンドが最終的な値です。この場合、値は/usr/sbin/nologinと設定されています。

メッセージバスのユーザーにsudo suを使って切り替えようとすると、失敗します。 (Messējibasu no yūzā ni sudo su o tsukatte kirikaeyō to suru to, shippai shimasu.)

  1. sudo su messagebus

 

Output

This account is currently not available.

以下のようなメッセージが届いています。メッセージバスのシェルが/usr/sbin/nologinに設定されているため、このメッセージを受信しています。

必要な場合には、ユーザーのデフォルトのログインシェル(通常は/bin/bash)をnologinなどの存在しないシェルに変更するために、usermodツールを使用することができます。

  1. sudo usermod -s /usr/sbin/nologin username

 

「/etc/shadow を使用してアクセス制限する方法」

システムへのアクセスを制限するもう一つの方法は、/etc/shadowファイルを使用することです。このファイルには、システム上のすべてのユーザーのパスワードのハッシュ値が含まれています。

ファイル全体を表示するために、少ない量を使用することができます。

  1. sudo less /etc/shadow

 

Output

. . . uuidd:*:19105:0:99999:7::: tcpdump:*:19105:0:99999:7::: sshd:*:19105:0:99999:7::: pollinate:*:19105:0:99999:7::: landscape:*:19105:0:99999:7::: lxd:!:19180:::::: sammy:$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7:::

最後の行で始まる$y$j9T$4gyO…のフィールドは、ハッシュ化されたパスワードの値を含んでいます。

システムのアカウントは複雑なハッシュ値の代わりにアスタリスク(*)が表示されます。二番目のフィールドにアスタリスクがあるアカウントは、パスワードが設定されていないため、パスワードによる認証はできません。この状態を変更しなければなりません。

以下の文を日本語で自然に言い換えます。1つのオプションのみですが:
パスワードの値を無効にすることができます(実質的に、パスワードがアスタリスクの値と同等になるアカウントを作成することができます)。このためには、ハッシュ値の前に感嘆符(!)を付けます。

指定されたアカウントを「ロック」することによって、2つのツールがこれを実行することができます。

パスワードコマンドは、-lフラグを使ってロックすることができます。また、-uフラグを使ってロックを解除することもできます。

  1. sudo passwd -l sammy

 

  1. sudo less /etc/shadow | grep sammy

 

Output

sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::

見てわかる通り、ハッシュ化されたパスワードは保持されますが、その前に「!」を付けることで無効化されます。

「アカウントは、次の入力によって再びロック解除されます:」

  1. sudo passwd -u sammy

 

ユーザーモッドコマンドを使用すると、同様の操作が利用可能です。対応するフラグは、ロックするための-Lと、アンロックするための-Uです。

  1. sudo usermod -L sammy
  2. sudo usermod -U sammy

 

Note

注意:このアクセス制限の方法は、すべてのパスワードによるログインに正しく機能しますが、パスワードなしでログインする方法(たとえば、SSHキーによるログイン)は引き続き利用可能です。

/etc/nologinでアクセス制限を行う方法

ルートを除くすべてのアカウントのログインを無効にする必要がある場合があるかもしれません。

これは、詳細なメンテナンスのためか、または1つ以上のユーザーアカウントが侵害された可能性があるためです。

とにかく、/etc/nologinでファイルを作成することでこれは実現できます。

  1. sudo touch /etc/nologin

 

スーパーユーザー権限を持っていないアカウントは、ログインを防止されます。

/etc/nologin ファイルが空の場合、ユーザーは何の説明もなく、ローカルシェルに戻されます。

実際に起こっているのは、ファイルの内容がユーザーに返されているということです。メッセージを追加すると、ユーザーはログイン失敗の説明を受け取ることができます。

  1. sudo sh -c ‘echo “Planned maintenance. Log in capabilities will be restored at 1545 UTC” > /etc/nologin’

 

今、パスワードでログインしようとすると、このメッセージが表示されます。

  1. ssh sammy@host

 

Output

sammy@host‘s password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host

ルートユーザーは通常通りログインできます。ログイン制限を解除するためには、”/etc/nologin” ファイルを削除してください。

  1. sudo rm /etc/nologin

 

結論

Linuxにおけるユーザー認証は、システム管理の比較的柔軟な領域です。広く利用可能なツールを用いて同じ目的を達成する方法はたくさんあります。

さまざまな方法を使って使用を制限する方法を知っているはずです。

このチュートリアルシリーズの次のパートでは、ユーザーログインの監視方法について復習します。

コメントを残す 0

Your email address will not be published. Required fields are marked *