FirewallでESTABLISHEDが大量…
muninで監視している iptables の状況にて、ESTABLISHED 状態のコネクションが、 急に増加している。調べてみると、ip_conntrack のネタで、職場の ネットワークトラブルの原因と似通ったようなキーワードがぞろぞろ。 同様の状況が発生した場合の原因究明ができるかな…
原因の確認…
- iptables ip_conntrack でググる
- /proc/net/ip_conntrack
(( grep ESTABLISHED /proc/net/ip_conntrack の例 )) tcp 6 431545 ESTABLISHED src=192.168.zz.xx dst=192.168.zz.yy sport=52888 dport=993 src=192.168.zz.yy dst=192.168.zz.xx sport=993 dport=52888 [ASSURED] mark=0 use=2
うーむ、コネクションが残っているのは、dport=993(imaps)ばっかりだな… 職場では、トラブル時にはSkypeが疑われたし、わざと Skype を起動する。 しかし、特に ESTABLISHED が増加するって程ではない…
Spamドメイン登録者が山田太郎って
自宅に連続して届く競馬関連のSpamだけど、 フィルタで分別できるとはいえ、腹の立つ相手。 んで、ドメイン登録を調べてみたけど、以前ならそれなりに責任者っぽい名前が見つかったけど、 今回はドメイン登録者が「山田太郎」って…. しかも、2011/8/3に登録して、8/4には自宅にメールが届いてる。 ドメイン登録代行業者も、もう少し厳しいチェックをしてほしい。
メールの、From 以外にも、Reply-To: に書かれている、chance-pinch.net も、 ドメイン登録を調べたけど、これまた"Yamada Taroh"だった。
USBRHをnagiosで警告メール
muninを使って、USBRHで室内温度の警告をさせていたけど、 警告状態になった時の連続メールがうざいので、 スクリプトを間に入れたけど、動きがおかしいので、 監視を nagios3 にさせてみようと実験。
nagiosであれば、管理画面で警告メールの送信などを、Webで止めたりできる!!
nagios3 でチェックするには、check_XXXX といったプログラムが必要だけど、 USBRH では、自作する必要がある。普通ならperlを使うんだけど、 簡単な処理で、巨大なPerlインタプリタを実行するのは避けたい。 以前から、モジュール機能の無い「組み込み専用Perl」が無いかと、 物色していたけど、Lua というプログラム言語を見つけた。 というわけで、初めての Lua で、check_usbrh を作ってみた。
(( Luaインストール )) # aptitude install lua50 (( /etc/nagios3/my-plugins/check_usbrh )) #!/usr/bin/lua -- arg[1] warning -- arg[2] critical if table.getn(arg) < 2 then print( "UNKNOWN" ) os.exit( 3 ) else warning = tonumber( arg[1] ) critical = tonumber( arg[2] ) end fh = assert(io.popen("/usr/local/bin/usbrh","r")) temp = tonumber( fh:read("*n") ) hum = tonumber( fh:read("*n") ) fh:close() if temp >= critical then print( string.format( "USBRH CRITICAL - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 2 ) elseif temp >= warning then print( string.format( "USBRH WARNING - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 1 ) else print( string.format( "USBRH OK - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 0 ) end (( /etc/nagios-plugins/config/usbrh.cfg )) # 'check_usbrh' command definition define command{ command_name check_usbrh command_line /etc/nagios3/my-plugins/check_usbrh '$ARG1$' '$ARG2$' } (( /etc/nagios3/conf.d/localhost_nagios2.cfg )) # USBRH define service{ use generic-service host_name localhost service_description USBRH check_command check_usbrh!32!35 }
Lua 、こりゃ、ほんとに軽そうな言語。数値が絡んだら、awk とか使ったりしてたけど、 これならsh変わりにも使えそう。
Google+を使ってみる
Google が始めたFacebookもどきの"Google+"を試してみる。 Facebookはしないという人でも、"Google+" であれば Google アカウントを 持っていればすぐに使えるので、利用者拡大という意味では、 後発のGoogleとはいえあなどれない。
ついでに、自宅サイトと職場サイトに、"+1"ボタン(Facebookの"いいね" or "Like"ボタン)の設置をしてみた。説明に従い、MovableType にて、下記の設定を埋め込んでみた。
(( 以下のコードは<head></head>に設置 )) <script type="text/javascript" src="https://apis.google.com/js/plusone.js"> {lang: 'ja'} </script>
(( 以下のコードは設置場所に )) <g:plusone></g:plusone>
んで、この設定を追加している途中で、Facebookのいいねボタンの設置で、 URLの部分のGETパラメータを渡す、変数区切り文字"&"が、 "&"に化けていたので、うまく動いていないことが判明。 早々にこちらも修正&再構築。
arpalertを使ってみる
Wi-Fi経由の勝手な接続などの検出ということで、arpwatchを使っていたけど、 携帯で3G経由で使った後だと、そのアドレスでWi-Fi接続を試すため、 いちいち警告メールが届くのが紛らわしい。 そこで、別のARP監視システムを探してみた。
arpalert は、監視して whitelist とか、発見時のスクリプトを指定できるので、 もう少しきめ細かな警告ができそう。
Debianのパッケージで入れて、警告時に起動するスクリプトに、付属のスクリプトを修正して登録してみた。動かすとサーバ自体の警告メッセージが送られてきた。 原因は、古いサーバとの互換性を考えて、1つのインタフェースに2つのIPアドレスを割り振っているためだった。チェックの度に、2つのアドレスで変わっているとみなされている。 しかたがないので、maclist.allow の最後に、ip_change フラグを付けて、 アドレス変化を無視させる。
(( インストール )) # aptitude install arpalert (( /etc/arpalert/arpalert.conf )) Debianのパッケージをそのまま。 (( /etc/arpalert/maclist.allow )) xx:xx:xx:xx:xx:xx 192.168.xx.xx eth0 xx:xx:xx:xx:xx:xx 192.168.xx.yy eth0 ip_change xx:xx:xx:xx:xx:xx 192.168.xx.zz eth0 ip_change (( /etc/default/arpalert )) ARGS="-e /etc/arpalert/send_alert.sh" (( メール送信のひな形をコピー )) # cp /usr/share/doc/arpalert/examples/scripts/contribs/send_alert.sh /etc/arpalert/ (( /etc/arpalert/send_alert.sh )) #!/bin/sh # Intruder MAC address intruder_MAC=$1 # Intruder IP address intruder_IP=$2 # Alert Type intruder_AlertType=$5 # Ethernet Vendor intruder_Vendor=$6 # Mail recipient mail_To="root" date=`LANG=C /bin/date` # Subject mail_Subject="[arpalert] IP/MAC alert" # Body and send mail cat << EOF | mail -s "$mail_Subject" $mail_To [arpalert] Intruder Detected Intrusion time stamp : $date Intruder IP Address : $intruder_IP Intruder MAC Address : $intruder_MAC Type of alert : $intruder_AlertType Ethernet Vendor: $intruder_Vendor EOF
サーバの警告メールが届かないと思ったら…
自宅サーバのnagios3の状況監視の設定を少し変更していたけど、 警告メールが届かない。そういえば、munin の警告メールも届かない。 そういえば、数日前、携帯の迷惑Eメール防止設定を変更したっけ。
受信許可ドメインの設定ついでに、なりすまし規制の設定レベルを (高)を選択したのが原因っぽい。 自宅サーバはDynamic DNSの設定で、丹南ケーブルTVのサーバ経由で メールを送信している。このため『なりすまし』扱いをうけやすいんだった….
メールのウィルス除去postfix+amavisd+clamav
気まぐれで自宅サーバの受信メールのウィルス除去の設定。 その前に、自宅サーバ宛のメールなんてめったに来ないけど…
Debian postfix clamav にて見つかったページを参考にする。
(( インストール )) # aptitude install amavisd-new (( /etc/postfix/main.cf )) # amavisd設定 content_filter = smtp:localhost:10024 (( /etc/postfix/master.cf )) # amavisd設定 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o myhostname=localhost
/usr/share/doc/amavisd-new/README.postfix.html を見ると、 amavisfeed とか書いてあるけど、contents_filterのsmtp の欄に amavisfeed とかを 書く設定があるけど、よくわからないんだよなぁ…
Thunderbird 5.0 になったけど
メールソフトのThunderbirdが5.0になった。 Firefoxとバージョン番号の統一で、4.0すっとばし。 でも、公開されたばかりで、多少のトラブル。
まず、プラグインが未対応なのが困る。時間の問題とは思うけど、 Google Contactsがダメ。Gmailの連絡帳の同期がされないのは致命的だ。 それに、ThemeでMacのAqua風のものが未対応。シンプルなテーマがいい。
あと、最近になってようやくIMAP対応になった、yahoo.co.jp をThunderbirdで読んでいるけど、 "[CLIENTBUG] ID is not a valid IMAP Command" なるエラーメッセージが 表示される。IMAPコマンドの実装の不完全さの問題にみえるし、ぐぐれば対応策が すぐに見つかると思ったけど、思ったほどみつからない…
どーでもいいけど、Thunderbird 5号は宇宙ステーションだったか… 小さいころ、プラモデル作ったのを思い出した…
munin-limitsの警告を最小限に…
(2011/7/7追記)どうも、以下のプログラムでは、メール送信プロセスが 正しく終了せず、メール送信プロセスが溜まってしまう。 muninのcontact.XXX.command にスクリプトを書くのはまずいみたい。 "/usr/bin/perl /…PATH…/notify.pl…" とすれば動いた。 どうも、command にスクリプトが書いてある場合"sh -c" してくれているんだけど、 何か不具合があるような…
muninで、USBRTの温度監視ができて、munin-limitで警告メールがだせるようになった。 でも、本来の目的は家猫の体調のためなので、警告温度は34℃ほどに設定したら、 設定温度を越えたら5分おきに、ずーっとメールが届く。 さすがに、職場じゃ大量のメールが届くので、状態が閾値を越えたときにだけメールが欲しい。
メールを送るスクリプトに、warning,criticalのデータ件数をつけて呼び出すようにして、 件数が変化していなければ、メールを送らないようにした。
(( /etc/munin/munin.conf )) contact.nagios.command \ /usr/bin/perl /etc/munin/my-plugins/notify.pl \ # (7/7修正) "${var:numwfields}:${var:numcfields}" \ "[Munin] tsaitoh.net" \ 携帯メアド (( notify.pl )) #!/usr/bin/perl exit 0 if ( @ARGV < 3 ) ; my $stat = shift @ARGV ; my $subj = shift @ARGV ; my $mailto = shift @ARGV ; my $last_file = "/var/run/munin/munin.last-stat" ; my $last_stat = "" ; # 前回の状態を読み込む if ( open( FH , "$last_file" ) ) { $last_stat = <FH> ; chomp( $last_stat ) ; # chompの使い方間違ってた... close FH ; } if ( $stat eq $last_stat ) { # 状態の変化がなければ報告しない exit 0 ; } else { # 状態を記録しておく if ( $stat eq "0:0" ) { unlink( $last_file ) if ( -f $last_file ) ; } elsif ( open( FH , ">$last_file" ) ) { print FH "$stat\n" ; close FH ; } # 報告を送信する if ( open(FH,"|/usr/bin/mail -s \"$subj\" \"$mailto\"") ) { while( <> ) { print FH $_ ; } close FH ; } }
自宅内のDNSのExpireなどを短く
Android端末で、ほぼGmailなどは、いつでも読める状態だけど、 自宅メールサーバへの接続に失敗することが発生。 多分、自宅でメールを読んだ時のIPアドレスを覚えていて、 自宅外(もしくはWiFi状況が悪くてG3経由になっている時)で、 そのアドレスを使おうとして、繋がらないなどのトラブルが発生しているように思う。 ということで、自宅内DNSサーバのSOA情報を短くする。
$ORIGIN tsaitoh.net. ; $TTL 604800 @ IN SOA perrine.tsaitoh.net. root.perrine.tsaitoh.net. ( 3 ; Serial 600 ; Refresh 300 ; Retry 600 ; Expire 180 ) ; Negative Cache TTL
あれ??、$TTLも短くするんだっけ?