なぜSSH経由のルートログインが非常に悪いため、誰もが無効にすることをお勧めしますか?


83

インターネット上のすべての人は、SSHを介したルートログインを無効にすることをお勧めします。これはシステムのセキュリティホールであり、悪い習慣であるためです。

ルートログインを有効にすると何がそんなに危険なのですか(特にパスワードログインが無効な場合)?

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


2
ほとんどのシステムにrootユーザーがいること自体が悪いので、そのユーザーのSSHログインを有効にしておいてください!
スマン

1
ehealth-aussie.blogspot.com/2012/01/…には、sshを介したルートログインが必要です。すべてが妥協です。
エモリー

2
うーん...この質問をセキュリティに移すべきですか?このトピックは* nixシステムよりもセキュリティに傾いているため。
ブライアム

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

回答:


62

SSH経由のルートが悪い理由

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

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

攻撃者が幸運(または十分な時間)を持ち、パスワードを見つけた場合、彼らはルートアクセス権を持ち、それはあなたが困っているということを意味します。

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

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

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

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

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

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

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

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

  • ユーザーは間違ったパスワードを選択します!

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

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

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

リンク集

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

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


10
良い要約。ただし、ssh秘密鍵も盗まれる可能性があります。
ファヒムミタ

16
@Faheem Mithaええ、盗まれたのは推測とは異なり、ボットはそうします。また、秘密鍵は自分の手(またはハードドライブ)のみにあり、Stack ExchangeやGoogleなどのサードパーティの手にはありません。
ラファエルアーレンス

2
+1。この答えは実際に単純に要約できましたN*M > N。ほとんどの* nixホストにはrootユーザーがいるため、rootがリモートホストから直接ログインできるようにすると、テストマトリックスのサイズは試行するパスワードの数になります。直接ルートログインを許可しない場合、可能な組み合わせの数は、テストするユーザー名の数に乗算されます(有効なユーザー名をテストする保証はまだありません!)。
CVn

3
@MichaelKjörling通常、ユーザー名は秘密ではないので、ユーザー名を取得することは難しくありません。しかし、それはボットと簡単な試みに対して役立ちます。
ラファエルアーレンス

2
@Everyone、ユーザー名にX記号とパスワードYが含まれる場合、試行できる# of X length words* # of Y length words組み合わせがあります。ユーザー名が固定されている場合(rootなど)、パスワードがX + Yシンボル長の場合、# of X+Y length wordsパスワードが存在する可能性があります。そして# of X+Y length words=# of X length words * # of Y length words
skarap

10

これらは、直接ルートログインを許可しない理由の一部である可能性があります。

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

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

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

5
「ルートへの直接ログインは、ブルートフォース攻撃の成功により大きな損害をもたらす可能性があります。」実際には、デフォルトのsudoセットアップと比較した場合。本当のキラーは、特定のホストで有効であるとみなせるユーザー名が1つもない場合の相乗効果です。
CVn

@MichaelKjörling-確かに、混乱したsudoはPermitRootと同じくらい有害である可能性があります;)


1
ポートを変更することは、実際には多くのシナリオで有害です。そして、それは不明瞭さによるセキュリティに他なりません。
0xC0000022L

総当たり攻撃はSSHだけの懸念ではなく、マシン上の他のあらゆるものに対する懸念であるため、fail2banに言及するための+1。実際の目的(プライベートデータへのアクセス、ファイルダンプとしての使用、フィッシングの使用など)のためにマシンを「引き継ぐ」ために、ルートまたはシステムのアクセス許可を取得する必要はありません。
エリックグランジ

8

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

そして、攻撃者がシステム管理者がsshログインに使用するアカウントにアクセスできるようになると(そして、タスクを使用suまたはsudo実行するために)、システム管理者が次のパスワードを入力したときに攻撃者のルートパスワードを送信するプログラムでそのユーザーのセッションに感染する可能性があります時間。

それはだ任意のセキュリティの観点から、悪い習慣を考えられている(またはする必要があります)rootのログインのタイプ。「通常の」ユーザーログイン-> su / sudoチェーンは、監査証跡を追加します。平易な英語で:それは誰が何をしたかを見つけることを可能にします。

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


4

ルートログインを有効にすると何がそんなに危険なのですか(特にパスワードログインが無効な場合)?

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

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

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

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

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

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

1
私が使用するパスワードのうち、ランダムな英数字が20文字未満であるものはほとんどありません([A-Za-z0-9]にいくつかの特殊文字を加えたもの)。20個の文字(つまり、40個の文字セットのうち20個)は、10 ^ 32の組み合わせのオーダーを与えます。128ビットのエントロピーは10 ^ 38のオーダーです。大きな違いではなく、すべてが考慮されており、SSHサーバーは任意の種類のレート制限を自由に実装できるため、その場合はオフラインの総当たり攻撃を行っているわけではありません。パスワードを覚えるのが128ビットキーと同じくらい難しい場合でも、パスワードに問題はありません。
CVn

@michael shh ...範囲を与えないでください、今ではハッカーは20文字程度の長さのレインボーテーブルを使用する必要があることを知っています...?
-Braiam

6
@Braiam Rainbowテーブルは、攻撃者がハッシュにアクセスしてオフライン検索を行う場合にのみ役立ちます。この場合、攻撃者は検証対象のサーバー応答のみを持っています。これは、非常に多くの試行のみに制限されている可能性が高く、はるかに低速です。
ピーター

@Peter ups、私は辞書とハッシュの両方を台無しにしましたが、いずれにせよOPはなぜ弱いパスワードや空のパスワードを使用してはいけないのかと尋ねました、魔女はばかげています。申し訳ありませんが、そのように解釈されず、FUDとして扱われました。
ブライアム

2
1.8 * 10 ^ 35のパスワードを試してみたいと思う(それが40のセットのうち18から22の範囲のランダムな文字であり、セットの外の文字がわからない場合[A-Za-z0- 9]私が使用する)、私はほとんど楽しいと言った。これは約117.1ビットのエントロピー相当(2 ^ 117.1〜1.78 * 10 ^ 35)であり、@ Peterが指摘したように、オンライン攻撃を実行する必要があります。これらのパスワードをすべて(圧縮に頼らずに)保存するには、およそ3.6 * 10 ^ 36バイトまたは3 * 10 ^ 24 TiBが必要であることがわかります(その数字が数桁間違っている場合、誰が気にしますか?)。キーワードランダム
CVn

1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.