4.8. 使用 stunnel
stunnel 程序是客户端和服务器之间的加密打包程序。它监听其配置文件中指定的端口,用客户端加密 communitation,并将数据转发到侦听其常用端口的原始守护进程。这样,您可以保护自身不支持任何类型的加密的服务,或者提高使用您要避免的加密类型的服务的安全性,如 SSL 版本 2 和 3,受 POODLE SSL 漏洞(CVE-2014-3566)的影响。详情请查看 https://access.redhat.com/solutions/1234773。CUPS 是一个组件示例,它没有提供在其自己的配置中禁用 SSL 的方法。
4.8.1. 安装 stunnel
以
root
身份输入以下命令安装 stunnel 软件包:
~]# yum install stunnel
4.8.2. 将 stunnel 配置为 TLS Wrapper
要配置 stunnel,请按照以下步骤执行:
- 无论您使用哪个服务,您需要 stunnel 的有效证书。如果您没有合适的证书,您可以应用到 证书颁发机构 来获取一个证书,或者您可以创建自签名证书。警告始终将由证书颁发机构签名的证书用于生产环境中运行的服务器。自签名证书仅适用于测试目的或专用网络。有关证书颁发机构授予的证书的更多信息,请参阅 第 4.7.2.1 节 “创建证书签名请求”。另一方面,要为 stunnel 创建自签名证书,请输入
/etc/pki/tls/certs/
目录,并以root
用户身份运行以下命令:certs]# make stunnel.pem
回答所有问题以完成该过程。 - 当您有证书时,为 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]
- 服务定义的开头;此行下面使用的选项仅适用于给定服务,而上述选项则全局影响 stunnelaccept
- 要侦听的端口connect
- 要连接到的端口;这必须是您要保护的服务的端口TIMEOUTclose
- 从客户端等待 close_notify 警报的秒数;0
指示 stunnel 不会被等待options
- OpenSSL 库选项
例 4.3. 保护 CUPS
要将 stunnel 配置为 CUPS 的 TLS 包装程序,请使用以下值:[cups] accept = 632 connect = 631
您可以使用您喜欢的任何空闲端口,而不是632
。631
是 CUPS 通常使用的端口。 - 创建
chroot
目录,并授予setuid
选项对其写入访问权限所指定的用户。要做到这一点,请以root
用户身份输入以下命令:~]# mkdir /var/run/stunnel ~]# chown nobody:nobody /var/run/stunnel
这允许 stunnel 创建 PID 文件。 - 如果您的系统使用不允许访问新端口的防火墙设置,请相应地更改它们。详情请查看 第 5.6.7 节 “使用 GUI 打开端口”。
- 当您创建配置文件和
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,然后再次启动它以使更改生效。