強化されたCGIセキュリティと認証

出典: Nagios 3翻訳プロジェクト Wiki

強化されたCGIセキュリティと認証

イントロダクション

これはより強い認証と、CGIウェブインタフェースの周りで集中しているサーバセキュリティ の実現のための序論であることを意図します。

あなたの監視サーバとNagios環境のセキュリティを高める多くの方法があります。 これを、セキュリティへの全てのアプローチの終わりとしてみなすべきではありません。 代わりに、あなたがあなたのシステムのセキュリティをきびしくするのに使用できるテクニックのいくつかへの序論としてそれを考えてください。 いつものように、あなたはあなたの研究をして、利用可能な最も良いテクニックを使用するべきです。 あなたの監視サーバをあなたのネットワークで最も重要なサーバとして扱ってください。そうすればあなたは報いられます。

追加テクニック

  • ダイジェスト認証を使用するより強い認証 もしあなたがクイックスタートガイド に沿って設定を進めたなら、Apacheの BASIC認証 を使っているでしょう。 Basic認証はIDとパスワードを「プレーンテキスト」で送ります。 IDとパスワードのMD5 Hashを作るDigest認証のような、より安全な方法を使うよう検討してください。

  • 全てのWebアクセスでTLS/SSLを強制する Apacheは mod_ssl モジュールによって TLS/SSL を提供します。 TLS/SSLは公開鍵/秘密鍵による暗号を使ってクライアントとサーバ間で安全なトンネルを張ることにより、 トラフィックの盗聴による不正アクセスを防ぎます。

  • Apacheのアクセス制御で制限する IPアドレス、IPアドレス範囲またはIPサブネットでNagiosへのアクセスを制限することを検討してください。 外部からアクセスする必要があるのなら、VPNかSSHトンネルを使ってアクセスすることができます。 これはHTTP/HTTPSでのシステムへのアクセスに於いて、設定が簡単でなおかつ強固なアクセス制限です。
    Digest認証を使う

    Digest認証を使うのは簡単です。 'htdigest' ツールを使って新しいパスワードファイルを作成し、Nagios用のApacheの設定(一般に/etc/httpd/conf.d/nagios.conf) を修正すればよいのです。

    'htdigest'ツールを 使って新しいパスワードファイルを作成してください。 'htpasswd' ツールを よく知っているのなら、htdigestではレルム引数を指定する必要があるという違いに気付くでしょう。 レルムはApacheの設定の'AuthName'ディレクティブの値に相当します。

    htdigest -c /usr/local/nagios/etc/.digest_pw "Nagios Access" nagiosadmin
    

    次に、Nagios用のApacheの設定ファイル(通常 /etc/httpd/conf.d/nagios.conf) の例をあげます。

    ## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
    
    ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
    
    <Directory "/usr/local/nagios/sbin">
    
       Options ExecCGI
    
       AllowOverride None
    
       Order allow,deny
    
       Allow from all
    
       AuthType Digest
    
       AuthName "Nagios Access"
    
       AuthUserFile /usr/local/nagios/etc/.digest_pw
    
       Require valid-user
    
    </Directory>
    
    
    
    Alias /nagios "/usr/local/nagios/share"
    
    <Directory "/usr/local/nagios/share">
    
       Options None
    
       AllowOverride None
    
       Order allow,deny
    
       Allow from all
    
       AuthType Digest
    
       AuthName "Nagios Access"
    
       AuthUserFile /usr/local/nagios/etc/.digest_pw
    
       Require valid-user
    
    </Directory>
    
    ## END APACHE CONFIG SNIPPETS
    
    

    そして、Apacheを再起動して新しい設定を反映させてください。

    /etc/init.d/httpd restart
    

    強制的にTLS/SSLを使わせる

    必ずApacheとOpenSSLをインストールしてください。デフォルトで mod_sslを使用するように 設定する必要があり、もし設定方法がわからなければ TLS/SSL Encryption Documentation が役に立つかもしれません。

    次に、Nagiosのウェブインターフェース(https://your.domain/nagios)を見て、TLS/SSLが有効になっている ことを確認してください。HTTPSの使用を強制して、HTTPでのアクセスをブロックできれば次のステップに進むことが できます。もし設定につまずいているのなら TLS/SSL Encryption Documentationを見るか ググって(googleで検索すること)ください。

    次に、Nagios用のApacheの設定ファイル(通常 /etc/httpd/conf.d/nagios.conf)の 'SSLRequireSSL'ディレクティブに'sbin'と'share'ディレクトリを追加してください。

    ## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
    
    ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
    
    <Directory "/usr/local/nagios/sbin">
    
       ...
    
       SSLRequireSSL
    
       ...
    
    </Directory>
    
    
    
    Alias /nagios "/usr/local/nagios/share"
    
    <Directory "/usr/local/nagios/share">
    
       ...
    
       SSLRequireSSL
    
       ...
    
    </Directory>
    
    ## END APACHE CONFIG SNIPPETS
    
    

    新しい設定を反映させるためにApacheを再起動してください。

    /etc/init.d/httpd restart
    

    IPサブネットでの制限

    以下はApacheの アクセス制御 を使って、特定のIPアドレス、IPアドレスの範囲、IPサブネットでNagiosのCGIに制限を かける例です。

    以下はNagios用のApacheの設定ファイル(通常 /etc/httpd/conf.d/nagios.conf)に 'Allow'、'Deny'そして'Order'ディレクティブを追加する例です。

    ## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
    
    ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
    
    <Directory "/usr/local/nagios/sbin">
    
       ...
    
       AllowOverride None
    
       Order deny,allow
    
       Deny from all
    
       Allow from 127.0.0.1 10.0.0.25		# Allow single IP addresses
    
       Allow from 10.0.0.0/255.255.255.0		# Allow network/netmask pair
    
       Allow from 10.0.0.0/24			# Allow network/nnn CIDR spec
    
       ...
    
    </Directory>
    
    
    
    Alias /nagios "/usr/local/nagios/share"
    
    <Directory "/usr/local/nagios/share">
    
       ...
    
       AllowOverride None
    
       Order deny,allow
    
       Deny from all
    
       Allow from 127.0.0.1 10.0.0.25		# Allow single IP addresses
    
       Allow from 10.0.0.0/255.255.255.0		# Allow network/netmask pair
    
       Allow from 10.0.0.0/24			# Allow network/nnn CIDR spec
    
       ...
    
    </Directory>
    
    ## END APACHE CONFIG SNIPPET
    

    重要

    • Digest認証はプレーンテキストのIDとパスワードを扱わない。

    • <STRONG>Digest認証はBasic認証と比べて一般的に使われていない。

    • <STRONG>TLS/SSLは本来 "中間者攻撃" のためにある。例えば攻撃者がサーバとクライアントの間でフィッシング攻撃、ISPモニタリング、 もしくは社内FW証明書破棄をでできるなら中間者攻撃に対して脆弱です。 だから証明書確認を研究してください!

    • Apacheのアクセス制御はHTTP/HTTPSのみに有効である。 強固なシステムにするべく広範囲にわたり制限をかけたいなら IPtables を使うべし。

    • もっとも重要なのは、常日頃セキュリティの動向について探求する事です! "Security Now!" などがよいですよ。

      </UL>
  • 個人用ツール