Help us understand the problem. What is going on with this article?

GeoIPを使って国別にiptablesで接続制御

More than 5 years have passed since last update.

iptablesを使って国ごとにアクセス制限をする際にGeoIPを用いると簡単に設定ができます。
環境はCentOS6です。

インストールの準備

yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` iptables-devel
rpm -ivh ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.1/x86_64/updates/security/kernel-devel-2.6.32-279.14.1.el6.x86_64.rpm
rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

perl-Text-CSV_XSのインストール

vi /etc/yum.repos.d/rpmforge.repo 
-------------
enabled = 0
-------------

yum install --enablerepo=rpmforge perl-Text-CSV_XS

xtables-addonsのインストール

xtables-addonsは、iptablesを扱う際のカーネルの拡張モジュールです。

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/1.37/xtables-addons-1.37.tar.xz

tar xvf xtables-addons-1.37.tar.xz
cd xtables-addons-1.37/

CentOS6の場合は以下の設定が必要なようです。(その場合のip6tablesでの動作は未検証)

vi /lib/modules/2.6.32-279.14.1.el6.x86_64/build/include/linux/autoconf.h
------------
/* #define CONFIG_IP6_NF_IPTABLES_MODULE 1 */
------------

インストールします。

./configure

make && make install

GeoIPデータの取得&展開

データをダウンロードと配置をします。
常に最新の情報に更新するためにはcronなどで以下の処理を行う必要があります。

cd geoip/
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip/
cp -r {BE,LE} /usr/share/xt_geoip/

使い方

iptables -I INPUT -m geoip --src-cc CN -j DROP

のように-src-ccで国コードを指定します。

参考

http://www.howtoforge.com/xtables-addons-on-centos-6-and-iptables-geoip-filtering

biatunky
田舎のクラウド屋さんです
https://heptagon.co.jp
heptagon
東北を拠点としてクラウドのインテグレーションサービスを行っています。
https://heptagon.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away