Help us understand the problem. What is going on with this article?

Amazon Lightsail により数クリックでWordPressサーバを作成する + WordPressサーバ用のiptables設定(接続元IPアドレスによるhttp,https,sshの接続制限)

More than 3 years have passed since last update.

はじめに

少し前になりますが「Amazon Lightsail」というVPSサービスの提供が開始されました。

https://aws.amazon.com/jp/blogs/news/amazon-lightsail-the-power-of-aws-the-simplicity-of-a-vps/

Amazon Lightsailを使うと、WordPress, LAMPスタック, Node.js等がインストールされた仮想マシンを数分で簡単に作成出来るので便利です。

本記事では、以下の手順について記します。これにより、Amazon Lightsailにより、指定したIPアドレスやネットワークからのみ閲覧可能なWordPressサーバを簡単に作成する事が可能です。

 ・Amazon LightsailでWordPressサーバを作成する手順。
 ・Amazon Lightsailで作成したWordPressサーバに対して、iptablesにより指定したポート + 指定したIPアドレスやネットワークのみアクセスを許可する設定

本記事の補足

2017年2月26日時点では、Amazon Lightsailで作成した仮想マシンはhttp,https,sshといったポート単位でしかアクセス制限をかける事が出来ません。

Amazon Lightsailの仮想マシンでは、EC2にようにセキュリティグループを適用出来ない為、ポート単位 + IPアドレス単位のアクセス制限を適用出来ず、仮想マシンへアクセス可能なIPアドレスやネットワークを制限する事は出来ません。

スクリーンショット 2017-02-26 21.10.27.png

本記事では、Amazon Lightsail仮想マシンを作成し、iptablesで指定したIPアドレスやネットワークからのみhttp,https,ssh接続を許可する手順を記します。

iptablesを設定する環境について

iptablesを設定するAmazon Lightsail仮想マシンのOSはUbuntuになります。

root@ip-172-26-XXX-XXX:~# uname -a
Linux ip-172-26-XXX-XXX 3.13.0-107-generic #154-Ubuntu SMP Tue Dec 20 09:57:27 UTC 2016 x86_64 x86_64 x86_64 GN
U/Linux

Amazon LightsailでWordPressサーバを作成する手順

(1) AWSマネジメントコンソールへログインします。

スクリーンショット 2017-02-26 21.14.39.png

(2)「すべてのサービス」->「コンピューティング」->「Lightsail」をクリックします。

スクリーンショット 2017-02-26 18.07.15.png

(3) Lightsailコンソールが表示されます。「Let's get started」をクリックします。

(4) Lightsailコンソールで、作成したいLightsail仮想マシンの種類を選択します。「Pick your instance image」で「WordPress」を選択します。

スクリーンショット 2017-02-26 18.13.23.png

(5) Lightsailコンソールを下にスクロールさせて、作成するLightsail仮想マシンのインスタンスプランを選択します。「Choose your instance plan」で「$ 5 month」を選択します。

スクリーンショット 2017-02-26 18.15.39.png

(6) Lightsail仮想マシンを作成するリージョンを選択します。「Change zone」をクリックします。

スクリーンショット 2017-02-26 18.17.39.png

(7)「Select Availability Zone」で「Zone A (us-east-1a)」を選択します。

なお、2017年2月26日時点では、us-eastリージョンしか選択出来ません。

スクリーンショット 2017-02-26 18.20.14.png

(8)「Create」をクリックして、Lightsail仮想マシンの作成を開始します。

スクリーンショット 2017-02-26 18.20.32.png

(9) WordPressがインストールされたLightsail仮想マシンが作成されます。インスタンス名(例:WordPress-512MB-Virginia-1)をクリックします。

test1.png

作成したLightsail仮想マシンのWordPressサーバのIPアドレスを確認します。
本記事では例として、Lightsail仮想マシンのIPアドレスを「54.173.XXX.XXX」と表記します。

(10) Lightsail仮想マシンの設定画面が表示されます。「Connect using SSH」をクリックして、Lightsail仮想マシンへsshログインします。

test2.png

(11) Lightsail仮想マシンへsshログイン出来ます。sshログインユーザやパスワード入力は不要で、sshでLightsail仮想マシンへログインした状態の画面が表示されます。

スクリーンショット 2017-02-26 18.29.53.png

(12) Lightsail仮想マシンのWordPress管理画面の初期パスワードを確認します。

Lightsail仮想マシンのWordPress管理画面へログインする初期パスワードを確認します。パスワードは/home/bitnami/bitnami_application_passwordファイルに記載されています。

bitnami@ip-172-26-XXX-XXX:~$ cat /home/bitnami/bitnami_application_password 
初期パスワード
bitnami@ip-172-26-XXX-XXX:~$ 

スクリーンショット 2017-02-26 22.20.58.png

(13) 作成したLightsail仮想マシンのWordPressページへアクセスし、WordPressページが閲覧出来るか確認します。

http://54.173.XXX.XXX/

スクリーンショット 2017-02-26 22.18.51.png

(14) Lightsail仮想マシンのWordPress管理画面へログイン出来るか確認します。

WordPressの管理画面URLへアクセスします。

http://54.173.XXX.XXX/wp-login.php

 ユーザ名: user
 パスワード: (12)で/home/bitnami/bitnami_application_passwordファイルに記載されていたパスワードを入力します。

スクリーンショット 2017-02-26 22.24.59.png

WordPressの管理画面へログイン出来る事を確認します。

スクリーンショット 2017-02-26 22.27.21.png

Amazon Lightsailで作成したWordPressサーバにiptablesでネットワークアクセス制限を設定する手順

(1) Amazon Lightsail仮想マシンへsshログインしたら、rootユーザへスイッチします。

以下のコマンドを実行します。rootユーザへスイッチします。

bitnami@ip-172-26-XXX-XXX:~$ sudo su - 

スクリーンショット 2017-02-26 18.47.29.png

Amazon Lightsail仮想マシンのOSを確認します。
WordPressサーバの場合、仮想マシンのOSはUbuntuです。

root@ip-172-26-XXX-XXX:~# uname -a
Linux ip-172-26-XXX-XXX 3.13.0-107-generic #154-Ubuntu SMP Tue Dec 20 09:57:27 UTC 2016 x86_64 x86_64 x86_64 GN
U/Linux
root@ip-172-26-XXX-XXX:~# 

(2) Amazon Lightsail仮想マシンにiptables設定保存用コマンドをインストールします。

以下のコマンドを実行して、iptables-persistentをインストールします。

root@ip-172-26-12-149:~# apt-get install iptables-persistent

「Save current IPv4 rules」と表示されるので「Yes」をクリックします。

スクリーンショット 2017-02-26 18.59.56.png

「Save current IPv6 rules」と表示されるので「No」をクリックします。

スクリーンショット 2017-02-26 19.01.02.png

iptables-persistentコマンドがインストールされます。

スクリーンショット 2017-02-26 19.02.07.png

(3) Amazon Lightsail仮想マシンにiptablesによるネットワークアクセス制限を設定します。

前述の手順でiptables-persistentをインストールすると、/etc/iptables/rules.v4というiptables設定ファイルが作成されます。

root@ip-172-26-XXX-XXX:~# ls -lrta /etc/iptables/
total 12
drwxr-xr-x 92 root root 4096 Feb 26 10:01 ..
-rw-r--r--  1 root root  199 Feb 26 10:01 rules.v4
drwxr-xr-x  2 root root 4096 Feb 26 10:01 .
root@ip-172-26-XXX-XXX:~# 

以下のコマンドを実行して、iptablesによるアクセス制限を行います。

 ・以下のiptables設定では、指定したIPアドレスやネットワークのみからAmazon Lightsail仮想マシンへのhttp,https,ssh接続を許可するようにしております。

 ・「72.21.217.0/24」からのssh接続を許可しているのは、Amazon Lightsailコンソールで「Connect using SSH」をクリックした時、Lightsail仮想マシンへのsshログインを許可する為の設定です。72.21.217.0/24からの接続を許可しないと、どのIPアドレスやネットワークからAmazon Lightsailコンソールの「Connect using SSH」をクリックしても、Lightsail仮想マシンへsshログイン出来なくなります。

 ・DNS名前解決の為、Amazon Lightsail仮想マシンから外部へのDNS通信(ポート53)は全て許可しております。

 ・時刻同期の為、Amazon Lightsail仮想マシンから外部へのNTP通信(ポート123)は全て許可しております。

Lightsail仮想マシン(WordPressサーバ)のiptables設定
root@ip-172-26-XXX-XXX:~# iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

root@ip-172-26-XXX-XXX:~# iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 192.0.2.0/24 --dport 22 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 198.51.100.0/24 --dport 22 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 203.0.113.11/32 --dport 22 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 72.21.217.0/24 --dport 22 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp --dport 22 -j REJECT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 192.0.2.0/24 --dport 80 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 198.51.100.0/24 --dport 80 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 203.0.113.11/32 --dport 80 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp --dport 80 -j REJECT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 192.0.2.0/24 --dport 443 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 198.51.100.0/24 --dport 443 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp -s 203.0.113.11/32 --dport 443 -j ACCEPT
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -p tcp --dport 443 -j REJECT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -i lo -j ACCEPT

root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 10.0.0.0/8 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 172.16.0.0/12 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 192.168.0.0/16 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 127.0.0.0/8 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 169.254.0.0/16 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 192.0.2.0/24 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 224.0.0.0/4 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -s 240.0.0.0/5 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -d 0.0.0.0/8 -j DROP
root@ip-172-26-XXX-XXX:~# iptables -A INPUT -d 255.255.255.255/32 -j DROP

(4) Amazon Lightsail仮想マシンでiptablesによるアクセス制限を有効化します。

以下のコマンドを実行します。

root@ip-172-26-XXX-XXX:~# /etc/init.d/iptables-persistent save
 * Saving rules...        
 *  IPv4...        
 *  IPv6...       [ OK ] 
root@ip-172-26-XXX-XXX:~# 
root@ip-172-26-XXX-XXX:~# /etc/init.d/iptables-persistent reload
 * Loading iptables rules...        
 *  IPv4...        
 *  IPv6...       [ OK ] 
root@ip-172-26-XXX-XXX:~# 

(5) Amazon Lightsail仮想マシンのネットワークアクセス制限が有効になっているか確認します(iptablesでhttp通信を許可したIPアドレスからの接続確認)。

iptablesでアクセスを許可しているネットワークのWebブラウザからAmazon Lightsail仮想マシンのIPアドレスへアクセスしてみます。

http://54.162.XXX.XXX

以下のようにAmazon Lightsail仮想マシンのWordPressページが表示される事を確認します。

スクリーンショット 2017-02-26 19.49.27.png

また、iptablesでアクセスを許可しているネットワークのマシンからAmazon Lightsail仮想マシンへssh接続出来る事を確認します。

PC001:~ user$ ssh 54.173.XXX.XXX
The authenticity of host '54.173.XXX.XXX (54.173.XXX.XXX)' can't be established.
 (中略)
PC001:~ user$ nc -z -v 54.173.XXX.XXX 22
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif en0
    src 198.51.100.21 port 52095
    dst 54.173.XXX.XXX port 22
    rank info not available
    TCP aux info available

Connection to 54.173.XXX.XXX port 22 [tcp/ssh] succeeded!
PC001:~ user$ 

(6) Amazon Lightsail仮想マシンのネットワークアクセス制限が有効になっているか確認します(iptablesでhttp通信を許可していないIPアドレスからの接続確認)。

iptablesでアクセスを許可していないネットワークのWebブラウザからAmazon Lightsail仮想マシンのIPアドレスへアクセスしてみます。

http://54.162.XXX.XXX

Amazon Lightsail仮想マシンのWordPressページが表示されない事を確認します。

スクリーンショット 2017-02-26 19.58.20.png

また、iptablesでアクセスを許可していないネットワークのマシンからはAmazon Lightsail仮想マシンへssh接続出来ない事を確認します。
このようになっていれば、iptablesによるアクセス制限は有効になっております。

PC001:~ user$ ssh -i SSH鍵ファイル bitnami@54.173.XXX.XXX
ssh: connect to host 54.173.XXX.XXX port 22: Connection refused
PC001:~ user$ 
PC001:~ user$ nc -z -v 54.173.XXX.XXX 22
nc: connectx to 54.173.XXX.XXX port 22 (tcp) failed: Connection refused
PC001:~ user$ 

最後に

Amazon Lightsailは設定がシンプルな分、EC2と比較するとセキュリティグループ機能がなかったり、きめ細かな設定は行えないようです。

また、2017年2月26日時点では、us-eastリージョンでしかAmazon Lightsail仮装マシンを作成出来ません。体感的に気になる程ではありませんが、日本からAmazon Lightsail仮装マシンのWordPressぺージを表示する場合は少しレイテンシがあると思います。

しかし、それらを踏まえても、Amazon Lightsailを使う事で、数クリック・数分で仮想マシンを作成出来るので、社内サーバや開発用サーバを気軽に作成出来る便利なサービスだと思います!

以上になります。

na0AaooQ
インフラエンジニアとして、データベースやインフラ構築、オンプレミスからAWSへの移行等を担当。現在はビジネスを加速させるDBやCRM実現に向けて、Salesforce等のシステム開発に取り組んでいます。 https://www.lifull.blog/entry/2020/01/30/173922 https://www.lifull.blog/entry/2019/06/21/190753
https://www.lifull.blog/entry/2019/06/21/190753
lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした