Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
## ビルドツール・依存パッケージインストール
## rootユーザで作業
uname -r
yum -y groupinstall 'Development Tools'
yum -y install rpmdevtools
yum -y install kernel-devel iptables-devel
yum -y install epel-release
yum -y --enablerepo=epel install perl-Text-CSV_XS
# CentOS 6.5以降 ipv6対策
# http://www.devopscareer.com/debug/xtables-addons-error-too-few-arguments-to-function-ipv6_find_hdr/
sed -i -e 's|^#define CONFIG_IP6_NF_IPTABLES_MODULE 1|/*#define CONFIG_IP6_NF_IPTABLES_MODULE 1*/|' /usr/src/kernels/`uname -r`/include/linux/autoconf.h
# ハードリンクなので /lib/modules/`uname -r`/build/include/linux/autoconf.h も変わる
## パッケージ入手と修正、ビルド、RPM生成
## 一般ユーザ(できればRPMビルド専用ユーザ)で作業
# 現在のユーザに ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} を作る
rpmdev-setuptree
# nazxさんのSPECファイルをいただく
cd ~/rpmbuild/SPECS
curl -LO http://nazx.jp/o/SPECS/xtables-addons.spec
# 現在のカーネルバージョン用に置き換える
sed -i.bak -e "s/2.6.32-279.5.2.el6.x86_64/`uname -r`/g" xtables-addons.spec
sed -i -e 's|/%{_lib}/xtables-\*/\*.so|/%{_lib}/xtables*/*.so|' xtables-addons.spec
sed -i -e 's|\.tar\.bz2|.tar.xz|' xtables-addons.spec
# xtables-addonsを入手する
cd ~/rpmbuild/SOURCES
curl -LO http://tenet.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-1.47.1.tar.xz
# ビルド・RPM生成
cd ~
LC_ALL=C rpmbuild -ba ~/rpmbuild/SPECS/xtables-addons.spec
## RPMインストール
## rootユーザで作業
# RPMインストール
cd rpmbuild/RPMS/`arch`/
yum -y install xtables-addons-* kmod-xtables-addons-*
## xtables-addons用国別リスト入手・加工・設置
## rootユーザで作業
# maxmind社からダウンロード
# /usr/share/GeoIPはEPELのGeoIPパッケージでも作られる
mkdir -p /usr/share/GeoIP
cd $_
/usr/libexec/xtables-addons/xt_geoip_dl
# 変換処理したリストを置くxtables-addonsが想定しているパスに移動
mkdir -p /usr/share/xt_geoip/
cd $_
# ダウンロードしたIPリストを変換処理
/usr/libexec/xtables-addons/xt_geoip_build /usr/share/GeoIP/GeoIPCountryWhois.csv
## kernelバージョンが上がると、xtables-addonsをビルドした時のバージョン
## と整合性が取れず、iptablesが起動できなくなりセキュリティ的にまずくな
## りますので、kernel関連のバージョンを固定する。
## rootユーザで作業
cat <<'EOS' >> /etc/yum.conf
exclude=kernel*
EOS
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-N GEOIP_JP_ONLY
-A GEOIP_JP_ONLY -m geoip --src-cc JP -j RETURN
-A GEOIP_JP_ONLY -j LOG --log-prefix "geoip_not_JP: "
-A GEOIP_JP_ONLY -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j GEOIP_JP_ONLY
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment