公開サーバー交換完了

大晦日から続いた移行作業

大晦日から自信のないまま公開サーバーを置き換えようと模索して、物理的にも旧 PogoPlug が設置されていたスペースに収まりました。

経験のないことで苦労の連続

終ってみれば簡単に事が推移したようにも思えますが、ブログの移行は苦労の連続で、有料プラグインでのマイグレーションではデータを移行するのも簡単らしく書かれていますが、次があるのかいつなのかも不明のまま出資するのに抵抗を感じて、現状のツールだけで進めたいと考えました。

バックアップもマイグレーションも有料オプション

バックアップツールで思い出したように、バックアップだけはしていましたが、このデータからリストアで新しいシステムに戻せるのだろうかと不安でした。結論から言うと PHP のバージョンも大きく変わっていて、直ぐにエラーとなり利用できませんでした。

結局、移行前のサーバーから移行後のサーバーに、ブログの本体である WordPress のディレクトリを rsync コマンドでフルコピーして、MariaDB のデータベースを設定して、アクセスできるユーザーの情報を WordPress のファイルに記述して、バックアップのデータからリストアを試みました。

rsyncでコピーしても同じ動作にならない

それでも移行元の動作状況とは、見た目も動きも程遠くてテーマの設定やら背景の画像やらとしばらく格闘しながら移行前の動作状態に近付けて行きました。

早いサーバーに移行できストレス減少

今回は、なかなか味わえない良い経験をさせていただきました。前のサーバーでは、非力過ぎて待ち時間が長かったのが、そこそこのレスポンスで稼働しているのは安心でき肩の荷が下りた気がします。

物理的にも入替えが終わり、一安心と思っていたのですが、スマホに大量のメールが届いていました。忘れてました大事なことを、データのバックアップ等をさせているサーバーを使い cron で、 ping / http / ssh で公開サーバーに対して5分毎にチェックをしているのです。

消すのも大変なほどのメールが溜まってしまい、慌てて更新しました。

死活チェックに振り回されました

実は、上手く対応できたと思ったのですが、単純に ping して結果をチェックする処理で、その後も5分毎にエラーメールが届いていました。IPv6 のアドレスが、誤って設定されたので気付き直したつもりが、使用を止めたつもりの旧公開サーバーのDNSで名前解決されていて、直したはずの新しいデータがそこには無くて、実在しない IPv6 アドレスに ping を送っていました。

調べてみるとゴーストのイタズラかな

resolv.conf に古いネームサーバーを参照する情報が残っているようで、わけのわからない結果を招いていました。この辺りの動作は何か良くわからない動きをするので困りものです。

/etc/dhcpcd.conf は要注意

対策できたと思って安心していると、その後も5分毎にエラーメールが届きます。更に調べるとエラーメールを送るそのサーバーは、固定アドレスを設定するために、 /etc/dhcpcd.conf の中に固定アドレスを記述しているのですが、一緒にネームサーバーも記述していて、稼働対象外のサーバーアドレスを指定していました。まともな動きをしないのは仕方ないですね。

稼働対象外のサーバーも元はマスターのネームサーバーで稼働していたものなので、定義を変えてスレーブで立上げ直して、しばらく残そうと思い、 /etc/bind/slaves のディレクトリを追加して、マスターから配布されるように設定したつもりでしたが、一向にファイルの配布が行われませんでした。

/etc/bind/slaves の所有者とアクセス権

配布されなかった理由は正確には不明ですが、ディレクトリのオーナーを bind にして、アクセス権を変更して、更に rndc reload のコマンドをマスター側とスレーブ側のサーバーで実行して少し経つとファイルの配布が行われたのを確認できました。

Webalizer も文字化けが解消

文字コードを修正してソースからメイクする情報がネット上にもあるのですが、その中で説明しているファイルを置いていたサーバーが現在接続できなくなっているようです。

最終的には何とか日本語化できたような感じです。見た目の文字列は日本語化されていない部分があちこちに見られますが、文字化けで読めない箇所はないようなので成功したと考えます。しばらくこのまま運用を続けたいと思います。

対策前は、漢字コードが昔懐かしい、euc で書かれていて、UTF-8 として表示しているのか、結果はこんな文字化けが起こって読めません。

文字化けしている表示

文字コードを UTF-8 に変換した結果は、次のような結果となって読めているようなので問題ないレベルになっていると思います。

コードを UTF-8 に変換した結果

家屋内のネームサーバー

ローカルのネームサーバー

細かいことは知りませんが、現在 IPv4で機能するネームサーバーを家の中に立てています。家屋内のプライベートアドレスを割り振る DHCPサーバーに、ローカルのネームサーバーのアドレスを渡して、IPv4 / IPv6 アドレス共に名前解決をしています。

日本国内では、IPv4/IPv6が混在しているらしい

ゆくゆくはネット環境が、IPv6の世界に完全移行して不要になるのだろうと思っています。趣味で北海道とか出歩くこともあって、旅先からリモートで家に置かれた公開サーバーを操作することも時々あるのですが、場所によっては IPv4 だったり IPv6だったりしています。

IPv4 なら家に置かれたホームゲートウェイで、入口のグローバルアドレスから家屋内に置かれたプライベートアドレスの公開サーバーにアドレス変換して接続しますが、IPv6 のアドレスは家屋内の機器にも一律に割り振られていて、外部に置かれた DDNS で名前から直接アドレスが引かれると、そのままダイレクトに機器に接続されるイメージなので家屋内にローカルのネームサーバーは不要のようです。

たぶん当面はローカルのネームサーバーが必要かと

いずれにしてもローカルで、IPv4 を併用している機器が家屋内に現存している限り、ローカルのネームサーバーが必要なのだろうと思っています。

公開Webサーバーをローカルネームサーバー仕立てます

そこで、ハード的には余裕のあるオーバースペックのラズパイで、このブログが利用している公開サーバーをローカルのネームサーバーの1つとして機能追加しようと考えたのですが、過去の立上げから長い年月が過ぎているので作業内容も曖昧です。次があるのかは分かりませんが、トラブった時の参考資料としても有効かと思いまとめることにしました。

ネームサーバーのBIND9 をインストール

次のファイルリストが、ネームサーバーの BIND9 をインストールした時の初期状態のファイル群です。以前にカスタマイズした時は、 db.root のファイルがあったようですが、同様のファイルが別の場所に移されたようです。 → /usr/share/dns/root.hints

root@web-server:~# ls -l /etc/bind
合計 48
-rw-r--r-- 1 root root 2761  6月 21  2019 bind.keys
-rw-r--r-- 1 root root  237  6月 21  2019 db.0
-rw-r--r-- 1 root root  271  6月 21  2019 db.127
-rw-r--r-- 1 root root  237  6月 21  2019 db.255
-rw-r--r-- 1 root root  353  6月 21  2019 db.empty
-rw-r--r-- 1 root root  270  6月 21  2019 db.local
-rw-r--r-- 1 root bind  463  6月 21  2019 named.conf
-rw-r--r-- 1 root bind  498  6月 21  2019 named.conf.default-zones
-rw-r--r-- 1 root bind  165  6月 21  2019 named.conf.local
-rw-r--r-- 1 root bind  846  6月 21  2019 named.conf.options
-rw-r----- 1 bind bind   77  1月  1 12:10 rndc.key
-rw-r--r-- 1 root root 1317  6月 21  2019 zones.rfc1918

db.root の移行は、named.conf.default-zones の中の頭の部分に記載されています。

複数サーバーを立て、マスターとスレーブに仕立てます

このラズパイサーバーをマスターにして、他に稼働するネームサーバーをスレーブとしてデータを受取りながら稼働するサーバーに仕立てる予定です。

bind.keys  …そのまま
db.0     …そのまま
db.127   …そのまま
db.255   …そのまま
db.empty …そのまま
db.local …そのまま
named.conf …そのまま
named.conf.default-zones …そのまま
named.conf.local   …変更する (自分で定義したいゾーンをここで指定する)
named.conf.options …変更する (全体的な動作を定義するらしい)
rndc.key      …そのまま
zones.rfc1918 …そのまま
ゾーンの定義はファイルを追加、ファィルとの対応を記述

自分で定義するゾーンファイルを作成して、このディレクトリに追加すると共に、このファイルが配布の元になるマスターか、配布されたコピーのスレーブなのか、更にはどこから配布を受取るのかや、どこに配布するのかも含めて、 named.conf.local ファイルに記述します。

サーバーの全体的な振舞を定義

また、ローカルのネットワークの流れや解決できない情報を上位のサーバーに渡す先についてのサーバー全体の動作に関する情報などは、 named.conf.options ファイルに記述するようです。

named.conf.options には、次のブルーの部分の追加と修正を行いました。どこからの情報かは不明ですが、いままで同様の設定で稼働しているので、深く考えずにそのまま移行します。

// LAN内のIPアドレスグループをLOCALと定義
acl "LOCAL" {
  192.168.11.0/24;
  240d:1a:34d:7f00::/64;
  localhost;
  localnets;
};

// ネームサーバー共通設定
options {
	directory "/var/cache/bind";

	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

	forwarders { 8.8.8.8; 8.8.4.4;};

        allow-query { LOCAL; };
        allow-query-cache { LOCAL; };

	allow-transfer  { none; };

	masterfile-format text;

	//========================================================================
	// If BIND logs error messages about the root key being expired,
	// you will need to update your keys.  See https://www.isc.org/bind-keys
	//========================================================================
	dnssec-validation auto;

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };
};

192.168.11.0/24 が、IPv4 のローカルネットアドレスで、 240d:1a:〜::/64 が IPv6 のローカルネットアドレスです。

管理するゾーンの名前とアドレスの対応表を作ります

そして、自分で定義したゾーンファイルは、後で識別しやすいように 〜.zone をファイルの最後に付加しておくことにします。

sunao-mita.pgw.jp.zone      …名前からアドレスに変換する定義
11.168.192.rev.zone         …IPv4のアドレスから名前に変換する逆引きファイル
240d:1a:34d:7f00::.rev.zone …IPv6のアドレスから名前に変換する逆引きファイル
MyMemories.localdomain.zone …試験的に変換させるオマケのファイル

管理するゾーン定義の関連付け

初期の named.conf.local ファイルは、次のようになっているので対応するゾーンの定義と対応するファイル、マスターとして転送する場合は送り先のアドレス、スレーブとして受取るならマスターになるサーバーのアドレス等を記述します。

//
// Do any local configuration here
//
  // この部分にゾーン情報を追加します
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";  // コメントから有効に変更
定義の関連付け例

単純に単独で機能させるだけのサーバーなら、正引き逆引きの各ゾーン毎に定義して、次のような内容を追加します。この場合は、/etc/bind ディレクトリ下に sunao-mita.pgw.jp.zone と命名したファイルが置かれています。

シンプルな記述例、単独でファイル管理
zone "sunao-mita.pgw.jp" {
        type master;
        file "/etc/bind/sunao-mita.pgw.jp.zone";
};
マスターファイルを管理し、スレーブに転送

なお、複数のネームサーバーを稼働させていて、マスターのサーバーのデータを更新したら、スレーブ側のサーバーに自動転送させるには、各ゾーン毎に次のような記述を追加します。

zone "sunao-mita.pgw.jp" {
        type master;   // 転送先のスレーブサーバーを列記
        allow-transfer { 192.168.11.23; 192.168.11.20; 192.168.11.21; };
        notify yes;
        also-notify { 192.168.11.23; 192.168.11.20; 192.168.11.21; };
        file "/etc/bind/sunao-mita.pgw.jp.zone";
};

示したゾーンの定義は、マスターとして管理しスレーブ3台に配送する定義です。スレーブ側では、受取ったデータを自分で管理するマスターのデータと混乱しないように、slaves のディレクトリを作成してその中に受取るようにします。

スレーブで、マスターから受取るディレクトリを分ける
zone "sunao-mita.pgw.jp" {
        type slave;
        masters {
                192.168.11.2;  // マスターのデータを管理するサーバー
        };
        file "/etc/bind/slaves/sunao-mita.pgw.jp.zone";
};

マスターデータは、各ゾーン毎に定義するため、複数サーバーで、各ゾーン毎にマスターデータを管理するサーバーを決めて稼働することができます。

少し実行させてみて、スレーブ側のサーバーにマスターで更新した最新のシリアルナンバーのデータが配布されたようで、置かれているのを確認できたので、これで完了でしょう。

編集したマスターデータと配布されたコピー

スレーブにコピーされたデータは、マスター側の更新したデータを直接コピーしたものではなく、適度に編集されて配布されるようです。

参考までにマスター側の原本とスレーブ側のコピーの中身を表示しておきます。素人の記述内容に問題が多くて違いが大きいのかは分かりませんが…

;;  sunao-mita.pgw.jp

$TTL    86400
@      IN      SOA    sunao-mita.pgw.jp.  root.sunao-mita.pgw.jp. (
        2020010202      ;Serial
        3600            ;Refresh
        900             ;Retry
        604800          ;Expire
        86400           ;Minimum TTL
)
                IN      NS      dns.sunao-mita.pgw.jp.
                IN      NS      dns2.sunao-mita.pgw.jp.
                IN      NS      gate.sunao-mita.pgw.jp.
                IN      MX      10 mail.sunao-mita.pgw.jp.

                IN      A       192.168.11.2
                IN      AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
dns2            IN      A       192.168.11.20
dns             IN      A       192.168.11.2
ubuntu-sv       IN      A       192.168.11.199
rpi1-disk       IN      A       192.168.11.23
rpi1-disk       IN      AAAA    240d:1a:34d:7f00:11cf:af0d:3b62:8501
ubuntu-dtp      IN      A       192.168.11.100
gate            IN      A       192.168.11.1
virt            IN      A       192.168.11.105
Radio           IN      A       192.168.11.20
DebianPogo      IN      A       192.168.11.22
DebianPogo      IN      AAAA    240d:1a:34d:7f00:225:31ff:fe00:9df0
mail            IN      A       192.168.11.2
mail            IN      AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
PogoV6          IN      AAAA    240d:1a:34d:7f00:225:31ff:fe00:9df0
dns2            IN      AAAA    240d:1a:34d:7f00:ba27:ebff:feac:28a8
dns             IN      AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
www             IN      A       192.168.11.2
www             IN      AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
RadioV6         IN      AAAA    240d:1a:34d:7f00:ba27:ebff:feac:28a8
rpi1-com2       IN      A       192.168.11.21
rpi1-com2       IN      AAAA    240d:1a:34d:7f00:ba27:ebff:fe0c:5ef3
note            IN      A       192.168.11.51
note            IN      AAAA    240d:1a:34d:7f00:3906:1714:acef:3e46
web-server      IN      A       192.168.11.2
web-server      IN      AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae



collection      IN      CNAME   virt
share           IN      CNAME   rpi1-disk

なお、動きが把握できていませんが、記述ミスに気が付き修正してマスター側で bind9 を restart すると、内容が直ぐに反映しましたが、その後も配布されているにも関わらずスレーブ側のデータ内容は古いシリアルの物を受取っているままでした。

$ORIGIN .
$TTL 86400      ; 1 day
sunao-mita.pgw.jp       IN SOA  sunao-mita.pgw.jp. root.sunao-mita.pgw.jp. (
                                2020010202 ; serial
                                3600       ; refresh (1 hour)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      dns.sunao-mita.pgw.jp.
                        NS      dns2.sunao-mita.pgw.jp.
                        NS      gate.sunao-mita.pgw.jp.
                        A       192.168.11.2
                        MX      10 mail.sunao-mita.pgw.jp.
                        AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
$ORIGIN sunao-mita.pgw.jp.
collection              CNAME   virt
DebianPogo              A       192.168.11.22
                        AAAA    240d:1a:34d:7f00:225:31ff:fe00:9df0
dns                     A       192.168.11.2
                        AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
dns2                    A       192.168.11.20
                        AAAA    240d:1a:34d:7f00:ba27:ebff:feac:28a8
gate                    A       192.168.11.1
mail                    A       192.168.11.2
                        AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
note                    A       192.168.11.51
                        AAAA    240d:1a:34d:7f00:3906:1714:acef:3e46
PogoV6                  AAAA    240d:1a:34d:7f00:225:31ff:fe00:9df0
Radio                   A       192.168.11.20
RadioV6                 AAAA    240d:1a:34d:7f00:ba27:ebff:feac:28a8
rpi1-com2               A       192.168.11.21
                        AAAA    240d:1a:34d:7f00:ba27:ebff:fe0c:5ef3
rpi1-disk               A       192.168.11.23
                        AAAA    240d:1a:34d:7f00:11cf:af0d:3b62:8501
share                   CNAME   rpi1-disk
ubuntu-dtp              A       192.168.11.100
ubuntu-sv               A       192.168.11.199
virt                    A       192.168.11.105
web-server              A       192.168.11.2
                        AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
www                     A       192.168.11.2
                        AAAA    240d:1a:34d:7f00:a284:cc24:64bd:daae
マスターの更新を直ちにスレーブに反映させるには

修正を直ちに反映させるためには、何かのアクションが必要のようです。ネットで調べてみると reload のキーワードが見付かりました。他にも強制的に配布するコマンドもあるようです。

# service bind9 reload

実行してみるとスレーブ側のデータも最新のシリアルに更新されたようです。 定義の中に、$TTL 86400 ; 1day の記述がありますが、更新されても1日は前の情報を保持する指定なのでしょうか。

やっと念願の公開サーバー交換

宿題事項だったサーバーの交換

2020年元旦になって、数年前から懸念していた公開サーバーを入れ換えることができました。交換したサーバーは、現在の状況で最新版のラズパイで、Raspberry pi 4 B+ / 4GBメモリ で一応最強モデルです。

長く放置できそうな OS

利用する OS は、色々悩みましたが使い慣れているラズパイではデフォルトとなる Raspbian の最新版に落ち着きました。このハードなら色々な OS の選択肢もあるようですが、今までの公開サーバー(PogoPlug E02) のように数年で交換を悩まなそうな見通しを考慮し、日常的で簡単な保守だけで長く安定的に公開させられればとの考えもあっての選択です。

多少のオーバースペックは安心材料

処理速度やメモリ量から考えるとハード的には、完全にオーバースペックのように思います。しかし、ラズパイって昔発売の低スペックのモデルも最新の処理能力の高いモデルも入手する金額に大きな差がないようなので、処理が遅すぎて後で悔やむよりも少し奮発しておけば気が楽になります。

悲願だった交換が完了

換える前のサーバーが非力で、OS の Debian も少し古くなったバージョンで、組込みLinuxを代表するようなシステムだったので、日常的な保守では簡単にバージョンアップができないシステムでした。そのため、このブログ WordPress が稼働する PHP もバージョン5 までしか対応できなくて、セキュリティレベルが低いと警告されていました。

いずれにしても、見た目には同じような動作のままで入替えができたようなので安心しています。使ってみた感じでは、反応がかなり早くなっているので、このブログでも写真の公開でもストレス無く反応しているように感じました。

気持ちだけ焦ってしまう

公開サーバーの更新

遅いし、PHPがバージョンアップ不能

ウェブ用のサーバーを更新しようと思い立ったのは、いつだったのだろうと考えてしまうくらい長い月日が流れてしまいました。

問題は色々あって進まない

自分の能力不足だったり、最適と思える価格と能力を持つ機材が思い当たらなかったり、時間が無かったりと、タラタラと言い訳が出てしまいそうで情けないです。

ラズパイの最新版登場

一応ラズパイも、メモリー搭載が大きくなって処理能力が格段に改善された最新モデルも発売になったので、これを利用して置き換えようと思い立ちました。

簡単な試行では機敏な反応、期待できそう

まずはサーバーとしての基本を設定しなければなりません。素の状態で動作させ始めると確かに速そうな感触です。置き換えられれば反応の悪さが改善しそうな予感です。

Apache稼働でレスポンス良さそう

今動いているこのブログの機能の移行が最大の問題点なのですが、Apacheを稼働させ、写真の公開データをコピーして稼働出来る事を確認しました。単純な作りなので移行も簡単です。

さて、大問題のこのブログですが、WordPressで構成され、PHP上のアプリとして機能して、Mysqlと呼ばれるデータベースを使用しています。

Mysqlが無くなってしまいました

最新のラズパイのOSからはMysqlが削除されて、代替としてMariadbに変わったようです。Mysqlが、Oracleに吸収されたような話を聞いた記憶がありますが、中立性のオープンソースデータベースでしょうか。

操作上の違いがあるのか、ないのかも不明で、ブログの素人の移行作業には更にハードルが上がったとしか思えません。参ったものです。

まずはメールやシステムログのレポート

その前に色々な機能を追加して、サーバーとして稼働させられる様な状況を作る必要があります。

稼働したシステムログを監視して、メールで毎日通知する機能だとか、メールを発信できる機能が必須です。

他のラズパイサーバーが、Postfixでニフティにメールをリレーしているので、それをコピーして稼働させることにしましたが、バージョンも上がっているようで、予想外の四苦八苦です。

システムログのサマリーがメールで届くのか?

明日の朝以降に、Logwatchのメールが届けば、次のステップとしてブログの移行について試行錯誤のテストに移行しようかと考えてます。

連動地図の機能を拡張

山歩きでは地理院の地形図

私が古くから公開していたプライベート写真のページですが、撮影場所や移動経路をマークして表示できるグーグルマップを組込んでいます。しかし山歩きではちょっと役不足のようですね、やはり国土地理院の紙地図で提供されていたあの地形図の 1/25,000 が何と言っても最適な気がします。

一長一短で、地形図も万能ではない

ただ、国土地理院の地形図が万能かと言うと難しく、市街地や郊外、山の地形と色々な場面で一長一短があって、一意に決めるのは難しいのが現状です。

技術的な知識不足も能力不足もあって、その辺りをずっと悩んでいました。そして何とかオープンストリートマップと国土地理院の地図を表示する事ができ、次のステップで念願だった国土地理院の地形図をオーバーレイで重ねて表示できる機能を知り、今回の改良に至りました。

色々な地図に地理院の地形図を重ねると最強

改良してみて、色々な地図とのオーバーレイで感じることは、望んでいた地図はこれだと思いました。

グーグルの標準 [地図] や [地図+写真]、 グーグルの地形図 [☑地形]、 オープンストリートマップ [OSM地図]、 国土地理院の地形図 [地理院]、 国土地理院の航空写真 [地理院 航] と選択はありますが、これらと 地理院の地形図 を重ねてみるとなかなか興味深い結果となりました。

昔の写真を掘り起こすように開いてみると、しみじみと地図に見入ってしまいます。

グーグル地図は、右上に配置されている破線で描いたような のボタンで、全画面の地図に移動できますので、広い画面で地図を楽しむことができます。逆に戻ることもできるのでとても便利です。

最近の地図について

ネット上で広く利用されている地図には、グーグルマップやヤフー地図とか色々なものがあります。私も利用方法がネット上に公開されたこともあり、それより先に公開していたプライベート写真にグーグルマップを連動させる処理を追加してきました。

2018年からグーグルマップが有料に

グーグルマップは色々な機能のAPIがあって、移動した軌跡や写真の撮影場所が簡単に表現できる便利さから利用を始めましたが、昨年から利用が有料に移行したこともあり、状況の推移を見守っていました。

無料の地図システムもあるようです

地図を無料でネット公開のページに組込み利用できるリーフレットと呼ばれる地図表示システムも開発されていて利用されているようです。そこに、オープンストリートマップ国土地理院の地図のように、利用条件に依っては無料で利用できる地図を組み合わせることで、有料のグーグルマップの利用を回避することもできます。

私も無料化を検討したのですが、グーグルマップはさすがに有料なこともあって、住所を取得や指定をしたり、経度と緯度の操作を行うAPIが充実してることもあって、現状は継続利用しています。

私も無料の地図を利用してみる

今更とは思いますが、利用方法が分かりやすく説明されていることもあって、私がグーグルマップに写真を連動している機能の中にもオープンストリートマップと国土地理院の地図が選択できるように改良してみました。

やはり山歩きや散策では国土地理院の地図

グーグルマップは良くできていると思いますが、山を歩いたり例えば霧ヶ峰高原を散策したりした時に、後から歩いた軌跡を辿って見ても、若い頃にお世話になったあの国土地理院の 1/25,000 の紙地図のような細かい表現はなく、のっぺりしているのが物足りなく感じていました。

ただグーグルマップは凄いです。最近になって感じたことですが、自宅周辺の地図のポイントから住所を拾ってみたのですが、『何番地の何』か、まで正確に表示してました。 ! グーグル恐るべし !

放置してたら凄いことに

プライベートの写真 とか ブログ を公開しているこのサーバーですが、家に置かれた小さな機器で公開しています。
当初の設置から考えると、何度か機器は更新されていて、今現在は日本国内向けとして直接販売されなかったピンク色の PogoPlug で稼働しています。

OS の設定も当時最新だった Debian の1つ前の安定版をチョイスしたのですが、システムを入れるルートパーティションに余裕を持たせるような配慮を頭に置かずにセットアップしてしまいました。

放置しっぱなしは良くないですね

あまり稼動状態に目を向けていなくて、Logwatchで毎日メールを受取っていたにもかかわらず、ちゃんと見ていませんでした。
なんとルートパーティションの使用率が 99% を越えていました。いつからこの状態だったのか…

サイズ的には、2GBしか確保していませんでした。今時の割り振りとは思えない小ささです。しかし、サーバーを稼働したままパーティションの再配分なんてできませんので、ピンチです。

コマンド du でどの部分が占めているのかを確認すると、/usr の下に使われているようです。実際には大した量ではないのですが、割合的に大きいです。
メンテナンス操作は、byobu と screen を組合せた端末から、リモート操作している環境です。

場所を移動させたい /usr 以下をガラガラに空いている場所にコピーして、/usr 以下を消去しました。さすがにその時点でbyobuが表示する各種ステータスに異常な表示が見られました。
心配しましたがメンテナンス操作はできているようです。確信はないのですが、byobu が情報の格納に/usr 以下の領域を利用しているようです。
すかさずコピー先を /usr にソフトリンク ln で結びつけると、少しずつ異常なステータス表示は解消して、正常な状態に復帰しました。

さすがにネットに公開して稼働中のサーバーを荒療治でメンテナンスする経験は無いので、ドキドキな経験でしたが無事に対処できて良かったと思います。

/usr をルートディレクトリから排除したことで、使用率が 58% に下がりました。時間がないと思っていても、時々は管理してやらないといけませんね。かなり反省しています。

WWWアタックをカウント

設置時からずっと気になるのは、セキュリティーホールを探るアタックが多いことです。

ポート22を攻めるSSHは、ごく一般的な基本の攻撃なので驚きはしませんが、ここで公開しているこのブログは標準でDBを使用するので、更新したり セットアップしたりする操作が想定できるセキュリティホール全ての事を、端から試すアタックを受け続けています。

暫く長期で旅行の予定は無いので、家の外からの操作もなく、あまりにウザいアタックなので、ポート22を無効にしています。更に、写真の公開については、特に外部からの情報を受け付けない仕様なので問題外です。

問題はこのブログへのアタック

問題はこのブログへのアタックです。毎日のLogwatchのレポートに多数のエラー404が記録されていて、同じIPアドレスから呆れるくらいの数の悪意な接続がリストされています。

どのような内容かと言うと、セットアップしたり初期化する時に、予め使用が考えられそうな操作やコマンドが全て試されているような状況です。

毎日作成されるレポートには、ログから概要がリストされていますが、IPアドレス単位で回数のカウントまでをまとめたレポートまではありません。そこでアクセスログから集計してみました。

毎日ではウザいので、1週間単位に集計して、テキスト形式で共有サーバーのフォルダに自動蓄積するようにしました。そこから転記して覚書として、ここにまとめてみようかと思います。

 回数 :  アドレス
108 : 18.220.66.54 ec2-18-220-66-54.us-east-2.compute.amazonaws.com. アメリカ
410 : 59.36.169.180 180.169.36.59.broad.dg.gd.dynamic.163data.com.cn. 中国 450 : 61.160.215.38 逆引き 登録なし 中国
108 : 66.24.164.33 cpe-66-24-164-33.stny.res.rr.com. アメリカ
436 : 79.8.64.93 host93-64-static.8-79-b.business.telecomitalia.it. イタリア
108 : 79.120.133.202 逆引き 登録なし ハンガリー
108 : 83.28.183.131 bkp131.neoplus.adsl.tpnet.pl. ポーランド
437 : 94.191.10.62 逆引き 登録なし 中国
  436 : 94.191.71.240 逆引き 登録なし 中国
227 : 103.27.61.244 逆引き 登録なし ベトナム
450 : 103.123.161.50 逆引き 登録なし 中国 108 : 104.34.26.102 cpe-104-34-161-50.socal.res.rr.com. アメリカ
420 : 114.116.94.28 ecs-114-116-94-28.compute.hwclouds-dns.com. 中国
410 : 116.193.155.7 逆引き タイムアウト 中国 436 : 118.89.57.149 逆引き 登録なし 中国
431 : 122.114.186.8 逆引き 登録なし 中国
396 : 122.114.240.241 逆引き 登録なし 中国 410 : 123.207.237.141 逆引き 登録なし 中国
467 : 124.156.167.231 逆引き 登録なし シンガポール
478 : 125.27.179.27 node-zdn.pool-125-27.dynamic.totbroadband.com. タイ 436 : 132.232.44.27 逆引き 登録なし 中国
465 : 132.232.200.165 逆引き 登録なし 中国
416 : 132.232.211.14 逆引き 登録なし 中国 408 : 134.175.30.72 逆引き 登録なし 中国 409 : 139.199.23.198 逆引き 登録なし 中国 405 : 139.199.125.47 逆引き 登録なし 中国
397 : 146.71.56.226 逆引き 登録なし アメリカ
436 : 148.70.130.190 逆引き 登録なし 中国
  449 : 159.192.220.60 逆引き 登録なし タイ
418 : 160.19.49.95 逆引き 登録なし 香港 108 : 182.164.172.192 182-164-172-192f1.shg1.eonet.ne.jp. 日本
416 : 188.131.128.163 逆引き 登録なし 中国 396 : 188.131.181.62 逆引き 登録なし 中国
450 : 188.131.204.15 逆引き 登録なし 中国
108 : 188.192.161.111 ipbcc0a16f.dynamic.kabel-deutschland.de. ドイツ
228 : 192.185.82.119 xenon.websitewelcome.com.
108 : 196.201.197.69 逆引き 登録なし ジブチ
450 : 201.117.251.50 customer-201-117-251-50.uninet-ide.com.mx. メキシコ
420 : 210.89.52.233 Sublime-52-233.pacenet-india.com. インド
437 : 218.161.75.200 218-161-75-200.HINET-IP.hinet.net. 台湾
381 : 220.135.141.52 220-135-141-52.HINET-IP.hinet.net. 台湾
114 : 220.146.236.244 nttkyo699244.tkyo.nt.ngn.ppp.infoweb.ne.jp. 日本
397 : 222.179.152.117 逆引き 登録なし 中国
478 : 222.186.136.116 逆引き 登録なし 中国
450 : 222.192.60.40 逆引き 登録なし 中国
200 : 222.255.46.171 static.vnpt.vn. ベトナム
205 : 2a02:4780:bad:3:fced:1ff:fe03:166 逆引き 登録なし LT:Lithuania

アタックするIPアドレスは、まんべんなく分散しているようです。間隔の狭いアクセスは、1秒に10回程度の機械的な接続を試みています。普通に人が操作しても数秒も掛かる操作を連打されている感じでしょうか。

元々が普通に遅いサーバーなので、処理能力の50倍や100倍の強制操作となっていて、レスポンスに時間がかかるのは当然のようです。

アメリカの amazon aws とかありますけど、クラウドの貸出サーバーでしょうか、アタックするために借りているのかなぁ…、汚染された結果なのか、脆弱な放置システムの検索のために公務で利用しているとか????

日本国内からもアタックがありました。正規に逆引き登録もされているシステムから、回数は 100回程度で少ないのですが記録されています。

リスト更新日 : 2019-04-19

ネット環境の独り言

このブログシステムであるWordPressをよく理解していないまま、メモを残せるところが欲しくて、『ブログ』をキーにしたネット検索のヒット情報から、思い付きで導入してしまったのが、今の利用の切っ掛けです。

そのような訳なので、管理のノウハウももちろん無いまま、運用方法も設定方法もわからないまま今日に至ってしまっています。あまり意識しないままシステムの更新も重ねバージョンも上がっています。

それはそれで良かったのですが、サーバーを移行したいとか、色々と気になることもあるのですが、対応する方法とか手順とか知識がなく分からないので心配の種がつきません。

そんな状況ですから、追加でCSSの設定ができることを知ったのも最近でした。投稿用のエディタの使い方もわからないままとりあえず利用していたのです。

WordPressのエディタが変更されました

そんな中で投稿用のエディタを使いこなす前に、新しいエディタの公開が始まり置き換えられました。今までのエディタはクラッシックとしてプラグインで残されていて利用も選択も可能のようです。

新しいエディタでは段落毎に分割されブロックとして扱われ、間の追加や入替え、写真やライブラリの追加も容易らしく、今までの慣れを持たない初心者が新しく慣れるには最適なのかもしれません。

しかし、以前の投稿内容を複製して、新しいエディタで変更していたら、ぐちゃぐちゃに書き換えられたり、ごっそり消え去ったりと大変な目にあいました。以前のタグによる記述のできるクラッシックブロックと言われる扱いもあるらしいのですが、知識がないと使いこなし方が分かりません。

自己防御に必要で、仕方無くネットから多少の基本的な知識を得ました。新しいエディタがグーテンベルクと名前の付いたエディタで、以前のものをクラッシックエディタと称しているようで、選択して利用できるようにしました。

デフォルトでは新しいエディタが選ばれた状態ですが、選べばクラッシックに変更も可能です。新しいエディタが便利なのは、適当に書き込んでいると下書きの状態が自動で保存されるようです。クラシックの操作では意識して自分で保存する必要があったように思います。

ネットからのアタック多発でコメント禁止に

プライベート写真の公開は、ブログのWordPressの機能を利用していませんので、いつからかを忘れるくらい前からネット上に公開しています。それに追加するイメージで、メモ書きができるようにWordPressのこのブログを立上げました。

当初から悪意のあるアタックがログに多数記録されていましたが、SQLデータベースも利用していないし、SSHのログインではパスワード認証を受け付けていないので、ネットワークトラフィックの増加程度しか影響もなく無視していました。

しかし、『群馬のじゆうじん』さんの歩きによる日本縦断の頃に、ブログ機能を追加してからはアタックが極度に増加して、毎日のログに多数のアタックが書き込まれ、日本語以外のスパムコメントが多数追加されるようになり、時々の管理では削除するのも手が回らなくなり、仕方無くコメントの受付を禁止しました。

--------------------- httpd Begin ------------------------
 Requests with error response codes
    400 Bad Request
       /: 4 Time(s)
       null: 1 Time(s)
    401 Unauthorized
       /: 4 Time(s)
       /menu.js: 1 Time(s)
    403 Forbidden
       /.php: 1 Time(s)
    404 Not Found
       /blog/index.php/2015/08/03/wp-setup-1/: 9 Time(s)
       /x.php: 5 Time(s)
       /1.php: 4 Time(s)
       /confg.php: 4 Time(s)
       /qq.php: 4 Time(s)
       /test.php: 4 Time(s)
       /blog/20190117_121630582/: 3 Time(s)
       /cmd.php: 3 Time(s)
       /z.php: 3 Time(s)
       /2.php: 2 Time(s)
       /MCLi.php: 2 Time(s)
       /api.php: 2 Time(s)
       /blog/index.php/2015/08/04/syslog-cron-1/: 2 Time(s)
       /conflg.php: 2 Time(s)
       /hell.php: 2 Time(s)
       /hello.php: 2 Time(s)
       /help.php: 2 Time(s)
       /log.php: 2 Time(s)
       /manager/html: 2 Time(s)
       /paylog.php: 2 Time(s)
       /q.php: 2 Time(s)
       /robots.txt: 2 Time(s)
       /s.php: 2 Time(s)
       /shell.php: 2 Time(s)
       /sitemap.xml: 2 Time(s)
       /test123.php: 2 Time(s)
       /wp-login.php: 2 Time(s)
       /xx.php: 2 Time(s)
       /zxc1.php: 2 Time(s)
       /.well-known/assetlinks.json: 1 Time(s)
       /.well-known/security.txt: 1 Time(s)
       //MyAdmin/scripts/setup.php: 1 Time(s)
       //myadmin/scripts/setup.php: 1 Time(s)
       //phpMyAdmin/scripts/setup.php: 1 Time(s)
       //phpmyadmin/scripts/setup.php: 1 Time(s)
       //pma/scripts/setup.php: 1 Time(s)
       /1111.php: 1 Time(s)
       /1213.php: 1 Time(s)
       /123.php: 1 Time(s)
       /1hou.php: 1 Time(s)
       /1q.php: 1 Time(s)
       /3.php: 1 Time(s)
       /51.php: 1 Time(s)
       /51314.php: 1 Time(s)
       /5201314.php: 1 Time(s)
       /56.php: 1 Time(s)
       /666.php: 1 Time(s)
       /7.php: 1 Time(s)
       /777.php: 1 Time(s)
       /92.php: 1 Time(s)
       /9510.php: 1 Time(s)
       /9678.php: 1 Time(s)
       /HX.php: 1 Time(s)
       /MyAdmin/index.php: 1 Time(s)
       /PMA/index.php: 1 Time(s)
       /PMA2/index.php: 1 Time(s)
       /Ss.php: 1 Time(s)
       /_query.php: 1 Time(s)
       /a.php: 1 Time(s)
       /aa.php: 1 Time(s)
       /aaaa.php: 1 Time(s)
       /aaaaaa1.php: 1 Time(s)
       /admin/PMA/index.php: 1 Time(s)
       /admin/index.php: 1 Time(s)
       /admin/mysql/index.php: 1 Time(s)
       /admin/mysql2/index.php: 1 Time(s)
       /admin/phpMyAdmin/index.php: 1 Time(s)
       /admin/phpmyadmin/index.php: 1 Time(s)
       /admin/phpmyadmin2/index.php: 1 Time(s)
       /admin/pma/index.php: 1 Time(s)
       /admn.php: 1 Time(s)
       /ak.php: 1 Time(s)
       /ak47.php: 1 Time(s)
       /ak48.php: 1 Time(s)
       /angge.php: 1 Time(s)
       /aotu.php: 1 Time(s)
       /aotu7.php: 1 Time(s)
       /app.php: 1 Time(s)
       /appserv.php: 1 Time(s)
       /bak.php: 1 Time(s)
       /blog//wp-content/plugins/wp-special-textb ... tb-uploader.php: 1 Time(s)
       /blog/?author=2: 1 Time(s)
       /blog/?author=4: 1 Time(s)
       /blog/index.php/2015/08/31/kawashimo/: 1 Time(s)
       /blog/index.php/2015/09/22/numanodaira/: 1 Time(s)
       /blog/index.php/2015/10/29/windows-vista/: 1 Time(s)
       /blog/index.php/2016/03/22/gun/: 1 Time(s)
       /blog/index.php/2016/09/04/rpi3-setup-8/: 1 Time(s)
       /blog/index.php/category/raspberry-pi/page/3/: 1 Time(s)
       /boots.php: 1 Time(s)
       /cacti/plugins/weathermap/editor.php: 1 Time(s)
       /cadre.php: 1 Time(s)
       /cainiao.php: 1 Time(s)
       /caonma.php: 1 Time(s)
       /cc.php: 1 Time(s)
       /ceshi.php: 1 Time(s)
       /cgi-bin/config.exp: 1 Time(s)
       /claroline/phpMyAdmin/index.php: 1 Time(s)
       /cmdd.php: 1 Time(s)
       /cmv.php: 1 Time(s)
       /cn.php: 1 Time(s)
       /cnm.php: 1 Time(s)
       /conf.php: 1 Time(s)
       /conf1g.php: 1 Time(s)
       /core.php: 1 Time(s)
       /cxfm666.php: 1 Time(s)
       /data.php: 1 Time(s)
       /db.init.php: 1 Time(s)
       /db.php: 1 Time(s)
       /db/index.php: 1 Time(s)
       /db__.init.php: 1 Time(s)
       /db_cts.php: 1 Time(s)
       /db_dataml.php: 1 Time(s)
       /db_desql.php: 1 Time(s)
       /db_pma.php: 1 Time(s)
       /db_session.init.php: 1 Time(s)
       /dbadmin/index.php: 1 Time(s)
       /default.php: 1 Time(s)
       /defect.php: 1 Time(s)
       /desktop.ini.php: 1 Time(s)
       /dexgp.php: 1 Time(s)
       /diy.php: 1 Time(s)
       /errors.php: 1 Time(s)
       /erwa.php: 1 Time(s)
       /fack.php: 1 Time(s)
       /favicon.ico: 1 Time(s)
       /fb.php: 1 Time(s)
       /feixiang.php: 1 Time(s)
       /fusheng.php: 1 Time(s)
       /general.php: 1 Time(s)
       /godkey.php: 1 Time(s)
       /h1.php: 1 Time(s)
       /hack.php: 1 Time(s)
       /hacly.php: 1 Time(s)
       /help-e.php: 1 Time(s)
       /hh.php: 1 Time(s)
       /hm.php: 1 Time(s)
       /horde/imp/test.php: 1 Time(s)
       /horde3/imp/test.php: 1 Time(s)
       /htdocs.php: 1 Time(s)
       /htfr.php: 1 Time(s)
       /imp/test.php: 1 Time(s)
       /index.php: 1 Time(s)
       /index1.php: 1 Time(s)
       /indexa.php: 1 Time(s)
       /info.php: 1 Time(s)
       /info1.php: 1 Time(s)
       /infoo.php: 1 Time(s)
       /infos.php: 1 Time(s)
       /ip.php: 1 Time(s)
       /j.php: 1 Time(s)
       /java.php: 1 Time(s)
       /knal.php: 1 Time(s)
       /l6.php: 1 Time(s)
       /l7.php: 1 Time(s)
       /l8.php: 1 Time(s)
       /lala-dpr.php: 1 Time(s)
       /lala.php: 1 Time(s)
       /ldw.php: 1 Time(s)
       /license.php: 1 Time(s)
       /lindex.php: 1 Time(s)
       /linux.php: 1 Time(s)
       /linux1.php: 1 Time(s)
       /linuxse.php: 1 Time(s)
       /logon.php: 1 Time(s)
       /lol.php: 1 Time(s)
       /lost.php: 1 Time(s)
       /lx.php: 1 Time(s)
       /m.php: 1 Time(s)
       /m.php?pbid=open: 1 Time(s)
       /miao.php: 1 Time(s)
       /min.php: 1 Time(s)
       /mm.php: 1 Time(s)
       /muhstik-dpr.php: 1 Time(s)
       /muhstik.php: 1 Time(s)
       /muhstik2.php: 1 Time(s)
       /muhstiks.php: 1 Time(s)
       /muieblackcat: 1 Time(s)
       /mx.php: 1 Time(s)
       /myadmin/index.php: 1 Time(s)
       /myadmin2/index.php: 1 Time(s)
       /mysql-admin/index.php: 1 Time(s)
       /mysql/admin/index.php: 1 Time(s)
       /mysql/dbadmin/index.php: 1 Time(s)
       /mysql/index.php: 1 Time(s)
       /mysql/mysqlmanager/index.php: 1 Time(s)
       /mysql/sqlmanager/index.php: 1 Time(s)
       /mysql_admin/index.php: 1 Time(s)
       /mysqladmin/index.php: 1 Time(s)
       /mz.php: 1 Time(s)
       /nuoxi.php: 1 Time(s)
       /okokok.php: 1 Time(s)
       /ou2.php: 1 Time(s)
       /p.php: 1 Time(s)
       /pe.php: 1 Time(s)
       /php.php: 1 Time(s)
       /phpAdmin/index.php: 1 Time(s)
       /phpMyAbmin/index.php: 1 Time(s)
       /phpMyAdm1n/index.php: 1 Time(s)
       /phpMyAdmin+++---/index.php: 1 Time(s)
       /phpMyAdmin-4.4.0/index.php: 1 Time(s)
       /phpMyAdmin.old/index.php: 1 Time(s)
       /phpMyAdmin/index.php: 1 Time(s)
       /phpMyAdmin/phpMyAdmin/index.php: 1 Time(s)
       /phpMyAdmin/scripts/db___.init.php: 1 Time(s)
       /phpMyAdmin/scripts/setup.php: 1 Time(s)
       /phpMyAdmin1/index.php: 1 Time(s)
       /phpMyAdmin123/index.php: 1 Time(s)
       /phpMyAdmin__/index.php: 1 Time(s)
       /phpMyAdmina/index.php: 1 Time(s)
       /phpMyAdminold/index.php: 1 Time(s)
       /phpMyAdmion/index.php: 1 Time(s)
       /phpMyadmi/index.php: 1 Time(s)
       /phpMyadmin_bak/index.php: 1 Time(s)
       /phpMydmin/index.php: 1 Time(s)
       /phpStudy.php: 1 Time(s)
       /phpadmin/index.php: 1 Time(s)
       /phpinfi.php: 1 Time(s)
       /phpma/index.php: 1 Time(s)
       /phpmy/index.php: 1 Time(s)
       /phpmyadm1n/index.php: 1 Time(s)
       /phpmyadmin-old/index.php: 1 Time(s)
       /phpmyadmin/index.php: 1 Time(s)
       /phpmyadmin/phpmyadmin/index.php: 1 Time(s)
       /phpmyadmin/scripts/db___.init.php: 1 Time(s)
       /phpmyadmin/scripts/setup.php: 1 Time(s)
       /phpmyadmin0/index.php: 1 Time(s)
       /phpmyadmin1/index.php: 1 Time(s)
       /phpmyadmin2/index.php: 1 Time(s)
       /phppma/index.php: 1 Time(s)
       /phpstudy.php: 1 Time(s)
       /plugins/weathermap/editor.php: 1 Time(s)
       /pma-old/index.php: 1 Time(s)
       /pma.php: 1 Time(s)
       /pma/index.php: 1 Time(s)
       /pmamy/index.php: 1 Time(s)
       /pmamy2/index.php: 1 Time(s)
       /pmd/index.php: 1 Time(s)
       /pmd_online.php: 1 Time(s)
       /post.php: 1 Time(s)
       /ppx.php: 1 Time(s)
       /program/index.php: 1 Time(s)
       /public/20040606.yunomaru/publicindex.html: 1 Time(s)
       /pwd/index.php: 1 Time(s)
       /python.php: 1 Time(s)
       /qa.php: 1 Time(s)
       /qaq.php: 1 Time(s)
       /qaz.php: 1 Time(s)
       /qq5262.php: 1 Time(s)
       /qw.php: 1 Time(s)
       /qwe.php: 1 Time(s)
       /qwq.php: 1 Time(s)
       /qwqw.php: 1 Time(s)
       /repeat.php: 1 Time(s)
       /ruyi.php: 1 Time(s)
       /s/index.php: 1 Time(s)
       /s1.php: 1 Time(s)
       /scripts/setup.php: 1 Time(s)
       /sean.php: 1 Time(s)
       /sha.php: 1 Time(s)
       /shaAdmin/index.php: 1 Time(s)
       /she.php: 1 Time(s)
       /sheep.php: 1 Time(s)
       /shopdb/index.php: 1 Time(s)
       /ss.php: 1 Time(s)
       /ssaa.php: 1 Time(s)
       /sss.php: 1 Time(s)
       /system.php: 1 Time(s)
       /text.php: 1 Time(s)
       /tiandi.php: 1 Time(s)
       /tomcat.php: 1 Time(s)
       /tools/phpMyAdmin/index.php: 1 Time(s)
       /toor.php: 1 Time(s)
       /typo3/phpmyadmin/index.php: 1 Time(s)
       /u.php: 1 Time(s)
       /up.php: 1 Time(s)
       /uploader.php: 1 Time(s)
       /users-online/: 1 Time(s)
       /uu.php: 1 Time(s)
       /uuu.php: 1 Time(s)
       /v/index.php: 1 Time(s)
       /ver.php: 1 Time(s)
       /w.php: 1 Time(s)
       /wan.php: 1 Time(s)
       /wanan.php: 1 Time(s)
       /wb.php: 1 Time(s)
       /wc.php: 1 Time(s)
       /wcp.php: 1 Time(s)
       /web/phpMyAdmin/index.php: 1 Time(s)
       /webdav/: 1 Time(s)
       /webmail/imp/test.php: 1 Time(s)
       /webslee.php: 1 Time(s)
       /weixiao.php: 1 Time(s)
       /win.php: 1 Time(s)
       /win1.php: 1 Time(s)
       /wp-admins.php: 1 Time(s)
       /wp-config.php: 1 Time(s)
       /wp-content/plugins/portable-phpmyadmin/wp-pma-mod/index.php: 1 Time(s)
       /wpc.php: 1 Time(s)
       /wpo.php: 1 Time(s)
       /wshell.php: 1 Time(s)
       /wuwu11.php: 1 Time(s)
       /www/phpMyAdmin/index.php: 1 Time(s)
       /xampp/phpmyadmin/index.php: 1 Time(s)
       /xiao.php: 1 Time(s)
       /xiaodai.php: 1 Time(s)
       /xiaohei.php: 1 Time(s)
       /xiaoma.php: 1 Time(s)
       /xiaomae.php: 1 Time(s)
       /xiaomar.php: 1 Time(s)
       /xiaomo.php: 1 Time(s)
       /xiaoyu.php: 1 Time(s)
       /xp.php: 1 Time(s)
       /xshell.php: 1 Time(s)
       /xw.php: 1 Time(s)
       /xw1.php: 1 Time(s)
       /xxx.php: 1 Time(s)
       /xz.php: 1 Time(s)
       /yao.php: 1 Time(s)
       /yj.php: 1 Time(s)
       /yumo.php: 1 Time(s)
       /zshmindex.php: 1 Time(s)
       /zuo.php: 1 Time(s)
       /zuoindex.php: 1 Time(s)
       /zuos.php: 1 Time(s)
       /zuoshou.php: 1 Time(s)
       /zuoshss.php: 1 Time(s)
       /zuoss.php: 1 Time(s)
       /zxc0.php: 1 Time(s)
       /zxc2.php: 1 Time(s)
       /zzk.php: 1 Time(s)
    405 Method Not Allowed
       /: 1 Time(s)
       /blog/xmlrpc.php: 1 Time(s)
       133.130.126.119:43: 1 Time(s)
    408 Request Timeout
       null: 1 Time(s)
 ---------------------- httpd End -------------------------
 --------------------- SSHD Begin ------------------------
 Illegal users from:
    undef: 164 times
    23.226.82.76: 11 times
    37.49.225.93: 31 times
    88.214.26.15: 2 times
    95.78.163.55 (95x78x163x55.static-business.chel.ertelecom.ru): 11 times
    113.124.142.159: 1 time
    155.4.252.84 (h-252-84.A259.priv.bahnhof.se): 1 time
    156.220.114.220 (host-156.220.220.114-static.tedata.net): 1 time
    178.135.245.108: 1 time
    183.101.51.180: 1 time
    193.201.224.218: 213 times
    195.88.208.72 (208-72.static.spheral.ru): 4 times
    195.88.208.247 (208-247.static.spheral.ru): 4 times
    222.138.93.66 (hn.kd.ny.adsl): 1 time

こんなのが毎日記録されていて、さすがに慣れっこになってしまいます。

まだ固定電話の工事が残っているので、正式には移行が完了していませんが、ブラスト光に環境は置き換えていて、支給されているルーターは中国共産党の汚染問題が懸念されているファーウェイ製です。機種名は HG8045Qとなっています。ログインして項目を見ると色々な設定ができるようです。

その前にワイモバイルで契約したソフトバンク支給ルーターは、設定できる項目が少なく、かつ少し働くと勝手に眠りにつくらしいDNSで、スマホでネット情報を検索したくても繋がらなくて、日に何度もルーターをリセットしていたことを考えると嘘のような使い物にならない困り物でした。そしてクレームしたくても問合せ先が不明でした。

せめてDHCPサーバーの機能で、 DNSサーバーを指定する項目があれば、スマホからでも WiFiでインターネットが利用できるのですが、独自に立てているDNSサーバーを活かすこともできなくて、1つの回避策は WiFiを利用しないで有料の4G/3Gの専用線を常時利用することです。これってソフトバンクの政策でしょうか、詐欺的商法に思えます。

それを考えるとファーウェイのHG8045Q は、排除するIPアドレスも簡単に指定できるようになったので、とても使い勝手が良くなりました。そこで先程の話題で触れた異常に回数の多いアタックのIPアドレスをブロックしてみようかと考えました。

様子を見ながら少しずつアタック IPを追加してブロック

今回のアタック対策では、同一IPアドレスから複数回 22番ポートのSSHに対して行われているものを対象としてブロックしてみましたが、やはり効果はあるようです。ブログやプライベート写真公開へのアタックも同様に激減しているように思えます。

次の懸念材料は、スパムコメントの対策です。どんどん追加されるコメントで溢れ意味もわからないまま追われました。何のコメントを追加してくれたのかと思い、必死に日本語にしてみると何のことはない内容で、バイアグラが安いとか、ランジェリーが何だとかの宣伝をコメントに書き込んでいるだけでした。

機械的にスパムコメントを送りつけているだけの対策ですが、ネットを調べていると日本語の含まれないコメントをスパムとして排除する方法で、初期設定のままでも結果が満足だと紹介している情報に行き当たりました。

私の公開しているWebにスパム以外のコメントが付いた経験もなく、日本語以外のコメントが付けられること自体がありえないことのようなので、私に完璧に一致している対策のようです。

その対策用プラグインは、Throws SPAM Away と付けられたもので、導入すると管理用のメニューに設定変更の項目が追加され、色々な適用項目の選択ができるようになるようです。まずはそのまま変更無しで利用してみます。

スパムコメント対策を実施して、コメント受付を試す

そして最近の投稿にだけコメントの追加ができるように変更してみました。一応メモを蓄積するブログなので、コメントを受付けるのが筋かと思いますので、今後は様子を見ながら対策のカスタマイズをしたいと思います。

ネットのプロバイダー変更

ラズパイ1B+のネット共有サーバー化は、少しずつ進めていますが、並行してこのブログサーバーや家の中のネットワーク環境の整備も進めなければいけません。

昔、電話回線経由のモデムで接続してパソコン通信のような使い方が主流だった頃から、@niftyを利用していました。

高速で通信が出来る環境が少しずつ地方にも行き渡り始めて、光ファイバーかメタルのADSLかで騒がれ出した頃に、満を持してADSLに申し込んだのですが、何とこの地域はNTTの庁舎から少し離れているらしく、直接メタルで繋がっていないようで実現しませんでした。

少しモヤモヤとして待つと光ファイバーが近くまで敷設されて、フレッツ光になりました。昔の事は記憶から薄れてしまいましたが、多分その頃から厚く溜まったアルバムの写真を始末したいと考え始めて、勤めていた会社の仕事からLinuxやサーバーの知識も増え、Webサーバーを立ち上げようと考え出して今に至ってます。

その後のネット環境ですが、当時のフレッツ光の時には、宅内のルーターがOKI製の物でした。世間では盛んにIPアドレスの不足が議論され、ipv6が騒がれていた時代だったようですが、何故かNTTでは ipv6 がオプションで有料でした。

サーバーを宅内に置いて、一応外部にも公開しているので、今後のことも考えれば ipv6 環境でも動作の検証が必要でした。しばらくしてプロバイダ料金も含めて光の接続料金が安くなるので、KDDI に乗り換えました。

KDDI は、ipv4 、 ipv6 共に環境は良く、ストレス無く最高の利用環境でした。時代は変わり技術が向上したから、多分どの通信業者でも問題はないだろうと考えるようになりました。後にこれが大きな間違いだと知ることになります。

会社に勤めていた頃は、会社の携帯電話を使っていたため、個人で電話を持つ必要がなかったのですが、退社して安い携帯電話としてウイルコムの PHS を使い始めました。その後ワイモバイルになり親会社がソフトバンクになったわけです。

携帯電話は、家族を含めてスマホに変わり、ソフトバンク光だとスマホとの割引が行われ、トータルの維持費が安くなると勧められて、その気になってしまったのが大きな間違いでした。

ソフトバンク光は、ほぼ二年間の利用でしたが色々な場所で最悪でした。まず最初に、家の中の稼働サーバーに合わせてルーターのプライベートアドレスを変更しようとしたら、そのセグメントアドレスは内部で使用のため変更できないとエラーになりました。仕方無くサーバーの固定アドレス全てを順次変更して落ち着くまで時間も掛かり大変でした。

その後、公開用サーバーとしても稼働させたこともある ipv4 でしか動作しない古い Linux のネット共有サーバーが、DHCP サーバー機能としても稼働していましたが、老朽化で故障しました。仕方無くソフトバンク光のルーターでDHCPサーバー機能を使うことになりましたが、DNSサーバーアドレスを設定できません。自分以外をDNSとして認めない設計です。

実にこれには困りました。故意なのか常時接続のはずなのに、できるだけ通信させない仕様のようで、DNSとしての機能を放棄してしまいます。インターネットでネームサーバーからIPアドレスが引けなかったら通信が始まりません。転送速度が早いとか遅いとかの次元の前の話です。

ソフトバンク光って、NTT光回線を借用しているので、NTTに気兼ねして通信をさせないように意図してしているのか、NTTに弄ばれているのかは判断できませんが、昔のパソコン通信以下です。スマホで検索しようとすると WiFi は、インターネットに接続していませんとなり、仕方無く 3G/4G の外部通信を使うか、ルーターをリセットして再立ち上げするかしか無く、1日に5回もリセットする日もありました。

スマホって小さくて身近にあって、思い付いて検索できたりニュースが見られ、本来非常に便利なはずなのに家の中に居て WiFi に接続できる環境なのに、有料の通信を利用させるのって詐欺じゃないでしょうか。

普段使いのノートPCや宅内に置かれた Linux サーバー類は、自分自身で DNS をサービスしているので、特に問題なくインターネットに接続できていますが、最近では一番利用頻度の高い身近なスマホが利用できないのには参りました。

スマホを利用していて、少し間が開くと節電で画面が消えますが、また起動するとWiFi はインターネットに接続していませんと警告を表示して役に立たなくなってしまいます。自分で DHCPサーバーを立てようかと悩んでいた時に誘いがありました。正に渡りに船ですよね。

今現在は家の中に3本の光ファイバーが敷設されています。一昨日NTTの業者が工事して接続して帰りましたので、その夜から電源を入れルーターを触り始めて、昨日には載せ替えの目処がたち接続を変えました。今現在はブラスト光に接続しています。

あまりにソフトバンクの環境が酷すぎて、よく調べないでブラスト光に契約してしまいましたが、これも親会社がソフトバンクらしいですね。ちょっとネットを見たら色々書かれているようで先が心配になりますが、今の所ネットへの繋がりは良さそうです。

ルーターも最近話題の中国のファーウェイ製の高機能ルーターで、HG8045Q とかです。色々な項目が設定できるようで、設定の仕方がわからないのでネットから情報をゲットして操作しました。当然ですが、DHCPサーバーの設定ではDNSサーバーのアドレスも設定でき、スマホも快適に WiFi に接続できています。

ついでに、プロバイダが変更になるため、ipv6 のアドレスが変わるのでその修正も含めて、昨日から宅内設置のサーバー類のDNSサーバーを見直しています。今まではサーバーで個々に定義設定していたものを1箇所の master のゾーンを変更して、他の slave に自動転送する念願の設定に移行しました。

公開しているWebサーバーも特には問題なさそうに見えます。借りている DDNS も引けているようだし、ipv4 / ipv6 のアドレスも更新できているようでした。

その公開Webサーバーの話ですが、今では外部のサーバーを借りて、クラウドでシステムを立ち上げるのが主流になっています。私は古い人間なので、借りた場所に組み込んで維持するのには安心ができません。会社組織で管理して、人が脈々と受け継がれていくのなら問題ないでしょうが、個人で管理している場合は、病気や怪我で入院や死亡もあるので、自宅に置いておくのが一番だと思っています。

今公開しているWebサーバーも、何代か置き換わりながら稼働しています。ちょっと非力ではありますが、稼働している Debian Linux もセキュリティアップデートも行って維持できています。いつまで現状の PogoPlug が稼働できるのかは分かりませんが、しばらくこのままかと思います。