「強化されたCGIセキュリティと認証」の版間の差分

提供: Nagios 3翻訳プロジェクト Wiki
移動: 案内検索
(ページの作成: == 強化されたCGIセキュリティと認証 == <STRONG><U>イントロダクション</U></STRONG> <P> これはより強い認証と、CGIウェブインタフェース…)
 
 
(同じ利用者による、間の1版が非表示)
19行目: 19行目:
  
 
<LI><STRONG>ダイジェスト認証を使用するより強い認証</STRONG>
 
<LI><STRONG>ダイジェスト認証を使用するより強い認証</STRONG>
   もしあなたが[href="http://nagios.sourceforge.net/docs/3_0/quickstart.html"|クイックスタートガイド]
+
   もしあなたが[http://nagios.sourceforge.net/docs/3_0/quickstart.html クイックスタートガイド]
 
   に沿って設定を進めたなら、Apacheの
 
   に沿って設定を進めたなら、Apacheの
   [href="http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html"|BASIC認証]
+
   [http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html BASIC認証]
 
   を使っているでしょう。
 
   を使っているでしょう。
 
   Basic認証はIDとパスワードを「プレーンテキスト」で送ります。
 
   Basic認証はIDとパスワードを「プレーンテキスト」で送ります。
29行目: 29行目:
 
<LI><STRONG>全てのWebアクセスでTLS/SSLを強制する</STRONG>
 
<LI><STRONG>全てのWebアクセスでTLS/SSLを強制する</STRONG>
 
   Apacheは
 
   Apacheは
   [href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html"|mod_ssl]
+
   [http://httpd.apache.org/docs/2.2/mod/mod_ssl.html mod_ssl]
 
   モジュールによって
 
   モジュールによって
   [href="http://en.wikipedia.org/wiki/Transport_Layer_Security"|TLS/SSL]
+
   [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS/SSL]
 
   を提供します。
 
   を提供します。
 
   TLS/SSLは公開鍵/秘密鍵による暗号を使ってクライアントとサーバ間で安全なトンネルを張ることにより、
 
   TLS/SSLは公開鍵/秘密鍵による暗号を使ってクライアントとサーバ間で安全なトンネルを張ることにより、
45行目: 45行目:
  
 
<P>Digest認証を使うのは簡単です。
 
<P>Digest認証を使うのは簡単です。
[href="http://httpd.apache.org/docs/2.2/programs/htdigest.html"|'htdigest']
+
[http://httpd.apache.org/docs/2.2/programs/htdigest.html 'htdigest']
 
ツールを使って新しいパスワードファイルを作成し、Nagios用のApacheの設定(一般に/etc/httpd/conf.d/nagios.conf)
 
ツールを使って新しいパスワードファイルを作成し、Nagios用のApacheの設定(一般に/etc/httpd/conf.d/nagios.conf)
 
を修正すればよいのです。
 
を修正すればよいのです。
 
</P>
 
</P>
 
<P>
 
<P>
[href="http://httpd.apache.org/docs/2.2/programs/htdigest.html"|'htdigest']ツールを
+
[http://httpd.apache.org/docs/2.2/programs/htdigest.html 'htdigest']ツールを
 
使って新しいパスワードファイルを作成してください。
 
使って新しいパスワードファイルを作成してください。
[href="http://httpd.apache.org/docs/2.2/programs/htpasswd.html"|'htpasswd'] ツールを
+
[http://httpd.apache.org/docs/2.2/programs/htpasswd.html 'htpasswd'] ツールを
 
よく知っているのなら、htdigestではレルム引数を指定する必要があるという違いに気付くでしょう。
 
よく知っているのなら、htdigestではレルム引数を指定する必要があるという違いに気付くでしょう。
 
レルムはApacheの設定の'AuthName'ディレクティブの値に相当します。
 
レルムはApacheの設定の'AuthName'ディレクティブの値に相当します。
126行目: 126行目:
 
<STRONG><U>強制的にTLS/SSLを使わせる</U></STRONG>
 
<STRONG><U>強制的にTLS/SSLを使わせる</U></STRONG>
 
<P>必ずApacheとOpenSSLをインストールしてください。デフォルトで
 
<P>必ずApacheとOpenSSLをインストールしてください。デフォルトで
[href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html"|mod_ssl]を使用するように
+
[http://httpd.apache.org/docs/2.2/mod/mod_ssl.html mod_ssl]を使用するように
 
設定する必要があり、もし設定方法がわからなければ
 
設定する必要があり、もし設定方法がわからなければ
[href="http://httpd.apache.org/docs/2.0/ssl"|TLS/SSL Encryption Documentation]
+
[http://httpd.apache.org/docs/2.0/ssl TLS/SSL Encryption Documentation]
 
が役に立つかもしれません。
 
が役に立つかもしれません。
 
</P>
 
</P>
135行目: 135行目:
 
ことを確認してください。HTTPSの使用を強制して、HTTPでのアクセスをブロックできれば次のステップに進むことが
 
ことを確認してください。HTTPSの使用を強制して、HTTPでのアクセスをブロックできれば次のステップに進むことが
 
できます。もし設定につまずいているのなら
 
できます。もし設定につまずいているのなら
[href="http://httpd.apache.org/docs/2.0/ssl"|TLS/SSL Encryption Documentation]を見るか
+
[http://httpd.apache.org/docs/2.0/ssl TLS/SSL Encryption Documentation]を見るか
 
ググって(googleで検索すること)ください。
 
ググって(googleで検索すること)ください。
 
</P>
 
</P>
184行目: 184行目:
  
 
<P>以下はApacheの
 
<P>以下はApacheの
[href="http://httpd.apache.org/docs/2.2/howto/access.html"|アクセス制御]
+
[http://httpd.apache.org/docs/2.2/howto/access.html アクセス制御]
 
を使って、特定のIPアドレス、IPアドレスの範囲、IPサブネットでNagiosのCGIに制限を
 
を使って、特定のIPアドレス、IPアドレスの範囲、IPサブネットでNagiosのCGIに制限を
 
かける例です。
 
かける例です。
252行目: 252行目:
 
   <BR><BR>
 
   <BR><BR>
 
   <LI><STRONG>TLS/SSLは本来
 
   <LI><STRONG>TLS/SSLは本来
   "[href="http://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E8%80%85%E6%94%BB%E6%92%83"|中間者攻撃]"
+
   "[http://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E8%80%85%E6%94%BB%E6%92%83 中間者攻撃]"
 
   のためにある。</STRONG>例えば攻撃者がサーバとクライアントの間でフィッシング攻撃、ISPモニタリング、
 
   のためにある。</STRONG>例えば攻撃者がサーバとクライアントの間でフィッシング攻撃、ISPモニタリング、
 
   もしくは社内FW証明書破棄をでできるなら中間者攻撃に対して脆弱です。
 
   もしくは社内FW証明書破棄をでできるなら中間者攻撃に対して脆弱です。
259行目: 259行目:
 
   <LI><STRONG>Apacheのアクセス制御はHTTP/HTTPSのみに有効である。</STRONG>
 
   <LI><STRONG>Apacheのアクセス制御はHTTP/HTTPSのみに有効である。</STRONG>
 
   強固なシステムにするべく広範囲にわたり制限をかけたいなら
 
   強固なシステムにするべく広範囲にわたり制限をかけたいなら
   [href="http://www.netfilter.org/projects/iptables/index.html"|IPtables]
+
   [http://www.netfilter.org/projects/iptables/index.html IPtables]
 
   を使うべし。
 
   を使うべし。
 
   <BR><BR>
 
   <BR><BR>
 
   <LI><STRONG>もっとも重要なのは、常日頃セキュリティの動向について探求する事です!
 
   <LI><STRONG>もっとも重要なのは、常日頃セキュリティの動向について探求する事です!
   "[href="http://www.grc.com/securitynow.htm"|Security Now!]"
+
   "[http://www.grc.com/securitynow.htm Security Now!]"
 
   などがよいですよ。
 
   などがよいですよ。
 
   <BR><BR>
 
   <BR><BR>
 
</UL>
 
</UL>

2010年8月8日 (日) 17:20時点における最新版

強化された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とパスワードを扱わない。

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

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

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

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

      </UL>