Step 1. Install squid

apt-get install squid


Step 2. Configuration

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original   # 일단 설정백업


squid.conf 수정


Authentication

auth_param basic program /usr/lib/squid3/basic_pam_auth    # basic_pam_auth 이용

auth_param basic children 5 startup=5 idle=1

auth_param basic realm Squid proxy-caching web server

auth_param basic credentialsttl 2 hours

basic_pam_auth 를 이용하면 unix 시스템 어카운트를 그대로 이용한다.


Defining an Access List

acl pam proxy_auth REQUIRED

pam 이라는 access list 를 정의

acl SSL_ports port 443 가 시작되는 부분 앞에 적용


Allowing Access List

http_access allow pam

위에서 정의한 pam 의 access 를 허용

http_access deny !Safe_ports 가 시작되는 부분 앞에 적용


Step 4. Permission

chmod u+s /usr/lib/squid3/basic_pam_auth

시스템 어카운트로 로그인이 안되면 permission 문제일 가능성이 큼

basic_pam_auth 의 permission 에 s 를 추가하여 아래와 같도록 변경

-rwsr-xr-x  1 root root 14320 Feb 17 22:21 basic_pam_auth


Step 5. Restart

sudo service squid3 restart                                      # 재시작


Step 6. Client 설정
기본 포트번호는 3128


Posted by fermi

댓글을 달아 주세요

FoxyProxy 등과 같은 동적 Proxy 설정 유틸리티를 사용하면, url 패턴에 따라 Proxy를 자동으로 적용하게 할 수 있다. 


iOS와 같은 모바일 기기들의 웹브라우저들은 아직까지 자체 Proxy 설정기능을 가지고 있지 않거나, 가지고 있더라도 동적인 Proxy 설정을 제공하지 않는다. iOS 자체의 Proxy 설정기능 또한 단순하게 Off / Manual / Auto 로 구분되어 있다. 


보통 자동 Proxy 설정이라고 불리우는 PAC (Proxy auto-config)를 이용하면 이러한 문제를 쉽게 해결할 수 있다. 


예를 들면 proxy.pac 파일을 만들고 웹 서버에 올려놓고 http://a. domain.com/proxy.pac 로 접근이 가능하게 설정해 놓는다.


iOS의 Proxy 설정에서 Auto를 선택하고 URL을 http://a.domain.com/proxy.pac 로 지정한다.


proxy.pac의 예제는 다음과 같다.

function FindProxyForURL(url, host) {

//host 패턴을 검사

      if (shExpMatch(host, "service.xxx.org"))

      {

         return "PROXY dev.xxx.org:8888; DIRECT";

      }


또는

//url 패턴을 검사

      if (shExpMatch(url, "://service.xxx.org*"))

         return "PROXY dev.xxx.org:8888; DIRECT";


      return "DIRECT";


}


참고: 

http://en.wikipedia.org/wiki/Proxy_auto-config

http://getpocket.com/a/read/152475948

https://calomel.org/proxy_auto_config.html


Posted by fermi

댓글을 달아 주세요

Bookmarklets

정보기술/일반 2011.08.26 01:14 |
설치방법: 링크를 bookmark toolbar 에 끌어다 놓는다.

Reload via MIT Library Proxy: Reload via MIT
http://libraries.mit.edu/about/faqs/remote-proxystring-bookmarklet.html

Reload via NUS Library Proxy: Reload via NUS
http://lib.nus.edu.sg/lion/d/proxybkmrklet.html

QR-code on the fly: QR on the fly
http://marklets.com/QR+on+the+fly.aspx

Download YouTube Video: PwnYouTube
http://marklets.com/PwnYouTube.aspx
Posted by fermi

댓글을 달아 주세요

하나의 공인 IP를 공유하는 NAT 환경에서 동일한 서버에 여러개의 도메인을 갖는 웹사이트들을 호스팅하는 경우에는 기본적인 virtual hosts 설정으로 처리가 가능하지만, 도메인에 따라 각각 다른 서버에서 동일한 포트를 사용하는 웹 호스팅을 한다면 일반적인 포트 번호 기반의 NAT로는 구현이 불가능하다. 이 경우 호스트 네임에 따라 포트 포워딩을 하는 것이 필요하다.

아래는 NAT에서는 80포트를 하나의 서버로 포워딩하고, 도메인 이름에 따른 분류는 Apache의 reverse proxy를 이용하는 virtual hosts 설정 방법이다.

Configuring Apache virtual hosts for NAT

http://jeffbaier.com/articles/configuring-apache-virtual-hosts-for-nat

VirtualHost Examples
http://httpd.apache.org/docs/2.2/vhosts/examples.html

- Apache 의 reverse proxy feature 사용
- proxy 모듈

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:*>
 
DocumentRoot /www/example1
  ServerName www.example.com

</VirtualHost>

<VirtualHost *:*>
  ProxyPreserveHost On
  ProxyPass / http://192.168.111.2/
  ProxyPassReverse / http://192.168.111.2/
  ServerName hostname.example.com
</VirtualHost>


또는

# Listen for virtual host requests on all IP addresses
NameVirtualHost *

<VirtualHost *>
 
DocumentRoot /www/example1
  ServerName www.example.com

</VirtualHost>

<VirtualHost *>
  ProxyPreserveHost On
  ProxyPass / http://192.168.111.2/
  ProxyPassReverse / http://192.168.111.2/
  ServerName hostname.example.com
</VirtualHost>

참고: Forward Proxy vs. Reverse Proxy, Controlling access to proxy
Apache Module mod_proxy
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Forward Proxies and Reverse Proxies/Gateways

Apache can be configured in both a forward and reverse proxy (also known as gateway) mode.

An ordinary forward proxy is an intermediate server that sits between the client and the origin server. In order to get content from the origin server, the client sends a request to the proxy naming the origin server as the target and the proxy then requests the content from the origin server and returns it to the client. The client must be specially configured to use the forward proxy to access other sites.

A typical usage of a forward proxy is to provide Internet access to internal clients that are otherwise restricted by a firewall. The forward proxy can also use caching (as provided by mod_cache) to reduce network usage.

The forward proxy is activated using the ProxyRequests directive. Because forward proxies allow clients to access arbitrary sites through your server and to hide their true origin, it is essential that you secure your server so that only authorized clients can access the proxy before activating a forward proxy.

A reverse proxy (or gateway), by contrast, appears to the client just like an ordinary web server. No special configuration on the client is necessary. The client makes ordinary requests for content in the name-space of the reverse proxy. The reverse proxy then decides where to send those requests, and returns the content as if it was itself the origin.

A typical usage of a reverse proxy is to provide Internet users access to a server that is behind a firewall. Reverse proxies can also be used to balance load among several back-end servers, or to provide caching for a slower back-end server. In addition, reverse proxies can be used simply to bring several servers into the same URL space.

A reverse proxy is activated using the ProxyPass directive or the [P] flag to the RewriteRule directive. It is not necessary to turn ProxyRequests on in order to configure a reverse proxy.

ProxyRequests Directive 의 default 값은 Off 이므로 따로 설정하지 않아도 된다.

ProxyRequests Directive
Description:    Enables forward (standard) proxy requests
Syntax:    ProxyRequests On|Off
Default:    ProxyRequests Off
Context:    server config, virtual host
Status:    Extension
Module:    mod_proxy



Posted by fermi

댓글을 달아 주세요