搜索

4.8. 使用 stunnel

download PDF
stunnel 程序是客户端和服务器之间的加密打包程序。它监听其配置文件中指定的端口,用客户端加密 communitation,并将数据转发到侦听其常用端口的原始守护进程。这样,您可以保护自身不支持任何类型的加密的服务,或者提高使用您要避免的加密类型的服务的安全性,如 SSL 版本 2 和 3,受 POODLE SSL 漏洞(CVE-2014-3566)的影响。详情请查看 https://access.redhat.com/solutions/1234773CUPS 是一个组件示例,它没有提供在其自己的配置中禁用 SSL 的方法。

4.8.1. 安装 stunnel

root 身份输入以下命令安装 stunnel 软件包:
~]# yum install stunnel

4.8.2. 将 stunnel 配置为 TLS Wrapper

要配置 stunnel,请按照以下步骤执行:
  1. 无论您使用哪个服务,您需要 stunnel 的有效证书。如果您没有合适的证书,您可以应用到 证书颁发机构 来获取一个证书,或者您可以创建自签名证书。
    警告
    始终将由证书颁发机构签名的证书用于生产环境中运行的服务器。自签名证书仅适用于测试目的或专用网络。
    有关证书颁发机构授予的证书的更多信息,请参阅 第 4.7.2.1 节 “创建证书签名请求”。另一方面,要为 stunnel 创建自签名证书,请输入 /etc/pki/tls/certs/ 目录,并以 root 用户身份运行以下命令:
    certs]# make stunnel.pem
    回答所有问题以完成该过程。
  2. 当您有证书时,为 stunnel 创建配置文件。它是每行指定一个选项或服务定义开头的文本文件。您还可以在文件中保留注释和空行,以改进其法定性,其中注释以分号开头。
    stunnel RPM 软件包包含 /etc/stunnel/ 目录,您可以在其中存储配置文件。虽然 stunnel 不需要文件名或其扩展名的任何特殊格式,请使用 /etc/stunnel/stunnel.conf。以下内容将 stunnel 配置为 TLS 包装器:
    cert = /etc/pki/tls/certs/stunnel.pem
    ; Allow only TLS, thus avoiding SSL
    sslVersion = TLSv1
    chroot = /var/run/stunnel
    setuid = nobody
    setgid = nobody
    pid = /stunnel.pid
    socket = l:TCP_NODELAY=1
    socket = r:TCP_NODELAY=1
    
    [service_name]
    accept = port
    connect = port
    TIMEOUTclose = 0
    或者,您可以通过使用以下行替换包含 sslVersion = TLSv1 的行来避免 SSL:
    options = NO_SSLv2
    options = NO_SSLv3
    选项的目的如下:
    • cert - 证书的路径
    • sslVersion - SSL 的版本;请注意,您可以使用 TLS,即使 SSL 和 TLS 是两个独立的加密协议
    • chroot - 更改在其中运行 stunnel 进程的根目录,以便提高安全性
    • setuid, setgid - stunnel 进程的用户和组作为运行; nobody 是一个受限系统帐户
    • pid - stunnel 文件保存其进程 ID,相对于 chroot
    • socket - 本地和远程套接字选项 ; 在这种情况下,禁用 Nagle 的算法 来提高网络延迟
    • [service_name] - 服务定义的开头;此行下面使用的选项仅适用于给定服务,而上述选项则全局影响 stunnel
    • accept - 要侦听的端口
    • connect - 要连接到的端口;这必须是您要保护的服务的端口
    • TIMEOUTclose - 从客户端等待 close_notify 警报的秒数; 0 指示 stunnel 不会被等待
    • options - OpenSSL 库选项

    例 4.3. 保护 CUPS

    要将 stunnel 配置为 CUPS 的 TLS 包装程序,请使用以下值:
    [cups]
    accept = 632
    connect = 631
    您可以使用您喜欢的任何空闲端口,而不是 632631CUPS 通常使用的端口。
  3. 创建 chroot 目录,并授予 setuid 选项对其写入访问权限所指定的用户。要做到这一点,请以 root 用户身份输入以下命令:
    ~]# mkdir /var/run/stunnel
    ~]# chown nobody:nobody /var/run/stunnel
    这允许 stunnel 创建 PID 文件。
  4. 如果您的系统使用不允许访问新端口的防火墙设置,请相应地更改它们。详情请查看 第 5.6.7 节 “使用 GUI 打开端口”
  5. 当您创建配置文件和 chroot 目录后,当您确定指定的端口可以访问后,就可以开始使用 stunnel

4.8.3. 启动、停止和重启 stunnel

要启动 stunnel,请以 root 用户身份输入以下命令:
~]# stunnel /etc/stunnel/stunnel.conf
默认情况下,s tunnel 使用 /var/log/secure 来记录其输出。
要终止 stunnel,以 root 用户身份运行以下命令终止进程:
~]# kill `cat /var/run/stunnel/stunnel.pid`
如果在 stunnel 运行时编辑配置文件,请终止 stunnel,然后再次启动它以使更改生效。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.