336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


1.GRE 터널링

1)Host_A(192.168.1.10/24)                                                                                            
  - Dst: Host_B(사설IP: 192.168.2.10/24)                
  - Src: Host_A(사설IP: 192.168.1.10/24)             


2)Router_A(GRE터널링: int tunnel 0, 172.16.0.1/30, src 222.222.1.10/24, dst 222.222.2.10/24) 
- Dst:Router_B(공인IP: 222.222.2.10/24)[Dst: Host_B(사설IP: 192.168.2.10/24)]
- Src:Router_A(공인IP: 222.222.1.10/24)[Src: Host_A(사설IP: 192.168.1.10/24)]


3)Router_B(GRE터널링: int tunnel 0, 172.16.0.2/30, src 222.222.2.10/24, dst 222.222.1.10/24)                                      
  - Dst:Router_B(공인IP: 222.222.2.10/24)[Dst: Host_B(사설IP: 192.168.2.10/24)]      
  - Src:Router_A(공인IP: 222.222.1.10/24)[Src: Host_A(사설IP: 192.168.1.10/24)]       


4)Host_B(192.168.2.10/24)
  - Dst: Host_B(사설IP: 192.168.2.10/24)
  - Src: Host_A(사설IP: 192.168.1.10/24)

 

패킷구조 > FRAME = [ETHERNET_Header] [IP_Header(222.222.x.x)] [GRE_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]

 


2.IPSec터널링

단순히 GRE 터널링을 통한 VPN 사용은 기밀성에 취약하다.
IPSec을 사용함으로써 기밀성, 무결성(HMAC)을 보장할 수 있다.

IPSec 동작에는 3개의 터널이 필요하다.
첫번째 터널은 암호화에 필요한 키교환 터널이고
두번째와 세번째 터널은 암호화된 데이터(트래픽)가 전송되는 터널이다.

 

1) IKE 1단계
1-1) 1단계 키교환 협상(Main-Mode)
  VPN_A : 보안정책리스트 전달
  VPN_B : 보안정책 응답
  VPN_A : 키정보 공유(Diffie-Hellman 알고리즘)
  VPN_B : 키정보 공유(Diffie-Hellman 알고리즘)
  VPN_A : IPSec 피어 인증 시작
  VPN_B : IPSec 피어 인증 응답
  양방향 보안채널생성(ISAKMP SA) : 키 정보 교환(암호화종류, 해시종류, 키정책등 교환)

 

1-2) 1단계 키교환 협상(Aggressive-Mode)
  VPN_A : 보안정책(키/인증정보 포함) 전달
  VPN_B : 보안정책 응답
  VPN_A : 암호화 해시 정보 전달
  양방향 보안채널생성(ISAKMP SA) : 키 정보 교환(암호화종류, 해시종류, 키정책등 교환)

 

2) IKE 2단계
  양방향 보안채널생성(ISAKMP SA) 후 트래픽 암호화를 위한 보안터널생성(IPSec SA)
  보안터널(IPSec SA)은 단방향 터널이다. 그러므로 송신 IPSec 터널과 수신 IPSec 터널이 생성된다.


  패킷의 암호화에는 AH(Athentication Header) 프로토콜과 ESP(Encapsulating Security Payload) 프로토콜이 사용된다.
    - AH : 암호화를 제공하지 않고 패킷 조작 여부 같은 확인 작업만 한다. (무결성)
    - ESP : 상위 계층 정보인 페이로드의 암호화를 진행한다. (일부 무결성+기밀성)

 

  2-1) AH 터널모드 패킷구조  > [IP_Header(222.222.x.x)] [AH_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]
        - 인증 구간 > [IP_Header(222.222.x.x)] [AH_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload]


  2-2) AH 전송모드 패킷구조  > [IP_Header(192.168.x.x)] [AH_Header] [TCP_Header] [Payload]
        - 인증 구간 > [IP_Header(192.168.x.x)] [AH_Header] [TCP_Header] [Payload]

 

  2-3) ESP 터널모드 패킷구조 > [IP_Header(222.222.x.x)] [ESP_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 인증 구간 > [ESP_Header] [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 암호화 구간 > [IP_Header(192.168.x.x)] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]


  2-4) ESP 전송모드 패킷구조 > [IP_Header(192.168.x.x)] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 인증 구간 > [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer]
        - 암호화 구간 > [TCP_Header] [Payload] [ESP_Trailer]

 

  2-5) AH+ESP 전송모드 패킷구조 > [IP_Header(192.168.x.x)] [AH_Header] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]

        - 인증 구간 > [IP_Header(192.168.x.x)] [AH_Header] [ESP_Header] [TCP_Header] [Payload] [ESP_Trailer] [ESP_Auth]
        - 암호화 구간 > [TCP_Header] [Payload] [ESP_Trailer]


참고 : IP Protocol Number - icmp=1, igmp=2, tcp=6, udp=17, gre=47, eigrp=88, ospf=89

 


GRE over IPSec VPN : 인터넷을 통한 본사와 지점간의 통신에 사용

SSL VPN : 집에서 회사간 통신에 사용


 

'Analysis > Network' 카테고리의 다른 글

Tcpdump usage examples  (0) 2016.04.26
HTTPS와 SSL 이해  (0) 2016.04.15
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Tcpdump usage examples
> tcpdump -ni eth0 src host 192.168.1.1 and dst host 172.16.1.1 and dst port 23 -s 1500 -w /tmp/tr.pcap

> tcpdump -i eth0 -c 10 -w [Filename]     // 송수신 되는 패킷들 파일에 저장 및 확인 (10개 카운트)

> tcpdump -r [Filename]                       // TCPDUMP에 저장된 패킷헤더 확인

> tcpdum -Xqnr [Filename].log               // 캡쳐한 tcpdump.log파일의 내용을 ASCII모드로 확인


* 스니핑모드(tcpdump 실행시) 발생되는 로그

  eth0: Setting promiscuous mode.
  device eth0 entered promiscuous mode
  device eth0 left promiscuous mode

목적지 주소가 1.2.3.x/24 와 1.2.4.x/25 이고 80번포트인 패킷 캡쳐
> tcpdump -q \( dst net 1.2.3.0/24 or 1.2.4.0/25 \) and dst port 80
 
A 호스트로/부터의 모든 도착/출발 패킷 출력
> tcpdump host A

A 호스트와 B 또는 C 사이의 모든 트래픽 출력
> tcpdump host A and \( B or C \)

A호스트와 B를 제외한 호스트 간의 모든 IP 패킷 출력
> tcpdump ip host A and not B

로컬호스트와 Berkeley의 호스트들 간의 모든 트래픽 출력
> tcpdump net ucb-ether

게이트웨이 A를 통한 모든 ftp 트래픽 출력
> tcpdump 'gateway A and (port ftp or ftp-data)'

로컬네트워크로/부터가 아닌 모든 트래픽 출력
> tcpdump ip and not net

로컬네트워크가 아닌 TCP 시작과 마지막 패킷 출력
> tcpdump 'tcp[13] & 3 != 0 and not src and dst net '

게이트웨이 A를 통해 보내지는 576 Bytes보다 긴 IP 패킷 출력
> tcpdump 'gateway A and ip[2:2] > 576'

이더넷이 아닌 IP 브로드 또는 멀티 캐스트 패킷 출력
> tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

echo 요청/응답이 아닌 모든 ICMP 패킷 출력 (ping 아닌 패킷) 
> tcpdump 'icmp[0] != 8 and icmp[0] != 0'

1.2.3 과 1.2.4 IP주소 (내부) 패킷을 제외한 모든 패킷 출력
> tcpdump src net 1.2.3 or 1.2.4 and not dst net 1.2.3 or 1.2.4

br1 인터페이스의 모든 패킷 출력
> tcpdump -i br1
See the list of interfaces on which tcpdump can listen:
tcpdump -D

Listen on interface eth0:
tcpdump -i eth0

Listen on any available interface (cannot be done in promiscuous mode. Requires Linux kernel 2.2 or greater):
tcpdump -i any

Be verbose while capturing packets:
tcpdump -v

Be more verbose while capturing packets:
tcpdump -vv

Be very verbose while capturing packets:
tcpdump -vvv

Be verbose and print the data of each packet in both hex and ASCII, excluding the link level header:
tcpdump -v -X

Be verbose and print the data of each packet in both hex and ASCII, also including the link level header:
tcpdump -v -XX

Be less verbose (than the default) while capturing packets:
tcpdump -q

Limit the capture to 100 packets:
tcpdump -c 100

Record the packet capture to a file called capture.cap:
tcpdump -w capture.cap

Record the packet capture to a file called capture.cap but display on-screen how many packets have been captured in real-time:
tcpdump -v -w capture.cap

Display the packets of a file called capture.cap:
tcpdump -r capture.cap

Display the packets using maximum detail of a file called capture.cap:
tcpdump -vvv -r capture.cap

Display IP addresses and port numbers instead of domain and service names when capturing packets (note: on some systems you need to specify -nn to display port numbers):
tcpdump -n

Capture any packets where the destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n dst host 192.168.1.1

Capture any packets where the source host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n src host 192.168.1.1

Capture any packets where the source or destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n host 192.168.1.1

Capture any packets where the destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n dst net 192.168.1.0/24

Capture any packets where the source network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n src net 192.168.1.0/24

Capture any packets where the source or destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n net 192.168.1.0/24

Capture any packets where the destination port is 23. Display IP addresses and port numbers:
tcpdump -n dst port 23

Capture any packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n dst portrange 1-1023

Capture only TCP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n tcp dst portrange 1-1023

Capture only UDP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n udp dst portrange 1-1023

Capture any packets with destination IP 192.168.1.1 and destination port 23. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and dst port 23"

Capture any packets with destination IP 192.168.1.1 and destination port 80 or 443. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and (dst port 80 or dst port 443)"

Capture any ICMP packets:
tcpdump -v icmp

Capture any ARP packets:
tcpdump -v arp

Capture either ICMP or ARP packets:
tcpdump -v "icmp or arp"

Capture any packets that are broadcast or multicast:
tcpdump -n "broadcast or multicast"

Capture 500 bytes of data for each packet rather than the default of 68 bytes:
tcpdump -s 500

Capture all bytes of data within the packet:
tcpdump -s 0


'Analysis > Network' 카테고리의 다른 글

[VPN] 터널링  (0) 2016.08.09
HTTPS와 SSL 이해  (0) 2016.04.15
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

HTTPS/SSL(TLS) 인증서
HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자이다.
HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매우 쉽다.
즉, HTTPS는 로그인을 위해서 서버로 비밀번호를 전송하거나,  중요한 기밀 문서를 열람하는 과정에서

악의적인 감청이나 데이터의 변조등이 방지를 위한 목적으로 사용된다.

암호화 방식은 RSA 2048 방식을 주로 사용하며 최근에는 더 강력한 암호화 방식인 ECC(Elliptic curve cryptography)를 사용한다.


1. HTTPS/SSL
HTTPS와 SSL를 같은 의미로 이해하고 있는 경우가 많다.
HTTPS는 SSL 프로토콜 상위의 프로토콜이며 HTTPS는 SSL을 포함한다.

2. SSL/TLS
네스케이프에 의해서 SSL이 발명되었다.
이것이 점차 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다.
TLS 1.0은 SSL 3.0을 계승한다.
TLS라는 이름보다 SSL이라는 이름을 많이 사용하며 병행해서 사용하기도 한다.

3. SSL 디지털 인증서
SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다.
클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다.
클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다.
SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같다.
 1) 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
 2) 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
 3) 통신 내용의 악의적인 변경을 방지할 수 있다.


아래사이트에 자세하게 정리되어 있다.

https://opentutorials.org/course/228/4894


아래사이트에서 웹서버의 SSL 안전도를 테스트할 수 있다.

https://www.ssllabs.com/


'Analysis > Network' 카테고리의 다른 글

[VPN] 터널링  (0) 2016.08.09
Tcpdump usage examples  (0) 2016.04.26
Next Squence Number  (0) 2016.03.24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기본적으로 TCP 프로토콜은 초기 3Way Handshaking 후
데이터 전송 시 수신자의 윈도우 사이즈만큼(65536bytes) 수신확인(Ack) 없이 전송한다.(윈도잉)


Next Squence Number 계산


1) Client, Seq는 [ 58 2e 7d 4d ], 3Way Handshaking 시작

Client  ----- [ TCP/syn ] ---->  Server

[ 58 2e 7d 4d ] Seq

[ 00 00 00 00 ] Ack (Server에서 보낸 확인 패킷이 없으니 Acknowledgment Number는 0)


2) Server, Seq는 [ 7c b7 34 26 ], Client의 Seq가 [ 58 2e 7d 4d ]인 패킷을 수신확인, 다음 Client의 Seq는 [ 58 2e 7d 4e ]

Client  <---- [ TCP/syn/ack ] ------  Server 

                                    [ 7c b7 34 26 ] Seq

                                    [ 58 2e 7d 4e ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Client Seq는 [ 58 2e 7d 4e ], Server의 Seq가 [ 7c b7 34 26 ]인 패킷은 수신확인, 3Way HandShaking 종료

Client  ----- [ TCP/ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

[ 7c b7 34 26 ] Ack (Sever에서 보낸 패킷에 대한 확인 응답)


1) Client, Seq는 [ 58 2e 7d 4e ]

(TCP Segment 길이가 386(0x182), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ])

다음 Server의 Seq는 [ 7c b7 34 27 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

[ 7c b7 34 27 ] Ack (Server의 Next Sequence Number)


2-1) Server, Seq는 [ 7c b7 34 27 ]

Client의 TCP Segment에 대한 확인응답 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ] 

Client  <---- [ TCP/ack ] -----  Server

[ 7c b7 34 27 ] Seq (다음 패킷부터 Data를 보내고 마지막 패킷에서 psh,ack로 데이터 전송 종료를 알림)

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


2-2) Server, Seq는 [ 7c b7 34 27 ], HTTP/1.1 200 OK

(TCP Segment 길이가 1026(0x402), Client가 정상 수신하면 Client의 Ack는 [ 0x7cb73427 + 0x402 = 7c b7 38 29 ])

다음 Client의 Seq는 [ 58 2e 7e d0 ]

Client  <---- [ HTTP/psh,ack ] -----  Server

[ 7c b7 34 27 ] Seq (HTTP/psh,ack)

Next Sequence Number --> Seq + TCP Segment Length = [ 7c b7 38 29 ]

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Cient, Seq는 [ 58 2e 7e d0 ]

(TCP Segment 길이가 387(0x183), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7ed0 + 0x183 = 58 2e 80 53 ])

다음 Server의 Seq는 [ 7c b7 38 29 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7e d0 ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

7c b7 38 29 ] Ack (Server에서 보낸 패킷에 대한 확인 응답 + Server의 Next Sequence Number)

.

.

.

.




'Analysis > Network' 카테고리의 다른 글

[VPN] 터널링  (0) 2016.08.09
Tcpdump usage examples  (0) 2016.04.26
HTTPS와 SSL 이해  (0) 2016.04.15

+ Recent posts