パソコン鳥のブログ

アクセスカウンタ

zoom RSS iptables - 国内からの接続のみ許可して海外からの接続を遮断する

<<   作成日時 : 2013/06/02 11:42   >>

トラックバック 9 / コメント 2

iptablesで日本国内からのみ接続させ、海外からは接続させないようにするための設定についてです。

設定スクリプト


前回(iptablesサンプル)の setip.sh実行に引き続いて、sh jp_only.sh を実行してください。
setip.sh内で -j ACCEPT_FILTER と記述されていた箇所では、日本国内からの接続のみを許可するようになり、海外からの接続は拒否します。
設定後、iptables設定内容の保存を忘れないようにして下さい。保存方法については、前回を参照してください。

jp_only.sh

#!/bin/sh
IPTABLES=/sbin/iptables
wget -q -N http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -q -f -c cidr.txt.gz > cidr.txt
if [ -f cidr.txt ]; then
    $IPTABLES -F ACCEPT_FILTER
    sed -n 's/^JP\t//p' cidr.txt | while read address; do
        $IPTABLES -A ACCEPT_FILTER -s $address -j ACCEPT
    done
    $IPTABLES -A ACCEPT_FILTER -j DROP
fi


説明



jp_only.sh を実行すると、次のようなiptablesコマンドが実行されます。
x.x.x.x/yy の箇所が IPアドレス(のCIDR表記)です。

/sbin/iptables -F ACCEPT_FILTER
/sbin/iptables -A ACCEPT_FILTER -s x.x.x.x/yy -j ACCEPT
/sbin/iptables -A ACCEPT_FILTER -s x.x.x.x/yy -j ACCEPT

/sbin/iptables -A ACCEPT_FILTER -j DROP


/sbin/iptables -F ACCEPT_FILTER
ACCEPT_FILTERチェインの内容を全消去します。

/sbin/iptables -A ACCEPT_FILTER -s x.x.x.x/yy -j ACCEPT
x.x.x.x/yy の箇所が日本国内のIPアドレス(のCIDR表記)で記述されています。このような記述の行がたくさん続きます。
これらの行により、接続元が日本国内のIPアドレスの場合、ACCEPT(パケット受信を許可)します。

/sbin/iptables -A ACCEPT_FILTER -j DROP
/sbin/iptables -A ACCEPT_FILTER -s x.x.x.x/yy -j ACCEPT で列挙されているIPアドレスのどれでも無い場合は、日本国内のIPアドレスでは無い(海外のIPアドレス)ので、DROP(パケットを破棄)します。



2014/1/26 追記

WEBサーバとして公開している場合


一般に公開するWEBサーバの場合、海外からの接続を遮断すると、google/yahoo/bingなどのクローラのアクセスまでブロックします。
その為、検索にひっかからないようになりますので、WEBへのアクセスは海外からも接続できるようにします。
前回(iptablesサンプル)の setip.sh の内容を以下のように修正して下さい。

変更前

#Webサーバの場合:http,https許可
$IPTABLES -A INPUT -p tcp -m multiport --dport 80,443 -m state --state NEW -j ACCEPT_FILTER


変更後

#Webサーバの場合:http,https許可
$IPTABLES -A INPUT -p tcp -m multiport --dport 80,443 -m state --state NEW -j ACCEPT


これで、google/yahoo/bingで WEBの内容が検索にひっかかるようになります。


参考


iptablesで海外からのhttpアクセスを拒否する
世界の国別 IPv4 アドレス割り当てリスト





テーマ

関連テーマ 一覧


月別リンク

トラックバック(9件)

タイトル (本文) ブログ名/日時
SSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策とその効果
IDやパスワードを変えて何度もssh接続を試みてくるSSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策の1つに、SSHGuard の導入があります。 SSHGuard のインストール・設定方法と、iptablesを使用する場合の設定方法、導入による効果を説明します。 ...続きを見る
パソコン鳥のブログ
2013/06/08 22:00
iptablesサンプル
Linux でサーバを構築する際のiptablesでのファイアウォールのサンプルです。 サンプルではssh接続を受け入れるようにしています。 サンプル中のコメントを外すと、メールサーバやwebサーバにも対応できます。 ...続きを見る
パソコン鳥のブログ
2013/06/08 22:11
ログに記述されているIPアドレスの国名を出力するスクリプト
サーバのログに記録されているIPアドレスが、どの国のものか調べたいことがあります。 そこで、IPアドレスを抜き出して、その国名を表示するperlスクリプトを作成しました。 ...続きを見る
パソコン鳥のブログ
2013/07/23 23:46
1年間にサーバが受けた不正アクセスを接続元の国別に集計しました
管理しているサーバの内1台について、過去1年間に不正アクセスしてきたIPアドレスを国別に集計してみました。 以下で紹介した総当たり攻撃(辞書攻撃)を防ぐ sshguard で攻撃として検出された回数を集計しました。 ...続きを見る
パソコン鳥のブログ
2013/10/16 20:58
sshへの攻撃に対する6個の防御方法
sshサーバへの攻撃に対する色々な防御方法を、おすすめ度つきで紹介します。 ...続きを見る
パソコン鳥のブログ
2013/11/28 21:07
iptables - 海外からの接続を遮断するとクローラのアクセスまでブロックします
以前の記事でiptablesの設定のサンプルと、国内からの接続のみ許可して海外からの接続を遮断する設定方法を紹介しました。 iptablesサンプル iptables - 国内からの接続のみ許可して海外からの接続を遮断する ...続きを見る
パソコン鳥のブログ
2014/01/26 18:08
特定の国を許可したり拒否する iptables設定
特定の国を許可したり拒否する iptables設定です。 ...続きを見る
パソコン鳥のブログ
2014/08/29 19:00
1年間にサーバが受けた不正アクセスの国別接続元(2014年5月〜2015年5月分)
管理しているサーバの内1台について、過去1年間に不正アクセスしてきたIPアドレスを国別に集計しました。 以前、下記記事で 2012年10月〜2013年10月までの分を公開しましたが、今回は 2014年5月〜2015年5月分になります。 ...続きを見る
パソコン鳥のブログ
2015/05/19 22:00
Let's Encryptの利用で無料でSSL対応!
Let's Encrypt は無料で SSL/TLS 証明書を取得できるサービスです。 ...続きを見る
パソコン鳥のブログ
2017/01/29 21:49

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
度々申し訳ございません。
お力を貸して頂くメッセージを書き込ませて頂きました。

前回のiptablesサンプルを実行して希望通りにはなりましたが、上記の設定を
行った後、今度は特定のサーバ(192.***.***.***)からsshで内部のWebサーバへの
接続をしようと思ったのですが、sshが接続できません。

ssh,ping(icmp)は内部のみOKをして、webサーバのみ国内からのアクセスを
許可するようにしたいのですが、どうしたらすればよろしいのでしょうか。
藤堂 正樹
2016/07/17 17:55
大変申し訳ございません。
よく考えたら、さっきと同じで特定のサーバのIPを記載すればよかったのですね。
解決いたしました。
前回、今回の質問はクローズでお願いします。
今後ともよろしくお願いします。
藤堂 正樹
2016/07/17 18:10

コメントする help

ニックネーム
本 文
iptables - 国内からの接続のみ許可して海外からの接続を遮断する パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる