只有通过日本IP地址访问才能登录页面的WordPress + Nginx (IPv6指南)

首先

在使用WordPress发布网站时,经常会出现大量的非法登录尝试。
遗憾的是,其中大部分来自海外。
考虑到我的使用情况,没有来自海外的更新者,所以我尝试仅在来自日本IP的访问时显示登录页面。

暂时先试试看。

我在下方网站发现有人做了类似的事情,所以参考他们的方法,尝试实现了以下功能:如何在Nginx中只允许特定国家的IP访问。

location = /wp-login.php {
    # JP IP Address
    allow 000.000.000.000/24;
    # <<中略>>

    deny all;

    # 一時的に、確認のためにログを分ける
    access_log  /var/log/nginx/access_wp-login.log;
    error_log  /var/log/nginx/error_wp-login.log error;

    # WordPressを動かすPHPの環境に合わせて下記は変えてください
    # (例示は別ファイルに分けている場合です)
    include /etc/nginx/sites-available/wordpress-php.conf.parts;
}

设定完成后,重新加载nginx,并使用tail -f /var/log/nginx/access_wp-login.log来监视访问情况。

然后下面这样的日志就开始涌现了。

<<IPv6アドレス>> - - [06/Aug/2023:xx:xx:xx +0900] "GET /wp-login.php HTTP/1.1" 403 134 "-" "**********"

是的,标题中暴露出来了,我没有考虑到IPv6。(我忘记了服务器已被分配IPv6地址。)

那我们该怎么办呢?

在日本网络信息中心(JPNIC)管理下的IPv6地址已经在以下网页上公开。
https://www.nic.ad.jp/ja/dns/ipv6-addr-block.html

本篇文章将把“由JPNIC管理的IPv6地址=日本的IPv6地址”定义为一致。(为了避免混淆)

根据在此处公开的IPv6地址,让我们修改之前的文件。

location = /wp-login.php {
    # JP IPv4 Address
    allow 000.000.000.000/24;
    # <<中略>>

    # JP IPv6 Address
    allow 0000:0000::/32;
    # <<中略>>

    deny all;

    access_log  /var/log/nginx/access_wp-login.log;
    error_log  /var/log/nginx/error_wp-login.log error;
    include /etc/nginx/sites-available/wordpress-php.conf.parts;
}

最后

请务必不要直接复制粘贴以下nginx配置文件中示例的IP地址,因为它是完全虚构的。

bannerAds