UNIXの歴史?

 UNIXアラカルト?
主なUNIXの種類
Solaris Sun Microsystem社
AIX IBM社
HP-UX Hewlett-Packard
UNIX  ・UNIX標準化団体「オープングループ=TOG」の所有
LINUX  ・UNIXクローンである
 ・多くのディストリビューションとして販売されている
 ・Red Hat Linux、Turbolinux、Vine Linux等
 ・UNIX互換OSという
FreeBSD  ・4.4BSDをベースに開発
 ・「FreeBSDプロジェクト」で一元管理
 ・Ports/packagesコレクションとして提供されている
 ・単一ディストリビューションである
 ・UNIX互換OSという
 ”Windows 2000”の安定性と堅牢性は?
Windows 2000 Professional Windows 2000 Server Windows 2000 advanced Server Windows 2000 DataCenter Server
ユーザ用 小規模サーバ用 中規模サーバ用 大規模サーバ用
 デーモンとスーパーデーモン

デーモン
 UNIXにおいて、システムの機能を実現したり、何らかのバックグラウンドサービス(サーバーサービスなど)を実行するためのプロセス。他のOSでは、システムプロセスと呼ばれることが多い。TCP/IPを実現するinetd、仮想メモリを実現するkswapdなど、OSの非常に基本的な機能まで、デーモンとして実装されていることが多い。一方、sendmail(メールサーバ)、named(DNSサーバ)などは、システムの一部というよりは、各種用途向けのサーバである。こういったプロセスもデーモンとして実装されている。デーモンの多くはシステム権限、あるいはそのデーモン専用の権限で実行されており、またコマンド名の最後に‘d’が付けられていることが多い。
 ユーザーがシェルから起動するプログラムとの根本的な違いは、制御端末を持たず(つまり端末を使った対話はできない)、何らかの特定のリクエストを待ち、それを受信するとフォークして子プロセスがそれを処理する。親プロセスは次のリクエストを待ち続ける。
 蛇足ながら、デーモン(daemon)の元の意味は「守護神・下位の神格」であり、demon(悪魔)ではない。
(ASCII24 - アスキー デジタル用語辞典より)

スーパーデーモン(デーモンの親玉)
 多様なデーモンによるサービスを提供する際, それらのサービスで使用するポートをinetdに監視させておくと, 要求があったときに対応するサービスデーモンを起動することができ, 要求が来るかもしれないデーモンを全て待機させておかずに済む.
 Inetdはその代表で、ネットワーク(インターネット)のサービスプロセスを起動するために常時待機しネットワークからのリクエストを監視しているデーモンである。たくさんのデーモンを待機させておくとサーバの負荷が重くなるため, リクエストを監視するためのデーモンとしてinetdを起動しておき, そこから実際のサービスを起動する。(通信用語の基礎知識より)
 "/etc/Inetd.conf"で管理される。ただし、Inetdにはアクセス制御機能がないので、セキュリティ強化のためのアクセス制御をするプログラムであるtcp-wrapperと組み合わせて使用される。 最近では、Inetdに代わりxinetdtcpserverが使われるようになってきた。

 丸暗記
プロトコル UNIXアプリケーション 関連単語等 Windowsアプリケーション
DNS ・BIND(ルートネームサーバでも利用されている) 4.8.9系統 ・ ISC
・関連ファイル(ゾーンファイル等)で設定
BIND for NT
DNS Server
メール SMTP ・Sendmail
・qmail
・MTA
・SMTP AUTH
・Sendmail.cfで設定する
IIS
Sendmail
POP ・Qpopper
4系統
・インストール後inetd.confを更新する
inetdデーモンプログラム
・APOP
Exchange Server
HTTP(1.0、1.1) Apache ・W3C
httpdデーモンプログラム
httpd.confの設定、htaccess=パスワード
IIS
FTP ・PROFTPD
・WU-FTPD
・ftpaccess=ディレクトリ毎のアクセス制限
ftpdデーモンプログラム
IIS
TELNET  Telnet  telnetdデーモンプログラム Telnet
Tera Term Pro

ISC=Internet Software Consortium
W3C=MIT(マサチューセッツ工学大)、LCS(計算機科学研究所)、CERN(欧州合同原子核研究機構)
 DNSサーバ丸暗記
 ・昔はhostsでルーティング情報を管理していた。
 ・現在でも、スタティックに設定した方が便利な場合がある。UNIXには「/etc/hosts」というファイルが存在し、「hostsファイルとDNSのどちらを優先して検索するか(通常はhosts)」を決定する仕組みが存在する。
 ・DNSサーバのIPアドレスは、UNIXの場合、「/etc/resolv.conf」ファイルに記述してある。
 ・自律協調動作:DNS サーバが自分で管理していないホストの問い合わせに対して、他のDNS サーバに問い合わせることを言う。
 ・ルートネームサーバ:世界に13台しかない、ルートのDNS。1台は日本にあり、WIDE(Widely Integrated Distributed Environment)が管理している。
 ・DNSに関する情報は、レコード単位で保持している。
 ・世界中のDNSサーバは階層構造で結ばれている。
 ・ネガティブキャッシュ=「名前解決が出来なかった」という情報をキャッシュしたもの。つまらない操作の繰り返しを排除するためである。
 ・ゾーンファイル、リバースファイル、ループバックファイルルートキャッシュファイル、コンフィギュレーション。
 ・コンフィギュレーションはBINDの設定ファイルで、どのファイルをどの条件で参照するかを記述している。
 ・クライアントはDNS サーバの情報を最低1 つ保有しているが、通常は、プライマリDNS サーバとセカンダリDNS サーバの2 つを保有している
 BINDの特徴とは?
 ・ルートネームサーバもBINDで運営されている。
 ・ISC(インターネット・ソフトウェア・コンソーシアム)で研究・開発されている。
 ・BIND for NTという名称でWinsowsNT/2000仕様も用意されている。
 ・バージョンとしては4.8.9系統で、最新バージョン:9.2.3である。4.8系は、なんらかの理由でバージョンを上げられない場合に利用される。
 ・デファクトスタンダードとなっているBINDは、通常、UNIXにデフォルトでインストールされている。
 BINDに必要な5つのファイルとは?
  ゾーンファイルの設定ファイルへ(←クリック)
項目 ファイル名の例 説明
ゾーンファイル
(正引きゾーンファイル)
exampl.zone  ドメイン名からIP アドレスの検索(正引き)に使用されるファイル。
リバースファイル
(逆引きゾーンファイル)
3.168.191.rev  IP アドレスからドメイン名を検索する(逆引き)に使用されるファイル。SOA レコードとNS レコードはゾーンファイルと同じ内容である。
 逆引きは、アクセスを受けたホストがアクセス元のIP アドレスからそのホスト名とドメイン名を知るために使われる。この場合、逆引き情報を公開していないと、「アクセス先のホストによる逆引き要求がタイムアウトするまで数十秒間、サービスが開始されずに通信が遅くなったり、あるいは相手先ホストでの設定が拒否する設定になっているとサービスが拒否されたりすることがある」。こういった利用のされ方は初めて知った。
ループバックファイル 0.0.127.in-addr.arpa  自分自身を定義するファイル
ルートキャッシュファイル root.cache  ルートネームサーバのアドレス
コンフィギュレーショファイル named.conf  DNSにおいて、一番最初に参照されるファイルで、DNS 全体の動作を制御する。上記4つのファイル名を記述する。
 レコードとは?
 DNSに保存するデータのことをレコードという。そのレコード例として次のものがある。
レコード名 登録内容 ポイント
TTL キャッシュしておける期間  SOAから分離・独立したステートメントになった
SOA 基本的な情報  下段参照
NS DNSサーバの名前とIPアドレス  プライマリDNSとセカンダリDNS
 セカンダリDNSも勿論平行稼動する。
NX メールサーバの情報   MXの後ろの数字は、参照の優先順位を示す。小さいほうが優先となる。連番である必要はない。
ホスト名からIPアドレスへの関連付け   
CNAME エイリアス名   
PTR IPアドレスからホスト名への関連付け   IPアドレスを「10.10.168.192」のようにお尻から記述する。
 ゾーンファイルのTTLとSOAレコード(6項目)
TTL (Time to Live )(秒)  DNS検索を高速化するために、データをキャッシュしておける期間を指定する。
Serial (シリアル番号)  ゾーン情報を更新した回数を示す数字。更新した場合は値が増加する。(例:日付+番号)
Refresh (リフレッシュ間隔)  データを更新する間隔(秒)、プライマリ→セカンダリの更新間隔を指定する。
Retry (リトライ間隔)  ゾーン転送失敗後の再試行間隔(秒)を指定する。
Expire  セカンダリDNSサーバが一定期間データ更新できなかった場合(何らかの理由でゾーン転送できなかった場合)、保存データが無効になるまでの有効期間(秒)を指定する。
ネガティブキャッシュ 「名前解決が出来なかった」という情報をキャッシュしている時間
管理者メールアドレス  これは意外と忘れられている。
 ・リフレッシュ間隔が短すぎると、DNSサーバに負荷がかかる。
 ・Expire=エキスパイアー=期限が切れる
 ゾーンファイル、リバースファイル、ループバックファイルの記述上の注意とは?
 記載順は確実に覚える必要がある。
ファイル名 レコード名  書き方
ゾーンファイル TTLレコード  上述参照
SOAレコード  上述参照
NSレコード  ドメイン名 IN NS プライマリDNSホスト名
 ドメイン名 IN NS セカンドDNSホスト名
MXレコード  ドメイン名 IN NX 優先番号 メールサーバー名
Aレコード  プライマリDNSホスト名  IN A IPアドレス(左から順に)
 セカンドDNSホスト名   IN A IPアドレス(左から順に)
CNAMEレコード  新しいホスト名(別名)   IN CNAME  対象ホスト名(本名)
リバースファイル

(MXレコード、CNAMEレコードを持たない)
TLレコード  上述参照
SOAレコード  上述参照
NSレコード  IPアドレス(右から順に) IN NS プライマリDNSホスト名
 IPアドレス(右から順に) IN NS セカンドDNSホスト名
PTRレコード  IPアドレス(右から順に)  IN PTR  プライマリDNSホスト名
 IPアドレス(右から順に)  IN PTR  セカンドDNSホスト名
ループバックファイル リバースファイルに準拠。SOAレコード、NSレコード、PTRレコード
  ゾーン転送とは?
 これは、少し注意がいる。公式テキストを読んでいるとゾーンファイルだけがゾーン転送されるような錯覚がある。しかし、リバースファイル、ループバックファイルにもSOA情報が記述されている。したがって、ゾーンファイル、リバースファイル、ループバックファイルの情報もゾーン転送される。
  プライマリネームサーバとセカンダリネームサーバの関係
 通常は、プライマリとセカンダリの2台のネームサーバを設置する。勿論、もっと多くても良い。ここで注意しなくてはならないのは、セカンダリーネームサーバはチャント単独で動くサーバで、プライマリのバックアップではないということである。
 サブドメインとゾーンファイル→グルーレコードの記述、やれやれ!!
 巨大ネットワークでは、ネットワークを細分化して効率よく運営するために、ドメインの下位空間を別のドメイン空間とし権利委譲 を行ない、サブドメインとして別のDNS サーバで管理することが多い。管理者への一極集中による負担を軽減できる。
 (親DNS サーバ、ゾーンファイル)
 ・権限委譲を受けた子DNSサーバのNSレコードを記述する。
 ・子DNS サーバのA レコード←これをグルーレコードという。
 (子DNS サーバ、ゾーンファイル)
 ・自身DNSのAレコードを記述しておく。
 マルチドメインとは?
 一組織が複数のドメイン(マルチドメイン)を使用するためには、BIND ではマルチドメイン数分のゾーンファイルを作るとともにコンフィグレーションファイル正引き情報マルチドメイン数分記述する
 ダイナミックDNSで使われるテクニックとは?
 ゾーン転送とは、セカンダリDNSサーバがプライマリDNSサーバからゾーン情報(ドメインのホスト情報を集めたデータベース)を取得すること。ゾーン転送によって、プライマリDNSサーバからゾーン情報を得たセカンダリDNSサーバは、プライマリDNSサーバと同様に、端末からDNSの問い合わせを受けた場合、得たゾーン情報を基に応答することができる。転送の方法には、「完全ゾーン転送 (AXFR)」、「増分ゾーン転送 (IXFR)」がある。
ダイナミックDNSテクニックの第一は、この増分ゾーン転送 (IXFR)である。
 DNS サーバー間で増分ゾーン転送がサポートされている場合、サーバーはゾーンの各バージョン間で変更されたリソース レコードの増分箇所のみを追跡、転送できる。
第二には、DNS NOTIFYである。これは、プライマリとDNSサーバとセカンダリDNSサーバの更新タイミングを調整するテクニックで、短時間にセカンンダリDNSサーバのゾーン情報を更新できる。
 ・DNS NOTIFY=
プライマリDNSサーバが情報更新された場合、セカンダリDNSサーバに変更があったことを通知する機能をいう。
 DNSラウンドロビンとは?
 インターネット上でドメイン名とIPアドレスを対応づけるDNSを応用して、アクセスの多いサーバの負荷分散を行なう手法。一つのドメイン名に複数のIPアドレスを割り当てて、問い合わせがあるたびに順番に答えることにより、1台のコンピュータへアクセスが集中するのを防ぐ。
 DNSサーバのCNAMEレコードを利用するため、「multiple cname」とも呼ばれる。
 ・単純にIPアドレスを振り分けるだけで、チャントした負荷分散ではない。
 ・DNS情報は、クライアント側でキャッシュされるので上手く負荷分散できない場合もある。レコードキャッシュ時間を短くする等の措置が必要となる。
 DNSスプーフィングとは

 DNSは、ホスト名をIPアドレスに解決するためのサービスである。ネットワーク上に散在するDNSサーバは、 各々が担当する特定範囲の情報のみを管理していて、 管轄外のホスト名の問い合わせについては、 他のDNSサーバへ解決を要請する。 つまり丸投げする。
 しかし、検索効率向上のために、一度管轄外で解決されたアドレスは、 一定期間キャッシュとして保存し、キャッシュ期間中は再利用される。このメカニズムによって高速なアクセスを実現するが、もし、 他のDNSサーバから誤った情報が渡された場合、 それまでもがキャッシュに残ることになる。これがDNSキャッシュを汚染することになる。 これによって攻撃を受けたDNSを使うユーザーは、目的のサイトにアクセスしたつもりが、 実は悪意ある何者かのサイトへと誘導される可能性がある。クラッカーからすると、 ユーザを意図した先へ誘導することが可能となる。
 これが現在のDNSがもつ最大の脆弱性なのである。この問題はBINDのバージョンを上げることで解決しているが、最新バージョン情報のチェックは必要である。
DNSSECとは?
 DNSに関するセキュリティの強化を行うための拡張機能。DNSで提供する情報に電子署名を付加し、DNSを使って得られた情報と発信元にある情報との同一性を保証する。 DNSスプーフィング対策の一環である。

 メール丸暗記
 ・メールサーバには予備のサーバを指定することが出来る。それは、DNSのMXに記述しておく。ただし、予備のサーバは自身ではメール配信せずに一時的に蓄えておき、主サーバが復旧したら、スプールにあるメールを主サーバに送る。
 ・違うサーバに送ることを「転送」、自分自身のスプールに送ることを「配信」という。
 ・やりとりには、TCP(コネクション型)が利用される→当然SMTPもPOPも!!
 ・「QUIT」はTCPコネクションの終了要求をするコマンドである
  ・メーリングリスト:Majordomo(UNIX)、fml(UNIX)、AutDL(Windows)
 ・POP(Qpopper)をインストールした後は、コンフィグレーションファイルであるinetd.confを更新する必要がある→POP認証
 ・inetd.confの設定確認はメールソフト(当たり前)でメールサーバにアクセスしてみる→pop認証機能を試してみる
 ・sendmailにおいて、メール容量(メール1件の容量)の制限はMaxMessegeSIzeの項目で設定する。
 ・SMTPでのVRFYEXPNのコマンドは取扱いを注意する。sendmail.cfで、各々のコマンドの使用を許可/禁止を決めることができる。
   VRFY=サーバにメールアドレスを照会するコマンド。存在している場合、情報が漏れてしまう。
   EXPN=メールリストの展開を指示するコマンド。グループ化されたメールアドレスが漏れてしまう。
 ・SMTPやPOP3では、送信や応答する場合、コマンドの最後に改行コード(CR+LF)が挿入される。
 よう分からんMTAとMUAとMDA???
 こんな感じで理解したが....私のPCにインストールされているoutlook、outlook ExpressはMUAといえる。

 もう一つ、MDA(mail delivery agent)というのがある。メールスプールに書き出すプログラムをいう。sendmailではmail.localが、Redhat Linuxではprocmailが利用される。また、".forwad"や"/etc/mail/aliases”などに設定ファイルを作って特別ルールで配信することも出来る。例えば、MHonArcというプログラムにメールを直接処理するように記述すると、メールを受け取ったと同時にHTMLファイルを生成し、Webページとして閲覧できるようになる。

 Sendmailの導入
 ・sendmailのルールセット設定には、sendmail.cfに記述する。ローカルからのメール送信はsubmit.cfに記述する。
 ・2つのファイルは直接編集するのではなく、ユーティリティプログラムを使用する。 かつては。WIDEプロジェクトが開発したCFというユーティリティが一般的であったが、今はその開発が中止されている。現在は、sendmailのアーカイブに含まれる「cf」が2つのファイルのユーティリティとして利用されている。このcfはm4といわれる、マクロ言語プロセッサ用のファイルを使用して生成する。
 ・sendmailは、本来のsendmail.cfに記述誤りがあると動作が不安定になるので、いくつかの外部ファイルに定義を書くようになっている。
ファイル名 設定内容
access 送信者のIPアドレスを見て、配信の可否を決定する。
local-host−name メール配信を受ける際に使用するホスト名を記述する。
aliasese 電子メールのアドレスの別名による転送アドレスを記述する。
maillog 電子メールの配送におけるログが記述される。
 ・Sendmail起動前のテストをする。テストで問題なければ、古いSendmail.cfをバックアップし、新しいSendmail.cfをインストールする。
Sendmail.cfに設定エラーはないか ”Sendmail -bt”を実行。
ホスト名が正しく取得できているかどうか ”Sendmail -bt -d0.4”を実行しホスト名FQDNで取得できるか確かめる。だめなら、DNSサーバの設定を見直す。
ローカルへのメール配信が正常なことを確認する ”Sendmail -v -local-user”を実行し、local-userのメールスプールに配信されるかを確認する。
メールリモートへの配信が正常なこと確認する。 ”Sendmail -oQ/tmp -v user@remote.host”を実行し、user@remote.hostへの配信を確認する。
 SMTPの流れ
A (メールアドレスinfo@sinzo.com ,ホスト名mondai-net.com ,SMTP サーバB mail.sinzo.com )
からC (miyoko@ntt.com )へメールX を送付する場合のSMTP の挙動
最初に、SMTP より下位のプロトコルであるTCPによるコネクションの確立後、
A :「HELO mondai-net.com」 →B :「mondai-net.com Hello 」 →A :「MAIL FROMinfo@sinzo.com」 →B :
sender ok 」→A :「RCPT TOmiyoko@ntt.com」 → B :「Recipient ok 」 →A :「DATA 送信メール本文 」 →
B :「Message accepted for delivery 」 →A :「QUIT」 → B :「closing connection 」
 POPの流れ
クライアントA (info@sinzo.com /ユーザ名とメールアカウントとは同一、メールパスワードは123456 とする。)がPOP サーバB からメールをダウンロードする手順
最初に、TCP による110番ポートでのコネクションの確立後、
A :「USER info」 → B :「+OK Password required for info」→ A :「PASS 123456 」 →A :「STAT」 → B :
「+OK info has three visible messages in 6000 octets 」→ A :「LIST」 →B :「+OK three visible messages (6000 octets)1 3000 2 3000 3 3000.」 → A :「RETR 1」→B :「+OK 3000 octets ・・・」→A :「QUIT」 → B :「+OK Pop server at ns signing off.」
 sendmailとQpopperの設定ファイルは?
区分 設定ファイル 設定後の操作
sendmail sendmail.cf 導入後、再起動
Qpoppe inetd.cong デーモンとして起動するのではなく、ユーザから要求があった場合のみ動作させるようにする。そのため、ス−パーデーモンであるinetd.congへの登録が必要となる。メールソフトでサーバにアクセスする(再起動の必要なし)
 私宛に届いたメールヘッダーの内容(一部修正)
Date: Fri, 5 Jul 2002 17:10:00 +0900 (JST)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
X-Url: http://www.sinzo.com/
X-Mag2Id: 0000057976
X-Mag2CatCode: 015xxx
X-Mag2Media: 01
X-UIDL: jQ~"!fA?!!XmB!!g4g"!  (日本語2バイト文字がMIMEにより7ビットに変換されているいるための文字化け)
 メーリングリストとメールマガジンの違いは?
メーリングリスト メールマガジン
インターネットメールを利用して、参加者全員に同じメールを配信するシステム。たとえば参加者のうちのひとりがメーリングリスト宛にメールを出すと、参加者全員にそのメールが配信され、だれかがそのメールに返事を出すと、そのメールも参加者全員に配信される。特定の趣味などをテーマにしたもの、さまざまな研究などをテーマにしたものによく利用される。

各種情報を定期的に電子メールの形で配信するサービス。大半が無料で配信されているが、有料のものもある。コンピュータ系の情報を中心にしたものから、映画、本などを扱ったものまでさまざまなメールマガジンが発行されている。メールマガジンを扱う人気サイトとして「まぐまぐ」がある。

Majordomo
(UNIX)
老舗的存在。Perで記述されているので開発が容易である。基本的な機能は全て実装されている
ezmlm qmailとともに稼動する。機能的には貧相だが、動作が高速で大量メール処理でもサーバへの負荷を抑えることが出来る。
fml(UNIX) 日本で開発されたアプリ。高機能でセキュリティ対策にも考慮。Webシステムからユーザ登録等が出来る。
 ・sendmail のForward 機能を利用すればメーリングリストプログラムを使用しなくてもメーリングリストサービスを行うことが可能である。
メンバー一人だけがメール投稿可能にすれば、それはメールマガジンの配布に利用できる。
 Webメールとは?
 Webブラウザで利用することができるe-mailシステム。受信したメールの閲覧や、新規メッセージの作成・送信などをWebブラウザのみで行なうことができる。通常のメールと違ってすべてのメッセージをサーバ側で管理するため、どこからでもメールをチェックしたり過去のメールを参照したりできる反面、MUAをサーバで実行しCGIよってWebブラウザに表示するので、サーバの負荷は通常のシステムより高くなる傾向がある。アプリとしては、Squirremail(IMAPで有名な会社が開発)がある。
 マルチドメインの運用とは?
 定義は当然だが、1つのホストで複数のドメイン名でのメールアドレスを管理することをいう。sendmail の場合はSendmailに付属するVirtual User Tableを利用する。考え方は以下のとおり。
(sendmail の場合)
 ・ドメインの数だけCF を使用してユーザテーブルを作成する。
 ・仮想メールアドレスメールスプールファイル(あるいはalias)を用意する。
 ・ドメイン名によって振り分けが行なわれる。
 メールのセキュリティとは?
 これは、テキスト中の文章を丸暗記するしかない。絶対に出題されるぞ。
不正中継の回避  詳細は後述を参照
 sendmailのデフォルト設定では、第三者中継を許可していない。
POP befor SMTP
IMAP4 befor SMTP
 POPのログを監視するデーモンに用意し、POPで認証されたIPアドレスを一定時間、データベースに許可リストとして保存し、SMTP を許可する。
SMTP AUTH  SMTPに実装された認証機能をいう。認証の暗号化
STARTTLS  メール本文の暗号化
サーバーサイドメールフィルタ  サーバサイドで一括メールチェックを行う。SendmailではAPIであるMILTERを利用する。MILTERに対応したサーバサイドメールフィルタには、Clam Antivirusがある。
メール容量の制限(1件当たり)  sendmailにおいて、メール容量の制限はMaxMessegeSIzeの項目で設定する。巨大なファイルは、httpかFTPで送信する。
APOPの採用  平文認証の暗号化。方式はチャレンジ・レスポンス式(MD5の利用)
POP3 over TLS/SSLの利用  SMTPAのSTARTTLSと同様の機能(APOPを利用できない場合)
SMTP特定コマンドの禁止  SMTPでのVRFYEXPNのコマンドは取扱いを注意する。sendmail.cfで、各々のコマンドの使用を許可/禁止を決めることができる。
   VRFY=サーバにメールアドレスを照会するコマンド。存在している場合、情報が漏れてしまう。
   EXPN=メールリストの展開を指示するコマンド。グループ化されたメールアドレスが漏れてしまう。
PGP

 電子メールやファイルの暗号化に用いられ、Windows、MS-DOS、Macintosh、UNIX、OS/2などほとんどのプラットフォームで利用できる。フリーウェア版と商用版がある。
 PGPは、公開鍵と秘密鍵という2つの鍵でそれぞれ暗号化と復号化を行なう公開鍵暗号アルゴリズムを用いて、メッセージの暗号化を行なう。また、送り手の同一性とメッセージの改竄を防ぐための電子認証の機能も備えており、鍵管理サーバは国内でも利用できる。国内のフリー&シェアウェアのメーラの多くが外部プログラムとしてPGPをサポートしているほか、Eudoraなどの商用製品でも対応している。また、インターネットでもすでに標準となっており、バージョン2.xのPGPメッセージ交換方式がRFC1991、「OpenPGP」と呼ばれるPGPのメッセージ形式がRFC2440としてIETFに標準勧告されている。

S/MIME  MIME(MultiPurpose Internet Mail Extensions)に対して暗号化した情報を追加するための規約。公開鍵暗号のRSA社が提案元であるため、PKCS(Public-Key Cryptography Standards)を採用している。実際にS/MIMEに対応したアプリケーションとしては、Netscape CommunicatorやMicrosoft Outlook Expressなどがある。ただし利用にあたっては、VeriSignなどの認証局を持つ企業から、デジタルIDを入手する必要がある。
その他  ・DNS の逆引きをした結果と正引きした結果が不整合を起こすホストからのユーザにはアクセスを許可しないようにする。ドメインとIP アドレスの対応が正当でない場合、メールアドレスの不正変更など、何らかの不正行為が行われている可能性が高いので、この措置は有効である。
 ・SMTPサーバログの記録と保存。
 メールの第3者中継とは?
 サーバ管理者は、第三者中継を許可するメールサーバをブラックリストとして登録しているデータベースにDNS経由で問い合わせ、そこにリストされているサーバ経由のメールを受信拒否設定できる。sendmailのデフォルト設定では、第三者中継を許可していない。
 このデータベースとしては、DSBLを始めいくつかある。
 送信元、受信元のメールアドレスに自ドメインが含まれているか否かをチェックすることには、不正中継を許可しないのと同じ効果がある。
 第3者中継の設定を確認するには?
 有限会社長崎ネットワークサービス(←クリック)のHPを参照にさせてもらった。照会機能は外してある。
 (例:yahoo.co.jpのドメインでテストした結果)
照会
画面

第三者中継の調査

あなたのメールアドレスを担当するメールサーバーが不正な第三者中継を行っていないかどうか調査します。

メールアドレス:
回答
画面

mta15.mail.yahoo.co.jp (pri=10)
<<< 220 YSmtp mta15.mail.yahoo.co.jp ESMTP service ready
>>> HELO rlytest.nanet.co.jp
<<< 250 mta15.mail.yahoo.co.jp
>>> MAIL FROM:<"7362a7:TPR TEST http://www.nanet.co.jp/rlytest/ requested from [61.211.131.3]"@mta15.mail.yahoo.co.jp>
<<< 250 sender <7362a7:tpr test http://www.nanet.co.jp/rlytest/ requested from [61.211.131.3]@mta15.mail.yahoo.co.jp> ok
>>> RCPT TO:<rlytest@nanet.co.jp>
<<< 550 relaying denied for <rlytest@nanet.co.jp>
正常:中継は拒否されました。

 マイクロソフトExchange Serverの踏み台阻止対策とは?
 
(参考画像) 「コントロールパネル」→「管理ツール」→「インターネットインフォメーションサービス」「SMTP 仮想サーバ」「プロパティ」「アクセス」の「中継の制限」で設定することができる。
 POP before SMTPの確認!!
 次の記述は暗記しなければならない。
 POP before SMTP ではpopログを監視するデーモンを別に用意し、popでアクセスが認証されたら、認証されたIPアドレスを一定時間データベースに記憶させ、データベースをメールサーバ使用許可リストとして用いる。この方法を用いれば、ローミング先からのアクセスでも、予め登録されたIPアドレスでなくても、可能となる。
 実現には、Sendmail.cfの修正の他、Qpopperからのログ出力の変更、タイマープログラムの運用が必要となる。一般的にはDRACというフリーソフトが利用されている。
 ただし、IPアドレスベースでしか認証が行われないので、NAPT経由でアクセスした場合に本来許可されていないユーザにもSMTPを利用されてしまう危険性もある
 SMTP AUTHとは?
 SMTPに認証機能を追加したプロトコルである。中継に関するセキュリティは格段に向上し、なりすまし送信もできない。Sendmail以外のqmailやPostfixにも利用できる。認証には、LOGIN、PLAN、CRAM-MD5、DIGEST-MD5などがあるが、LOGIN、PLANはBASE64でエンコーディングされているだけで暗号化ではないので、通常は、CRAM-MD5、DIGEST-MD5が利用できる。認証段階でMUAが認証方法を指定できることになっている。要するにチャレンジ・レスポンス方式によるものである。
 利用するためには、サーバ側とクライアント側の双方が対応している必要がある。一般的なMUAではほとんど対応済みであるが、OutlookやOutlook Expressでは、LOGIN、PLANにしか対応していない。
 STARTTLS?
 メール本文の暗号化には、PGPやS/MIMEなどがあるが、STARTTLSはSendmailに付加された機能である。通信内容が全て暗号化されるので、LOGIN、PLANしか対応していないOutlookやOutlook Expressでも盗聴される可能性が低くなる。
 この機能を利用するためには、送信側も受信側もTLSに対応している必要がある。途中に未対応のサーバがあるとその間は暗号化されないことになる。
 SendmailでSTARTTLSを利用するためには、インストール時のオプションを変更して、STARTTLSに対応したSendmailを作成し、次に、TLSで使用する証明書を作成し、Sendmail.cfに在かのディレクトリを設定する必要がある。
  APOPとは?
 POPのパスワード部分を暗号化するので、セキュリティがさらにアップする。POPサーバとMUAの両方がAPOPに対応している必要がある。APOP対応のサーバとしてQpopperがあり、インストール時にオプション設定すればOKである。残念ながらOutlookやOutlook Expressは対応していない
 あくまで認証の暗号化で、電文の暗号化ではない。念のために!!
 POP3 over TLS/SSLとは
 電文の暗号化である。SMTPのSTARTTLSと同じ機能である。APOPに対応していないOutlookやOutlook Expressであるが、この機能には対応している。もちろん、Qpopperは対応済みである。
 QpoppeでPOP3 over TLS/SSLを利用するためには、インストール時のオプションを変更して対応させ、次に、TLSで使用する証明書を作成し、Qpoppeに在かのディレクトリを設定する必要がある。
 セキュリティに関するまとめ
対  策 対応可能サーバ OutlookやOutlook Expressへの対応 備  考
SMTP AUTH Sendmail、qmail、Postfix
(LOGIN、PLANにしか対応していない。)
  
STARTTLS Sendmail  
APOP Qpopper × Eudora Becky
POP3 over TLS/SSL Qpopper Eudora Mozillaも対応
 Post.OfficeとPostfixとは?
 どちらも、MTAとして開発されたソフトウェアである。世界的には、sendmailがデファクトスタンダードになっている。しかし、その使い勝手は決して良くはないらしい。そのため、qmailなどを採用するケースが増えてきたが、sendmailからの移行はきわめて難しい。その問題を解決したのがPostfixと言えよう。誰しも設定の難しいのは嫌だから。
Postfix  Postfix はsendmailに代わる MTA(Mail Transport Agent)として開発されたソフトウェアで、 sendmail との互換性が高く、安全、メンテナンスが容易、速い、などの特徴を兼ね備えている。sendmail からの移行が楽で、最近では Linux の一部のディストリビューションで標準の MTA として採用されている。
Post.Office  Software.comの本格的なメールサーバソフト。設定もWebブラウザで可能であり、ユーザ側でもWebブラウザを使用してアカウントやパスワードの変更が可能になっている。Software.comから試用版がフリーで提供されている。
 Post.Office 3.5.3 日本語版 試用版は、株式会社ネットワールド(http://www.networld.co.jp/postoffice/)さんからダウンロードができる。当然、MTAと言える。
 Webサーバ丸暗記
 ・現在では、Apacheがデファクトスタンダードだが、インターネット初期には、CREN httpが標準であった。
 ・アパッチも語源は、「パッチ」である。NCSA httpにパッチをあてて出来たことから、この名前が付けられている。
 ・W3CがhttpなどのWeb技術の策定を行っている。
 ・httpには、1.0と1.1バージョンがある。
 ・http1.1には、バーチャルドメイン(ホスト)の機能が拡張されている。社内であれば、HTTP://社員名.exsample.co.jp/といったURLで各社員ごとにコンテンツを表示できる。
 ・httpの挙動:クライアントリクエスト(メソッド等)→サーバレスポンス(ステータス送信)→データ送信→コネクション切断
 ・クライアントのリクエストは、メソッド情報の場所(ファイル)・HTTPのバージョンである。
 ・1回毎にセッションが切れる。1枚のページに画像が幾つもあると、セッションを何度となく入/切してダウンロードされる。
 ・PHPでも、Webコンテンツで利用されるJPEGやPNGやWBMPを動的に作成することが出来る。
 ・Basic認証のためには、事前にhtpasswdコマンドでパスワードファイルを作成しておく必要がある。
 Webサーバのセキュリティとは?
 UNIX 系 Web サーバではhttpdのプロセスはRooT権限で起動されるが、httpd.confnobodywwwで指定、あるいは、/etc/passwd/etc/groupeに任意の名前を記述すればユーザ/グループにより実行されるようになる。
suEXEC Apcheサーバを実行しているユーザと異なるユーザでCGIやSSIプログラムを実行させる。
CGI Wrapper ユーザディレクトリにおいて各ユーザ権限でCGIやSSIを実行できるようにする仕組み
chroot ユーザが特定階層以上のディレクトリに移動できないよう、特定のディレクトリを仮想的にルートディレクトリ(/)にするUNIXのシステムコールである。
 httpd.confとは?
 本当にこんなこと試験に出るのかなぁ!!
全般的な環境ディレクティブ SeverRoot Apacheとインストールしたディレクトリを指定する
SeverType inetdを使って動作させるか、デーモンとして起動させるかを指定する
LoadModule DSO用のモジュールを指定する
Timeout 何秒で接続を切るかのタイムアウトを指定する
基本設定用ディレクティブ SeveName 公開するサーバを記述する
Port 通信用のポート番号(通常80番)を指定する
User デーモンを実行する際のオーナーを指定する
DocumentRoot Webコンテンツをおく上位パスを指定する
Hostnamelookups onを指定すると、アクセスしてきた先の逆引きが行われ、FQDNがログに記述される
SeverSignature エラー時などにApacheのバージョンとホスト名の表示の有無を指定する
ErrorLog エラー時にログを出力するファイルを指定する
CustomLog 通常のアクセス時にログを出力するファイルを指定する
バーチャルホスト用ディレクティブ NameVirtualHost バーチャルホスト用のIPアドレスを宣言する。
オプションパラメータindexesは、該当するファイルがディレクトリの中に存在しない場合に、そのディレクトリにあるファイルを表示させるように設定する。これは危険なパラメータである。
 もう一つ、Apacheはエラーが起こると、相手にバージョン情報を表示してしまう。これはセキュリティ上好ましくない。そこで、ErrorDocumentパラメータを設定し、任意のエラーメッセージが出るようにする。
 具体的な通信内容はログが一番!!
Connected to www.sample.com TCPで接続
GET/sample/HTTP/1.0(クライアント) メソッド=GET、要求ファイル=sample80番ポートサービス
HTTP/1.1 200 OK(サーバ) HTTPのバージョンに差がある
Connection:close
Date:Fri,05 April 2002 06:30:18 GMT クライアント要求を認識した日
Server:Apache/1.3.12(UNIX)
Content-Type:text/
html
 アンダーラインがレスポンスヘッダー
<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN ” >
<HTML LANG=”ja ” >
<META HTTP-EQIV=“Content-Type ” CONTENT==”text/html;
charset=Shift_JIS ” >
100〜199 一時的なレスポンス 400〜499 クライアントエラー
200〜299 正常 401:アクセス権限がない
403:リクエストは許可されませんでした
404:リソースが存在しません
300〜399 リダイレクト  500〜599  サーバエラー

 クライアントエラー一覧
コード 内容 意味 チェック方法
401 Unauthorized アクセス権限がない  ・.htaccessファイルの設定を調べる
 (例:アクセス制限のあるサイトへのログインでパスワードを誤入力した。)
 ・Web サーバ設定ファイルでアクセスの許可/不許可の設定を調べる。
403 Forbidden リクエストの不許可  ・ホスト単位の認証の設定を調べる
 ・パーミッションの設定を調べる
 (例:CGI を設置したが、パーミッションを設定するのを忘れた。)
 ・Web サーバ設定ファイルでインデックスファイルのファイル名を省略したアクセスが有効かを調べる。
404 Not Found リソースが存在しない  ・パスが正しいか確認する。
500 Internal Server Error サーバ内部エラー  ・CGIプログラムに問題がありサーバ内部エラーを表しているので、エラーログを調べる。
 (例:改行コードを誤った。プログラムの記述が間違った、)
 Apache丸暗記
 ・Apache はNCSA HTTPd version 1.3にpatch をあてる形で開発が進められたプログラムである。
 ・特徴:フリー、多くのプラットフォームに移植、安定、 高速 、モジュール(プラグイン)を使用して機能追加できる 。
 ・機能追加としては、Perlの稼動、SSL対応、PHP(RDBMS・GD・SQLとの連携)の稼動である。
   ・各モジュールはHTML上で動作させる。HTMLソースに組み込む。
   ・mod_Perl、mod_SSL、mod_PHP
 ・Apache上での、RDBM(oracle等)とPHPの親和性は、オンラインショッピングを計画している業者には必須の考え方である。
 ・コンパイル後にモジュール追加が可能なDSO(Dynamic Shared Object、モジュール)がある。
 ・コンフィグレーションファイル(設定ファイル): Httpd.conf。設定、修正後は再起動が必要となる。
 ・設定の条件4つ:ServerType →standalone、DocumentRoot(コンテツツの場所)、ServerAdminDirectoryIndex
ServerTyp  standaloneとは独立したデーモンとして起動させるためである。
ServerAdmin  サーバ管理者のメールアドレスを指定する。
DocumentRoot  コンテツツの場所→ディレクトリ単位で指定する。
DirectoryIndex  パスを指定しないときに表示するファイルを指定する。指定しないと「index.html」がインデックスファイルとなる。
 ・全文検索ソフトソフトとしては、NAMAZUが有名である。勿論、Windows上でも稼動する。WordやExcelの内容まで検索してくれる。
 ・MHonArcでWebメールを利用できる。
 ・暗号化にはSSLが利用される。”mod_ssl”や、Apache-SSL、OpenSSLが利用される。
 Apacheの設定ファイル(これを見れば一発、Httpd.Conf)とは?
ServerType standalone
ServerRoot "C:/Apache"
'Main'server configuration
Port 80
ServerAdmin sinzo@sinzo.com
ServerName www.sinzo.com
DocumentRoot "C:/wwwroot"
<IfModule mod_dir.c>
DirectoryIndex index.html sinzo.htm (/以下を省略すると表示されるファイル名)

 ServerTypeはサーバの動作タイプを指定し、通常はStandalone でよいがInetdを指定する場合もある。
 standalone  サーバーを通常のデーモン・プロセスとして起動する。

 inetd

 サーバーを inetd から起動する。ごくまれにしかアクセスがない場合は inetd モードにしておけばよい
 DirectoryIndexはURL でパス名を指定しない場合に表示させるファイルを記述するが、ここにファイル名の指定がないDocumentRootで指定したディレクトリ内のファイル名のリストを表示させてしまうこともあるので、セキュリティ上注意が必要である。
 Apacheのログ設定ファイルとは?
 「LogFormat "%h %l %u %d \ "%r\ "%>s %b \ "%{Referer}i\ "\ "%{User-Agent}i\ ""combined 」
何じゃこれは!!
host %h ホスト名、IP アドレス request %r クライアントからのリクエスト内容
ident %l 接続ユーザの識別情報
=クライアントから返される個人情報
status s 3 桁のレスポンスコード
authuser %u 認証に使用されたユーザ名 bytes b クライアントに配布したオブジェクトのバイト数
date %d リクエスト日付         
 Apacheいおけるモジュールとは?
 ・現在組み込まれているモジュールを調べるには、”httpd -l”で調べる。必要ないものは、Configurationファイル内の記述を変更すればよい。
 ・mod_mimeやmod_cgi等はApache生成時にインストールされている。
 ・デフォルトで組み込まれないものには、mod_rewrite(URLを柔軟に書きかえれる)、mod_ssl、mod_auth_digest、mod_php、mod_securityなどがある。
 ・上述のモジュールは、Apache生成時に組み込むか、途中でインストールするにはApache全体を再コンパイルする必要がある。再コンパイルすることなく組み込めるDSO(ダイナミック・シェアード=割当てる・オブジェクト)モジュールがある。DSOは従来APACIと呼ばれていた。
 マルチドメイン(バーチャルドメイン)について
 なんか、DNS/メールののマルチドメインと混乱しがち。結論としては、Apachiによるマルチドメイン(バーチャルドメイン)を利用するためには、DNSサーバでもマルチドメイン環境を導入する必要がある。一体の作業と言えよう。
 1つのIPアドレスに複数のホスト名をつけることができる。通常は、どのホスト名で見にいっても同じWebしか表示されない。しかし、Apacheでは、http/1.1をサポートしたことにより、アクセスしてきたホスト名で自動的に表示するWebページを変えるバーチャルドメイン機能がサポートされた。これによって1台のサーバに、参照されたドメインに応じた全く異なったWebサイトであるかのように振舞うことができる。
 独自ドメインを利用できるWebホスティングサービスの中には、この技術を応用しているサイトもある。
 
 マルチドメイン(バーチャルドメイン)の具体的な使い方とは?
 Apacheを用いてバーチャルドメインを実現するには、httpd.confファイルのVirtualhostディレクティブを使用する。リクエスト情報を基に表示ページを変える方法としては次のものが考えられる。
  • IPアドレスベースのバーチャルドメインで、あて先IPアドレスで判断して、該当するドキュメントルートやコンテンツやディレクトリを変更する。
  • ホストベースのバーチャルドメインで、HTTP/1.1のリクエスト時に含まれるホスト情報で判断して、該当するドキュメントルートやコンテンツやディレクトリを変更する。
 ホスティングサービスとApacheとの関係
 これも「問題ネット」さんに教えてもらったことだが、最初はアレ!と首をひねったが、言われてみればなるほどである。バーチャルドメイン機能を利用できないと商売は上がったりである。
 ApacheはHTTP1.1をサポートしているので、バーチャルドメイン機能を利用することができる。
 Apacheのセキュリティを高める
Apacheはどういったホスト名で動くのか/責任者は トラブルが起こったとき、誰に連絡すればよいのか、どのような名前で動作するのかを記入しておく。
Apacheは誰の権限で動くのか 特に設定しないと、Web上で動作するCGIやSSIはApacheで設定したユーザ権限で実行される。Apacheがroot権限で動いた場合、CGIでrootにしか読めないファイルが読まれてしまう。
ユーザにどこまでの権限を与えるか  ・CGIの実行権限をWebサーバの「所有者」ではなく、ファイルの「所有者」に変更するようにsuEXECやCGI Wrapperを用いたり、WebサーバをChrootさせてUNIXコマンドを使えないようにする。
 ・CGIで取得したデータをWeb経由でアクセスされないファイルにおく必要がある。
掲示板上での不正コマンド  内部コマンドを実施される危険性がある。
 ・特殊文字を無効化し、タグも使用できないようにする。
ディレクトリを見せない  httpd.confファイルのoptionパラメータからindexesを削除してディレクトリのファイルリストを見せないようにする。私のISPさんも最近この設定をした。
 DirectoryIndexはURL でパス名を指定しない場合に表示させるファイルを記述するが、ここにファイル名の指定がないDocumentRootで指定したディレクトリ内のファイル名のリストを表示させてしまうこともあるので、セキュリティ上注意が必要である。)
OSやApacheのバージョンを
表示しない
 ・”httpd.conf”内の”ErrorDocument”の指定を明示的なメッセージかHTMLファイルにして、デフォルトのエラーメッセージではないページを表示させるように指定する。
 ・ServerTokenディレクティブをProductOnlyとしてバージョン情報を隠蔽する。
htaccessの設定注意をする  Apache でユーザによるhtaccessの設定はpublic.htmlのようなユーザのホームディレクトリに対して、AllowOverride(上書き)オプションが有効となっていないと反映されない。特定のディレクトリにhtaccessのファイルがある場合、Web サーバは設定ファイルの内容をhtaccessに記述されている内容で上書きする。さらに、サブディレクトリにもhtaccessがあると、さらに、その内容を上書きをする。htaccessの構文エラーはApache の起動時にはチェックされないため、htaccessの記述が誤っていると、そのディレクトリ以下のどのファイルにアクセスしてもエラーとなる。
 Apacheとデータベース
 ApacheにPHPモジュールを追加し、データベースとの連携を図ることが出来る。
 ・PostgreSQL ・MySQL ・Sybase  ・Oracle
 SSIの拡張子、MIMEはどうなってるの?
区分 SSIの場合 htmlの場合
拡張子 shtml html
MIME タイプ text/x-server-parsed-html text/html
 なお、拡張子が "html" のままだと、SSI 構文は注釈とみなされる。
 またまたマイクロソフトさんの登場 IISとはなんぞや?
 ・詳細説明へのリンク(←クリック)
 なんとか無駄な競争は止め、ユーザを主体にした統一規格にならないものか。覚えることの多さに負けそう。つまらない愚痴。
 ・Windows NT/2000 Server 版に標準で付属。
 ・なんでもあるのかというとそうでもない。・Web サーバプログラム ・FTP サーバプログラム ・SMTP サーバプログラム
小規模な、閉じた、イントラネット環境での使用を推奨
IISは利用者が自分でインストールする必要がある。過去からの苦い経験でそうしたようだ。「スタート」→「管理ツール」→「サーバの役割管理」→「役割の追加および削除」→ウィザード指示により「アプリケーションサーバ(IIS、ASP.NET)」を選択するとインストールは完了する。。
「コントロールパネル」→「管理ツール」→「インターネットサービス(IIS)マネージャ」→「規定のWebサイト」右クリック→「プロパティ」から設定する。
  ・この設定が単語と内容がなかなか一致せず苦労する。
「ドキュメント」  インデックスファイル名を指定して、どのファイルをトップページにするか決定
「Web サイト」  ログの収集の可否とその形式を選択
・「ホームディレクトリ」  コンテンツのパスを指定
・ユーザにどのような環境を提供するか
・ログをどの程度(容量)まで蓄積するか
  ・仮想ディレクトとは:ホームディレクトリ以外のものをホームディレクトリ内にあるように表示できる機能である。クライアントにパスを知られては困るファイルを提示するとき等に使用する。
 仮想ディレクトの設定:「コントロールパネル」→「管理ツール」→「インターネットサービスマネージャ」→「規定のWebサイト」右クリック→「新規作成」→「仮想ディレクトリ」を選択し設定する。
 Mosaicというブラウザは?
 ・画像の表示が可能。
 ・GUI 操作ができる。
 ・イリノイ大学で開発された。
 ・Mosaic を改良してInternet Explorer やNetscape Communicator が開発された。
 FTP丸暗記
 ・UNIXに標準装備されているftpdデーモンに代えProFTPDデーモンが主流になっている。設定がApacheによく似ている。コンフィギュレーションファイルでアクセス可能なユーザを制限できる等の理由からである。
 ・ポートフィルタリングを実施する場合には両方のポート(20番、21番)からのアクセスを許可する必要がある。
  ・ポートフィルタリングとは不要なパケット(ポート番号による)を拒否すること。
 ・パスワードが暗号化されていないため、経路の安全性を確認するとともに、SSH 、Port Forwardingを使用して暗号化するか、SCPを使用する。
   ・SSH :遠隔地のコンピュータのコマンド操作やファイル転送などの通信経路を全て暗号化する
   ・SSHは、認証には公開鍵暗号方式を通信データは共通鍵暗号方式で暗号化する。
   ・SCP (Secure CoPy ):SSH によってセキュリティを強化したデータ形式である。
 ・パーミッションの設定は、UNIX シェルでは「chmod」というコマンドを使う。
 activモードとpassiveモードとは?
 通常は、activeモードを使用するのだが、途中で、ルータやファイアウオールを導入している環境ではうまくいかないことがある。これはサーバ側から要求されるデータ送受信のための接続手順を拒否してしまうためである。passiveモードはクライアント(自分のパソコン)側から要求を送ることで接続を可能にしている。
 ProFTPDとWU−FTPDとの違いは?
WU−FTPD UNIXで標準インストールされている。最近は、制御の柔軟性からProFTPDが利用されるようになってきた。
ProFTPD 特徴としては、
 ・Apacheと設定書式が似ている。
 ・マルチバーチャルFTPサーバである。
 ・スタンドアローンでの起動とinetdからの起動ができる。
 ・FTPを許可するアカウントを設定でき、アカウントごとにアクセス権限を指定できる。
 ・コンフィギュレーションファイルでアクセス可能なユーザを制限できる。
 ・フリーソフトで、自由に改良、配布ができる。
 SSH、SCP、Port Forwardingとは
SSH
(Secure Shell)
 FTPでは通信内容はそのままIPパケットに格納されて送付されるので、盗聴される危険性がある。SSHはこれを防ぐために通信経路をすべて暗号化する。暗号化は次の方法による。
ホスト認証 SSHサーバの公開鍵のみを利用する。なりすましは防げない。
クライアント認証 クライアントが側で公開鍵と秘密鍵を作成し、公開鍵をSSHサーバへ転送する。1:1のセキュアな通信が可能となる
SSHを組み込むことによりFTPの通信を暗号化するSFTPが実装される。
(具体的に出来ること)
・通信を暗号化して、リモートサーバにログインできる。TELNETと同じ機能を有する。
・リモートマシンへのアクセスを、ローカルマシンの特定ポートと結びつけ、ローカルマシンのポートへのアクセスとして利用する。(これをSSH機能の一つでポートフォワーディングという)
SCP
(Secure CoPy)
 UNIXにあるコピーコマンド"CP"をSSHでセキュリティ強化することができる。暗号化したコピーが出来るようになった。
Port Forwarding  通信を暗号化して、安全なものにする機能。SSHを使用する。この考え方はFTPには限らない。
SFTP(セキュアFTP)  OpenBSDプロジェクトで開発され、OpenBSD2.6に標準装備された。
(注)WindowsではWinSCPやfilezilla、MacではFuguが利用されている。
 FTPのセキュリティ対策は?
パスワードの暗号化  パスワードが暗号化されていないため、経路の安全性を確認するとともに、SSH、 Port Forwardingを使用して暗号化するか、SCPを使用する。
ログインの権限  管理者権限でFTPにログインしない。
  FTPを許可するアカウントには制限を加える。
 パーミッション(アクセス権限)の設定
 FTP によってアップロードされたファイルはアクセス権限であるパーミッションを設定する必要がある。
 ・通常HTML ファイルには「読み込み権限」を許可する。
 ・テキストファイルには「読み込み、書き込み権限」を許可する。
 ・CGI スクリプトファイルには「実行権限」を許可する。
 ・UNIXシェルでは「chmod」というコマンドを使用しパーミッションを設定する。パーミッションの数値は8進数で表記される。
パーミッション 所有者 グループ その他のユーザ−
rwx r-x r--
 Anonymous  FTPとは?
 ・Anonymous  FTPとは、FTPサーバにゲストログインを許可するサービス。
 ・セキュリティフォールになりやすいということから、最近は使用されなくなった。
 ・現在はWeb上で代替が可能である。
 ・注意すべき点は、OSによってはデフォルトでAnonymous FTPサービスを提供してしまうことである。
 ・違った視点だが、ソフトを無料配布するときには、ソフトそのものをMD5でチェックしておく必要性がある。汚染されている危険性がある。
 TELNET丸暗記
 サーバを遠隔操作できるため、サーバ設置場所まで出向く必要がない。それが、TELNETの最大の利点である。
 ・FRC318で規定されている
 ・telnetを受け付けるのはtelnetdというデーモンプログラムである。
 ・UNIX 系OS ではほとんどのホストに標準でインストールされている。
 (特徴)
   ・サーバ上のUNIXコマンドをコマンドラインから実行できる。
   ・遠隔地からリモートログインして、クライアントを仮想端末とし、ログアウトすると終了する。
   ・他のポートにアクセスできる。ポート番号を変えて接続する。(23ポートがポートフィルタリングされていても、他のサービスにはアクセス可能)
   ・他のサーバ、ルータ、スイッチと通信できる。
 (具体的な使用法)
   ・ホストリモートログインし、IP アドレスを遠隔地から変更する。新しいIP アドレスを設定し、古いIP アドレスを消去する。
   ・遠隔地からインターネット向けのサービスを起動/終了する。
   ・遠隔地から様々な設定を更新する。
   ・遠隔地からユーザアカウントを追加/削除する。
 ・パスワードが暗号化されていないので、SSH を使用したほうがよい。
 ・windowsでもtelnetクライアントが実装されているが、利便性が高く、sshの実装が可能なTera Term Proを利用しているユーザが多い。
 ・Macintoshでは、NCSA TelnetをベースにしたNCSA TelnetJや、BetterTELNETがよく使われる。MacOS Xでは標準装備されている。
 TELNET接続(ログイン)の画面です
% www.sinzo.jp
Trying 164.46.150.64
Connected to ……
Escape character is …
Red Hat Linux release 6.1J(Cartman)
Kernel 2.2.16-3 on an 1586
..
login:sinzo
Password:guest
Last login:Wed April 24 11:56:35 from ns
 TELNETとWebサーバとの通信
クライアント    telnet www.sinzo.com  80
Web サーバ         Trying****** Connected to local host.Escape character is …
クライアント     GET/HTTP/1.0
Web サーバ         HTTP/1.1 2000K Date SUN,7 JULY 2002 12:30 GMT Server:Apache/1.3.9(UNIX)
                                               …
                                Content-Type:text/html
                             <HTML>… </HTML>
                              Connection closed by foreign host
 セキュアなTELNETとは?
パスワードの暗号化  パスワードが暗号化されていないため、経路の安全性を確認するとともに、SSH、 SSL Telnet、Port ForwardingによるSSHとTelnetを組合わせた暗号化処理方法を使用して暗号化する。
 ・SSHは公開鍵方式を利用している。
 ・サーバアプリとしては、フリーのOpenSSH、GNUによるlsh、SSH社によるsshがある。
 ・クライアントアプリとして、OpenSSHの他にTera Term ProにSSHを組み込むことも出来る。
 ・Macintoshでは、BetterTELNETをベースにSSHに対応したMacSSHがある。
 ・Telnetは23番ポート、SSHは22番ポートを使用する。ファイアウオールに適宜設定する必要がある。
ログインの権限  管理者権限でtelnetにログインしない。
 ・ワンタイムパスワード(OTP)を利用する。
 ・OTPを実現するソフトウェアとしては、フリーソフトウェアのS/KEYやOPIE、SecurIDなどがある。
 プロキシの丸暗記とは?
(役目)
 ・Webページを関しては(データをキャッシュする)よく知られているが、SMTPやPOP3やNN(ネットニュース)でも利用される。
 ・単に内容をチェックするだけでなく、その内容をチェックし、ウイルスが添付されているかどうかを確認する。
 ・アプリケーションゲートウェイに利用される。
 ・誰がいつ誰と通信したかのログを取得してくれる。
 (その他)
 ・プロキシにはDeleGate(多目的アプリケーションレベルゲートウェイ/プロキシサーバ、フリーソフト)がある。
 ・プロキシとして利用できるプロトコルには、FTP、Gopher、HTTP、NNTP、POP、SMTP、IMAP、Telnetなどがある。
 ・最もシンプルなプロキシは、2つのネットワーク接続口にマルチホームドホストを一台用意する方法である。
 ・プロキシソフトにはUNIXのSquidと、より高機能のDeleGatがある。
 ・プロキシは利用者の匿名性を高めることが出来るが、それを悪用して、掲示板にあらぬことを書き込んだりする。
 ・設定ミスで外部から内部が丸見えになることがあるので、設定は慎重にやらなければならない。
 ・当然だが、プロキシにアクセスできるPCはIPアドレスを限定する必要がある。
 ・プロキシサーバはDMZ内にも設定できる。
 DHCP丸暗記
 ・市販のダイヤルアップルータやブロードバンドルータにDHCP サーバ機能が含まれている。
 ・クライアントに情報を自動的に割り当て、クライアントが通信を終えると自動的に回収するプロトコル。
 ・UNIXのDHCPサーバとしては、ISC DHCPが有名である。dhcpd.confのサンプルがあるのでそれを修正すれば簡単に設定できる
 ・DHCP以前はRARPラープ、Reverse Address Resolution Protocol)を使用して、MACアドレスとIPアドレスのテーブルを持ち、ユニキャストでIPアドレスを割当てていた。
 ・UDPポート67,68番を使用する
 クライアントは、どうやってDHCPサーバを見つけるのかな?
 DHCPで設定すべき情報は?
 ・IP アドレスの範囲
 ・ネットマスク=サブネットマスク
 ・デフォルトルート
 ・DNS サーバのIPアドレス
 DHCPで自動配布される情報は?
 ・IP アドレス(・DNS サーバ ・Webサーバ ・WINSサーバ)
   (注意)プロキシサーバのアドレスは対象となっていない。Webサーバを設定することはあまりない。
 ・ホスト名
 ・ネットマスク=サブネットマスク
 ・デフォルトルート
 ・ドメイン名
 ・リース期限:これによりIPアドレス以上のクライアントが共存できる。
 ・Windowsでは,WINSのIPアドレスを配布できる。
 DHCPのメリットとデメリットとは?
メリット  ・情報を自動的に設定できる。
 ・IP アドレスを効率的に利用できる。
 ・クライアントの設定変更はサーバの設定を変更するだけでよい。
 ・特定のMAC アドレスを持つクライアントに固定された情報を与える機能があるため、セキュリティを高めることができる。
 ・クライアントが使用する情報を一元的に管理できる。
 ・ネットワークに変更があってもサーバ側だけで対応すればよい。
デメリット  ・手動で設定するとMAC アドレスが登録されていないクライアントもネットワークに接続でき、セキュリティの甘さがある。
 ・IPが自動割り振りなので、ユーザを特定しにくい。悪さをするユーザを即座に特定できない。 
 DHCPの動きは?
(1)DHCPクライアントはブロードキャスト(255.255.255.255)で、DHCPにIPアドレスの申請をする。この時クライアントは一時的に0.0.0.0を名乗る。
(DHCPディスカバー)
(2)DHCPサーバは(1)の問い合わせに対して返事をする。このとき、MACアドレスとリース候補のIPアドレスをDHCPクライアントに返す。(DHCPオファー)
(3)DHCPクライアントは、他にIPを提示するDHCPがないかを確認して、DHCPサーバに対して、使用するIPアドレスを宣言する。ただし、複数のDHCPサーバからIPの提示を受けた場合は、クライアントgが選択する。
(DHCPリクエスト)
(4)DHCPサーバはIPアドレスをDHCPクライアントにリースする。(DHCPアック)
 DHCPで理解しておくこととは?
 ・クラインとは、DHCPに割り振られたIPを使う前に、ARPを使って、各クライアントとにブロードキャストし、使用されていないことを確認してから使う。(事前確認)
 ・IPアドレスのリース期間の半分になると、DHCPクライアントはDHCPサーバに対してIPアドレスの借用期間の更新を行う。又は、再貸し出しを要求する。モバイル環境ではリース期間を短くすることで、有効IPアドレスを効率的に使うことができる。
 DHCPの脆弱性とは?
 誰でもが簡単にネットワークに入ることができるが、これは大きな脆弱性を持つことになる。MACアドレス登録制にしてユーザ制限をする必要がある。そうすればトラブル発生に個人を特定することも可能になる。
 DHCPに無線LANがを利用されると壁の外に人にも利用されてします、とんでもないことだ。従来はESS-IDで制限していたが、現在ではSSID(SSIDとESSIDは同じ物をさす)を自動検知する仕様も出来ているのでセキュリティは十分とはいえない。最低でも128bitWEPやWPAの暗号化技術を用いて、特定のMACアドレス使用のユーザにしか無線LAN参加の許可を与えないようにしなければならない。
 WEPが非設定の無線LANにおいて、併せてDHCPサーバを運用している場合は、セキュリティを考える上ではより深刻であることを記しておきたい。なにしろ、無線LANに侵入してきた部外者の端末に自動的にIPアドレスがふられてしまうことになるからだ。
 こうなると、電波の届く範囲内に潜んで無線LAN端末を立ち上げ、DHCPによりIPアドレスを獲得した侵入者が、あなたのPCに対して荒らしを行うばかりでなく、インターネットに対しても悪意のある行為に及ぶ可能性が出てくる。DHCPサーバを入れる際には、無線LANの上述の項目を確実に設定しているか、くれぐれも注意しながら進めることが肝心だ。
 無線LANとDHCPの関わりをもう少し?

 一般に、無線LAN製品では、セキュリティに関連して、以下の項目が設定できるようになっている。これは、IEEE802.11bに準拠した製品ではどのメーカーの製品の場合もほぼ共通で実装している設定項目だ
 ・ESS-ID
 ・WEPキー
 ・MACアドレス登録
◇ESS-ID
 ESS-IDとは、Enhanced Service Set IDの略だ。単にSS-IDと呼ばれる場合もある。これは、無線LANの端末が所属する無線グループを指定するための項目だ。IEEE802.11の無線LANでは、同じESS-IDを設定した端末やアクセスポイント(AP)同士で通信し、ESS-IDが異なる端末・APとは通信ができないようになっている。 また、同じESS-IDをもつAPのもとでは、端末を移動しながら使うこともできる。これをローミングという。
 このESS-ID、正確にいうとセキュリティの項目というよりは、有線ネットワークでいうセグメントを指定するような位置付けの項目と考えたほうがいい。有線の場合はどのハブやルータの配下にある端末か物理的に明確に分けられるが、無線ではそれができない。ESS-IDを使って無線LANのグルーピングを行うというわけだ。
 実は、ESS-IDには、どんなIDの無線LANグループにも参加できるという、“万能の”IDが存在する。それは「ANY」、もしくはたんなる空白をIDとして入れた場合だ。ESS-IDの設定欄に「ANY」か空白を設定すると、その端末は、どのようなESS-IDを設定した無線LANにも参加できてしまう。802.11の標準仕様が、ESS-IDについてそう規定しているため、どの製品についても共通である。
◇WEPキー
 WEPとは、Wired Equivalent Privacyの略。“有線と同等のプライバシー”という意味だ。WEPで使用するキーとなる文字列を指定する。この設定を有効にすると、RC-4という暗号化方式によって、無線区間の通信は暗号化される。機種によってはWEPを有効にすることよって、速度の低下が起こる場合もある。それを避けるため設定しないこともあるかもしれないが、後述するESS-IDの仕様を考えると、必ず設定しておきたい項目だ。5文字の英数字の文字列、もしくは16進数10桁の数字で指定できる。現在、40bitが標準だが、企業向けなどの機種では、さらに長い鍵長を実装した128bit版の製品も登場している。
◇MACアドレス登録
  これをAPに登録しておけば、登録していない端末がAPを利用して外部のネットワークにアクセスするのを防ぐことができるようになる。 

(LifeStyleより引用)

 なに? BOOTPって?
 DHCPが登場する前は、このBOOTPによりIPアドレスが自動配布されていた。今は、昔の話。
 ・IP アドレスとMAC アドレスの1:1対応リストをサーバに登録する必要がある。
 ・割り当てたIP アドレスはBOOTP 側で開放しないので、IP アドレスを他のクライアントと共有できない。そのため、クライアントの数は割り当て可能なIP アドレスの数を越えることができない。
 ・クライアントに対してIP アドレスだけ自動配布する。