系统管理指南:IP 服务

Procedure如何使用 IPsec 保护 Web 服务器使之免受非 Web 通信影响

安全的 Web 服务器允许 Web 客户机与 Web 服务对话。在安全的 Web 服务器上,不属于 Web 通信的通信必须通过安全检查。以下过程会跳过 Web 通信。此外,此 Web 服务器可以发出不安全的 DNS 客户机请求。所有其他通信都需要使用 AES 和 SHA-1 算法的 ESP。

开始之前

必须位于全局区域中才能配置 IPsec 策略。对于专用 IP 区域,请在非全局区域中配置 IPsec 策略。您已完成了如何使用 IPsec 保证两个系统之间的通信安全,因此实际环境符合以下状况:

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”


    注 –

    远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。


  2. 确定哪些服务需要跳过安全策略检查。

    对于 Web 服务器,这些服务包括 TCP 端口 80 (HTTP) 和 443 (安全 HTTP)。如果 Web 服务器提供 DNS(域名系统)名称查找,则服务器还可能需要针对 TCP(传输控制协议)和 UDP(用户数据报协议)包括端口 53。

  3. 为 Web 服务器创建 IPsec 策略,并将其启用。

    对于所有 Solaris 发行版,步骤 12 均是可选的。

  4. 将 Web 服务器策略添加到 IPsec 策略文件。

    将以下行添加到 /etc/inet/ipsecinit.conf 文件:


    # 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 AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    此配置仅允许安全通信访问系统,跳过检查的例外情况在步骤 4 中进行了介绍。

  5. 检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 刷新 IPsec 策略。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  7. 刷新 IPsec 的密钥。

    您的设置已完成。(可选)您可以执行步骤 12

  8. /etc/inet 目录中为 Web 服务器策略创建一个文件。


    注 –

    以下步骤用于配置运行 Solaris 10 4/09 发行版之前的发行版的 Web 服务器。


    为此文件指定一个表明其用途的名称,例如 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 AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    此配置仅允许安全通信访问系统,跳过检查的例外情况在步骤 4 中进行了介绍。

  9. 将您在步骤 8 中创建的文件的内容复制到 /etc/inet/ipsecinit.conf 文件中。

  10. 使用只读权限保护 IPsecWebInitFile 文件。


    # chmod 400 IPsecWebInitFile
    
  11. 在不重新引导的情况下保证 Web 服务器的安全。

    选择以下选项之一:

    • 如果您使用 IKE 管理密钥,请停止并重新启动 in.iked 守护进程。


      # pkill in.iked
      # /usr/lib/inet/in.iked
      
    • 如果您手动管理密钥,请使用 ipseckeyipsecconf 命令。

      请使用 IPsecWebInitFile 作为 ipsecconf 命令的参数。如果您使用 ipsecinit.conf 文件作为参数,则当文件中的策略已经在系统上实现时,ipsecconf 命令会生成错误。


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

    注意 – 注意 –

    在执行 ipsecconf 命令时应阅读警告。已锁定的套接字(即已使用的套接字)提供了通向系统的不安全的后门。有关更广泛的讨论,请参见ipsecinit.confipsecconf 的安全注意事项。该警告也适用于重新启动 in.iked 守护进程。


    您也可以重新引导。重新引导可确保 IPsec 策略在所有 TCP 连接上都有效。重新引导时,TCP 连接使用 IPsec 策略文件中的策略。

  12. (可选的)使远程系统与 Web 服务器进行非 Web 通信。

    在远程系统的 ipsecinit.conf 文件中键入以下策略:


    # Communicate with web server about nonweb stuff
    #
    {laddr webserver} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    仅当系统的 IPsec 策略匹配时,远程系统才能与 Web 服务器安全地进行非 Web 通信。