ブログ移住計画その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
他にも色々あるけど、ざっくりこんな感じ。
もうちょいいろいろ設定見ておく。