2014.04.24
スクリプト
CentOS
iptables 国内のみ許可する
CentOS6.5で確認しました。
まず、ipsetでipアドレスの管理を行います。
以下のコマンドでインストール済みか確認します。
# yum list installed | grep ipset
ない場合はインストールします。
# yum install ipset
スクリプトを作成します。
#!/bin/bash # 国別コードリストをダウンロード cd /root if [ -s cidr.txt ]; then mv cidr.txt cidr.txt.old fi wget https://nami.jp/ipv4bycc/cidr.txt.gz gunzip cidr.txt.gz # IPLISTを作成 ipset create -exist IPLIST hash:net # IPLISTに日本のIPアドレス登録 sed -n 's/^JP\t//p' cidr.txt | while read ADDRESS; do ipset add IPLIST $ADDRESS done
スクリプトを実行する為に実行権限を与えます。
# chmod 744 iplist.sh
実行
# ./iplist.sh
確認
# ipset list IPLIST | less
保存
# ipset save
上記の保存ではipsetは再起動でリストが削除されるので、/etc/sysconfig/ipset に保存し、
再起動時に自動的にIPLISTをロードするようにします。
# /etc/init.d/ipset save
自動起動設定
# chkconfig ipset on
iptablesの設定
# cd /etc/sysconfig/
# vi iptables
例えばポート25番(SMTP)を国内のみ許可する場合は以下のように追記、もしくは編集し、保存します。
-A INPUT -p tcp -m tcp --dport 25 -m set --match-set IPLIST src -j ACCEPT
設定を反映させます
# service iptables restart