WordPress のセキュリティ設定

最近、ペネトレーション関連に興味が出てきた事もあって、WordPress のセキュリティ設定を見直してみた。

リバースシェルが実行される可能性を調べる

リバースシェルで実行される事が多い関数は次のとおりです。

次のコマンドで調査を行う。

結果は「exec()」が「ImageMagick エンジン プラグイン」がバージョンを確認するコマンドを実行していたので、プラグインを削除、「wp-admin/includes/class-wp-debug-data.php」が「gs --version」(Ghostscriptのバージョン確認)に使用していたが、デバッグ関連らしいので無視、「wp-includes/class-snoopy.php」が「/usr/local/bin/curl」があれば実行する(普通は「/usr/bin/curl」か「/bin/curl」にある)のでコレも無視。

「shell_exec()」は「wp-includes/Text/Diff/Engine/shell.php」で「diff」コマンドを実行していた。名前から察するにテキストの違いを見つけるためだけに使用しているみたいだったが、呼び出し元が見つからなかったので無視。

「popen()」に関してはメール送信で「sendmail」コマンドを使用していたが、リバースシェルには使用出来ないと思われるので許容する事にした。

その他の関数は使用が見つけられなかったので、「/etc/php.ini」の「disable_functions」を以下の様に設定した。

また危険と思われる次のフラグも「Off」にした。

これでリバースシェルの脅威は無くなったと思われる。

また、PHPが実行できるディレクトリを減らしたかったので、「open_basedir」を次の様に設定した。

ソースなどから見る WordPress は、過去の残骸らしき箇所が多い様に思う。

SELinux による規制の強化

CGI を無効にする。

CGI 関連のディレクトリやファイルのチェック

SELinux の規制逃れをしているファイルのチェック

「/var/www/」ディレクトリのチェック(httpd_sys_rw_content_t が Apache からの書き込みが可能)

セキュリティプラグインのインストール

「security」で検索してプラグインをインストールする。

このサイトでは「Wordfence」をインストールして、様子を見る事にした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です