Wordpress Lab

VPSの学習記録 1

今回の目的

学習環境

Xserver VPS(Ubuntu 24.04)

SSHログイン

管理パネルの「パケットフィルター設定」にてSSHポートを開放

ポートを開放しておかないとSSH接続できない。

pemファイルをダウンロードし、所定のディレクトリに配置

e.g.) ~/.ssh

pemファイルのパーミッション設定

chmod 400 ~/.ssh/ssh-key.pem

SSH接続

ssh -i ~/.ssh/ssh-key.pem root@000.000.000.000

初回接続時には以下のようにメッセージが出るが、続行する。

The authenticity of host '000.000.000.000 (000.000.000.000)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

時間を置くとタイムアウトしてしまう?ので手早く手続きする。

Warning: Permanently added '000.000.000.000' (ED25519) to the list of known hosts.
Connection closed by 000.000.000.000 port 22

2回目以降の接続時には上記のようなメッセージは出ない。以下のようになればSSH接続確立。

Last login: Tue Apr 30 15:20:24 2024 from 111.111.111.111
root@x000-000-000-000:~# 

Apacheのインストール

パッケージ更新

sudo apt update

Apacheのインストール

-y オプション:すべての選択肢に対して自動で yes とする。

インストールには数分かかるので気長に。

sudo apt install apache2 -y

Apacheの起動と自動起動設定

sudo systemctl start apache2
sudo systemctl enable apache2

Apacheの起動確認

sudo systemctl status apache2

Active: active (running) と応答があればOK.

ブラウザでアクセスしてみる・・・

http://000.000.000.000 にアクセスするが、接続が確立されないので、以下を確認

ファイヤーウォールによる制限の有無

sudo ufw status

→ Status: inactive となり、ファイヤーウォールは原因でない。

Apacheがポート80で待ち受けているかの確認

sudo ss -tlnp | grep :80


LISTEN 0      511                *:80              *:*    users:(("apache2",pid=30867,fd=4),("apache2",pid=30866,fd=4),("apache2",pid=30864,fd=4))

→ 問題なし。

WEBアクセスのポート開放

→ Ubuntuの初期ページが表示された(成功)

独自のhtmlファイルを設置してみる

デフォルトページをリネーム(バックアップ)

sudo mv /var/www/html/index.html /var/www/html/index.html.bak

独自htmlファイルを設置(echo ‘…..’ | sudo tee /var/www/html/index.html

echo '<!DOCTYPE html><html><head><title>MY VPS</title></head><body><h1>Hello, VPS!</h1><p>This is my HTML page</p></body></html>' | sudo tee /var/www/html/index.html
<!DOCTYPE html><html><head><title>MY VPS</title></head><body><h1>Hello, VPS!</h1><p>This is my HTML page</p></body></html>

→ 独自htmlファイルの表示に成功

独自ドメインの設定

ドメイン設定ファイルの作成

sudo nano /etc/apache2/sites-available/yourdomain.com.conf

作成したら、以下内容を記載

<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/yourdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain_access.log combined
</VirtualHost>

保存: Ctrl + O → Enter
終了: Ctrl + X

設定を有効化

sudo a2ensite yourdomain.com.conf

*a2ensite : Apache2 Enable Site の略

Apacheをリロード

sudo systemctl reload apache2

SSL(Let’s Encript)の導入

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com

→ SSL化完了

新規ユーザーの追加

sudo adduser yourname

パスワードは仮のものでOK。(後ほど公開鍵ログインにするため)

新規ユーザーにsudo権限付与

sudo usermod -aG sudo yourname

rootの鍵をコピー

sudo mkdir /home/yourname/.ssh
sudo cp /root/.ssh/authorized_keys /home/yourname/.ssh/
sudo chown -R yourname:yourname /home/yourname/.ssh
sudo chmod 700 /home/yourname/.ssh
sudo chmod 600 /home/yourname/.ssh/authorized_keys

ターミナルで別ウインドウを立ち上げ、ログイン確認

ssh -i ~/.ssh/your-key.pem yourname@000.000.000.000

rootログインを無効化

sudo nano /etc/ssh/sshd_config

PermitRootLoginの項目を探し、no を設定。

PermitRootLogin no

*Xserver VPSの場合、デフォルトでは prohibit-password(パスワードログイン禁止、SSHログイン可)になっている。

SSHの再起動

sudo systemctl restart ssh

→ 以降はrootでのログインは不可に

パスワードログインの無効化

sudo nano /etc/ssh/sshd_config

→ PasswordAuthentication no に設定する(Xserver VPSでは、デフォルトでnoになっている)

ファイヤーウォールのインストール

まずインストール状況の確認

sudo ufw status

-> Status: inactive

インストール実行

sudo apt update
sudo apt install ufw

SSHを許可(必ずファイヤーウォール有効化前に実施しておく。さもないとSSH接続ができなくなる

sudo ufw allow ssh

WEBアクセス用ポートを許可

sudo ufw allow http
sudo ufw allow https

ファイヤーウォールの有効化

sudo ufw enable

*sudo ufw reset で設定リセットできる。

Fail2Banの導入

インストール

sudo apt update
sudo apt install fail2ban

設定ファイルのコピーと編集

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd]の項目を編集

[sshd]
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
#ブロックする秒数
bantime = 600
#ログイン失敗が何秒以内に起きたら対象とするか
findtime = 600
#何回失敗したらブロックするか
maxretry = 5

fail2banの起動と自動起動設定

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

動作確認

sudo fail2ban-client status

個別の jailの動作確認

sudo fail2ban-client status sshd

← 一覧に戻る