IT・ビッグデータ徒然ブログ

関西でインフラ、データ基盤系のエンジニアになりたい

ブログ移住計画その4~WordPressをセキュアに~

前回の続き。

前にAnsibleで作ったものを入れて、WordPressをセキュアに設定しておきます。

DBのプレフィックスを変更

WordPressをインストールして、設定するとwp_から始まるテーブル名が自動で生成されるが、これだと攻撃の標的になるので、wp-config.phpの以下の行を変更する

##$table_prefix  = 'wp_'
 
$table_prefix  = 'wp_test_'
## プレフィックスは自由に

wp-config.phpパーミッションを変更

wp-config.phpは重要なファイルなのでパーミッションを400に設定しておく。 上のプレフィックスの変更もあるので、wp-config.phpのファイルを切り出してもっておき、配布するように設定

./roles/wordpress/tasks/main.ymlの一部

### wordpress/templatesディレクトリにwp-config.php.j2ファイルを仕込んでおく

- name: set wp-config.php
  template:
    src: wp-config.php.j2
    dest: /var/www/html/wordpress/wp-config.php
    owner: apache
    group: apache
    mode: 0400

.htaccessの設定変更

ファイルへのアクセスとか色々制御するために設定

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

<files wp-config.php>
order allow,deny
deny from all
</files>

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>  

<files wp-comments-post.php>
order allow,deny
deny from all
</files>      

DirectoryIndex index.html .ht

<Files wp-login.php>
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
</Files>


<FilesMatch "wp-login.php|wp-admin">
Order deny, allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</FilesMatch>

# END WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} rest_route=
RewriteRule ^$ /? [R=404,L]
</IfModule>

.htpasswdも合わせて設定

<wordpressのID>:<wordpressのパスワード>
#例:hogehoge:foobar1234

.htaccessと.htpasswdファイルをWordPressサーバに配布

インストール後に設定変更した分を配布するようにAnsibleを更新 (templateディレクトリに各ファイルをおいておく)

- name: set .htpasswd
  template:
    src: .htpasswd.j2
    dest: /var/www/html/wordpress/.htpasswd
    owner: apache
    group: apache
    mode: 0644

- name: set .htaccess
  template:
    src: .htaccess.j2
    dest: /var/www/html/wordpress/.htaccess
    owner: apache
    group: apache
    mode: 0644

他にも色々あるけど、ざっくりこんな感じ。

もうちょいいろいろ設定見ておく。

http://design-plus1.com/tcd-w/2015/09/security.html

ahalog.tdesignworks.net

viral-community.com

viral-community.com

memocarilog.info

viral-community.com