素行の悪い国別にアクセスを遮断 iptables

規制
Xserverの取り組み。
Wordpress管理画面へ外国からのアクセスは遮断。

なぜ国別でアクセスを遮断するの?

不正アクセス上位国
国内でのみの用途のサーバーなど
セキュリティ上日本でしか利用しないサーバーなら
世界中に公開する必要はまったくありません。
世界に国境はないほうがいいのかもだけど、現実がまだ理想に近づけてないです。

またそこまでいかなくても不正アクセス上位国の
アクセスが減れば運営の負担もぐんと楽になります。

それでは設定を行います

[bash] # yum -y install iptables-services※CentOS7の場合
[/bash]

国別アクセス拒否スクリプトを作成します。

[bash] # vi iptables.sh

#!/bin/bash
IPTABLES=”/sbin/iptables”
RM=”/bin/rm”

#wget -q ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
#wget -q ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest
wget -q ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
#wget -q ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
#wget -q ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
#ルールをクリア
$IPTABLES -F
#ポリシーを決める(デフォルトのルール)
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
#指定された国のIPアドレスからのアクセスを破棄
DROP_COUNTRY(){
for IP in cat $1 | grep "$2|$3|ipv4|"
do
ADDR=echo $IP |cut -d "|" -f 4
TEMP=echo $IP |cut -d "|" -f 5
CIDR=32
while [ $TEMP -ne 1 ];
do
TEMP=expr "$TEMP" / 2
CIDR=expr "$CIDR" - 1
done
$IPTABLES -A INPUT -s $ADDR/$CIDR -j DROP
done
}
#国指定
#国コードについてはhttp://complete.ddo.jp/toku/apnicを参照。
#一部例をあげて記載しています。
#中国
DROP_COUNTRY delegated-apnic-latest apnic CN
#韓国
DROP_COUNTRY delegated-apnic-latest apnic KR
#北朝鮮
DROP_COUNTRY delegated-apnic-latest apnic KP
#台湾
DROP_COUNTRY delegated-apnic-latest apnic TW
#ロシア
DROP_COUNTRY delegated-apnic-latest apnic RU
#オランダ
DROP_COUNTRY delegated-apnic-latest apnic NL

#国別IPアドレスリスト削除
#$RM -f delegated-arin-latest
#$RM -f delegated-ripencc-latest
$RM -f delegated-apnic-latest
#$RM -f delegated-lacnic-latest
#$RM -f delegated-afrinic-latest
#拒否IPアドレスからのアクセスはログを記録せずに破棄
#※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと
#(/root/iptables/deny_ipがなければなにもしない)
if [ -s /root/iptables/deny_ip ]; then
for ip in cat /root/deny_ip
do
iptables -I INPUT -s $ip -j DROP
done
fi
#ルールをセーブする
$IPTABLES-save

[/bash]

実行権限付与します。

[bash] # chmod +x iptables.sh
[/bash]

毎月更新するディレクトリに格納します。

[bash] # mv iptables.sh /etc/cron.monthly/iptables.sh
[/bash]

海外のVPNを使ってWebサーバーを建ててアクセスしてみるのがわかり易いのでおすすめです。
前回の記事で使った筑波学術研究VPN Gateをちょっとお借りしてみるのもいいかもしれません。

大陸からのアクセスを遮断
※firefoxでの表示

遮断した国のVPNに接続し設定を行ったサーバーのWEBにアクセスします。
このような画面で接続失敗したら
サーバー側でパケットを遮断したという証なので成功ですね。

レッツセキュアサーバライフ☆

 

*********************************************************
ロードが長くなってしまうのでipsetによりスクリプトいじる予定

参考
Minecraftで特定の国からの荒らしで困っている方へ

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG