검색

19장. Squiid 캐싱 프록시

download PDF
Squid는 FTP, Gopher 및 HTTP 데이터 개체를 지원하는 웹 클라이언트를 위한 고성능 프록시 캐싱 서버입니다. 자주 요청되는 웹 페이지를 캐싱하고 다시 사용하여 대역폭을 줄이고 응답 시간을 개선합니다.[17]
Red Hat Enterprise Linux에서 squid 패키지는 Squid 캐싱 프록시를 제공합니다. 다음 명령을 입력하여 squid 패키지가 설치되어 있는지 확인합니다.
~]$ rpm -q squid
package squid is not installed
설치되지 않고 squid를 사용하려면 yum 유틸리티를 root로 사용하여 설치합니다.
~]# yum install squid

19.1. Squiid 캐싱 프록시 및 SELinux

SELinux가 활성화되면 Squid는 기본적으로 제한된 상태로 실행됩니다. 제한된 프로세스는 자체 도메인에서 실행되며 다른 제한된 프로세스와 분리됩니다. SELinux 정책 구성에 따라 공격자가 제한된 프로세스가 손상되면 공격자가 리소스에 대한 액세스와 가능한 손상을 제한합니다. 다음 예제에서는 자체 도메인에서 실행되는 Squid 프로세스를 보여줍니다. 이 예제에서는 squid 패키지가 설치되어 있다고 가정합니다.
  1. getenforce 명령을 실행하여 SELinux가 강제 모드로 실행 중인지 확인합니다.
    ~]$ getenforce
    Enforcing
    
    명령은 SELinux가 강제 모드에서 실행 중일 때 Enforcing (강제)을 반환합니다.
  2. root 사용자로 다음 명령을 입력하여 squid 데몬을 시작합니다.
    ~]# systemctl start squid.service
    서비스가 실행 중인지 확인합니다. 출력에는 아래 정보가 포함되어야 합니다(시간 스탬프만 다릅니다).
    ~]# systemctl status squid.service
    squid.service - Squid caching proxy
       Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled)
       Active: active (running) since Mon 2013-08-05 14:45:53 CEST; 2s ago
  3. 다음 명령을 입력하여 squid 프로세스를 확인합니다.
    ~]$ ps -eZ | grep squid
    system_u:system_r:squid_t:s0    27018 ?        00:00:00 squid
    system_u:system_r:squid_t:s0    27020 ?        00:00:00 log_file_daemon
    
    squid 프로세스와 연결된 SELinux 컨텍스트는 system_u:system_r:squid_t:s0입니다. 컨텍스트의 마지막 부분인 squid_t 는 유형입니다. 유형은 프로세스 및 파일의 유형에 대한 도메인을 정의합니다. 이 경우 Squid 프로세스는 squid_t 도메인에서 실행됩니다.
SELinux 정책은 제한된 도메인(예: squid_t )에서 실행되는 프로세스를 파일, 기타 프로세스 및 일반적인 시스템과 상호 작용하는 방법을 정의합니다. squid 액세스를 허용하려면 파일에 올바르게 레이블이 지정되어야 합니다.
squid가 기본 TCP 포트 3128, 3401 또는 4827 이외의 포트에서 수신 대기 하도록 /etc/squid/squid.conf 파일을 구성하는 경우 semanage port 명령을 사용하여 SELinux 정책 구성에 필요한 포트 번호를 추가해야 합니다. 다음 예제에서는 SELinux 정책 구성에 처음에 정의되지 않은 포트에서 수신 대기하도록 squid 를 구성하는 방법을 보여주므로 서버가 시작되지 않습니다. 이 예제에서는 데몬이 정책에 아직 정의되지 않은 비표준 포트에서 수신 대기하도록 SELinux 시스템을 구성하는 방법도 보여줍니다. 이 예에서는 squid 패키지가 설치되어 있다고 가정합니다. 예제에서 root 사용자로 각 명령을 실행합니다.
  1. squid 데몬이 실행 중이 아닌지 확인합니다.
    ~]# systemctl status squid.service
    squid.service - Squid caching proxy
       Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled)
       Active: inactive (dead)
    
    출력이 다르면 프로세스를 중지합니다.
    ~]# systemctl stop squid.service
  2. SELinux가 squid가 수신 대기 할 수 있는 포트를 보려면 다음 명령을 입력합니다.
    ~]# semanage port -l | grep -w -i squid_port_t
    squid_port_t                   tcp      3401, 4827
    squid_port_t                   udp      3401, 4827
    
    
  3. /etc/squid/squid.conf 를 루트로 편집합니다. squid에 대해 SELinux 정책 구성에 구성되지 않은 포트를 나열하도록 http_port 옵션을 구성합니다 . 이 예에서는 데몬이 포트 10000에서 수신 대기하도록 구성되어 있습니다.
    # Squid normally listens to port 3128
    http_port 10000
    
  4. setsebool 명령을 실행하여 squid_connect_any 부울이 off로 설정되어 있는지 확인합니다. 이렇게 하면 squid 가 특정 포트에서만 작동할 수 있습니다.
    ~]# setsebool -P squid_connect_any 0
  5. squid 데몬을 시작합니다.
    ~]# systemctl start squid.service
    Job for squid.service failed. See 'systemctl status squid.service' and 'journalctl -xn' for details.
    
    다음과 유사한 SELinux 거부 메시지가 기록됩니다.
    localhost setroubleshoot: SELinux is preventing the squid (squid_t) from binding to port 10000. For complete SELinux messages. run sealert -l 97136444-4497-4fff-a7a7-c4d8442db982
    
  6. SELinux가 포트 10000에서 수신 대기 하도록 하려면 다음 명령이 필요합니다.
    ~]# semanage port -a -t squid_port_t -p tcp 10000
  7. 다시 squid 를 시작하고 새 포트에서 수신 대기하도록 합니다.
    ~]# systemctl start squid.service
  8. Squid가 비표준 포트(이 예에서는 TCP 10000)에서 수신 대기하도록 SELinux가 구성되었으므로 이 포트에서 성공적으로 시작됩니다.


[17] 자세한 내용은 Squid Caching Proxy 프로젝트 페이지를 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.