検索

48.2. サーバーセキュリティー

download PDF
システムがパブリックネットワークのサーバーとして使用されると、攻撃のターゲットになります。システムを強化し、サービスをロックダウンすることは、システム管理者にとって最も重要なことです。
特定の問題を解決する前に、サーバーセキュリティーの強化に関する以下の一般的なヒントを確認してください。
  • 最新の脅威から保護するために、すべてのサービスを最新の状態に保ちます。
  • 可能な限りセキュアなプロトコルを使用します。
  • 可能な場合は、マシンごとに 1 つのタイプのネットワークサービスのみを提供します。
  • 疑わしいアクティビティーのために、すべてのサーバーを慎重に監視します。

48.2.1. TCP Wrapper と xinetd を使用したサービスの保護

TCP Wrapper は、さまざまなサービスにアクセス制御を提供します。SSH、Telnet、FTP などの最新のネットワークサービスのほとんどは、受信要求と要求されたサービスの間の保護を表す TCP Wrappers を利用します。
TCP Wrapper が提供する利点は、xinetd と併用すると、追加のアクセス、ロギング、バインディング、リダイレクト、およびリソース使用状況の制御を提供するスーパーサーバーである xinetd と併用すると強化されます。
ヒント
iptables ファイアウォールルールを TCP Wrapper と xinetd と併用して、サービスアクセス制御内に冗長性を作成することが推奨されます。iptables コマンドでのファイアウォールの実装に関する詳細は、「ファイアウォール」 を参照してください。
TCP Wrapper および xinetd の設定に関する詳細は、「」 を参照してください。
以下のサブセクションでは、各トピックに関する基本的な知識と、特定のセキュリティーオプションに焦点を当てていることを前提としています。

48.2.1.1. TCP Wrapper を使用したセキュリティーの強化

TCP Wrapper の機能は、サービスへのアクセスを拒否するだけではありません。このセクションでは、これらを使用して接続バナーを送信し、特定のホストからの攻撃を警告し、ロギング機能を強化する方法を説明します。TCP Wrapper 機能と制御言語の詳細は、hosts_options の man ページを参照してください。
48.2.1.1.1. TCP Wrapper と接続バナー
ユーザーがサービスに接続する際に適切なバナーを表示することは、潜在的な攻撃者に対して、システム管理者が警戒していることを知らせる良い方法です。システムに関するどの情報をユーザーに表示するかを制御することもできます。サービスに TCP Wrapper バナーを実装するには、banner オプションを使用します。
以下の例では、vsftpdにバナーを導入します。最初にバナーファイルを作成します。これは、システム上のどこにあってもかまいませんが、デーモンと同じ名前である必要があります。この例では、ファイルは /etc/banners/vsftpd と呼ばれ、以下の行が含まれます。
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges being removed.
%c トークンは、ユーザー名、ホスト名、ユーザー名および IP アドレスなどのさまざまなクライアント情報を提供し、接続をより意図した状態にします。
このバナーを受信接続に表示するには、/etc/hosts.allow ファイルに次の行を追加します。
vsftpd : ALL : banners /etc/banners/
48.2.1.1.2. TCP Wrapper と攻撃警告
特定のホストまたはネットワークがサーバーを攻撃していることが検出された場合、TCP Wrapper を使用して、spawn ディレクティブを使用したそのホストまたはネットワークからの後続の攻撃について管理者に警告できます。
この例では、206.182.68.0/24 ネットワークからサーバーを攻撃しようとするクラッカーが検出されたと仮定します。/etc/hosts.deny ファイルに次の行を配置して、そのネットワークからの接続試行を拒否し、その試行を特別なファイルに記録します。
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert
%d トークンは、攻撃者がアクセスしようとしたサービスの名前を提供します。
接続を許可してログに記録するには、spawn ディレクティブを /etc/hosts.allow ファイルに配置します。
注記
spawn ディレクティブはシェルコマンドを実行するため、特定のクライアントがサーバーに接続しようとすると、管理者に通知するか、コマンドチェーンを実行する特別なスクリプトを作成します。
48.2.1.1.3. TCP Wrapper とロギングの強化
特定のタイプの接続が他のタイプよりも懸念される場合は、重大度 オプションを使用して、そのサービスのログレベルを上げることができます。
この例では、FTP サーバーのポート 23 (Telnet ポート) に接続しようとしている人はクラッカーであると想定します。これを示すには、ログファイルにデフォルトのフラグ info の代わりに emerg フラグを配置し、接続を拒否します。
これを行うには、次の行を /etc/hosts.deny に配置します。
in.telnetd : ALL : severity emerg
これは、デフォルトの authpriv ログ機能を使用しますが、優先度をデフォルト値の info から emerg に上げます。これにより、ログメッセージがコンソールに直接送信されます。

48.2.1.2. xinetd でのセキュリティーの強化

本セクションでは、xinetd を使用してトラップサービスを設定し、それを使用して任意の xinetd サービスで利用可能なリソースレベルを制御することに重点を置いています。サービスのリソース制限を設定すると、DoS( Denial of Service )攻撃に役立ちます。利用可能なオプションの一覧は、xinetd および xinetd.conf の man ページを参照してください。
48.2.1.2.1. トレイトの設定
xinetd の重要な機能の 1 つは、ホストをグローバル no_access リストに追加する機能です。このリストのホストは、指定された期間、または xinetd が再起動するまで、xinetd が管理するサービスへの後続の接続を拒否します。これは、SENSOR 属性を使用して実行できます。これは、サーバー上のポートをスキャンしようとするホストを簡単にブロックする方法です。
SENSOR の設定の最初の手順は、使用を計画しないサービスを選択することです。この例では、Telnet が使用されます。
/etc/xinetd.d/telnet ファイルを編集し、フラグ の行を次のように変更します。
flags           = SENSOR
以下の行を追加します。
deny_time       = 30
これにより、そのホストによる 30 分間接続試行が拒否されます。deny_time 属性の他の許容値は FOREVER です。これは、xinetd が再起動するまで ban を有効になり、NEVER は接続を許可し、ログに記録します。
最後に、最後の行が表示されるはずです。
disable         = no
これにより、トラップ自体が有効になります。
SENSOR の使用は、望ましくないホストからの接続を検出および停止するのに適した方法として、2 つの欠点があります。
  • Stealth スキャンでは機能しません。
  • SENSOR が実行されていることがわかっている攻撃者は、IP アドレスを改ざんし、禁止されたポートに接続することで、特定のホストに対してサービス拒否攻撃をマウントすることができます。
48.2.1.2.2. サーバーリソースの制御
xinetd のもう 1 つの重要な機能は、その制御下でサービスのリソース制限を設定する機能です。
これは、以下のディレクティブを使用して行います。
  • CPs = <number_of_connections> <wait_period&gt; - 受信接続のレートを制限します。このディレクティブは 2 つの引数を取ります。
    • <number_of_connections >: 処理する 1 秒あたりの接続数。受信接続のレートがこれよりも大きい場合、サービスは一時的に無効になります。デフォルト値は 15 (50)です。
    • <wait_period >: 無効にした後にサービスを再度有効にするまで待機する秒数。デフォルトの間隔は 10 秒です。
  • instances = <number_of_connections> - サービスに対して許可される接続の総数を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。
  • per_source = <number_of_connections>: 各ホストがサービスに対して許可される接続の数を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。
  • rlimit_as = <number[K|M]&gt;: サービスがキロバイトまたはメガバイトで占有できるメモリーアドレス空間の量を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。
  • rlimit_cpu = <number_of_seconds& gt;: サービスが CPU を占有する時間を秒単位で指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。
これらのディレクティブを使用すると、1 つの xinetd サービスがシステムに圧倒されなくなり、サービス拒否が発生する可能性があります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.