さくらのVPSを利用してWordPressのサイトを構築したので,手順のメモ

思い出しながらメモしているので漏れがあるかもしれません...

さくらのVPS 構成

1G 構成のものを利用しています

スタートアップスクリプトで更新とUS配列のキーボードを使用するオプションを設定しました

CPU 仮想2Core
メモリ 1GB
SSD 100GB
OS Ubuntu 20.04

また,VPSにsshするための公開鍵を生成して登録しました

ssh-keygen -t ecdsa -b 521 -C "sakura_vps"

vps側の設定で,使用するPortを許可する

デフォルトでTCP 80 Openになっている,HTTPSでもアクセスするように変更するのでTCP 443も追加する

ドメイン契約

お名前.comで新規ドメインを取得しました

契約時にさくらインターネット指定のネームサーバに変更しました

さくらインターネット指定ネームサーバー

ネームサーバー1 ns1.dns.ne.jp
ネームサーバー2 ns2.dns.ne.jp

VPSの更新

VPSにsshして作業します

パッケージの更新

sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt autoclean

sshのrootログインを禁止

sudo vim /etc/ssh/sshd_config
~省略~
#PermitRootLogin yes > PermitRootLogin no
~~ 

sudo systemctl restart sshd.service
//rootユーザでsshログインできなくなっていることを確認する

WordPressのインストール

Webサーバ Apache2

Server version: Apache/2.4.41 (Ubuntu)
Server built: 2023-01-23T18:36:09

PHP PHP 7.4.3-4ubuntu2.17 (cli) (built: Jan 10 2023 15:37:44) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3-4ubuntu2.17, Copyright (c), by Zend Technologies
DB MariaDB
mysql Ver 15.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
WordPress ver 6.1.1
// apache2 install
sudo apt install apche2
sudo systemctl enable apache2
sudo systemctl start apache2

// php install
sudo apt install php php-mysql

// MariaDB install
sudo apt install mysql-server mysql-client
sudo systemctl enable mariadb
sudo systemctl start mariadb

// WordPress install
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress /var/www/html ; cd /var/www/html
sudo chown -R www-data:www-data

設定の変更

// phpのファイルアップロード上限変更(任意のサイズへ
sudo vim /etc/php.ini
~~~
post_max_size = 8M > post_max_size = 128M
...
upload_max_filesize = 2M > upload_max_filesize = 128M
~~~

// DBの設定
mysql_secure_installation
~passwordやオプションが聞かれるので入力する~

// WordPress用データベースを作成
上記で作成したアカウントでDBにログインする
wordpress/passwordは任意
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;GRANT ALL ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

WordPressの初期設定

http://{vpsのIPアドレス}/wordpress

WordPressの初期画面が表示されるので,データベースの登録やWordPressのユーザ名,パスワード等を入力する

ドキュメントルートの変更

/etc/apache2/apache2.conf
wordpressを展開したPath設定を追加する
<Directory "wordpress path"> 
   Options Indexes FollowSymLinks 
   AllowOverride None 
   Require all granted 
</Directory>

/etc/apche2/sites-available/000-default.conf
//ドキュメントルート変更
#DocumentRoot /var/www/html 
DocumentRoot /var/www/html/wordpress

sudo systemctl restart apache2

http://{vps ip address}/がドキュメントルートになっていることを確認

*index.phpへ遷移する

SSL証明書の導入

無料SSLのLet’s Encryptを使う(certbot)

sudo apt install certbot python3-certbot-apache

sudo certbot --apache
~自動設定が開始される~
メールアドレス,規約のど同意,ドメインなど

sudo systemctl restart apache2

https://{vps ip address}でアクセスできることを確認

ドメインの設定

WordPress管理画面からcertbotで入力したドメインを設定

・WordPressアドレス

・サイトアドレス

https://{domain}でアクセスできることを確認

セキュリティプラグインと更新設定

SiteGuard

LimitAttempts

cron //自己証明書の定期更新とパッケージアップデートを実施

sudo apt install mail
sudo crontab -e
00 04 01 * * certbot renew 2>&1 | mail -s "Let's Encrypt update information" {mail address} && systemctl restart apache2
00 03 * * * apt install unattended-upgrades 2>&1 | mail -s "Security Update" {mail address}

・ SiteGuardのプラグインを使用して,管理者用のページを別のURLからリダイレクトするように変更
・SiteGuardのプラグインを使用して,ログイン失敗時/成功時にメール通知,失敗のリトライ制限を設定

 

 

xmlrpc.phpを無効化

wordpressと同じディレクトリにある.htaccessに下記を追記

スマホのアプリから記事の更新等を行わないため無効化(このURL宛にかなり攻撃が来ていた)

 

 

参考にしたサイト

ネコでもわかる!さくらのVPS講座

Ubuntuのシステム更新

mysql_secure_installation

apacheでのWordPressをssl化するためのメモ

WordPressのログインURLを特定(または変更やロックダウン)するには

ubuntuでapache2のDocumentRootを変更するまで

【WordPressセキュリティ対策】xmlrpc.phpを無効化する方法