0
0

【日記】Ubuntu Severで自宅サーバを作る(1)

Last updated at Posted at 2024-09-16

動機

 筆者は、ある私立大学の情報学部に所属する2年生である。自宅サーバを作ろうと考えた理由は大きく二つで、インフラとサイバーセキュリティを学ぶため。そして、ポートフォリオのようなものをwebサーバに構築したいという希望である。知識0からであるため方法を模索しながら慎重に進める予定である。

 尚、現時点でのスキルはITパスポート、セキュマネに加え、一部分野において基本情報技術者程度の知識と、簡単なWebサイトが制作できる程度のHTML,CSS,JavaScriptの技能、mySQLで単純なRDBが設計できる程度の技能、PhotoshopとIllustratorで広告が作れる技能程度である。

必要なものの準備

 利用するホストはMacBook Air2 256GB メモリ8GB。低スペックNPCなので本格的な運用はできないだろうと想定した上で実験的に行う。VMware Fusion Pro と Ubuntu Server 24.04.1 LTS ARM をダウンロードする。

Ubuntu Server をセットアップ

 IPアドレスはIPv4固定長を設定する。自宅のルータが192.168.10.1/24であることと、DHCP割当アドレスが192.168.10.100から.200であることを確認した。サーバには192.168.10.2/24を割り当てる。ここでなぜかネットワークやキーボードの接続が切断されたので、初めからセットアップをやり直す。作り直す際、ついでにネットワーク接続設定をNATではなくブリッジ接続にした。ブリッジ接続にすべき理由は調べると様々あったが全てを理解することはできなかったので後日詳細を見る。二度目も同じところでネットワークが切断されたので原因を探ったが、切断されてしまうのは正常だということが判明した。

スクリーンショット 2024-09-15 17.29.45.png

OpenSSHはあとで入れるのでここではインストールせずに進める。また、Apacheもあとでインストールする。インストールが完了してリブートしたら先ほど設定したrootユーザでログインする。

Apacheをインストールする

 まず、システムのパッケージリストを最新の状態にする。

sudo apt update

 次に、Apacheをインストールする。

sudo apt install apache2

 ここでブラウザからIPアドレスを検索すると...

スクリーンショット 2024-09-15 22.18.06.png
ローカルネットワーク内に限り、Webサイトを表示することに成功した。続いて、自作したWebページのhtml,css,javascriptを表示する。

htmlを配置する

 複数のブログを拝見したところ、パスに関する説明は多々あったが、ホストにあるhtmlをゲストに渡す方法が書いていなかったため、LLMを用いて調べ、まずはscpコマンドを用いてファイルを転送することにした。Ubuntuのディレクトリでvar/www/htmlにサンプルhtlmファイルがあることを確認した。次に立案した手順を示す。

  1. 自作htmlをUbuntuに転送する
     1.1. UbuntuにOpenSSHをインストールする
     1.2. OpenSSSHの各種設定をする
     1.3. ホストからゲストへ自作htmlを転送する
  2. パスを接続する
  3. htmlが正常に動作するか確認する
  4. 同様にCSS,Javascriptを動かす方法を調べ転送する

1.1. OpenSSHをインストール

はじめにOpenSSHをインストールする。

sudo apt update
sudo apt install openssh-server

動作しているか確認する。

sudo systemctl status ssh

自動で動くはず......ダメそう。
スクリーンショット 2024-09-16 10.26.30.png
手動で起動して自動化する。

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

正常に動作した。
スクリーンショット 2024-09-16 10.33.13.png

1.2. OpenSSHの各種設定をする

次に、今回のファイル転送と無関係ですがOpenSSHの設定をしていく。内容は以下のとおりに立案した。

  • ファイアウォールの設定
  • rootユーザのSSHログインの無効化
  • 公開鍵認証方式の導入
  • パスワード認証の無効化(検討中)
  • SSH接続テスト
ファイアウォールの設定

OpenSSHの設定のついでにファイアウォールを実装します。ファイアウォール自体インストールしていないのでUFWをインストールします。念の為UFWがインストールされているのか確認したところ、

sudo apt list --installed | grep ufw

に対し、noble と返ってきた。同時に警告メッセージ

WARNING: apt does not have a stable CLI Interface. Use with caution in scripts.

が表示されたが、これはAPIコマンドラインインターフェースが安定しないことを警告しているものだと判明した。コマンドが正常に機能している限り無視しても問題ないらしい。UFWをインストール&起動する。

sudo apt update
sudo install ufw
sudo ufw status
sudo ufw enable
sudo ufw status

active になったので完了。続いて、SSHポート(通常22番)を開放してあげます。

sudo ufw allow ssh
sudo ufw status

スクリーンショット 2024-09-16 12.36.42.png
稼働を確認した。遠回りになったがサイバー攻撃の多くはIoT機器を狙った22番ポートに行われるので、セキュリティ上ポート番号を変えるべきである。UFW、SSHそれぞれ変更する。

sudo nano /etc/ssh/sshd_config

から Port:22 を Port:2222 に変更して保存する。
次に、UFWで許可するポート番号を変更する。

sudo ufw deny 22/tcp
sudo ufw allow 2222/tcp
sudo ufw status

これで22番ポートではなく2222番ポートに変更できた。
スクリーンショット 2024-09-16 15.05.29.png
最後に新しいポート番号で接続確認をする。

ssh -p 2222 ubuntu@192.168.10.2

ホストのターミナルで上記のプロンプトを実行したが接続に失敗した。
OpenSSHは確かに2222番ポートに書き換えてあり、activeである。また、UFWも2222番ポートは許可されており、activeである。原因不明。
ポート番号を戻したり、sshやufwの設定をし直したりするも改善せず。ところが、ホストのターミナルに入力するプロンプトを

ssh ubuntu@192.168.10.2

に変えたところ成功した。
スクリーンショット 2024-09-16 21.46.42.png
ポート番号をもう一度2222にして試みる。2222ではうまくいかなかった。1日調べても原因がわからなかったため、とりあえず22で進めることにする。

フローチャート

総評は完遂後に行う。
1.VMware,Ubuntu Serverをダウンロード
2.VMwareでUbuntu Serverをインストール
 2.1. IPv4固定長の設定
3.Apacheをインストール
4.Apacheで自作Webサイトを表示
 4.1. 自作htmlをUbuntuに転送する
  4.1.1. UbuntuにOpenSSHをインストールする
  4.1.2. OpenSSHの各種設定をする
   4.1.2.1 ファイアウォールの設定
    4.1.2.1.1. ファイアウォールのインストール
    4.1.2.1.2. ポート番号の変更         ←今ココ
   4.1.2.2 rootユーザのSSHログインの無効化
   4.1.2.3 公開鍵認証方式の導入
   4.1.2.4 パスワード認証の無効化
   4.1.2.5 SSH接続テスト
  4.1.3. ホストからゲストへ自作htmlを転送する
 4.2. パスを接続する
 4.3. htmlが正常に動作するか確認する
 4.4. 同様にCSS,Javascriptを動かす方法を調べ転送する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0