Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.4. 설정 예

19.4.1. 비표준 포트에 Squiid 연결

다음 예제에서는 SELinux가 위의 부울을 강제 적용하여 Squid를 보완하고 기본적으로 특정 포트에 대한 액세스만 허용하는 방법을 보여주는 실제 데모를 제공합니다. 그러면 이 예제에서 부울을 변경하고 해당 액세스가 허용됨을 보여 줍니다.
이 예제는 SELinux가 Squid의 간단한 설정에 어떤 영향을 줄 수 있는지를 보여줍니다. Squid에 대한 포괄적인 설명서는 이 문서의 범위를 벗어납니다. 자세한 내용은 공식 Squid 설명서 를 참조하십시오. 이 예제에서는 Squid 호스트에 인터넷 액세스라는 두 개의 네트워크 인터페이스가 있고, 방화벽이 Squid가 수신 대기하는 기본 TCP 포트를 사용하는 내부 인터페이스에서 액세스를 허용하도록 구성되었다고 가정합니다(TCP 3128).
  1. squid 가 설치되었는지 확인합니다.
    ~]$ rpm -q squid
    package squid is not installed
    
    패키지가 설치되지 않은 경우 yum 유틸리티를 root로 사용하여 설치합니다.
    ~]# yum install squid
  2. 기본 구성 파일 /etc/squid/squid.conf 를 편집하고 cache_dir 지시문이 주석 처리되지 않고 다음과 유사한지 확인합니다.
    cache_dir ufs /var/spool/squid 100 16 256
    
    이 행은 이 예에서 사용할 cache_dir 지시문의 기본 설정을 지정합니다. 이 지시문은 Squid 스토리지 형식(ufs),캐시가 상주하는시스템의디렉토리(각각16 256 )로 구성됩니다.
  3. 동일한 구성 파일에서 http_access allow localnet 지시문이 주석 처리되지 않았는지 확인합니다. 이를 통해 Red Hat Enterprise Linux에 Squid의 기본 설치에서 자동으로 구성된 localnet ACL의 트래픽을 허용합니다. 이 간단한 예는 기존 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 _var_run_t 값에 표시된 대로 squid 프로세스 ID(PID)가 제한된 서비스로 시작되었는지 확인합니다.
    ~]# 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에 연결된 클라이언트 시스템이 이 호스트의 내부 인터페이스를 프록시로 사용할 수 있습니다. 이 설정은 모든 일반 웹 브라우저 또는 시스템 전체의 설정에서 구성할 수 있습니다. 이제 Squid가 대상 시스템의 기본 포트(TCP 3128)에서 수신 대기하지만 대상 시스템은 공통 포트를 통해 인터넷의 다른 서비스에 대한 나가는 연결만 허용합니다. 이는 SELinux 자체에서 정의한 정책입니다. SELinux는 다음 단계에 표시된 대로 비표준 포트에 대한 액세스를 거부합니다.
  8. 클라이언트가 TCP 포트 10000에서 수신 대기하는 웹 사이트와 같은 Squid 프록시를 통해 비표준 포트를 사용하여 요청하면 다음과 유사한 거부가 기록됩니다.
    SELinux is preventing the squid daemon from connecting to network port 10000
    
  9. 이러한 액세스를 허용하려면 기본적으로 비활성화되어 있으므로 squid_connect_any 부울을 수정해야 합니다.
    ~]# setsebool -P squid_connect_any on
    참고
    재부팅 시 setsebool 변경 사항이 지속되지 않도록 하려면 -P 옵션을 사용하지 마십시오.
  10. Squid가 이제 클라이언트를 대신하여 모든 포트에 대한 연결을 시작할 수 있으므로 클라이언트는 인터넷에서 비표준 포트에 액세스할 수 있습니다.