방화벽(Firewall)
- 신뢰할 수 있는 네트워크와 신뢰할 수 없는 네트워크 사이의 장벽
- LAN과 WAN 사이에 사용
- 즉, 데이터 전달 경로에 배치되어 패킷을 드롭/ 허용

Stateless Filtering
= 라우터
- 라우터는 ACL을 사용해 Source / Destination / Port number 확인
- 패킷을 수신하면 ACL 매치 후 Permit 또는 Deny
- 단일 패킷 또는 수천개의 패킷을 수신해도 각 패킷을 개별적으로 처리
= 같은 발신지 IP여도 매번 검사
- 이전에 본적이 있거나, 본적이 없는 패킷은 추적하지 않음
Stateful Filtering
- 방화벽은 모든 들어오는 또는 나가는 Connection 추적
- LAN 환경의 컴퓨터를 이용해 메일서버 연결
- TCP 3-Way handshake 진행 과정을 방화벽은 모니터링
- 방화벽은 이 연결을 기억하고 메일서버에 대한 응답을 자동으로 컴퓨터에게 들어오는 것을 허용
Packet Inspection
- 대부분의 방화벽은 어떤 형태로든 Deep Packet inspection 지원
- ACL은 단순히 IP와 Port number 확인
- Inspection은 OSI model의 Layer7까지 확인 가능
- IP차단 대신 URL 차단 가능
- 페이로드를 확인해 바이러스 및 웜 패킷 차단

Security Zone
- 라우터는 기본적으로 라우팅 테이블을 기반으로 데이터를 허용/처리
- 이를 제한하기 위해서는 ACL 필요
- 많은 ACL과 많은 인터페이스는 관리의 어려움이 발생

- 4개의 ACL 및 4개의 인터페이스 관리 필요
- 외부로 나가는 트래픽 중 일부를 차단하기 위해 두 개의 Inbound ACL 생성/적용
- 외부에서 들어오는 트래픽 중 일부를 차단하기 위해 두 개의 Inbound ACL 생성/적용

- 방화벽은 Zone 기반으로 데이터를 허용/처리
- INSIDE: 내부 LAN 구간(High Security Level)
- OUTSIDE: 외부 WAN 구간(Low Security Level)
- High Security Level -> Low Security Level: 허용
- Low Security Lvel -> High Security Level: 거부
- 외부에서 시작해 내부로 접근하는 트래픽에 대해 ACL을 이용해 예외 적용
- 방화벽은 Stateful 동작으로 나가는 Connection 추적해 되돌아 오는 트래픽 허용
- 내부 -> 외부 -> 내부: 허용
- 외부 -> 외부: 거부

- DMZ를 운영하는 경우 INSDIE와 OUTSIDE 사이의 Security Level 사용
- INSIDE -> OUTSIDE 혹은 DMZ: 허용
- DMZ -> OUTSIDE: 허용
- DMZ -> INSIDE: 거부
- OUTSIDE -> DMZ: 거부(ACL 예외 필요)
- OUTSIDE -> INSIDE 거부
Firewall - Router
CBAC(Context-Based Access Control)
- L3/L4 계층의 트래픽 뿐 아니라 응용게층 트래픽까지 제어 가능(라우터 기능 + 방화벽 기능)
- Stateful 방화벽 기능 지원
- CBAC 동작
- 돌아오는 패킷을 허용하는 임시 ACL 생성
- ACL이 이미 있다면 해당 ACL 우선 적용
- 패킷 처리 후 임시 ACL 삭제

- 정책 결정
- 외부에서 내부로 접근하는 모든 트래픽 차단
- TCP, UDP 및 ICMP 패킷만 되돌아 올 수 있도록 허용
- ACL in 적용
R2(config)#ip access-list extended ~~
R2(config-ext-nacl)#deny ip any any
R2(config-ext-nacl)#exit
R2(config)#interface fa0/1
R2(config-if)#ip access-group ~~ in
--> 내부에서 시작하든, 외부에서 시작하든 모든 통신 차단됨

CBAC 적용
R2(config)#ip inspect name ~~ tcp
R2(config)#ip inspect name ~~ udp
R2(config)#ip inspect name ~~ icmp
R2(config)#int fa0/1
R2(config)#ip inspect ~~ out
CBAC 확인
- TCP, UDP, ICMP를 모두 검사하고 돌아올 때 허용할 임시 ACL을 만들어 기존 ACL 상단에 추가
- E0/1 인터페이스에서 패킷이 외부로 빠져나가는 시점에 임시 ACL 생성

R2#show ip inspect sessions detail
- 내부 1.1.12.1에서 외부 1.1.34.4으로 전송된 텔넷 패킷이 돌아올 때 허용하는 임시 ACL 생성
- 이 ACL에 의해 돌아오는 텔넷 패킷 허용
Application CBAC

- 정책 결정
- 외부에서 내부로 접근하는 모든 트래픽 차단
- 내부로 돌아오는 TCP 패킷 중 HTTP만 허용

80번 포트만 허용하고 나머지 패킷은 차단
ZFW(Zone-Based Policy Firewall)
- CBAC 단점
- 인터페이스 기반 트래픽 검사로 정책 설정 및 관리 어려움
- 다수 개의 인터페이스 구성 시 설정이 복잡
- 라우터의 각 인터페이스를 특정 Zone에 할당하고, Zone 사이에 보안 정책 적용
- Zone/Security Zone
- Zone member
- Self-Zone
- 시스템에서 정의한 Default Zone
- 라우터의 모든 인터페이스는 Zone 소속 여부와 관계 없이 Self-Zone에 포함
- 라우터가 출발지 또는 목적지인 패킷을 제어할 때 사용
- Zone Pair
- 출발지 Zone과 목적지 Zone의 묶음
- Zone Pair를 설정하기 전까지는 Zone간 통신 불가(Self Zone 예외)

- Zone 생성 및 인터페이스 할당
- Zone Pair 생성
- 보안정책 정의
- Zone Pair에 보안정책 적용
ZONE 규칙
- 인터페이스는 오직 하나의 Zone에만 소속
- 동일 Zone에 소속된 인터페이스간 트래픽 기본 허용
- 서로 다른 Zone에 소속된 인터페이스간 허용되지 않은 트래픽은 기본 차단
- Self Zone은 Zone과 반대로 기본 허용
- Zone에 소속되지 않은 인터페이스는 Zone 소속 인터페이스와 통신 불가
- 인터페이스간 통신이 이루어지기 위해서는 모든 인터페이스가 반드시 Zone에 소속되어야 함(정책 통신)
- 서로 다른 Zone통신에는 ACL 적용 불가(오직 Zone Pair & 정책)
- Zone 멤버에 속한 인터페이스는 ACL 적용 불가
- Zone 멤버에 속한 인터페이스는 CBAC 설정 불가(ZFW & CBAC 동시 적용 불가)
Zone 생성 및 Interface 할당

R2(config)#zone security inside
R2(config)#int f0/0
R2(config-if)# zone-member security inside

서로 다른 Zone은 통신이 안됨

R2(config)# zone-pair security Outbound source inside destination outside
- Zone Pair를 사용해 두 개의 Zone간에 단방향 방화벽 정책 정의
- 출발지 및 목적지 Zone을 지정해 트래픽 방향 설정
Class-map 적용 대상을 모아둔 곳
Policy-map: 그 대상에게 적용할 규칙