apacheのバーチャルファイルにセキュリティ設定を追加します。
バーチャルサイトの設定ファイルバックアップ
- バックアップ
sudo cp -pi /etc/apache2/sites-avaiable/wordpress.conf /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d)
ファイル及びバックアップディレクトリは自分の環境に合わせます。
- diffによる差分確認
diff -u /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d) /etc/apache2/sites-avaiable/wordpress.conf
エラーがなければバックアップは成功です。
バーチャルサイトの設定ファイル編集
DocumentRootの項目に、以下のように編集します。/home/www-data/wordpress
の部分は自分の環境に合わせます。
ここでは、サーバのリソースを食い潰し、robots.txtを無視するクローラーを止めることにしています。
また、こういったクローラーであることを隠し、ユーザーエージェントを偽装するIPもレンジでブロックしています。
DocumentRoot /home/www-data/wordpress
<Directory /home/www-data/wordpress>
Options -Indexes
Options FollowSymLinks
AllowOverride All
## スパムクローラーを拒否
SetEnvIfNoCase User-Agent "facebookexternalhit/1.1" spam_crawler
SetEnvIfNoCase User-Agent "SemrushBot/7~bl" spam_crawler
SetEnvIfNoCase User-Agent "AhrefsBot" spam_crawler
SetEnvIfNoCase User-Agent "MJ12bot" spam_crawler
SetEnvIfNoCase User-Agent "DotBot" spam_crawler
SetEnvIfNoCase User-Agent "Baiduspider" spam_crawler
SetEnvIfNoCase User-Agent "YandexBot" spam_crawler
SetEnvIfNoCase User-Agent "Sogou web spider" spam_crawler
SetEnvIfNoCase User-Agent "Exabot" spam_crawler
SetEnvIfNoCase User-Agent "MegaIndex.ru" spam_crawler
SetEnvIfNoCase User-Agent "SeznamBot" spam_crawler
SetEnvIfNoCase User-Agent "BLEXBot" spam_crawler
SetEnvIfNoCase User-Agent "Bytespider" spam_crawler
SetEnvIfNoCase User-Agent "DataForSeoBot" spam_crawler
SetEnvIfNoCase User-Agent "serpstatbot" spam_crawler
SetEnvIfNoCase User-Agent "SeekportBot" spam_crawler
SetEnvIfNoCase User-Agent "index.community crawler" spam_crawler
SetEnvIfNoCase User-Agent "PetalBot" spam_crawler
<RequireAll>
Require all granted
##スパムクローラーを拒否
Require not env spam_crawler
#偽装エージェントを拒否
Require not ip 190.92.0.0/16
Require not ip 159.138.0.0/16
Require not ip 166.108.0.0/16
Require not ip 124.243.0.0/16
Require not ip 114.119.0.0/16
Require not ip 119.8.0.0/16
Require not ip 110.238.0.0/16
Require not ip 217.113.194.0/24
Require not ip 34.123.0.0/16
</RequireAll>
## 設定ファイルのアクセス拒否
<Files wp-config.php>
Require all denied
</Files>
<Files xmlrpc.php>
Require all denied
</Files>
## キャッシュを有効
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</Directory>
<Files xmlrpc.php>
Require all denied
</Files>
は運用に合わせて無効化の可否を決めてください。
- モバイルアプリからのリモート投稿ができなくなります。
- ピンバックとトラックバックを受け付けることができなくなります。
- Jetpackの一部機能が動作しなくなります。
- その他、リモート投稿や自動投稿のプラグインが影響を受けます。
編集後、
diff -u /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d) /etc/apache2/sites-avaiable/wordpress.conf
として、上記の差分が出ることを確認します。
設定反映
- 設定有効
sudo a2ensite wordpress.conf
→ 一時的に無効にしている場合
- 構文確認
sudo apache2ctl configtest
Syntax OK
を確認します。
- Apache2再起動
sudo systemctl restart apache2.service
その後、Wordpressが正常に閲覧できることを確認します。
確認後、追加のセキュリティ設定を行わないのであれば、
sudo a2dissite wordpress.conf
sudo systemctl restart apache2.service
として、無用な攻撃を防ぎます。
コメントを残す