1 /*
2 * echo_server.c 3 */
4 #include <stdio.h>
5 #include <string.h>
6 #include <sys/types.h>
7 #include <sys/socket.h>
8 #include <netinet/in.h>
9
10 #define PORT 50000 /* ポート番号 */
11
12 int main( void ) {
13 int i;
14 int connected_fd, listening_fd;
15 struct sockaddr_in server_addr;
16 struct sockaddr_in client_addr;
17 int len, buflen;
18 char buf[1024];
19
20 /* リスニングソケット作成 */
21 if ( ( listening_fd = socket(PF_INET, SOCK_STREAM, 0) ) < 0 ) { 22 perror("*** server: socket ***");
23 exit(1);
24 } 25
26 /* アドレスファミリ・ポート番号・IPアドレス設定 */
27 bzero( (char *)&server_addr, sizeof(server_addr) );
28 server_addr.sin_family = PF_INET;
29 server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
30 server_addr.sin_port = htons(PORT);
31
32 /* リスニングソケットにアドレスを割り当て */
33 if ( bind( listening_fd, (struct sockaddr *)&server_addr, 34 sizeof(server_addr) ) < 0 ) {
35 perror("*** server: bind ***");
36 close(listening_fd);
37 exit(1);
38 } 39
40 /* リスニングソケット待ち受け */
41 if ( listen( listening_fd, 1 ) < 0 ) { 42 perror("*** server: listen ***");
43 close(listening_fd);
44 exit(1);
45 }
46 printf( "Waiting for connections from a client.\n" );
47
48 /* 接続要求受け付け */
49 len = sizeof(client_addr);
50 if ( ( connected_fd = accept(listening_fd,
51 (struct sockaddr *)&client_addr, &len) ) < 0 ) { 52 perror("*** server: accept ***");
53 close(listening_fd);
54 exit(1);
55 }
56 close(listening_fd);
57 printf( "Accepted connection.\n" );
58
59 /* データの送受信 */
60 while (1) {
61 if ( ( buflen = read( connected_fd, buf, sizeof(buf) ) ) <= 0 ) {
62 break;
63 }
64 printf( ">>> Received (size:%d).\n", buflen );
65 write( 1, buf, buflen );
66 printf( "<<< Sending...\n" );
67 if ( write( connected_fd, buf, buflen ) < 0 ) {
68 break;
69 }
70 } 71
72 /* ソケット切断 */
73 exit( close(connected_fd) );
74 }
B 不正アクセスの手口・被害
最近では自宅でも光ファイバーやADSLといった高速な通信回線を利用できるようになり,自分のPCをイン ターネットに常時接続することも少なくなくなってきている.また,みなさんが今後配属される研究室では,よ り多くのコンピュータをインターネットに接続していることだろう.
ここで問題となるのは,外部からの不正なアクセスを防ぐ方法である.携帯電話でときどきメールをチェックす るのとは異なり,コンピュータをインターネットに常時接続しておくことは,外部からの不正なアクセスを許す可 能性を非常に高くする.ここでは,不正アクセスの手口と被害について紹介する.4章の情報セキュリティ対策を 学習する前に,事前知識としてぜひ一読してほしい.
なお,不正アクセスの手順などを具体的に説明しているが,不正アクセスは犯罪であるということをよく認識 し,くれぐれも実際にそれらを試してみようなどと思わないこと.仮にそのような不正アクセスを行った場合,大 学を退学になるのはもちろんだが,法的にも裁かれ,被害によっては莫大な損害賠償を請求されることにもなる.
B.1 不正アクセスの被害
B.1.1 Webページの改ざん
権限を持っていない人間によって情報が書き換えられることを改ざんという.Webページの改ざんには大きく 分けて次の二つのケースがある.
• Webサーバのホストに不正侵入され,ページが改ざんされる
• FTPや,CGIなどのネットワークサービスが不正利用され,ファイルが置き換えられる
不正侵入や不正利用が起こる要因は,Webサーバのソフトウェアのバグ,CGIプログラムのバグ,その他のネッ トワークアプリケーションのバグ,遠隔ログインやファイル転送におけるアクセス制御の失敗,各種設定の誤り,
など様々であり,Webページの改ざんを防ぐには,これらの要因をできる限り少なくすることが望まれる.実際 の侵入や改ざんには,クラッカーによる攻撃とコンピュータウィルスによるものとがある.
2001年2月〜3月には,H.U.C(Hacker Union Of China)を名乗る団体が,日本サイトへの攻撃予告をインター ネット上のサーバに掲載し,それに関係すると思われる日本のサイトへの被害が続いた.最近では,2005年5月 上旬に,PCや家電製品の価格比較サイト「価格.com」が不正アクセスにより改ざんされ,ウィルスを仕込まれ る事件が起こっている.Webページが書き換えられると,その部署のセキュリティ意識,危機管理意識が問われ,
場合によってはその部署が属する組織全体,我々の場合だと大学の信用を失墜してしまうことにもなりかねない.
B.1.2 踏み台
不正アクセスをした覚えがないにも関わらず,「貴方のサーバが当社のサーバに不正にアクセスしている」とい うクレームを受けたとする.この場合,サーバが「踏み台」にされた可能性が極めて高い.踏み台とは無関係な 第三者のサーバを経由して,別のサーバに不正アクセスを試みる手段のことである.踏み台には,犯人の追跡を 困難にするという特色もある.適切な情報セキュリティ対策を施していないと,このように被害者でありながら 加害者になってしまう可能性がある.被害を被った企業からは,損害賠償請求など法的な手段により訴えられる 恐れもある.
2003年6月には,神戸大学で「休講掲示板システム」のサーバが踏み台にされ,米航空宇宙局(NASA)のサー バに侵入を試みる不正プログラムが仕掛けられるという事件が起きている.2000年2月に施行された通称「不正 アクセス禁止法」では,コンピュータの管理者は,不正アクセス行為から防御するための必要な措置を講ずるよ う努力することが求められており,「知らなかった」「身に覚えがない」だけでは済まされなくなっている.
B.1.3 サーバダウン
サーバダウンは,通称「DoS(Denial of Service)アタック」と呼ばれる方法によって引き起こされる.通常,サー バはアクセスしてきた要求に対し返答を行うが,それを逆手に取って,数万〜数十万というサーバの許容量を超 えるアクセス要求を行うことにより,サーバの稼働率を100%にしてしまい,通常のサーバへのアクセスをさせな
いようにしてしまう手口である.そのようなDoSアタックをされると,サーバが稼働しているコンピュータのリ ソースが減ってしまい,コンピュータがハングアップしてしまうこともある.複数のマシンからDoSアタックを 試みたり(DDoSアタック:Distributed Denial of Service Attack),踏み台を通してDoSアタックを仕掛けられる ことも多い.
2004年9月から2005年1月にかけて,靖国神社のWebサイトがDDoSアタックを受けてニュースとなったほ か,2004年11月には大阪府のサーバがアタックを受け,約2時間20分にわたって同府のWebサイトにアクセス できないという状況になった.
B.1.4 情報の漏洩
情報の漏洩事件が続発している.2004年1月には,ソフトバンクBBの加入者などの個人情報450万件が漏洩 し,大きな社会問題となった.その後も事件は頻発しており,情報を取り扱う側の姿勢が厳しく問われている.
大学の研究室という小さな組織であっても,多くの情報を保有している.たとえば,開発中のシステムの仕様 書,評価データ,研究室メンバーの住所録といった個人情報,ユーザアカウント情報などである.それらの情報の 取り扱いついては,明確な指針に従うべきである.たとえば,卒業生や退学者のユーザアカウントやパスワード の処置であるとか,研究データの持ち出しなどである.いくら物理的に強固なセキュリティ対策を施しても,利 用する面でのセキュリティを考えておかなければ意味はない.
ちなみに,名古屋大学では,情報セキュリティ対策推進室22のページの中で,情報セキュリティガイドラインと セキュリティポリシーが公開されているのでよく読んでおくこと.
B.1.5 メールを使った攻撃
メールを使った攻撃には,SPAM(スパム)メールやウィルス付メール,メール爆弾(メールボム)などがある.
SPAMメールとは,関係ない広告宣伝メールや勧誘メールを無差別に大量に送りつける行為あるいはその迷惑メー ル自体を言う.通常,SPAMメールは発信人が特定されないように,無関係なサーバを踏み台として中継利用され る.犯人がメールアドレスを知らなくても,Web上に公開されているメールアドレスを利用したり,架空のメー ルマガジンを使って自動的に収集したり,メールアドレスが「名前@プロバイダのドメイン名」になっている場合 には辞書を使って簡単に類推することができるので注意が必要である.名古屋大学でも,2004年10月中頃より,
SPAMメールが急増し,同年11月にはメール配送サーバのダウンにまで至っている.
メール爆弾は,特別なプログラムを使い,数千〜数万通以上のメールを一度に送りつけ,メールサーバの機能を 麻痺させてしまうものである.本人にその気がなくてもメール爆弾と同じ行為になる可能性もある.例えば,卒論 提出間際になって実験の手伝いやアルバイトの募集を,学内のメーリングリストを使って呼びかけたとする.メ ンバーが少なければ問題にならないかもしれないが,数百人,数千人規模に対して送ろうものなら,立派なメー ル爆弾犯である.アカウントの停止や,被害の規模が大きいなど下手をすると無期限停学といった厳重な処罰が 待っている.こうなるともう卒業どころの話ではない.
B.1.6 パスワードクラックとトロイの木馬
パスワードクラックとは不正な手段を用いて,パスワードを盗み出すものである.使用されがちな単語や文字,
人名辞書などを手掛かりに特殊なプログラムを用いてパスワードの解読を試みる方法が典型的な手口である.
トロイの木馬とは,一見有益な情報が得られるツールや面白いゲームのように見せかけているが,実は違う動 作をするプログラムのことを言う.ウィルスのように他のコンピュータに感染することはないが,不用意に実行す るとコンピュータ内のファイルが削除されるなどの被害を受ける.また,利用者が普段使っているユーザ名やパ スワードを入力させるように仕掛けておき,パスワードを盗用する手口もある.
B.1.7 セキュリティホール
侵入の要因となるセキュリティ体制やシステムの設定ミス,ソフトウェアのバグなどをセキュリティホールと呼 ぶ.セキュリティホールの中でもソフトウェアに含まれる一部のプログラムは脆弱性と呼ばれ,この弱点を利用
22http://www.ispa.provost.nagoya-u.ac.jp/