📝

EC2(Ubuntu)にLAMP環境を構築する時にやることをまとめた

2021/07/04に公開

EC2(Ubuntu)でLAMP環境を構築することが多々有るので、
とりあえずやっておくことを自分用にまとめた走り書きです。

後でAnsibleとかで自動化させようと思っている。

以降の作業はrootユーザで行う。

ソフトウェアのアップデート

まず先にアップデートしておく。

$ apt-get update -y

システムのタイムゾーンを設定

タイムゾーンをアジア/東京に変更する。

$ timedatectl set-timezone Asia/Tokyo

システムの時刻合わせ

日本国内であれば誰でも利用できる公開NTPサーバの一つ。
インターネットマルチフィード(MFEED)のサーバと時刻を同期させる。

ntpのインストール

$ apt-get install -y ntp

設定ファイルの編集

$ cp -p /etc/ntp.conf /etc/ntp.conf.org
$ vi /etc/ntp.conf
$ diff -U1 /etc/ntp.conf.org /etc/ntp.conf
--- /etc/ntp.conf.org 2017-07-12 21:23:49.000000000 +0900
+++ /etc/ntp.conf 2017-09-01 22:47:10.875716312 +0900
@@ -17,9 +17,12 @@
 # more information.
-pool 0.ubuntu.pool.ntp.org iburst
-pool 1.ubuntu.pool.ntp.org iburst
-pool 2.ubuntu.pool.ntp.org iburst
-pool 3.ubuntu.pool.ntp.org iburst
+#pool 0.ubuntu.pool.ntp.org iburst
+#pool 1.ubuntu.pool.ntp.org iburst
+#pool 2.ubuntu.pool.ntp.org iburst
+#pool 3.ubuntu.pool.ntp.org iburst
 
 # Use Ubuntu's ntp server as a fallback.
-pool ntp.ubuntu.com
+#pool ntp.ubuntu.com
+server ntp1.jst.mfeed.ad.jp iburst
+server ntp2.jst.mfeed.ad.jp iburst
+server ntp3.jst.mfeed.ad.jp iburst

再起動

$ systemctl restart ntp

sshdの設定

暫定で下記2点の設定を修正する。

  • PermitRootLogin no
  • Rootログインの許可
  • PasswordAuthentication no
  • パスワード認証するか

下記は任意で修正する。

  • LoginGraceTime
  • 認証可能時間
  • MaxAuthTries
  • 最大認証トライ回数
  • MaxSessions
  • 最大同時接続数

設定ファイルの編集

$ cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$ vi /etc/ssh/sshd_config
$ diff -U1 /etc/ssh/sshd_config.org /etc/ssh/sshd_config
--- /etc/ssh/sshd_config.org 2017-08-23 10:56:53.140000000 +0900
+++ /etc/ssh/sshd_config 2017-09-01 21:49:44.605004054 +0900
@@ -27,3 +27,3 @@
 LoginGraceTime 120
-PermitRootLogin prohibit-password
+PermitRootLogin no
 StrictModes yes
@@ -51,3 +51,3 @@
 # Change to no to disable tunnelled clear text passwords
-#PasswordAuthentication yes
+PasswordAuthentication no

再起動

$ systemctl restart sshd

ufwの停止

AWSではセキュリティグループを使用する為、ufwを停止する。

$ systemctl stop ufw

デフォルトロケールの変更

サーバ再起動が必要。

$ apt-get install -y language-pack-ja
$ update-locale LANG=ja_JP.utf8

Apache

$ apt-get install -y apache2

設定ファイルの編集

随時追加する。

$ vi /etc/apache2/conf-available/security.conf
# バージョン情報の隠蔽
ServerTokens Prod
Header unset X-Powered-By
# サーバ署名(バージョンとサーバ名)のOFF
ServerSignature Off
# httpoxy 対策
RequestHeader unset Proxy
# クリックジャッキング対策
Header append X-Frame-Options SAMEORIGIN
# XSS対策
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
# XST対策
TraceEnable Off

有効化 & 再起動

$ a2enconf security.conf
$ service apache2 graceful

PHP

都度必要なモジュールがあったらインストールする。

$ apt-get install -y php
$ apt-get install -y libapache2-mod-php php-mcrypt php-mysql php-mbstring php-xml php-gd

設定ファイルの編集

PHPのバージョンはX.Xとする。

$ vi /etc/php/X.X/apache2/php.ini
[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.encoding_translation = On
mbstring.detect_order = auto

再起動

$ service apache2 graceful

MySQL

mysql_secure_installationとかは別途実施する。

$ apt-get install -y mysql-server

サービスの自動起動設定

$ apt-get install -y sysv-rc-conf
$ sysv-rc-conf --list | grep -E "apache2|mysql|ntp|ufw"
$ sysv-rc-conf apache2 on
$ sysv-rc-conf mysql on
$ sysv-rc-conf ntp on
$ sysv-rc-conf ufw off

ログローテート設定

/etc/logrotate.d/apache2
/etc/logrotate.d/mysql-server
/etc/logrotate.d/rsyslog ★システムログ系

Discussion