Kozupon.com    
 
 クラッキングとセキュリティ(改訂2007年2月)


■ 知らないうちに・・・やられた(T_T)!

2000年1月に日本の官公庁などを標的にしたWebクラッキングが相次いだ。科学技術庁等のWebページが改ざんされて、あらためてサーバ管理者のセキュリティ知識の重要さを示される結果となった。
これらの官公庁のクラッキングで使用されたのはバッファオーバーフローと言う攻撃であった。私の身近にもクラッカーによる攻撃により、ある企業のWebサーバがダウンされた事があった。これは、「DDos攻撃」と言って、被疑者本人のマシンから直接攻撃を仕掛けるのではなく、他の複数の他人のサーバを踏み台にして一斉に一つのサーバを標的にし、いきなり洪水のような大量なデータを送りつけサーバをパンクさせるのである。まことに持って卑劣な攻撃である。被害者は、複数のサーバからの攻撃を受けた旨はログの確認で解るが、陰に潜んでいる被疑者の事は何も解らないのである。したがって、被害者は踏み台にされたサーバの管理元を疑い抗議をすることしかできないのである。踏み台にされた管理元はいい迷惑であるが、最も踏み台にされるのは、セキュリティの甘いサーバであり、踏み台にされてるのさえ解らない状況であることは言うまでもない。この被害に関しては、体験談を話しても世の方々には実際に身をもって体験してみないと実感としてわかない物である。まるで、子供の非行と同じである。「私の子供に限って・・・。」と言う安易な気持ちから取り返しのつかない事態におちいる。これが、クラッキングの被害の現状である。自分だけの被害であれば自分のサーバをあきらめればよいが、自分のサーバが知らないうちに人に迷惑をかけているとしたら、これは大変なことである。まさに、インターネットの世界は便利になったとはいえ悪人達のやり放題の自由なフィールドであることは言うまでもない。不正なデータが流れていてもそのデータを未然に流れるのを防ぐことは誰にも出来ないのである。
以下に、最近のクラッカーの手口とその防御策について考えてみたい。


1.クラッカーな方々が最初にやること(攻撃対象鯖を探す)

1) アドレスをスキャンする

簡単なことである。無差別にIPアドレスを変えてpingを打つ。まあ、手作業でpingを打つのではなく自動化してくれるツールを使う方が多いだろう。

2) ポートをスキャンする

IPアドレスが決まったら、今度はその鯖で動いてるサービスを特定する。それには、nmapのようなポートスキャナーツールを用いる。攻撃対象にするか?侵入対象にするか?空きポートが有ればあるほどクラッカーな方々はお喜びになる(爆爆)ムカ・・・(-_-メ)

3) バナーをチェックする

今度は、動いてるモジュールの弱みを握るためバージョンとか色々な情報を取得する。たとえば、telnetを使って必要なポートにアクセスしてレスポンスとしてバナーチェックする。間の抜けた管理者の鯖からは、結構色々な情報が取得できる。


2. サーバへの攻撃

サーバへの攻撃には、大きく分けて2つのタイプがある。

1) サーバマシンへの不正侵入

図1

2) ネットワークやサーバをパンクさせ、サービスを妨害する(DDos攻撃等)

図2

3) ボットクラスタ攻撃

図3

最近(2004年から)流行っているのは、このゾンビクラスタによる攻撃らしい。
自分の姿を完全に隠して、ボットというウィルスをネット上のサーバに配布して感染させ感染したサーバはゾンビになりはててしまい悪い方にコントロールされてしまう。まるで、バイオハザードのゾンビのようである。ゾンビコントロールPCがゾンビサーバめがけて指令を出し、DDoS攻撃はてはSPAM攻撃を第三者サーバめがけて行うという非常に恐ろしい攻撃方法である。
ボットを配布されて感染したゾンビは、別のサーバめがけてさらにボットを配布するのでゾンビサーバは芋ずる式に増えてくる。
非常に恐ろしい攻撃だが、詳しいことが現在解らない。


3. 代表的な侵入手口

1) パスワードクラッキング

パスワードクラッキングは、クラッキングと聞いて真っ先に思い浮かべるだろう。色々なパターンのパスワードでログインを試み、最終的に正しいパスワードを見つけだし、相手のサーバにログインしてしまうと言う攻撃である。しかし、最近はこの程度の手口はクラッキング世界では主流とは言えない攻撃方法である。インターネット経由では、スクリプトプログラムを使っても時間がかかる上に、管理者がログを見ることで攻撃中であるか簡単に解ってしまうからである。とは言っても、パスワードクラッキングが無くなったわけではない。インターネット上には、パスワードクラッキング用のツールとパスワード辞書が公開されており、パスワードの甘い設定のサーバでは、極めて短時間でパスワードを解読されてしまう。このツールは、サーバプログラムのセキュリティ・ホールなど、何らかの方法でサーバにログインした後、root権限を奪取する際に用いられることが多い。
LinuxなどUnix系のOSでは、/etc/passwdファイルに、アカウント情報とパスワードのハッシュ値を保存するようになっている。ハッシュ値からはパスワードを計算することは不可能だが、適当な文字列からパスワードの場合と同じハッシュ値を計算して照合させることで、パスワードを見つけだすことは可能である。/etc/passwdファイルは、マシンにログインしてしまえば、どのユーザーからも参照することが出来る。そのため、不正侵入を仮に許してしまうと、当初奪われた一般ユーザー権限でも、なし崩し的に管理者権限までを奪われかねないのである。そこで最近では、パスワードのハッシュ値をroot権限でしか読み出せない別ファイルに格納する。より安全性の高い「シャドウ・パスワード」を採用するディストリビューションも多い。ほとんどの場合、インストール時に選択することが出来る。
俺がクラックな方だとしたら、以下のような試みは初っぱなにやるかも知れない。
@ ID : リターンのみ
Passwd : リターンのみ

A ID : root
Passwd : リターンのみ

B ID : root
Passwd : root

まあ、これで旨く引っかかったとしたらよほど間抜けなアホ管理者だろうから、サーバに侵入されても何でもし放題であろう。
あと、Brutus等のパスワードクラックソフトもある。この手のソフトはIDとPasswdの辞書を持っており、その辞書にある組み合わせの総当たり形式でログインを試みる。そして、辞書中のデータがヒットすれば「めでたく侵入成功!」って言うことである。したがって、IDとPasswdは甘く考えない方が良い。

2) ネットワークパケット盗聴

これも良く聞くクラッキング方法である。ネットワークを流れるデータ(パケット)を盗聴して、通信内容を傍受する手段である。確かに、パケット盗聴はとても強力な手法である。telnetやFTP、POPなど、パスワードやデータを暗号化せずにネットワークに流すサービスを利用していると、パケット盗聴によりあらゆるデータを盗まれることになりかねない。しかし、パケット盗聴が有効なのはLANにおいてである。インターネットでは、データ転送の経路がネットワークの状況により変化するので、中継地点での盗聴は非常に困難である。したがって、一般に考えているほど沢山盗聴が行われているわけではない。ただ、送信元と送信先に極めて近い場所では盗聴も簡単に行える。結構、身近に被疑者がいる場合が多い。
さらに、最悪はファイアーウォールに一端侵入されてからパケット盗聴が行われたら大変危険である。対策は、なんと言っても暗号化ツールの導入である。後ほど述べるが、暗号化ツールは容易に利用できる。

3) バッファオーバーフロー

このバッファオバーフローは、最近とみに増えている。実際、このバッファオバーフローと呼ばれるセキュリティ・ホールを悪用した攻撃は極めて多く、現在ではほとんどの侵入者がまずこのセキュリティ・ホールの利用を考えるのだと思って間違いない。
なんと、このバッファオバーフローはプログラムの「バグ」の一種であると考える。プログラムが用意した静的メモリー領域(固定長バッファ)にバッファの終端を超えてデータを書き込み続けた時に生じる。本来は、バッファの量を超える書き込みが出来ないように、入力データをチェックすべきところをそれを怠ることで発生する。詳しくは、 ここ に書いてあるがroot権限で動作する事の多いサーバ・プログラム中に、このバグがあるとすぐにroot権限を奪われてしまう。
バッファオバーフローは何らかの入力処理を行う全てのプログラムにおいて起きる可能性がある。C言語等は言語使用上、バッファオバーフローを防ぐ仕組みがないため、様々なソフトウェアにこの問題が生じている。Unixなど特にC言語で作られているアプリケーションが多いためターゲットになりやすい。狙われやすいプログラムは、sendmailやpop3d、imapdなどの「サーバソフトでは定番の」プログラムである。これらのサーバプログラムは、動作しているホストが多く、動作している場合はroot権限で実行している。そのため、これらのソフトにバッファオバーフローのセキュリティホールが有った場合は、真っ先に攻撃対象となってしまう。
攻撃の対象になるのは、何もサーバプログラムだけではない。Linuxのシステム上には、様々なソフトウェアがあるが、その中にはroot権限でsetuid(あるいはsetgid)されているソフトウェアがある。通常Linux上で実行するプログラムは、プログラムを起動したユーザの権限で動作する。そのため、バッファオーバーフローを起こすソフトを使って即座にroot権限を取得することは出来ないが、root権限でsetuidされているソフトは、実行したのが誰に関わらず、root権限で実行される。そのため、何らかの方法で侵入を許した後、root権限を奪うために悪用されることが多い。Linuxシステム上には実に様々なrootにsetuidされたソフトが動いている。どのようなソフトがあるかは、以下のコマンドで知ることが出来る。

# find / -perm +4000 -uid 0

これらの、ソフトには潜在的に危険性があることを忘れてはならない。クラッキングツールを置いてあるFTPサイトなどを見ると、xtermのような端末ソフトやxlockのようなスクリーンセーバーを対象にした物、「Doom」「Quake2」と言ったゲームソフトを対象にした物など実に様々な物が存在する。これらのソフトは、サーバソフトに比べ注意が行き届かないためセキュリティホールが放置されやすい。結論的には、どうしても必要な物意外は、削除する方が得策と考える。サーバとして構築するので有ればXWindowシステム関連は必要ないので削除をお勧めする。
バッファオーバーフローをブロックするには、 Exec-Shield のようなkernelレベルの対策も有るので参考にして欲しい。

4) SYN flooding

これは、TCP接続確立の手順を悪用する攻撃である。同時に多数のTCP接続を要求し、それらの接続をクローズしないままに次々と新たな接続を要求することで、サーバのバッファを埋め尽くすものである。これによりサーバは、他の要求を処理できなくなる。
Linuxではカーネル2.0.30の時点で対策がとられている。デフォルトでは防御は有効になっていないが、「TCP SYN cookies」を利用できるようにカーネルの設定を変更し、

# cd /proc/sys/net/ipv4

# echo 1 > tcp_syncookies

とすることで防御が有効になる。

● smurf

図4

smurf攻撃は、図3のようにpingパケットを偽造して第3者のネットワークに送り、攻撃対象のマシンへ大量のping応答パケットを送信させる攻撃である。単純なping攻撃と異なり、真の送信元が特定するのが非常に困難な点が特徴である。
直接的な対策はないが、ブロードキャストアドレスへのpingパケットをルータなどでフィルタリングすることで、応答パケットの増加を抑制できる。

5) DDos(分散型サービス妨害)

DDosは、踏み台にした多数のマシンに攻撃用のプログラムを植え付け、それを遠隔操作して一度に複数のサイトから大量なデータを標的のマシンに送り込むことにより、サーバ及びネットワークをパンクさせる攻撃である(図2参照)。
smurfやSYN floodingなどの他のDos攻撃と組み合わせて使用されることも多い。2000年2月には、米Yahooや米Amazon.comなど相次いで攻撃を受けたことは有名である。
1999年夏頃に登場したこの攻撃方法は、標的となると防御方法がない上に攻撃用のプログラムがインターネット上で広く出回っているため、今後被害が増大する恐れが非常に高い。セキュリティホールを探し出して、攻撃用プログラムを自動的に多数のマシンにインストールするツールもある。
対策としては、自サイトに攻撃用のプログラムを仕掛けられないようにセキュリティを見直すしか方法がない。

■リロード攻撃もしくは、F5攻撃
リロード攻撃とは、ブラウザでサイト観覧を頻繁にリロードすることにより、GETリクエストを大量に目的のサイトに送信してダメージを与えて落とす攻撃である。したがって、F5攻撃とも言っている。

俺の鯖も似たような攻撃をくらった。2007年2月4日(日)午後2時頃から、なんと1時間足らずに10000アクセス近いカウンタの値。明らかにおかしいと、 tail -f でaccess_logをウォッチしたところ、もの凄い早さでGETリクエストが飛んできている。

sub2:/usr/local/apache/logs# tail -f access_log
省略
220.181.34.183 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/telnet/security/mail/gengo/virus/mailgate.html HTTP/1.1" 403 274 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.183 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/debian/mail/kernel/sitepolicy/sitepolicy.html HTTP/1.1" 403 273 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.169 - - [05/Feb/2007:10:03:45 +0900] "GET /index.php3/debian/debian/apache/backup/virus/amavis.html HTTP/1.1" 403 266 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.169 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/debian/debian/apache/backup/network/NW_1.htm HTTP/1.1" 403 265 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.161 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/debian/mail/mail/win/etc/finger.html HTTP/1.1" 403 257 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.170 - - [05/Feb/2007:10:03:46 +0900] "GET /index.php3/network/hard/win/video/solaris/solaris1.html HTTP/1.1" 403 265 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.172 - - [05/Feb/2007:10:03:47 +0900] "GET /index.php3/debian/telnet/backup/postgres/musen/ofdm.html HTTP/1.1" 403 266 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
省略

sub2:~# netstat -an | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:80 220.181.34.187:44515 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.171:35971 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:20057 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.187:43411 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40113 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.165:22637 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:2214 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:1360 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.170:28691 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.163:43994 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:35970 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:20056 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.187:43410 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40112 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32861 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.161:48728 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3317 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22694 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.189:2452 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.178:2443 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.163:43322 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.181:37855 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.181:38111 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:37009 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.184:1026 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32862 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.165:22191 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.169:40723 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:1412 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:2952 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.184:1059 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2213 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:1870 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2834 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:4925 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:22682 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32238 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:1871 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22050 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.189:1840 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:22683 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.170:29591 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.162:32783 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.175:22994 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.190:1411 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:2119 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:1567 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.185:4391 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.178:2444 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.185:2118 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:28949 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.184:1639 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.190:2833 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.177:4926 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3875 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32237 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.187:44027 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32292 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:43127 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:29434 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.189:1421 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:32293 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:33251 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.185:4392 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:31829 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.177:1568 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.179:2514 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.173:20620 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.181:37220 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.180:31830 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3010 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33052 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:32784 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.179:1969 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:42180 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3011 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:4047 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.188:3503 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33498 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.167:42179 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.166:23186 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.184:2508 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:28318 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.167:43250 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.171:37294 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.166:23187 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.178:2951 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.174:33051 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3749 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.185:1359 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.162:33252 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.181:37715 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.161:48727 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.165:22435 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.184:2446 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.170:29164 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.176:3750 FIN_WAIT2
tcp 0 0 192.168.255.103:80 220.181.34.187:44028 TIME_WAIT
tcp 0 0 192.168.255.103:80 220.181.34.174:33497 ESTABLISHED
tcp 0 0 192.168.255.103:80 220.181.34.179:2516 ESTABLISHED
省略

これは、固定したIPアドレスからではなく固定した或る範囲のIPアドレスからダイナミックに送信されている。何れにしても、スクリプトでプログラムを組んでの悪行だと予想する。仕方が無く、初めに Apache側でアクセス制限 をしたが、あまりの大量なパケットであるため効果はなくルータが落ちてしまった。そこで、ルータで静的フィルタ を掛けてブロックした。非常に悪質で卑劣な攻撃だが、2007年2月6日現在、俺のルータが頑張ってくれることを祈ってる。正直、何時攻撃が治まるのかは解らない。そう言えば、これに似た攻撃が靖国神社のWebサーバも喰らっていたのを思い出した。IPアドレスから察すると中国からの攻撃のようだ。奴らは何を考えているのだろう( ̄^ ̄)凸。


4. 対策としては・・・。

1) 基本はなんと言ってもファイアウォール

不正侵入を防ぐには、基本はファイアウォールである。ファイアウォールには、専用の製品もあるが、ルータなどでパケットフィルタリングを行うことで同様の効果を得ることが出来る。

図5

ファイアウォールの利点は、一カ所でシステムの守りを固められる点である。サービスを提供するのに必要最低限のポートに対してだけ、外部からのアクセスを許可するようにすれば、安全性はかなり高まる。各種Linuxディストリビューションや商用Unixの初期設定では、通常は不必要な様々なサーバソフトウェアも自動起動されるようになっているが、ファイアウォールで守っておけば、とりあえず外部に提供するサービスについてだけに、監視を集中させられる(図4参照)。
社内ネットワークなどのLANもインターネットに接続する場合は、Webサーバなどの外部への情報提供を目的としたサーバをDMZ(非武装地帯)に置く構成を採ることで、セキュリティレベルを向上させることが望ましい。

2) もちろんファイアウォールだけでは不十分に決まってる!!

もちろん、ファイアウォールだけでは十分とは言えない。各サーバソフトウェアにセキュリティホールが存在していた場合、直接サーバに侵入される可能性があるし、ファイアウォールが利用するOSにもセキュリティホールが存在する可能性もある。
特に後者は重大問題で、ファイアウォールに頼り切った構成のネットワークでは、セキュリティ対策の根幹が揺らぐことになり、かえって危険を招きかねない。ベンダーや開発元が提供するファイアウォールへのパッチ等の情報に気を配り適切に当てるのはもちろん、内部ネットワークでもセキュリティ対策を施し、ファイアウォールに頼り切らないことが寛容であると考える。

3) バッファオバーフローへの対策

 バッファオバーフローを悪用したクラッキングへの根本的な対策は、バッファオバーフローが発生しないようにプログラムを改良することである。自力で出来る人はパッチを作成し、出来ない人は問題が解消された新しいプログラムをアップデートまたは入れ替えることである。
特に、ソフトウェア開発元が「セキュリティホールがあったので改良した新版を出した」というアナウンスを出した後は、更新が遅いサイトを狙った攻撃が多発するので、最新情報には常に目を光らせ速やかにアップグレードすることをお勧めする。
セキュリティ情報は、各ディストリビューションや JPCERT/CC などが提供している。
先にも述べたが、絶対に必要なソフトウェア以外は動作させないようにする。アップデートするソフトが少しでも少ない方が、手間が省けるだろう。


5. みなさん、間違ってはいけない。「この程度でよい!」と言うことは絶対にないのです!

クラッキングの手口は日々進化しており、その全てにサーバ管理者が対応するのは不可能だと考える。クラッカーから完全にサーバを守ることはこれまた不可能な話である。
現に私など、甘く考えていた愚か者の一人である。だからといって、対策を怠ってはいけない!! 私自身も、自分で出来る限りのセキュリティを勉強して実行していきたいと考えている。

このつづきは、随時追加するつもりです。とりあえず今回はここまで。

以上


 
 
 



Copyright 2007 Kozupon.com.