web-dev-qa-db-ja.com

共有の職場のコンピューターからのSSH

主な質問:職場のコンピューターから自宅のパーソナルコンピューターに安全に接続するにはどうすればよいですか?

背景:私はほとんどの作業を大学のコンピューターで行っていますが、コンピューター自体は素晴らしいものではないので、自宅のマシンにSSHで接続して計算を実行します。このシステムはうまく機能していますが、自宅のコンピュータを適切に保護する方法についてジレンマに直面しています。一方では、パスワードSSHログインを無効にし、SSHキーのみを使用したいと思います。ただし、そのためには、他のユーザーが比較的簡単に見たり、コピーしたり、使用したりできる大学のコンピューターでSSHキーを生成する必要があります。また、自分のユーザー名/ IPアドレスを他のユーザーが簡単に表示できる構成ファイルに保存したくありません。

私が使用する大学のコンピューターは自分の机にあるという点で「私のもの」ですが、アカウントを持つユーザーは誰でもそれにSSHで接続でき、SSHキーが保存されているホームディレクトリへの読み取りアクセス権があり、保護するSudo権限がありませんそれに対して。

職場のコンピューターからパーソナルサーバーに安全に接続できるようにするために何をお勧めしますか?

34
user5728491

あなたが安定したコンピュータを持っているとすれば、私は先に進み、sshアクセスにパスワードの代わりにsshキーを使用します(毎回別のラボコンピュータを使用していたとしても、ポータブルUSBのsshキーがおそらくまだ好ましいでしょう) 。

Sshキーが盗まれる可能性がありますがパスワードを使用すると、sshパスワードと同様のセキュリティが提供されますが、キーファイルも必要です。 。はい、sshクライアントは鍵のパスフレーズを盗むために危険にさらされる可能性がありますが、困難はsshパスワードを盗むためにクライアントを危険にさらすことと同じです。使用する前に確認が必要になるようにssh IDをエージェントにロードできることを覚えておいてください(また、ssh-agentをアンロードする/使用しないことをお勧めします)。

ハードウェアトークン(Luisが推奨)は、sshキーを保護するのに最適ですが、オプションではない場合があります。

接続先のIPアドレスが表示されない場合については、opensshクライアントを使用している場合はHashKnownHosts yes ssh_configオプション(デフォルトでさえあるいくつかのディストリビューションの場合)。おそらく実際に非表示にする価値はありませんが、「秘密のもの」であってはならず、ネットワークログから簡単に抽出できます。

サーバーで、不正なランダムホストからログインをさらに保護する方法として、次のことができます。

  • パスワード認証を無効にする(実行したかった)
  • ログインできるユーザーを(許可されたユーザーのみに)制限する
  • 標準以外のポートを使用する
  • 接続を許可するIPアドレスを制限します。大学であるため、「あなたの」コンピュータには静的な送信IPアドレスがあり、おそらくあなただけのパブリックIPアドレスもあるでしょう。最悪の場合、大学の範囲に制限します。

これらは、コンピュータのスーパーユーザー権限を悪用した断固とした攻撃者を阻止できないため、ほとんどが「追加の手段」ですが、少なくとも将来の読者のために一覧にしておくのは良いことだと思います。

ただし、問題の重要な解決策は自宅のコンピューターへの一般的なアクセス権を付与しないです。 sshで接続したいので、あなたのホームマシンはLinux/BSD/MacOSであると思います。

おそらくそこから、インターネットの閲覧、(個人的な)メールの作成、YouTubeビデオの視聴などの日常的なタスクを実行するためのユーザーアカウントがあります。ただし、計算にのみ関心があるので、これらにアクセスする必要はありません。 したがって、計算を実行するために個別の制限されたアクセスを設定します。仮想マシンまたはコンテナーに接続している可能性がありますが、個別のアカウントだけでニーズを満たすことができます。必要なのは、ハードウェアが高速(より)であることだけです。スペースの少ないアカウントと、マシンにインストールされている必要なプログラムで問題ありません。他のユーザーがあなたの「ホームファイル」にアクセスすることを許可しなかったいくつかの基本的なUnixパーミッションで十分でしょう。

2番目の潜在的な問題は、その低い特権のアカウントにアクセスした攻撃者がローカルネットワーク内の他のデバイスを侵害することでした。他のデバイスを適切に保護するだけでなく、その低い特権のユーザーへのすべてのネットワークアクセスを無効にするか、それを外部アドレスのみに制限することができます。

¹例sshキーは他のマシンでは機能しませんが、あなたのマシンを介してプロキシしてアクセスできます

²あらゆる種類のプロセッササイドチャネルがありますが、ほとんど関係ありません。ローカルにアクセスするときにsshdを無効にできます。機密性の高いものを実行したままにしないでください(いいえ、そこでCAを実行したままにしないでください????)。

45
Ángel

そのコンピューターに独自のソフトウェアをインストールして実行することが許可されている場合、スマートフォンやセキュリティトークンなどの外部ハードウェアのキーでキー認証を使用できるようにするソリューションがあります。

私は前者を試し、それを頻繁に使用しました。

13
Luis Casillas

公共のコンピューターを使用して安全を確保したい場合、最善の策は多要素認証を使用することです。例:信頼できるSSH秘密鍵(多要素認証設定のサーバーへのアクセスのみを許可)およびモバイルデバイスを第2要素として使用(デバイスのアプリでの承認またはパスコードの入力による) (例: google authenticator を使用)。

その公共のコンピュータでのすべての活動は安全ではない可能性があることを覚えておいてください。誰かがハードウェア/ソフトウェアキーロガーをインストールした可能性があります。rootとしての管理者がプライベートホームディレクトリ内を探している可能性があります。ディスク上のSSHキーを暗号化すると、使用のために復号化した後、管理者がメモリをダンプし、復号化されたバージョンを再構築できます。等.

9
dr jimbob

* nixシステムでは、/home/usernameに読み取り権限がある場合でも、最初にいくつかの修正が必要です(つまり、755またはls -ld ~/rwxr-xr-xのように見えます)。 ~/.sshディレクトリとその内容は600(ファイルの場合)および700(ディレクトリの場合)である必要があります。実際、所有者以外のユーザーがこれらのファイルを読み取れる場合、sshは接続を拒否する必要があります。 ~/が何らかの理由で(つまり、Apacheが〜/ public_htmlを読み取ってuni.edu/~usernameで提供できるように)誰でも読み取り可能にする必要がある場合でも、~/.sshの権限を変更できます。 -chmod 700 ~/.sshchmod 600 ~/.ssh/*だけで修正されます。

自宅のマシンに安全に接続する限り、他の信頼できるマシン(自宅のマシンなど)で秘密鍵を生成し、Linux権限をサポートするファイルシステムを使用してUSBドライブまたはその他の適切なポータブルメディアにコピーすることができます(私はd単純にするためにext4としてフォーマットし、その上にキーを配置します。次に、ユニにいるときに、USBドライブを挿入してマウントし、ssh -i /path/to/private/keyfile -p <port number> [email protected]を実行できます。

誰かがあなたのマシンのramからキーをコピーすることなどについて偏執的であるなら、あなたは単に関連する仕事をしていない場所に接続すべきではありません。

1
ivanivan

一般的な答えとしてはできません。職場のコンピューターが、前の従業員から共有された1つのユーザーアカウントと既知のマルウェアによって誰にも削除されていないWindows PC、またはあなただけが使用するラップトップの、大学に恵まれたバージョンの "セキュリティが強化された」Solarisがインストールされているか、その中間にあるもの。どちらの方法でも、十分に隠されたキーロガーやリモートアクセスツールが存在する可能性があります。

ただし、特定の状況では(特にコメントで明記されているように)、一般的に同僚から秘密鍵を保護するためのファイルシステム権限を備えた秘密鍵認証を使用すると安全です。管理者から保護するには、大学のポリシーとそのポリシーの遵守に依存する必要があります。システムの物理的な盗難、ラボやオフィスの物理的なセキュリティに対抗します。

アンヘルの推奨事項を自宅のコンピューターに「仕事用」のIDのための別のアカウントを作成することを繰り返します。もちろん、個人ファイルにアクセスする目的で実際に家に接続している場合は、面倒なこともあります。しかし、述べられた目的のために、それは実際にいくつかの混乱と注意散漫を避けるべきです。

そして、別のアカウントを取得したら、それをロックダウンするために実行できる他のことがいくつかあります。インターネットの不要な部分に接続しないようにするiptablesルール。とにかくオフィスにいない場合にログインを禁止するログイン時のルール。そのアカウントに接続できるIPアドレスを制限するルール。

そしてもちろん、そのようなシステムがセットアップされたら、ログを監視し、侵入者の兆候があった場合はすべてをシャットダウンします。

0
david