Proxy Server, Squid3 인증 구현하기

 라즈베리파이를 홈서버 용도로 구축하여 사용중이다. 라즈베리파이에서 구동중인 프로그램중 하나가 프록시 서버를 만들어주는 Squid3 이다.
Ubuntu Proxy Server, Squid3 간단 설치 : http://www.withover.com/2012/02/ubuntu-proxy-server-squid3.html
 라즈베리파이를 개인적으로 사용하기 때문에 트래픽과 서버부하를 크게 걱정않았다. 그런데 조금씩 라즈베리파이가 느려지는것이 보여 원인을 찾아보았다. "top" 명령을 통해 찾아보니, 상당한 자원을 Squid3 가 차지 하고 있었다. Squid3의 로그파일도 엄청 쌓이고 있었다. 로그파일에 찍힌 주소를 보니 중국쪽에서의 접근이 많았다.
/var/log/squid3 $ sudo tail -f access.log
 그래서 Squid3에 ID와 패스워드 인증을 도입하기로 했다.

 라즈베리파이의 기본 계정을 이용하는것이 아니라, 별도의 ID와 패스워드를 입력해야 프록시 서버에 접근 할 수 있게끔 설정을 바꾸어보자. 별도의 계정을 이용하기 위해 digest 방식을 사용하기로 했다. digest를 이용하기 위해서는 apache2-utils를 설치해야한다. apache2-utils는 apache 라는 웹서버와는 무관한 프로그램으로 알고 있다.
$ sudo apt-get install apache2-utils
 Squid3 설정 파일을 수정한다.
$ sudo vi /etc/squid3/squid.conf
 설정 파일의 550 라인 정도 쯤에 아래와 같은 코드를 추가하자.
auth_param digest program /usr/lib/squid3/digest_file_auth -c /etc/squid3/passwords
auth_param digest realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
 digest의 ID와 패스워드를 생성한다.
$ sudo htdigest -c /etc/squid3/passwords proxy user_id
 Squid3를 다시 시작한다.
$ sudo service squid3 restart
 이제 브라우져에 프록시 접근을 설정해 보자. 파이어폭스 기준으로 "설정 > 고급 > 네트워크 탭 > 설정" 을 눌러 다음과 같이 설정한다.
 그런 다음, 주소창에 주소를 입력하면 ID와 패스워드를 묻는 창이 뜬다. 이때, htdigest 를통해 만들었던 ID와 패스워드를 입력한다.
 ID와 패스워드를 아는 사람만이 해당 프록시 서버를 이용할 수 있다.

 정말로 그러한지 squid3 로그를 보자.
$ cd /var/log/squid3
$ sudo tail -f access.log 
1460360248.725      3 185.70.185.61 TCP_DENIED/407 3682 GET http://havadar.mobi/ - HIER_NONE/- text/html
1460360248.744      2 61.160.223.66 TCP_DENIED/407 3594 CONNECT login.sina.com.cn:443 - HIER_NONE/- text/html
1460360248.765      3 114.238.163.134 TCP_DENIED/407 3580 CONNECT www.baidu.com:443 - HIER_NONE/- text/html
1460360248.888      3 140.205.144.227 TCP_DENIED/407 3822 POST http://loc.map.baidu.com/sdk.php? - HIER_NONE/- text/html
 위 주로로 접근한 기록들이 모두 TCP_DENIED 된 것을 확인 할 수 있다. 내가 접근했을 때의 로그를 보고 싶으면, 거부난 로그를 제외하면 자신의 로그를 볼 수 있다. grep -Ev '제외단어1|제외단어2' 명령을 이용하면 가능하다.
$ sudo tail -f access.log | grep -Ev 'TCP_DENIED|TCP_MISS'
 Squid3 의 로그 파일에 대한 정보는 다음 페이지에서 확인가능하다.
Squid3 로그파일 정보: http://wiki.squid-cache.org/SquidFaq/SquidLogs
 이상으로 인증을 통해 프록시 서버를 이용하는 방법을 알아보았다.