WordPressで真面目にサイト運営するなら最低限やっておきたいセキュリティ対策

この記事では、Wordpressで構築したウェブサイトを真面目に運用するのであれば、最低限やっておきたいセキュリティ対応を書き連ねている。

WordPressは便利で、世界中の人が使っており、非常に柔軟だ。つまり、それだけクラッカー(悪意あるハッカー)から攻撃を受けてもおかしくないということ。

よくあるWordpressサイトへの攻撃は、Wordpressそのものが悪いのではなく、管理する人間の不手際から起こるものだ。Wordpress自体を主に開発しているAutomattic社は、ハッカーに脆弱性を発見してもらい、修正するためのプラットフォーム『hackerone』へ参加している。

コアは比較的安全なので、管理する側の落ち度はなるべく減らしたい。

https設定

どのレンタルサーバーでも無償でSSL証明は発行しているし、Kusanagiではたった1コマンドでLets EncryptによりHTTPS化できる。

# kusanagi ssl --email [email protected]

SEOの観点から考えてもやらない理由は0だ。

ほか、そこまで厳密でなければCloudflareでDNSを管理すれば、無料でSSL化できる。

Admin(管理画面)のURL変更

何も設定を変更していない場合、Wordpressのアドミン画面はwp-adminあるいはwp-login.phpで統一されている。管理画面のURLを多くの人が把握している場合、仮にユーザー名とパスワードが知られしまうと自身のサイトに侵入される。

WPS Hide Loginなどのプラグインでランダムな文字列12文字以上にしておくと良い。

例)https://example.com/upzH61GDg#&9#[email protected]^TL

二段階認証

OTPまたは2FAを設定すると良い。仮に、ユーザー名とパスワードを突破されても、二段階認証を設定していればログインすることはほぼ不可能である。SMSよりも2FAで多要素認証を設定しよう。

使用するプラグインは、「Google Authenticator」か「Two Factor Authentication」が更新頻度高く、評価も高いのでオススメ。

二段階認証に使用するアプリは、バックアップなど考えるとAuthyがオススメだ。

Authy

Authy

Authy Inc.無料posted withアプリーチ

wp-config.phpを一段階上に設定する

データベースや管理者情報などが記載されたファイル「wp-config.php」を保護することは、非常に重要だ。

通常、wp-adminやwp-contentなどと同じディレクトリにwp-config.phpは格納されている。これを、FilezillaといったFTPクライアントなどで1つ上のディレクトリに移動させるか、SSH接続した先でwp-config.phpが含まれるディレクトリから以下コマンドで1つ上に移動させる。

# mv wp-config.php ../

テーマ、プラグイン、コアはなるべく常に最新にしておく

セキュリティホールやバグフィックスの対応を行ったバージョンアップが配信されたら、即アップデートしよう。自動更新させるプラグインは存在するが、そのプラグインに脆弱性がある可能性もある。よって、仮想マシン自体で自動更新機能を持つKusanagiを使用するのを推奨する。

各ファイルの適切なパーミッション設定

サイトのデータに接続するwp-congfigやコンテンツを管理しているwp-contentフォルダを適切な権限(パーミッション)にしておくことと、安全性が高まる。

  • wp-config.php = 0440
  • wp-content = 0755

が推奨だ。

Admin(管理画面)のIP制限

AdminURLにアクセスできるIPアドレスを制限すると、ブルートフォースアタックにより突破されても悪意ある人物はアクセスできない。

ApacheとNginxに分け解説する。

Apache

ウェブサーバーがApacheの場合、.htaccessに記載されている「Allow from all」を、許可したいIPアドレスに変更する。

例)Allow from xxx.xxx.xxx.xxx

Nginx

kusanagiで構築してあるNginxサイトの場合は、以下の対応を行う。

vi /etc/nginx/conf.d/[プロファイル名]_http.conf

allow 0.0.0.0/0; を、許可したいIPアドレスに変更する。

例)allow xxx.xxx.xxx.xxx;

追加してHTTPS化を勿論しているはずなので、ssl.confにも設定を記述する。

vi /etc/nginx/conf.d/[プロファイル名]_ssl.conf

allow 0.0.0.0/0; を、許可したいIPアドレスに変更する。

例)allow xxx.xxx.xxx.xxx;

このくらいかな。もっとちゃんとやりたい人はWAFや各種Firewallなんかにお金かけると良いと思う。

Default image
Keisuke Kuribara
零細企業の代表 / ウェブマーケティング、コンサルティング、EC / 漫画と本が好き / 生物捕獲が趣味