pfSense 방화벽에서 제공하는 Squid 패키지를 이용하여 도메인별 인터넷 접근 통제를 할 수 있는 환경 구성 방법을 정리합니다.
Squid 패키지 설치
Squid 패키지를 검색하고 패키지를 설치합니다.
System > Package Manager를 접근합니다.

Available Packages에서 squid를 검색하고 squid 패키지를 설치합니다.

‘Install’을 선택합니다.

‘Confirm’을 선택 합니다.

Squid 패키지 설치가 완료됩니다.
Squid Proxy Server 설정
Services > Squid Proxy Server 메뉴를 접근합니다.

Proxy Server: General Settings
General 설정을 진행합니다.

- Enable Squid Proxy : check
- Proxy Interface(s) : LAN
- Proxy Port : 3128
- Resolve DNS IPv4 First : check

- Transparent HTTP Proxy : check
- Transparent Proxy Interface(s) : LAN

- Transparent Proxy Interface(s) : check
- Enable Access Logging : check
- Log Store Directory : /var/squid/logs
- Rotate Logs : 30

‘Save’를 선택합니다.
Proxy Server: Access Control
Access Control 설정을 진행합니다.


- Whitelist : jackerlab.com, google.com
Whitelist 설정에서 허용할 도메인을 작성합니다.
다수의 도메인/IP의 경우 행을 나눠서 여러 개 작성 가능합니다.
테스트로 2개 사이트만 허용 설정합니다.
‘Save’를 선택합니다.
Firewall Rule 설정
Squid 접근 허용 방화벽 룰을 설정합니다.

Firewll > Rules 메뉴를 접근합니다.

‘Add’ 버튼을 선택합니다.

- Source : 192.168.1.101
- Squid 프록시에 접속할 하위 Client IP
- Destination : 192.168.1.1
- Squid 프록시 IP (pfSense 방화벽 IP)
- Destination Port Range : 3128 ~ 3128
- Log : check
‘Save’ 를 선택합니다.

‘Apply Changes’ 버튼을 선택합니다.
Squid를 통한 도메인 통제 테스트
하위 Client(PC)에서 프록시 설정을 합니다.
해당 테스트는 Ubuntu OS에서 진행하였습니다.
Proxy 설정

- Proxy IP : 192.168.1.1
- Proxy Port : 3128
인터넷 접속 테스트
jackerlab.com 접근

jackerlab.com 사이트는 정상적으로 접근되고 애드센스 사이트는 허용되지 않았기 때문에 사이트 로드가 되지 않는 것이 확 인됩니다.
google.com 접근

google.com 사이트는 정상적으로 접속 되는 것으로 확인됩니다.
naver.com 접근

naver.com 사이트는 접근이 차단 되는 것이 확인됩니다.
Squid 로그
Squid 로그는 Real Time 탭 메뉴에서 확인할 수 있습니다.

- jackerlab.com 사이트는 정상적으로 허용
- googleads… 사이트(애드센스)는 정상적으로 차단
테스트한 내용에 대하여 정상적으로 허용/차단 된 로그를 확인 할 수 있습니다.
마치며
pfSense에서 제공하는 Squid 패키지의 Proxy 기능을 사용하면 Client의 인터넷 접근을 도메인별로 통제할 수 있겠습니다.
다만 공식 문서에서는 보안 취약점이 많기 때문에 Squid를 사용하지 않는다고 나와 있습니다.
실제 서비스 적용 및 사용 시, 해당 이슈에 대한 추가적인 검토가 필요할 것으로 판단됩니다.
참고자료
- https://docs.netgate.com/pfsense/en/latest/packages/cache-proxy/tune.html