管理制御へのユーザーアクセスが企業のシステム管理者にとって重要な問題である一方、 アクティブになっているネットワークサービスのタブをオンに維持しておくことは、 Linuxシステムをインストールして動作させる人すべてにとって非常に重要なことになります。
Red Hat Enterprise Linux稼動環境下にある多くのサービスはネットワークサービスとして動作します。 ネットワークサービスがマシン上で稼動している場合、 デーモンと呼ばれるサーバーアプリケーションは 1つまたは複数のネットワークポートで接続をリスニングしています。 これらの各サーバーは攻撃される可能性のある通路として考えるべきでしょう。
ネットワークサービスはLinuxシステムにとって多くの危険性をもたらします。 以下に主な問題のいくつかを一覧で示します。
バッファのオーバーフローを攻撃 — ポート番号 0 から 1023 へ接続するサービスは管理ユーザーとして実行しなければなりません。 アプリケーションに不正アクセスできるバッファのオーバーフローがある場合、 攻撃者はデーモンを実行中のユーザーとしてシステムにアクセス権を得ることができます。 なぜなら、不正アクセスできるバッファのオーバーフローがあると、 クラッカーは自動ツールを使用して脆弱性のあるシステムを識別することができ、 一度アクセス権を取得すると、自動rootキットを使ってシステムへの アクセスを維持するからです。
サービス停止攻撃(DoS) — サービス停止攻撃は、要求でサービスを溢れさせて、 システムがこの各要求すべてを記録して応答しようとするので手一杯となり 停止させてしまいます。
スクリプトの脆弱性を攻撃 — サーバーがサーバー側の動作を実行するためにスクリプトを使用している場合、 一般的にはWebサーバーが行なうので、クラッカーは誤って書かれたスクリプトに 攻撃をマウントすることができます。これらのスクリプトの脆弱性への攻撃は、 バッファのオーバーフロー状態を招いたり、攻撃者にシステム上のファイルを 改変させてしまうことになる恐れがあります。
ネットワーク上で攻撃を受ける可能性を制限するには、 使用しないサービスはすべてオフにしてください。
セキュリティを強化するために、Red Hat Enterprise Linuxでインストールされている ほとんどのネットワークサービスはデフォルトでオフになっています。 ただし、注意すべき例外があります。
cupsd — Red Hat Enterprise Linux用デフォルトの印刷サーバー
lpd — 代替の印刷サーバー
portmap — NFS、NIS、及び他のRPCプロトコルに必要な コンポーネント
xinetd —vsftpd、 telnet、sgi-fam (Nautilusファイルマネージャ必要)など、 従属サーバーのホストへの接続を制御するスーパーサーバー
sendmail — デフォルトでは Sendmail メールトランスポートエージェントが有効になっていますが、 localhostからの接続のみリスニングします。
sshd — Telnetのセキュアな代替となるOpenSSHサーバー
これらのサービスを実行したまましておくかどうかを決めるときは、 常識を持って判断するのがベストです。例えば、プリンタが利用できない場合には cupsdを実行したままにしておかないようにします。 portmapについても同じです。NFSボリュームをマウントしたり、 NIS(ypbindサービス)を使用しない場合には、 portmap は無効にしてください。
Red Hat Enterprise Linuxではサービスをオン/オフに切り替えるようデザインされた 3つのプログラムを配付しています。サービス設定ツール (redhat-config-services)、ntsysv、chkconfigの3つです。 これらのツールの使い方については、Red Hat Enterprise Linux システム管理ガイドにある サービスに対するアクセスの制御の章を参照してください。
特定のサービスに関してその目的が不確かな場合は、 図4-3に示してあるように、 サービス設定ツールに詳細フィールドがあり、 簡単な使用用途が記載されているかもしれません。
ただし、ブート時に起動できるネットワークサービスがどれかを確認するだけでは 十分とは言えません。システム管理者なら、 どのポートが開いていてリスニングしているかも確認してください。 これに関しての詳細は、項5.8を参照してください。
潜在的には、どのネットワークサービスも不安定です。 だからこそ、使用しないサービスをオフにすることが非常に重要になります。 サービスの不正アクセスは明らかにされ通常パッチされますので、 どのネットワークサービス関連のパッケージも常に更新して最新の状態を保つことが とても重要になります。この問題に関する詳細は、 第3章を参照してください。
ネットワークプロトコルの中には他に比べて本質的に不安定なものがあります。 以下のようなことを行なうサービスはいずれもこれに該当します。
暗号化していないユーザー名とパスワードをネットワーク上で渡す — TelnetやFTPなどの多くの旧式プロトコルは認証セッションを暗号化しないので、 できるだけ避けてください。
暗号化していない機密データをネットワーク上で渡す — 多くのプロトコルは暗号化していないデータをネットワーク上で渡します。 これらのプロトコルには、Telnet、FTP、HTTP、SMTPなどがあります。 NFSやSMBなどの多くのネットワークファイルシステムもまた暗号化していない情報を ネットワーク上で渡します。これらのプロトコルを使用するときに、 送信するデータのタイプを制限するのはユーザーの責任です。
また、netdumpのようなリモートメモリダンプサービスも ネットワーク上で暗号化していないメモリの内容を渡します。 メモリダンプにはパスワード、ときにはデータベースのエントリや他の機密情報なども 含まれていることがあります。
finger 及び rwhodのような 他のサービスはシステムのユーザーに関する情報を明かしてしまいます。
本質的に不安定なサービスには以下のようなものがあります。
rlogin
rsh
telnet
vsftpd
すべてのリモートログインとシェルプログラム(rlogin、 rsh、telnet)はSSHでは避けてください (sshdについての詳細は、 項4.7を参照してください)。
FTPは、システムのセキュリティに対してリモートシェルほど本質的に危険ではありませんが、 問題を避けるために、FTPサーバーは十分に注意して設定、監視する必要があります。 FTPサーバーの安全確保についての詳細は、項5.6を 参照してください。
十分に注意して実施すると共に、ファイアウォールの後に配置すべきサービスには 以下のようなものがあります。
finger
identd
netdump
netdump-server
nfs
portmap
rwhod
sendmail
smb (Samba)
yppasswdd
ypserv
ypxfrd
ネットワークサービスの安全確保に関する詳細は、第5章にあります。
次のセクションでは、シンプルなファイアウォールを設定するのに利用できる ツールについて説明します。