管理制御へのユーザーアクセスが企業のシステム管理者にとって重要な問題である一方、アクティブになっているネットワークサービスに注意を払うことは、Linuxシステムを動作させて管理する人すべてにとって非常に重要なことになります。
Red Hat Enterprise Linux稼動環境下にある多くのサービスはネットワークサービスとして動作します。ネットワークサービスがマシン上で稼動している場合、デーモンと呼ばれるサーバーアプリケーションは 1つまたは複数のネットワークポートで接続をリスニングしています。これらの各サーバーは攻撃される可能性のある通路として考えるべきでしょう。
ネットワークサービスはLinuxシステムにとって多くの危険性をもたらします。 以下に主な問題のいくつかを一覧で示します。
サービス停止攻撃(DoS) — サービス停止攻撃は、要求でサービスを溢れさせて、 システムがこの各要求すべてを記録して応答しようとするので手一杯となり 停止させてしまいます。
スクリプトの脆弱性を攻撃 — サーバーがサーバー側の動作を実行するためにスクリプトを使用している場合、一般的に Webサーバーが行なうので、クラッカーは誤って書かれたスクリプトに攻撃をマウントすることができます。これらのスクリプトの脆弱性への攻撃は、バッファのオーバーフロー状態を招いたり、攻撃者にシステム上のファイルを 改変させてしまうことになる恐れがあります。
バッファのオーバーフローを攻撃 — ポート番号 0 から 1023 へ接続するサービスは管理ユーザーとして実行しなければなりません。 アプリケーションに不正アクセスできるバッファのオーバーフローがある場合、 攻撃者はデーモンを実行中のユーザーとしてシステムにアクセス権を得ることができます。 なぜなら、不正アクセスできるバッファのオーバーフローがあると、 クラッカーは自動ツールを使用して脆弱性のあるシステムを識別することができ、 一度アクセス権を取得すると、自動rootキットを使ってシステムへの アクセスを維持するからです。
![]() | 注記 |
|---|---|
Red Hat Enterprise Linux では、バッファオーバーフローの脆弱性への脅威は ExecShieldで軽減されています。これは、実行可能なメモリ分割と x86-互換のシングル 及びマルチプロセッサーカーネルでサポートされる保護技術です。ExecShield は仮想メモリを実行可能と非実行可能な部分に分割することでバッファオーバーフローのリスクを軽減します。実行可能部分外で実行しようとするプログラムコード(バッファオーバーフロー悪用で投入された悪意のあるコードなど)は分割化失敗を発生し、終了します。 Execshield には、AMD64 プラットフォーム上のNo eXecute(NX)技術と Itanium 及び Intel® EM64T システム上の eXecute Disable (XD)技術へのサポートが含まれます。これらの技術は ExecShield と共に機能して悪意のあるコードが実行可能コードの4kb 区分を持つ仮想メモリの実行可能部分で実行するのを阻止して、見えないバッファオーバーフローの悪用からの攻撃のリスクを低減します。 ExecShield と NX あるいは XD 技術に関する詳細は、Red Hat Enterprise Linux v.3 の新セキュリティ強化と題された白書を参照して下さい。以下の URL で見ることが出来ます: |
ネットワーク上で攻撃を受ける可能性を制限するには、使用していないサービスを全てオフにしてください。
セキュリティを強化する為に、Red Hat Enterprise Linux でインストールされているほとんどのネットワークサービスはデフォルトでオフになっています。但し、幾つか例外があります:
cupsd — Red Hat Enterprise Linux 用デフォルトの印刷サーバー
lpd — 代替の印刷サーバー
xinetd — vsftpd や telnetなど、従属サーバーのホストへの接続を制御するスーパーサーバーです。
sendmail — デフォルトでは Sendmail メールトランスポートエージェントが有効になっていますが、 localhostからの接続のみリスニングします。
sshd — Telnet のセキュアな代替となる OpenSSHサーバー
これらのサービスを実行したまましておくかどうかを決めるときは、常識を持って判断し、注意しすぎる位がベストです。例えば、プリンタが利用できない場合にはcupsd を実行したままにしておかないようにします。portmap についても同じです。NFSv3 ボリュームをマウントしなかったり NIS(ypbindサービス)を使用しない場合には、portmapは無効にしてください。
Red Hat Enterprise Linux ではサービスをオン/オフに切り替えるようデザインされた 3つのプログラムを配付しています。サービス設定ツール (system-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
rwhod
sendmail
smb (Samba)
yppasswdd
ypserv
ypxfrd
ネットワークサービスの安全確保に関する詳細は、章5章にあります。
次のセクションでは、シンプルなファイアウォールを設定するのに利用できる ツールについて説明します。