UNIX ネットワークセキュリティー入門
只木進一∗

1

なってしまいます。

はじめに最近の不正攻撃の手法では、あるネットワーク内のコンピュータネットワークは急速に私たちの身の周全てのコンピュータに対して、そのコンピュータが持っりで使われるようになっています。以前に、本広報にている全てのサーバ機能を調べて、セキュリティー対電子メールの紹介を書いた頃とは大きな違いです [1]。

策の行われていないものに攻撃を加えてきます。例え一般家庭までコンピュータが広がりました。そのため、ば、佐賀大学内にある個人的なメールサーバが、セキュほんの一部の人が研究用に使っていた頃には予想もしリティー上の問題を持っていれば 、それを見つけて攻なかったことが発生するようになりました。普通の社撃をしかけてきます。つまり、ネットワークに情報機会で起こる不正が同じように起こるようになったので器を接続すれば 、常に不正攻撃の対象になってしまいす。通信を盗聴したり、他人になりすましたりするよます。このような攻撃から身を守るにはど うしたら良うな不正です。

いでしょうか。

もしもあなたがネットワークを利用しているならば 、近年、ワークステーションが低価格になると同時に、他人ごとではありません。例えば 、電子メールを利用安定して稼働するパーソナルコンピュータ用 UNIX がする際には、パスワードが必要です。そのパスワード普及し 、UNIX を利用する人の数が増えてきました。

は他で使っているパスワードと同じではありませんか。

本学の中にも、多数のパーソナルコンピュータ UNIXネットワーク上を流れるパスワードを盗聴することは、が稼動していることでしょう。UNIX は、複数の人間がその気になれば簡単です。ネットワークを流れるあなネットワークを介して利用できるように設計されたシ

たのパスワードが、あなたの銀行口座のキャッシュカーステムですから、ネットワークを介した不正攻撃の対ド で使っているものと同じパスワード ならば 、どんな象にもなり得ます。そこで本稿では、普通の人が UNIXことが起こるか考えてみましょう。

を運用する場合のセキュリティー対策の基本について

あるいは 、あなたは十分にセキュリティーに注意を見て行きましょう。

払っているかもしれません。しかし 、あなたと同じコンピュータを利用している, あるいは同じネットワー
ク上にコンピュータを接続している他の人はそうでは2ないかもしれません。そういうセキュリティーにルーズな人の ID やコンピュータから不正攻撃を企てる人は入り込み、通信を全て盗聴するかも知れません。他

まず、UNIX のネットワークの基本を概観して、セキュリティー対策の一般論を見て行きましょう。
イン タ ー ネット で 使 わ れ て い るプ ロト コ ル は人のセキュリティーの甘さが自分に害を及ぼす可能性もあるのです。
さらに、あなたの ID やコンピュータが不正攻撃者に乗っ取られてしまうと、不正攻撃者はあなたになりすまして、他の利用者やコンピュータへ不正攻撃を仕掛けます。つまり、あなたは、不正攻撃者の協力者に∗ 理工学部知能情報システム学科

一般論

TCP/IP と総称されています。通信内容は、パケットと呼ばれる小さな塊になって送られます。パケットには、郵便のように表書きがあり、発信元、送信先、サービ ス番号などが書かれています。サービ ス番号とは 、電子メール、POP あるいは WWW などのサービスを区別するための符号です。不正攻撃はパケットの内容のほうですから、封を切らなければ良いのです。つま– 23 –り、セキュリティー対策の基本の一つは、このパケッ

3.1

ネット ワークサーバの確認

トの表書きを見て、受け取ったり、受け取りを拒否しまず、不必要なサーバが起動していないかの確認をたりすることになります。

UNIX は複数の利用者が複数の作業 (タスクと呼ぶ )を実行することができる OS です。システムに常駐するタスクを daemon と呼びます。ネットワークからの接続要求を受けるのも daemon です。ネットワークサー
ビ スプロセスの起動方法には二つの方法があります。
一つはそれ自身を daemon として常駐させる方法です。
電子メールサーバがその例です。しかし 、あまり接続要求の多くないサービ スを常駐させるのは資源の浪費です。そこで、inetd という daemon を代表として常駐させ、接続要求内容に応じてそれぞれのプロセスをしましょう。パーソナルコンピュータ用 UNIX の場合は、インストール時に各種ネットワークサーバを起動するか否かを聞いてくるものがあります。本当にサーバを上げて管理する気が無いのならば 、サーバ類は上げないようにし ましょう。よく使われるサーバを表 1に挙げておきます。
前述のように、サーバの起動方法には二つあります。
一つは、単独の daemon として起動するもの、他の方法は、inetd という代表サーバを介して起動するものです。
単独の daemon として起動するものは、更にシステ起動する方法が使われています。telnet サーバなどがム標準のものと 、後から追加するものに分けることがその例です。
不正攻撃は、これらのネットワークサービスのセキュリティー上の弱点を狙って来ます。そこで、セキュリティー対策の基本の第二は、不要なサーバを起動させないことになります。

できます。sendmail のようなシステム標準のものは、FreeBSD の場合は、/etc/rc.conf に起動の可否とオプションを記述します。FreeBSD3.3 の場合、システム標準のスクリプトが /etc/defaults/rc.conf にあり、そのスクリプトとの相違点だけを /etc/rc.conf に記

どんなに対策を講じても、セキュリティー上の弱点述します。他の OS の場合、/etc/rc.d の下に起動スを全て無くすことはできません。また、今後、どんなクリプトを置くものもあります。幾つかのシステム標新種の攻撃が出てくるかも分かりません。そこで、シ準のサーバについて注意点を挙げておきましょう。

ステムに起こった事柄を常に監視しておくのが、セキュリティー対策の基本の第三となります。ネットワーク
サービ スへの接続が 、何時、どこから行われたかを記録することです。

電子メールサーバ sendmail は標準で起動され るサーバの一つです。通常はオプション -bd を付けて起動します。この状態では、サーバは送信と受信を行います。電子メールは最も使われる機能であるため、最通常のネットワークを介した利用では、パスワードも頻繁に不正攻撃を受けます。そこで、もしもあなたが平文、つまり暗号化処理なしにネットワークを流れの使っているコンピュータが電子メールの受け取りをます。特に管理者のパスワードが洩れた場合、システ直接にする必要が無いならば 、このオプション -bd をムに深刻な影響が出る恐れがあります。そこで、ネッ外しましょう。この状態でも電子メールの送信は可能

トワークを介したパスワード 入力を極力行わない、どです。メールを読むのは 、pop などで信頼できるサーうしても必要な場合には暗号化をするのが第四の対策バから行うこともできます。

です。

NIS と NFS は、ネットワークを介してパスワードやファイルを共有するシステムです。パスワード ファ
イルは暗号化されていますが 、時間をかければ弱いパ

3

UNIX のネット ワーク関係の設定

スワード は破られてしまいます。ファイル共有していここでは、UNIX のネットワークセキュリティーにじっていたり、システムセキュリティー関連の情報が関した設定の方法を見て行きましょう。OS に依存する入っていると、セキュリティーを脅かします。これら部分もありますので 、ここではパーソナルコンピューは、プライベートネットワークなど 閉じたネットワーるファイルの中に、パスワード を連想させるものが混タ用 UNIX の一つ FreeBSD3.3[2] を想定して進めていク内に限定するだけでなく、アクセスを許可する範囲きます。

を限定して使います。

– 24 –

表 1: よく使われるネットワークサーバ

サーバ名

ftpd説明起動、設定など匿名ファイル転送を行う。通常の/etc/passwd に ftp というユーザが 作ユーザ認証を伴うものとは異なる。 られ ると 可 能と な る 。サ ーバ の 起 動
はinetd から行われる。

sendmail

電子 メールの配送送受信を 行う

起動は /etc/rc.conf に記述されている。

サーバ。

通常は -bd というオプションを付けるが、メールを受け取らない場合には、このオプションを外す。

popd

pop プロトコルによるメール読み出しサーバ。

サーバの起動は inetd から行われる。

imapd

imapp プロトコルによるメール読

サーバの起動は inetd から行われる。

み出しサーバ。

httpd

WWW のサーバ。

/usr/local/etc/rc.d/ の下の起動スクリプトで起動する。

smbd

Windows とのファイル共有のためサーバの起動は inetd から行われる。のサーバ。

inetd

ネットワークサーバの代表サーバ。 起動は /etc/rc.conf に記述されている。

xntpd

時計を合わせるサーバ。

起動は /etc/rc.conf に記述されている。

NIS や NFS を使う際に必要な daemon に portmapがあります。これを使った不正攻撃も頻繁です。NISWindows とのファイル共有を行う smbd も便利なサーバの一つです。NFS の場合と同様にセキュリティーや NFS を使わないならば /etc/rc.conf で対応するの弱点となるので、設定ファイルでアクセス制限をか個所に NO と記述しましょう。

けます。

シ ステ ムに 後か ら 追 加 す る サ ーバ 類の 起 動は 、FreeBSD の場合には、/usr/local/etc/rc.d の下に起動スクリプトを置きます。スクリプトが実行可能なよ

3.2

アクセス記録の保持

うにファイルパーミッションを設定することに注意しま

セキュリティー保護の基本中の基本は、サーバへのす。他の OS では、/etc/rc.local などのスクリプトアクセスの記録を残すことです。サーバの設定でどの内に対応するスクリプトを記述するものや、/etc/rc.d

ようにセキュリティー保護をしても、それが期待通りなどのディレクトリ内にスクリプトを置くものなどもに動いているか否かを見なければなりません。また、あります。幾つかのサーバについて、注意点を挙げて新手の不正攻撃があるかもしれません。そこで、サーおきましょう。

バ類はアクセスの記録を残すものを使う必要がありま電子メールを Windows などから読み書きするプロす。もし も、OS 標準のサーバがアクセス記録を残さトコルに pop や imap があります。これらのサーバは、ないならば 、記録するように設定を変更するか、記録通常は inetd から起動します。これらのプロトコルのできるサーバと入れ替える必要があります。

通常の利用では、平文、つまり暗号化なしにパスワー

UNIX の場合、システムの記録を残す syslogd といド を頻繁に流します。このため、情報処理センターでう daemon が常駐し 、その機能を使って記録を残すもは、学外との通信を止めています。利用する場合には、のが多くあります。どのような機能と状況がどのファごく近くのネットワークからだけ使えるような処置がイルに記録されるかは、/etc/syslog.conf に定義さ必要です。

れています。この設定を変更した場合は、syslogd へ– 25 –

HUP というシグナルを送るか、システムを再起動しま

httpd は smbd のように 、設定ファイルでアクセスす。syslogd は出力先のファイルを自分で生成するこ元を特定できる場合には、設定します。特に、smbd のとはしませんから、新しい出力先ファイルを定義した

ようなファイル共有の場合には、不必要にアクセス制

場合は、空のファイルを手で作っておきます。

限を緩めてはいけません。

システムの記録が多くなりすぎて、ファイルシステムinetd の場合、従来はアクセス制限を行うことは出を圧迫する危険もあります。UNIX の場合、システムの来ませんでした。そこで出てきたのが tcp_wrapper

記録を定期的に圧縮する仕組みがあります。FreeBSDです [3]。従来の 使い方では 、/etc/inetd.conf をの場合、記録を記述しているファイルが一定サイズ以

書き 換え て 、inetd が 受け 取った リ クエ スト を 一上になると、圧縮して、適当な期間だけ保持する仕組

旦 tcp_wrapper に 渡し 、更 に 本 来 のプ ロ セ ス にみがあります。設定は /etc/newsyslog.conf で行い

渡し まし た 。こ の 際に 、記 録が 残り、制 限 リ ストます。

sendmail は、基本の設定のままで記録を残します。

(/etc/hosts.allow 及び /etc/hosts.deny) に従ってアクセス制限が行われます [4]。

FreeBSD の標準では、/var/log/maillog に記録します。

は tcp_wrapper の 機能が 組み込 まれ ているため 、

図 1:/etc/syslog.conf へ の inetd ロ グ の 追 加 。
/etc/syslog.conf では、項目の区切りはタブです。

auth.info/var/log/info

上述のように、FreeBSD3.3 で使われている inetd/etc/inetd.conf を書き換えずにアクセス制限を制限リストを使って行うことが可能となっています。
sendmail も version.8.9 では tcp_wrapper を組み込むことができます。FreeBSD3.3 の場合は 、既に組み込まれています。従って、sendmail.cf ではなく、/etc/hosts.{allow,deny} を使って メールサーバへ
一方、inetd は、標準では記録を残さない daemonのアクセスを制限することができます。

です。しかし 、FreeBSD3.3 で使われている inetd は後述する tcp_wrapper の機能が組み込まれ、アクセス記録を残すことが出来ます。標準の設定のままでも、アク3.4

セスを拒否した場合の記録が /var/log/messages に残されます。アクセスを許可した場合の記録を残すには、inetd のオプションを標準の-wW から -lwW に変更します。設定変更は、/etc/rc.conf で行います。更に、/etc/syslog.conf に図 1 の行を加えて、システムを再起動します。すると、全ての記録が /var/log/infoへ記録されます。
システムに後から追加するサーバ類は、通常、アクセス記録を残す機能がついています。多くは 、syslogの機能ではなく独自に記録します。どこに記録するかは、設定ファイルで指定します。

通信の暗号化ネットワークを介してリモートシステムを利用する場合を考えましょう。パスワード を入力すると、そのパスワード は平文、つまり暗号化されずに流れます。
パスワードがもれてしまうと、いくらアクセス制限をしてもその効果は大きく下がってしまいます。リモー
トシステム利用に際して良く利用される暗号化技術の一つが Secure Shell (ssh) です [5]。前回 [4] にも書きましたが 、アメリカ合州国の輸出規制があるので、対応するソフトウェアをアメリカ合州国からダウンロード することは違法です。
前回の解説時には、ssh-1 しかありませんでしたが、現在のバージョンは ssh-2.0.13 です。ssh-1 と ssh-2

3.3には互換性が無く、更に Windows 用クライアントがアクセス制限ssh-1 対応です。そこで、今回は両方を入れる方法にネットワークサーバには、httpd のように、アクセついて見て行きまし ょう。

ス元が特定されないものと、telnetd のように、特定マシンからしかアクセスしないものがあります。この

まず、ssh-1 をインストールします。ソースを展開
し 、そのデ ィレクトリでように、サーバごとにアクセス元に制限を行うことが賢明です。

configure– 26 –

図 2: /etc/ssh2/sshd2 config のシステム機能の変更#

SyslogFacility

AUTH

SyslogFacility

LOCAL7

図 3: /etc/ssh2/sshd2 config へのsshd-1 互換の記述

Ssh1Compatibility

yes

Sshd1Path/usr/local/sbin/sshd1

的な更新を /etc/newsyslog.conf に書くのを忘れな

makeを 実 行 す る こ と で コ ン パ イ ル で き ま す。後 は 、make install でシ ステム領域へ イン スト ールし ます。この時、設定ファイルが /etc の下に書かれます。

いで くだ さい 。最後に 起動スクリプト sshd.sh を/usr/local/etc/rc.d の下に置いて (図 6) 、システムを再起動します。

そのうちの、/etc/sshd_config の syslog 機能の部

図 6: /usr/local/etc/rc.d/sshd.sh

分だけを編集しておきましょう (図 4)。ssh では 、こ#!/bin/shの図のように、設定ファイルで syslog のどの機能を

sshd=/usr/local/sbin/sshd使うかを指定できます。ここでは LOCAL7 を使うこと

if [ -f $sshd ]; then$sshdにしましょう。

echo -n " sshd "図 4: /etc/sshd config のシスログ機能の変更

fiSyslogFacility LOCAL7
次に 、個人の 設定を 行い ます。ssh-keygen を 実
次に、ssh-2 もコンパイル及び インストールをしま

行すると 、パスフレ ーズを聞いて来ます (図 8)。パす。コンパイル方法は、ssh-1 と同様です。インストー

スフレ ーズ は 、そ の 名の 通り、文 章など を 使い まルすると、設定ファイルが /etc/ssh2 の下に作られます。パスフレ ーズを正し く入力すると 、個人用の鍵す。ここでも、/etc/ssh2/sshd2_config を編集しまが ~/.ssh2/id_dsa_1024_a が作られ 、同時に公開鍵

しょう。まず、syslog 機能を LOCAL7 を使うようにし~/.ssh2/id_dsa_1024_a.pub も作られます。そこで、ます (図 2)。

~/.ssh2/identification に

次に 、ssh-1 との整合を取る部分を編集します (図3)。この機能によって、もしもクライアントが ssh-1対応であれば 、sshd1 が 起動され ます。ついでに 、/etc/ssh2/ssh2_config も書き換えて、通信相手がssh-1 の場合に対応できるようにしまし ょう (図 7)。

IdKey id_dsa_1024_aと記述し 、自分の鍵を登録します。
このホ スト (host.domain) に 外部から ssh で リモートログ インすると、通信は暗号化されますが 、通常のパスワード での認証が 行われ ます。パスフレ ーズで の 認証を 行 うためには 、ア クセ ス元のホ スト

図 5: /etc/syslog.conf へのsshd のログ機能の追加

local7.*(remote.domain) の id_dsa_1024_a.pub をアクセス/var/log/sshd.log

先 host.domain へ~/.ssh2/remote.domain.pub としてコピーし 、~/.ssh2/authorization に
上述のように 、syslog に対し て 、LOCAL7 とし て記録しますから 、対応する記述を/etc/syslog.confに追加し ます (図 5)。対応するログファイルの定期Key remote.domain.pubという行を記入します。

– 27 –

図 7: /etc/ssh2/ssh2 config へのssh-1 互換の記述

Ssh1Compatibility

yes

Ssh1Path/usr/local/bi/ssh1

図 8: ssh-keygen の実行

someone@host[1] ssh-keygen
Generating 1024-bit dsa key pair
1 oOo.oKey generated.
1024-bit dsa, someone@host.domain, Sat Jan 1 2000 00:00:00 +0900
Passphrase :Again:
Private key saved to /home/someone/.ssh2/id_dsa_1024_a
Public key saved to /home/someone/.ssh2/id_dsa_1024_a.pub

ssh は UNIX のシステムの標準である rsh と同様のイアウォールなどを設置して、その内側に接続することです。

使い方が可能です。

研究室や学科単位で、小さなネットワークを構築し 、ssh ホスト名 リモートコマンド

その内部でだけ有効なアドレス (プライベートアドレスという形で利用することができます。リモートコマンと呼ぶ）を利用すれば 、外部から不正攻撃されることド の実行結果も暗号化されて戻って来ます。また、を心配する必要はなくなります。外部と接続する必要がある場合だけ、インターネットアドレスが動的に付

slogin ホスト名

与される仕組みもあります。このような仕組みを NATを呼びます。現在では、NAT の専用機が数万円で購入でリモートシステムに暗号化してログ インしたり、できます。ぜひ検討してみては如何でしょうか。

sftp ホスト名で暗号化して ftp をかけることも可能です。

参考文献[1] 只木進一「電子メールをお使いですか 」、佐賀大

4学情報処理センター広報 No. 1 (1991) pp. 83 -おわりに90.
本稿では、UNIX マシンをネットワークに接続する場合の、セキュリティーに関連した設定を簡単にまと[2] http://www.freebsd.orgめました。しかし 、このような安全対策を継続して行っ[3] http://www.cert.org/ftp/tools/ていくのは、非常に骨の折れる作業です。コンピューtcp wrappers/tcp wrappers 7.6.tar.gz

タ管理を本職としない、教職員にとっては尚更です。
ネットワークに接続しないのが最も安全ですが 、コンピュータネットワークの利便性から考えて、そうもいきません。そこで、サーバ機能を持たせる必要のない機器に関しては、外部から接続できないネットワークに接続するのが最も効果的な対策です。つまり、ファ– 28 –[4] 只木進一「あなたのコンピュータは大丈夫ですか」、
佐賀大学情報処理センター広報 No. 8 (1999) pp. 1- 9.
[5] http://www.ssh.fi