K-ornata

WordPressのApacheへのmod_securityインストール

先日からAWSでWordPress(bitnami)を稼働させているのですが、ログイン履歴を見てみるとアカウントへのブルートフォース攻撃を受けていることがわかりました。
そこで、その他にも攻撃を受けていないか確認する為に、WordPressで利用しているApacheにmod_security(WAF)導入してみることにしました。

bitnamiのApache環境はやはり標準と異なる

1.パッケージインデックスファイルの更新

apt-getは、APT(Advanced Package Tool)ライブラリを利用してパッケージを操作・管理するubuntuのコマンドです。
このコマンドを利用して、パッケージインデックスファイルを更新します。

$ sudo apt-get update

2.mod_securityをインストール

1.に続いて、apt-getを利用して、mod_securityをインストールします。

$ sudo apt-get install libapache2-mod-security2 -y

3.httpd.confの修正

bitnamiに入っているApacheの場合、httpd.confの場所が通常と異なります。

$ sudo vi /home/bitnami/stack/apache2/conf/httpd.conf

上記のコマンドでhttpd.confファイルを開いた後、まずは以下の2行を追加します。

LoadModule security2_module modules/mod_security2.so
LoadModule unique_id_module modules/mod_unique_id.so 

またその後、以下の行をファイルの最後に追加します。

Include “/etc/modsecurity/modsecurity.conf”  

4.modsecurity.confの修正

httpd.confを修正した後は、そのファイルの中で指定したmodsecurity.confを修正します。

$ sudo vi /etc/modsecurity/modsecurity.conf

以下の5行をファイルの最後あたりに追記してください。IncludeOptionalで検知するルールを読み込ませるようにしています。

<IfModule security2_module> 
    SecDataDir /var/cache/modsecurity
    IncludeOptional /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf
    IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>  

なお、最初は/usr/share/modsecurity-crs/activated_rulesの配下にルールはありませんので、以下のコマンドを例にして、適用したいルールへのシンボリックリンクを貼ってください。

$ cd /usr/share/modsecurity-crs/activated_rules/
$ sudo ln -s ../base_rules/modsecurity_crs_35_bad_robots.conf .

5.Apacheの再起動

confファイルの修正が完了したら、bitnamiのApacheを以下のコマンドで再起動します。このコマンドも通常のApache環境とは異なるところです。

$ sudo /opt/bitnami/ctlscript.sh restart apache

無事再起動したら、念の為、以下のコマンドを実装して見ましょう。出力に「+ security2_module(shared)+」と表示されたら、mod_securityが組み込まれています。

sudo apachectl -M | grep –color security2

6.監査ログが出力されていることを確認

/home/bitnami/stack/apache2/logsにmodsec_audit.logが出力されていることを確認します。

–9e18e84c-H–
(省略)
[file “/etc/modsecurity/modsecurity.conf”] [line “61”] [id “200002“] [msg “Failed to parse request body.”] [data “”] [severity “CRITICAL“]
(省略)
Engine-Mode: “DETECTION_ONLY”

上記は、Hセクションで severityが表示されているログの例です。

なお、WordPressで記事を保存する場合などには、上記の 200002のルールで引っかかってしまい、保存できないことがありますので、modsecurity.confに書かれているルールをコメントアウトしておいた方が良さそうです。

7.監視モードから遮断モードへ切り替え

WordPressの通常の操作でmodsec_audit.logにログが表示されないことを確認したら、modsecurity.confを編集して、SecRuleEngineの設定を”DetectionOnly”から”On”に変更しましょう。

# SecRuleEngine DetectionOnly
SecRuleEngine On

この後、再度ctlscript.shでApacheを再起動すれば、遮断モードになります。

あとはチューニングを頑張る

mod_securityのログには、ロードバランサーからのハートビートログなども載ってくるようですので、稼働させた後もチューニングをしていかないと重要なログが埋れてしまいそうです。

また、ルールについても適宜見直しをしていくと良いと思います。

(2020.5.9)とりあえず、WordPressで記事の編集を行う場合、以下のルールは外しておかないとエラーになってしまうようです。

idmsg発生する現象
200002Failed to parse request body.記事の保存に失敗する
200004Multipart parser detected a possible unmatched boundary.画像のアップロードに失敗する
960024Meta-Character Anomaly Detection Alert – Repetative Non-Word CharactersWPのログインに失敗する
WordPress環境で無効化しておいたほうが良いルール

Affinity Designerで出来て Photoで出来ないことは無い?(テキストパス)

初めてAffinityを触る人は、PhotoとDesigner でほぼ同じようなことができるように見えるので、どちらを買ったらいいか分かりづらいと思います。

実は大概の機能はPhotoで実現できる

もちろん、ベクターとラスターの違いはありますが、それ以外、一見、Photoではできない?と思っていても、実は大概のことはPhotoでできるみたいです。
そこで、今回はDesignerで実装されている「テキストパスに変換」で曲線の形に沿って文字を配置するのと同じようなこをとPhotoで実施してみたいと思います。

メッシュのワープツールで文字列を曲げる

Designerでは曲線を描画した後、それを「テキストパスに変換」することで、文字を波に漂うように配置できますよね。Photoでも少し頑張れば実現可能です。
以下、実現イメージです。

このやり方は以下のとおりです。

1.アーティスティックテキストツールで文字を書く

アーティスティックテキストツール

2.メッシュのワープツールを選択

文字を書いた後、左のツールアイコンからメッシュのワープツールを選択すると、書いた文字列の周りに四角い枠が表示されます。

メッシュのワープツールを選択

3.四角い枠を摘んで変形

2.で表示された枠をマウスで摘むと、四角の枠の形が変形し、それに伴って文字列も変形します。

メッシュのワープツールで文字列を変形せたところ

4.枠の真ん中をクリックし、文字の形を調整

枠の横線、もしくは縦線の真ん中をマウスでダブルクリックすると、中央に線が現れ、文字の歪みを調整することができます。

上辺真ん中をダブルクリックして、真ん中に縦線が現れたところ
枠の左側真ん中をダブルクリックして、真ん中に横線が現れたところ

どうでしょうか?Affinity PhotoでもDesignerとおなじように曲線にそった文字を書くことができました。
なおこれをやっていて気になったのが、文字の荒さが出てしまうことですね。その点、Designerはどれだけ文字の形をいじってもベクターなので荒さが出てこず、やっぱりDesignerもあるといいなあ、と思ってしまいました。

MACのMRTというファイルが脅威として検知されたが正しいのか?

2020年5月1日にiMacを利用していると、ウィルスバスター クラウドがOSX_REFOGKEYLOGGER.MSGKD15の脅威があると警告してきました。

ウィルスバスターによるOSX_REFOGKEYLOGGER.MSGKD15の警告

詳しく見てみると、以下のファイルを脅威として検知しているようでした。

/Library/Apple/System/Library/CoreServices/MRT.app/Contents/MacOS/MRT

そこで、MRTとは何だ?ということも含めて、この警告が正しいのかどうかを調べて見ました。

2020/5/1のパターンファイルでこの警告が発生していれば、誤警告の可能性が高い

そもそもMRTとは、Macに入り込んだマルウェアを検出し削除するセキュリティ機能「Malware Removal Tool」のことらしいです。
また、Googleで調べてみると、2108年頃にAvastというウィルス対策ソフトでもこのファイルを誤検知している記事を見つけました。
どうやら誤警報っぽいですが、以下の2点を追加調査してみました。

1.VirusTotalで調査

念のため、MTRというファイル?を含んでいるらしいMRT.appをVirusTotalで調べて見たところ、以下の通り、このファイルをマルウェアと判断しているセキュリティベンダーはありませんでした。

www.virustotal.com

2.ウィルスバスターのサポートを確認

また念の為、ウィルスバスターのサポートサイトにログインし、MRTについて確認してみました。
そうすると、すでにコミュニティで問合せが行われており、ベンダーがMRTに関する警告は誤りであることを認めており、修正アップデートの配信を開始しているとのことでいした。

ウィルスバスターのコミュニティーに掲載されていた記事

上記の公式回答のとおり、まさに2020/05/01に警報が発生したので、誤警報で間違いないようです。
なお、ウィルスバスターをアップデートすればこの誤検知は発生しなくなるようですね。

今回はちゃんとトレンドマイクロが仕事をしてくれていたようです。みなさん、セキュリティ対策ソフトをお金を払って購入しているのであれば、そのサポートを使ってみましょう!

2020.10.11追記
ウィルスバスターの最近機能の状況を以下にアップしていますので、よかったら併せて見てみてください。

http://k2-ornata.com/trendmicro-for-mac/

WordPressのユーザIDへのDoS攻撃対策

WordPressへのブルートフォース攻撃が気になっていたので、Limit Login Attempsというプラグインを最近導入しました。
そしてそのログを確認したところ、デフォルトユーザへのDoSが多数発生しているのに気がついたので、別のユーザIDを作成し、そのアカウントでログインするようにしていました。
しかしながら、そのユーザに対してもすぐにブルートフォース攻撃が発生していました。
そこでなぜ、新たに作成したユーザIDがすぐにバレてしまったのか調べてみることにしました。

ブログに投稿者名が表示されており、また投稿アーカイブなる機能が有効になっていました。

そこで以下の対策を実施することにしました。

1.ブログ上の投稿者名をユーザIDからニックネームに変更

これはすぐに気がつかない私も悪かったのですが、ブログ上に表示されている投稿者名が、ユーザIDのままとなっていました。これをまずニックネームに変えました。

これは[ユーザ]の「ブログ上の表示名」から簡単に変えることが可能です。

2.投稿者の名前を表示させない

1.の対策をしていればこれは必要ないかもしれませんが、私の場合、記事を投稿するとその投稿ページに誰が投稿したから表示されるようになっており、さらに1.の対応を実施していなかった為、投稿者名としてユーザIDがそのまま表示されていました。

そこで以下の通り、content.phpの50行目付近にある、twentysixteen_entry_meta()関数の呼び出しを無効化しました。(Twenty Sixteenテーマの場合)

[外観]-[テーマエディター]から[個別投稿(single.php)]のcontent.phpを編集

上記の変更後、更新を保存した瞬間から、以下のようにユーザIDを含めたメタ情報が表示されなくなります。

3.投稿アーカイブのパスと名前を変える

これは全く知らなかったのですが、以下のようにWordPressのFQDNの後ろに”?author=番号”を入力すると、WordPressの各アカウントで作成した記事のアーカイブをまとめて見れるようになっているようです。

https://WordPress_FQDN/?author=1

そのアーカイブを表示する時のURLがデフォルトで以下のようになっており、何も対策をしていないと、WordPressに登録しているユーザIDがバレバレとなってしまいます。

https://WordPress_FQDN/author/ユーザID/

これを防ぐ為には、Edit Author Slugというプラグインを導入するのが簡単です。

上記のプラグインを導入後、まず、WordPressダッシュボードの[設定]-[Edit Author Slug]の画面にて、上記の”author”というパス名を変更することができます。(「投稿者ベース」という項目にて変更可能。)

また、このプラグインを導入すると、WordPressダッシュボードの[ユーザ]-[あなたのプロフィール]の画面で一番下までスクロールさせた時に「投稿者スラッグ」という項目が追加されており、ここで、上記の”ユーザID”に表示される名前を変えることが可能です。

実際のユーザIDによるブルートフォース攻撃が激減

以上の3つの対策を実施後、いまのところ、実際のユーザIDで攻撃されることはなくなっており、逆にニックネームやEdit Author Slugで設定したダミーのユーザIDで攻撃されております。
やはり、攻撃者の方は投稿名や投稿アーカイブスの情報を元に攻撃を仕掛けているようですね。

Social Bookmarking Lightで表示していたSNS共有ボタンが表示されなくなった

なぜか最近、WP Social Bookmarking Lightで設定したSNSの共有ボタンが表示されなくなりました。
今のところ原因はわかっていませんが、暫定的に表示させる方法が分かりましたので、その時の作業メモをアップしておきます。

暫定対処として[外観]の[テーマエディター]を編集

1.WordPress管理画面の[外観]-[テーマエディター]から[個別投稿](single.php)を選択します。

2.その配下にあるtemplate-partsのプルダウンを開き、content.phpを開きます。

3.以下の行をentry-contentクラスの下などに挿入します。(以下の例では47行目に挿入)

<?php if(function_exists(“wp_social_bookmarking_light_output_e”)){wp_social_bookmarking_light_output_e();}?>

[外観]-[テーマエディター]からcontent.phpを編集

4.最後の「ファイルを更新」ボタンを押すことでSNSの共有ボタンが表示されるようになりました。

共有ボタンが表示される場所は、利用されているWordPressのテーマによって少しかわるかもしれません。

今回、初めてWordPressのphpを直接編集してみました。これをきっかけにすこしphpの勉強をしてみるものいいかもしれませんね。

Affinity Designerで出来て Photoで出来ないことは無い?(排他的論理和)

初めてAffinityを触る人は、PhotoとDesigner でほぼ同じようなことができるように見えるので、どちらを買ったらいいか分かりづらいと思います。

実は大概の機能はPhotoで実現できる

もちろん、ベクターとラスターの違いはありますが、それ以外、一見、Photoではできない?と思っていても、実は大概のことはPhotoでできるみたいです。
そこで、今回はDesignerで実装されている「排他的論理和」の機能をPhotoで実施してみたいと思います。

排他的論理和による文字でのくり抜き画像

Designerの場合は、[排他的論理和]のワンボタンでできますが、Photoの場合も頑張ればできるようです。
以下にやり方を記載しておきますが、もっと効率的なやり方がありそうな気がします。

1.文字でくり抜きたい背景画像を配置

[ファイル][開く]から好きな画像を開く

2.四角い図形をその上に描画

図形ツールで画像の上位レイヤーとして長方形を作成

3.文字をその上に追加

さらにその上に、アーティスティックテキストツールを使用し、文字を書きます

4.背景画像をコピーし、文字レイヤーの下に組み込む

ここはちょっと説明が必要ですが、まず、最下位レイヤーの背景画像を選択したあと、[command]+J でコピーし、それを摘んで文字レイヤーの下に従属させます。

画像をコピーして文字にぶら下げるのがミソ

いかがでしょうか?もし「排他的論理和」を使いたいが為に Designerの購入を検討している場合には、参考になるかと思います。

なお、もっとこんないいやり方があるよ〜という方はぜひ教えていただければと思います。

AWS上に作成したWordPressのMysqlに接続し、ユーザの権限を変更する方法

WordPressのセキュリティを高める為にLimit Login Attemptsというプラグインを入れたところ、予想以上にアカウントへの不正アクセスがあることがわかりました。
そこで、デフォルトで利用していたユーザIDの権限を変えることにしました。
しかし、その時に操作をミスして自分がログインできなくなってしまう可能性もあります。
そこで事前に、直接mysqlに乗り込んで、ユーザの権限を変える方法を確認することにしました。

以下の手順でmysqlの情報を直接操作可能

1.sshでサーバにログイン

ここは大丈夫でしょう。AWS上でbitnamiのインスタンスを作成した際にログインできるようにしているはずです。

2.mysqlにログイン

そもそもmysqlにログインする為のID/PASSWORDはどこにある?ということなですが、以下のファイルの中に書かれています。

/opt/bitnami/apps/wordpress/htdocs/wp-config.php

このファイルの中で「DB_NAME」「DB_USER」「DB_PASSWORD」として、それぞれデータベース名、ユーザ名、パスワードが記載されていますので、メモしておきましょう。

その後、以下のコマンドを実行後、パスワードを入力すればログインできます。(※DB_USERはユーザ名に置き換えてください。)

mysql -u DB_USER -p

3.データベースの指定

ログイン後、テーブルを確認しようと show tables; などのコマンドを実行しようとすると以下のエラーが表示されることがあります。

ERROR 1046 (3D000): No database selected

これは操作するデータベースが指定されていないので発生しています。
したがって、テーブルを操作する前に以下のコマンドを実行し、データベースを指定してください。(以下の場合は、データベースとして”bitnami_wordpress”を指定しています。)

mysql> use bitnami_wordpress

4.テーブルの確認(ユーザIDの確認)

これで操作するデータベースが指摘できましたので、まずは、wp_usersというテーブルの中身を覗いてみます。
以下のコマンドでは、”hogehoge”ユーザの情報を表示させています。また、最後に”¥G”をつけることで出力結果を見やすくしていますが、その代わりに”;”をつけても大丈夫です。

mysql> select * from wp_users where user_login = “hogehoge”¥G

この結果により、”hogehoge”のユーザID(user_id)が分かりました。これでユーザ権限変更の準備が整いました。

5.テーブルの更新(ユーザ権限の更新)

4.で取得したuser_idでwp_usermeta テーブルを検索します。以下のコマンドを入力してください。(※user_idは実際のユーザIDに置き換えてください。)

mysql> select * from wp_usermeta where user_id = “user_id“\G

出力されたテーブル情報の中で、meta_key が wp_capabilities とwp_user_levelの部分を書き換えることで、ユーザ権限を変えることが可能です。
たとえば、管理者に権限を変更する為のコマンドの例は以下の通りです。(※user_idは実際のユーザIDに置き換えてください。)

mysql> update wp_usermeta set meta_value=’a:1:{s:13:”administrator”;b:1;}’ where user_id=”user_id” AND meta_key=”wp_capabilities”;
mysql> update wp_usermeta set meta_value=10 where user_id=”user_id” AND meta_key=”wp_user_level”;

参考までに、管理者と投稿者の設定値を記載しておきます。

権限wp_capabilitieswp_user_level
管理者a:1:{s:13:”administrator”;b:1;}10
投稿者a:1:{s:6:”author”;b:1;}2
ユーザ権限と設定値

これで権限設定を間違ってしまっても、mysql側から何とか変更できますね。

デフォルトのユーザIDをそのまま利用するのは危険

私のようにブログを立ち上げたばかりでも、数十件の不正アクセスが発生している状態ですので、ブログを立ち上げたらすぐにデフォルトのIDから新規に作成したIDにお引っ越ししたほうがよいと思います。

Rain Drop一本で車全体をコーティング

私は今の車に10年以上乗っていますが、これまであまり洗車の際にワックスなどはかけてきませんでした。(メーカーのコーティング処理は2度やってもらったのですが。)
そのせいか、10年目をすぎたころにトップの塗装の一部が剥がれ始めてきました。やっぱりワックスちゃんとかけないとダメかなーとおもっていたころに、ガラスも車体もこれ一本でいけるというコーティング剤 Rain Dropを発見し、購入してみましたので、その使用感を書いておきます。

Rain Drop

良い点:これ1本で十分。しかも長持ち。

1.効果が長持ち

2〜3ヶ月前にオートバックスで Rain Dropを購入し、現在は、2度ほど使用した状態です。
2度目の施工のあとの2週間後に車が汚れてきたので、再度、水だけをつかって洗車しました。そして昨日、雨が降ったときの状態が以下の写真のとおりです。
ガラスも車体もバッチリ水を弾いていて、きれいな水玉が流れ落ちています。

Rain Drop施工後

2.経済的

1本でたしか1500円くらいだったとおもいます。
私の車はオープンカーなので少し表面積が小さめですが、2回使用してまだ半分以上は残っていると思います。あと4回くらいはいけるのかな?
使い切った時にまた情報をアップしたいと思います。

悪い点:操作が分かりづらい

バーが2本あってちょっとわかりずらい

通常スプレーする際に使うレバーとは別に、ガス抜き用のレバーがあり、最初すこしわかりずらかったです。

右はガス抜き用のレバー

まあ、よく見ればちゃんと買いてあるので、見なかった私が悪いのですが、後ろのレバーは通常のスプレー用(左側)のレバーのロックだと思ってしまいました。
なので、最初に後ろのレバーを開けようとしたところ、どめどなくコーティング剤が吹き出しはじめ、びっくりしました。みなさん初めて使用される際はご注意ください。

レバーのわかりづらさはありましたが、水で車を洗ったあとのこれを全体に吹き付けて布で拭くだけで車全体をコーティングでき、その効果もバッチりでしたので、しばらくはこのRainDropを使っていきたいと思います。
気のせいか、これをつかってからガラスの水汚れも少しクリアになった気がします。

大手町の憩いの場所

コロナウィルスの影響で、次々に椅子が撤去され、憩いの場所が無くなってきていますね。
ビジネス街である大手町も例外ではありませんが、どうしても出社しなければならない人もいて、その人たちの休憩場所がなくなってきており、このままだとひたすら仕事をするしかなくなってしまいます。
ということで、貴重な憩いの場所を紹介したいと思います。

大手町の森はいこいの場所

大手町の森は、コロナウィルスのパンデミックが始まってから、朝でこそほとんど人がいないですが、平日の晴れた日中には、休憩場所を求めて、ポツポツの間隔を空けながら、何人かの人が休憩しています。
ちなみにこの場所には、レンタルサイクルのスポットもあり、普段はたくさんの人が利用していますが、今は、あまり乗られなくなった自転車で溢れています。

大手町の森のベンチ

大手町の森のすぐ横にはベンチが6〜8つくらいありますが、そこから階段で下に降りていくと、植物を囲むように据付のベンチが置いてあり、休憩することができるようになっています。
ちなみにこの横にはファミリーマートがあり、イートインできる場所がありますが、そこも今は利用禁止となっております。10人くらい座れる場所があり、便利だったのですが。

大手町の森の隣にある広場

最近は人が少なくなってきたせいか、すずめさんや鳩さんがテクテクあるいており、そこで食事をしていた人がこぼしていったパンくずなどを探してついばんでいます。
はやくコロナウィルスが終息して、また人がたくさん訪れるようになり、すずめさんたちがたくさん餌にありつけるようになることを祈っています。

Photoshopと比較しても遜色ないAffinity Photoが今なら50%引とお得

最近、ブログを立ててからWebバナーをつくりたいなーと思いながらいろいろツールをさがしていました。
フリーのツールやWebサービスも調べて見ましたが、やはりPhotoshopには敵わないかとおもっていましたが、Photoshopの難点は値段が高いところです。月額980で使えるサブスクもありますが、年契約なのでやはり1万円越えです。
そうこういろいろ悩んでいたところ、よさそうなのがありました。Affinityシリーズ。これは買い切りでしかもPhotoshopより使いやすそうです。

いまなら3,060円と定価の半額。しかも買い切り。

どうも今のコロナウィルスで仕事が減っているデザイナーさんのことを考えて、通常の半額の値段で提供されているようです。
もともの6,000円くらいなのにも関わらず、さらにその半額です。Apple Storeからもこの値段で買えてしまいます。

AffinityにはPhotoとDesignerという似たような製品がありますが、いろいろ調べているうちに、写真編集がメインならPhotoだけで十分そうです。

1.ノイズ除去が簡単にできる

夜景の写真を撮影すると、どうしてもノイズが乗ってしまいますよね。そのノイズをほぼワンタッチで除去できてしまいます。
[フィルター]-[ノイズ]から[ノイズ除去]を選ぶだけです。

2.画像の切り抜きも簡単

画像の中からカエルさんだけを切り抜くのも簡単です。左のメニューアイコンから[選択ブラシツール]を選ぶだけです。
余計なところまで選択してしまったら、左上のモードを[除外]にすることで、選択外にすることもできます。

選択ブラシツール

3.赤目も簡単に修正できる

フラッシュを焚いた時に発生してしまう赤目も簡単に直せます。左のメニューアイコンから[赤目除去ツール]を選択し、赤目の部分を囲むだけです。

4.不要なオブジェクトを消すことも楽々

以下の写真の赤いコーンなども、左のメニューアイコンから[インペインティングブラシツール]を選択し、赤く塗りつぶすことで簡単に消し去ることが可能です。

Web用のバナーや写真編集ならこれ1本で十分

このAffinity Photoがあれば、Web用の画像編集が簡単にできて、文字の入力もできてしまうので、本格的なデザイナーさんでない限り十分な気がします。
なお、Photoといいながら、文字の編集もかなりいろいろできそうなので、もう少ししらべてみたいと思っています。