CentOS5.9のメンテナンスでipsetを使用することになったので、ipset4.5をrpmでインストールしました。
そこで https://inaba-serverdesign.jp/blog/20150209/ipset_iptables_country_centos6.html を参考に導入を進めています。
(ここまででもいろいろ違いましたが)「ipsetの設定…定期的に最新の国別コードリストの情報を反映できるよう、スクリプトを用意しました」のところにおいて、ipsetのオプションもCentOS6系と5.9で異なるようで動きません。
そこで当時の資料を探しているのですがなかなか見つからず質問する次第です。
宜しくお願い致します。
# ipset create -exist WHITELIST hash:net
については
Bad argument `create'
Try `ipset -H' or 'ipset --help' for more information.
root で実行してないんじゃないでしょうか。
https://openlinksys.info/forum/viewthread.php?thread_id=18672&rowstart=0#post_138860
↑ポーランド語みたいです。
sudo がない環境で実行しているみたいで、ひとつ前のメッセージのスクリプトを実行しようとして、sudo が見つからんとエラーになってます。
sudo を外すと、
sudo ipset add geoblock $IP
に対して、以下のメッセージが返ってくると。
Try `ipset -H' or 'ipset --help' for more information.
Bad argument `add'
root になれない事情があって、sudo が使えるならシェルスクリプトを sudo で実行するか、mk_ipwhitelist.sh の ipset を実行している二ヶ所を sudo で呼ぶように書き換えて実行してください。
#!/bin/bash # 国別コードリストをダウンロード cd /root/bin/ if [ -s cidr.txt ]; then mv cidr.txt cidr.txt.old fi wget http://nami.jp/ipv4bycc/cidr.txt.gz gunzip cidr.txt.gz # ホワイトリストセットを作成 sudo ipset create -exist WHITELIST hash:net # ホワイトリストセットに日本のIPアドレスを登録 sed -n 's/^JP\t//p' cidr.txt | while read ADDRESS; do sudo ipset add WHITELIST $ADDRESS done
#!/bin/bash # 国別コードリストをダウンロード cd /root/bin/ if [ -s cidr.txt ]; then mv cidr.txt cidr.txt.old fi wget http://nami.jp/ipv4bycc/cidr.txt.gz gunzip cidr.txt.gz # ホワイトリストセットを作成 ipset -N WHITELIST nethash # ホワイトリストセットに日本のIPアドレスを登録 sed -n 's/^JP\t//p' cidr.txt | while read ADDRESS; do ipset -A WHITELIST $ADDRESS done
sudo 外してます。root で動かしてください。
a-kuma3さん、何度もありがとうございます
2018/09/12 10:52:41その後、libipt_set.soについては
http://flexbox.sourceforge.net/centos/5/x86_64/iptables-1.3.5-5.6.centos5.1.x86_64.rpm
よりrpm2cpioコマンドでlibipt_set.soを取り出して、/lib64/iptables/へコピーしたらエラーが出なくなりました。
ip_set_iphash.koはなしでもとくにエラーは出ていません。
ですが、エラーが出なくなりこれでやっと海外からのアクセスが制限できるか!と思いましたが、まだ壁はありそうです。
ダミーでGoogle Cloud Compute(us-east1-b)からポート22でtelnetアクセスしたところ、普通にアクセスできました。
ダメもとで service iptables restart を繰り返しましたが、効果ありませんでした。
実は以前よりこのサーバーはfail2banを用いていたのですが、この組み合わせでiptablesの判定順位がうまく動作しないのではないか?と推測しています。
引き続き悩んでいますが、いったんa-kuma3さんにはポイントを配分します。
助かりました。
a-kuma3さんへ
2018/09/12 20:41:01> 実は以前よりこのサーバーはfail2banを用いていたのですが、この組み合わせでiptablesの判定順位がうまく動作しないのではないか?と推測しています。
なんとかiptablesの設定を変えました。
するとGoogle Cloud Compute(us-east1-b)からアクセスできませんが、その他の国内環境からはアクセスできることを確認しいたので、おそれくこれで完了だと考えています。
# iptables -I INPUT -m state --state NEW -p tcp --dport 22 -m set --match-set WHITELIST src -j ACCEPT
ではなく
# iptables -I INPUT -m state --state NEW -p tcp --dport 22 -m set --set WHITELIST src -j ACCEPT
と修正しないとだめだったとは…。
ありがとうございました!