WordPressのSSL化で無限ループ

表題の通り。ここではないとあるWordPressのサイトをSSL化した時にハマった。

■ 環境

  • WordPress 4.9.2
  • Amazon Linux
  • EC2
  • ELB

■ WordPress

設定 > 一般』にある下記2つの項目をSSLに設定した。ちなみにSSLはELBで終端とし、EC2へは”http“でアクセスしたい。

  • WordPressアドレス
  • サイトアドレス

どちらも、もともとある設定の”http“を”https“に変更した。”サイトアドレス“の変更時点では問題がなかったのだが、”WordPressアドレス“を”https“に変更したところ無限ループとなってしまった。

原因は、WordPressのPHPでは”https“でアクセスが来るはずと認識しているのに、実際にはELBで終端されているので”http“でアクセスが来てしまっているため、再度”https“にリダイレクトされている…という感じがする。

というわけで下記を”wp-config.php“に入れることで対応が可能であった。

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

以上。

ElasticIP Tag

AWAにおいてElasticIPにタグを付けられるようになったようだ。

■ 環境

  • AWS

■ Management Console

ManagementConsoleで見ると下記のようになっていた。

以前はそっけない一覧であったがいろいろと表記が増えた。

  • Name
  • Elastic IP
  • アロケーションID
  • インスタンス
  • プライベートIPアドレス
  • スコープ
  • 関連ID
  • ネットワークインターフェイスID
  • ネットワークインターフェイス所有者ID

以前はインスタンス等しか判別しやすいものがなく、リンクを押してインスタンス一覧の画面に遷移してようやくどのインスタンスに付けられているElasticIPであるかがわかっていたと記憶している。ElasticIPだけでなく、プライベートIPアドレスも表記されるだけでもかなり見やすくなったし判別しやすくなった。さらにタグを付けられることでIPが自動で割り振られているやつでも便利になった。

以上。

vsftpd on AmazonLinux

表題の通り。単なるメモである。

■ 環境

  • vsftpd 2.2.2
  • Amazon Linux

■ vsftpd

どうしてもFTPをということなので久方ぶりにvsftpdをインストールした。

$ sudo yum install vsftpd

設定は下記のようにしている。

$ cat /etc/vsftpd/vsftpd.conf
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=XXX.XXX.XXX.XXX
pasv_min_port=60001
pasv_max_port=60010
use_localtime=YES
force_dot_files=YES
$

pasv_address“は、対象のインスタンスに付与したEIPのアドレスを設定した。FTPでの接続はごく限られるので”SecurityGroup“で接続元のIPを絞っている。

以上。

Chrony on Amazon Linux

表題の通り。先日の”Amazon Time Sync Service“の続き。

■ 環境

  • Chrony 3.2
  • Amazon Linux
  • AWS EC2

■ Amazon Time Sync Service

先日は”Chrony“をUbuntuで入れた。今回はAmazonLinuxでやってみる。

$ ps -ef | grep ntp
ntp       2571     1  0 Nov18 ?        00:00:01 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
$

`ntp`が動いているのでこれを停止する。

$ sudo service ntpd stop

chronyをインストール。

$ sudo yum install chrony
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                       | 2.1 kB  00:00:00
amzn-updates                                                                                                    | 2.5 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package chrony.x86_64 0:3.2-1.22.amzn1 will be installed
--> Processing Dependency: libseccomp.so.2()(64bit) for package: chrony-3.2-1.22.amzn1.x86_64
--> Running transaction check
---> Package libseccomp.x86_64 0:2.3.1-2.4.amzn1 will be installed
--> Processing Conflict: chrony-3.2-1.22.amzn1.x86_64 conflicts ntp
--> Finished Dependency Resolution
Error: chrony conflicts with ntp-4.2.6p5-44.34.amzn1.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
$

`ntp`とconflictしていると怒られた。というわけで`ntp`の削除を実施してから再度実行する。

$ sudo yum remove ntp
 :
$ sudo yum install chrony

あとは前回と同じように設定を入れ込む。

server 169.254.169.123 prefer iburst

設定ファイルはUbuntuの時とは違い、下記にあった。

/etc/chrony.conf

またサービス名もUbuntuの時は”chrony“であったが、こちらでは”chronyd“であった。ansibleのplaybookにする時等はいつものように注意が必要だ。

$ sudo service chronyd start

以上。

■ 関連

Amazon Time Sync Service

Amazon Time Sync Service

表題を使うように設定を変更する。re:inventで発表された表題を実際に使いたい。

■ 環境

  • Ubuntu 16.04
  • AWS EC2

■ chrony

現状では`ntpd`が動いているので止める。

$ ps -ef | grep ntp
ntp      19577     1  0 Sep22 ?        00:03:01 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 112:116
$
$ sudo systemctl stop ntp
$
$ ps -ef | grep ntp
$

`ntp`のパッケージ削除は後回しにするとして、`chrony`をインストールする。

$ sudo apt-cache search chrony
  :
chrony - Versatile implementation of the Network Time Protocol
  :
$
$ sudo apt-get install chrony

インストールしたら既に起動していた。

$ sudo systemctl status chrony
● chrony.service - LSB: Controls chronyd NTP time daemon
   Loaded: loaded (/etc/init.d/chrony; bad; vendor preset: enabled)
   Active: active (running) since Mon 2017-12-04 19:05:19 JST; 34s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/chrony.service
           └─3038 /usr/sbin/chronyd

Dec 04 19:05:17 host001 systemd[1]: Starting LSB: Controls chronyd NTP time daemon...
Dec 04 19:05:17 host001 chronyd[3038]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP -DEBUG +ASYNCDNS
Dec 04 19:05:17 host001 chronyd[3038]: Initial frequency 18.920 ppm
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX1 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX2 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX3 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX4 online
Dec 04 19:05:19 host001 chrony[3017]: chronyd is running and online.
Dec 04 19:05:19 host001 systemd[1]: Started LSB: Controls chronyd NTP time daemon.
Dec 04 19:05:23 host001 chronyd[3038]: Selected source XXX.XXX.XXX.XX4

接続先を確認する。

$ sudo chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ xxxxxxxxxxxxxxxxxxxx          2   6    77    92  +1700us[+1398us] +/-   31ms
^* ec2-XX-XX-X-XX.ap-northea     2   6   177    28  -1129us[-1423us] +/-   21ms
^- zzzzzzzzzzzz                  2   6   177    27   -363us[ -363us] +/-  162ms
^- aaaaaaaaaaaaaaa               2   6   177    27  -3461us[-3461us] +/-  106ms

ここで繋がった先が2つ目のようなのだが、EC2のどこかのIPのようである。これではちょいと問題がありそうなのでマニュアルを確認。

ネットワークタイムプロトコル (NTP) の構成
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html#configure_ntp

日本語の方にはまだないようなので英語版で確認する。

Configuring the Amazon Time Sync Service
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure-amazon-time-service

これを参考に、下記を`/etc/chrony/chrony.conf`に追記した。

server 169.254.169.123 prefer iburst

chronyを再起動し再度確認する。

$ sudo systemctl restart chrony
$
$ sudo chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123               3   7   377   126  +1540ns[+2000ns] +/- 1343us
^- ec2-XX-XX-X-XX.ap-northea     2   7   377   127   -336us[ -336us] +/-   19ms
^- aaaaaaaaaaaaaaaaaaaaaaaaa     2   7   377   127    -38us[  -38us] +/-   28ms
^- bbbbbbbbbbbbbbb               2   7   377   127   -245us[ -245us] +/-  113ms
^- ccccccccccccccccccccc         2   7   377    57  -2171us[-2171us] +/-   91ms
$

us“が”ns”に、”ms“が”us“になって凄く速くなったようだ。

これらの設定を他にもVPCで動いている各ホストにも入れ込むことにする。

ちなみにntpは後で削除しようと思っていたが、chronyをインストールする時に同時に削除されていた。

以上。

■ 関連

Chrony on Amazon Linux