방화벽 L2 L3 모드 - banghwabyeog L2 L3 modeu

1. 방화벽의 L2 Mode, L3 Mode.

L3 Mode: L3 Mode 방화벽을 구축할 때, 인터페이스 마다 다른 네트워크 대역을 할당해야 하고 각 인터페이스마다 라우팅을 해야 합니다. 문제점은 L3 Mode 방화벽에서는 해당 방화벽이 존재하는 것을 쉽게 알 수 있다는 점이다. (Linux: traceroute, windows: tracert). 반면, L2 Mode에서는 IP를 할당하거나 네트워크 환경을 구현할 필요가 없으므로 기존 네트워크를 변경할 필요가 없다. 따라서 외부에서는 방화벽이 존재하는지를 모른다. 하지만 반대로 내부 네트워크의 IP를 private IP로 바꿔주는 NAT기능을 수행하지 못한다.

2. NAT Settings

  • Static NAT: 하나의 사설 IP에 하나의 공인 IP를 맵핑한 것이다. 예로들어 내부 네트워크의 HOST A의 IP 주소가 X이고 방화벽의 외부 네트워크에 해당하는 인터페이스 중 하나가 Y라고 한다면, Static NAT로 X를 Y로 맵핑한다면, A가 외부 네트워크에 있는 인터넷 서버와 통신하기 위해서 패킷을 보낸다면 IP 주소가 Y로 바뀌어서 나간다. 그러면 인터넷 서버는 응답을 Y로 보내고 방화벽은 Static NAT를 이용해서 Y에서 X로 바꿔준다.
    -> 1대 1 맵핑 한다는 것은 사설 IP의 개수가 공인 IP의 개수와 동일하다는 것이다. 따라서 이는 사설 IP을 사용한다는 것의 장점을 활용하지 못하는 것이기도 하다.

  • Dynamic NAT: 여러개의 사설 IP에 여러개 또는 하나의 IP를 맵핑 하는 것이다. 이는 보통 사설 IP개수에 비해서 공인 IP의 개수가 부족할 때 이러한 방법을 사용한다. 헷갈렸던 점은 Dynamic NAT는 SNAT으로만 사용된다. 생각해보면 DNAT으로 사용한다면 방화벽 입장에서 다수의 사설 IP에게 모두다 패킷을 전송할수 는 없다. 따라서 SNAT로 NAT 테이블에 Source, Destination이 적히고 나면, 통신할 수 있게 된다.

1) DNAT / SNAT <-> Dynamic NAT / Source NAT

  • SNAT(Source NAT): Source IP 주소를 바꾸는 것이고 내부 네트워크에서 외부 네트워크로 나가는 패킷 중에서 적용한다. 예로들어, Host A의 X IP 주소를 공인 IP 주소 Y로 바꿔서 외부 네트워크에서 routing할 수 있게 만든다.
  • DNAT(Destination NAT): Destination IP 주소를 바꾸는 것이고 외부 네트워크에서 내부 네트워크로 들어오는 패킷 중에서 적용한다. 예로들어, 인터넷 서버가 위의 예에서 Y로 패킷을 보내면 이를 X로 바꿔주소 Host A가 패킷을 받을 수 있게 해준다.

2) DNAT로는 Static NAT만 사용할 수 있다.

  • SNAT으로는 Dynamic NAT, Static NAT를 사용할 수 있지만, DNAT로는 static NAT 만 사용가능하다. 왜냐하면 Dynamic NAT는 한개의 공인 IP에 해당하는 맵핑이 여러개이다. 따라서 외부 네트워크에서 내부 네트워크로 패킷이 먼저 올때, 어떤 사설 IP에 해당하는 것인지 모르기 때문에 사용할 수 없다.
  • Policy NAT: 위의 Static, Dynamic NAT는 모두 어떠한 조건 없이 IP주소를 바꾸었다. 하지만 다음과 같은 경우가 있을 수 있다. 내부 네트워크의 HOST A가 외부 네트워크 서버 Q와 통신할때는 공인 IP 주소 X를 사용하고 싶고 외부 네트워크 서버 P와 통신할때는 공인 IP 주소 Y를 사용하고 싶다. 따라서 이러한 경우에 Policy NAT를 사용한다. 따라서 SNAT일 경우에는 Source IP 주소에 대해서 다른 Destination IP이면 어떤 IP 주소를 사용할지를 정해야 한다. 만양게 여기서 Destination IP를 설정해주지 않으면(0.0.0.0/0) Static/Dynamic NAT와 동일하다. DNAT인 경우에는 Destination IP에 대해서 서로 다른 목적지 주소에 대해서 실제로 어떤 IP 주소로 갈지 정해야 한다.

결국에 Policy NAT는 Source IP 주소와 Destination IP주소를 모두 조건을 사용할 수 있는 NAT라고 보면 된다. 만약에 이 둘 중 하나가 제시되지 않으면 위의 설명한 Static/Dynamic NAT와 동일하다.

  • PAT(Port Address Translation): PAT는 Dynamic NAT와 동일하게 여러개의 사설 IP주소를 한개의 공인 IP주소에 맵핑한다. 중요한 점은 이때 IP주소가 다른 것이 Port번호만 다르다. 따라서 공인 IP주소의 포트 번호를 바꿔가면서 사설 IP에 할당한다. 예로들어, Host A와 Host B가 IP 주소가 각각 X, Y이고 둘다 공인 IP 주소 Z에 할당된다면, Z: 2000번 포트는 X:2000번에 대응하고 Z:3000은 Y:3000에 대응한다. 따라서 SNAT인 경우에 A가 외부로 통신할 때는 Z의 2000번 포트를 할당한다.
    대부분의 홈 네트워크는 이와같은 방식으로 여러개의 사설 IP를 사용한다.
  • Port Forwarding: 포트 포워딩은 만약에 내부 네트워크에서 여러 개의 호스트가 있을때 특정 포트로 온 패킷을 어디로 보낼지 정하는 것이다. 예로들어, 도착 포트 번호가 22번이라면 특정 호스트로 라우팅 한다. 이는 데비안의 iptables으로도 구현할 수 있다.

3. Port Forwarding 데비안 방화벽에 적용하기

다음과 같은 명령으로 22번 포트로 들어온 패킷을 192.168.0.5로 PREROUTING하였다. 따라서 이렇게 되면 클라이언트에서 172.16.254.250으로 ssh접속을 요구하면 방화벽의 ssh가 아니라 192.168.0.5, 즉 서버의 ssh서버로 접속한다.
다음과 같이 iptables에 Rule이 적용되었고 이제 한번 클라이언트에서 테스트 해보자.
그리고 서버에서 tcpdump로 접속을 확인해보면 연결이 되었다는 것을 확인할 수 있다. 이 방법이 Port Forwarding이다.

L2 Mode (TP Mode)

 - Transparent 모드 동작.

 - 내부 네트워크에 대한 Routing, 주소 변환은 없음.

 - Interface에 별도로 IP Address 설정이 필요 없음.

L3 Mode

 ① NAT Mode  :

    - 방화벽 외부의 공인 IP (Untrust) 쪽은 Route 모드, 내부의 사설 IP (Trust) 쪽은 NAT 모드로 구성.

    - 내부 사설 영역 (Trust)의 출발지 IP를 외부 공인 영역 (Untrust)의 IP로 변환하여 나감.

    - Interface-based NAT

② Route Mode :

    - 내부 (Trust), 외부 (Untrust) 모두 Route 모드로 구성.

    - 내부 영역에 사설, 공인 IP가 모두 존재할 때 사용.

    - Policy-based NAT

네트워크 구성

ASA Transparent Mode LAB.txt

0.00MB

-   ASA는 기본적으로 L3방화벽 즉 Router 모드로 동작한다.

-   L3 방화벽 모드는 라우터와 동일하게 인터페이스마다 서로 다른 네트워크 대역의 IP 주소가 할당되어야 하고, 라우팅 구성이 필요하다.

-   L2 방화벽인 Transparent 모드를 사용하게 되면 IP 정책과 Routing 구성을 변경하지 않고 기존 Topology에 방화벽을 추가하는 것이 가능하다.

-   L2 방화벽 모드에서 L3 방화벽과 동일한 기능을 수행할 수 있다. (ACL / MPF / NAT / Routung 등)

-   추가적으로 L2 필터링 정책인 EtherType ACL로도 사용이 가능하다.

*   Router(L3) 모드와 Transparent(L2) 모드는 Cisco에서 사용되는 용어이다.

L2 방화벽 장점

-   외부에서 방화벽의 존재를 파악하기가 어렵다.

-   L3 방화벽의 경우 tracert 등의 명령어를 사용하여 외부에서 방화벽의 존재 유무를 파악하는 것이 가능하다.

ASA 방화벽 Transparent 모드로 변경

<ASA>

en

conf t

firewall transparent

-   Router 모드로 다시 이동하기 위해서는 no firewall transparent 명령어를 입력하면 된다.

ASA L2 방화벽 기본 설정

bridge-group 1

   연결할 BVI 번호를 1번으로 설정한다.

 inspect icmp

   Ping Test를 하기 위해서 ICMP 패킷 허용

<ASA>

conf t

firewall transparent

hostname ASA

enable password cisco123

int BVI 1

 ip add 10.10.100.3 255.255.255.248

!

int g 0/0

 desc ##HQ_INSIDE_NETWORK##

 nameif Inside

 security-level 100

 bridge-group 1

 no sh

!

int g 0/1

 desc ##HQ_OUTSIDE_NETWORK##

 nameif Outside

 security-level 0

 bridge-group 1

 no sh

!

policy-map global_policy
 class inspection_default

  inspect icmp

exit

show birdge-group

show interface ip brief

-   관리 목적의 BVI IP가 인터페이스마다 설정되었다.

-   ICMP에 대한 Inspect 구성후 Window_A에서 Outside 구간으로 Ping 테스트를 수행하면 외부와 통신이 실패한 것을 확인할 수 있다.

-   DSW에 Default-Route경로가 없기 때문에 Window_A에서 외부로 통신이 되지 않는다.

-   L2 방화벽을 설치한 뒤에 DSW와 CE 간의 OSPF Neighbor가 끊어진 것을 확인할 수 있다.

ASA 방화벽 로그 확인

<ASA>

logging console 4

logging enable

-   OSPF Hello Packet이 차단되고 있다.

-   멀티캐스트는 기본적으로 차단되어있기 때문에 Inside → Outside로 가는 패킷도 차단되고 있다.

ASA ACL 설정

-   ASA의 경우 Security-leve이 높은 쪽에서 낮은 방향으로 전송되는 유니캐스트 트래픽의 경우 기본적으로 허용된다.

-   Multicast 트래픽의 경우 차단되기 때문에 위와 같이 관리자가 Access-list로 허용해야 한다.

-   permit ospf host 10.10.100.1 any라고 입력할 경우 OSPF만 허용되고 나머지 트래픽들은 차단되기 때문에 모든 IP 패킷을 허용한다.

access-list Inside_IN permit ip any any 

   모든 ip 패킷을 허용하면 multicast 패킷도 허용한다.

<ASA>

access-list Outside_IN permit ospf host 10.10.100.2 any 

access-list Outside_IN deny ip any any log 4 interval 120

access-group Outside_IN in interface Outside

access-list Inside_IN permit ip any any 

access-group Inside_IN in interface Inside

show ip ospf neighbor

-   정상적으로 CE 라우터와 ospf를 맺는다.

-   Window_A에서 외부망으로 정상적으로 ICMP패킷이 이동한다.

-   ASA의 Transparent(L2) 모드에서 NAT와 Static Route 설정이 가능하다.

-   ASA에서 내부 IP 대역인 10.10.1.0/24 트래픽의 출발지 IP 주소를 공인 IP주소 211.100.10.1로 PAT 되도록 설정하려고 한다.

ip route 211.100.10.1 255.255.255.255 fa 0/0 10.10.100.3

   ASA에게 응답을 전송해야 다시 원래 IP 주소로 변경하여 내부 출발지 장비에게 중계 처리가 가능하다.

<ASA>

object network INSIDE_NET

 subnet 10.10.1.0 255.255.255.0

 nat (Inside,Outside) dynamic 211.100.10.1

!

<CE>

conf t

int fa 0/0

 no ip nat inside

!

int fa 0/1

 no ip nat outside

!

no ip nat inside source list 1 int fa 0/1 overload

no access-list 1

ip route 211.100.10.1 255.255.255.255 fa 0/0 10.10.100.3

<ISP>

conf t

ip route 211.100.10.1 255.255.255.255 fa 0/0 1.1.100.1

access-list 1 permit 211.100.10.1

실제 환경에서는 ISP구간은 우리가 설정할 수 있는 부분이 아니다. (실습환경이기 때문에 구성) 

CE 라우터 확인

-   nat 경로가 삭제되고 Static Routing 경로가 하나 추가되었다.

ASA 방화벽 확인

-   ASA에서 PAT 설정 후 Window_A에서 ping을 보내면 정상적으로 PAT 처리가 되고 응답 트래픽인 ASA까지 돌아오는 것을 확인할 수 있다.

-   응답 트래픽이 Inside 인터페이스로 최종적으로 Ping 테스트는 실패한다.

-   ASA는 현재 L2 모드이고 10.10.1.0/24 대역에 대한 도달성이 없기 때문이다.

-   이를 해결하기 위해서 L2 모드로 동작중인 ASA에서 Static Routing을 구성해야 한다. (Dynamic Routing Protocol은 지원되지 않는다.)

Outside Interface

Inside Interface

ASA Static Routing 설정

<ASA>

conf t 
route inside 10.10.1.0 255.255.255.0 10.10.100.1

Inside Interface

-   내부 ip로 변환되어 정상적으로 ICMP 패킷을 받아온다.

EtherType ACL 설정

라우터, 방화벽 장비에 IPv6 설정

access-list Outside_IN line 2 permit ip any6 any6 

   IPv6 패킷 허용

<DSW>
conf t 
int e 0/1
 ipv6 add 2001:1:1:1::1/64
!

<CE>
conf t 
int fa 0/0
 ipv6 add 2001:1:1:1::2/64
!

<ASA>
conf t 
int BVI 1
 ipv6 add 2001:1:1:1::3/64
!

access-list Outside_IN line 2 permit ip any6 any6  

DSW IPv6 Ping 테스트

-   설정 후 DUAL Stack에 의해서 <DSW>와 <CE> 사이에서 IPv4 / IPv6 트래픽들이 정상적으로 전송되는 것을 확인할 수 있다.

-   ASA에서 Ethertype ACL을 사용하여 Inside에서 Outside로 전송되는 IPv6 트래픽을 차단하려고 한다.

<ASA>

access-list L2_Filter ethertype deny 0x86dd 

access-list L2_Filter ethertype permit any

access-group L2_Filter in interface Inside

!

DSW Ping 테스트

-   ehtertype ACL을 적용하여 Ping이 전송되지 않는다.

ASA 방화벽 확인

-   IPv6가 차단된 것을 로그로 확인할 수 있다.

방화벽 존재 여부 확인

-   공격자가 Target 장치까지 패킷이 전송되는 경로 중간에 방화벽이 존재하는지 파악하기 위해 tracert 등의 명령어를 사용할 수 있다.

-   이 경우 방화벽이 L3 Mode인 경우 공격자는 방화벽의 존재 여부를 파악하는 것이 가능하지만 방화벽이 L2모드인 경우 외부에서 방화벽의 존재를 파악하는 것은 쉽지 않다. 

-   Kali Linux 대신에 Window 구성후 tracert 10.10.1.1 명령어로 확인

<ASA>

access-list Outside_IN line 3 permit ip host 2.2.2.1 any
clear config object

<ISP>

conf t

ip route 10.10.1.0  255.255.255.0 fa 0/0 1.1.100.1

Toplist

최신 우편물

태그