web-dev-qa-db-ja.com

SSH経由のrootログインが非常に悪いので、誰もがそれを無効にするようにアドバイスするのはなぜですか?

インターネット上の誰もが [〜#〜] ssh [〜#〜] を介してrootログインを無効にすることを勧めますが、これは悪い習慣であり、システムのセキュリティホールであるためです。

Rootログインを有効にする際に特に危険なのは何ですか(特にパスワードログインを無効にした場合)?

パスワード認証が許可されている場合、セキュリティの観点から、Xシンボルのユーザー名とYシンボルのパスワード、またはrootユーザー名とX + Yシンボルのパスワードの違いは何ですか?

99
rush

SSH経由のrootが悪い理由

SSHを介してコンピュータにログインしようとするボットがたくさんあります。これらのボットは次のように動作します。

彼らはssh root@$IPのようなものを実行してから、「root」や「password123」のような標準のパスワードを試します。正しいパスワードが見つかるまで、可能な限りこれを行います。世界中のアクセス可能なサーバーでは、ログファイルに多数のログエントリが表示されます。 1分あたり20個以上まで移動できます。

攻撃者が運(または十分な時間)を持ち、パスワードを見つけた場合、rootアクセス権が付与されるため、問題が発生します。

ただし、SSH経由でのログインをrootに許可しない場合、ボットは最初にユーザー名を推測し、次に一致するパスワードを推測する必要があります。では、もっともらしいパスワードのリストにNエントリがあり、もっともらしいユーザーのリストはMエントリが大きいとしましょう。ボットにはテストするN*Mエントリのセットがあるため、これは、サイズNのセットのみであるルートの場合と比較して、ボットにとって少し難しくなります。

一部の人々は、この追加のMはセキュリティにおける真の利益ではないと言いますが、それはほんの小さなセキュリティ強化であることに同意します。しかし、私はこれを、それ自体は安全ではないこれらの小さな南京錠として考えますが、多くの人が簡単にアクセスできないようにします。もちろん、これは、マシンにtorやApacheなどの他の標準ユーザー名がない場合にのみ有効です。

Rootを許可しないより良い理由は、rootが標準ユーザーが実行できるよりもマシンに多くのダメージを与える可能性があることです。ですから、運が悪ければ、システム全体が失われますが、標準のユーザーアカウントでは、そのユーザーのファイルしか操作できません(これは非常に悪いことです)。

コメントでは、通常のユーザーがSudoを使用する権利を持っている可能性があり、このユーザーのパスワードが推測されるとシステムも完全に失われることが言及されました。

要約すると、攻撃者がどのユーザーのパスワードを取得するかは問題ではないと言えます。彼らが1つのパスワードを推測すると、システムを信頼できなくなります。攻撃者はそのユーザーの権限を使用してSudoでコマンドを実行することができます。また、攻撃者はシステムの弱点を悪用してroot権限を取得する可能性があります。攻撃者がシステムにアクセスした場合、それを信頼することはできません。

ここで覚えておくべきことは、SSH経由でのログインが許可されているシステム内のすべてのユーザーが追加の弱点であることです。 rootを無効にすることで、明らかな弱点が1つなくなります。

SSH上のパスワードが悪い理由

パスワードを無効にする理由は本当に簡単です。

  • ユーザーは不正なパスワードを選択します!

パスワードを試すというアイデア全体は、パスワードが推測できる場合にのみ機能します。したがって、ユーザーがパスワード「pw123」を持っている場合、システムは安全でなくなります。人々が選択するパスワードのもう1つの問題は、パスワードが本当にランダムになることは決してないということです。

また、ユーザーがパスワードを再利用して、FacebookまたはGmailアカウントにログインするため、およびサーバーにパスワードを使用する傾向がある場合もあります。そのため、ハッカーがこのユーザーのFacebookアカウントのパスワードを取得すると、サーバーに侵入する可能性があります。ユーザーはフィッシングによって簡単にそれを失うか、Facebookサーバーがハッキングされる可能性があります。

ただし、証明書を使用してログインする場合、ユーザーはパスワードを選択しません。証明書は、1024ビットから4096ビットまでの非常に長いランダムな文字列に基づいています(128〜512文字のパスワード)。さらに、この証明書はサーバーにログインするためだけに存在し、外部のサービスでは使用されません。

ルートアクセスの監視

@ Philip Couling からのコメントは答えであるはずです:

ルートを無効にするのには管理上の理由があります。商用サーバーでは、常に個人によるアクセスを制御する必要があります。ルートは決して人ではありません。一部のユーザーにrootアクセスを許可しても、実際のログインを記録できるように、ユーザーに自分のユーザーを介してログインさせ、su-またはSudo -iを強制する必要があります。これにより、個人へのすべてのアクセスを取り消すことがはるかに簡単になるため、たとえrootパスワードを持っている場合でも、何も実行できなくなります。 –フィリップ・クーリング

また、適切なSudo構成を使用して、チームが 最小特権の原則 を強制できるようにすることも追加します(ただし、1つを記述する方が簡単です)。これにより、城への鍵を渡さずに、チームが重要でないものをよりよく配布できるようになります。

リンク集

http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html

この記事はコメントからのものであり、SSHを介してログインしようとするボットネットの問題、その方法、ログファイルの外観、およびそれらを止めるために何ができるか。それはピーター・ハンスティーンによって書かれました。

68
Raphael Ahrens

これらは、直接rootログインが許可されるべきではない理由の一部である可能性があります。

  • ブルートフォースの試み。直接のrootログインは、ブルートフォース攻撃の成功により多くの損害をもたらす可能性があります。
  • 「パスワードなし」のSSHキーの設定を誤ると(ヒューマンエラーが発生)、マシンがインターネットに公開される可能性があります

しかし、これは氷山のヒントにすぎません。次のような他の制限と構成を構成する必要があります。

  • デフォルトのポートを変更する(22)
  • 強力なパスワードとパスフレーズ
  • ホストベースの認証を無効にする
  • 許可されたユーザーのリストを作成する
  • アイドルタイムアウトの構成
  • SSHv2プロトコルを強制する
  • 空のパスワードを無効にする
  • ブルートフォースに対する対策としてfail2banを使用する
  • すべてをログに記録する
  • SSHキーを構成し、.ssh/authorized_keysの公開キーのみを信頼する
11
user34720

Rootユーザー名とX + Yシンボルのパスワードは、Xシンボルのユーザー名+ Yシンボルのパスワードと少なくとも同じくらい安全に暗号化されています。実際、これはさらに安全です。人の名前は簡単に推測できるためです(ボットは、ジョン、マイク、ビルなどを試してみることもできます。そして、ルートの代わりに、ボットは多くの人がそうしています)。そして、それが標的型攻撃である場合、あなたは特に運が悪くなります。誰かが会社のサーバーを破壊したい場合、システム管理者の名前(ニックネーム)を見つけることは問題ではないからです。

そして、攻撃者がsysadminがsshログインに使用するアカウントにアクセスできるようになると(そしてsuまたはSudoを使用してタスクを実行する)、そのユーザーのセッションにプログラムを感染させることができます。次回sysadminが入力したときに攻撃者のrootパスワードを送信します。

セキュリティの観点から悪い習慣と見なされている(または見なされるべき)ルートログインのタイプanyです。 「通常の」ユーザーログイン-> su/Sudoチェーンは、監査証跡を追加します。分かりやすい英語で:誰が何をしたかを知ることができます。

特別なケースとして、1人のユーザーだけがrootアクセス権を持つ場合があります。その場合、追加の「通常の」ユーザーを使用しても、それほど多くの値は追加されません(少なくとも私はその値を見ることができませんでした)。とにかく-とにかくシステムに単純なユーザーがいるはずです(非管理タスク、wgetの実行など;-))。

8
skarap

Rootログインを有効にする場合に特に危険なのは何ですか(特にパスワードログインが無効になっている場合)?

攻撃者(ボット/ボットネット/ハッカー)は、パスワードを推測するだけで、インターネットを利用できる場合はシステムを完全に制御できます。また、同じ理由で、SSHを介してログインできるシステムアカウント(www-data、プロキシなど)があってはなりません。

(公開鍵などを使用して)パスワードログインを無効にした場合は、秘密鍵を握った人がシステムを完全に制御できることを考慮してください。ユーザーで公開鍵を使用する方が良い理由を以下に示します。

パスワード認証が許可されている場合、セキュリティの観点から、Xシンボルのユーザー名とYシンボルのパスワード、またはrootユーザー名とX + Yシンボルのパスワードの違いは何ですか?

次の理由により、ユーザー名を追加するとセキュリティが強化されます。a)攻撃者はペア、ユーザー名、パスワードの両方を知っている必要があります。 b)攻撃者がシステムに違反した場合、特権アカウントにすぐにアクセスできず、攻撃者に微妙なニュアンスが加わります。

この場合、公開鍵もプラスです:

  1. 攻撃者はあなたの公開鍵を必要とします
  2. 攻撃者は、昇格された特権を取得するためにパスワード(または認証方法)を必要とします
4
Braiam

安全対策を講じている限り、それは必ずしも悪いことではありません。例として、CSF(サーバーファイアウォールの構成)をインストールし、許可される失敗の試行回数を設定できます。そのため、誰かが5回を超える失敗の試行を試みた場合、それらは自動的にブロックされます。したがって、ベストアンサーの最初の部分全体がまったく問題になることはありません。これは何度も私に起こりました、そして幸運にもすべての紹介者は永久にブロックされました。サーバーを管理しているのがあなただけである場合はサーバーに大きな問題はないと思いますが、システム管理者が多い場合や、組織で働いている場合は、明らかに使用しないでください。ルート。また、デスクトップPCの場合、多くのソフトウェアを使用するためセキュリティリスクがあるため、別のアカウントを使用する方が良いと思いますが、サーバーでは、信頼できないランダムなソフトウェアを使用しないでください。それらをできるだけ低く保つため。つまり、サーバーを適切に管理する方法を知っていても、それほど害はありません。

1
Don Dilanga