あなたのLinux PCでOpenSSHの内外を学ぶ
セキュリティとリモートアクセスの両方のために、私たちは何度もSSHの長所を称賛してきました。サーバー自体、いくつかの重要な「メンテナンス」の側面、およびそれ以外の点では滑らかな乗り心地を乱すことができるいくつかの奇妙な点を見てみましょう。.
このガイドはLinuxを念頭に置いて書かれていますが、これはCygwinを介したMac OS XおよびWindows 7のOpenSSHにも適用できます。.
なぜ安全なのか
SSHは、ある場所から別の場所へデータを安全に接続してトンネリングするための優れた方法であることを何度も述べました。物事がどのように機能するかを非常に簡単に見てみましょう。.
私たちが他のコンピュータへの接続を開始することにしたとき、私たちはしばしば扱いやすいプロトコルを使います。 TelnetとFTPの両方が頭に浮かぶ。私達はリモートサーバーに情報を送り、それから私達は私達の接続についての確認を受け取ります。ある種の安全性を確立するために、これらのプロトコルはしばしばユーザ名とパスワードの組み合わせを使用します。それは彼らが完全に安全だということですね。違う!
接続プロセスをメールと考えると、FTPやTelnetなどを使用することは、標準的なメール封筒を使用することとは異なります。はがきを使うようなものです。誰かが途中で足を踏み入れた場合、彼らは両方の通信相手のアドレスと送信されたユーザー名とパスワードを含むすべての情報を見ることができます。その後、情報を同じに保ちながらメッセージを変更し、一方の通信相手または他方の通信相手になりすますことができます。これは「中間者攻撃」として知られており、アカウントを危険にさらすだけでなく、送信されたすべてのメッセージおよび受信されたファイルに対して問題を引き起こします。送信者と話しているかどうかはわかりませんし、たとえ話していても、その間からすべてを見ている人がいるとは限りません。.
それでは、HTTPをより安全にするSSL暗号化を見てみましょう。ここに、私たちはあなたの受取人が彼または彼女がそうであると主張する人であるかどうかを確かめるためにチェックし、そしてあなたのメールが見られないように保護する法律を持っている通信を扱う郵便局を持っています。それは全体的により安全です、そして私達のHTTPSの例のための中心的な権威 - Verisignは1です - あなたがメールを送っている人がチェックアウトすることを確認します。彼らはポストカード(暗号化されていない信任状)を許可しないことによってこれを行います。代わりに、彼らは本物の封筒を要求します.
最後に、SSHを見てみましょう。ここでは、設定が少し異なります。ここには中央認証システムはありませんが、状況はまだ安全です。それは、あなたがすでに住所を知っている誰かに手紙を送っているからです - 電話で彼らとチャットすることによって - そしてあなたの封筒にサインをするためにあなたが本当に手の込んだ数学を使っているからです。あなたはそれをあなたの兄弟、ガールフレンド、パパ、または娘に渡して住所に持って行きます。そして受取人の空想数学の一致があった場合に限り、あなたは住所がそれがあるべきものであると思いますか。それから、あなたはこの素晴らしい数学によって詮索好きな目からも保護された手紙を受け取ります。最後に、あなたはあなたの信任状を目的地への別の秘密のアルゴリズム的に魅了された封筒で送ります。数学が一致しない場合は、元の受信者が移動したため、そのアドレスをもう一度確認する必要があると想定できます。.
説明があれば、それを切り取ると思います。あなたがもう少し洞察力を持っているならば、もちろんコメントでチャットしてください。今のところ、SSHの最も重要な機能であるホスト認証を見てみましょう。.
ホスト鍵
ホスト認証は基本的にあなたが信頼する誰かが(魔法の数学で封印された)封筒を受け取りあなたの受取人のアドレスを確認する部分です。それは住所のかなり詳細な説明です、そしてそれは私達がちょうどスキップすることになるであろういくつかの複雑な数学に基づいています。ただし、これを避けるために重要なことがいくつかあります。
- 中央機関がないので、本当のセキュリティはホスト鍵、公開鍵、および秘密鍵にあります。 (これら後者の2つのキーはシステムへのアクセスを与えられた時に設定されます。)
- 通常、SSH経由で他のコンピュータに接続すると、ホストキーが保存されます。これにより、将来のアクションが速くなります(または冗長になります)。.
- ホスト鍵が変更された場合、あなたはおそらく警告を受け、慎重になるべきです。!
ホスト鍵は認証前にSSHサーバーのIDを確立するために使用されるので、接続する前に必ず鍵を確認してください。以下のような確認ダイアログが表示されます。.
でも、心配する必要はありません。セキュリティが問題になる場合は、ホストキー(上記のECDSAフィンガープリント)を確認できる特別な場所があります。完全にオンラインでの事業では、それはしばしば安全なログインのみのサイトになるでしょう。電話でこのキーを確認するには、IT部門に電話をかけなければならない場合があります。あなたの仕事用バッジや特別な「緊急電話番号」リストに鍵があるところもいくつか聞いたことがあります。また、ターゲットマシンに物理的にアクセスできる場合は、自分で確認することもできます。!
システムのホストキーを確認する
鍵を作成するために使用される暗号化アルゴリズムには4種類の種類がありますが、今年初めのOpenSSHのデフォルトはECDSAです(いくつかの理由があります)。今日はそれに焦点を当てます。アクセス可能なSSHサーバー上で実行できるコマンドは次のとおりです。
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
出力は次のようになります。
256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub
最初の数字はキーのビット長、それからキー自体、そして最後にそれが保存されているファイルを持っています。リモートでログインするように促されたときにあなたが見るものとその中央部分を比較してください。それは一致するはずです、そしてあなたはすべて設定されています。そうでなければ、何か他のことが起こっている可能性があります。.
known_hostsファイルを見れば、SSH経由で接続したすべてのホストを見ることができます。それは通常次の場所にあります。
〜/ .ssh / known_hosts
あなたはどんなテキストエディタでそれを開くことができます。あなたが見れば、キーがどのように格納されているかに注意を払うようにしてください。それらはホストコンピュータの名前(またはウェブアドレス)とそのIPアドレスで保存されています.
ホスト鍵の変更と問題
ホストキーが変更されるか、またはknown_hostsファイルに記録されているものと一致しないという理由がいくつかあります。.
- システムが再インストール/再設定されました.
- セキュリティプロトコルが原因でホストキーが手動で変更された.
- OpenSSHサーバーが更新され、セキュリティー問題のために異なる標準を使用しています.
- IPまたはDNSのリースが変更されました。多くの場合、これは別のコンピュータにアクセスしようとしていることを意味します.
- ホストキーが変更されるなど、システムが何らかの形で侵害された.
おそらく、問題は最初の3つのうちの1つであり、あなたはその変更を無視することができます。 IP / DNSリースが変更された場合は、サーバーに問題がある可能性があり、別のマシンにルーティングされている可能性があります。変更の理由がわからない場合は、おそらくそれがリストの最後のものであると想定する必要があります。.
OpenSSHによる未知のホストの処理方法
OpenSSHには、未知のホストをどのように処理するかの設定があり、変数“ StrictHostKeyChecking”(引用符なし)に反映されています。.
設定によっては、未知のホストとのSSH接続(そのキーはすでにknown_hostsファイルに入っていない)は、3つの方法をとることができます。.
- StrictHostKeyCheckingはnoに設定されています。 OpenSSHはホスト鍵の状態に関わらず自動的にどのSSHサーバーにも接続します。 OSの再インストール後にたくさんのホストを追加した場合を除いて、これは安全ではないのでお勧めできません。その後、元に戻します。.
- StrictHostKeyCheckingはaskに設定されています。 OpenSSHはあなたに新しいホスト鍵を表示し、それらを追加する前に確認を求めます。それは接続が変更されたホストキーに行かないようにします。これがデフォルトです.
- StrictHostKeyCheckingはyesに設定されています。 “ no”とは反対です。これは、known_hostsファイルにまだ存在していないホストへの接続を妨げます。.
この変数は、次のパラダイムを使用してコマンドラインで簡単に変更できます。
ssh -o 'StrictHostKeyChecking [オプション]' user @ host
[option]を "no"、 "ask"、または "yes"に置き換えます。この変数とその設定を囲む一重引用符があることに注意してください。 user @ hostも、接続先のサーバーのユーザー名とホスト名に置き換えます。例えば:
ssh -o 'StrictHostKeyChecking ask' [email protected]
キーが変更されたためにブロックされたホスト
アクセスしようとしているサーバーのキーが既に変更されている場合は、デフォルトのOpenSSH構成ではアクセスできなくなります。そのホストのStrictHostKeyChecking値を変更できますが、それは完全に、徹底的に、偏執的に安全というわけではないでしょうか。代わりに、known_hostsファイルから問題のある値を削除するだけです。.
それは間違いなくあなたの画面上に持つことは醜いことです。幸いなことに、この理由はOSが再インストールされたことです。それでは、必要な行を拡大しましょう。.
そこに行きます。編集する必要のあるファイルがどのように引用されているのかご覧ください。行番号も表示されます。それでは、そのファイルをNanoで開きましょう。
これが1行目の、問題のあるキーです。Ctrl + Kを押して行全体を切り取るだけです。.
それははるかに優れています!そのため、今度はCtrl + Oを押してファイルを書き出し(保存)、Ctrl + Xを押して終了します。.
これで、代わりに素敵なプロンプトが表示され、それに対して単に「yes」と応答できます。
新しいホスト鍵の作成
記録としては、ホスト鍵を変更する理由はそれほど多くありませんが、必要に応じて簡単に変更できます。.
まず、適切なシステムディレクトリに移動します。
cd / etc / ssh /
ディストリビューションによっては他の場所に配置されているものもありますが、これは通常グローバルホストキーが存在する場所です。よくわからないときは、ドキュメントを確認してください。!
次に、古いキーをすべて削除します。.
sudo rm / etc / ssh / ssh_host_ *
あるいは、それらを安全なバックアップディレクトリに移動することをお勧めします。ちょっとした考え!
それから、OpenSSHサーバに自分自身を再設定するように指示できます。
sudo dpkg-reconfigure openssh-server
コンピュータが新しいキーを作成している間、プロンプトが表示されます。タダ!
SSHの機能が少し良くなったことがわかったので、ここで困難な状況から抜け出すことができます。 「リモートホストの識別が変更されました」という警告/エラーは、コマンドラインに精通しているユーザーでも、多くのユーザーをやめさせるものです。.
.