반응형

* 망 구성
10.100.30.101 -- VPN 1 -- ( Public ) -- VPN 2 (10.251.212.240) -- 10.90.65.182

10.100.30.101 -> 10.90.65.182로 pkt을 전송할 경우, 
VPN2 <-> 10.90.65.182 사이 망이 굉장히 복잡하여 10.100.30.101 - 10.90.65.182에 대한 라우팅을 설정할 수 없는 구간이다.

이에따라 아래와 같이 NAT를 설정했다.
NAT를 설정한 구간은, 10.100.30.101 --> 10.90.65.182 이며 'Use Outgoing Interface Address'를 설정했다.


* 설정방법
 . Policy & Objects > IPv4 Policy > 구간선택


* packet 확인
아래와 같이 10.100.30.101 -> 10.90.65.182 pkt이 인입될 경우
10.100.30.101은 10.251.212.240으로 Translation 되어 통신이 완료된다. 


FortiVPN # dia sniffer packet any 'host 10.90.65.182' 4
interfaces=[any]
filters=[host 10.90.65.182]
1.026395 iTest_server in 10.100.30.101.36277 -> 10.90.65.182.21: syn 2654734121 
1.026511 port4 out 10.251.212.240.36277 -> 10.90.65.182.21: syn 2654734121  
4.032451 iTest_server in 10.100.30.101.36277 -> 10.90.65.182.21: syn 2654734121 
4.032509 port4 out 10.251.212.240.36277 -> 10.90.65.182.21: syn 2654734121 
4.989417 iTest_server in 10.100.30.101.40113 -> 10.90.65.182.21: syn 3357824665 
4.989526 port4 out 10.251.212.240.40113 -> 10.90.65.182.21: syn 3357824665 
7.990786 iTest_server in 10.100.30.101.40113 -> 10.90.65.182.21: syn 3357824665 
7.990834 port4 out 10.251.212.240.40113 -> 10.90.65.182.21: syn 3357824665 

반응형
반응형

* VPN에서 Local Network로 Ping 되더라도, VPN Interface - Local Network간 대역이 다를 경우
Local Network에 대한 Routing을 추가해놓아야 한다.
왜?  VPN - Local Network간에는 대역이 동일 or 라우팅 설정 등으로 ping이 이미 되는 상황일 수 있으나,
Site-to-Site는 Remote Network 대역을 Source IP로, 우리 Local Network 대역에 붙어야 하기 때문.
따라서, Local Network <-- VPN <-- Remote Network로 pkt이 올 경우
정확한 가이드를 위해 VPN에서도 Local Network에 대해 라우팅 추가를 미리 설정해준다.

  
* 문제 현상
VPN에 Local Network와 ping이 되지만, 대역이 다른 경우에,
그리고 라우팅이 설정 안 되어 있을 경우, 아래와 같이 수신된 packet을 out 시킬 수 없다.
FortiVPN# dia sniffer packet nay 'host 10.100.30.101' 4
intefaces=[any]
filters=[host 10.100.30.101]
1.140135 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request
6.142442 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request
11.134851 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request
21.124414 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request


* 보완
Local Network에 대한 Routing을 설정 후, 아래와 같이 packet은 정상 out된다.
FortiVPN # dia sniffer packet any 'host 10.100.30.101' 4
interfaces=[any]
filters=[host 10.100.30.101]
73.304160 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request
73.305211 iTest_server out 10.90.65.182 -> 10.100.30.101: icmp: echo reply
74.309417 iTest_server in 10.100.30.101 -> 10.90.65.182: icmp: echo request
74.312548 iTest_server out 10.90.65.182 -> 10.100.30.101: icmp: echo reply
249.096258 iTest_server out 10.90.65.182 -> 10.100.30.101: icmp: echo reply
250.098714 iTest_server out 10.90.65.182 -> 10.100.30.101: icmp: echo reply
^C
6 packets received by filter
0 packets dropped by kernel

반응형
반응형

* 우분투 18.04 버전 기반(Ubuntu 18.04)

1. vpnclient 프로그램 설치
sudo apt install vpnc network-manager-vpnc-gnome



2. 설정
root@VL-harbor:~# cat  /etc/vpnc/default.conf
#IPSec gateway <gateway>
#IPSec ID <group-id>
#IPSec secret <group-psk>
#IKE Authmode hybrid
#Xauth username <username>
#Xauth password <password>
※ sudo vpnc /etc/vpnc/default.conf 혹은 sudo vpnc \default.conf 


3. VPN 연결
# sudo vpnc-connect (끊을때는 sudo vpnc-disconnect)
예시)
root@VL-harbor:~# cat /etc/vpnc/default.conf
IPSec gateway [VPN Public IP]
IPSec ID [VPNGroupID]
IPSec secret [VPNGroup-password]
#IKE Authmode hybrid  ---> 주석 처리해도 무방함
Xauth username [VPN Client ID]
Xauth password [VPN Client password]
root@VL-harbor:~#


4. VPN 연결 확인:  sudo vpnc-connect 이후  ip addr 에서 tun0 로 client IP 할당 된것 확인가능
root@VL-harbor:~# ip addr

  : tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc fq_codel state UNKNOWN group default qlen 500    link/none
    inet 172.20.38.153/32 scope global tun0  //# Assigned
       valid_lft forever preferred_lft forever
    inet6 fe80::59bf:bd0d:ee37:3533/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

 * 혹은 아래처럼 default route가 tun0 로 잡힌것도 확인 가능함
:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0  //# set
121.137.98.146  150.100.200.1   255.255.255.255 UGH   0      0        0 ens3
150.100.200.0   0.0.0.0         255.255.255.0   U     0      0        0 ens3
172.20.38.152   0.0.0.0         255.255.255.248 U     0      0        0 tun0


* VPN 서버에서 split vpn 설정해두었다면, 외부망 ping도 가능
:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=3.87 ms\


위는 CLI 로 하는 방법이며, 리눅스에 GUI 가 있다면 아래 링크를 통해 GUI base 로도 설정 가능함.
https://johnpili.com/how-to-connect-to-a-cisco-vpn-in-ubuntu-18-04-lts/


출처: 부서의 VPN 전문가 선배님

반응형
반응형

양단의 IPSec이 Phase-2까지 Completed 되었으나 실제 local IP간 icmp가 실패하는 문제가 발생하였다.

이유를 확인하기 위해 Cisco ASDM의 Monitoring에서 해당ip로 Logging을 잡아보면, 아래와 같은 NAT 이슈가 발생하고 있다.

현상

5 Apr 28 2020 11:04:18 305013 10.10.0.214 20.20.20.50

Asymmetric NAT rules matched for forward and reverse flows; Connection for icmp src outside:10.10.0.214 dst AWS:20.20.20.50 (type 8, code 0) denied due to NAT reverse path failure

설명 및 해결방법

10.10.0.214 -> 20.20.20.50 connection에 대해 잘못된 NAT rule이 적용되어(동일하게 사용하는 existing pool이 또 있다는 것임), NAT reverse path failure로 인해 connection이 deny 되고있었다.

이는 해당 VPN Group의 NAT Exempt 설정을 dst쪽 network로 설정해주면 된다.

설정

Configuration > Site-to-Site VPN > Connection Profiles > 해당 Connection profile name 클릭 > Basic > NAT exempt > Exempt ASA side host/network from address translation 에서 dst쪽 inteface 선택.

이후 해당 vpn profile은 NAT Exemption이 되므로 connection은 정상연결 완료된다.

* NAT Exempt: This allows you to exempt the local network addresses from network translation.

반응형
반응형

 

문제가 발생했을 때 분석을 위해 알아본 Cisco ASA VPN의 packet 캡처 방법.

ASDM의 Monitoring에서 실시간 logging을 제공하나, ACL/NAT단에서 걸릴 경우 아무런 패킷도 Trace 창에 보이지 않게되는데, 이럴 때 유용한 패킷 캡처 방법이다.

 

1. packet capture 방법(설명)

- 출처: Cisco사 CLI 설명서 1: Cisco ASA Series 일반 운영 CLI 구성 가이드, 9.10 : 1223 page ~ 1228 page

옵션 값이 매우 많아서 자료를 그대로 들고왔다.

 

 

 

이렇게 패킷캡처를 설정한 후에는 아래와 같이 패킷 캡처를 보는 명령어가 별도로 존재한다.

패킷 캡처 설정 후, 아래 명령어를 실행해야 실제 캡처되는 패킷을 확인할 수 있다.

 

 

2. 설정 및 실습 - CLI

그렇게 직접 실습해 본 packet capture.

현재 20.20.20.50 - 20.20.20.246은 NAT 설정 오류로 인해 20.20.20.246 -> 20.20.20.50으로 Ping을 실행할 경우 packet이 drop되는 상태이다. 그래서 20.20.20.50 -> 20.20.20.246 방향과 20.20.20.246 -> 20.20.20.50 패킷 캡처를 진행해보았다.

 

1) packet capture

ciscoasa# capture CAP_TEMP_AWS buffer 2048 interface AWS match icmp host 20.20.20.246 any
ciscoasa# capture LOG_DROP type asp-drop all match ip host 20.20.20.50 host 20.20.20.246
ciscoasa# capture LOG_DROP type asp-drop all match ip host 20.20.20.246 host 20.20.20.50

 

2) show capture

packet 캡처를 설정 후, show capture를 통해 패킷 캡처를 확인한다.

#show capture    // 전체 capture되고 있는 packet capture 확인

Result of the command: "show capture"
capture CAP_TEMP_AWS type raw-data buffer 2048 interface AWS [Capturing - 456 bytes] 
  match ip host 20.20.20.246 any 
  match ip host 20.20.20.248 any 
capture LOG_DROP type asp-drop all [Buffer Full - 524284 bytes] 
  match ip host 20.20.20.50 host 20.20.20.248 

 

2-1) 전체 packet capture 확인

#show capture // 전체 capture되고 있는 packet capture 확인 Result of the command: "show capture" capture

 

CAP_TEMP_AWS type raw-data buffer 2048 interface AWS [Capturing - 456 bytes] match ip host 20.20.20.246 any match ip host 20.20.20.248 any capture LOG_DROP type asp-drop all [Buffer Full - 524284 bytes] match ip host 20.20.20.50 host 20.20.20.248

 

2-2) 특정 packet capture 확인

Remove the captures when done.

ciscoasa# no capture CAP_TEMP_AWS
ciscoasa# no capture LOG_DROP


그리고 원인 파악을 위해 show nat로 NAT를 확인한다.

설정된 NAT에는 패킷이 걸렸으나, 다른 이슈로 인해 untranslate가 되었다.

현재 왜 untranslate가 되었는지 파악하는 중이다.

 

2-2. 설정 및 실습 - ASDM

패킷캡처는 ASDM에서도 아래 방법을 통해 진행할 수 있다.

1) Configuration > Firewall > NAT Rules > Packet Trace

 

 

 

Packet Trace를 클릭 후 interface와 packet Type을 설정 후 설정값들을 입력하면 애니메이션과 함께 어떤 부분에서 어떤 rule이 적용됐는지 + 버튼을 통해 확인할 수 있다.

 

어떤 단계들을 거쳐왔는지 + 버튼을 통해 확인해본다.

 

 

 

반응형
반응형

1. 문제현상

Cisco Remote Access VPN으로 연동되는 remote client - remote server간 ping은 성공되지만 ssh 접속 불가

2. 문제 로그

Dec 06 2017 12:57:16: %ASA-6-305011: Built dynamic TCP translation from inside:10.71.123.151/57475 to outside:192.40.147.229/24073

Dec 06 2017 12:57:16: %ASA-6-106015: Deny TCP (no connection) from 10.71.123.151/57475 to 23.74.76.94/443 flags ACK on interface inside

Dec 06 2017 12:57:28: %ASA-6-106100: access-list inside_acl permitted tcp inside/10.71.123.151(57517) -> outside/23.49.100.174(80) hit-cnt 1 first hit [0x3cf7b301, 0x0]

Dec 06 2017 12:57:28: %ASA-6-305011: Built dynamic TCP translation from inside:10.71.123.151/57517 to outside:192.41.148.241/63165

Dec 06 2017 12:57:28: %ASA-6-106015: Deny TCP (no connection) from 10.71.123.151/57517 to 23.49.100.174/80 flags ACK on interface inside

3. 문제 원인 및 해결

"Deny TCP (no connection) from" is a expected behavior when packet faces asymmetric routing or different firewall context.

Cisco community의 위 답변에 따르면 해당 로그는 라우팅 또는 firewall 문제이지만, 본인의 경우 ping은 되었으므로 라우팅은 문제 없음. NAT/Firewall 확인 필요.

해당 client - server의 specific대역에 대한 Static NAT 설정 후 ssh 접속 가능함을 확인.

+ 그래도 안 될 경우에는 vpn 내부 문제일 수도 있다. 그럴 땐 CLI에서 'clear conn'를 해주면 된다.

반응형
반응형

1. NAT(Network Address Translation, NAT)

: 내부 네트웍 IP를 외부 IP대역으로 변환(translation)해주는 것.

변환해주는 이유는 내부 네트워크 보호 또는 Public IP 부족 등을 해결하기 위해.

여러 개의 내부 네트웍 대역이 1개의 Public IP를 port별로 나누어서 사용할 수 있다. (= PAT)

Static NAT는 하나의 내부 IP을 하나의 외부 IP와 1:1 매핑, Dynamic NAT는 N:N, PAT는 1:N이 가능하다.

- Static NAT

. 동작 방식

1) 내부 IP 주소에 따른 외부 IP주소를 미리 1:1 설정

2) 외부 주소에서 내부로 들어온 패킷을 NAT에서 내부 주소로 변환 후 전달

외부 -----------(NAT)-------------> 내부

- Dynamic NAT

. 내부 IP대역, 외부 IP대역을 N:N 설정 후, 실제로 패킷이 인입될 때 설정한 IP POOL에 있는 IP가 할당된다.

2. PAT(Port Address Translation)

: 일반적인 NAT는 내부 네트워크 주소와 외부로 변환되는 주소가 1:1로 매치되는 경우를 말한다.

만약, 다수의 내부 네트워크 주소가 하나의 주소로 변환되어 외부로 나갈 경우에는 오버로딩(Overloading) 또는 PAT (Port Address Translation) 기능이 필요하다.

PAT는 전송 계층 식별자인 TCP와 UDP의 포트 번호, ICMP 쿼리 식별자까지 변환함으로써 주소 변환의 개념을 한층 발전시켰다.

하나의 공인 IP 주소만 있어도 내부 네트워크 전체 주소를 변환할 수 있는 오버로딩 기능덕분에 IP 주소 고갈을 해결할 수 있다.

3. Cisco VPN에서 NAT 설정

Configuration 탭 > Firewall > NAT Rules 에서 인터페이스별 NAT 설정

any, any 설정은 대역마다 다른 IP를 할당할 수 없으므로, 처음부터 명확한 IP 대역을 설정하는 것이 좋음.

Source Intf는 내부 대역으로 설정하고 Dest Intf는 외부 대역으로 설정 및 Dynamic PAT로 설정을 해야 ip 고갈을 해결할 수 있다.

+ Description은 미래에 이걸 왜 설정했는지 까먹는 경우가 생기므로.. 미리미리 작성해두는 것이 좋다.

4. Cisco VPN에서 NAT된 내역 조회

Monitoring 탭 > VPN > VPN Statistics > Sessions에서 VPN 접속 방식(Site-to-Site, Remote Access 등)에 따라 조회 가능하다.

각 접속된 방식 및 User에 따라 Assigned IP Address, Public(Peer) IP Address를 함께 확인할 수 있다.

5. NAT Policy 및 실제 사용되는 packet량 조회

Tolls > Command Line Interface 에서 "show nat"

Result of the command: "show nat"

Manual NAT Policies (Section 1)

1 (trial) to (outside) source dynamic DM_INLINE_NETWORK_20 interface

translate_hits = 8996, untranslate_hits = 3

2 (AT_S) to (outside) source dynamic DM_INLINE_NETWORK_3 interface destination static 8.8.0.0 8.8.0.0 description Ms.YR for_DNS__by Jane_200518

translate_hits = 124663, untranslate_hits = 124664

3 (AT_S) to (outside) source dynamic any interface inactive

translate_hits = 0, untranslate_hits = 0

4 (AT_S) to (any) source static 172.20.20.0 172.20.20.0 destination static NETWORK_OBJ_172.20.62.232_29 NETWORK_OBJ_172.20.62.232_29 unidirectional description Mr.Choi_Jongtak__by_Jane_200513

translate_hits = 0, untranslate_hits = 161

5 (AT_S) to (outside) source static any any destination static NETWORK_OBJ_172.20.38.128_29 NETWORK_OBJ_172.20.38.128_29 no-proxy-arp route-lookup

translate_hits = 0, untranslate_hits = 0

6 (AWS) to (outside) source static NETWORK_OBJ_20.20.20.50 NETWORK_OBJ_20.20.20.50 no-proxy-arp route-lookup description For_mobile__by_S

translate_hits = 3554, untranslate_hits = 9901

7 (AT_S) to (outside) source static any any destination static NETWORK_OBJ_172.20.38.80_28 NETWORK_OBJ_172.20.38.80_28 unidirectional description Mr.Jung__by_Jane_200515

translate_hits = 0, untranslate_hits = 18

8 (DEMO) to (outside) source dynamic 50.50.50.0 interface description Mr.cho__by_Jane_200519

translate_hits = 0, untranslate_hits = 0

* 참고

• translate_hits: counter for real to mapped IP addresses       // 내부 --> 외부

• untranslate_hits: counter for mapped to real IP addresses  // 내부 <-- 외부

즉, 외부에서 내부로 서비스 접속을 시도하게 되면 untranslate_hits count가 발생된다.

예를 들어 아래의 IP에 대해서 Inside to Outside NAT 설정돼 있다면, hits가 되는 방향은 아래와 같다.

Inside Real IP = 172.20.43.10

Outside Mapping IP = 1.1.1.1

=

Translate_hits = 172.20.43.10 to 1.1.1.1

Untranslate_hits = 1.1.1.1 to 172.20.43.10

반응형
반응형

Cisco사의 split tunneling(split vpn)의 개념과 설정방법에 대해 알아본다.

설정방법은 Cisco VPN 프로그램인 ASDM을 사용하였다.

1. Split tunneling이란?

특정 트래픽에 대해서만 VPN을 거치게하고 다른 트래픽은 인터넷으로 보낼 수 있는 방법.

일반적으로 VPN을 사용하는 이유는 외부에서 내부 네트워크에 접속하기 위함인데, 이와 동시에 외부 망(구글 등 인터넷)도 해당 vpn으로 함께 사용할 수 있다.

보안에 취약하지만 작은 네트워크라면(100~200명) 부담없이 사용할 수 있다.

(네트워크가 광범위하다면 과한 트래픽 발생으로 사용에 조심할 필요가 있다.)

2. 설정방법 (Cisco ASDM)

1) 메뉴 접속

Configuration > Remote Access VPN > Network(Client) Access > Group Policies > Split할 VPN 계정 클릭 후 Edit 선택

2) Policy 및 Network list 설정

Edit Internal Group Policy창이 팝업되면, 왼쪽 메뉴에서 Advanced > Split Tunneling

- Policy: Inherit 체크 해지 후 'Tunnel Network List Below' 선택.

- Network List: Manage button을 눌러, 해당 계정에서 사용할 vpn network range 등록 후 해당 network name 선택

* Network는 본인이 VPN대역으로 사용할 Internal 대역을 ACL/ACE로 별도 추가해야한다.

이렇게 저장하고 나면,

해당 계정에서 사용할 network는 vpn 터널을 통해 트래픽이 전달되고, 이 외 outside 트래픽(ex. Google 등 웹사이트)은 별도의 터널을 통해 outside로(ex. google) 트래픽을 내보낼 수 있다.

따라서, vpn에 접속하면 기존엔 vpn접속한 대역 외엔 outside 네트워크로 접속이 불가했지만 split tunneling 수행으로, 하나의 vpn 계정을 통해 2개의 네트워크 대역을 사용할 수 있다!

 

반응형
반응형

Access-List

목적

VPN에서 새로운 Interface를 설정할 때 ACL을 설정해서

각 Remote-access로 접속하는 vpn client들에게 routing table을 내려주기 위함.

 

개념

Standard ACL: 발신지의 IP Adress만으로 Access를 제한. 번호는 1-99사용

Extended ACL: 발신의 IP/Port, 수신의 IP/Port를 사용하여 Access를 제한. 번호는 100-199 사용

 (더 자세한 설명은 아래 출처 링크 참고)

 

명령어

access-list [ACL NAME] standard permit 21.21.21.0 255.255.255.0    // ipsec 통신할 내부대역 지정

group-policy [Interface] attributes   // 설정한 Interface에 ACL 적용

split-tunnel-policy tunnelspecified   // split-tunnel 활성화 (Internet Traffic은 ASA로 오지 않고 client에서 바로 인터넷 사용)

split-tunnel-network-list value [ACL Name]   // 해당 ACL Traffic만 ipsec 통신 사용

ASDM

* ACL

Firewall > Advanced > ACL Manager or Standard ACL

- Standard ACL: Standard ACL에서 확인

- Extended ACL: ACL Manager에서 확인

* Client 라우팅 / Split-tunneling 설정

Remote Access VPN > Network Access > Group Policy > Group Policy 선택 > Edit > Advanced > Split Tunneling > Policy & NetworkList 선택

 

* Policy:Tunnel Network List Below를 설정해야 해당 Network List만 IPSEC 통신을 함. (이외는 모두 외부 통신)

 - Network List엔 Standard ACL만 있음.

 

 

ACL 개념 및 추가 출처

There are two types of IPv4 ACLs:

  • Standard ACLs: These ACLs permit or deny packets based only on the source IPv4 address.
  • Extended ACLs: These ACLs permit or deny packets based on the source IPv4 address and destination IPv4 address, protocol type, source and destination TCP or UDP ports, and more.

For example, Example 4-3 shows how to create a standard ACL. In this example, ACL 10 permits hosts on the source network 192.168.10.0/24. Because of the implied “deny any” at the end, all traffic except for traffic coming from the 192.168.10.0/24 network is blocked with this ACL.

https://www.ciscopress.com/articles/article.asp?p=3089353&seqNum=7

반응형

+ Recent posts