Terriermon - Digimon

9.10

2020. 9. 10. 17:36네트워크


이더넷, 인터넷, 인트라넷 차이
이더넷:  LAN(Local Area Network) 에서 사용하는 네트워크 방식입니다.한대의 스위치(허브) 혹은 컴퓨터끼리 다이렉트로 연결되어있는 상태도 이더넷 네트워크 방식으로 연결되어있다 라고 말할 수 있습니다.
이더넷에서는 CSMA/CD 방식을 통한 통신을 하게됩니다.다른 피시가 통신중인 회선에 끼어들기가 안된다는거죠.
이더넷은 서로 가까이있는 컴퓨터를 연결하는 데 사용되는 근거리 통신망입니다. 이더넷은 기본적으로 로컬 영역의 컴퓨터가 서로 연결할 수있게 해주는 네트워크입니다. 컴퓨터가 서로간에 데이터를 전송할 수있게 해주는 기술 그룹입니다. 이더넷을 통해 연결된 컴퓨터는 대개 같은 건물 내에 있거나 서로 가까이에 있습니다. 최신 기술과 이더넷 케이블의 개선으로 이더넷 네트워크 범위를 최대 10km까지 향상시킬 수 있습니다. 그러나 컴퓨터가 서로 케이블을 연결하기 위해 케이블 미터를 사용하기 때문에 서로 멀리 떨어져있는 컴퓨터를 연결하는 것은 비현실적입니다.
인터넷: 전세계에 있는 모든 네트워크를 연결한 것 이라고 말할 수 있습니다.
인터넷은 멀리있는 컴퓨터가 정보에 액세스하기 위해 연결할 수있는 광역 네트워크
인터넷은 컴퓨터 네트워크를 전세계에 연결하는 거대한 글로벌 시스템입니다. 수많은 개인, 공공, 학술, 비즈니스 및 정부 네트워크가 인터넷을 통해 서로 연결되어 엄청난 양의 정보, 리소스 및 서비스를 공유합니다. 인터넷은 웹 페이지에 액세스하고, 전자 메일을 보내고, 음악을 듣거나 온라인으로 비디오를 보는 데 사용합니다. 그것은 오늘날 우리가 일반적으로 당연한 것으로 여기는 광범위한 정보를 제공합니다
인트라넷 : 폐쇄적으로 구축되어있는 네트워크망

시리얼 인터페이스는 DSU 또는 CSU라는 전용선 모뎀에 연결됨. 라우터에 부여해야 하는 IP 주소는 이더넷 인터페이스와 시리얼 인터페이스에 부여함
이더넷용 IP 주소는 우리가 내부에서 사용하기 위해 부여 받은 IP 주소 중 하나를 배정해야 함. 내부 네트워크에 접속되기 때문, 
시리얼 주소는 라우터가 접속하는 상대편(ISP 업체) 라우터의 시리얼 인터페이스와 IP 주소를 서로 맞추어야 함. 상대편 라우터의 시리얼과는 같은 네트워크가 되어야 함.

브로드캐스트 영역 : 하나의 PC가 데이터를 뿌렸을 때 그 데이터를 라우터를 거치지 않고도 바로 받을 수 있는 영역
네트워크 영역은 모두 같아야 하고 호스트 부분은 모두 달라야 정상적인 통신이 가능하다. 만약 호스트가 같게 되면 두 PC는 서로 IP 주소 충돌이 생겨서 통신이 불가능하게 된다. 
IP 주소 중에 네트워크 부분만이 라우터가 라우팅을 할 때 참고하는 부분이다.

클래스A: 하나의 네트워크가 가질 수 있는 호스트 수가 가장 많은 클래스. 0으로 시작
1.0.0.0 ~ 127.255.255.255
클래스A가 가질 수 있는 호스트의 수 : 16,777,214개
클래스B: 맨 앞이 반드시 10으로 시작. 
128.0.0.0 ~191.255.255.255
클래스C: 맨 앞이 반드시 110으로 시작.
192.0.0.0 ~ 223.255.255.255
C클래스C가 가질 수 있는 호스트의 수: 254개

서브넷마스크
클래스A : 255.255.255.0
클래스B : 255.255.0.0
클래스C : 255.0.0.0
서브넷 마스크란 IP 주소를 가지고 어디까지가 네트워크 부분이고, 또 어디까지가 호스트 부분인가를 나타내는 역할을 한다.
네트워크 부분은 서브넷 마스크가 이진수로 '1'인 부분이고, 호스트 부분은 서브넷 마스크가 이진수로 '0'인 부분이다. 255.255.255.0은 1111 1111.1111 1111.1111 1111.0000 0000와 같다.
하나의 주소를 서브넷 마스크를 씌워서 작은 네트워크로 만드는 것을 서브네팅이라고 한다.
서브넷 마스크는 디폴트 서브넷 마스크와 무언가 변형을 한 서브넷 마스크로 나누어 볼 수 있다. 그리고 서브넷 마스크를 사용하는 이유는 커다란 네트워크(호스트 숫자가 많은 네트워크)를 작은 네트워크 여러 개로 나누어서 쓰기 위함이다.
서브넷 마스크를 만들 때는 이진수로 봤을 때 '1'들 사이에 '0'이 오면 안된다. 예1) 255.255.255.15 (X) -> 1111 1111.1111 1111.1111 1111.0000 1111 (X) 예2) 255.255.255.252 (O)-> 1111 1111.1111 1111.1111 1111.1111 1100 (O)
호스트 부분이 전부 '0'인 주소는 호스트 주소로 사용할 수 없다. 네트워크 주소이기 때문이다. 어떤 특정한 호스트나 PC에서 사용하는 주소가 아니라 네트워크 그 자체를 나타냄
호스트 부분이 전부 '1'인 주소는 호스트 주소로 사용할 수 없다. 브로드캐스트 주소이기 때문이다. 모든 호스트에게 보낼 메시지가 있을 때 210.100.1.255를 사용해서 210.100.1.0 네트워크의 모든 호스트들에게 전송한다.
사용할 수 있는 호스트의 수는 호스트 비수가 커지면 커질수록 증가한다. 
사용 가능한 호스트 수 = 2^(호스트 비트 수) -2

-----------------------------
서버와 PC는 데이터의 시작 지점이나 도착 지점이다. 그래서 서버와 PC를 ES(End System, 끝에 달려 있는 장치)라고 한다. ES들을 연결하는 것이 '네트워크'이다. ES와 ES를 연결하기 위해 ES 사이에 오는 장치를 IS(Intermediate System, 중간 장치)라고 한다. IS들이 네트워크를 구성하는 장치이다. IS의 가장 중요한 역할은 데이터 패킷들의 목적지를 찾아주는 '길 찾기'이다. IS에는 라우터와 스위치가 있다. 그 외에 보안장치:  방화벽, IDS, IPS, 바이러스월 / 로드 분산 장치 : L4, L7 /네트워크 관리 장치 : NMS / VoIP : IP PBX, IP Centrex, Softswitch / 대역폭 활용을 위한 Qos 장치, CDN 장치가 있다.

멀티플렉싱
하나의 통신 채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술이다.
기본적으로 멀티플렉싱이란 여러 개를 하나로 묶어 다중화 시킨다는 뜻이다. 코드에서 볼 것은 여러 개의 channel을 하나로 묶어서 사용하는 것인데, 이 방법을 입출력에 적용한다. 여기서 입출력 버퍼를 사용하게 된다. 
Blocking mode로 동작하는 것들과는 달리 멀티플렉싱은 Non-Blocking Mode로 동작하게 된다.
상위 계층의 데이터는 트랜스포트 계층의 MSS 값에 따라 잘려지는데, 이 때 잘려진 하나하나의 트랜스포트 계층의 데이터 단위를 세그먼트(Segment)라고 한다. 상위 계층의 데이터를 잘랐으니 목적지에서는 순서대로 합치는 프로세스가 필요하다. 이것을 위해 데이터를 자른 출발지 PC에서 순서 번호(Sequence Number) 자리에 순서 번호를 넣어준다. 

TCP로 데이터를 전송한다면, 데이터의 전송 방향 반대로 컨트롤 데이터가 전송되기 때문에 TCP를 투웨이 커뮤니케이션(2-way communication, 양방향 통신)이라고 한다. TCP는 오류 컨트롤(Error Control)
과 플로 컨트롤(Flow Control)을 한다, 오류 컨트롤을 위해 ACK 필드를 사용하고, 플로 컨트롤을 위해 윈도우 필드를 사용한다.
ACK 번호를 통해 몇 번 세그먼트까지 잘 받았는지를 표시한다. ACK 333을 받았다는 것은 '332번째 바이트까지 잘 받았으니 333번 째 바이트를 전송해달라'는 뜻이다. TCP 타임아웃 시간동안 ACK 세그먼트가 오기를 기다린다. TCP 타임아웃 시간은 세션이 개시되어 세그먼트들을 교환하면서 클라이언트와 서버 간의 세그먼트의 왕복 시간을 측정한다.
TCP 타임아웃 시간은 이 왕보 시간의 약 2배 이상의 시간으로 계산되기 때문에 적어도 TCP 타임아웃 시간 안에는 ACK를 받아야 한다. ACK가 오지 않으면 클라이언트와 서버 사이의 네트워크나 서버에 문제가 생겼다고 판단하고 클라이언트는 ACK로 확인하여 받지 못한 세그먼트를 재전송한다. 따라서 출발지에서 도착지까지의 모든 장비와 회신에서 생기는 세그먼트의 유실이나 변형 문제는 이 ACK 메커니즘으로 해결할 수 있다. 이 때문에 TCP 프로토콜을 '신뢰성 있는 프로토콜'이라고 한다.
TCP의 인캡슐레이션에 순서 번호는 상위 계층에서 내려보낸 데이터를 자르기 때문에 필요한데, 이러한 자름(Segmentation) 때문에 멀티플렉싱이 가능하다. UDP는 자르지 않기 때문에 UDP 인캡슐레이션에는 순서 번호 필드가 없고 멀티플렉싱이 불가능하다.
TCP에 ACK 번호 때문에 출발지에서 목적지에 이르는 모든 구간에서 발생하는 문제로 유실된 TCP 세그먼트를 재전송 할 수 있다. ACK번호 때문에 TCP 프로토콜을 신뢰형 프로토콜이라고 한다. 반면에 UDP는 ACK 번호 필드가 없어서 오류 컨트롤 기능이 없으므로 비신뢰형 프로토콜이라고 한다.
TCP에 윈도우 크기 필드가 있어서 데이터 흐름의 양을 조절할 수 있는데, 이것을 '플로컨트롤'이라고 한다. UDP는 윈도우 크기 필드가 없으므로 플로 컨트롤 기능이 없다. TCP가 오류와 플로 컨트롤을 위해 투웨이 커뮤케이션(2-way Communication)을 한다면 UDP는 컨트롤 기능이 없는 원웨이 커뮤니케이션(1-way Communication)을 한다.
TCP는 데이터를 본격적으로 보내기 전에 SYN과 ACK의 두 비트를 통해 목적지가 살아 있다는 것, 다시 말해서 커넥션에 문제가 없다는 것을 확인한다. 그래서 TCP를 '커넥션 오리엔티드 프로토콜(Connection-oriented Protocol)'이라고 한다. UDP는 이러한 비트들을 가지지 않기 때문에 목적지까지의 커넥션을 확인하지 않으므로 UDP를 '커넥션리스 프로토콜(Connectionless Protocol)
UDP 인캡슐레이션 포맷
|0bit                                                   |32bit                                       |64bit
|   출발지 포트[16]  /  목적지 포트[16] /    | 세그먼트 길이[16] / 체크섬[16]   |

Drop : 큐가 차면 라우터는 큐에 쌓여있는 모든 패킷을 버림
아웃풋 큐에서 드롭이 일어나는 원인은 인터페이스에 연결된 대역폭이 부족하다는 의미
대역폭이 충분하다면 아웃풋 큐에 쌓여 있던 패킷들이 신속하게 보내져서 비어지지만, 대역폭이 부족하다면 아웃풋 큐는 제때 비어지지 못하기 때문에 패킷들은 큐에 쌓이고, 큐가 차면 쌓인 패킷들은 폐기된다. 인풋 큐에 있떤 패킷은 라우터의 인터페이스를 거쳐 메인 메모리로 가서 메인 메모리에서 라우팅과 미디어 트랜스레이션을 거친 후 아웃풋 인터페이스의 메모리로 이동한다. 이 때 라우터의 CPU나 메모리 자원이 부족하다면 인풋 큐에서 제때 메인 메모리로 옮겨가지 못하기 때문에 드롭이 발생함
따라서 아웃풋 큐 드롭은 대역폭 업그레이드가 필요하다는 것을 의미하고, 인풋 큐 드롭은 장비(메모리, CPU) 성능의 업그레이드가 필요하다는 것을 의미합니다.

컨제스천은 라우터나 스위치의 입력 부분의 밴드위스의 합보다 출력 부분의 밴드위스 보다 더 작을 때 발생합니다. 즉, 라우터의 다수나 인터페이스들로부터 트래픽이 들어올 때(아웃풋 큐 드롭이 일어날 수 있는 상태)나 라우터나 스위치의 CPU나 메모리 자원이 부족할 때(인풋 큐 드롭이 일어날 수 있는 상태) 발생합니다.
폐기된 패킷은 TCP 재전송 메커니즘에 의해 재전송 되는데, 이러한 과정에서 전송 속도가 길어진다. 다시 말해서 컨제스천 방지(Congestion Avoidance)는 이렇게 폐기되는 패킷에 대한 솔루션이다. 선에서의 대역폭 부족이나 장비에서의 성능 부족은 패킷 폐기를 발생시키고, 패킷 폐기는 패킷 지연을 발생시키며, 패킷 지연은 응답 시간을 길게 만들어서 사용자의 불만을 초래한다.

송신 장치가 사용하는 슬라이딩 윈도우
1. 정지 & 대기(stop-and-wait) : 송신 장치는 한 패킷을 보낼 때마다 ACK 응답을 기다리고 ACK 응답을 받았을 때만 보낼 수 있다. 이 방법은 간단하지만 패킷마다 ACK 응답을 받아야 하기 때문에 데이터 전송 속도가 매우 느려진다.
2. 슬라이딩 윈도우 : 정지 & 대기 방식은 모든 패킷마다 ACK 응답을 수신해야 하지만, 슬라이딩 윈도우 방식은 ACK 응답을 받지 않고도 일정 수의 패킷을 보낼 수 있다. ACK 응답 없이 보낼 수 있는 패킷의 수가 윈도우 크기이다. 
일반적으로 송신 장치의 윈도우 크기는 송신자가 계산한 CWND(Congestion Window)와 수신장치가 보낸 RWND(Received Window or Advertised Window) 값 중에서 작은 값으로 선정된다. 수신 장치가 알려준 윈도우 크기는 결국 RWND에 해당한다. 수신 장치는 수신 버퍼가 모자랄 때 RWND 값을 0으로 보내서 송신 장치가 더 이상 데이터를 보내지 못하게 되는데, 이것을 '제로 윈도우(0 Window)'라고 한다. 즉 RWND는 수신 장비(서버)으 상태에 대한 값이고, CWND는 네트워크의 상태에 관한 값이다.

슬로 스타트
송신 장치의 윈도우 크기는 RWND와 CWND 중 작은 값이 선택되기 때문에 수신 장치가 아무리 큰 RWND를 보내도 서서히 증가하는 CWND의 특징 때문에 보내지는 데이터의 양이 아주 느리게 증가한다.

서비스 타입 필드는 QoS(Quality of Service) 용도로 사용한다. 네트워크 장비를 통과할 때 지연은 큐잉 과정에서 많이 발생하는데, 특정 장비에서 QoS 중요도를 높이면 다음 장비의 인풋 또는 아웃풋 인터페이스들에서 우선 처리된다. 또한 큐가 차서 패킷들을 버릴 경우 QoS 중요도가 아퍼면 늦게 버리는데, 이러한 메커니즘을 'QoS'라고 한다.

Multiple Access(다중 접근) : 두 PC가 서버를 보낼 데이터를 네트워크 상에 동시에 보내는것
통신에서 이렇게 두 개의 장비들이 데이터를 동시에 보내려다 부딪치는 경우를 충돌(콜리전, Collision)이 발생했다고 한다 따라서 이더넷에서는 데이터를 네트워크에 실어서 보내고 나서도 혹시 다른 PC때문에 콜리전이 발생하지 않았는지를 잘 점검해야 한다. 이것을 Collision Detection(충돌 감지)라고 한다.
CSMA/CD : 컬리전이 발생하면 랜덤한 시간을 기다렸다가 재전송하는데, 15회까지 재전송한다. 그래도 컬리전이 발생하면 포기한다.
허브로 PC들이 연결되어있는 상황에서 PC A가 데이터를 보낼 때 동시에 다른 PC들이 데이터를 보내면 컬리전이 발생한다. 허브로 연결된 장비들은 동시에 데이터를 보낼 수 없는데, 이것을 '허브로 연결된 모든 PC들은 동일 컬리전 도메인(Collision Domain)에 속한다' 또는 '허브는 컬리전 도메인을 분할하지 못한다.'라는 의미와 통한다.
컬리전 도메인에 속하는 장비가 많을 수록, 동일 컬리전 도메인의 트래픽이 많을수록 컬리전이 일어날 가능성은 높아지고, 이 컬리전은 대기 시간을 늘리고, 대기 시간은 전송 지연을 낳는다. 따라서 물리 계층에서 정의된 최소 10Mbps의 이더넷 속도를 제대로 쓸 수 없게 된다. 
허브는 컬리전 도메인을 분할하지 못할 뿐만 아니라 브로드캐스트 도메인도 분할하지 못한다. 허브에 연결된 장비가 보낸 브로드캐스트는 허브에 연결된 모든 장비가 받는데, 이것을 '허브에 연결된 장비는 하나의 브로드캐스트 도메인에 들어간다'라고 하고, 허브는 '브로드캐스트 도메인을 나누지 못한다'라고 한다. 허브에 연결된 장비가 많을수록 허브에 연결된 장비들의 CPU는 브로드캐스트로 인한 부하로 속도가 느려진다. 허브에 연결된 PC/서버의 CPU 부하가 너무 높다면 라우터나 스위치에서 VLAN을 적용하여 브로드캐스트 도메인을 나누어 주어야 한다.

스위치(2계층 장비)=증폭(1계층)+스위칭(2계층)
스위칭은 다른 말로 '포워딩과 필터링(Forwarding & Filtering)'이다. 스위칭은 스위칭 테이블이 지시하는 대로 프레임이 가야 할 곳으로는 포워딩하고, 가지 말아야 할 곳으로는 필터링 한다.스위치는 언논 유니캐스트(Unknown Unicast)나 브로드캐스트를 수신했을 때는 플러딩(Flooding)한다. 언논 유니캐스트는 스위칭 테이블 리스트에 스위칭을 위한 목적지 주소 정보가 없는 경우의 유니캐스트이고, 플러딩은 받는 포트를 제외한 모든 포트들로 다 내보내는 것이다.
허브가 컬리전 도메인을 나누지는 못하지만, 스위치 라우터는 컬리전 도메인을 분할한다. 그것은 스위치와 라우터가 스위칭(또는 라우팅)을 포함한 다음의 세 가지 기능을 제공하기 때문이다.
1. 스위칭(Switching)
2. 멀티버스(Multi-bus)
3. 버퍼링(Buffering)
이 세가지 메커니즘 때문에 스위치와 라우터의 컬리전 도메인은 허브와 다르다.
스위치로만 네트워크를 구성하면 너무 넓은 브로드캐스트 도메인 때문에 서버나 PC는 브로드캐스트를 받을 확률이 높아지고, CPU에 부하가 많이 걸린다. 결국 느린 서버나 PC 문제가 발생한다. 반면 라우터로만 네트워크를 구성하면 네트워크가 느려지는 문제가 있다.
속도는 클라이언트 PC부터 거치는 모든 네트워크 장비와 연결선의 대역폭, 서버의 모든 자원에 의해 결정된다.

프레임이 스위치에 도착하면 스위칭과 증폭을 하여 해당 포트로 내보낸다. 다른 네트워크로 가는 패킷은 라우터에 도착한다. 즉 라우터는 3계층에서 라우팅을, 2계층에서 미디어 트랜스레이션을, 1계층에서 증폭한다. 스위칭은 2계층 주소를 보고, 라우팅은 3계층 주소를 보고 길을 찾아준다.

Hierarchical 3 Layer 모델
장점 : 1.단순하고 간단 2. 큰 네트워크를 만들 수 있고, 나중에 확장도 쉬움 3. 관리가 쉬움 4. 네트워크 디자인이 쉬움
코어 계층(Core Layer)
코어 계층 장비는 디스트리뷰션 계층 장비를 연결하는 장비로, 조직 내 중심이 된다. 코어 계층 장비는 다수의 디스트리뷰션 계층, 즉 다수의 건물이 있는 조직에 최소 한 대씩 있다. 따라서 건물이 한 개뿐일 때는 존재하지 않으며, 건물이 두세 개뿐일 때도 디스트리뷰션 계층 장비들은 코어 계층 장비 없이 직접 연결한다.
디스트리뷰션 계층(Distribution Layer)
디스트리뷰션 계층 장비는 각 층의 모든 액세스 계층 장비가 연결되는 계층으로, 각 건물을 대표하는 장비이며, 건물 내 전산실에 위치한다. 디스트리뷰션 계층 장비는 각 건물에 최소 한 대씩 존재한다.
액세스 계층(Access Layer)
액세스 계층 장비의 역할은 ES를 네트워크에 연결하는 것이다. 통상적으로 LAN 선으로 사용되는 UTP 케이블의 장비 간 최대 거리가 100m이므로 PC/서버와 연결되는 액세스 계층 장비가 각각의 층마다 배치됩니다. 즉 액세스 계층 장비는 각 층에 최소 한 대씩 있다.

WAN 디자인
{전용회선}
전용회선 안에는 복잡한 스위치 구성을 포함하지 않으로 패킷을 정적으로 전달할 수 있음
일반적으로 사이트의 WAN 라우터와 다른 WAN 라우터는 P2P(Point to Point)로 연결하기 때문에 소요 비용이 높음

(서킷스위칭)
전용회선 서비스에 반해 ISDN과 PSTN은 콜 셋업(Call Setup) 절차를 통해 연결하므로 시간이 길다는 단점이 존재
PSTN(전화망)의 경우 콜 셋업 시간이 ISDN보다 길지만 세계에서 가장 큰 망으로 인터넷 망이 갖춰지지 않은 곳에서도 활용 가능

(패킷스위칭)
패킷스위칭 망은 주로 본사와 지사 간을 연결하는 가상의 서킷을 제공하는 망으로 전용회선에서 제공하지 않는 다양한 구성이 가능
ATM, frame-relay, X-25의 버추얼서킷은 PVC(Permanent Virtual Circuit)과 SVC(Switched Virtual Circuit)으로 구분
PVC 서비스는 전용회선과 같이 항상 연결된 서비스이며 SVC 서비스는 평소에 연결되어 있지 않은 서비스로 콜 셋업 시간이 필요

(VPN:Virtial Private Network)
공중망에서 터널링 기술을 활용하여 지점과 지점 사이에 가상의 사설 네트워크를 구성하는 기능
MPLS(Multi Protocol Label Switching)VPN 서비스와 IPSec(IPSecurity) VPN서비스로 구분
MPLS는 QoS(Quality of Service)를 통해 서비스 품질보장이 가능한 SLA(Service Level Agreement)가 가능
IPSec VPN은 장비 간 터널링 암호화를 제공하는 Site-to-Site 방식과 PC에서 터널링을 위한 별도 설정이 필요한 Client-to-Site 방식 존재

XSS(Cross-site Scripting)공격
악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법.
공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다. 크로스 사이트 스크립팅이란 이름 답게, 자바스크립트를 사용하여 공격하는 경우가 많다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파된다. HTML을 사용한다.
게시판에 글을 올릴 때, 스크립트가 포함된 게시글을 올려서 게시글을 열어보는 유저의 브라우저에서 원치 않는 스크립트를 실행하게 할 수 있다. 이런 방식으로 유저의 쿠키 정보를 탈취하거나, 유저 비밀번호를 변경하는 api를 호출하는 식의 행위를 할 수 있다.
XSS는 자바스크립트를 실행시키는 것이고, CSRF는 특정한 행동을 시키는 것이므로 둘은 구분지어야 한다.
방어방법
:기본적으로 모든 태그를 막고, 사이트에 필요한 일부 태그만 허용하는 방식으로 필터를 제작

CSRF 공격이란?
CSRF(Cross-Site Request Forgery)는 사이트 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격. 해커(공격자)는 CSRF를 통해 사용자의 권한을 도용하여 의도하지 않은 기능을 실행하게 만든다.
XSS를 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린다.
CSRF 방어 기법
Referer 체크
HTTP 헤더에 있는 referer 정보를 체크하여, 해당 요청이 신뢰할만한 페이지에서 발생한 것인지 확인한다. 단 referer 정보는 조작이 가능하다는 단점이 있다.
토큰 발급
로그인한 유저에게 토큰을 발급하여, 요청을 보낼 때 해당 토큰을 함께 보내야만 요청을 실행한다.
CAPTCHA
특정 요청을 처리할 때, CAPTCHA 단어를 요청과 함께 보내도록 하여 의도한 페이지에서 보내는 요청인지 확인한다.

SQL 인젝션 개념
SQL 인젝션은, 웹 애플리케이션이 데이터베이스와 연동하는 모델에서 발생 가능하다.
이용자의 입력값이 SQL 구문의 일부로 사용될 경우, 해커에 의해 조작된 SQL 구문이 데이터베이스에  그대로 전달되어 비정상적인 DB 명령을 실행시키는 공격 기법이다.
SQL 인젝션 공격 원리와 유형
SQL 인젝션은 데이터베이스 명령어인 SQL 쿼리문에 기반하여 공격을 수행한다. 공격에 이용되는 쿼리문은 문법적으로는 지극히 정상적인 SQL 구문이다. 다만 실행되지 말아야 할 쿼리문이 실행되어 공격에 이용되는 것이다.
SQL 인젝션은 최소한 다음의 조건을 충족해야 공격이 가능하다.
조건 1) 웹 애플리케이션이 DB와 연동하고 있다.
조건 2) 외부 입력값이 DB 쿼리문으로 사용된다.
웹 애플리케이션이 위 두 조건 중, 하나라도 충족하지 않는다면 SQL 인젝션 공격은 무용지물이 될 것이다. 그러나 현재의 대부분 웹 애플리케이션은 위 두가지 조건을 대부분 충족한다. 그래서 대부분의 경우 SQL 인젝션은 유효한 공격 기법이 될 것이다.

SQL Injection 방어방법: 웹 방화벽(WAF) 도입
웹 방화벽은 HTTP/HTTPS 응용 계층의 패킷 내용을 기준으로 패킷의 보안성을 평가하고 룰(Rule)에 따라 제어한다. SQL 인젝션의 룰(Rule)을 설정하여 공격에 대비할 수 있다.
1. 물리적 웹 방화벽
기업의 규모가 어느정도 되거나 보안이 중시되는 환경 또는 예산이 충분한 환경에서는 물리적인 전용 WAF 사용을 권장한다. 어플라이언스 형태의 제품을 사용하거나 SECaaS 형태의 클라우드 기반의 솔루션을 도입할 수도 있다.
2. 논리적 웹 방화벽(공개 웹 방화벽)
전용 웹방화벽 장비를 도입할 여력이 되지 않는다면, 공개 웹방화벽을 고려해 볼 만 하다. 대부분 공개 웹 방화벽은 물리적인 장비가 아닌 논리적인 구성으로 웹 방화벽 역할을 수행한다.
윈도우 서버 환경에서는 WebKnight, 아파치 서버 환경에서는 ModSecurity를 사용할 수 있다.

LAN 네트워크의 트래픽 패턴에 80대 20 법칙 : 트래픽의 목적지는 80%가 다른 네트워크이고, 20%만 트래픽의 출발지와 같은 네트워크
대부분의 애플리케이션들은 웹 기반으로 개발되고 있고, 웹 서버를 비롯한 대부분의 서버들은 관리의 편의성이나 보안을 위해 한 네트워크에 모아두기 때문에 클라이언트와 다른 네트워크에 위치한다.
네트워크 병목현상(Bottleneck) : 큰 대역폭에서 작은 대역폭으로 연결되는 구간에서 발생.

웹 캐시의 종류
1. Browser Cache
브라우저 또는 Http 요청을 하는 클라이언트측 application의 내부 디스크
브라우저의 back button을 눌렀을 때
2. Proxy Cache
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 application을 가리키는데 이 프록시 서버는 요청된 내용들을 cache를 이용하여 저장을 한다. cache안에 있는 정보를 요구하는 요청에 대해서 원격 서버에 접속하여 데이터를 가져올 필요가 없게된다. 그리고 외부와의 traffic을 줄여 bottle neck 을 방지한다.
* 목적은 네트워크 대역을 효율적으로 사용하는것과 조직 내에 특정 웹사이트에 대한 엑세스 제한, 액세스 로그를 획득하는 것에 있다.
3. Gateway Cache
서버 앞 단에 설치되어 요청에 대한 cache와 분배를 맡는다.
게이트웨이는 노드간 다른 방식의 통신을 통일 시켜준다.

VPN과 Proxy차이
VPN(Virtual Private Network)
가상사설망으로 불리며 공용망을 사설망처럼 이용하는 것을 말한다. VPN을 이용하면 내 IP가 아닌 VPN서버에서 제공하는 IP로 인식하게 된다. 이 때 VPN에 접속한 컴퓨터와 VPN서버 사이에 지나가는 패킷을 암호화 하는 경우가 많아 VPN서버 로그를 보지 않는 이상 사용자를 알아내기는 힘들다.
VPN (Virtual Private Networks, 가상사설망)은 단순한 “통로”라기 보다는 정교한 프라이버시와 보안 역량을 갖춘 암호화된 터널로 사용자의 IP 주소를 감추는 단순한 작업 그 이상을 해낸다. VPN 서버에 연결된 사용자 기기의 VPN 클라이언트를 통해 사용자의 모든 트래픽은 다양한 수준의 복잡성과 보안으로 암호화된다.
장점
완벽하게 암호화된 보안 연결과 프라이버시
유동적이고 믿을 수 있다
단점
완전한 기능과 신뢰성을 위해선 유료 계정이 필요하다
무료 서비스는 다소 느리다
VPN 서비스는 언제 사용해야 할까?
믿을 수 있고 보장된 온라인 익명성과 보안을 원한다면, VPN은 단연 최고의 선택지이다. 얼마나 믿을 수 있는지의 신뢰도는 지불하는 가격대에 따라 다른데, 보통은 비용을 지불하는 것이 바라던 결과를 조금 더 가까이 다가갈 수 있는 방법이다.
Proxy는 클라이언트가 다른 네트워크 서비스에 간접적으로 접속할 수 있도록 중계해주는 서버이다. 때문에 상대방 입장에서는 프록시 서버 주소를 통해 데이터를 받게 된다. 처음 생긴 목적은 인터넷 속도 향상이었다. 프록시 서버에 캐시를 저장해 놓으면 빠른 통신이 가능하기 때문이다. 하지만 요즘은 IP 우회 도구로 많이 사용된다.
프록시 서버, 혹은 “오픈 프록시 서버”라고도 불리는 이 서비스는 사용자의 인터넷 트래픽을 목표 서버까지 전달하는 가상 “통로”라 할 수 있다. 목표 서버 (그리고 라우터)에 트래픽은 프록시 서버 주소에서 오는 것처럼 표시된다. 이때, 사용자의 IP와 활동은 프록시 서버 자체에 기록 된다 (기록 되지 않을 수도 있다).
프라이버시와 온라인 익명성에 적용할 수 있는 오픈 프록시 서버의 유형에는 2가지가 있다: HTTP와 SOCKS 프록시 서버이다.
HTTP 프록시 서버
가장 간단하면서 기본적인 프록시 서버 유형이 웹 프록시이다. 이 프록시가 할 수 있는 작업은 클라이언트 (사용자 브라우저)로부터 호스트 (사용자가 접근하고 싶은 웹 사이트를 호스팅하고 있는 서버)로 웹 트래픽 (HTTP와 HTTPS) 리다이렉트하는 것으로, 이로써 효과적으로 사용자의 IP를 웹 트래픽의 소스로 감출 수 있다.
장점
이 서버는 오직 HTTP 요청만 처리할 수 있어, 무료 VPN 서비스나 SOCKS 프록시 서버보다 처리 속도가 빠르다
사용 가능한 여러 무료 프록시 서비스가 무료 오픈 프록시 서버를 간편한 익명 웹 검색 목적에, 특히 비용 효과적인 선택지로 거듭나는데 기여하고 있다
단점
어느 트래픽도 암호화되지 않는다
웹 트래픽에만 제한된다
무료 웹 프록시는 큰 보안 위협이 될 수 있다
웹 프록시 서버는 언제 사용해야 할까?
만약 특정 웹 사이트가 당신이 거주하고 있는 국가에서 차단되었거나 기술적인 이유로 당신의 인터넷 서비스 공급자에서는 사용할 수 없다면, 웹 프록시 서버가 일시적인 웹 사이트로의 접근을 도울 수 있다. (다만, 연결 속도가 느리고 보안이 불안정할 수 있다는 사실을 기억하자)
SOCKS 프록시 서버
기본 웹 프록시보다 조금 더 개발되었고 덜 흔하다. 이 서버는 서비스 역량을 웹 검색에 한하지 않고 조금 더 발전시켰다.
장점 : SMTP, FTP, 토렌트 트래픽 같은 HTTP가 아닌 트래픽을 지원한다
단점 : 웹 프록시 서버와 같은 보안 문제로 곤란을 겪을 수 있다
HTTP (웹) 프록시 서버보다 느리다
SOCKS 프록시 서버 사용처
트래픽이 암호화되지 않기 때문에, 당신의 이메일에 무료 SOCKS 프록시로 접근하는 것은 권장하지 않는다. 하지만, 이 프록시로 당신의 IP 주소 로는 연결할 수 없는 FTP 서버로의 접근이나 국제 서버에서의 턴 베이스 혹은 싱글 플레이어 게임 실행 시에 사용할 수는 있다.
Proxy와 VPN 차이점은?
프록시와 VPN의 가장 큰 차이점은 보안이다. VPN은 보안에 강하지만 프록시는 보안에 취약하다. 반면 VPN은 공용망을 사용하더라도 사설망처럼 이용하다 보니 공용망에서도 암호화된 상태에서 통신이 이루어진다.
프록시는 공용으로 사용하다보니 보안에는 취약하지만 IP주소를 변경할 수 있어 IP 우회를 하기에 좋다. 별 가치 없는 정보를 주고 받을 때는 프록시를 이용하는 것이 좋다.

토르는 무엇일까?
토르(Tor)는 The Onion Router의 줄임말로, 익명화된 검색과 다운로드에 매우 우수하고 인기 있는 도구이다. VPN과 함께 혹은 별개로 사용할 수 있다. 작동 원리는 본질적으로 대역폭과 IP 주소를 공유하는 사용자의 완전히 암호화된 망사형 네트워크를 형성을 통해 가능하며, 로컬 컴퓨터 동력을 전반적으로 암호화된 네트워크를 유지할 수 있도록 기여한다.
토르 프로토콜을 사용해 로컬 토르 클라이언트를 설치해 모든 트래픽을 암호화하고 익명화 할 수 있다. 혹은, 토르 브라우저 소프트웨어로 웹 검색을 할 수도 있다.
장점
복수 계층의 암호화
등록되지 않은 “딥 웹” 사이트 접근 가능
무료로 사용 가능
단점
모든 암호화 계층으로 매우 느리기 때문에 토렌트, Kodi, 오디오 스트리밍에 적합하지 않다
불법적인 목적으로 토르를 사용할 경우, 정부 기관에 의해 경고를 받을 수 있다
토르는 언제 사용해야 할까?
추가적인 보안을 원할 때, 토르는 민감한 콘텐츠 소비나 발행에 필요한 프라이버시와 익명성을 위해 사용할 수 있다. 혹은 다른 프라이버시 층을 추가하고 싶을 때 VPN과 함께 사용할 수 있다.
토르는 저널리스트, 활동가, 인권운동가, 내부고발자, 그리고 인터넷 제한이 있는 국가에서 거주하거나 일하는 사람들이 많이 사용한다.

반응형

'네트워크' 카테고리의 다른 글

애플리케이션 딜리버리 컨트롤러(Application Delivery Controller, ADC)  (0) 2020.09.11
스패닝 트리 프로토콜(STP)  (0) 2020.09.11
웹 캐시의 종류  (0) 2020.09.10
VPN과 Proxy차이  (0) 2020.09.10
9.9  (0) 2020.09.09