Ubuntuでユーザーのログイン機能を制限する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:
このガイドは参考として役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
システム管理の基本的な部分は、ユーザーとグループの構成と管理です。 このタスクの一部には、すべてのシステムエンティティのログイン機能の監視が含まれます。
このガイドでは、ユーザー管理と認証ロギングの背後にある基本的な考え方を紹介します。
これらの概念はUbuntu12.04VPSで検討しますが、最新のLinuxディストリビューションをフォローすることもできます。
前のセクションで、サーバー上の一部のユーザーがサービスに関連付けられている可能性があり、通常のアカウントとして使用することを意図していないと述べました。
このセクションでは、これらのユーザーのログイン機能をさまざまな方法で制限する方法について説明します。
/ etc/passwdでアクセスを制限する方法
ログイン機能を制限する1つの方法は、アカウントのログインシェルを特別な値に設定することです。
この例は、「/ etc/passwd」ファイルの「messagebus」ユーザーです。
less /etc/passwd | grep messagebus
messagebus:x:102:104::/var/run/dbus:/bin/false
最終的な値は、ログインが成功したときに実行されるシェルまたはコマンドです。 この場合、値は「 / bin /false」に設定されます。
rootとしてmessagebusユーザーにログインしようとすると、何も起こらないことがわかります。 新しいユーザーには切り替えられません。
sudo su messagebus
「sshd」ユーザーにログインしてみましょう。
sudo su sshd
This account is currently not available.
sshdのシェルが「/usr / sbin / nologin 」に設定されているため、この有益なメッセージが表示されます。
less /etc/passwd | grep sshd
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
では、これらの方法を使用してユーザーのログインをどのように制限しますか?
「usermod」ツールを使用して、シェルを正規のシェルから次のダミー値のいずれかに変更できます。
sudo usermod -s /usr/sbin/nologin username
/ etc/shadowでアクセスを制限する方法
アクセスを制限する別の同様の方法は、「 / etc /shadow」ファイルを使用することです。 このファイルには、システム上のすべてのユーザーのハッシュされたパスワード値が含まれています。
次のように入力すると、ハッシュされたパスワードを確認できます。
sudo less /etc/shadow
root:$6$r79Dod3Y$3hi3QklpGEQMxwQGEss4ueNNPkoUrqUe3SwyAacaxl.Lmgq1r9i4mTblV1z6NfKMNXH1Cpnq.4iKhOiQd7Riy1:15953:0:99999:7::: daemon:*:15455:0:99999:7::: bin:*:15455:0:99999:7::: sys:*:15455:0:99999:7::: sync:*:15455:0:99999:7::: games:*:15455:0:99999:7::: man:*:15455:0:99999:7::: . . .
2番目のフィールド(最初の行の「$ 6 $ r79Dod3Y#3 …」で始まるフィールド)には、ハッシュされたパスワード値が含まれています。
ご覧のとおり、システムアカウントには、複雑なハッシュ値ではなくアスタリスク(*)が付いています。 2番目のフィールドにアスタリスクが付いているアカウントにはパスワードが設定されておらず、これが変更されるまでパスワードで認証できません。
ハッシュ値の前に感嘆符(!)を付けることで、パスワード値を無効にすることができます(実際には、アスタリスク値と同等のパスワードでアカウントを作成します)。
2つのツールは、指定されたアカウントを「ロック」することでこれを行うことができます。
passwd コマンドは、「-l」フラグでロックし、「-u」フラグでロック解除できます。
sudo passwd -l username sudo less /etc/shadow | grep username
username:!$6$vpNJ3oFe$5GSh2aU2BDcpdjvQeNFzh0zTgyRUl26x4dn77mFE/vaoXwd19m7okX44jO8TWaVqNRL8vUVTAcZVmgUT8dR.4.:15953:0:99999:7:::
ご覧のとおり、ハッシュされたパスワードは保持されますが、「!」を付けると無効になります。 その前に。
次のように入力すると、アカウントのロックを解除できます。
sudo passwd -u username
「usermod」コマンドを使用すると、同等の操作を実行できます。 対応するフラグは、ロックの場合は「-L」、ロック解除の場合は「-U」です。
sudo usermod -L username sudo usermod -U username
注:アクセスを制限するこの方法は、すべてのパスワードベースのログインで正しく機能しますが、パスワードなしで(たとえば、sshキーを使用して)ログインする方法は引き続き使用できます。
これらの方法が構成されている場合は、アカウントをロックダウンする別の方法を使用することを検討してください。
/ etc/nologinでアクセスを制限する方法
極端な場合、root以外のすべてのアカウントログインを無効にする必要がある場合があります。
これは、綿密なメンテナンスが原因であるか、1つ以上のユーザーアカウントが侵害されていることが原因である可能性があります。
いずれの場合も、これは「 / etc /nologin」にファイルを作成するだけで簡単に実行できます。
sudo touch /etc/nologin
これにより、スーパーユーザー権限を持たないアカウントがログインできなくなります。
空の「/etc/ nologin」ファイルを使用すると、説明なしでユーザーをローカルシェルにダンプします。
実際に起こっていることは、ファイルの内容がユーザーに返されることです。 メッセージを追加すると、ユーザーはログイン失敗の説明を受け取ります。
sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'
これで、パスワードを使用してログインしようとすると、設定したメッセージが表示されます。
ssh user@host
user@host's password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host
ルートユーザーは引き続き通常どおりログインできます。 「/etc/ nologin」ファイルを削除するだけで、ログイン制限を元に戻すことができます。
sudo rm /etc/nologin
結論
Linuxでのユーザー認証は、システム管理の比較的柔軟な領域です。 非常にシンプルなツールで同じ目的を達成する方法はたくさんあります。
これで、さまざまな方法で使用を制限する方法を理解する必要があります。
次のセクションでは、ユーザーログインを監視する方法について説明します。