今回行ったセキュリティ対策について

この記事の所要時間: 約4分

Plone 使ってた頃から誰も攻めてきたことなんてないけど。

ディレクトリのファイル一覧を表示させない

管理系画面に Basic 認証をかける

「wp-login.php」と「/wp-admin/」以下のファイルについて Basic認証をかけ、ユーザ名とパスワードを入れないとアクセスできないよう制限をかける。

.htpasswd の作成

「.htpasswd」ファイルを作成する。どこに置いてもいいので、外部に公開されない場所に置いておこう。「.htaccess」と同階層に置いてしまうと、「.htpasswd」にアクセスできないような条件を「.htaccess」に追加で書く羽目になり面倒なことが増える。
またファイル名も「.htpasswd」でなくとも構わない。「.htpasswd_unko」とかでもOK。

wp-login.php 用の設定

wordpressインストールフォルダ直下に「.htaccess」ファイルを置く。「wp-login.php」アクセス時のみ認証を行うよう設定する。

/wp-admin/ 用の設定

wordpressインストールフォルダ/wp-admin に「.htaccess」ファイルを置く。ただし、「admin-ajax.php」にアクセスした場合は認証を行わない(「admin-ajax.php」を使っているプラグインを考慮して)。

他サイトからフレームで呼ばれないようにする

header.phpに以下を追加し、X-Frame-Options HTTPレスポンスヘッダを指定する。

DENY: どこからも禁止。SAMEORIGIN: 自分のドメインからはOK、他からは禁止。フレーム系を使う予定はないので今回は DENY にした。

その他

意味あんのかなぁ。

  • 最新バージョンを使う(そりゃな)
  • WordPressのバージョンを示す meta タグを消す(そんなに意味あるの?ダサイから消したけど)
  • 「admin」ユーザを作らない(ユーザ名を変えたところで投稿者名のところに nigauri とか出ちゃってるけど)
  • DBのプレフィクスを変更する(DBに入られちゃったりSQL流されちゃったりした時点で負けだけど)

サーバ移転後の設定

自宅サーバからレンタルサーバに移転したときに変更した箇所。

ディレクトリのファイル一覧を表示させない

勝手にそういう設定になっていた。

管理系画面に Basic 認証をかける

.htpasswd を .htaccess と同じ階層に置く。AuthUserFile のパスを修正。さらに .htaccess に以下の設定を追記。

他サイトからフレームで呼ばれないようにする

header.php ではなく .htaccess で設定するようにした。以下の設定を追記。