WordPressを日本IPのみ公開する方法|firewalld + ipset(Ubuntu Server)

昔のパソコン wordpress

本記事では、WordPressサイト(Apache)を日本国内からのアクセスのみに制限する方法を解説します。

対象ポート:

・HTTP(80)
・HTTPS(443)


■ なぜ必要か

WordPressは世界中から攻撃されます:

・ログイン総当たり攻撃
・スキャン
・脆弱性攻撃

👉 日本IPのみに制限すると攻撃を大幅に削減できます


■ 注意(最重要)

設定を誤るとサイトにアクセスできなくなります。

・SSHは必ず許可したまま作業
・別セッションで確認しながら作業


■ 全体構成

日本IP → 許可  
海外IP → 拒否  

■ ① ipset(jp)作成

sudo firewall-cmd --permanent --new-ipset=jp --type=hash:net

■ ② 日本IPリスト取得

curl -O http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

■ ③ 日本IP抽出

grep '|JP|' delegated-apnic-latest | grep ipv4 | \
awk -F '|' '{print $4"/"32-log($5)/log(2)}' > jp.txt

■ ④ ipsetに登録

while read line; do
  sudo firewall-cmd --permanent --ipset=jp --add-entry=$line
done < jp.txt

■ ⑤ 日本IPのみ許可(重要)

sudo firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source ipset="jp" port port="80" protocol="tcp" accept'

sudo firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source ipset="jp" port port="443" protocol="tcp" accept'

■ ⑥ その他を拒否

※ゾーンがDROPならそのままでOK


■ ⑦ 設定反映

sudo firewall-cmd --reload

■ ⑧ 確認

sudo firewall-cmd --list-all

👉 jp ipset が適用されていればOK


■ ⑨ Googlebot対策(重要)

Google検索に必要なIPを許可

sudo firewall-cmd --permanent --ipset=jp --add-entry=66.249.0.0/16


■ よくあるトラブル

● サイトが見れない

→ 自分のIPがjpに入っていない


● 海外から見れない

→ 正常動作


● WordPress更新できない

→ 外部API制限の可能性


■ 運用ポイント

・月1回IPリスト更新
・fail2banと併用
・ログ監視


■ 本環境

・Raspberry Pi 5
・Ubuntu Server
・Apache + WordPress
・fail2ban + firewall


■ メールサーバー用ポート設定(重要)

メールサーバーを運用している場合は、必要なポートを開放します。


■ SMTP(送信)

sudo firewall-cmd --permanent --add-service=smtp

または:

sudo firewall-cmd --permanent --add-port=25/tcp

■ Submission(認証付き送信)

sudo firewall-cmd --permanent --add-port=587/tcp

■ SMTPS(SSL送信)

sudo firewall-cmd --permanent --add-port=465/tcp

■ IMAP(受信)

sudo firewall-cmd --permanent --add-port=143/tcp

■ IMAPS(SSL受信)

sudo firewall-cmd --permanent --add-port=993/tcp

■ POP3(必要な場合のみ)

sudo firewall-cmd --permanent --add-port=110/tcp

■ POP3S(SSL)

sudo firewall-cmd --permanent --add-port=995/tcp

■ 設定反映

sudo firewall-cmd --reload


■ VPN(WireGuardなど)

WireGuardを使用している場合:

sudo firewall-cmd --permanent --add-port=51820/udp


■ 確認

sudo firewall-cmd --list-all

👉 必要なポートがすべて表示されていればOK



■ 最低限開けるべきポートまとめ

用途ポート
SSH10022
HTTP80
HTTPS443
SMTP25
Submission587
SMTPS465
IMAP143
IMAPS993
WireGuard51820/udp


■ セキュリティ強化(重要)

👉 必要なポートだけ開ける

👉 使わないものは閉じる

例:

sudo firewall-cmd --permanent --remove-port=110/tcp


■ 運用ポイント

・fail2banと併用
・不要ポートは開けない
・ログを確認



■ 本環境

・Postfix
・Dovecot
・WireGuard
・firewalld


■ 次の記事

👉 IP自動更新スクリプト
👉 セキュリティ強化

コメント

タイトルとURLをコピーしました