kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

OS

Linux Proxy Server 구축 - Squid

까마기 2016. 1. 2. 15:18
728x90
반응형
프록시의 개념
 
Proxy Server란 방화벽 시스템이 설치되어 있는 호스트에서 동작하는 서버로, 방화벽 내에 있는 사용자들에게 방화벽 밖에 있는 서버로의 자유로운 서비스 요구와 응답을 받기 위한 수단으로 만들어진 것이다.
 해킹과 같이 외부로의 불법적인 접속을 방어하기 위해 설치하는 시스템이 방화벽인데 외부의 접속이 어려운 만큼 내부에서 외부로의 접속도 제한될 수 밖에 없다. 이러할 때에 방화벽이 설치되어 있는 시스템에다 Proxy server를 설치해 두면 방화벽에서는 이 서버에 대한 동작을 허용하고 내부의 모든 사용자는 이 서버에게만 서비스 요구를 하도록 한다. 그러면 이 서버는 외부의 서버들에게 서비스 요청을 하고 응답을 받으면 원래 요청했던 방화벽 내부의 사용자에게 전달해 준다. 
 즉, Proxy Server는 사용자 브라우저와 방화벽 외부의 서버들 사이에서 방화벽을 통과하는 중계기 역할을 해주는 것이다.
 뿐만 아니라 Proxy는 Cache를 가지고 있기 때문에 여러 사람들이 많이 들어가는 호스트는 이미 Cache에 Data가 저장되어 있기 때문에 Proxy에서 바로 가져다가 PC에 전달을 하기 때문에 해외 라인의 트래픽도 줄이고 속도도 빠른 이중의 효과를 얻게 되는 것이다.
 
 
ex) 한국에서 일본의 웹사이트 접속하고 싶은데 한국 ip domain 차단을 해놓았다
     접속시도 -> 실패->우회(중계서버로)-> 일본
     ->99프로 접속 ok  -> 이 중계서버를 프록시라 한다.
 
* Linux에서는 mod_proxy와 Squid , 2가지 방식이 있다.
- mod_proxy는 보통 Web Server의 모듈 형태로 돌아간다.
Client -> Apache(mod_proxy) -> Real Server(URL)
 
- Squid는 별도의 daemon 형태이다.
Client -> Squid -> Apache
 
ex1) 한국 1.1.1.1에서 일본사이트에 접속을 시도하면 
일본 deny 1.1.1.1 되어 기록, 허용되면 프로그램이 실행됨>
 
 
* 중계서버를 통하면 기록이 되지않으며 접속이 된다.
 
* 접속은 느리다. 장비의 성능도 좋아야 하겠지만 프록시 자체가 느리다. 
 
* 해외 프록시 사이트 이용하면 해킹가능
 
-> squid proxy server 정의 및 구축 설명
============================================================
 
# yum install -y squid
-> squid 다운로드 및 설치
 

 

 

 

# vi squid.conf 
파라미터 설명

 

 
 632 acl our_networks src 192.168.10.0/24 172.16.5.0/24

 633 http_access allow our_networks 

(ip대역 맞추기, 네트워크 허용 주석지우기)

 

636, 637 -> 클라이언트의 접속을 제어하는 태그이다. 아래의 설정과 매칭시켜서 사용하며 기본적으로 테스트한다면 http_access deny all 부분을 http_access allow 로 설정하고 테스트 한 다음 접근제어를 설정하도록 한다.

 

 

632 부분에 acl our_networks src 부분은 내부 네트워크에 대해서 접속을 허용하고자 할 때 네트워크 범위를 지정하는 태그이다. 

 

 

 

두개의 포트를 지정할 수도 있다.

 

 

외부에서 tcp 프로토콜을 통해 리눅스 프록시 서버에 3128 포트를 허용한다.

디폴트로 iptables 를 저장한다.

 

 

다시 설정파일로 돌아와서 cache 로 사용할 메모리 설정

 

 

cache 데이터 저장공간 설정

 

기본 위치는 /var/spool/squid 이며

100MB 의 공간을 지정하고 있으며

cache 디렉토리 생성에 있어 16개의 First 디렉토리와 

각각의 First 디렉토리 안에 256 개의 Secondary 디렉토리를 생성할 수 있도록 설정한 태그이다. 디폴트 값으로 사용.

 

 1964  cache_log /var/log/squid/cache.log
(주석제거)

 

access_log 는 프록시 서버에 접속하여 이용한 클라이언트 접속로그기록을 어디에 저장할 것인지 지정

cache_log 는 캐시 로그 파일의 위치를 지정

cache_store_log 는 캐시가 저장되고 삭제되는 로그 파일의 위치를 지정

 

 

 

 

 log_ip_on_direct on

목적지 IP의 로그파일을 저장할 지를 지정한다. off 로 지정하면 호스트 이름을 저장한다.
 

 

 

 mime_table /etc/squid/mime.conf

파일의 마임 타입을 지정할 때 사용하는 태그이다. 만약 마임타입 정의를 다른 파일로 지정하려면 이 태그에서 마임 타입 정의 파일의 위치를 지정
 
-->squid 데몬 실행 프로세스 번호를 어느 파일에 기록할 것인지 설정하는 태그이다. 프로세스번호 파일을 지정하지 않고자 한다면 "none"을 입력.
 
TCP 연결을 기다리는 시간을 지정하는 태그이다. 기본값을 1분으로 지정하고 있고, 1분동안 응답이 없으면 연결을 종료한다.
 
 

 

도메인 이름을 검색하는 프로세스를 지정하는 태그로써 설치시 -disable-internal-dns 옵션을 사용하였다면 위와 같이 설정해 주어야 정상적인 도메인 검색이 가능하다. 

 

 

DNS query 시간을 지정하는 태그이다. 기본값으로 2분을 지정하고 있다. 2분 안에 DNS Query에 대한 응답을 받지 못하면 정상적인 서비스를 하지 않는다.

 

 

로컬로 인식할 DNS 데이터베이스 파일을 지정하는 태그이다.

 

 

 

 

캐시 매니저의 파일을 설정하는 태그이다. 캐시 서버가 다운 되었을 때 이곳에 설정한 메일로 캐시 서버가 다운되었다고 메일로 알려준다.

 

 

캐시 매니저에게 메일을 발송할 때 어떤 프로그램을 사용할 것인지 지정하는 태그이다. 기본값으로 mail 프로그램을 사용한다. 

 

 

 

Squid 서버 데몬을 실행할 사용자명을 지정하는 태그. 이 설정을 사용시에는 squid 유저로 데몬을 시작한다.

 

 

Squid 서버 데몬을 실행할 그룹명을 지정하는 태그. 이 설정을 사용시에는 squid 그룹으로 데몬을 시작한다.

 
-->squid 프록시 서버 사용시 에러 디렉토리를 지정하는 태그이다. 기본적으로 /usr/share/squid/error 디렉토리에 에러가 저장되며, 기본언어로 영어를 설정한다.
 
에러 메세지 사용을 위하여 호스트네임을 지정하는 태그이다. 위에서 에러로그를 사용한다고 하였다면 호스트네임을 지정해주어야만 정상적인 프록시 데몬 서비스가 가능하다. 이 태그는 반드시 지정해 주어야 한다. 
 
<실습>


 
ip 확인, 네트워크 대역 접속 허가, 
localhost 허용, 나머지는 거부
 

로그 기록이 저장되는 파일, 주석 제거
 
* 로그 파일과 저장파일들을 squid 소유자와 소유그룹은 squid 그룹의 소유로 변경하고 /etc/rc.d/init.d/squid 시작 스크립트로 프록시 서버 데몬을 실행한다.
 기본적으로 yum 으로 squid를 설치 했을 경우 /var/spool/squid 디렉토리와 /var/log/squid 디렉토리의 소유자와 소유 그룹은 디폴트로 squid 로 되어있다.

 

서비스 시작 후 프로세스 , 연결 상태 확인
 

 
<인터넷 도구 옵션 연결 LAN 설정에서 프록시 설정>
 
인터넷옵션->연결->LAN 설정->프록시 서버에서 리눅스 eth1의 ip와 squid 서비스 허용할(프록시 서버) 포트 입력
192.168.10.128 (내 ip) port :3128     ---------> 내가 vmware리눅스에서 설정한 프록시 서버
 

access.log 를 띄워놓자.
 
이 상태에서 웹 브라우저에서 인터넷 접속하면서 access.log 창 모니터링.
 

접속이 되질 않아서 방화벽을 확인 후 iptables INPUT 체인에 규칙을 적용하였다.
외부 1024:65535 포트로 부터 리눅스 서버의 3128 포트로 들어오는 규칙을 허용 후,,
squid 서비스 재시작
 
인터넷 접속 후 확인 -->  나의 웹 브라우저는 내가 설정한 리눅스 시스템의 squid 란 이름의 프록시 서버를 통해 인터넷 서핑을 하는 것이다. 
 
 
터미널 창 한개 더 띄우고 
# tail -f /var/log/squid/access.log
#service squid start 한 후 IE 에서 프록시 설정 후 외부 차단 사이트 접속 시도.
 

 
해외 프록시 서버 주소 있는 사이트
anonymouse.org
ipunlocker.com
xroxy.com->proxy List -> country
프록시 설정후 www.dmm.co.jp
 
 
** squid  문제점
 
공개 프록시(open proxy)는 아무나 자유롭게 접속하여 사용할 수 있는 프록시 서버를 말한다. 공개 프록시를 사용하면 자신의 IP주소를 남기지 않고 익명으로 활동하기가 쉽기 때문에, 이러한 서버들은 크래킹, 악성 코드, 바이러스 배포, 불법 행동 등에 악용되기 쉽다. 따라서, 많은 프로그램은 공개 프록시를 검출하여 사용을 금지하는 방법을 사용한다. 유료 프록시 서버도 있다. 

 

< Proxy Server의 활용 >

Multiple Proxy Caching

 Single Proxy Caching 의 문제점

 

   - Proxy 에 문서를 요구하는 client들의 수가 proxy 에 지나치게 많으면 병목
     현상으로 인해 속도저하 및 접속불가가 되기 쉬움

 Single Proxy Caching 의 문제해결방안

   - 여러 개의 caching proxy를 연동시켜서 서로 가지고 있는 cache 등을 공유함
    예) Harvest cache, Squid cache

 Multiple Proxy Caching 이란?

   - Client 의 요청에 따른 object 가 cache 에 없으면 local cache는 자신에게
     연결되어 있는 neighbor, parent cache, primary host에 동시에 요청 (request)을
     보냄

   - 그 중에서 가장 빨리 hit message를 보내주는 host로부터 객체를 가져옴

 

게이트웨이 역활

비공인 IP address 를 사용하는 지역에서의 인터넷 이용

- 비공인 IP Address 를 사용하는 지역에서는 공인IP 를 사용하는 인터넷망으로 나올 수 가 없어 내부에서만 동작이 가능하다.이런 경우 Proxy를 이용하여 비공인 IP를 공인된 IP처럼 가상으로 변환하여 인터넷 을 이용할 수 있도록 게이트웨이 역할을 하는 방법이 있다.

보안용 장비로 이용

 

 

 

- 외부에서 접속을 하거나 DNS로 외부에 노출되는 것을 막고자 하는 경우Proxy 서버를 중간 게이트웨이로 이용을 하면 Proxy 뒤의 서버들은 외부에서 확인이나 접속이 불가능하다.

반응형

'OS' 카테고리의 다른 글

Linux Vi 한글 깨짐 현상  (0) 2016.01.02
Disk I/O 스크립트 예제  (0) 2016.01.02
Ubunt FTP 설정  (0) 2016.01.02
Linux Ctrl+Alt+del 사용 제한  (0) 2016.01.02
Login Time out  (0) 2016.01.02