2026年7月18日土曜日

海外アクセスを遮断

vi /root/script/update_geoip.sh <<__EOF__
#!/bin/bash
# 日本のIPアドレス(IPv4 / IPv6両対応)をインポートするスクリプト
# 一時ファイルの準備
IP_FILE_V4="/tmp/jp_ips_v4.txt"
IP_FILE_V6="/tmp/jp_ips_v6.txt"
sudo firewall-cmd --permanent --delete-ipset=japan-ips-v4 2>/dev/null
sudo firewall-cmd --permanent --delete-ipset=japan-ips-v6 2>/dev/null
sudo firewall-cmd --permanent --delete-ipset=japan-ips 2>/dev/null
# 正しいURL(ftp.apnic.net)からデータを取得して抽出
curl -s http://ftp.apnic.net/stats/apnic/delegated-apnic-latest | grep 'apnic|JP|ipv4' | awk -F'|' '{printf "%s/%d\n", $4, 32-log($5)/log(2)}' > $IP_FILE_V4
curl -s http://ftp.apnic.net/stats/apnic/delegated-apnic-latest | grep 'apnic|JP|ipv6' | awk -F'|' '{printf "%s/%s\n", $4, $5}' > $IP_FILE_V6
# firewalld用の「japan-ips」セットを再作成
sudo firewall-cmd --permanent --delete-ipset=japan-ips-v4 2>/dev/null
sudo firewall-cmd --permanent --new-ipset=japan-ips-v4 --type=hash:net --family=inet
sudo firewall-cmd --permanent --ipset=japan-ips-v4 --add-entries-from-file=$IP_FILE_V4

sudo firewall-cmd --permanent --delete-ipset=japan-ips-v6 2>/dev/null
sudo firewall-cmd --permanent --new-ipset=japan-ips-v6 --type=hash:net --family=inet6
sudo firewall-cmd --permanent --ipset=japan-ips-v6 --add-entries-from-file=$IP_FILE_V6
# 設定の反映
sudo firewall-cmd --reload
# 一時ファイルの削除
#rm -f $IP_FILE_V4 $IP_FILE_V6
echo "日本のIPv4およびIPv6アドレスリストを正常に更新しました。"
__EOF__


# ① 全員に公開していた標準設定を削除
sudo firewall-cmd --permanent --zone=public --remove-service=http
sudo firewall-cmd --permanent --zone=public --remove-service=https
# ② 新しい日本リスト(IPv4/v6両方対応)だけを許可するリッチルールを追加
# 【IPv4用】日本のIPから、http、https、および各カスタムポートへのアクセスを許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v4" service name="http" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v4" service name="https" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v4" port port="3000" protocol="tcp" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v4" port port="8000" protocol="tcp" accept'

# 【IPv6用】日本のIPから、http、https、および各カスタムポートへのアクセスを許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v6" service name="http" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v6" service name="https" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v6" port port="3000" protocol="tcp" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="japan-ips-v6" port port="8000" protocol="tcp" accept'

# ③ ファイアウォールをリロードして有効化
sudo firewall-cmd --reload


# ドコモ・ahamo・ISP系列のIPv6(2400::/12)を無条件で許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2400::/12" service name="https" accept'
# au・UQモバイル系列のIPv6(2408::/12)を無条件で許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2408::/12" service name="https" accept'
# ソフトバンク・ワイモバイル系列のIPv6(240a::/12)を無条件で許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="240a::/12" service name="https" accept'
# 楽天モバイル系列のIPv6(240b::/12)を無条件で許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="240b::/12" service name="https" accept'
# ファイアウォールを再読み
込み
sudo firewall-cmd --reload

# LAN内(192.168.1.1〜192.168.1.254)からの通信を無条件で最優先許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'

# 設定の反映
sudo firewall-cmd --reload

firewall-cmd --zone=public --list-all
sudo nft list chain inet firewalld filter_INPUT


元に戻す。
# 標準の公開設定を復活させる
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

# 今回追加したエラーの原因となるルールを削除
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule source ipset="japan-ips" service name="http" accept'
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule source ipset="japan-ips" service name="https" accept'

sudo firewall-cmd --permanent --delete-ipset=japan-ips-v4 2>/dev/null
sudo firewall-cmd --permanent --delete-ipset=japan-ips-v6 2>/dev/null
sudo firewall-cmd --permanent --delete-ipset=japan-ips 2>/dev/null

# 反映させる
sudo firewall-cmd --reload

0 件のコメント:

コメントを投稿

海外アクセスを遮断

vi /root/script/update_geoip.sh <<__EOF__ #!/bin/bash # 日本のIPアドレス(IPv4 / IPv6両対応)をインポートするスクリプト # 一時ファイルの準備 IP_FILE_V4="/tmp/jp_ip...