みなさんこんにちは!UbuntuにSSHしたいなと思ったことはありませんか?また、SSHはできたけど設定などいまいちわからず適当にやってしまったなんてことはないですか?
UbuntuにSSHするときは基本的にデフォルトではセキュリティはめちゃめちゃ低いです。適当に設定していてはいつ破られるかわかりませんね。そこで本日は、
- sshとは
- 実際にSSHする方法
- 最低限のセキュリティ対策
ということを初心者の方でもわかりやすいよう、丁寧に解説していきますので、UbuntuのSSHを考えている方は是非参考にしていただければ幸いです!
sshとは
それではまずは、簡単にSSHとはということについてみていきましょう。sshとはSecure Shellの略で、安全にリモートコンピュータと通信するためのプロトコルです。
もっとわかりやすくいうと、遠隔でサーバやマシンにアクセスするときにより安全に行うための通信方法です。
実際の開発現場や、個人の開発でもSSHすることは非常に多く、SSHのスキルはエンジニアとしてほぼ必須といえるので必ずマスターしておきましょう。
マシンの説明
実際にSSHする前に、今回使うマシンの説明をしておきます。今回はSSHする側にMacOS、SSHされる側に、Ubuntu18.04LTSを用いていきます。
また、Ubuntu環境はVirtualBoxにて構築していますが、実機にて構築している方も大きく変わるところはありませんので、気にせず進めていただけたら幸いです。
余談ですが、新たにUbuntuを導入したいという方は迷わず18.04LTSを使いましょう。最新でかつ5年間のサポートがついているので今導入するならこちらを選んでおけば間違いありませんね。
導入方法は以下の記事で説明しているので参考にしてみてください。
SSHできるようにしよう!
さて、それでは、ここから実際にSSHするまでの方法を見ていきます。
SSH Serverを導入しよう
SSHは名前から見てわかる通りShellの一種なので、SSHするには専用のServerをインストールする必要があります。今回はopenssh-serverというものをインストールしていきます。なのでUbuntu側でターミナルを開き、
このように
sudo apt-get install openssh-server
としてやりましょう。本来はこの段階で、IPアドレスを確認すればSSHできるようになります。しかし、今回はVirtulBoxを使っているのでそっちの方を設定していきます。
VirtualBoxを使ってない方は飛ばして、次次章SSHするから参照してください。
VirtualBoxをSSHできるように設定しよう
画像のように、設定、ネットワーク、高度な設定、ポートフォワーディングを選択しましょう。
画像のように、右側の追加から適宜設定しましょう。
SSHする
VirtulaBoxの設定が終わったところでMacの方でSSHしていきます。今回SSHに使う情報としては、
- Ubuntuの名前: kai
- IPアドレス: localhost
- ポート: 3434
なので、「ssh 名前@IPアドレス -p ポート」として各自適切なものを挿入して、SSHしていきます。
kai:~ kai$ ssh kai@localhost -p 3434 The authenticity of host '[localhost]:3434 ([127.0.0.1]:3434)' can't be established. ECDSA key fingerprint is SHA256:y+409QUogpukLnBDEe0RUAVSHIl0m6GgY9WiWuJg21k. Are you sure you want to continue connecting (yes/no)? yes
yes,noを聞かれるので、yesとしてエンターを押します。また、VirtualBoxを使っていない方は、ポートはまだ設定していないと思うのでなくて大丈夫です。すると、パスワードをもとめられ、
このように、SSHできています。
セキュアな設定をしよう
さて、実際にSSHしてみましたが、現在の状態ではセキュリティがかなり低いです。VirtualBox以外の場合はポートも設定していませんからね。最低限やるセキュリティ対策は以下の4つです。
- ポートの設定
- rootログインの禁止
- 鍵認証のための鍵作成
- パスワードログインの禁止
ポートの設定は、VirtualBoxであればすでに終わっていますが、それ以外の方のために説明していきます。
ポートの設定
ポートの設定は「/etc/ssh/sshd_config」にて行います。Ubuntuにて、「vi /etc/ssh/sshd_config」として、編集していきましょう。
このように、# Port 22となっているところがあるので、コメントアウトして、1-65535の中で好きなものを設定しましょう。とはいえ、1-1023番はウェルノンポートと言って、主要なプロトコルが登録されています。
また、1024~49151番は登録ポートと言って、他アプリケーションが登録していることもあるので競合を避けるためにも、1-1023、1024~49151番は使わないほうが良いでしょう。
今回はテスト用で他アプリケーションなどは使っていないので利用していますが、本番環境では49152-65535番を利用するようにしましょう。
rootログインの禁止
rootは全ての権限を持っていて危険なので、「vi /etc/ssh/sshd_config」の後に「/root」と打つと、検索できるので、
PermitRootLoginをコメントアウトし、noにしましょう。
鍵認証
次に鍵認証を行なっていきます。手順的には、Macの側で秘密鍵を作成し、Ubuntu側に公開鍵を渡します。それによってMac側の鍵とUbuntu側の鍵が一致してログインできるようになります。
実際の鍵の作り方は以下の記事で書かれているので参考にしてみてください。
パスワードログインの禁止
さて、最後に鍵認証ができるようになった今、パスワードでログインする必要はないので塞いでしまいましょう。同じように、「vi /etc/ssh/sshd_config」の後に「/Pass」と打つと、検索できるので、
PasswordAuthenticationをコメントアウトしnoにしましょう。
まとめ
いかがでしたか。ubuntuへのSSHから、最低限のセキュリティ設定まで詳しく見てきました。ローカルでの運用ではなく、本運用する場合は必ずセキュリティ設定を行っておきましょう!それでは!!