본문 바로가기
서버,보안

프락시서버 squid 설치하기

by 세이박스 2008. 10. 21.
반응형
 
먼저 squid는 주서버 프로그램인 squid와 함께 도메인네임서버 검색프로그램인 dnsserver,
그리고 FTP데이터를 가져오는 프로그램인 ftpget, 그리고 squid관리도구와 클라이언트
도구들로 구성되어 있습니다..
 
설치는 현재 날짜 기준으로 squid-2.6.STABLE13.tar.gz로 소스 설치 하겠습니다..^^
 
다운받는 주소는
ftp://ftp.squid.org/pub/squid-2/STABLE에서 받으시면 됩니다.
 
일단 설치하기 전에
#rpm -qa | grep squid
검색 하셔서 나온다면 지워 줍니다..
 
압축을 풀어주고
#tar zxvf squid-2.6.STABLE13.tar.gz
압축푼 디렉토리로 이동한다음
#cd squid-2.6.STABLE13
 
설치될 경로를 지정 해주고..
#./configure --prefix=/usr/local/squid
컴파일 한다음..
#make
설치 합니다..^^
#make install
 
squid설치후 생성되는 디렉토리를 설명하자면...^^
(1) bin : squid실행과 관련된 스크립트 프로그램이 있다.
(2) etc : squid관련 환경설정파일인 squid.conf가 위치하고 있다.
(3) libexec : 서버운영과 관련된 스크립트 파일이 있는 디렉토리이다.
(4) lib : 프로그램 개발에 필요한 라이브러리 정보를가진다.
(5) man : man명령관련 정보파일을 가진다.
(6) sbin : squid 서버를 실행하고 관리하는 squid라는 명령이 위치하는 디렉토리이다.
(6) share : squid를 사용하면서 생기는 에러 메시지에 대한 정보 파일을 가진다.
(7) var : 로그 파일에 대한 정보를 가진다.
소스로 설치 했다면 환경설정 파일은
/usr/local/squid/etc/squid.conf에 위치합니다..^^
 
 
Squid 데몬 실행
   1) /usr/local/squid/sbin/squid -z
     => 스왑디렉토리를 초기화한다.
   2) /usr/local/squid/sbin/squid
     => 데몬을 띄운다.

 (2) 데몬실행시 오류분석
   1) 서버 호스트네임이 없는 경우: squid -z 실행시 나타난다.
     [root@www193 squid]# sbin/squid -z
     FATAL: Could not determine fully qualified hostname.  Please set 'visible_hostname'
     Squid Cache (Version 2.5.STABLE1): Terminated abnormally.
     CPU Usage: 0.008 seconds = 0.002 user + 0.006 sys
     Maximum Resident Size: 0 KB
     Page faults with physical i/o: 245
     Aborted
      => (해결책)
        squid.conf 에 'visible_hostname 호스트이름'을 지정해 준다.
  
2) cache 디렉토리가 없는 경우 : squid -z 실행시 나타난다.
     [root@mybestone /usr/local/squid/sbin]# ./squid -z
     2002/12/02 00:28:18| Creating Swap Directories
     FATAL: Failed to make swap directory /usr/local/squid/var/cache: (13) Permission denied
     Squid Cache (Version 2.5.STABLE1): Terminated abnormally.
     CPU Usage: 0.000 seconds = 0.000 user + 0.000 sys
     Maximum Resident Size: 0 KB
     Page faults with physical i/o: 9
      => 해결책
        ㄱ. mkdir /usr/local/squid/var/cache 해서 디렉토리를 생성한다.
        ㄴ. chmod 777 /usr/local/squid/var/cache해서 권한을 설정한다.
 
 3) logs디렉토리에 권한이 없는경우
     ㄱ.원인: squid 데몬을 띄운 후 클라이언트가 웹브라우저를 띄우고 프록시 서버를
         실제적으로 사용하면 squid 데몬이 죽는 경우가 발생한다.
         직접적인 로그기록(프로세스아이디 등)을 할 수 없기 때문에 발생한다.
     ㄴ.해결책 : nobody가 로그를 기록할 수 있도록 설정한다.
         chmod 777 /usr/local/squid/var/logs
 
Squid 서버 실행절차
 (1) squid.conf에서 환경설정을 한다.
    vi /usr/local/squid/etc/squid.conf
(2) cache 영역으로 사용할 공간을 /usr/local/squid/var디렉토리밑에 생성한다.
    mkdir /usr/local/squid/var/cache
(3) 모든 사람들이 접근할 수 있도록 허가권을 설정한다.
    chmod 777 /usr/local/squid/var/cache
(4) 스왑디렉토리(캐시용 디렉토리)를 초기화한다.
    /usr/local/squid/sbin/squid -z
(5) 데몬을 실행한다.
    /usr/local/squid/sbin/squid
 
 
ps. root가 아닌 전용계정으로 squid 관리하기
먼저 squid서버를 관리할 계정을 만들어야 합니다. 흔히 root로 squid를 관리하기도
하지만 가능한 별도의 계정으로 squid를 관리하는 것이 보안에 좋다고 생각합니다...^^
squid란 계정을 만든후 관리하도록 할건데 굳이 계정을 squid라고 만들지 않고
다른 계정으로 만들어도 상관없습니다..^^
 
#useradd squid
#passwd squid
#chown -R squid:squid /usr/local/squid
#ls -l /usr/local/squid/ <- 보시면 권한이 squid로 바뀐것을 보실수 잇습니다..^^
 
그리고 squid서버를 별도의 계정으로 실행하고 관리한다면 squid.conf파일의
아래 설정에 해당 관리계정을 설정해 주셔야 합니다..
 
cache_effective_user squid
cache_effective_group squid
 
이제 프록시서버를 root가 아닌 squid계정으로 관리하기때문에
보다 효율적으로 프록시서버를 운용할 수 있습니다...^^

출처 : Tong - hanjunghee님의 ☞ [UNIX관련자료]통

반응형