WEBサイトがダウンした時の確認ポイント
WEBサイトが突然見られなくなった!ホームページがダウンした!挙動が不安定だ!お客様からホームページが見られないと連絡をいただいた!など、新規問合せをいただくことがあります。そのような時に、確認すべき事は以下です。
- 500番や400番などのエラーコード(HTTPステータスコード)確認
- .htaccess(apache)やphp.ini、httpd.conf(apache)やnginx.conf(nginx)などで(バーチャル)ホスト設定の確認。
- ドメインやサーバー(VPS、クラウド)の契約期限切れ
- メディアクローズアップなど、急速にサーバーが高負荷になる可能性。CPU使用率やメモリ使用率、ディスク(HDD/SSD)のI/O状態などの確認。
- ワードプレスなどのCMSやフレームワーク側のログ解析
- phpやデータベース(MySQLなど)のログ解析
- Linuxサーバー自体のログ解析
- DDOS攻撃、総当たり攻撃でログイン突破された可能性
- htmlのheadタグ前後にマルウェアを埋め込まれていないか?webshellやバックドアなどを仕掛けられていないか?脆弱性を利用された可能性。
ログ解析は、英数記号などの超大量文字羅列を目視で追う、機械に対して人手で行うアナログ作業です。有料ツールを導入して人間への負荷を減らしてください。
セキュリティ脆弱性を突かれる原因は、ワードプレス本体(コア)、テーマ、プラグインの更新放置、サーバー内でワードプレスを下から支えるアプリケーションたちの更新(yum updateなど)の放置も原因の一つです。同じサーバーの中で運営している別のWEBサイトに脆弱性があり、別のWEBサイトが受けた攻撃によってサーバー全体で侵食される場合などもあります。その他admin/adminなどのハッカーが試す様な、使ってはいけない危険なログインアカウントを使っていたり、テキスト数が少ないパスワードで辞書攻撃により簡単にログイン突破されたケースなど多岐にわたります。管理画面ログインURLをデフォルト状態から変更しておく事は常識です。
HTTPステータスコードについて
パソコンやスマホなどの(クライアント)ブラウザのクリックイベント(動作)などによる命令(リクエスト)信号をサーバー(リモートホスト)が受け取り、ブラウザに命令の処理結果(レスポンス)をサーバー(リモートホスト)が返します。HTTPステータスコードは、レスポンス(サーバーが訪問者のパソコンやスマホに送り返すデータ)の健康チェックバロメーターの様なものだと考えてください。
HTTPステータスコードは、100番台から500番台まであり、基本的に400番と500番がエラーです。ステータスコード確認は、クロームのディベロッパーツール、OWASP ZAP、グーグルサーチコンソール、オンラインツールなど数多くあります。個人的にはクロームディベロッパーツールのNetworkでHeadersをよく使います。200番やgzip圧縮のファイル容量確認など、かなりいろいろな用途で使います。注目すべきはエラーの400番台と500番台です。
403
ブラウザで『403 Forbidden』などが表示される事が多いです。リクエストを受けたファイルなどについて、外部からのアクセス権限をサーバー管理者が認めていない。セキュリティ対策が施された部分などの場合です。サーバー管理者など、サーバー自体にログインできる人がサーバーにログインした後でないとそのファイルを見られない様にするなど、ファイルやディレクトリのパーミッションやファイヤーウォールの設定を疑ってみてください。パーミッションは、chmodコマンド(アクセス権変更)、chgrpコマンド(グループ変更)、chownコマンド(所有者変更)。ファイヤーウオールはiptablesやfirewalld、AWSだったらVPCのセキュリティグループなどです。
404
『404 Not Found』などがブラウザに表示されます。URLのページリクエストを受け取ったサーバー内でコンテンツが探されたけど、見つからなかった場合にレスポンスとしてユーザーに帰って来る返事です。独自ドメインを変更したり、SSL化を行った時は、正しいURLへのリダイレクトを行ってください。
410
『410 Gone』などがブラウザに表示されます。リクエストを受け取ったURLのページはサーバー内で消去されたというレスポンスです。見かける事は少ないです。
500
『500 Internal Server Error』などがブラウザに表示されます。サーバー内のディレクトリやファイルのパーミッションの設定に問題がある可能性があります。パーミッションを777で全開放にしていると500エラーが出たりしやすいので、755などwriteの権利が所有者だけになるようにしてみてください。
他には改行コードの問題であったり、文字エンコードの設定をUTF-8 BOMなしに変えてみるなどの可能性も疑ってください。
503
『503 Service Temporarily Unavailable』などがブラウザに表示される場合、同時アクセスが多過ぎるなど、サーバーに対する負荷が、サーバースペック(処理能力)を越えている状態の場合があります。ヤフー砲やグーグル砲などメディアでクローズアップされたことにより、大量のアクセスが1秒間に押し寄せてくるスパイクアクセスを疑ってください。世の中の経営者が軽視しやすいビジネス成長ボトルネックです。DatadogやZabbixなどでサーバー監視を行ってください。WEBサイトオーナーが知らない場所で知らない人に対して、サーバーが隠れてエラーを吐きます。どんなに素晴らしいコンテンツを書いてもWEBページを見せられなければ無駄になります。ネットワーク遅延の改善とPV向上は、深い関係があります。
契約しているサーバーのネットワーク回線の帯域制限(データ送信量)や月間or1秒間あたりのサーバーの通信トラフィックボリューム確認を行う必要が有ります。安いサーバーは特にトラフィック制限を無断でかけられている可能性も否めません。負荷分散(ロードバランサー)、CDN(Contents Delivery Network)、Memcached/Redisの導入が必要です。
レンタル共有サーバーには、セキュリティ対策、負荷対策、表示速度対策、ネットワーク回線の同時アクセス数限界など、技術的な問題への対応限界があります。
サーバーにお得な買い物はありません。世の中のサーバーはすべて価格相応です。サーバー料金をケチる限り、503を乗り越える事は出来ません。月3000円程度の費用すら出せない場合、月間20万PV以上などのインターネット集客活用を目指さす事は出来ません。月10万~月20万PVを越えてくると、WEBサイトによるビジネス貢献が顕著になってきます。
WEBサイトダウンの監視方法
サーバーの死活監視などと言われ、PCI DSSなども関連してきます。無料であればUptimeRobotが設定も簡単でお勧めです。集客施策を台無しにしない為にも無料アラートは必ず使ってください。サーバーの健康状態を丁寧にチェックするために、DatadogやZabbixとfluentdを組み合わせて使う方法もあります。
UptimeRobotはネットワーク遅延系のエラーを見つけてくれるので、WEBサイトオーナーが気付けない致命的な機会損失をあぶりだしやすいです。このあたりのエラーはサーバー料金をケチると発生します。IT業界は価格相場が洗練されているので安くてお得な買い物という事はあまりないです。安いものは安いなりに理由があります。
ワードプレスのログ管理
ログ管理のWP Security Audit Logやアクティビティログプラグインなどを使います。ただし、マルウェアによってはログを書き換えて痕跡を残さないようにするものもあります。WoocommerceなどのECワードプレスの場合は、他のストレージへ定期的にバックアップを取るなど2重/3重の対策が推奨されます。
他のCMSやフレームワークでも、ログ確認方法は必ず存在します。
サーバーのログ確認方法
SSHでサーバー(ホスト)にログインします。cdコマンドを使って/var/logまで移動してください。
※Linux CentOSではなく、Linux UbuntuやLiteSpeedなどのLinuxディストリビューションやサーバー構築者によって配置場所が異なる場合があります。
//サーバーのルートディレクトリまで移動 cd ../../.. //ログのディレクトリまで移動 cd /var/log/
sshでログインした際のlinuxの一般ユーザーから、rootユーザーにユーザー変更をしないと閲覧できないログファイルがあります。sudo su -
などで予めルートに成っておいたほうが楽ですが、サーバーの最高権限者になると、全削除のrm -rf
コマンドなど何でも出来ますので気を付けてください。
サーバーのroot(ルート)ユーザーのパスワードや公開鍵などがわからないと、サーバーの管理者ユーザーとしてログインできません。rootユーザーのパスワードや公開鍵の再発行には、サーバー再起動が必要などが有ります。Hyper-V、VMware、Xenなど仮想化基盤に採用している技術の種類によってrootユーザーのパスワードや公開鍵の再発行の手順や方法に違いもあります。ただし、レンタル共有サーバーの場合、root権限が一般契約者に与えられることはありません。そのため、見る事ができるログの種類が制限されています。
catコマンドやlessコマンドなどを使って実際にログを確認し、サーバーに何が起こったのか追及します。色々なログがありますが、下記種類を知っておくといいです。
//logデイレクトリにたどり着いてrootユーザーに変更した後に各種のログを確認していくためのコマンド //一般的なシステム関連のログ root権限が必要かも。 cat /messages //rootユーザーに変更しないと見られないログです。sshdやsudoコマンドなど、接続に関するログです。 cat /secure //cron関連のログ cat /cron //メール関連 cat /maillog //印刷関連 cat /spooler //起動関連 cat /boot.log //webサーバーのapacheログはhttpdです。 //catの画面から元のカーネルのコマンド操作画面に戻るには、escキーを押して半角英数で『:q(コロンキュー)』を押してください。 //catの代わりにmoreコマンド、tailコマンド、lastコマンド、lastlogコマンドなどを使う事も出来ます。 //検索する場合、grepコマンドを使います。
ログローテーションによって生成されたファイルは日付で追う事ができます。基本的にやりたくないですが、生ログを目視で頑張る場合、ApacheLogViewerなどのツールを使います。
金融系システムとログ管理
エンドポイント監視など、ログ監視は、予兆をつかみ、侵入検知する等の重要な手掛かりとなります。ログの集中管理は非常に重要なセキュリティ対策の1つです。官庁査察などがある場合、インシデントの重要な証拠となります。
オススメはクラウド活用
Microsoft Azureでは、Azure 診断(仮想マシン)やApplication Insights(Azure Web Service)、Amazon AWSではCloud Watchなど、いろいろな監視サービスがあります。クラウドサービスを使ってWEB運営を行う場合は、クラウドサービス提供元がIaasやPaasに対して標準提供している監視ツールもオススメです。クラウドの場合、監視だけでなくオートスケールやフェールオーバーなどもできます。WEBシステムの信頼性確保はビジネスの根幹です。クラウド活用できない企業とクラウド活用できる企業で大きな差が開き続けます。