【Blogサーバ構築①】Ubuntu MATE 20.04 のSSH接続とファイアウォール設定

色々なページのブログの立ち上げ方を見ていると、説明不足だったり情報が古くなっているものもあったので、全10回でブログの立ち上げ方をまとめました。

  1. 【Blogサーバ構築①】Ubuntu MATE 20.04 のSSH接続とファイアウォール設定 ( ← 本記事 )
  2. 【Blogサーバ構築②】nginxでサーバ化してWordPressをインストール
  3. 【Blogサーバ構築③】WordPressへのログインと初期設定
  4. 【Blogサーバ構築④】”IPアドレス(or ドメイン名)/wordpress” 表示を ”IPアドレス(or ドメイン名)” 表示にしてすっきりさせる
  5. 【Blogサーバ構築⑤】WordPressアドレスを間違えた時の対応
  6. 【Blogサーバ構築⑥】無料/有料ドメインを取得してみる
  7. 【Blogサーバ構築⑦】DDNSサービスでドメイン名とIPアドレスを紐づける
  8. 【Blogサーバ構築⑧】ルーターのポート開放をして、外部からのアクセスを許可する
  9. 【Blogサーバ構築⑨】WordPress アドレス (URL)をIPアドレスからドメイン名に変更する
  10. 【Blogサーバ構築⑩】Certbotでhttps対応(sslの設定) 

今回のまとめ

  • SSH接続はsshパッケージ、ファイアウォールはufwパッケージで実現でき、どちらも最初からUbuntuにインストールされている。
  • 外部に公開する際にSSH接続のポートが初期設定の22番のままだと、不正アクセスされる可能性が上がるので、SSH接続のポートは任意の番号に変更しておく方が良い。

SSH接続とは

大まかに言うとネットワーク上のサーバに他のPCからアクセスすることです。アクセスする際はユーザ名とパスワードで認証して接続するか、サーバ側、アクセスするPC側でお互い鍵となるファイルを持っておき、鍵を照合して接続する方法があります(公開鍵認証)。後者の方が安全ですが応用編なので、本記事では前者のパスワード認証でSSH接続します。

SSH接続の設定方法

サーバ側のPCのterminalから下記コマンドを入力します。が、Ubuntu MATE 20.04では元々インストールされているとの情報がでてきました。

$sudo apt update
$sudo apt install ssh

インストール後は自動起動してくれます。ちなみに、下記のようなコマンドで起動停止させることができます。

  1. sshの起動
  2. sshの停止
  3. システム起動時にsshが起動するように設定
  4. システム起動時にsshが起動しないように設定
  5. sshの起動状態の確認
1. $sudo systemctl start ssh
2. $sudo systemctl stop ssh
3. $sudo systemctl enable ssh
4. $sudo systemctl disable ssh
5. $sudo systemctl status ssh

正常にsshのサービスが稼働していれば5.のコマンドを打つと下記のような画面が出てきます。

ssh が正常に動いている例

SSHで接続するにはサーバとなっているPCのIPアドレスを知る必要があります。個人的にはifconfigというコマンドに慣れているのでこちらを使用します。

まずは下記コマンドを入力してifconfigを含むパッケージをインストールしてからifconfigを実行します。実行すると下の画像の赤枠のところにIPアドレスが出てきます。

$sudo apt install net-tools
$ifconfig
ifconfigコマンド実行後

最後に、サーバ以外のPC(Linux)から接続できるか確認します。LinuxのPCから接続する例を挙げます。(Windowsでもコマンドプロンプトでwslと入力するとUbuntuを使用することができます。)

サーバ以外のPCから下記コマンドを入力します。するとサーバのPCのユーザ名に応じたパスワードが聞かれますので、パスワードを入力すると接続できます。

$ssh 'サーバーのPCのユーザ名'@'192.168.xx.xx(先ほど確認したIPアドレス)'

接続すると下記のような文字が表示されます。接続先のPCの情報です。3個もセキュリティアップデートがあると表示されています。アップデートしないと。

SSHのポートを変更する

 IPアドレスをたどって接続するのですが、サーバにはいくつもポートと呼ばれるものがあります。ポートには割り当てがあり、初期設定ではSSHは22番ポートを使っています。SSHで接続できると色々とサーバーの中身を変更したり乗っ取ったりできてしまう為、サーバを外部に公開した際にデフォルトの22番ポートからサーバに不正アクセスしようとしてくる人(プログラム)がいます。ポートを変えることで不正アクセスされる可能性を下げることができるはずです。

 下記の手順でsshのポートを変更します。0~1023はサーバのアプリケーションに割り当てられることになっているため、1024~65535までのどこかのポート番号とするのが良いようです。今回は65535 に変更してみます。

 まずはSSH接続の設定をしているファイルを編集します。22番ポートを消してしまうとアクセスできなくなる可能性があるので、まずは22番ポートを残したまま新ポートのテストをし、最後に22番ポートを消します。

$sudo vim /etc/ssh/sshd_config

上記コマンドでsshd_configを開きます。キーボードのiを押して挿入モードにしたら、#Port 22の下にPort 22 とPort 65535を追記します。#はコメントの意味なので#Port 22は消しても大丈夫です。「esc」キーで挿入モードを終了し、「:wq」で変更を記録します。

sshd_configの設定

その後、下記コマンドでsshdを再起動します。

$sudo systemctl restart sshd

次に、一旦ssh接続を終了し、新しいポートで接続を試みます。ここで-pはポート番号の指定オプションで、65535を指定しています。

$ssh -p 65535 'サーバーのPCのユーザ名'@'192.168.xx.xx(先ほど確認したIPアドレス)'

この設定で接続できればポート番号の変更がうまくいっているということになります。接続できない場合は設定ファイルがうまく保存できていなかったり、ファイアウォールが効いてしまっている可能性があります。

あとは先ほどのsshd_configを再度編集し、Port 22を#Port 22に変更することで、コメントアウト(無効化)した後、systemctl restart sshdでsshdを再起動すればOKです。

ファイアウォールの設定をする

 サーバを外部に公開しない場合や、ルータでポートフォワーディングする場合はあまり有用でありませんが、(ルーターでポートフォワーディングする場合はルータが指定のポート以外のアクセスを遮断してくれます)ファイアウォールの設定の仕方です。ファイアウォールは65535個設定できるポートのうち、接続を許可するポートとアクセスを拒否するポートを設定するのに使用します。Ubuntuにはufwというファイアウォールが最初からインストールされておりますが、初期状態では無効化されていると思います。

今回は下記コマンドで先ほど設定したssh接続用のポート(65535)とhttp接続用のポート(80), https接続用のポート(443)を許可した後、ufwのサービスを有効にしたいと思います。

$sudo ufw allow 65535
$sudo ufw allow 80
$sudo ufw allow 443
$sudo ufw enable

上記コマンドを打った後、statusコマンドで状態を確認します。

$sudo ufw status
ufwの状態確認

このような画面がでれば正常にufwが働いています。

※ちなみに、$sudo ufw default denyですべてのポートをクローズする設定にできます。

以上です。ご覧いただきありがとうございました。

今回は下記のリンク先の記事を参考にさせて頂きました。ありがとうございました。