IPsec と IKE の管理

Web サーバーを保護する方法

セキュリティ保護された Web サーバーでは、Web クライアントであれば Web サービスと通信できます。セキュリティ保護された Web サーバーでは、Web トラフィック以外のトラフィックは、セキュリティ検査を通る「必要があります」。次の手順には、Web トラフィックの検査省略手順が含まれています。さらに、この Web サーバーでは、セキュリティ保護されていない DNS クライアント要求を出すことができます。その他のすべてのトラフィックでは、Blowfish と SHA アルゴリズムによる ESP が必要です。その他のトラフィックではさらに、アウトバウンドトラフィックに共有 SA を使用します。共有 SA を使用すると、生成しなければならない SA の数が少なくて済みます。

  1. システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。


    注 –

    リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。


  2. セキュリティポリシー検査を省略するサービスを指定します。

    Web サーバーの場合、TCP ポート 80 (HTTP) と 443 (保護 HTTP) が該当します。Web サーバーが DNS 名検査をするときは、TCP と UDP の両方にポート 53 も組み込む必要がある場合もあります。

  3. Web サーバーポリシー用のファイルを /etc/inet ディレクトリに 作成します。このファイルにその目的を表す名前を与えます (たとえば、IPsecWebInitFile)。このファイルに次のように入力します。


    # Web traffic that web server should bypass.
    	{lport  80 ulp tcp dir both} bypass {}
    	{lport 443 ulp tcp dir both} bypass {}
    
    	# Outbound DNS lookups should also be bypassed.
    	{rport 53 dir both} bypass {}
    
    	# Require all other traffic to use ESP with Blowfish and SHA-1.
    	# Use a shared SA for outbound traffic, in order to avoid a
    	# large supply of security associations.
    	{} permit {encr_algs blowfish encr_auth_algs sha}
    	{} apply {encr_algs blowfish encr_auth_algs sha sa shared}

    これで、保護トラフィックだけがシステムにアクセスできるようになります。ただし、手順 2 で説明した検査を省略するトラフィックは例外です。

  4. 手順 3 で作成したファイルを /etc/inet/ipsecinit.conf ファイルに読み込みます。


    # vi  /etc/inet/ipsecinit.conf 
     :r IPsecWebInitFile
     :wq!
  5. IPsecWebInitFile ファイルを読み取り専用アクセス権で保護します。


    # chmod 400 IPsecWebInitFile
    
  6. リブートせずに Web サーバーをセキュリティ保護します。次のオプションのどちらか 1 つを選択します。

    • キー管理に IKE を使用する場合は、in.iked デーモンをいったん停止後、再起動します。


      # pkill in.iked
      # /usr/lib/inet/in.iked
      
    • 手動でキーを管理する場合は、ipseckey および ipsecconf コマンドを実行します。


      # ipseckey -f /etc/inet/secret/ipseckeys 
      # ipsecconf -a /etc/inet/IPsecWebInitFile 
      

      ipsecinit.conf ファイル内にエントリがある場合は、再度読み込むときエラーが発生します。


    注意 – 注意 –

    ipsecconf コマンドの実行時には警告を読んでください。ソケットがすでにラッチされている (使用されている) 場合には、システムへ侵入される恐れがあります。詳細については、ipsecinit.confipsecconf のセキュリティについてを参照してください。in.iked デーモンの再起動時にも、同じ警告が表示されます。


    リブートすることもできます。システムをリブートすると、IPsec ポリシーがすべての TCP 接続に適用されます。リブート時に、IPsec ポリシーのファイルで指定したポリシーが TCP 接続で使用されます。

    これで、Web サーバーでは、Web サーバートラフィックとアウトバウンド DNS 要求と応答だけを処理するようになりました。他のサービスは、IPsec をリモートシステムで有効にしないと機能しません。

  7. (省略可能) リモートシステムと非 Web トラフィックを持つ Web サーバーとの通信を可能にするには、リモートシステムの ipsecinit.conf ファイルに次のポリシーを追加します。

    IPsec ポリシーが一致した場合にかぎり、リモートシステムは、非 Web トラフィックを持つ Web サーバーと安全に通信できます。


    # Communicate with web server about nonweb stuff
    #
    {saddr webserver} permit {encr_algs blowfish encr_auth_algs sha}
    {saddr webserver} apply {encr_algs blowfish encr_auth_algs sha sa shared}