lost and found ( for me ? )

続の続(Final?): BIND9 脆弱性: Dynamic Update DoS

Protect against DDNS DoS w/ iptables ( ( not rage against the machine ! )

こんなコメントみつけた。

the exploit is clearly in active use ってコメント気になる。。

| iptables -A INPUT -p udp --dport 53 -j DROP -m u32 --u32 '30>>27&0xF=5'

Works for me, but no guaranty. I have added a second rule which logs
said dnsupdate packets and i already got several such packets from the
outside world, so the exploit is clearly in active use and the least you
can do is to try the iptables rule.


テスト構成図
DDNS iptablesでDrop
arizona ( DDNS ,192.168.1.150) --------> alaska ( BIND 9.6.1 , 192.168.1.200 )

その前に、alaska マシンには、必要な perl module(Net::DNS)がなかった。
CPANじゃなくて、yum で perl modules をインストールしよう。

両マシンとも Fedora

[root@arizona ~]# cat /etc/redhat-release
Fedora release 11 (Leonidas)
[root@arizona ~]# uname -r
2.6.29.6-213.fc11.i686.PAE


[root@alaska ~]# cat /etc/redhat-release
Fedora release 11 (Leonidas)
[root@alaska ~]# uname -r
2.6.29.6-213.fc11.i686.PAE
[root@alaska ~]#

[root@alaska ~]# LANG=C yum grouplist
Loaded plugins: refresh-packagekit
Setting up Group Process
Installed Groups:
Administration Tools
Arabic Support
Armenian Support

Virtualization
Web Server
X Software Development
X Window System
Available Groups:
Afrikaans Support

Perl Development

Zulu Support
Done
[root@alaska ~]#

[root@alaska ~]# yum -y groupinstall "Perl Development"

あっ、肝心の Net::DNS インストールされてない。。

[root@alaska ~]# ./localhost_sleep_tight_bind9.pl
Can't locate Net/DNS.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl .) at ./localhost_sleep_tight_bind9.pl line 3.
BEGIN failed--compilation aborted at ./localhost_sleep_tight_bind9.pl line 3.

別マシン ( arizona )はインストールされてたなー。もしかして smokeping インストールしたときに Net::DNS インストールされたような気がしないわけでもないような気がする今日この頃。

[root@alaska ~]# perl -MCPAN -e shell
cpan[1]> install Net::DNS

脆弱性のあるバージョン

[root@alaska ~]# named -v
BIND 9.6.1

[root@alaska ~]# named

[root@alaska ~]# ./localhost_sleep_tight_bind9.pl

alaska named[11883]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
alaska named[11883]: exiting (due to assertion failure)

では、やっとこ iptables へ。

[root@alaska ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

[root@alaska ~]# iptables -A INPUT -p udp --dport 53 -j DROP -m u32 --u32 '30>>27&0xF=5'

追加された。

[root@alaska ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
DROP udp -- anywhere anywhere udp dpt:domain u32 0x1e>>0x1b&0xf=0x5


では try again !

[root@alaska ~]# named
[root@alaska ~]# iptables -A INPUT -p udp --dport 53 -j DROP -m u32 --u32 '30>>27&0xF=5'

こんなイメージで DDNS を arizona から alaska へ。

DDNS Drop
arizona ( DDNS , 192.168.1.150 ) --------> alaska ( BIND 9.6.1 , 192.168.1.200 )

[root@arizona ~]# ./localhost_sleep_tight_bind9.pl
[root@arizona ~]# ./ptr.localhost_sleep_tight_bind9.pl
[root@arizona ~]# ./foo.bar_sleep_tight_bind9.pl
[root@arizona ~]# ./ptr.foo.bar_sleep_tight_bind9.pl

BIND上でキャプチャ

[root@alaska ~]# tshark -i eth0 port 53
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 192.168.1.150 -> 192.168.1.200 DNS Dynamic update SOA localhost
113.579449 192.168.1.150 -> 192.168.1.200 DNS Dynamic update SOA 0.0.127.in-addr.arpa
122.431512 192.168.1.150 -> 192.168.1.200 DNS Dynamic update SOA foo.bar
135.062697 192.168.1.150 -> 192.168.1.200 DNS Dynamic update SOA 0.168.192.in-addr.arpa

おっ、BIND いきてる。ドロップしているみたい。
iptables のログの出しかた忘れたー。

[root@alaska ~]# rndc status
version: 9.6.1
number of zones: 16
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

iptables が有効がきいているかどうか、iptables の情報をフラッシュして、トライ。
これでBINDがダウンすれば、iptables の効果がきいていると考えられる。

[root@alaska ~]# iptables -F
[root@alaska ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@alaska ~]#

arizona から攻撃、。

[root@arizona ~]# ./localhost_sleep_tight_bind9.pl

alaska ( BIND ) チェック。

しんだっぽい。

[root@alaska ~]# rndc status
rndc: connect failed: 127.0.0.1#953: connection refused

おー、やっぱり iptables ではじいてたみたいだ。

alaska named[12162]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
alaska named[12162]: exiting (due to assertion failure)

iptables 勉強しよう、、かな、、いや、、面倒。。。

Cheers!

続: BIND9 脆弱性: Dynamic Update DoS

いろいろためして、本脆弱性を受ける設定がわかった、、気がする今日この頃。

マスターゾーンファイルを1つ以上もっていれば、DDNSの設定有無、キャッシュサーバ、権威サーバの有無にかかわらず、BINDをクラッシュできる。

named.conf で type master でゾーンファイルをもっていると、アウト~。

例えば、

1. 権威サーバを想定

zone "foo.bar." in {
type master; ← アウト~
file "foo.bar.zone";
};

[root@arizona ~]# ./foo.bar_sleep_tight_bind9.pl

arizona named[2779]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
arizona named[2779]: exiting (due to assertion failure)


2. 権威 or キャッシュサーバを想定

権威サーバでもキャッシュサーバでも localhost のゾーンを作っている
場合は多いだろうから。

zone "localhost" {
type master; ← アウト~
file "local.zone";
};

[root@arizona ~]# ./localhost_sleep_tight_bind9.pl

arizona named[2794]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
arizona named[2794]: exiting (due to assertion failure)

3. 権威 or キャッシュサーバを想定

zone "0.0.127.in-addr.arpa" {
type master; ← アウト~
file "local.ptr";
};

[root@arizona ~]# ./ptr.localhost_sleep_tight_bind9.pl

arizona named[2798]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
arizona named[2798]: exiting (due to assertion failure)

4. DDNS ( allow-update ) の設定ある場合でもアウト~

zone "foo.bar." in {
type master; ← アウト~
file "foo.bar.zone";
allow-update { key DDNS; };
};

key DDNS {
algorithm HMAC-MD5;
secret "Xmmnl6BpW/BdLepsuCEoSAx7EOHRAcK8sIZQwbM+9jlRNtUul8g0yfTl+j34IZqqMg2fYT0zkb5fzJzP6n86jQ==";
};

"クラッシュさせるDDNSクエリ"の secret キーの文字列が named.conf のそれと違っていてもnamedをクラッシュできるー。

[root@arizona ~]# ./foo.bar_sleep_tight_bind9.pl

arizona named[2804]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
arizona named[2804]: exiting (due to assertion failure)

5. もちろんこれもアウト~

zone "0.168.192.in-addr.arpa." in {
type master;
file "0.168.192.in-addr.arpa.zone";
allow-update { key DDNS; };
};

[root@arizona ~]# ./ptr.foo.bar_sleep_tight_bind9.pl

arizona named[2811]: db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
arizona named[2811]: exiting (due to assertion failure)

ということで、again !!
type master でマスターゾーンが一つ以上存在すれば、named をクラッシュさせることができる~。

テストしたところ、100%クラッシュできた~。
コアファイルもできたー

[root@arizona ~]# ls /var/named/*core*
/var/named/core.2650 /var/named/core.2779 /var/named/core.2804
/var/named/core.2660 /var/named/core.2794 /var/named/core.2811
/var/named/core.2668 /var/named/core.2798

下記のソースコードを修正したみたい~。

bind-version/bin/named/update.c

[root@arizona ~]# diff /usr/local/src/bind-9.6.1/bin/named/update.c /usr/local/src/bind-9.6.1-P1/bin/named/update.c
18c18
< /* $Id: update.c,v 1.151.12.5 2009/04/30 07:03:37 marka Exp $ */
---
> /* $Id: update.c,v 1.151.12.5.12.1 2009/07/28 14:18:08 marka Exp $ */
982c982,986
< else
---
> else if (type == dns_rdatatype_any) {
> dns_db_detachnode(db, &node);
> dns_diff_clear(&trash);
> return (DNS_R_NXRRSET);
> } else

んで、修正バージョン( 9.6.1-P1 ) だと大丈夫~。

[root@arizona ~]# named -v
BIND 9.6.1-P1

[root@arizona ~]# ./ptr.localhost_sleep_tight_bind9.pl
[root@arizona ~]# ./localhost_sleep_tight_bind9.pl
[root@arizona ~]# ./foo.bar_sleep_tight_bind9.pl
[root@arizona ~]# ./ptr.foo.bar_sleep_tight_bind9.pl

update unsuccessful というログがでるだけ。

arizona named[12059]: client 127.0.0.1#42951: updating zone 'localhost/IN': update unsuccessful: localhost/ANY: 'RRset exists (value dependent)' prerequisite not satisfied (NXRRSET)
arizona named[12059]: client 127.0.0.1#34891: updating zone '0.0.127.in-addr.arpa/IN': update unsuccessful: 1.0.0.127.in-addr.arpa/ANY: 'RRset exists (value dependent)' prerequisite not satisfied (NXRRSET)
arizona named[12059]: client 127.0.0.1#58885: updating zone 'foo.bar/IN': update unsuccessful: foo.bar/ANY: 'RRset exists (value dependent)' prerequisite not satisfied (NXRRSET)
arizona named[12059]: client 127.0.0.1#40956: updating zone '0.168.192.in-addr.arpa/IN': update unsuccessful: 1.0.168.192.in-addr.arpa/ANY: 'RRset exists (value dependent)' prerequisite not satisfied (NXRRSET)

[root@arizona ~]# rndc status
version: 9.6.1-P1
number of zones: 16
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
[root@arizona ~]#

ちゃんといきてるー。

[root@arizona ~]# dig @127.1 www.foo.bar. +norec

; <<>> DiG 9.6.1-P1 <<>> @127.1 www.foo.bar. +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31832
;; flags: qr aa ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.foo.bar. IN A

;; ANSWER SECTION:
www.foo.bar. 3600 IN A 192.168.0.3


[root@arizona ~]# dig @127.1 www.google.com.

; <<>> DiG 9.6.1-P1 <<>> @127.1 www.google.com.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41114
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 604800 IN CNAME www.l.google.com.
www.l.google.com. 300 IN A 72.14.203.103


ということで、パッチをあてるしかなさそうな感じ。
ワークアラウンドなしっていってるしなー。

Workarounds:
None.

(Some sites may have firewalls that can be configured with packet filtering techniques to prevent nsupdate messages from reaching their nameservers.)

iptables で、updateのフラグがついているクエリ落とすっての記載されていたけど、upgradeしたほうがよさそう。。
As a hint for other sysadmins:

For the time until a fixed debian package is available, this iptables rule
should filter all dnsupdate packets, thus mitigating the attack:

| iptables -A INPUT -p udp --dport 53 -j DROP -m u32 --u32 '30>>27&0xF=5'

Works for me, but no guaranty. I have added a second rule which logs
said dnsupdate packets and i already got several such packets from the
outside world, so the exploit is clearly in active use and the least you
can do is to try the iptables rule.

the exploit is clearly in active use ってコメントが気になる~。

ジミヘンいいなー。Zep も好きだけど、ジミヘンも好きだー。

Freedom, freedom
To live
Freedom, freedom
So I can give

ジミヘン、、難しくてギターひけん。。。

BIND9 脆弱性: Dynamic Update DoS

BINDで脆弱性がアナウンスされたみたい。

マスターサーバで、あるDDNSクエリをうけると、BINDがこけるみたい。
DDNS の設定をしていなくても影響を受ける。

DDNSの設定をしていなくても、あるDDNSクエリでこけるって結構、
危険な脆弱性だな~。

パッチ版がリリースされているのですぐにupgradeしたほうがよさそう。

one or more zone もってるってことは、キャッシュサーバだけど
localhost , localhost の逆引きゾーンを持っている場合も影響
うけるってことなのかなー。

-- 抜粋

BIND Dynamic Update DoS

https://www.isc.org/node/474

Summary:
BIND denial of service (server crash) caused by receipt of a specific remote dynamic update message.

Description:

Urgent: this exploit is public. Please upgrade immediately.

This vulnerability affects all servers that are masters for one or more zones – it is not limited to those that are configured to allow dynamic updates. Access controls will not provide an effective workaround.

db.c:659: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
exiting (due to assertion failure).

--

ためしにテストしたら、確かに、DDNSの設定していなくても
BINDがこけた。

こんな感じ。

[root@arizona ~]# cat /etc/redhat-release
Fedora release 11 (Leonidas)

本脆弱性の影響をうけるバージョン。
DDNSの設定は無効。マスター。

[root@arizona ~]# named -v
BIND 9.6.1

で、あるDDNSクエリをおくると。。

[root@arizona ~]# ./sleep_tight_bind9.pl

BIND ... お休みになる ...
ログも ISC に掲載されているログと同じだ。。

[root@arizona ~]# tail /var/log/messages
db.c:649: REQUIRE(type != ((dns_rdatatype_t)dns_rdatatype_any)) failed
exiting (due to assertion failure)


Van Halen いいなー。Extreme のボーカルが歌ってる、唯一のアルバム
Van Halen 3 好きだー。リリース時はぱっとこなかったんだけど、
音がかっこいいー。one i want とか from afar とか how many say i とか。
once もいいなー。Extreme の waiting for the punchline も好きだー。
これまた音がかっこいい。zakk の pride & glory も音かっこい~。

one i want !!

measure latency w/ smokeping

SLA監視に使えるかもと思ったので、ちょっと使ってみました。

[root@arizona ~]# cat /etc/redhat-release
Fedora release 11 (Leonidas)

[root@arizona ~]# uname -r
2.6.29.6-213.fc11.i686.PAE

[root@arizona ~]# yum install -y smokeping.noarch

- smokeping の設定ファイル ( /etc/smokeping/config )

適当に修正

#imgcache = /var/lib/smokeping/images
imgcache = /var/www/html/smokeping/img
#imgurl = /smokeping/images
imgurl = http://127.0.0.1/smokeping/img
datadir = /var/lib/smokeping/rrd
piddir = /var/run/smokeping
#cgiurl = http://localhost/smokeping/smokeping.cgi
cgiurl = http://127.0.0.1/cgi-bin/smokeping.cgi

- apache で結果ファイルが閲覧できるように設定する ( httpd.conf )

Apacheにてsmokepingの結果が閲覧できるように設定。

smokeping.cgi スクリプトをコピー

# cp /usr/share/smokeping/cgi/smokeping.cgi /var/www/cgi-bin/

所有者の変更

# chown apache.apache /var/www/cgi-bin/smokeping.cgi

- smokeping.cgi を編集

# use lib qw(/usr/pack/rrdtool-1.0.33-to/lib/perl);
use lib qw(/usr/bin); ← rrdttol のある場所 /usr/bin/rrdtool

One pointing to your B installation

# use lib qw(/home/oetiker/public_html/smokeping/lib);
use lib qw(/usr/share/smokeping/lib); ← smokeping のライブラリの場所

One pointing to the place where you have installed the SmokePing libraries

use Smokeping;

# Smokeping::cgi("/home/oetiker/.smokeping/config");
Smokeping::cgi("/etc/smokeping/config"); ← smokeping のconfigを指定

httpd.conf ( cgi を実行できるようにコメントを外す )

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

所有者の変更

[root@arizona ~]# mkdir -p /var/www/html/smokeping/img
[root@arizona ~]# chown -R apache.apache /var/www/html/smokeping/img

smokeping , httpd を起動

[root@arizona ~]# /etc/init.d/smokeping start
smokeping を起動中: [ OK ]
[root@arizona ~]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
[root@arizona ~]#

[root@arizona ~]# ps aux | grep smoke | grep -v grep
root 4303 0.0 0.3 26548 13612 ? Ss 01:07 0:00 /usr/sbin/smokeping [FPing]

下記urlにアクセス。

http://127.0.0.1/cgi-bin/smokeping.cgi

画面が表示されればとりあえず、基本設定は成功。




監視対象の設定 ( /etc/smokeping/config )

+ Ping

menu = Google
title = Google Pings

++ Google

menu = www.google.com
title = www.google.com
host = 66.249.89.99

グラフが表示されん。。
httpd の error.log

# less /var/log/httpd/error_log

[error] [client 127.0.0.1] File does not exist: /usr/share/smokeping/htdocs/img, referer: http://127.1/cgi-bin/smokeping.cgi?target=Ping.Google

/usr/share/smokeping/htdocs/img ??

確かにそんなファイル(ディレクトリ?)はない。

# ls /usr/share/smokeping/htdocs/
cropper resource rrdtool.png script smokeping.png tr.html

シンボリックリンクはってみるか。

# ln -s /var/www/html/smokeping/img /usr/share/smokeping/htdocs/img

# ls -l /usr/share/smokeping/htdocs/img
lrwxrwxrwx 1 root root /usr/share/smokeping/htdocs/img -> /var/www/html/smokeping/img

グラフができたー。



一応グラフができたあとの各種コンフィグ。

/etc/smokeping/config

[root@arizona ~]# egrep -v "^#" /etc/smokeping/config | grep -v "^$"
*** General ***
owner = Super User
contact = root@localhost
mailhost = my.mail.host
sendmail = /usr/sbin/sendmail
imgcache = /var/www/html/smokeping/img
imgurl = http://127.0.0.1/smokeping/img
datadir = /var/lib/smokeping/rrd
piddir = /var/run/smokeping
cgiurl = http://127.0.0.1/cgi-bin/smokeping.cgi
smokemail = /etc/smokeping/smokemail
tmail = /etc/smokeping/tmail
syslogfacility = local0
*** Alerts ***
to = root@localhost
from = root@localhost
+someloss
type = loss
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times in a row
*** Database ***
step = 300
pings = 20
AVERAGE 0.5 1 1008
AVERAGE 0.5 12 4320
MIN 0.5 12 4320
MAX 0.5 12 4320
AVERAGE 0.5 144 720
MAX 0.5 144 720
MIN 0.5 144 720
*** Presentation ***
template = /etc/smokeping/basepage.html
+ charts
menu = Charts
title = The most interesting destinations
++ stddev
sorter = StdDev(entries=>4)
title = Top Standard Deviation
menu = Std Deviation
format = Standard Deviation %f
++ max
sorter = Max(entries=>5)
title = Top Max Roundtrip Time
menu = by Max
format = Max Roundtrip Time %f seconds
++ loss
sorter = Loss(entries=>5)
title = Top Packet Loss
menu = Loss
format = Packets Lost %f
++ median
sorter = Median(entries=>5)
title = Top Median Roundtrip Time
menu = by Median
format = Median RTT %f seconds
+ overview
width = 600
height = 50
range = 10h
+ detail
width = 600
height = 200
unison_tolerance = 2
"Last 3 Hours" 3h
"Last 30 Hours" 30h
"Last 10 Days" 10d
"Last 400 Days" 400d
*** Probes ***
+ FPing
binary = /usr/sbin/fping
*** Slaves ***
secrets=/etc/smokeping/smokeping_secrets
+boomer
display_name=boomer
color=0000ff
+slave2
display_name=another
color=00ff00
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of Insert Company Name Here. \
Here you will learn all about the latency of our network.
+ Ping
menu = Google
title = Google Pings
++ Google
menu = www.google.com
title = www.google.com
host = 66.249.89.99
[root@arizona ~]#

/var/www/cgi-bin/smokeping.cgi
[root@arizona ~]# egrep -v "^#" /var/www/cgi-bin/smokeping.cgi

use strict;
use warnings;

use lib qw(/usr/share/smokeping/lib);

use CGI::Carp qw(fatalsToBrowser);

use Smokeping 2.004002;

Smokeping::cgi("/etc/smokeping/config");

=head1 NAME

smokeping.cgi - SmokePing webfrontend

=head1 OVERVIEW

This script acts as a 'website' for your SmokePing monitoring operation. It
presents the targets you are looking at in a tree structure and draws graphs
as they are required by people looking at the pages.

=head1 DESCRIPTION

To get B going, you need a webserver which allows you to run
cgi scripts. The system must be setup so that the B is
allowed to write to the image caching area as defined in the config file.

This script runs with normal perl. B it will appear to be very slow,
because it does a lot of things when starting up. So if the script has to be
started a fresh on every click, this is both slow and a tough thing for your
webserver. I therefore strongly recomment using SpeedyCGI.

Please refer to the installation document for detailed setup instructions.

=head1 SETUP

When installing SmokePing, this file has to be adjusted to fit your
local system. Three paths have to be entered.

use lib qw(/usr/bin);

One pointing to your B installation

use lib qw(/usr/share/smokeping/lib);

One pointing to the place where you have installed the SmokePing libraries

use Smokeping;

Smokeping::cgi("/etc/smokeping/config");

The third path is the argument to the Smokeping::cgi command. It points to
the SmokePing configuration file.

=head1 COPYRIGHT

Copyright (c) 2001 by Tobias Oetiker. All right reserved.

=head1 LICENSE

This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.

You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
02139, USA.

=head1 AUTHOR

Tobias Oetiker Etobi@oetiker.chE

=cut
[root@arizona ~]#

- httpd.conf は ScriptAlias のコメントを外しただけ。

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


AllowOverride None
Options None
Order allow,deny
Allow from all


--

ping 以外にもいろいろなプロトコル ( DNS , HTTP etc ) みたいなので、もうちょっとさわってみよう。意外と苦戦。

久々に DJ Tiesto 聞いてる。あいかわらず最高だー。
elements of life !

yum: kernel の削除

Fedora 使用していると、kernel のアップデートが頻繁にあるので、
古いカーネルを削除する方法。

# rpm -qa | grep kernel
kernel-PAE-devel-2.6.29.6-213.fc11.i686
kernel-firmware-2.6.29.6-213.fc11.noarch
kernel-PAE-2.6.29.5-191.fc11.i686
kerneloops-0.12-5.fc11.i586
kernel-PAE-devel-2.6.29.5-191.fc11.i686
kernel-headers-2.6.29.6-213.fc11.i586
kernel-PAE-2.6.29.6-213.fc11.i686

現在使用している kernel

[root@arizona ~]# uname -r
2.6.29.6-213.fc11.i686.PAE

191を削除。

[root@arizona ~]# yum remove -y kernel-PAE-2.6.29.5-191.fc11.i686 kernel-PAE-devel-2.6.29.5-191.fc11.i686

[root@arizona ~]# egrep -v "^#" /etc/grub.conf
default=1
timeout=5
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.29.6-213.fc11.i686.PAE)
root (hd0,2)
kernel /boot/vmlinuz-2.6.29.6-213.fc11.i686.PAE ro root=UUID=d32cec7c-94ac-481b-b3f8-1dc36daa59fe rhgb quiet
initrd /boot/initrd-2.6.29.6-213.fc11.i686.PAE.img
title WinXP
rootnoverify (hd0,0)
chainloader +1

grub.conf も編集してくれる。

HTTP レイテンシー測定ツール httping , http_ping

[root@alaska ~]# cat /etc/redhat-release
Fedora release 11 (Leonidas)

[root@alaska ~]# uname -r
2.6.29.5-191.fc11.i686.PAE

httping , http_ping

両方とも、http の latency を計測するツール。

どっちがいいんだろー。

http_ping のほうが、コネクションの開設、最初に受け取ったレスポンス、
最後のデータを受け取ったまでの時間が出力されるので、こっちのほうが
いいのかなー。

・http_ping

[root@alaska ~]# yum list | grep http_ping
http_ping.i586 20050629-9.fc11 @fedora

connect: コネクション開設
response: GETから最初のレスをうけるまで
data: その後のすべてのデータを受信するまで( 200 OK まで ? )

なのかな。。

total = connect + response + data になる。

[root@alaska ~]# http_ping -c 1 http://www.google.co.jp.
5454 bytes from http://www.google.co.jp.: 118.501 ms (49.529c/62.962r/6.01d)

--- http://www.google.co.jp. http_ping statistics ---
1 fetches started, 1 completed (100%), 0 failures (0%), 0 timeouts (0%)
total min/avg/max = 118.501/118.501/118.501 ms
connect min/avg/max = 49.529/49.529/49.529 ms
response min/avg/max = 62.962/62.962/62.962 ms
data min/avg/max = 6.01/6.01/6.01 ms

[root@alaska ~]# tshark -i eth0 port 80
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=7633558 TSER=0 WS=6
0.049293 74.125.153.104 -> 192.168.1.200 TCP http > 33066 [SYN, ACK] Seq=0 Ack=1 Win=5672 Len=0 MSS=1430 TSV=448182951 TSER=7633558 WS=6
0.049364 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=7633608 TSER=448182951
0.049498 192.168.1.200 -> 74.125.153.104 HTTP GET / HTTP/1.0
0.103264 74.125.153.104 -> 192.168.1.200 TCP http > 33066 [ACK] Seq=1 Ack=67 Win=5696 Len=0 TSV=448183004 TSER=7633608
0.112272 74.125.153.104 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.112355 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [ACK] Seq=67 Ack=1419 Win=8768 Len=0 TSV=7633671 TSER=448183012
0.115288 74.125.153.104 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.115368 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [ACK] Seq=67 Ack=2837 Win=11648 Len=0 TSV=7633674 TSER=448183012
0.115407 74.125.153.104 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.115430 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [ACK] Seq=67 Ack=4255 Win=14528 Len=0 TSV=7633674 TSER=448183012
0.115445 74.125.153.104 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.115472 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [ACK] Seq=67 Ack=4412 Win=17408 Len=0 TSV=7633674 TSER=448183012
0.118222 74.125.153.104 -> 192.168.1.200 HTTP HTTP/1.0 200 OK (text/html)
0.118354 192.168.1.200 -> 74.125.153.104 TCP 33066 > http [FIN, ACK] Seq=67 Ack=5771 Win=20288 Len=0 TSV=7633677 TSER=448183013
0.171527 74.125.153.104 -> 192.168.1.200 TCP http > 33066 [ACK] Seq=5771 Ack=68 Win=5696 Len=0 TSV=448183073 TSER=7633677
^C16 packets captured
[root@alaska ~]#


・httping

[root@alaska ~]# httping -V
HTTPing v1.2.9, (C) 2003-2008 folkert@vanheusden.com
SSL support included

[root@alaska ~]# httping -G -c 1 -h www.google.co.jp.
PING www.google.co.jp.:80 (http://www.google.co.jp.:80/):
connected to www.google.co.jp.:80, seq=0 time=144.73 ms
--- http://www.google.co.jp.:80/ ping statistics ---
1 connects, 1 ok, 0.00% failed
round-trip min/avg/max = 144.7/144.7/144.7 ms

[root@alaska ~]# tshark -i eth0 port 80
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=7890379 TSER=0 WS=6
0.049348 74.125.153.99 -> 192.168.1.200 TCP http > 51489 [SYN, ACK] Seq=0 Ack=1 Win=5672 Len=0 MSS=1430 TSV=65665032 TSER=7890379 WS=6
0.049412 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=7890428 TSER=65665032
0.049548 192.168.1.200 -> 74.125.153.99 HTTP GET http://www.google.co.jp.:80/ HTTP/1.0
0.102977 74.125.153.99 -> 192.168.1.200 TCP http > 51489 [ACK] Seq=1 Ack=99 Win=5696 Len=0 TSV=65665086 TSER=7890428
0.115296 74.125.153.99 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.115328 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [ACK] Seq=99 Ack=1419 Win=8768 Len=0 TSV=7890494 TSER=65665097
0.118277 74.125.153.99 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.118312 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [ACK] Seq=99 Ack=2837 Win=11648 Len=0 TSV=7890497 TSER=65665097
0.118399 74.125.153.99 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.118433 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [ACK] Seq=99 Ack=4255 Win=14528 Len=0 TSV=7890497 TSER=65665097
0.118450 74.125.153.99 -> 192.168.1.200 TCP [TCP segment of a reassembled PDU]
0.118482 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [ACK] Seq=99 Ack=4412 Win=17408 Len=0 TSV=7890497 TSER=65665097
0.121405 74.125.153.99 -> 192.168.1.200 HTTP HTTP/1.0 200 OK (text/html)
0.121533 192.168.1.200 -> 74.125.153.99 TCP 51489 > http [FIN, ACK] Seq=99 Ack=5771 Win=20288 Len=0 TSV=7890500 TSER=65665097
0.174533 74.125.153.99 -> 192.168.1.200 TCP http > 51489 [ACK] Seq=5771 Ack=100 Win=5696 Len=0 TSV=65665157 TSER=7890500
^C16 packets captured
[root@alaska ~]#

stevie salas のニューアルバム set it on blast いいなー。
グルーブ感がたまらん。
3曲目の Block Rockin がお気に入り。
リフ、バッキングがかっこいい。繰り返し聞きまくってる。

Rainbow across the sky


ビアホール入場待ち中に見えた虹の写真。
入場まで2時間くらい待ちましたが、待った甲斐がありました。
この写真は、一緒に飲みにいった人が携帯で撮った写真です。
きれいだー。ナイス!

Can you see the rainbow through the gray?

2009年 名目GDP 予測値: USA , Japan , China

国際通貨基金の統計やエネルギー経済統計要覧2009年版を参考に作成された、
2009年の名目GDP予測値。

英語で名目GDP は nominal GDP なんだー。知らなかったー。
辞書引くと nominal の意味は、
"名目上の"、"額面通りの"、という意味みたい。
ちなみに、実質GDPは real GDP みたい。知らなかった。



Y左軸: nominal GDP
Y右軸: total population

中国がもうじき(2010年かな?)には、日本のGDPを超えそう。
世界第二位に躍り出そうだ。

ただ、総人口数を考慮すると、一人あたりのGDPは、米国、日本に比べ
相当低いなー。一部に富が集中していて、格差が相当ありそう。
格差がなくなっていけば、すごいGDPになりそう。
しかし、米国、日本レベルの総人口でも、一人あたりのGDPに格差が出ている状況
を考えると、13億レベルの中国で格差をなくすのは相当難しそうだ。

どうすれば実現できるんだろう。。うーん。
この人口(13億)で、一人あたりのGDPが米国、日本並の国がないからなー。
機会があれば、BRICsのGDP比較もしてみたいな。
日本は今後どうなる、、、??
今の制度のままだと、少子高齢化により人口減が進むだろうから、GDPは減っていくだろうけど、
どのくらいのレベルで減っていくんだろう。。

外食業界 M&A による規模の経済性

外食業界の勝ち組同士によるM&Aで独占化は進みにくいらしい。
理由は、M&Aによる規模の経済性(スケールメリット)が効かないらしい。
たとえば、ファミレス業界と寿司業界のトップがM&Aしても、
ファミレスで使用するお米と、すし屋で使用するお米の種類が異なるため、
お米の仕入れコストが安くなるとは限らない。

なるほどー、言われてみればそうだが、気づかなかった。

Into the wild のDVD見直したら、また感動した。。

映画の最後の方に出る言葉。。

Happiness only real when shared.

幸福は分かち合って現実になる。。

映画で使用されている、Eddie Vedder ( Peral Jam の Vocal )
の曲も最高だ、、we leave it all far behind !!!

SNMP Trap : the difference between v1 trap and v2c trap

知らなかったのでメモ~。

cold/warm start , link down/up トラップって v1 も v2c も同じかと思っていたら違うんだね。。

たとえば、link down だと v1もv2cも 1.3.6.1.6.3.1.1.5.3 かと思っていたら違ってた。

ちょっと調べてみたら確かに v1 と v2c で違うって説明がある。


下記は link down の OID

- v1

linkdown の OID は プロダクトOID (enterprise OID ) , generic ID 2 , specific ID 0

と、リンクダウンは v1だと、プロダクトOID が変わり、generic ID が 2 , specific ID が 0 という風みたい。
ちなみに下記のプロダクトOID ( 1.3.6.1.4.1.9.1.324 ) は Catalyst 2950 の プロダクトOID

v1 だとプロダクトOIDのみ変わり、generic ID , specfic ID は変わらない。

coldstart は プロダクトOID , generic ID が 0 , specific ID は 0 、
linkup は プロダクトOID , generic ID が 3 , specific ID は 0 となる。

Simple Network Management Protocol
version: version-1 (0)
community: public
data: trap (4)
trap
enterprise: 1.3.6.1.4.1.9.1.324 (SNMPv2-SMI::enterprises.9.1.324)
agent-addr: 192.168.0.1 (192.168.0.1)
generic-trap: linkDown (2)
specific-trap: 0
time-stamp: 36587
variable-bindings: 4 items
IF-MIB::ifIndex.2 (1.3.6.1.2.1.2.2.1.1.2): 2
Object Name: 1.3.6.1.2.1.2.2.1.1.2 (IF-MIB::ifIndex.2)
IF-MIB::ifEntry.ifIndex: 2
IF-MIB::ifIndex: 2
IF-MIB::ifDescr.2 (1.3.6.1.2.1.2.2.1.2.2): FastEthernet0/2
Object Name: 1.3.6.1.2.1.2.2.1.2.2 (IF-MIB::ifDescr.2)
IF-MIB::ifEntry.ifIndex: 2
IF-MIB::ifDescr: FastEthernet0/2
IF-MIB::ifType.2 (1.3.6.1.2.1.2.2.1.3.2): ethernetCsmacd (6)
Object Name: 1.3.6.1.2.1.2.2.1.3.2 (IF-MIB::ifType.2)
IF-MIB::ifEntry.ifIndex: 2
IF-MIB::ifType: ethernetCsmacd (6)
SNMPv2-SMI::enterprises.9.2.2.1.1.20.2 (1.3.6.1.4.1.9.2.2.1.1.20.2): 4C6F7
3742043617272696572
Object Name: 1.3.6.1.4.1.9.2.2.1.1.20.2 (SNMPv2-SMI::enterprises.9.2.2
.1.1.20.2)


- v2c

v2c は上記URIに記載されているOID

linkdownのOID 1.3.6.1.6.3.1.1.5.

version: v2c (1)
community: public
data: sNMPv2-Trap (7)
sNMPv2-Trap
request-id: 2
error-status: noError (0)
error-index: 0
variable-bindings: 6 items
SNMPv2-MIB::sysUpTime.0 (1.3.6.1.2.1.1.3.0): 41971
Object Name: 1.3.6.1.2.1.1.3.0 (SNMPv2-MIB::sysUpTime.0)
Scalar Instance Index: 0
SNMPv2-MIB::sysUpTime: 41971
SNMPv2-MIB::snmpTrapOID.0 (1.3.6.1.6.3.1.1.4.1.0): 1.3.6.1.6.3.1.1.5.3 (IF
-MIB::linkDown)
Object Name: 1.3.6.1.6.3.1.1.4.1.0 (SNMPv2-MIB::snmpTrapOID.0)
Scalar Instance Index: 0
SNMPv2-MIB::snmpTrapOID: 1.3.6.1.6.3.1.1.5.3 (IF-MIB::linkDown)
IF-MIB::ifIndex.3 (1.3.6.1.2.1.2.2.1.1.3): 3
Object Name: 1.3.6.1.2.1.2.2.1.1.3 (IF-MIB::ifIndex.3)
IF-MIB::ifEntry.ifIndex: 3
IF-MIB::ifIndex: 3
IF-MIB::ifDescr.3 (1.3.6.1.2.1.2.2.1.2.3): FastEthernet0/3
Object Name: 1.3.6.1.2.1.2.2.1.2.3 (IF-MIB::ifDescr.3)
IF-MIB::ifEntry.ifIndex: 3
IF-MIB::ifDescr: FastEthernet0/3
IF-MIB::ifType.3 (1.3.6.1.2.1.2.2.1.3.3): ethernetCsmacd (6)
Object Name: 1.3.6.1.2.1.2.2.1.3.3 (IF-MIB::ifType.3)
IF-MIB::ifEntry.ifIndex: 3
IF-MIB::ifType: ethernetCsmacd (6)
SNMPv2-SMI::enterprises.9.2.2.1.1.20.3 (1.3.6.1.4.1.9.2.2.1.1.20.3): 4C6F7
3742043617272696572
Object Name: 1.3.6.1.4.1.9.2.2.1.1.20.3 (SNMPv2-SMI::enterprises.9.2.2
.1.1.20.3)
Value (OctetString): 4C6F73742043617272696572

統計データ: 日本の人口 , 世帯数 from 統計局

ふと新聞読んでいたら、給付金支給官僚世帯がのっていた。
まだ私は申請していません。理由は、、うーん手続きが面倒。。
5月頃に初通知がきて、ほっといたら、催促の通知がきていました。
まだ申請されておらんよーって。

んで、本題。
世帯数、86% で 約4700万世帯と書いてある。
今まで、100% で 約4700万世帯と記憶していたが、もうちょい多いみたい。

86% = 4700万を元ににすると 100% は 4700/0.86 で、約 5400万世帯。
ふーん。人口減少率と世帯数の関係が見てみたいなー。
統計局のデータ、エクセルで、エクセルないからみれん。。
Open Officeもインストールしてないし。
PDF版もあるけど、加工したいので。。

統計局ホームページ。
色々な統計データ ( 人口、世帯、物価 etc ) がある。
税金使って調査したぶん、ちゃんと公開してるんだね。

http://www.stat.go.jp/index.htm

まぁこのデータの信憑性をどう判断すればいいかは ? だが、
信じるしかないかなー。まぁあってるでしょう。。
いろいろデータ改竄のニュースがあるから信じられない?

人口推移のグラフもある。
要約があり、グラフ化されていて、見やすいね。ご参考まで。




このページ、お気に入りに追加しとこう。

雑学?

カナダ人の友達と飲んでいたときの話。

彼がカナダの高校に通っていたときに、彼の友人が
男が女の人と付き合う下限の年齢は、

your age divided by 2 plus 7

とその友人から言われたらしい。。

たとえば 30 の男だと、

30 divided by 2 plus 7 = 22 。下限は 22歳の女の人ってことになる。

へぇ~。