このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/17 09:12
名前: こういちろうさん
URL:
みなさまお世話になります。

iptabel.shの実行結果が毎日届くようになりました。

内容は、以下の通りです。

----------------------------------------------------
293a294,297
> JP 118.151.0.0/17
> JP 118.151.128.0/18
> JP 118.151.192.0/20
> JP 118.151.224.0/19
428c432
< JP 123.198.0.0/17
---
> JP 123.198.0.0/16
587c591
< JP 158.216.0.0/15
---
> JP 158.217.0.0/16
725a730,733
> JP 182.16.224.0/21
> JP 182.16.236.0/22
> JP 182.20.0.0/15
> JP 182.22.0.0/16
1232a1241
> JP 203.145.224.0/19
1994a2004
> CN 175.188.0.0/14
2024a2035,2037
> CN 182.16.192.0/19
> CN 182.18.0.0/17
> CN 182.32.0.0/12
2928a2942
> TW 118.150.0.0/16
3003a3018
> TW 175.184.240.0/21

/root/iptables.sh not executed.
----------------------------------------------------

スクリプトの内容を確認しますとコメントがありました。

「# 新旧IPLIST差分が10件を越える場合はiptables設定スクリプトを実行しない」

理由はわかりましたが措置は必要ないのでしょうか?

また、上記要因が発生したのはサーバー稼働を長期に渡り停止(再構築のため)していたので

差分の件数が発生したと解釈しております。


有識者の皆様にお願いがあります。

差分件数が10件を超えるような場合の措置についてご教示頂けないでしょうか?

私なりにも引き続き調査を進めて参ります。


なお、LPICレベル2保有者ですのでLinuxの前提知識は持ち合わせております。

できるたけ、自力で解決したいと思います。

よろしくお願いします。
記事編集 編集

Page: | 1 | 2 |

Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/22 18:42
名前: こういちろうさん
URL:
>>指示通り、iptables設定スクリプトを手動で実行してみましたが事象再現しています。
>
>>上記内容確認してみますと効果がないように思えるのですがおかしいですね。
>>ちなみに、スクリプトは改変せずに実行しております。
>>このメッセージを元にさらなる調査をしてみます。
>
>管理人さんが言ってるのは、平たく言えば、「内容を確認して、
>手動でファイルを更新してください」ということです。
>(当たり前ですが、同じスクリプトを手動で起動しても同じ結果がでますよw)
>
>AAAさんが言うように、一部をコメントアウトして実行してもいいですし、
>10件という敷居を"一時的に"10000件とかにしていいかも。
>もちろんスクリプトを理解して適当なコマンドを打ってもいいですけど
>
>(ちなみにLPICレベル2でも簡単なスクリプトが読めないものなのでしょうか?
>かなりショックです…)
>

アドバイスありがとうございます。
スクリプトは普通に読めますよ。
まあ、実務でLinuxを使う機会がないので知識だけはあります。

素直にわかりませんと言うこと、肝に銘じます。
変なプライドは必要ありませんよね。
同じスクリプトを手動で実行しましたらメールは届かなくなりましたよ。

ほかの皆様方にも、不愉快な思いをさせてしまいすみませんでした。
同時に貴重なアドバイスに感謝しています。
資格は持っているだけでは意味ありませんね。

LPICの認定資格の復習を見直してみたいと思います。
個人差はありますが資格を持っていても私のように初歩的な質問をする人間がいることをご理解下さい。
常にギブアンドテイクできるように勤勉します。

失礼しました。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/22 18:51
名前: こういちろうさん
URL:
>いつもこちらの情報をありがたく活用しています。(^o^)
>また、こういちろうさん。はじめまして。
>
>>>/root/iptables.sh not executed
>
>当方もこのメールが毎日届いて「???」でした。
>改めて自分の/tmp/IPLISTを見ると空っぽ。
>「なんで?」と考えてみると。このスレの下にある。
>cidr.txt取得で起きたトラブルのあとの、直ぐに管理人様が修正した。
>
>ファイアウォール構築(iptables) http://centossrv.com/iptables.shtml
>へ書き換えました。
>
>「もしかして?」と思い。iplist_check.shの
>>># 新旧IPLIST差分が10件を越える場合は
>この部分の関連行をコメントアウトして、iplist_check.shを実行したところ/tmp/IPLISTが復活。
>コメントアウトを元に戻して様子見したところ、今朝は「IPLIST UPDATE」は届いてません。
>この方法が正しいのかどうか判りませんが、・・(^^;)

管理人様が修正して下さっていたのですね。
関連行のコメントアウトで回避できるとのことなんですね。
なぜ10件以上超える場合にという条件を付与した経緯を知りたいですね。

こまめに掲示板をチェックするようにします。

個人で悩むより不特定多数に質問した方が手っ取り早いと安易なよこしまな気持ちがだめでしたね。
反省します。
みなさん、ごめんなさい。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/22 22:58
名前: 中学生管理者
URL:
>なぜ10件以上超える場合にという条件を付与した経緯を知りたいですね。

すぐに他人に聞くのもいいかもしれないけど、なぜ10件以上だと弾く
ようなスクリプトを作ったのか、こういちろうさんなりに想像してみるとか
そういうのが出来てこそのLPICレベル2の資格なんだと僕は思いますよ。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/24 09:07
名前: こういちろうさん
URL:
>いつもこちらの情報をありがたく活用しています。(^o^)
>また、こういちろうさん。はじめまして。
>
>>>/root/iptables.sh not executed
>
>当方もこのメールが毎日届いて「???」でした。
>改めて自分の/tmp/IPLISTを見ると空っぽ。
>「なんで?」と考えてみると。このスレの下にある。
>cidr.txt取得で起きたトラブルのあとの、直ぐに管理人様が修正した。
>
>ファイアウォール構築(iptables) http://centossrv.com/iptables.shtml
>へ書き換えました。
>
>「もしかして?」と思い。iplist_check.shの
>>># 新旧IPLIST差分が10件を越える場合は
>この部分の関連行をコメントアウトして、iplist_check.shを実行したところ/tmp/IPLISTが復活。
>コメントアウトを元に戻して様子見したところ、今朝は「IPLIST UPDATE」は届いてません。
>この方法が正しいのかどうか判りませんが、・・(^^;)

お世話になります。
なにかと勉強不足でご迷惑かけています。
現在は、上記の手順でメールが届かなくなりました。

根本的な原因がつかめていません。
はっきり申し上げますと、どこから調べればよいかわかりません。
コメントアウトすることにより、差分の数に関係なく処理されていることですよね。

ただ、この措置をすることに対しての弊害を調べようとしていますが手をつけられていません、
知ったかぶりは止めて素直に有識者の方にゆだねようと考えております。
もちろん、自分なりに努力はします。

失礼しました。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/24 10:36
名前: stranger
URL: http://ja.528p.com/
iplist_check.shは
/tmp/IPLIST とIPLIST.newを比較して
10件以上変更があった場合
IPLIST.newを削除して
IPLIST.newを/tmp/IPLISTにおき変えないのでは?

iptables.shのなかで
/tmp/IPLISTを作成しておくようにした方が良いのでは?

記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/24 12:00
名前: こういちろうさん
URL:
>iplist_check.shは
>/tmp/IPLIST とIPLIST.newを比較して
>10件以上変更があった場合
>IPLIST.newを削除して
>IPLIST.newを/tmp/IPLISTにおき変えないのでは?
>
>iptables.shのなかで
>/tmp/IPLISTを作成しておくようにした方が良いのでは?
>
>

ありがとうございます。
早速、検証してみます。
後日、報告します。

touchコマンドを使用すれば、空のファイルを作成することができますね。

失礼しました。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/24 12:28
名前: sstranger
URL: http://ja.528p.com/
>ありがとうございます。
>早速、検証してみます。
>後日、報告します。
>
>touchコマンドを使用すれば、空のファイルを作成することができますね。
>
>失礼しました。

/tmp/IPLISTを別名に変更してiplist_check.shを手動で実行してみる
それでうまく/tmp/IPLISTが作成されるのなら、
つぎからそのようにすれば良いとおもう

うまくいかない場合
/tmp/IPLISTが空のファイルでは、
iplist_check.shで10件以上の変更になってしまうので
/tmp/IPLISTは実体のあるIPLIST.newと同じ内容のファイルをつくる

iplist_check.shでIPLIST.newを作成するようなことを
iptables.shでおこなったらどうかという提案


記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/25 12:17
名前: こういちろうさん
URL:
お世話になります。
試行錯誤しながら検証をしてみました。
管理人様作成のスクリプトを元に見直して改変スクリプトを作成してみました。
アドバイスもいただき感謝の念に堪えません。
ありがとうございます。

さて、いかに結論を述べさせて頂きます。

>/tmp/IPLISTを別名に変更してiplist_check.shを手動で実行してみる
>それでうまく/tmp/IPLISTが作成されるのなら、
>つぎからそのようにすれば良いとおもう

■検証結果
/tmp/IPLISTは作成されました。
----------------------------------以下のスクリプトを実行(/tmp/IPLIST→/tmp/IPLIST.org別名保存)
[root@xxxxx-xxxxxx cron.daily]# ./iplist_check-org.sh
diff: /tmp/IPLIST: そのようなファイルやディレクトリはありません
----------------------------------
スクリプトを通し読みする限りでは、diffを使用している部分でIPLIST.newが存在しないことを
前述メッセージははき出しているのではないかと推測します。(たぶんですが・・・)
メールも届いておりません。
スクリプト内に「/bin/mv IPLIST.new /tmp/IPLIST」があります。
/tmp/IPLISTは、恐らくここで生成されたのではないかと推測します(たぶんですが・・・)

-----------------------------------------------------以下がスクリプト実行後のIPLIST結果です
[root@maple-forest tmp]# ls -alrt IPLIST*
-rw-r--r-- 1 root root 58044 2月 25 04:25 IPLIST.org
-rw-r--r-- 1 root root 58044 2月 25 10:38 IPLIST
-----------------------------------------------------
上記の結果を踏まえて、改めてスクリプトを実行(内容不変)

-----------------------------------------------------再度スクリプトを実行
[root@XXXXX-XXXXXX cron.daily]# ./iplist_check-org.sh
[root@XXXXX-XXXXXX cron.daily]#
-----------------------------------------------------
前述メッセージははき出されませんでした。
スクリプトを通し読みする限りでは、cidir.txtが存在しているためにIPLIST.newが生成されたと
推測します。(たぶんですが・・・)
メールも届いておりません。

再再度スクリプトを実行(/tmp/cidr.txtと/tmp/IPLISTは削除。/tmp/IPLIST.orgとしては残している)
結果変わらずで、IPLISTもcidr.txtも生成されます。

========================================スクリプト内でIPアドレスリスト取得していますね。
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
========================================
cidr.txtが生成されるのは、これで納得。
わからないのは、IPLIST.newが存在しないのにIPLISTをどうやって生成しているのかです。
うーん、難しく考え過ぎなのですかね。

>
>うまくいかない場合
>/tmp/IPLISTが空のファイルでは、
>iplist_check.shで10件以上の変更になってしまうので
>/tmp/IPLISTは実体のあるIPLIST.newと同じ内容のファイルをつくる
>
>iplist_check.shでIPLIST.newを作成するようなことを
>iptables.shでおこなったらどうかという提案
>
>
>

==========================================================================================
# 新旧IPLIST差分が10件を越える場合はiptables設定スクリプトを実行しない
if [ $(diff /tmp/IPLIST IPLIST.new | egrep '<|>' | wc -l) -gt 10 ]; then
(
diff /tmp/IPLIST IPLIST.new
echo
echo "$IPTABLES not executed."
) | mail -s 'IPLIST UPDATE' root
rm -f IPLIST.new exit
fi
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
==========================================================================================

==========================================================================================
# 新旧IPLIST差分を算出してiptables設定スクリプトを実行します

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# チェック国コード
COUNTRY_CODE='JP CN KR TW'

# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh

# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions

# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done

# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
/bin/cp -i IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
==========================================================================================
スクリプトをこのように改変してやれば差分件数に関係なく処理が実行できます。

あくまで、わたしの持論ですので読み落とし部分があるかもしれません。
そして、この改変スクリプトは実行検証を行っておりませんので自己責任で行って下さい。
当方は一切責任を負いません。

以上のように一考しましたが、難しく感じました。
しかしながら勉強になりました。
有識者からのご指摘をお待ちしております。

わたしも改変スクリプトを実行検証してみます。
やってみます。
とにかく、やってみよう!

失礼しました。
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/25 14:19
名前: stranger
URL: http://ja.528p.com/
/tmp/IPLISTがないと
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
は 2 を返すので下記は評価され次に移る
if [ $? -ne 0 ]; then
/tmp/IPLISTがないと
if [ $(diff /tmp/IPLIST IPLIST.new | egrep '<|>' | wc -l) -gt 10 ]; then
は wc -lで 0 を返すので下記は実行されず
(
diff /tmp/IPLIST IPLIST.new
echo
echo "$IPTABLES not executed."
) | mail -s 'IPLIST UPDATE' root
rm -f IPLIST.new
exit
fi
下記が実行される
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi

で良いと思うけど?
メールが届いたら メールの内容を精査して cider.txtを信用できるに足る場合
/tmp/IPLISTをリネームしておいて
iplist_check.shを手動で実行すれば良いのでは?

疑問に思うなら 前にも書きましたが
iplist_check.shのIPLIST.newではなく
IPLISTを作成するスクリプトを作れば?
(後半の評価の部分は必要ない)
記事編集 編集
Re: IPLIST UPDATEのメールについて このメッセージに返信する
日時: 2010/02/25 16:42
名前: 管理人
URL:
こういちろうさん様

わかりずらい私の回答とスクリプトで悩ませてしまいまして申し訳ありません。
ひとつずつ回答していきます。

まず、新旧IPLIST差分チェックする理由ですが、http://centossrv.com/bbshtml/webpatio/1592.shtmlを参照ください。
なお、今後も同様な質問が発生しないように、上記についてはスクリプト中にもコメントとして記入しておきました。

>diff: /tmp/IPLIST: そのようなファイルやディレクトリはありません
上記は初回起動時のみのバグです。動作に影響はありませんが、root宛にメールで通知され、混乱の元になるので出力されないようにスクリプトを修正しました。

最後に/root/iptables.sh not executed.メールが届いた場合の対処手順についてhttp://centossrv.com/iptables.shtmlに記述しました。

不明点等ありましたら引き続きご質問願います。
記事編集 編集

Page: | 1 | 2 |

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

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

- WEB PATIO -