WordPressログイン画面にGoogle Authenticatorプラグイン追加

ログイン画面のセキュリティに多要素認証の実装されている事がよく見かけると思います。
金融関係はほぼやってない所はないんじゃないでしょうか。
仮想通貨取引所等でもほぼやっていますし、多要素認証は絶対にやっていたほうがいいです。

今回は簡単ですぐに導入ができるGoogle AuthenticatorプラグインをWordpressに導入する方法を紹介します。

wordpressのセキュリティ対策のプラグインは多数ありますが、自分のスマートフォンで手軽に認証ができるGoogle Authenticatorはお勧めです。
設定も非常に簡単です。
私はマルチサイトにしているのでマルチサイトで有効化するやり方を書きますが、ほとんどシングルサイトと同じです。

Google Authenticatorプラグインのインストール

まずはWordpressのサイトネットワーク管理のダッシュボードに移動します。
シングルサイトはそのままダッシュボードでOK。

プラグインの新規追加のタブをクリック

プラグインの追加画面でキーワード検索に「Google Authenticator」と入力します。
ここで結構色々でてきますが「Google Authenticator」とだけ記載されているものをインストールします。
インストール後にマルチサイトで有効化とでるので有効化までします。

インストールされるとユーザーのプロフィール画面にGoogle Authenticator Settingsが追加されています。

activeにチェックを入れて有効化します。ここをチェックしなければ有効になりません。
初めてで設定ミスとか怖い場合は別にユーザーを作ってそちらで実施するのがお勧めです。

Descriptionについてはアプリ側の表示名になるので分かりやすい名前にする事がお勧めです。

Secretがいわゆる認証キーになります。
表示されている英数字を直接アプリに打ち込んでもいいですが「show/Hide QR code」でQRコードが表示されるので
スマホのアプリで読み取るほうが簡単です。

glibc の脆弱性 (通称:GHOST)CVE-2015-0235について

Linux GNU Cライブラリ(glibc)に存在する脆弱性がセキュリティ企業「Qualys」によって確認されました。
Linuxのオペレーティングシステム(OS)を搭載する PC上で任意のコードを実行することが可能になり、結果的にサーバーの乗っ取りや不正プログラム感染させることができます。

やばい!と思ってすぐにサーバの対処をしていたのですが、glibcを最新版にすると不具合が起きるアプリ等があり
思うようにバージョンアップが進まない(・ω・´;

しばらくするとある程度情報が出てきましたが主要なOSS(apache、OpenSSH、Postfix等)は影響を受けないとの事。

今のところ攻撃を受ける可能性のあるものはメール転送エージェント「Exim」のみみたいです。

とはいうものの、ぜい弱性のある状態のままでは不安なのでバージョンアップしました。

修正済みのバージョンは下記の通りです
CentOS 5 (glibc-2.5-123.el5_11.1)
CentOS 6 (glibc-2.12-1.149.el6_6.5)
CentOS 7 (glibc-2.17-55.el7_0.5)

配布されているようなのでyumでサクッとアップデートです。

[root ~]# yum update glibc
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Skipping security plugin, no data
Setting up Update Process
Resolving Dependencies
Skipping security plugin, no data
–> Running transaction check
–> Processing Dependency: glibc = 2.5-107 for package: nscd
—> Package glibc.i686 0:2.5-123.el5_11.1 set to be updated
–> Processing Dependency: glibc-common = 2.5-123.el5_11.1 for package: glibc
—> Package glibc.x86_64 0:2.5-123.el5_11.1 set to be updated
–> Running transaction check
—> Package glibc-common.x86_64 0:2.5-123.el5_11.1 set to be updated
—> Package nscd.x86_64 0:2.5-123.el5_11.1 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
glibc i686 2.5-123.el5_11.1 updates 5.4 M
glibc x86_64 2.5-123.el5_11.1 updates 4.8 M
Updating for dependencies:
glibc-common x86_64 2.5-123.el5_11.1 updates 16 M
nscd x86_64 2.5-123.el5_11.1 updates 178 k

Transaction Summary
================================================================================
Install 0 Package(s)
Upgrade 4 Package(s)

Total download size: 27 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): nscd-2.5-123.el5_11.1.x86_64.rpm | 178 kB 00:00
(2/4): glibc-2.5-123.el5_11.1.x86_64.rpm | 4.8 MB 00:00
(3/4): glibc-2.5-123.el5_11.1.i686.rpm | 5.4 MB 00:00
(4/4): glibc-common-2.5-123.el5_11.1.x86_64.rpm | 16 MB 00:01
——————————————————————————–
Total 8.5 MB/s | 27 MB 00:03
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : glibc-common 1/8
Updating : glibc 2/8
Updating : glibc 3/8
Updating : nscd 4/8
Cleanup : glibc 5/8
Cleanup : glibc 6/8
Cleanup : nscd 7/8
Cleanup : glibc-common 8/8

Updated:
glibc.i686 0:2.5-123.el5_11.1 glibc.x86_64 0:2.5-123.el5_11.1

Dependency Updated:
glibc-common.x86_64 0:2.5-123.el5_11.1 nscd.x86_64 0:2.5-123.el5_11.1

Complete!
[root ~]#

この後再起動して動作に問題ない事を確認して対応終了。

SSH rsa鍵でのログイン設定

書いたつもりでしたがどうやら書いていなかったのでsshのログインの際に平文のパスワードではなくrsa鍵を使用する方法です。

OSインストールの際にsshはインストールしているので
バージョン等をチェックします。
[test@testlinux ~]$ rpm -qa | grep ssh
openssh-4.3p2-82.el5
openssh-server-4.3p2-82.el5
openssh-clients-4.3p2-82.el5
[test@testlinux ~]$

opensshの4.3がサーバ、クライアント共に入っています。
sshサーバの設定ファイル(/etc/ssh/sshd_config)を編集します。
root権限が必要なのでrootになってります。

[test@testlinux ~]$ su –
[root@testlinux ~]# vi /etc/ssh/sshd_config
必要な部分のみ抜粋

RSA認証部分のコメントアウトを外します。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

パスワードでのログインを禁止します。

PasswordAuthentication yes → no

後はデフォルトのままで問題ありません。

sshdの再起動を実施すれば変更した内容が反映されます。
ただし、作業はまだ全て終わっていないので再起動はしないで下さい。
鍵の作成をこの後実施しますがコンソール接続ができなければサーバからクライアントへの渡す手段がなくなってしまう可能性があります。

■鍵の作成
サーバ側でrsaキーを作ります。
今回はパスフレーズ無しで作っています。
ログインを実施するユーザーにて作業を実施して下さい。
今回はサンプルとしてtestというユーザーで実施しています。

まずは鍵を保存するフォルダを作成し作業フォルダに移動します。
権限は700にして下さい。
[test@testlinux ~]$ mkdir .ssh
[test@testlinux ~]$ chmod 700 .ssh
[tst@testlinux ~]$ cd .ssh

鍵作成コマンドの実施

[test@testlinux .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
1f:99:ea:a0:61:83:ca:a5:7c:da:03:84:a4:c0:1a:cd test@testlinux

上記に表示されているフォルダ「/home/test/.ssh」に
公開鍵 (id_rsa.pub) と秘密鍵 (id_rsa) が作成されます。
後でファイル名等は変更しますが、どうしても名前や保存場所を変えたい場合はsave場所の質問の際に
Enter file in which to save the key (/home/test/.ssh/id_rsa):
任意の場所とファイル名を指定して下さい。

[test@testlinux .ssh]$ ls
id_rsa id_rsa.pub

公開鍵 (id_rsa.pub) をsshd_configに書いてある形式に変更します。
[test@testlinux .ssh]$ mv id_rsa.pub authorized_keys

※既にauthorized_keysがあり鍵を追加する場合は公開鍵 (id_rsa.pub)を書き足していきます。

[test@testlinux .ssh]$ cat id_rsa.pub >> authorized_keys
authorized_keysに追記したらid_rsa.pub は不要なので削除します。
[test@testlinux .ssh]$ rm id_rsa.pub

次に秘密鍵 (id_rsa) をクライアント側に送ります。
今回はsftpで取得させました。
ファイル名はid_rsaですが任意の名前にして結構です。
私は今回はid_rsa_testlinuxという名前にしました。

秘密鍵がきちんとクライアントに保存されたらsshdの再起動を実施して下さい。
もし失敗してログインできなくなったらと心配がある場合はsshd_configの
パスワードでのログインをできる状態にしておいて、鍵でのログインが問題
ない事を確認してからパスワードログインを禁止して下さい。

◎再起動コマンド
[root@testlinux ~]# /etc/init.d/sshd restart

■クライアントからの接続確認
ターミナルソフトはteratermやputty等の有名なものから無名なものまで
さまざまありますが今回はとりあえずteratarmで実施します。

SSH2での接続にし、SSH認証画面に移ります。
ユーザー名を入力し、RSA/DSA鍵を使うのチェックボックスにし秘密鍵のクリックします。

そして先ほどダウンロードしてきた秘密鍵のフォルダを開きます。
名前を変えた場合、秘密鍵ファイルタブでは表示されませんので、全てのファイルで表示
させて下さい。
鍵を選択したら「OK」でログインできるはずです。
※今回はパスフレーズを無しにしているのでパスフレーズは要りません。

セキュリティの問題 SSLv3.0

最近、Bashのぜい弱性やSSL3.0のぜい弱性の指摘等結構大きな
セキュリティ関連の問題が起きています。

今までもいろいろ問題は指摘されていましたが表面化する事は
少なかったです。

Heartbleedの問題が表面化して以降が結構騒がれている気がします。

しばらくすればまた落ち着くと思いますが、騒がれても騒がれなくても対応をきちんとしたほうがいいんですけどね。

うちのサーバもSSL3.0はまだ有効化していたので無効化対応したいと思います。

構築した内容については「linuxサーバ構築>apache+SSL設定」をご参照下さい。
※特別な設定はしていません。ほとんどデフォルト設定です。

バージョンにもよりますがデフォルトだとsslはSSLv3.0とTLS1.0が有効になっています。
そこでssl.confにSSLv3.0については使わないように記述します。
OSによって書き方が違ったりしますがredhat系はdisableにするバージョンを記述します。
デフォルトでSSLv2は無効化されているのでSSLv3を追記するだけです。

[root@cent5 ~]# vi /etc/httpd/conf.d/ssl.conf
SSLプロトコルの設定項目まで行きます

# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3←SSLv3の記述を追記する

[root@cent5 ~]#
記述が終わったらapacheの再起動を実施します。
[root@cent5 ~]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@cent5 ~]#

確認はIEのSSLv3.0だけに設定してアクセスして下さい。
画面が表示されなければSSLv3.0は使えない事が分かります。
次にTLS1.0だけに設定してアクセスして下さい。
正常な画面が表示されます。

bashのぜい弱性

最近巷で話題になっているbashのぜい弱性についてです。

linuxを使っていてこれは非常に困ります。
アプリとかの問題ではなくOSレベルの問題なので暫定対処もできないですしぜい弱性対応のバージョンに上げるしかないです。

私の環境はyumを使えるようにしているのでyumでサクッと上げれるから作業自体は大したことないですけどね。

すぐに上げたんですがその後もぜい弱性の報告が連鎖的に来て
おそらくこれが最終版かな?と思いまたアップデートしました。

確認
[root@cent5 ~]# rpm -qa | grep bash
bash-3.2-33.el5_10.4

yumアップデート実施
[root@cent5 ~]# yum update bash
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: centos.mirror.secureax.com
* base: centos.mirror.secureax.com
* extras: centos.mirror.secureax.com
* updates: centos.ustc.edu.cn
Setting up Update Process
Resolving Dependencies
–> Running transaction check
—> Package bash.i386 0:3.2-33.el5_11.4 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
bash i386 3.2-33.el5_11.4 updates 1.8 M

Transaction Summary
================================================================================
Install 0 Package(s)
Update 1 Package(s)
Remove 0 Package(s)

Total download size: 1.8 M
Is this ok [y/N]: y
Downloading Packages:
bash-3.2-33.el5_11.4.i386.rpm | 1.8 MB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : bash 1/2
Cleanup : bash 2/2

Updated:
bash.i386 0:3.2-33.el5_11.4

Complete!
[root@cent5 ~]#
上がってるか確認
[root@cent5 ~]# rpm -qa | grep bash
bash-3.2-33.el5_11.4

CentOS5ですがlinuxは基本的に同じ手順で大丈夫なはず。
台数が多いと1つ1つ手作業は面倒だからスクリプトで一括で実施するようにしないと100台とか200台とかだと単純作業でも1日仕事とかになっちゃいますよね・・・

ぜい弱性の情報についてはこちら
<>
I. 概要

GNU bash の環境変数の処理には脆弱性があります。外部からの入力が、GNU
bash の環境変数に設定される環境において、遠隔の第三者によって任意のコー
ドが実行される可能性があります。

II. 対象

** 更新: 2014年10月08日修正 ****************************************
以下のバージョンが本脆弱性の影響を受けます。

– Bash 4.3 Patch 28 およびそれ以前
– Bash 4.2 Patch 51 およびそれ以前
– Bash 4.1 Patch 15 およびそれ以前
– Bash 4.0 Patch 42 およびそれ以前
– Bash 3.2 Patch 55 およびそれ以前
– Bash 3.1 Patch 21 およびそれ以前
– Bash 3.0 Patch 20 およびそれ以前

ディストリビュータが提供している bash をお使いの場合は、使用中のディ
ストリビュータの情報を参照してください。

********************************************************************

III. 対策

** 更新: 2014年10月08日修正 ****************************************
GNU Project から脆弱性を修正したバージョンの GNU bash が公開されてい
ます。十分なテストを実施の上、修正済みバージョンの適用をご検討ください。

修正済みのバージョンは、以下の通りです。

– Bash 4.3 Patch 29
– Bash 4.2 Patch 52
– Bash 4.1 Patch 16
– Bash 4.0 Patch 43
– Bash 3.2 Patch 56
– Bash 3.1 Patch 22
– Bash 3.0 Patch 21

また、一部のディストリビュータからは、修正済みのバージョンが提供され
ています。詳細については、使用中のディストリビュータの情報を参照してく
ださい。

********************************************************************