1. 방화벽 기초 이론
1-1) 방화벽 개념
네트워크에서 방화벽은 신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나는 패킷을 미리 정해놓은 규칙에 따라 차단하거나 보내주는 기능을 하는 하드웨어나 소프트웨어
1-2) 방화벽 기능
- 접근 제어(Access Control)
- 통과시킬 접근과 그렇지 않은 접근을 결정하여 허용과 차단을 함
- 접근 제어 방식은 구현 방법에 따라 패킷 필터링 방식과 프록시 방식으로 나뉨
- 패킷필터링: 라우터같이 패킷(3계층)을 확인하고 필터링
- 프로시방식: L7까지 읽을 수 있어서 장점이있지만, 속도가 느리다
- 로깅(Logging)과 감사 추적(Auditing)
- 허용 또는 거부된 접근에 대한 기록을 유지
- 인증
- 메시지 인증, 사용자 인증, 클라이언트 인증을 할 수 있음
- 데이터 암호화
- 방화벽이 VPN 기능을 같이하는것임
- 자택근무자는 방화벽에서 터널을 뚫어줌
- 방화벽에서 다른 방화벽까지 전송되는 데이터를 암호화해서 보내는 것으로 보통 VPN의 기능을 이용
1-3) Untangle
- Debian 9를 기반의 방화벽, 하드웨어에 설치한다
- GUI를 제공해서 손쉬운 모니터링
장점
- 쉽게 설치 가증함
- Blocker, VPN등의 앱을 쉽게 설지하고 적용 가능함
- 사용자 친화적인 UI로 방화벽 설정, 모니터링에 용이
단점
- 방화벽 이외의 대부분의 App은 유료
- 방화벽의 기능이 상대적으로 약함
1-4) pfSense - 우리가 설치함
- freeBSD 기반의 오픈소스 방화벽, 하드웨어에 설치함
- WebUI 로 손쉬운 모니터링
- IPsec, 라우팅, 방화벽 기능을 기본적으로 제공하며, nmap, snort, bind등의 패키지를 추가로 설치 가능함
장점
- 다양한 패키지 설치 가능, 무료로 가능
- Advanced Options로 방화벽 rule을 구체적, 세분화된 설정이 가능하여 강력한 방화벽 기능을 제공한다
- 추가 패키지를 설치하지 않더라도 다양한 기능을 기본적으로 제공한다
단점
- 방화벽 Rule 설정이 어렵다
- UI가 사용자 친화적이지 않고, 초기설정은 command로 해야하는 불편함 존재
1-5) Untangle vs pfSense
| 기능 | Untangle | pfSense |
| IP Source/Destination Address | O | O |
| TCP/UDP Source/Destination Address | O | O |
| MAC Source/Destination Address | X | O |
| Inbound/Outbound 방화벽 규칙 | O | O |
| Port Forwarding | O | O |
| IPv6 지원 | X | O |
| 방화벽 중앙 관리 기능 | O(Command Center) | X |
2. pfSense를 활용한 방화벽 설치
🎯 목표

2-1) VMWare 생성



5개의 NIC가 필요하다


2-2) pfSense 설치






2-3) NIC 수정하기


🚨 MAC 주소에 맞춰서 수정해주기!!

2-4) WAN, LAN 설정

WAN 구간 설정 = vmx0

LAN 구간 설정 = vmx3

나머지는 순차적으로 쓰기 vmx1, vmx2, vmx4

2-5) NIC에 IP 할당하기

WAN에 IP 설정하기 > dhcp 설정 x, static ip

IPv6, webConfigurator 할거냐? > n
✅ WAN IP 설정 완료 확인

LAN에 IP 설정하기



✅ LAN IP 설정 확인

2-6) linux-mint로 pfSense 접속하기

linux-mint의 네트워크 대역을 soc-net으로 변경한다

IP 강제로 수정하기
sudo xed /etc/netplan/1-network-manager-all.yaml

IP 적용하기
sudo netplan apply
ping 테스트

pfSense에 접속하기

ip: admin
password: pfsense
2-8) 웹에서 pfSense 설정하기


pfSense 외부 통신 확인
🚨vyos vm을 키고 확인해야함!
쉘로 이동

✅ 외부 통신 가능!

2-9) 나머지 NIC 설정

결과 확인 > Dashboard

3. DMZ 구간에 웹 서비스 구축
3-1) DMZ의 이해
DMZ(Demilitarized Zone): 인터넷 망과 내부 망의 중간 지점
개인정보 암호화
- 개인정보처리자는 인터넷 구간 및 인터넷 구간과 내부망의 중간 지점에 고유식별정보를 저장하는 경우에는 이를 암호화 해야한다

출처: https://m.blog.naver.com/innoviss/222246852119
3-2) beebox와 bWAPP 소개
beebox는 환경을 구축하는데 시간을 절약할 수 있음
https://sourceforge.net/projects/bwapp/files/bee-box/
bWAPP - Browse /bee-box at SourceForge.net
Easy-to-Use Website Accessibility Widget An accessibility solution for quick website accessibility improvement.
sourceforge.net
beebox 설치하기

3-3) beebox 설치하기
3-3-1) VMware Workstation에서 OVF 로 추출하기
1. 압축을 푼 후 VMWare Workstation에서 실행하기

2. File > Export to OVF ...

3. 새로운 폴더(beebox)만든 후에 내부에 저장하기

3-3-2) EXSi에 OVF로 VM 생성하기
1. OVF로 생성하기

2. 저장한 파일 첨부하기

3. dmz-net에 생성

4. 완료 누르고 생성하기 > 새로고침 X

3-4) beebox 설정하기
1. 루트 권한으로

2. IP 설정하기

3. 적용이 잘 안되서 reboot 하기
reboot
4. IP 설정 확인하기

5. 외부 통신 확인

🚨 외부 통신이 안된다 > 방화벽이 막고있다
3-5) Static Route 설정하기 - VyOS
- 방화벽 너머에 있는 대역대에서는 공인 IP를 대상으로 패킷을 보내면 돌아오지 못하는 현상이 일어난다
- 이는 라우터가 방화벽 너머에 무슨 IP가 있는지 알지 못하기 때문에 발생
- 패킷이 밖으로 나갈 때는 디폴트 게이트웨이를 통해 외부로 나가지만, 내부로 들어오면 어느쪽으로 보내야하는지 모르는 현상이 발생함


Static Route 설정하기
set protocols static route 10.0.0.0/24 next-hop 10.0.0.1
set protocols static route 10.0.10.0/24 next-hop 10.0.0.1
set protocols static route 10.0.100.0/24 next-hop 10.0.0.1
set protocols static route 10.0.150.0/24 next-hop 10.0.0.1
set protocols static route 10.0.200.0/24 next-hop 10.0.0.1
commit
save
3-6) 방화벽 통신 되는 것

linux-mint > vyos(10.0.0.1)

linux-mint > bee-box(10.0.10.100)

✅ 되는 이유?
linux-mint에서 sfSense(10.0.100.1) 접속해서 확인한다
1. pfSense 설정을 확인해보자
Firewall > Rules

2. soc-net의 rule을 확인하면, 모두 허용하는 룰이 있다

3-6) 방화벽 통신 안되는 것
방화벽이 막고있다

vyos > bee-box

🚨 안되는 이유?
dev-net에 대한 rule이 존재하지 않아서 > 모두 차단중이다

4) pfSense Rule 설정하기 - 포트포워딩 방식



4-1) WAN > DMZNET
모든 요청이 WAN의 80번 포트로 들어오면 > 10.0.10.100서버의 80번 포트로 보내겠다

✅ Firewall > Rules > WAN에 자동으로 설정이된다

KaliLinux에서 10.0.0.254로 curl을 해보자

🚨 근데 안된다 > 왜그럴까?
룰의 우선순위가 잘못되어서

80번 포트로 들어오려고하면 그 앞에 있는 룰들에 의해 막히게 된다
그러므로 이 위에 룰들을 빼버려야한다
⚙️(Actions)를 눌러서 Reserved Networks를 모두 해제한다

이 룰만 남아있다면 OK

다시 KaliLinux에 가서 curl을 해보자 > 잘 접속이 되는 걸 확인할 수 있다

80번 통신 이외에 모든 통신을 거절하는 Rule을 추가하자
Firewall > Rule > WAN > Add


여전히 KaliLinux에서 80번 프트로 bee-box를 접속 가능하다

4-2) 나머지 모든 대역에 Default Deny 설정



4-3) DMZ
DMZ 내부의 웹서비스가 API를 호출할 때는 외부로 통신이 가능해야함
4-4) DEVNET 설정
bee-box(10.0.10.100)만 접속 가능하도록 22, 80포트만 열어준다
더 타이트하게 하고싶다면 Source 를 DEVNET으로 변경한다

pfSense 에서 포트포워딩 설정


설정 확인

5. soc-net의 linux-mint를 dev-net으로 복제하기
현재 사용한 soc-net의 linux-mint(10.0.100.2)는 pfSense에 접속하는데 사용한 서버이다.
dev-net에서 개발용 linux-mint를 만들기 위해 복제를 한다

5-1) linux-mint 스냅샷 생성
🚨 꼭 서버의 전원을 OFF 한 상태에서 진행한다


5-2) 스토리지 복제하기
1. 폴더 생성하기

2. linux-mint가 들어있는 .vmx 파일을 복사하기

3. 복사할 dev-mint 폴더 선택

복사중

복사 완료 확인

5-3) dev-net에 기존 VM 등록



5-4) 설정 편집
네트워크 대역 수정

이름 수정

기존의 linux-mint도 soc-mint로 수정한다

부팅할때 내부에서 출돌이 나지 않도록 하기 위해 복사함으로 설정한다

5-5) dev-mint의 네트워크 설정



5-6) 통신 테스트

❌ 외부 통신 > 방화벽이 막고있음

✅ 10.0.10.100으로 SSH 접속

✅ 10.0.10.100으로 HTTP 접속

❌ 10.0.10.100으로 ICMP 불가능

5-7) 지금까지의 구성도

5-8) dev-mint 복제하기
나중에 복원하기 위해서


나중에 사용할 수 있다

6. pfsense 추가 패키지 설치
6-1) Squid - 캐싱 서버
- 인터넷 연결 성능을 향상시킬 수 있는 캐싱 프록시 서버
- 일반적으로 액세스되는 웹 페이지, 이미지 또는 클라이언트가 인터넷에서 요청하는 기타 파일의 캐시를 만들고 직접 파일을 전달
반복되는 패킷들을 방화벽에서 캐싱으로 남겨두면, 외부에서 웹에서 요청해서 정적페이지를 가져올 필요가 없다
캐칭해두면 방화벽에서 전달해줄 수 있다
그러면 부하가 줄어들 수 있다
6-2) pfBlockerNG - 유해차단
- IP 주소 또는 도메인 이름을 기반으로 들어오고 나가는 트래픽을 차단하기 위한 최고의 패키지
- 이 패키지는 국가 차단, IP/DNS 블랙리스트 및 IP 평판 차단을 포함하여 원치 않는 트래픽으로부터 네트워크를 보호하기 위해 다양한 기능을 제공
- DNS 블랙리스트 기능을 사용하면 여러 외부 블랙리스트를 추가하여 광고, 위협 및 맬웨어와 같은 트래픽을 차단
6-3) SquidGard - 유해차단
- 고속 URL 필터 및 리디렉터 기능(Squid와 연동되어 사용됨)
- 사용자 지정 블랙리스트를 업로드하거나 무료로 제공되는 목록 중 하나를 사용하여 네트워크의 사용자가 액세스할 수 있는 사이트를 사용자 지정
6-4) Darkstat - 성능 모니터링
- 성능을 최적화하고 잠재적인 문제를 찾기 위해 네트워크의 트래픽 사용량을 분석
- 이 패키지는 네트워크에서 차단하거나 우선 순위를 지정하는 트래픽을 빠르게 식별하는 방법을 제공함
7. Squid 사용하기
7-1) Squid, SquidGard 설치하기

설치 완료 확인

7-2) Squid Proxy Server 설정하기
proxy server 활성화 하기



soc-mint의 브라우저 설정으로 가서 프록시 설정하기


방화벽의 IP를 설정해준다

🚨 Proxy 설정으로 웹 접속 불가능 문제
google, pfsense 모두 접속이 안되는 문제 발생
1. squid 데몬 실행 확인 및 포트(3128) 확인 > squid 실행 안됨

2. pfsense 버전 업로드 필요
pfsensce cli 접속
> 8번(shell 로 접속)
> certctl rehash // pkg 서버를 신뢰하지 않는 경우에 패키지 업데이트 안되는 경우 발생
// 따라서 위 명령어를 통해 "시스템 인증서"사용할 수 있게끔 실행
> exit // 다시 옵션창 이동
> 13 // 수동 업그레이드
=> 2.7.0 -> 2.7.2로 업그레이드 완료

3. squid 실행 확인 완료

7-3) Squid Proxy Server - Real Time 확인하기
https://naver.com에 접속하고, 로그 확인해보자
필터링 기능을 활용해서 누가 접속했는지 확인 가능 > 10.0.100.2가 접속했구나

7-4) naver.com 접근 차단하기
1. ACLs에 접속한다

2. blacklist 설정

8. SquidGard 사용하기
8-2) SquidGard Proxy 설정하기


기본적으로 제공하는 blacklist가 있다

'보안 > 보안 도구 실습' 카테고리의 다른 글
| [포트폴리오] - ESXi 기반 멀티 네트워크 보안 환경 구축 (0) | 2026.03.31 |
|---|---|
| [인프라 네트워크 구성] - 2. VyOS 라우터 설치와 기본 네트워크 설정 (0) | 2026.02.15 |
| [인프라 네트워크 구성] - 1. 가상 스위치를 사용한 네트워크 분리 (0) | 2026.02.15 |
| [실습 환경 구성] - 2. Ubuntu 설치 및 KaliLinux 배포 (0) | 2026.02.15 |
| [실습 환경 구성] - 1. VMWare ESXi 개념 및 설치 (0) | 2026.02.15 |