このスレッドは解決済です(未解決に戻す場合はこちら)
<<戻る

iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/10/14(Wed) 18:02
名前: フジマル
URL:
このWEBを参考にKVMベースのサブホストを作っております。
いつの頃からか sh iptables.sh をやったら、やたらと時間がかかるようになりました。
現在は3.10.0-1127.19.1.el7.x86_64を使用しています。又、3.10.0-1127.el7.x86_64を使うようにブートしても同様です。但し全く新規のサブホストを作り、アップデートしないで同じ事をやると2秒くらいで終わります。
どこで時間が取られているか不明です。DROP_COUNTRY_MAKE RU あたりで時間が少しかかるようですが、それでもつじつまが合わない位に時間がかかります。
対処法が在れば御教授いただきたくスレッドを作りました。
記事編集 編集

Page: | 1 | 2 |

Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/10/26(Mon) 08:51
名前: stranger
URL:
---------------------------------------------------------
# ファイアウォール設定反映
echo "COMMIT" >> $IPTABLES_CONFIG
cat $IPTABLES_CONFIG > /etc/sysconfig/iptables
if [ -f /usr/libexec/iptables/iptables.init ]; then
/usr/libexec/iptables/iptables.init restart
else
/etc/rc.d/init.d/iptables restart
fi
rm -f $IPTABLES_CONFIG
---------------------------------------------------------
の部分を
---------------------------------------------------------
# ファイアウォール設定反映
echo "COMMIT" >> $IPTABLES_CONFIG
cat $IPTABLES_CONFIG > /tmp/iptables-config
rm -f $IPTABLES_CONFIG
---------------------------------------------------------
に変えてiptables.shを実行します

if [ -f /usr/libexec/iptables/iptables.init ]; then
/usr/libexec/iptables/iptables.init restart
# これはCentOS7でiptablesの設定を有効にするスクリプトの実行
/etc/rc.d/init.d/iptables restart
# これはCentOS6でiptablesの設定を有効にするスクリプトの実行

これを削除しておけば /tmp/iptables-configを作成して終わります
実際には/etc/sysconfig/iptablesに書き出します
ですからテストが終わったら変更した部分を元に戻します

DROP_COUNTRY_MAKE関数で時間がかかるのは
cidr.txtが壊れているのかもしれないので
サイトから前もってダウンロードして解凍しておいても良い
---------------------------------------------------------
# IPアドレスリスト取得
IP_LIST=/tmp/cidr.txt
CHK_IP_LIST=/tmp/IPLIST
if [ ! -f $IP_LIST ]; then
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -c cidr.txt.gz > $IP_LIST
rm -f cidr.txt.gz
fi
rm -f $CHK_IP_LIST
---------------------------------------------------------
この部分で/tmp/cidr.txtを作ります
これを手動で実行すればいい

wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -c cidr.txt.gz > /tmp/cidr.txt

またはすでに存在する/tmp/cidr.txtを削除すれば
スクリプトの中でダウンロード・解凍を実行します

蛇足
テストにはここのサイトのiptables.shをそのままコピーして使います
iptablesの設定ファイルをつくるスクリプトなので
testには「ファイアウォール設定反映」を変更して使います
上手く行けばもとに戻して自分のネットワークに合わせて修正して使います
iptables restartの部分で時間がかかるのはわかりますが
設定ファイルの作成に時間がかかるのは問題があります
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/10/26(Mon) 09:22
名前: stranger
URL:
# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ定義チェイン作成
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
echo "-A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix \"[IPTABLES DENY_COUNTRY] : \"" >> $IPTABLES_CONFIG
echo "-A DROP_COUNTRY -s $addr -j DROP" >> $IPTABLES_CONFIG
done
grep ^$1 $IP_LIST >> $CHK_IP_LIST
}

for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
cidr.txtの先頭からRUなどの含まれる行を探して(grep ^$1)
(この場合の$1は DROP_COUNTRY_MAKE RU の場合のRUにあたります)
行の2番めの文字列を取り出し(awk '{print $2}') addrに設定します
(addrはアドレスだけになる)
そのアドレスを指定して($addr) DROP_COUNTRYを設定します
それを1行ずつ実行するのがfor do doneによる繰り返し処理です

追記 10-29
クライアント、サーバ共にCentOSなら
gedit コピー (Ctrl+C) ペースト (Ctrl+V)
gnome-terminal コピー (Shift+Ctrl+C) ペースト (Shift+Ctrl+V)
で入力ミスが少なくなると思う
KVMホスト・サーバ間はopensshで接続したほうが上記のコピー・ペーストが簡単に出来ます
(ただし、redhat系のopensshはホストの言語環境を受け継ぐ設定になっているので注意)

クライアントがWinの場合にWin上でエディタ保存するとDOS形式の改行コードが
付いてしまってエラーになることがある(htmlファイルなどは問題ない)

cat -v iptables.sh などとコマンドを打ってみる
行末に^M(DOS形式の改行コードCR相当)が表示されたら上手くない
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/10/29(Thu) 05:24
名前: フジマル
URL:
strangerさん
何時も大変有難うございます。私みたいな初心者にも分かり易く御説明頂き感謝しております。
この説明も、そして一つ前の説明も大変良くわかりました。
今日はこれから休みますので、起きたら早速やってみます。

また、結果を報告致します。
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/01(Sun) 05:01
名前: フジマル
URL:
結果報告です。
まず、/tmp/IPLIST /tmp/cidr.txt を削除し iptables.sh の設定反映の部分を下記に変更し
# ファイアウォール設定反映
echo "COMMIT" >> $IPTABLES_CONFIG
#cat $IPTABLES_CONFIG > /etc/sysconfig/iptables
cat $IPTABLES_CONFIG > /tmp/iptables-config
#if [ -f /usr/libexec/iptables/iptables.init ]; then
# /usr/libexec/iptables/iptables.init restart
#else
# /etc/rc.d/init.d/iptables restart
#fi
rm -f $IPTABLES_CONFIG

1分52秒でした。
私はCentOS7なので
# /usr/libexec/iptables/iptables.init restart
とすると2秒かかりません。矢つ張り、# DROP_COUNTRY_MAKE関数 の所で時間がかかっています。
IPをドロップする国が5ヶ国あり、そのIP 取り出しに時間がかかっています。
cidr.txtは壊れていないようです(スクリプトを走らせた後にgeditで正しく表示されます)
前にも書きましたが、
全く新しいサブホストを作りアップデートせず、同じことをやりました。
上と同じような繰り返しになりましたが、IPの数が違うようです。なので早く終わるようです。
drop countryのIPの数が多くなっているとすると時間がかかるのは分かるのですが、何でOSのアップデートで
IPの数が増えるのかがわかりません。
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/01(Sun) 08:55
名前: stranger
URL:
わかりません
私のCentOS7のGUIのkvmゲストで同じように実行しましたが
(GUIのホスト、kvmのゲストともに7.9のcrパッケージをいれた最新のアップデート)
wgetしてからiptables-configをつくるまで10数秒です
# cat iptables-config|wc -l
57270
行です

蛇足 1102修正
11月にはCentOS7.9がでるでしょう
(最終サポートは2024年6月までです)
その前にcrにアップデートパッケージが入っています

/etc/yum.repos.dのCR.repoの設定では一極集中するので修正します
(mirrorlistの追加)
[cr]
name=CentOS-$releasever - cr
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cr&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/01(Sun) 11:26
名前: フジマル
URL:
strangerさん
何度もお付きあい頂きありがとうございます。
# cat iptables-config|wc -l
の結果は 42498でstrangerさんより少ないのに時間は大幅にかかっています。
後、考えられるのはOSのバージョンの違いで、私は7.8です。
1:このスクリプトが走るのが、ポートの変更をした時ですので、ほぼ走らないので時間がかかっても良しとするか。
2:毎日走るiplist_check.shにACCEPT COUNTRYのリストを保存し、DROP COUNTRYのリストも保存し、
iptables.shではIPリストのチェックはせず、保存してあるACCEPTとDROPのIPリストを読み込む方法にするか。
です。勉強も兼ねて2の方法のスクリプトを作るつもりですが、多分大幅に時間がかかると思いますが、出来たら報告します。
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/02(Mon) 03:52
名前: stranger
URL:
ポートの追加や変更なら直接/etc/sysconfig/iptablesを修正すればいいけど
初歩的なことなんですけど
CentOS7のGUIならfirefoxとテキストエディターを開いて
このサイトにアクセスしてマウスでコピー範囲を選択し
Ctrl+cでコピーしテキストエディタにCtrl+vで貼り付ければ完コピーになると思う
まずはそれで試す
上手く行かなかったらシステムに問題があるんじゃないかな
最新アップデート以前の問題
KVMで試しているのならimgファイルをコピーしておけば
何度でも試せます
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/02(Mon) 18:41
名前: フジマル
URL:
strangerさん
いつも対応して頂き本当に有難うございます。
WEBのスクリプトをまるコピし(但しlocal netは自分用に変更)やりました
kvm main Host 2分01秒
Sub Host 1 1分13秒
Sub Host 2 1分17秒
と、やっぱり時間がかかっています。
サブホストはLVMで作っております。
ホスト毎に何で違いが出るのか不思議ですが?兎も角DROP_COUNTRYの所で時間がかかっています。
これらのホストが全部問題があるとは考えにくいのですが。
ともかく一度iplist_check.sh にACCEPT と DROP のIPを入れ保存し、
iptables.sh からはこのリストを参照するようにしたいと思います。
色々本当に有難うございました。
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/04(Wed) 17:14
名前: フジマル
URL:
後日談
他のプログラムの検証の為に全く新しいサブホストを作り。OSをアップデートし、iptables.sh をやると3秒以下で終わりました。/etc/sysconfig/iptables をエディターで開くと52801行ありましたので、ドロップするIPが大幅に変わってはいません。
それにしてもこの時間の差の理由が全然わかりません。それぞれのホストは問題なく動いていますが?
メインのホストと作ったサブホストで大幅に違うのはわかりませんが、前に書いたサブホスト1と2は実はこのWEBの 6-5 ファイアウォール構築(iptables)までをやったものをそれぞれクローンで作り、残りをそれぞれのプログラム用に付け足していますので、この核になった分に問題があれば、同じような結果になると思われます。
前にも書きましたがiptables.shでaccept country & drop country を行うのを止め、1日1回走る/etc/cron.daily/iplist_check.shで行い、その際リストを保存し、iptables.shではこの保存したリストを参照するようにします。iptables.shは自動で行うので時間がかかってもいいし、iptables.shが最初から作る必要はそれ程無いと思われます。スクリプトはほぼ完成してますが、一番最初に行う時はまだiplist_check.shが走っていないので、そのチェックを書き込み検証が終わったら報告します。
記事編集 編集
Re: iptables.shが2分以上終わらない このメッセージに返信する
日時: 2020/11/15(Sun) 11:43
名前: フジマル
URL:
さらに後日談
遅くなる原因が判明しました。私はアンチウィルスにsophosを入れています。今日これをアンインストールし(/opt/sophos-av/uninstall.sh),更に/tmp/IPLIST,/tmp/cidr.txtの二つを削除し、
sh iptables.shをやると2秒くらいで終了しました。後日談で作ったサブホストはclamを入れていたので早く終わったのですね!!
sophosはこのホストやサブホストを作った時はLINUXを無償でサポートしていましたが、現在はサポートが無くなっておりますので、clamをインストールするつもりです。
私の拙い能力では更なる原因はわかりませんが、ドロップのリストを作る時にsophos のオンラインチェックが入っているのかな??
これでスクリプトを作る必要もなくなったので、解決済みとします。
strangerさんはじめ皆様有難うございました。
記事編集 編集

Page: | 1 | 2 |

件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -