こんばんは!384氏です。
この「384氏のブログ」ですが、海外からスパム投稿が頻繁にされており、その対応ばかりで悩んでおります。
接続元のIPアドレスからWHOIS情報を検索し、そのIPアドレスが属しているネットワークを調べて.htaccessファイルに毎日拒否するネットワークとして追記をしていたのですが、あまりの多さに困ってしまっているところです。
そこで、いっそのこと日本国内からのみアクセス可能とするようにしました。
日本国内のIPアドレスのみアクセス可能にする
いろいろと方法があるようですが、384氏の場合は.htaccessファイルに日本国内のIPアドレス・ネットワークのみを許可するという方法にすることにしました。
日本国内のIPアドレス情報の入手
日本の国内のIPアドレスは、APNICやJPNICから入手することができます。
http://ftp.apnic.net/stats/apnic/
https://www.nic.ad.jp/ja/ip/list.html
しかし、.htaccessに記載するには、
「allow from (ネットワークアドレス)/(CIDR)」形式の方が都合がよいので、探したところ、便利なサイトがありました。
IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI’s
こちらのサイトでは、「(ネットワークアドレス)/(CIDR)」形式のリスト表示の他に、.htaccessファイルそのものがダウンロード可能で非常に便利です。
.htaccessの作成
384氏のサイトはWordPressを利用していますが、現在使用している環境の.htaccessファイルにはWordPressのRewriteモジュールの記載があるので、先ほどのサイトから取得した.htaccessファイルでそのまま上書きしてはいけません。
「# BEGIN WordPress」~「# END WordPress」の行は消さないようにしましょう。
[code title=”.htaccess”]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#ここから記載
order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
・
・
・
[/code]
自宅サーバの場合は
.htaccessファイルに日本国内のIPアドレスのみ許可するように設定したわけですが、それらのIPアドレスはグローバルIPアドレスです。
従って、384氏のようにサーバが自宅に設定してある場合等、LANのIPアドレスから直接サーバに接続するような環境では、プライベートIPアドレスからの接続を許可する必要があります。
「allow from 192.168.0.0/24」というように自分のLANのネットワークからのアクセスを許可するよう、行追加しておきましょう!
自宅サーバの設定をするスキルがある方なら当然ご存じと思いますが、最後の「/24」はCIDRでマスクするビット数を表します。
ネットワークのサブネットマスクの設定が「255.255.255.0」の場合は「/24」となります。
255.255.255.0は2進数で表すと11111111.11111111.11111111.00000000となり、1が24個で「/24」ということです。
さらに管理ページも制限する
WordPressの場合、管理ページとなる wp-login.php へのアクセスをさらに制限しておいた方がよいでしょう!
[code title=”.htaccess”]
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
Allow from xxx.xxx.xxxx.xxx/xx
</Files>
[/code]