📝
EC2(Ubuntu)にLAMP環境を構築する時にやることをまとめた
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