SSHによるリモートログイン
SSHによるリモートログインはインターネット上にあるLinuxのサーバーを管理する上で必須の作業です。その必要性も含めてしっかり理解するようにしましょう。【連載コラム:Linuxシステム管理標準教科書を読む(7)】
Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。
SSHによるリモートログインは、インターネット上に配置することが多いLinuxのサーバーを管理するためには必須の作業です。セキュリティを考慮して、SSHによる暗号化通信で接続すること、また接続時に公開鍵を使った認証を行うことについて、しっかりと理解しておきましょう。
SSHとは
SSH(Secure Shell)は、リモートのサーバーにログインしてコマンドラインで動作するためのプロトコルです。主な目的はリモートログインですが、SCPやSFTPのようにファイルのリモートコピーや各種ファイル操作を行ったり、ポート転送のようにその他の通信プロトコルをSSHの接続経由で安全にやり取りしたりするような使い方もできます。
SSHの認証方式
認証とは、サーバーへの接続にあたって、適切な権限を持ったユーザーであるかどうかを確認する処理です。SSHには様々な認証方法が用意されています。
パスワード認証
最もわかりやすいのが、ユーザー名とパスワードを入力するパスワード認証です。簡単に行える分、ユーザー名とパスワードの仕組みがわかってしまえば誰でも認証されてしまいます。パスワードが分からなくても総当たり攻撃を行って認証を突破されてしまう可能性があるので、あまり安全な認証方法とは言えず、外部からの接続を完全に排除した安全なネットワーク内で一時的に使うことはできますが、すぐにより安全な認証方法に変える必要があります。
パスワード認証によるrootログイン
パスワード認証で特に問題になるのがrootとしてのログインです。どのLinuxでもrootはユーザー名がrootで固定なので、簡単にパスワードの総当たり攻撃が可能です。もしrootとしてパスワード認証でログインできるのであれば、理論上は非常に危険な状態にあります。もちろん、総当たり攻撃ではなく、単純にパスワードが漏洩すればさらに簡単に侵入できてしまいます。
一部のディストリビューションでは、インストール後の初期設定を容易にするためにrootのパスワード認証を許可していましたが、最近では許可しない設定がデフォルトになりつつあります。このパスワード認証に関する設定は別途解説します。
公開鍵認証
SSHのユーザー認証は原則この公開鍵認証を使用します。公開鍵認証は、事前に作成しておいた公開鍵をリモートログインしたいサーバーに設置しておき、ユーザーのクライアント側にはその公開鍵と対になる秘密鍵を持っておく必要があります。公開鍵秘密鍵の生成方法や、サーバーへの公開鍵の設置方法については教科書でも解説しています。しっかりと手順を確認しておいてください。
公開鍵について
公開鍵を作成し、接続認証を行って接続するまでの手順は教科書で説明した通りですが、公開鍵についていくつか補足事項を解説しておきます。
鍵のアルゴリズム
公開鍵の生成にあたっては、鍵のアルゴリズムを指定する必要があります。デフォルトではRSA形式が使われています。最近では、楕円曲線暗号を利用するEd25519も使えるようになっています。Ed25519は、サーバーとクライアント双方のサポートが必要になるので、古いSSHのサーバーが残っている場合には注意が必要です。
クラウドでの公開鍵認証
クラウド上にサーバーを設置する場合、あらかじめ公開鍵をクラウドサービスにアップロードしておき、サーバーを起動する際に公開鍵をサーバーに設置するような動作をするものが多いようです。この場合にも、サポートしてる鍵のアルゴリズムについて確認しておく必要があります。
秘密鍵の取り扱い
公開鍵はサーバーに設置しますが、秘密鍵はSSHの接続元であるクライアントで保持しておく必要があります。秘密鍵という名前の通り、取り扱いには注意が必要です。そのため、別端末からもSSHで接続したい場合、秘密鍵をどう扱うべきか考える必要があります。
まず、同じ秘密鍵をコピーして使う方法がありますが、安全な方法でコピーする必要があります。USBメモリなどを使うのか、あるいはクラウドストレージなどを使うのか。ある程度方法を固定して厳重に管理できるようにしておく必要があるでしょう。
コピーするという手段をとらない場合、各端末毎に秘密鍵と公開鍵を作成し、サーバーにはそれぞれの公開鍵を設置する方法です。鍵のペアが増えてくると管理が煩雑になってしまうのが難点です。
どちらの方法が良いかはケースバイケースとなるので、実現したい形を踏まえて、より安全な方法をとるべきでしょう。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
<Linuxシステム管理標準教科書とは>
「Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。
バックナンバー
第6回:ファイルシステムの管理
第5回:サービスの管理
第4回:ネットワークの管理
第3回:root権限の管理
第2回:SSH