重要なポイント
- Linux root ユーザーとしてログインすることは、全能の権限を付与するため危険です。 SSH 経由で root としてログインすると、リモートの攻撃者がシステムにアクセスできる可能性があるため、さらに悪いことになります。
- 多くの Linux ディストリビューションでは、root としてログインすることを推奨せず、代わりに、必要に応じて sudo コマンドを使用して一時的に権限を昇格し、間違いや悪意のあるアクションのリスクを軽減することを推奨しています。
- SSH 経由で root アクセスを許可する必要がある場合は、パスワードの代わりに SSH キーを使用する方が安全です。これにより、ブルートフォース攻撃や不正アクセスのリスクが排除されます。
Linux root ユーザーとしてログインすることは悪い習慣です。 SSH 接続経由で root としてログインすると、さらに状況が悪くなります。その理由を説明し、それを防ぐ方法を示します。
この の記事は、 と連携して提供されています 。
Linux の root とは何ですか?
通常のユーザーが扱うには重要すぎる、または機密すぎる オペレーティング システム の部分を所有および管理する権限を持つ人が必要です。そこで root の出番です。root は、 Unix および Linux オペレーティング システムの 全能のスーパーユーザー です。
root ユーザー アカウントは、他のアカウントと同様、パスワードで保護されています。 root ユーザーのパスワードがなければ、他の誰もそのアカウントにアクセスできません。つまり、root の特権と権限は他の人には使用できないということです。裏を返せば、悪意のあるユーザーと root の権限の間の唯一の防御策はそのパスワードだけであるということです。もちろん、パスワードは推測、推測、どこかに書き留められたもの、または 総当り攻撃される 可能性があります。
悪意のある攻撃者が root のパスワードを発見すると、ログインしてシステム全体に対して何でもできるようになります。 root の昇格された特権を使用すると、できることには制限がありません。これは、root ユーザーがログアウトせずに端末から離れたかのようなもので、アカウントへの便宜的なアクセスが許可されてしまいます。
こうしたリスクのため、最近の Linux ディストリビューションの多くでは、SSH 経由であっても、
root がローカルでコンピュータにログインすることを許可していません
。 root ユーザーは存在しますが、パスワードが設定されていません。それでも、誰かがシステムを管理できる必要があります。この難問を解決するのが
sudo
コマンドです。
sudo
使用すると、指定されたユーザーが自分のユーザー アカウント内から一時的に root レベルの権限を使用できるようになります。
sudo
使用するには認証が必要です。これを行うには、自分のパスワードを入力します。これにより、root の機能に一時的にアクセスできるようになります。
root 権限は、使用されていたターミナル ウィンドウを閉じると失われます。ターミナル ウィンドウを開いたままにするとタイムアウトになり、自動的に通常のユーザー ステータスに戻ります。これにより、別の種類の保護が提供されます。それはあなた自身をあなた自身から守ります。
通常のアカウントではなく root としてログインすることが習慣になっている場合、コマンドラインでミスをすると致命的な結果を招く可能性があります。管理を実行するために
sudo
使用する必要があるということは、入力内容に集中して注意深くなる可能性が高いことを意味します。
SSH 経由での root ログインを許可すると、攻撃者がローカルにいる必要がないため、リスクが増加します。彼らはあなたのシステムをリモートからブルートフォース攻撃しようとする可能性があります。
root ユーザーと SSH アクセス
他の人のためにシステムを管理する場合、この問題に遭遇する可能性が高くなります。誰かがログインできるように root パスワードを設定することを決定した可能性があります。root が SSH 経由でログインできるようにするには、他の設定を変更する必要があります。
このようなことは偶然には起こりません。しかし、それに伴うリスクを理解していない人でもそれを行うことができます。この状態のコンピュータの管理を引き継ぐ場合は、所有者にそれがなぜ悪い考えであるかをアドバイスし、システムを安全に動作する状態に戻す必要があります。以前のシステム管理者が設定したものである場合、所有者はそれを知らない可能性があります。
ここでは、Fedora を実行しているコンピューター上のユーザーが、Ubuntu コンピューターの root ユーザーとして Ubuntu コンピューターに SSH 接続を行っています 。
ssh root@ubuntu-22-04.local
Ubuntu コンピューターでは、root ユーザーが SSH 経由でログインできます。 Ubuntu コンピューターでは、root ユーザーからライブ接続が進行中であることがわかります。
誰が
誰がそのセッションを使用しているかはわかりません。 SSH 接続の相手が root ユーザーなのか、それとも root のパスワードを取得できた人物なのかはわかりません。
root の SSH アクセスを無効にする
root ユーザーの SSH アクセスを無効にするには、SSH 構成ファイルを変更する必要があります。これは「/etc/ssh/sshd_config」にあります。
sudo
を使用して変更を書き込む必要があります。
sudo gedit /etc/ssh/sshd_config
ファイルをスクロールするか、文字列「PermitRootLogin」を検索します。
これを「no」に設定するか、行の最初の文字としてハッシュ「
#
」を配置して行をコメントアウトします。変更を保存します。
変更を有効にするには、SSH デーモンを再起動する必要があります。
sudo systemctl sshを再起動する
ローカルログインも禁止したい場合は、root のパスワードを無効にします。ここでは、ベルトと中括弧のアプローチを採用し、
-l
(ロック) オプションと
-d
(パスワードの削除) オプションの両方を使用しています。
sudo passwd root -ld
これにより、アカウントがロックされ、アカウントのパスワードが削除されます。 root ユーザーが物理的にコンピュータの前に座っていても、ログインすることはできません。
root SSH アクセスを許可するより安全な方法
SSH 経由で root アクセスを削除することに管理上の抵抗がある場合があります。彼らが本当に言うことを聞かない場合、あなたはそれを元に戻さなければならない立場に陥るかもしれません。この場合、リスクを軽減しながら root ユーザーからのリモート ログインを許可する方法で妥協できるはずです。
SSH キーを使用して SSH 経由で接続することは、パスワードを使用するよりもはるかに安全です。パスワードが関与していないため、総当たり攻撃、推測、その他の方法でパスワードを発見することはできません。
ローカル root アカウントをロックする前に、root ユーザーがローカル コンピューターに接続できるように、リモート コンピューターに SSH キーを設定します 。次に、パスワードを削除し、ローカル アカウントをロックします。
「sshd_config」ファイルをもう一度編集する必要もあります。
sudo gedit /etc/ssh/sshd_config
「prohibit-password」オプションを使用するように「PermitRootLogin」行を変更します。
変更を保存し、SSH デーモンを再起動します。
sudo systemctl sshを再起動する
これで、誰かが root ユーザーのパスワードを復元したとしても、パスワードを使用して SSH 経由でログインすることはできなくなります。
リモートの root ユーザーがローカル コンピュータに SSH 接続を確立すると、キーが交換され、検査されます。認証に合格すると、root ユーザーはパスワードを必要とせずにローカル コンピューターに接続します。
ssh root@ubuntu-22-04.local
立入り禁止
root ユーザーからのリモート接続を拒否することが最善の選択肢です。 SSH キーを使用して root に接続を許可するのは 2 番目に良い方法ですが、それでもパスワードを使用するよりもはるかに優れています。





