19.4. 配置示例


19.4.1. Squid 连接到非标准端口

以下示例提供了 SELinux 如何通过强制上述布尔值补充 Squid 的真实演示,默认情况下仅允许访问某些端口。此示例随后将演示如何更改 布尔值并演示允许访问。
请注意,这只是一个示例,并演示 SELinux 如何影响简单的 Squid 配置。Squid 综合文档已超出本文档的讨论范畴。详情请查看官方 Squid 文档。此示例假定 Squid 主机有两个网络接口,即 Internet 访问,并且任何防火墙已配置为允许使用 Squid 侦听的默认 TCP 端口(TCP 3128)对内部接口进行访问。
  1. 确认已安装了 squid
    ~]$ rpm -q squid
    package squid is not installed
    
    如果没有安装该软件包,以 root 用户身份使用 yum 工具进行安装:
    ~]# yum install squid
  2. 编辑主配置文件 /etc/squid/squid.conf,并确认 cache_dir 指令已取消注释,并类似于以下内容:
    cache_dir ufs /var/spool/squid 100 16 256
    
    此行指定要在本示例中使用的 cache_dir 指令的默认设置;它由 Squid 存储格式(ufs)、缓存所在的系统上的目录(/var/spool/squid)、要用于缓存的磁盘空间量(100),最后是要创建缓存的第一个级别和第二级缓存目录的数量(分别为16256 )。
  3. 在同一配置文件中,确保 http_access allow localnet 指令已取消注释。这允许来自 localnet ACL 的流量,该流量在 Red Hat Enterprise Linux 上的 Squid 的默认安装中自动配置。它将允许任何现有 RFC1918 网络上的客户端计算机通过代理进行访问,这足以满足这个简单示例。
  4. 在同一配置文件中,确保 visible_hostname 指令已取消注释,并且配置为计算机的主机名。该值应该是主机的完全限定域名(FQDN):
    visible_hostname squid.example.com
    
  5. 以 root 用户身份,输入以下命令启动 squid 守护进程:因为第一次启动 squid 时,这个命令会按照 cache_dir 指令中指定的缓存目录的初始缓存目录,然后启动守护进程:
    ~]# systemctl start squid.service
    确保 squid 已成功启动。输出将包括以下信息,只有时间戳会有所不同:
    ~]# systemctl status squid.service
    squid.service - Squid caching proxy
       Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled)
       Active: active (running) since Thu 2014-02-06 15:00:24 CET; 6s ago
    
  6. 确认 squid 进程 ID (PID)已作为受限服务启动,如 squid_var_run_t 值所示:
    ~]# ls -lZ /var/run/squid.pid 
    -rw-r--r--. root squid unconfined_u:object_r:squid_var_run_t:s0 /var/run/squid.pid
    
  7. 此时,连接到之前配置的 localnet ACL 的客户端机器可以成功使用此主机的内部接口作为其代理。这可以在适用于所有常见 Web 浏览器或系统范围的设置中配置。Squid 现在侦听目标计算机的默认端口(TCP 3128),但目标计算机将仅允许通过通用端口与 Internet 上的其他服务的传出连接。这是由 SELinux 本身定义的策略。SELinux 将拒绝对非标准端口的访问,如下一步中所示:
  8. 当客户端通过 Squid 代理(如侦听 TCP 端口 10000 的网站)使用非标准端口发出请求时,会记录类似如下的拒绝:
    SELinux is preventing the squid daemon from connecting to network port 10000
    
  9. 要允许此访问,必须修改 squid_connect_any 布尔值,因为它默认是禁用的:
    ~]# setsebool -P squid_connect_any on
    注意
    如果您不希望 setsebool 更改在重启后保留,请不要使用 the -P 选项。
  10. 现在,客户端可以访问 Internet 上的非标准端口,因为现在允许 Squid 代表其客户端发起到任何端口的连接。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.