ubuntuのsshdを鍵認証にしてLinuxとwindowsからログインできるようにする。

ubuntu20.04にsshdをインストールして認証方式を鍵認証にします。Linux(ubuntu18.04)、windows10のそれぞれからログインできるようにします。このような構成です。

sshdのインストールと起動(ubuntu20.04)

ubuntu20.04にはSSH Serverとなるsshdがインストールされていないので、まずはこれをインストールします。作業はrootユーザーで行います。

sshdのパッケージの検索
# apt search sshd

いくつか結果が表示されますが以下のものをインストールします。

 :
openssh-server/focal-updates,focal-security 1:8.2p1-4ubuntu0.2 amd64
 secure shell (SSH) server, for secure access from remote machines
 :

sshdのインストール
# apt install openssh-server

インストールが終わったらsshdを起動します。いったん設定はデフォルトのままです。

sshdの起動
# systemctl start sshd

今回の場合、SSH ServerのIPアドレスは 192.168.0.5 です。クライアントがSSH Serverのログインに使用するユーザーは tak となります。takのホームディレクトリ配下に .ssh ディレクトリがあることを確認しておいてください。ない場合は作成します。.sshディレクトリの作成はtakユーザーで行います。後ほど、このディレクトリに公開鍵を配置します。

.sshディレクトリの作成
$ mkdir .ssh
$ chmod 700 .ssh

ubuntu18.04、および、windows10からパスワード認証でログインできることを確認します。

sshコマンドでログイン(ubuntu18.04)
$ ssh tak@192.168.0.5

TeraTermのログイン画面(windows10)

鍵の作成(ubuntu18.04)

ssh-keygenコマンドを使用してクライアント側で秘密鍵と公開鍵を作成します。作成は任意のユーザです。鍵の形式はRSA、ビット長は4096としました。

鍵の生成
$ ssh-keygen -t rsa -b 4096


$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usr/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase):  ←★パスフレーズの入力(任意)
Enter same passphrase again: 
Your identification has been saved in /home/usr/.ssh/id_rsa.
Your public key has been saved in /home/usr/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bq+gdaaFKoUibFxLBMxBzJDnifRgv0X23aNVVQWFhU4 usr@ubuntu18.04
The key's randomart image is:
+---[RSA 4096]----+
 :
 :
+----[SHA256]-----+

途中でパスフレーズの入力を求められますので任意で設定してください。入力なしでも構いません。ユーザーのホームディレクトリ配下の .ssh ディレクトリに秘密鍵と公開鍵が作成されます。デフォルトでは以下の名前になります。

・id_rsa(秘密鍵)
・id_rsa.pub(公開鍵)

このうち公開鍵の方をサーバー(ubuntu20.04)にアップロードします。アップロードにはscpコマンドを使用します。

公開鍵のアップロード
$ cd
$ scp .ssh/id_rsa.pub tak@192.168.0.5:~/.ssh/

アップロード先はtakユーザーのホームディレクトリ配下の.sshディレクトリです。~/.ssh は /home/tak/.ssh のことです。

鍵の作成(windows10)

windowsではTeraTermを使って鍵を作成します。設定から「SSH鍵生成」を選択します。

鍵生成の画面が表示されるので、鍵の種類はRSA、ビット数に4096を入力し「生成」ボタンを押下します。

鍵のパスフレーズを入力します。未入力でも構いません。「公開鍵の保存」および「秘密鍵の保存」ボタンを押下し、それぞれの鍵を保存します。秘密鍵の保存の際にパスフレーズが未入力だった場合は「空のパスフレーズを使用しますか?」と聞かれるのですが、「はい」を選択すれば生成されます。鍵の保存先は任意の場所で良いです。

保存した公開鍵をサーバー(ubuntu20.04)にアップロードします。まずパスワード認証でubuntu20.04にログインします。保存した鍵ファイルをTeraTermの画面にドラッグ&ドロップします。

ファイル転送の画面が表示されるので送信先を指定します。送信先ディレクトリはtakユーザーのホームディレクトリ配下の.sshディレクトリです。

「OK」ボタンを押下してファイルをアップロードします。

id_rsa.pubがscpでアップロードしたubuntu18.04の公開鍵、id_rsa_win.pubがwindows10の公開鍵です。

鍵認証方式への変更(ubuntu20.04)

takユーザーで鍵認証用のファイル「authorized_keys」を作成します。これは公開鍵をマージしたものです。

鍵認証ファイルの作成
$ cd .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
$ cat id_rsa.pub >> authorized_keys
$ cat id_rsa_win.pub >> authorized_keys

このような感じです。

authorized_keysが出来たら、id_rsa.pubとid_rsa_win.pubは不要なので削除します。

公開鍵ファイルの削除
$ rm id_rsa.pub
$ rm id_rsa_win.pub

次に、sshdの設定をパスワード認証から鍵認証に変更します。これはrootユーザーで作業します。

sshd_configの編集
# cd /etc/ssh
# vi sshd_config

viでの編集内容は、PasswordAuthenticationのコメントアウトを外してnoに変更します)。

編集前
#PasswordAuthentication yes
 ↓↓↓
編集後
PasswordAuthentication no

sshdを再起動します。

sshdの再起動
# systemctl restart sshd

鍵認証でログイン(ubuntu18.04)

sshコマンドの「-i」オプションで秘密鍵を指定してログインします。

鍵認証でログイン
$ ssh -i .ssh/id_rsa tak@192.168.0.5

なお、鍵の指定をしないでログインしようとすると「Permission denied (publickey).」となります。

$ ssh tak@192.168.0.5
tak@192.168.0.5: Permission denied (publickey).

鍵認証でログイン(windows10)

TeraTermでログインをします。ホストにIPアドレス、サービスにSSH、ポートに22を設定して接続すると、認証の画面が表示されます。ユーザー名とパスフレーズ(設定した場合のみ)を入力し、認証方式は「RSA/DSA/ECDSA/ED25529鍵を使う」にチェックをします。

秘密鍵の指定には保存した秘密鍵を指定します。今回はwindowsの秘密鍵の名前を「id_rsa_win」としたのですが、この名前だと秘密鍵と認識しないようですので名称を「id_rsa」に変更してください。

「OK」ボタンを押下するとログインできます。

情報処理安全確保支援士の義務と違反したときの罰

情報処理安全確保支援士の試験に合格し登録を行うと情報処理安全確保支援士の名称を使用することができます。自分は情報処理安全確保支援士だと名乗ることができるということです。ただ名乗るだけでは寂しいので、ロゴマークの使用や徽章(バッジ)を付けることが許されます。

これらは情報処理安全確保支援士の登録とは別に別途申請が必要なので使いたい場合は自分で申請しましょう。ちなみにバッチは貸与なので情報処理安全確保支援士の登録を取り消した場合は返却が必要です(おまけに貸与手数料もかかります)。

ロゴマークの使用
徽章(バッジ)の使用

登録を済ませて情報処理安全確保支援士を名乗ることができたとして、情報処理安全確保支援士が何をするかと言うと、情報処理の促進に関する法律(情促法)では次のように定めています。

  • サイバーセキュリティに関する相談に応じ、必要な情報の提供及び助言を行う。
  • 必要に応じその取り組みの実施の状況についての調査、分析及び評価を行い、その結果に基づき指導及び助言を行う。
  • 事業者その他の電子計算機を利用する者のサイバーセキュリティの確保を支援する。

これらの業務(というか責務)を情報処理安全確保支援士は負うわけですが、今日の社会で情報処理安全確保支援士にしかできない仕事なのか?というと現状は違います。情報処理安全確保支援士は士業とはなっていますが医者や弁護士のような士業とは違い、情報処理安全確保支援士でなければできない仕事というものはありません。

逆にですが、情報処理安全確保支援士になったことで守らなければならない義務が発生します。情報処理の促進に関する法律(情促法)では情報処理安全確保支援士の義務として以下のようなことを規定しています。

・信用失墜行為の禁止(24条)
・秘密保持義務(25条)
・受講義務(26条)

「信用失墜行為の禁止」ですが24条では次のように規定されています。

(24条)
情報処理安全確保支援士は、情報処理安全確保支援士の信用を傷つけるような行為をしてはならない。

信用を傷つける行為がどのようなものかというと、明白な犯罪でない限りそのときどきの健全な社会通年に基づいて判断されるようです。信用失墜行為の禁止は国家公務員法や地方公務員法などにも規定されており、情報処理安全確保支援士が公共性が極めて高い職種であることから規定されているようです。

なお信用失墜行為の禁止に違反した場合は、大臣による情報処理安全確保支援士の登録の取り消し、または一定期間の名称の使用停止となります。

「秘密保持義務」ですが25条では次のように規定されています。

(25条)
情報処理安全確保支援士は、正当な理由がなく、その業務に関して知り得た秘密を漏らし、又は盗用してはならない。情報処理安全確保支援士でなくなった後においても、同様とする。

要は安易に人にしゃべったりしてはいけないということですが正当な理由がある場合はその限りではありません。正当な理由には「本人(秘密の主体である組織等)が同意をしている場合」および「刑事捜査のための捜査礼状が正式に出ている場合」があります。

秘密保持義務に違反した場合は、登録の取り消し、または一定期間の名称の使用停止はもちろんのこと、更に刑事罰として「1年以下の懲役又は50万円以下の罰金」の対象となります。情報処理安全確保支援士を名乗る以上、刑事罰の対象になるということは覚えておいたほうが良いでしょう。

「受講義務」ですが26条では次のように規定されています。

(26条)
情報処理安全確保支援士は、経済産業省令で定めるところにより、機構の行うサイバーセキュリティに関する講習、又はこれと同等以上の効果を有すると認められる講習として経済産業省令で定めるものを受けなければならない。

情報処理安全確保支援士は登録後3年の有効期限があり、この講習を期限内に受講し情報処理安全確保支援士自らが更新手続きを行わなければなりません。受講義務に違反した場合は、登録の取り消し、または一定期間の名称の使用停止となります。

情報処理安全確保支援士が「登録が取り消されている」もしくは「名称の使用停止中である」にもかかわらず情報処理安全確保支援士の名称を使用した場合は「30万円以下の罰金」の刑事罰の対象となることも覚えておきましょう。情報処理安全確保支援士でない人(登録をしていない人)が情報処理安全確保支援士の名称を使用した場合も「30万円以下の罰金」の対象となります。

最後に、、情報処理安全確保支援士には倫理が求められますので、以下の文章にも目を通しておいたほうが良いでしょう。

情報処理安全確保支援士倫理綱領