不揃いの林檎達を毒林檎にするな!/或るWebサイトの開発事情/ちゃんと最新版に更新されているのかな?

【投稿者コメント】


【キーワード】

[サイト安全維持は義務]、[ソフトを常に更新せよ]、[定期的に安全性診断を]


【件名】

「不揃いの林檎達は危険だ!/或るWebサイトの開発事情/ちゃんと最新版に更新されているのかな?」


【投稿本文】


 当サイトの会員の中には、御自分で、WordPress等でサイトを開設されている方もおられるだろう。

 Webサイトの安全性の維持は、果てしない作業の連続だが、最低限の安全措置は以下の通りだ。


WORDPRESSでサイトを開設した場合の最低限のセキュリティ措置】


WordPressのユーザー名を取得されない様にすべし

→攻撃者がブルートフォースアタックを行う際の手助けとなり、容易に管理画面に不正アクセスされる可能性がある。プラグイン「Edit Author Slug」で隠蔽せよ。

②強制ブラウジングによるWordPress管理画面の閲覧を可能にするな

→ログインされると管理機能の奪取等が容易に成功してしまい、サイトの改ざん、情報の漏洩の危険性がある。管理画面にBASIC認証を掛けよ!

③バージョン情報を露呈させるな

→バージョン情報を元に仕様や公開されているバグ情報等の攻撃の方法が絞り込めるので、リスクが増す。ApachePHPWordPress各々のファイルを修正する。

 まずはApacheのバージョン非表示設定だが、httpd.confに「ServerTokens Prod」を追記してApacheを再起動する。

 次にPHPのバージョンを非表示にする為に、httpd.confに「Header unset X-Powered-By」を追記してApacheを再起動する。

 叉は、php.iniの「expose_php = On」を「expose_php = Off」に変更しても、非表示に設定出来る。

 最後にWordPress本体のバージョンを非表示設定は、管理画面にログインして「テーマの編集」からfunctions.phpに「remove_action(‘wp_head’,’wp_generator’);」を追記して「ファイルを更新」する。

 これでApachePHPWordPressのバージョン非表示設定が完了だ。

④ログイン画面の設定不備にするな/アカウントロックを掛けよ

→ログイン失敗回数に制限がない場合は、パスワード辞書の使用や総当たりに依るパスワードクラッキング攻撃が成功する恐れがある。アカウントのロック機能を実装せよ。

HTTPSによる暗号化通信の抜けに注意すべし

→HTTPでは通信内容の暗号化が行われないので、個人情報の盗聴が行われる可能性がある。 部分的なHTTPS化では、コンテンツ改変でHTTPS化が漏れる可能性があるので、サイト全体をSSL化すべし。プラグイン「Really Simple SSL」で対応せよ。

⑥バックアップに依る対策をせよ

→ハッキング被害(クラッキング)に遭った時の為に、バックアップを取得する事は必須だ。 WordPressサイトでバックアップすべき項目は3つだ。
 1つ目はWordPressのフォルダ・ファイル一式だ。
 これは、サーバーとFTP(FTPS、SFTP)接続してファイルをローカルにダウンロードするだけだ。
 2つ目はWordPress管理画面からエクスポートできる各記事・固定ページ・カテゴリ・タグ等の情報だ。
 これはXML形式でローカルに保存出来る。
 やり方は管理画面の「ツール」から「エクスポート」を選択して「エクスポートファイルをダウンロード」をクリックするだけだ。
 3つ目はWordPressで利用しているデータベースのバックアップだ。
 これらはコマンド「mysqldump -u root -p -x –all-databases > XXX.sql」等でMySQL内の全データをファイルXXX.sqlに出力出来るが、phpMyAdminを使用すればWebからの操作でも簡単にバックアップが取得出来る。

⑦タイムリーにセキュリティアップデートを実行せよ

WordPressは、オープンソースで最も有名なCMSなので、ハッカーのターゲットになりやすく、脆弱性も発見されやすい。脆弱性が発見された場合は、Wordpressは、その都度バージョンアップをして対策をしているので、まめに更新する事が欠かせない。未使用のプラグインは、「停止」ではなくて、確実に「削除」すべし。

⑧これでセキュリティ対策は万全とは云えず、底なし沼的に、未発見の脆弱性や欠陥が存在するので、定期的に、仮想攻撃診断を含む「セキュリティ診断」が必要だ。

⑨サイトのコンテンツ改修やWebアプリ更新等のサイトの維持管理作業では、設定ミスや見落としで、サイトが丸裸とか、危険な状況になる場合が多いので、外部開放の前に、十分なセキュリティ点検を行う事!

⑩Webサイトを構成するWebサーバーや開発言語等のミドルソフトの最新Versionに留意して、攻撃を受ける前に、タイムリーに更新すべし!


【不揃いの林檎達を毒林檎にするな!/或るWebサイトの開発事情/ちゃんと最新版に更新されているのかな?】

ウィジェット:Outbrain
・アナリティクス:Datadog
JavaScriptフレームワーク:Emotion、React
・ビデオプレーヤー:YouTube
・Webフレームワーク:Ruby on Rails
・その他:Webpack、Open Graph、Module Federation
・Webサーバー:Nginx1.20.2
プログラミング言語Ruby
CDNAmazon CloudFront
・アドネットワーク:Google AdSense、DoubleClick for Publishers (DFP)、PubMatic、Criteo、Prebid、Outbrain、Google Publisher Tag、Amazon Advertising
・タグマネージャー:Google Tag Manager
・開発ツール:Emotion
JavaScriptライブラリ:jQuery Migrate3.3.1、jQuery3.5.1、core-js3.6.5
・PaaS:Amazon Web Services
・リバースプロキシ:Nginx1.20.2
・UIフレームワークChakra UI
・A/Bテスト:Google Optimize
・リターゲッティング:Criteo
・RUM:Datadog

※【注意】

 尚、上記データは、「Webアプリのセキュリティ診断」や「サイトの安全性の評価」以外の目的での使用は厳禁と致します!

 Webサーバーや使用言語等のミドルソフトがちゃんと更新されているのかが一目瞭然だ!

 当然、カビが生えた様な古いVersionだと、危険が危ない!

 余計なお世話だが、Version表示すると「狙って下さい!」的になるので、Version非表示措置が必要かと・・・

1.Word Pressのバージョン非表示設定

 WordPressサイトのダッシュボードページから「外観」の「テーマの編集」をクリック。
「functions.php」から以下のコードを追記して「ファイルを更新」。

remove_action(‘wp_head’,’wp_generator’);
function remove_cssjs_ver2( $src ) {
if ( strpos( $src, ‘ver=’ ) )
$src = remove_query_arg( ‘ver’, $src );
return $src;
}
add_filter( ‘style_loader_src’, ‘remove_cssjs_ver2’, 9999 );
add_filter( ‘script_loader_src’, ‘remove_cssjs_ver2’, 9999 );

2.PHPのバージョン非表示設定

 PHPのバージョンはレスポンスヘッダーに「X-Powered-By:PHP/5.4.45」のような形で露呈している。これを見えないようにするには、サーバー上のphp.iniファイルを修正する。
 まずサーバーにSSH接続して、php.iniファイルの場所を「find / -name php.ini」コマンドで探す。
 AWSWordPress Certified by Bitnamiを使用している場合は、「/opt/bitnami/php/etc/php.ini」にある。
 etcファイル以下にある場合が多い。
 次に、先ほどファイルの場所を指定してphp.iniを「vi /opt/bitnami/php/etc/php.ini」コマンドで編集していく。
 変更するのは「expose_php = On」を「expose_php = Off」にする。

 保存(esc+:wq)したら「service httpd restart」コマンドでApacheを再起動する。
 あとは、先ほどのfunctions.phpに以下のコードを追記して「ファイルを更新」しておく。

header_remove(‘X-Powered-By’);

 バージョンの非表示設定後の確認作業の時、何度更新してもバージョンが表示される場合もある。cssとかのキャッシュが残っていて消えなかったのだろう。確認作業をする時は、しっかりキャッシュを消してから行う事。

 Apacheのバージョン非表示については、デフォルトで見えないように設定されていることが多い。httpd.confファイルをいじれば設定出来る。

 Apacheのバージョン非表示設定だが、httpd.confに「ServerTokens Prod」を追記してApacheを再起動する。
 次にPHPのバージョンを非表示にするために、httpd.confに「Header unset X-Powered-By」を追記してApacheを再起動する。
 叉は、php.iniの「expose_php = On」を「expose_php = Off」に変更しても、非表示に設定出来る。
 最後にWordPress本体のバージョンを非表示設定は、管理画面にログインして「テーマの編集」からfunctions.phpに「remove_action(‘wp_head’,’wp_generator’);」を追記して「ファイルを更新」する。
 これでApacheのバージョン非表示設定が完了だ。