[정보보안기사 PART 05] 네트워크 보안 - 네트워크 장비의 이해


Section 23 네트워크 장비의 이해

 

1. 네트워크 장비의 이해

 

(1) 랜카드

1) 개요

 단순히 PC 혹은 네트워크에서 전달되는 정보를 상호 교환할 수 있도록 만들어준다.

 PC에서 전송 요구가 발생하면 랜카드로 정보를 일정한 형태로 만들어 보내고 랜카드에서는 이 정보를 일단 버퍼에 저장한 다음 네트워크에 맞는 형태로 보낸다.

 여기서 PC와 랜카드 사이를 논리적으로 묶어주는 소프트웨어가 필요한데, 이 소프트웨어를 네트워크 드라이버라고 한다.

 

(2) 허브(Hub)

1) 개요

 오직 물리 계층에서만 동작하는 장치이다. 네트워크 내에서 정보를 전달하는 신호는 신호 감쇠가 데이터 무결성을 훼손하기 전가지 고정된 거리를 이동할 수 있다.

 리피터(repeater)는 신호가 너무 약하거나 훼손되기 전에 신호를 수신하여 원래의 비트 형태를 재생(regenerate)하고 증폭한다. 

 허브는 필터링 기능이 없으며, 어느 포트로 프레임을 전달해야 할지 결정하는 기능 도한 없다.

 

(3) 브리지(Bridge)

1) 개요

 리피터와 달리 패킷 프레임에 대한 인지능력이 있고, OSI의 데이터링크 계층인 MAC(Media Access Control)에서 동작하며, 둘 또는 그 이상의 네트워크를 상호 연결하는데 사용한다.

 브리지를 사용하는 목적은 네트워크를 확장시키고 네트워크 통신을 격리시키기 위한 것이다.

 

2) 기능

 데이터링크 계층에서 동작하는 장비로 MAC(Media Access Control)이라는 유일무이한 주소, 하드웨어 주소를 기반으로 전송할 포트를 결정한다.

 

(4) 스위치(Switch)

1) 개요

 리피터의 기능과 브리지의 기능을 결합한다.

 리피터처럼 전기적 신호를 증폭하며, 브리지의 내장 회로와 지능을 가진다.

 스위치는 개별 컴퓨터 또는 다른 허브 및 스위치를 연결하는 다중  포트 장비

 스위치 환경에서 특정 포트를 모니터링 하고자 한다면 모니터링 포트(Monitoring Port) 또는 네트워크 트래픽을 모니터링 할 수 있는 탭(TAP) 장빌르 통해 복제해서 트래픽 분석 장비로 전달한다.

 

2) 스위치의 종류

- 2계층 스위치 (데이터링크 계층)

- 3계층 스위치 (네트워크 계층)

- 4계층 스위치 (전송 계층)

 

(5) 라우터(Router)

1) 개요

 3계층 장치로 물리, 데이터 링크, 네트워크 계층에서 동작

 

2) 특징

 브리지와 달리 네트워크 세그먼트 내부에서 발생하는 브로드캐스팅과 멀티캐스팅 패킷을 모두 차단하여 다른 네트워크 세그먼트로 전달되는 것을 방지하기에 회선을 효율적으로 사용

 접그 통제 목록에 기반을 두어 트래픽을 필터하고, 필요하다면 패킷을 분할할 수 있다.

 

(6) 게이트웨이(Gateway)

1) 개요

 두 개의 서로 다른 환경을 연결하는 장비에서 실행되는 소프트웨어를 위한 일반적 용어이며, 한 환경이 다른 언어를 말하는 경우 번역자로 동작하고 상호작용을 제한하는 역할도 수행한다.

 OSI 참조모델의 모든 계층을 포함하여 동작하는 네트워크 장비로서, 두 개의 완전히 다른 네트워크 사이의 데이터 형식을 변환하는 기능을 수행

 여러 계층의 프로토콜 변환기능을 수행하므로 네트워크 내에 병목현상을 일으키는 지점이 될 수 있다.

 

 

 

2. VLAN의 구성 및 관리

 

1) 개요

 가상 근거리 네트워크(VLAN, Virtual Local Area Network)를 물리적인 선이 아닌 소프트웨어에 의해 구성한 근거리 네트워크로 정의할 수 있다.

 물리적인 세그먼트가 아닌 논리적인 세그먼트로 분할하는 것

 

2) 특징

 데이터링크 계층에서 브로드캐스트 도메인(Broadcast Domain)을 나누기 위해 사용하는 기술

 각 스위치는 하나의 브로드캐스트 프레임에 대하여 동일 브로드캐스트 그룹이 아닌 곳에는 전달하지 않는다는 조건을 바탕으로 하고 있다.

 스위치는 VLAN 태그가 상이한 네트워크로의 접근을 근본적으로 차단하여 보안성을 유지하게 된다.

 VLAN은 관리자가 서로 다른 논리적 그룹에 대하여 서로 다른 보안 정책을 적용할 수 있게 한다.

 

3) VLAN 종류

- PORT 기반 VLAN

- MAC 기반 VLAN

- 네트워크주소 기반 VLAN

- 프로토콜 기반 VLAN

- 멀티캐스트 IP 기반 VLAN

- 조합

 

4) 장점

- 경비와 시간 절약

- 가상 워크그룹의 생성

- 보안

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[정보보안기사 PART 05] 네트워크 보안 - 라우팅


Section 22 라우팅

 

1. 라우팅 개요

 

1) 기본 개념

 라우팅은 패킷을 전송하기 위해 송신자측에서 목적지까지의 경로를 정하고, 정해진 경로를 따라 패킷을 전달하는 일련의 과정이다.

 라우터는 라우팅 기능을 수행하며 네트워크 계층 주소를 참조하여 가능한 한 여러 경로 중에서 최선의 경로를 결정하게 한다.

 라우팅 알고리즘은 관리자가 직접 라우팅 테이블을 설정하는 정적 라우팅 알고리즘과 네트워크 환경 변화에 능동적으로 대처 가능한 동적 라우팅 알고리즘으로 구분된다.

구분 정적 라우팅 동적 라우팅
라우팅 테이블 관리 수동
네트워크의 변화에 대한 자동 인지 불가
자동
네트워크의 변화를 자동으로 인지하여 정보의 전송 경로를 재구성
인터페이스 변경이 적을 때 유리 변경이 많을 때 유리
노드 추가/변경 운영 요원이 라우팅 작업 대처 용이
중간 경로 단일 경로에 적합 다중 경로에 적합

 

2) 라우팅 프로토콜

 인터넷과 같이 규모가 큰 네트워크에서 패킷을 효율적으로 전달하기 위해서 라우팅 테이블은 ㄷ반드시 동적으로 갱신되어야 한다.

 이와 같이 네트워크 정보를 생성, 교환, 그리고 제어하는 프로토콜을 총칭하여 라우팅 프로토콜이라고 한다.

 AS(자율시스템)는 하나의 관리 도메인에 속해 있는 라우터의 집합을 말한다.

 AS 내에 운영되는 라우팅 프로토콜을 IGP라고 하며, AS 간에 라우팅 정보를 교환하기 위한 프로토콜을 EGP라 한다.

 

 

 

2. 데이터링크 계층

 

(1) 라우팅 알고리즘

1) 거리벡터 라우팅(DV, distance-vector)

 제일 처음으로 각 노드가 만드는 것은 인접한 이웃들의 기초 정보를 이용하여 작성된 자신의 최소 비용 트리이다.

 자신의 모든 이웃에게 자신이 가지고 있는 인터넷에 대한 정보가 불완전하더라도 자신이 알고 있는 네트워크 정보를 끊임없이 알려준다.

 거리벡터는 최소 비용트리에서처럼 목적지까지의 경로를 제공하지는 않는다. 단지 목적지까지의 최소비용만을 제공한다.

 

2) 링크-상태 라우팅

 최소비용 트리를 작성하기 위해 각 노드는 각 링크의 상태를 알아야 하기 때문에 네트워크의 완전한 맵(map)이 필요하다. 링크의 상태집합을 링크상태 데이터베이스(LSDB, link-state database)라 부른다.

 

3) 경로 벡터 라우팅(PV, path-vector)

 소스부터 모든 목적지까지의 경로는 스패닝 트리에 의해 결정된다. 하지만 스패닝 트리는 최소비용 트리가 아니다.

 스패닝 트리 고유의 규칙을 적용시켜 근원지에서부터 작성되는 트리이다. 만약 목적지까지 하나 이상의 경로가 있다면, 근원지는 가장 최선의 규칙을 사용하여 경로를 선택할 수 있다.

 

(2) 유니캐스트 라우팅 프로토콜

1) RIP(Routing Information Protocol)

 가장 오래되고 가장 널리 사용되는 내부 라우팅 프로토콜 중 하나이다.

 각 라우터는 거리 벡터 알고리즘을 사용하여 네트워크에 도착하는 방법과 거리를 홉수에 저장한다.

 RIP에서 경로의 최대비용은 15 홉이다. 16은 무한대(연결 없음)으로 생각한다.

 

 - 문제점

   느린 수렴

   라우팅 루프

   무한 세기

   작은 무한값

 

2) RIPv2

 RIPv1의 기능을 대폭 확장

 기본적인 동작은 RIPv1과 동일하며 서브넷마스크 식별, 경로정보 인증, AS 구별, 브로드캐스트와 멀티캐스트 전송 등의 기능 추가

 

3) IGRP(Interior Gateway Routing Protocol)

 하나의 매트릭 값만을 사용하는 대신 다섯 가지의 네트워크 파라미터를 이용하여 거리벡터를 계산

 

4) EIGRP(Enhanced Interior Gateway Routing Protocol)

 수렴속도가 빠르며, 부분적인 개인을 지원하기 때문에 적은 대역폭을 필요로 한다.

 VLSM을 지원하며, DUAL 알고리즘을 이용하여 네트워크 구성의 변화가 생겼을 때 패킷의 손실 없이 재라우팅 할 수 있다.

 

5) OSPF(Open Shortest Path First)

 인트라 도메인 라우팅 프로토콜이다. 하지만 OSPF는 링크-상태 프로토콜을 기반으로 한다.

 네트워크에 변화가 생겼을 경우에만 전체 네트워크에 플러딩 과정을 수행함으로써 라우팅 정보를 신속하게 갱신하여 수렴시간과 라우팅 트래픽의 양을 줄였다.

 보안을 위해 인증 지원, 세 가지 IP 주소 형태인 클래스 단위, 서브넷 단위, 클래스 비사용 주조지정 지원

 

6) BGP4(Border Gateway Protocol version 4)

 현재 인터넷에서 사용하고 있는 유일한 인터 도메인 라우팅 프로토콜

 홉수 대신 AS 번호로 매트릭 사용

 

 

 

3. 라우터 보안

 

1) 라우터 개요

 라우터는 동일한 전송 프로토콜을 사용하는 분리된 네트워크를 연결하는 장치로 네트워크 계층 간을 서로 연결

 라우터는 브리지가 갖는 기능에 추가하여 경로 배정표에 따라 다른 네트워크 또는 자신의 네트워크 내의 노드를 결정한다. 그리고 여러 경로 중 가장 효율적인 경로를 선택하여 패킷을 보낸다.

 

2) 라우터 모드

 유저(User) 모드 : 테스트, 현재 상태 봄

 Privileged 모드 : 모든 명령어 이용, configuration file 조정

 구성(Configuration) 모드 : 라우터의 구성 파일을 변경하는 경우 사용

 RXBOOT 모드 : 라우터의 패스워드를 모르는 경우나 라우터의 이미지 파일(IOS)에 문제가 생긴 경우에 복구를 위해 사용하는 모드

 Setup 모드 : 라우터를 처음 구매해서 전원을 켰거나 라우터에 구성 파일이 없는 경우에 라우터가 부팅하면서 자동으로 들어가는 모드

 

 

 

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[정보보안기사 PART 05] 네트워크 보안 - TCP/IP


Section 21 네트워크 개요

 

1. 물리 계층

 

(1) 물리 계층 개요

1) 데이터와 신호

 응용, 전송, 네트워크, 데이터 링크에서의 통신은 논리적이고 물리 계층 통신은 물리적이다.

 간단하게 호스트-대-라우터, 라우터-대-라우터, 라우터-대-호스트만을 보는데, 교환기도 물리적 통신에 포함된다.

 

 아날로그 : 연속된 정보

 디지털 데이터 : 이산 값

 

 

2. 데이터링크 계층

 

(1) 데이터링크 계층의 소개

1) 소개

- 노드와 링크

 데이터링크 계층에서의 통신은 노드-대-노드이다. 인터넷에서 하나의 지점으로부터의 데이터 유닛은 다른 지점에 도달하기 위해 LAN과 WAN고 같은 많은 네트워크를 통해 전달될 필요가 있다.

 이러한 LAN과 WAN은 라우터를 통해 연결된다. 이것은 2개의 종단 호스트와 노드로써 라우터 그리고 링크로써 두 노드 사이의 네트워크로 나타내는 것이 일반적이다.

- 서비스

프레임 짜기

흐름 제어(Flow Control)

오류 제어(Error Control)

혼잡 제어(Congestion Control) : 사용하지 않음

 

 

3. 네트워크 계층

 

(1) 네트워크 계층 개요

1) 네트워크 계층 서비스

- 라우팅

 네트워크(LAN과 WAN)와 네트워크를 연결하는 라우터의 조합

 

- 포워딩

 라우터상의 하나의 인터페이스에 패킷이 도차했을 때 라우터가 취하는 행동

 

2) IPv4 주소

- 클래스 기반의 주소 지정

전체 주소 공간은 5개의 클래스(클래스 A, B, C, D, E)로 구분된다. 이 기술은 클래스 기반 주소지정이라 한다.

주소가 적절히 분배되지 않았기 때문에 인터넷에 연결하려는 기관이나 개인이 사용할 주소가 더 이상 남지 않았다.

서브네팅과 슈퍼네팅의 두가지 기술로 주소 고갈을 완화

 

- 클래스가 없는 주소 지정

 클래스 기반 주소 지정에서 서브네팅과 슈퍼네팅은 실제로 주소 고갈문제를 해결하지 못하였다. 인터넷의 성장에 따라 장기적인 관점에서 해결책으로 더 큰 주소 공간이 필요했다. 그러나 더 큰 주소 공간 확보를 위해서는 IP 패킷 형식의 변화가 필요한 IP 주소 길이의 증가가 필요하다.

단기적인 관점의 해결책에서는 클래스 없는 주소지정 방식의 IPv4 주소가 사용된다. 즉, 주소 고갈을 해결하기 위해 클래스 권한이 제거되었다.

 

- VLSM(Variable Length Subnet Mask, 가변 길이 서브넷 마스킹)

 서브네팅을 여러 번 반복하여 네트워크를 크기가 다른 여러 서브네트워크 계층으로 구분하는 기법이다. 이를 통해 기관은 네트워크의 실제 요구사항에 맞게 서브넷의 크기를 조정할 수 있다.

 

- 특수 주소

 디스-호스트 주소

 제한된 브로드캐스트 주소

 루프백 주소

 사설 주소

 

(2) 네트워크 계층 프로토콜

1) 인터넷 프로토콜(IP)

 IPv4는 비신뢰적이고 비연결형인 데이터그램 프로토콜로 최선형 전송 서비스이다.

 IPv4 패킷이 훼손되거나 손실, 순서에 맞지 않게 도착, 지연되어 도착 그리고 네트워크에 혼잡을 발생시킬 수 있는 것을 뜻한다.

 만약 신뢰성이 중요하다면 IPv4는 TCP처럼 신뢰성 있는 전송 계층 프로토콜과 함께 사용되어야 한다.

 

2) 논리주소와 물리주소의 변환

ARP(Address Resolution Protocol)

 호스트는 ARP 요청 메시지를 보낼 때 자신의 IP 주소, 자신자측 IP 주소는 알고 있지만, 수신자측 물리주소는 모르기 때문에 물리 계층 브로드캐스트를 통해 모든 호스트에게 패킷을 전송

 

RARP(Reversr ARP)

 물리주소에 해당하는 IP주소를 얻고자 할 때 사용한다.

 

GARP(Gratuitous ARP)

 Sender IP와 Target IP가 동일한 ARP 요청

목적 : IP 충돌 감지, 상대방의 ARP Cache 정보 갱신

 

3) ICMPv4(Internet Control Message Protocol version 4)

 다른 호스트가 동작하는 여부를 확인하기 위해 사용

 

- 오류 보고 메시지

 목적지 도달 불가 (Destination Unreachable, Type 3)

: 왜 데이터그램이 최종 목적지에 도착하지 못하였는지에 대한 오류 메시지

 

 근원지 억제 (Source Quench, Type 4)

: 송신자에게 네트워크에 충돌이 발생하여 데이터그램이 폐기되었음을 알리는 메시지

 

 재지정 메시지 (Redirection, Type 5)

: 잘못된 라우터를 사용할 떄 사용되는 메시지

 

 시간 경과 메시지 (Time Exceeded, Type 11)

: IP 패킷이 폐기되었음을 알리는 메시지

 

 매개변수 문제 (Parameter Problem, Type 12)

: 데이터그램의 헤더에 문제가 있거나 어떤 옵션이 없거나 옵션의 의미를 알 수 없는 경우에 전송

 

- 질의 메시지

 호스트나 라우터가 활성화되었는지를 알아보거나, 두 장치 사이의 IP 데이터그램이 단방향 시간인지 아니면 왕복 시간인지를 찾는다.

 

 

(3) IPv6

1) IPv4의 한계

 전세계적으로 인터넷의 급격한 보급과 무선 인터넷, 인터넷 정보 가전기기 등의 IP주소에 대한 수요가 증가하면서 IPv4의 주소 체계로는 처리가 업렵다는 문제가 대두

 

2) IPv6의 등장

 기존 IPv4의 32비트 주소길이를 4배 확장한 128비트 주소 길이 사용

 보안문제, 라우팅 효율성 문제, QoS 보장, 무선 인터넷 지원과 같은 다양한 기능 제고

 

3) 특징

- 확장된 주소 공간

- 새로운 헤더 포맷

- 향상된 서비스의 지원

- 보안 기능

 

4) IPv6 주소

- 유니캐스느 주소

 단일 인터페이스(컴퓨터, 라우터)를 정의한다.

 특정한 컴퓨터에게만 전달한다.

 

- 애니캐스트 주소

 단일 주소를 공유하는 컴퓨터의 집합으로 정의된다.

 가장 가까이 있는 애니캐스트 그룹의 구성원에게만 전송

 

- 멀티캐스트 주소

 컴퓨터의 그룹을 정의한다.

 그룹의 각 컴퓨터가 복사본을 수신한다.

 애니캐스트는 그룹 중 하나의 컴퓨터에만 전송된다.

 

5) IPv4에서 IPv6로 변환

- 이중 스택

- 터널링(tunneling)

- 헤더 변환(header translation)

 

4. 전송 계층

 

(1) UDP(User Datagram Protocol)

1) 개요

 사용자 데이터그램 프로토콜(UDP)은 비연결형이고 신뢰성이 없는 전송 프로토콜이다.

 호스트 간 통신 대신에 프로세스 간 통신을 제공하는 것을 제외하고는 IP 서비스에 어떠한 것도 추가하지 않는다.

 최소한의 오버헤드르 가진 매우 간단한 프로토콜

 UDP 패킷은 각각 2바이트(16비트)인 4개의 필드로 만들어진 고정된 크기의 8바이트 헤더를 가지고 있다.

 

2) UDP 서비스

- 프로세스-대-프로세스 통신

- 비연결형 서비스

- 다중화와 역다중화

 

3) UDP의 일반적인 응용

 흐름 및 오류 제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세스에 적당

 멀티캐스팅을 위한 전송 프로토콜이다.

 SNMP와 같은 관리 프로세스을 위하여 사용된다.

 라우팅 정보 프로토콜(RIP)과 같은 경로 갱신 프로토콜을 위하여 사용된다.

 보통 수신 메시지의 영역 사이에서 불평등한 지연을 인내할 수 없는 상호작용적 실시간 응용에 사용된다.

 

(2) TCP(Transmission Control Protocol)

1) TCP 서비스

- 프로세스-대-프로세스 통신

- 스트림 전송 서비스

- 송신 및 수신 버퍼

- 전이중 통신

- 다중화와 역다중화

- 연결-지향 서비스

- 신뢰성 있는 서비스

 

2) 세그먼트

 TCP에서는 패킷을 세그먼트라고 한다.

 

3) TCP 연결

 TCP 연결-지향 전송은 연결 설정, 데이터 전송 및 연결 종료의 3단계를 필요로 하낟.

 

- 연결 설정

 세-방향 핸드셰이크(three-way handshaking)

 

- SYN 플러딩 공격

 공격자가 많은 서비스 요청을 가진 시스템을 독점하여 시스템을 붕괴하고 모든 요청에 대하여 서비스를 거부하는 서비스 거부 공격으로 알려진 보안 공격 형태에 속한다.

 

- 데이터 전송

 양방향으로 데이터 전송 발생

 클라이언트에 의해 보내진 데이터 세그먼트에는 서버 tcp가 데이터가 수신되자마자 서버 프로세스에게 데이터를 전달하는 것을 알도록 PSH(push) 플래그가 설정되어 있다.

 

 

 

5. 응용 계층

 

(1) 주요 응용 계층 프로토콜

1) HTTP

 하이퍼텍스트 전송 프로토콜은 웹으로부터 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램을 작성할지를 정의하는데 사용된다.

 HTTP클라이언트는 요청을 하고 HTTP 서버는 응답을 한다. 서버는 포트 80번을 사용하고 클라이언트는 임시 포트 번호를 사용한다.

 

2) FTP

 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP가 제공하는 표준 프로토콜이다.

 

3) TELNET

 최초의 원격 로그인 프로토콜 중 하나이다.

 로그인 이름과 암호를 요구함에도 불구하고 암호를 비롯한 모든 데이터를 암호화되지 않은 평문을 전송하기 때문에 해킹에 취약하다.

 

4) DNS

 오늘날의 인터넷은 매우 거대하기 때문에 중앙 디렉터리 시스템은 모든 매핑을 보유할 수 없다. 또한 중앙 컴퓨터가 고장나는 경우 전체 통신망을 붕괴된다.

 더 좋은 해결책으로 현재는 이 엄청난 양의 정보를 작게 나누어서 전세계의 서로 다른 컴퓨터에 저장하는 방법을 사용한다.

 이때 각 호스트는 매핑이 필요할 경우 이 정보를 가지고 있는 가장 가까운 컴퓨터와 통신하게 된다. 도메인 네임 시스템이 이 방법을 사용한다.

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[정보보안기사 PART 05] 네트워크 보안 - 네트워크 개요


Section 20 네트워크 개요

 

1. 개요

 

(1) 데이터 통신

1) 프로토콜

 기본 개념

데이터 통신에 있어서 신뢰성 있게 효율적이고 안전하게 정보를 주고받기 위해서 정보의 송/수신자측 또는 네트워크 내에서 사전에 약속된 규약 또는 규법이다.

주로 송신자측에서 수신자측을 호출하여 연결하는 과정, 통신회선에서의 접속방식, 통신회선을 통해 전다로디는 정보의 형태, 오류발생에 대한 제어, 송/수신자측 간의 동기방식 등에 대한 약속을 포함하고 있다.

 

 주요 구성요소

프로토콜은 무엇을, 어떻게, 그리고 언제 통신할 것인가를 규정한다. 프로토콜의 주요 요소는 구문과 의미 그리고 타이밍이다.

- 구문(Syntax) : 데이터의 구조나 형식을 가리키며, 데이터가 표현되는 순서를 의미

- 의미(Semantics) : 비트의 영역별 의미를 나타낸다. 즉, 특정 패턴을 어떻게 해석하고, 그를 기반으로 어떤 동작을 할 것인가를 결정하게 된다.

- 타이밍(Timing) : 데이터를 언제 얼마나 빠른 속도로 전송할 것인가를 나타낸다.

 

 

2. OSI 모델과 TCP/IP 프로토콜

 

(1) OSI 모델

1) 계층의 구성

  7개의 계층은 3개의 그룹으로 나눌 수 있다.

제1, 2와 3계층은 물리 계층, 데이터링크 계층, 그리고 네트워크 계층으로 한 장치에서 다른 장치로 데이터를 전송할 때 필요한 물리적인 면을 처리한다.

제5, 6, 7계층인 세션 계층, 표현 계층, 응용 계층은 사용자 지원 계층으로, 서로 관련이 없는 소프트웨어 시스템 간의 상호 연동이 가능하게 한다.

전송 계층인 제 4계층은 두 그룹을 연결하고, 하위 계층에서 전송한 내용을 상위 계층이 사용할 수 있는 형태가 되도록 보장한다.

 

2) OSI 모델의 계층구조

- 물리 계층(Physical layer)

   데이터를 물리 매체상으로 전송하는 역할을 담당하는 계층

   전송을 위해 필요한 물리적 링크의 설정, 유지, 해제를 담당

   사용자장비와 네트워크 종단장비 사이의 물리적, 전기적인 인터페이스 규정에 초점을 두고 있음.

 

- 데이터링크 계층(Data Link layer)

   물리 계층의 있는 그대로의 전송 설비를 신뢰할 수 있는 링크로 변환

   비트 동기 및 식별 기능과 흐름제어 그리고 오류제어 기능 수행

   데이터링크 계층에서 다루어지는 데이터 단위를 지칭하여 일반적으로 프레임(Frame)이라 부른다.

 

- 네트워크 계층(Network layer)

   송신자측에서 수신자측까지 데이터를 안전하게 전달하기 위해서 논리적 링크를 설정하고, 패킷 분할 후 전송

 

- 전송 계층(Transport layer)

   하위계층으로 이루어진 네트워크 서비스와 상위계층으로 이루어진 사용자 서비스 구별

   두 사용자 사이의 데이터 전송을 위한 종단간(End-to-End)제어를 담당한다.

 

- 세션 계층(Session layer)

   네트워크 대화 제어기(dialog controller)이다.

   통신 시스템 간에 상호대화를 설정하고, 유지하고, 동기화 한다.

 

- 표현 계층(Presentation layer)

   송,수신자가 공토으로 이해할 수 있도록 정보의 데이터 표현방식을 바꾸는 기능 담당

   데이터 보안과 효율적인 전송을 위해 암호화와 압축을 수행하여 세션 계층으로 내려 보낸다.

 

- 응용 계층(Application layer)

   최상위 계층으로 사용자가 네트워크에 접속하는 것을 가능하게 한다.

 

계층 특징 데이터 종류
7 응용 각종 응용서비스 제공
네트워크 관리
메시지 FTP, TFTP, SNMP, SMTP, Telnet, HTTP, DNS, DHCP
6 표현 네트워크 보안
압축/압축해제, 포맷 변환 수행
ASCII, Mpeg, jpg, MIME
5 세션 소켓 프로그램
동기화
세션 연결/관리/종료
전송모드 결정(반이중, 전이중 등), SQL, RPC
4 전송 데이터 전송보장
흐름 제어
QOS
세그먼트 TCP, UDP, SCTP
3 네트워크 통신경로 설정, 중계기능 담당
라우팅
IPv4 & IPv6
패킷 IP,ICMP, IGMP, ARP, RARP, NAT, RIP, BGP
2 데이터링크 오류제어, Frame화
매체제어
에러검출, 에러정정, 흐름제어
프레임 이더넷, 토큰링, PPP, SLIP, 802.11
1 물리 물리적 연결설정, 해제
전송방식, 전송매체
비트 스트림 기계적 전기적 절자척 규격

 

 

(2) TCP/IP 프로토콜 그룹

1) 개요

 현재의 인터넷에서 사용하는 프로토콜 그룹.

 상호작용하는 모듈로 이루어진 계층적 프로토콜

 

2) 각 계층에 대한 설명

 데이터링크 : 전송 매체에 프레임을 송수신하는 역할을 담당하낟.

 네트워크 : IP는 호스트 네트워크 주소 관리, 패킷 라우팅하는 역할, ARP, ICMP 등

 전송 : 종단간 통신 서비스 제공을 담당. TCP, UDP

 응용 : 응용프로그램이 네트워크에 접근 가능하도록 인터페이스 기능 수행

 

3) 캡슐화와 역캡슐화

 발신지 호스트에서는 캡슐화, 도착지 호스트에서는 역캡슐화, 그리고 라우터에서 캡슐화와 역캡슐화가 이루어진다. 그러나 데이터링크 계층 스위치에서는 캡슐화/역캡슐화가 일어나지 않는다.

 

4) 주소 지정

 물리(링크) 주소(physical address), 논리(IP) 주소(logical address), 그리고 포트 주소(port address)

 

- 논리 주소

 기존 물리적인 네트워크와는 독립적으로 전세계적인 통신 서비스 위해 필요

 연결된 호스트를 유일하게 식별할 수 있는 32비트 주소 체계 사용

 인터넷상의 두 호스트는 동일한 IP 주소를 사용할 수 없다.

 물리 주소는 홉에서 홉으로 갈 때마다 변경되지만, 논리 주소는 발신지에서 목적지까지 같은 상태로 남음

 

- 포트 주소

 다수의 프로세스를 동시에 실행할 수 있다. 인터넷 통신의 최종 목적은 한 프로세스가 다른 프로세스와 통신할 수 있도록 하는 것이다.

 

5) 다중화와 역다중화 

 TCP/IP 프로토콜 그룹은 몇몇 계층에서 여러 개의 프로토콜을 사용하기 때문에 발신지에서는 다중화, 목적지에서는 역다중화를 한다.

 

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[정보보안기사 PART 04] 시스템 보안 - 각종 시스템 보안위협 및 대응책


Section 19 각종 시스템 보안위협 및 대응책

 

1. 버퍼 오버플로우 공격

 

(1) 버퍼 오버플로우(Buffer Overflow, Buffer Overrun) 공격 개요

1) 프로세스 메모리 구조

 Text, Data, Heap, Stack 영역으로 구분

 

Text 영역 : 프로그램 코드와 상수가 정의되어 있고, 읽기만 가능한 메모리 영역이기 때문에 데이터를 저장하려고 하면 분할 충돌을 일으켜 프로세스가 중지된다.

Data 영역 : 전역 변수와 정적 변수가 저장되어 있는 영역

Heap 영역 : 프로그래머의 필요에 따라 동적 메모리 호출에 의해 할당되는 메모리 영역

Stack 영역 : 함수 인자 값, 함수 내의 지역 변수, 함수의 반환 주소 등이 저장되는 영역으로 상위 메모리 주소에서 하위 메모리 주소로 데이터가 저장된다.

 

2) 버퍼 오버플로우 공격의 기본 개념

 버퍼 또는 데이터 저장 영역에 할당된 용량보다 더 많은 입력이 위치하면 다른 정보를 변경할 수 있는 조건

 공격자는 이런 조건을 이용하여 시스템을 중지시키거나 시스템의 제어를 갖기 위한 특별 코드 삽입

 버퍼 오버플로우는 프로세스가 정해진 크기의 버퍼 한계를 벗어나 이웃한 메모리 위치에 데이터를 겹쳐 쓰려고 시도하는 것과 같은 프로그래밍 오류의 결과로 발생

 

 

(2) 스택 버퍼 오버플로우(stack buffer overflow)

1) 개요

 보통 SetUID(Set User ID)가 설정된 루트 권한의 프로그램을 공격대상으로 한다. 스택에 정해진 버퍼보다 큰 공격 코드를 삽입하여 반환주소를 변경함으로서 임의의 공격 코드를 루트 권한으로 실행하는 방법

 

2) 함수 호출 메커니즘

 한 함수가 다른 함수를 호출하면, 호출된 함수가 끝났을 때 제어를 반환할 수 있도록 반환 주소를 저장할 장소가 필요하다.

 

3) 셸코드

 많은 버퍼 오버플로우 공격의 핵심 요소는 오버플로우가 발생하는 버퍼에 저장되는 공격자의 코드로 실행 제어를 이동시키는 것이다. 이 코드를 셸코드(Shellcode)라고 한다.

이렇게 부르는 이유는 사용자 명령어 라인의 해석기인 셸로 제어를 넘기고 공격당한 프로그램의 권한으로 시스템의 다른 프로그램에 접근하기 때문이다.

 

4) 스택 버퍼 오버플로우 공격 절차

 1단계 : 공격 셸 코드를 버퍼에 저장

 2단계 : 루트 권한으로 실행되는 프로그램의 특정 함수의 스택 반환주소 버퍼를 오버플로우 시켜서 공격 셸 코드가 저장되어 있는 버퍼의 주소로 덮어씌운다.

 3단계 : 특정 함수의 호출이 완료되면 조작된 반환 주소로 셸 코드의 주소가 반환되어 셸 코드가 실행되고, 루트 권한을 획득하게 된다.

 

 

(3) 힙 오버플로우(heap overflow)

 일반적으로 힙은 프로그램과 전역 데이터 위에 위치하며 메모리 위 방향으로 커진다.

 스택은 아래 방향으로 커진다.

 힙에 요청되는 메모리는 레코드의 연결리스트와 같은 동적 데이터 구조를 위해 사용된다. 만약 이런 레코드가 오버플로우에 취약한 버퍼를 가지고 있다면 연속된 메모리가 손상될 수 있다.

 스택과는 다르게 실행 제어를 쉽게 이동시킬 수 있는 반환 주소는 없다. 그러나 할당된 공간이 함수에 대한 포인터를 포함하고 있다면 공격자는 이 주소를 변경하여 겹쳐 쓴 버퍼에 있는 셸코드를 가리키도록 할 수 있따.

 

 

(4) 버퍼 오버플로우 공격 대응책

1) 개요

 1. 컴파일 시간 방어 : 새 프로그램 내에서 공격을 저지하도록 프로그램을 강화하는 것을 목표

 2. 실행 시간 방어 : 존재하는 프로그램에서 공격을 발견하고 중지시키는 것을 목표

 

2) 컴파일 시간 방어

 프로그램을 컴파일할 때 검사하여 버퍼 오버플로우를 방지하거나 발견하는 것을 목표로 한다.

 가장 기본적인 대응책은 버퍼 오버플로우를 허용하지 않는 Java, ADA, Python과 같은 현대화된 고급 프로그래밍 언어를 사용하여 소프트웨어를 작성

사용 자체를 권장하는 함수 : strcat(), strcpy(), get(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf(), gethostbyname(), realpath()

 사용을 권장하는 함수 : strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()

 

3) 실행 시간 방어

 대부분의 컴파일 시간 기법은 기존의 프로그램을 다시 컴파일해야 한다. 따라서 기존의 취약한 프로그램에 보호를 제공하기 위하여 운영체제의 업데이트로 배포할 수 있는 실행 시간 방어법이 인기를 끌고 있다.

 실행 시점 대응책은 실행가능 주소 공간 보호기법과 주소 공간 임의화 기법 포함.

 실행가능 주소 공간 보호 기법은 실행 코드가 프로세스 메모리상의 특정 위치에서만 실행 될 수 있게 함으로써 공격자가 스택 버퍼에 주입한 실행 코드(셸코드)를 원천적으로 실행될 수 없게 만든다. 대부분의 버퍼 오버플로우 공격은 스택 버퍼에 실행 코드를 주입하므로 재컴파일 없이 기존 프로그램들을 보호하는 데 매우 효과적이다.

 주소 공간 임희ㅗ하 기법은 스택 버퍼가 위치하는 주소 공간을 메모리 내에서 임의적으로 배치함으로써 공격자가 스택 버퍼 속에 주입한 실행 코드의 주소를 예측할 수 없게 만든다. 따라서 실행 코드로의 반환 주소 변경이 매우 어렵게 되어 스택 버퍼 오버플로우 공격이 매우 어렵게 된다.

 

 

2. 포맷 스트링 공격(Format String Attack)

 

1) 개요

 포맷 스트링(Format String)은 C언어의 printf()등의 함수에서 사용되는 문자열의 입,출력 형태를 정의하는 문자열로 서식 문자열이라 표현한다.

 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격으로 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 상요하는 경우 발생할 수 있는 취약점

 공격자는 포맷 스트링을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그 결과, 공격자는 취약한 프로세스의 권한을 획득하여 임의의 코드를 실행 할 수 있다.

 

2) 공격원리

 데이터 형태에 대한 불명확한 정의

 

3) 포맷스트링 취약점의 위협요소

 - 프로그램의 파괴

 - 프로세스 메모리 보기

 - 임의의 메모리 덮어쓰기

 

4) 포맷 스트링 공격의 대응책

 함수 사용 시 포맷 스트링을 지정하여 간접적으로 참조가 되도록 한다.

 시스템 패치를 꾸준히 진행한다.

 

 

 

3. 레이스 컨디션 공격

 

1) 기본 개념

 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근할 때 접근하는 순서에 따라 비정상적인(원하지 않는) 결과가 발생하는 조건/상황을 말한다.

 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어ㅓ들어 임시파일을 목적파일로 연결(심볼릭 링크)하여 악의적인 행위를 할 수 있는데 이를 레이디 컨디션 공격이라고 한다.

 만약 프로세스가 setuid 설정이 되어 root 권한으로 실행된다면 권한 상승을 통한 중요 자원(파일)에 접근하는 심각한 문제가 발생.

 

2) 파일 링크

 - 하드 링크

   똑같이 복사된 파일을 만든다.

   

 - 심볼릭 링크

   데이터가 있는 파일으 처믕부터 하나뿐이고, 심볼릭 링크는 단지 원본 파일 데이터를 가리키는 링크 정보만 가진다.

   원본 파일과 심볼릭 링크는 원본 파일이 삭제되더라도 원본 파일의 이름과 위치를 기억하고 계속 그 파일을 바라보는 상태로 남는다.

 만약에 삭제된 원본 파일 대신 처음 원본 파일과는 다르지만 똑같은 경로에 같은 파일명으로 파일을 생성해보면, 심볼릭 링크 파일은 새로 생성된 파일에 여전히 심볼릭 링크 파일로 존재학 된다.

 

3) 심볼릭 링크와 레이스 컨디션 공격

 공격의 대상은 소유자가 root이고, SetUID 비트를 가지며, 임시 파일을 생성하는 파일

 

4) 레이스 컨디션 공격에 대한 대응책

 - 프로그램 로직 중에 임시 파일 생성 후, 임시 파일에 접근하기 전에 임시 파일에 대한 심볼릭 링크 설정 여부와 권한에 대한 검사 과정 추가

 - 가능하면 임시파일 생성하지 않는다.

 - umask를 최하 022정도로 유지하여 임시로 생성한  파일이 공격자에 의해 악의적으로 삭제되지 않도록 한다.

 

 

 

4. 백도어(back door)

 

 시스템의 보안이 제거된 비밀통로

 서비스 기술자나 유지보수 프로그래머의 접근 편의를 위해 시스템 설계자가 고의적으로 만들어 놓은 통로

 

 

 

5. 시스템 자원 고갈 공격(시스템 서비스 거부 공격)

 

1) 개요

 시스템이 보유하고 있는 자원을 선점하거나 모두 고갈하는 방식으로 수행

 ex) 디스크 채우기, 메모리 고갈, 모든 프로세스 죽이기, 프로세스 무한 생성 방법

 

2) 시스템 자원 고갈 공격(System Resource Exhaustion Attack)의 종류

 - 가용 디스크 자원 고갈 공격

 - 가용 메모리 자원 고갈 공격

 - 가용 프로세스 자원 고갈 공격

 - 프로세스 죽이기 공격

 

 

 

6. 리버스 엔지니어링

 

1) 기본 개념

 장치나 시스템의 구조를 분석하여 원리를 발견하는 과정

 

2) 리버스 엔지니어링 공격

 시스템 또는 응용프로그램에 대한 분석 후 해당 시스템이나 응용프로그램이 갖고 있는 취약점을 찾을 수 있으며 이 취약점을 공격할 수 있는 코드를 생성해낼 수 있다.

 

3) 리버스 엔지니어링에 대한 대응책

 - 소스코드 난독화

 - 바이너리 난독화

 

 

 

7. 기타 시스템 보안위협 및 대응책

 

1) 루트킷(rootkit)

 존재의 흔적을 최대한도로 숨기면서 공격자가 언제든지 시스템에 관리자 권한으로 접근할 수 있도록 비밀 통로를 지속적으로 유지시켜주는 일련의 프로그램 집합

 

2) GNU Bash 취약점(ShellShock)

 취약한 버전의 bash는 환경변수의 함수 선언문 뒤에 임의의 명령어를 삽입할 경우 환경변수에 설정된 함수 선언 시 함수 선언의 끝을 인지하지 못하고 삽입한 명령어까지 실행하는 취약점이 존재한다. 이것이 최초 발견된 bash 취약점(ShellShock)이다.

 셸쇼크 취약점에 의해 영향을 받는 프로그램들 중 가장 대표적인 것이 CGI이다. CGI는 User-Agent와 같은 요청헤더정보를 셸의 환경변수에 저장하는데, 공격자가 헤더정보에 함수와 명령어를 추가하여 전송하면 해당 명령어가 실행되는 취약점 발생

 

3) 논리폭탄(logic bomb)

 특정한 사건이 발생할 때 프로그램이나 일련의 코드를 실행

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

화이트리스트 분석기법 & 블랙리스트 분석기법


화이트리스트 분석기법 (Positive 규칙)

 - 미리 정해진 기준을 통과하는 패킷만 허용

ex) 외부에서 내부로 들어오는 패킷들을 전부 차단!, 관리자가 선택한 패킷들만 들어올 수 있게 허용

 

블랙리스트 분석기법 (Negative 규칙)

 - 특정 조건에 해당되는 패킷만 거부

ex) 외부에서 내부로 들어오는 패킷들을 전부 허용!, 관리자가 선택한 패킷들만 들어오지 못하게 차단

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > Security' 카테고리의 다른 글

[인코딩 & 디코딩] 개념  (8) 2020.03.09

[정보보안기사 PART 04] 시스템 보안 - 서버 보안 관리


Section 18 서버 보안 관리

 

1. 서버관리자의 업무

 

(1) 보안 유지 관리

1) 개요

 시스템을 적절하게 구축하여 보호하고 배치하였다면 지속적으로 보안 유지 관리를 해야한다. 왜냐하면 환경의 변화, 새로운 취약점의 발견, 새 위협에 대한 노출 때문이다.

- 로깅 정보를 감시하고 분석

- 정기적으로 백업을 수행

- 정기적으로 시스템 보안을 테스트한다.

 

2) 로깅

 이미 발생한 나쁜 일을 알려주기만 하는 반작용적 제어

 

(2) 서버관리자의 업무

1) 시스템관리자 계정으로 작업하기

 1. root 계정으로 로그인

 2. 일반 사용자로 로그인한 후 su(switch user) 명령을 이용해 root로 계정 바꿈

 

2) 사용자 계정 관리

 멀티태스킹의 특징을 가지고 있으므로 다중 사용자를 수용하여 작업을 수행

사용자마다 계정 생성하면 /etc/passwd 파일에 계정 및 패스워드 사용자 및 그룹 ID, 그리고 셸이 정의

- /etc/passwd 일반 사용자도 접근하여 파일 내용을 볼 수 있기 때문에 안전한 관리를 위해서 섀도 패스워드 시스템을 사용하여 /etc/shadow에 암호문으로 저장

- /etc/shadow 파일은 계정명, 암호화된 패스워드 등 9개의 필드로 되어있으며 일반사용자에게는 접근 권한이 없으므로 더욱더 안전

 

 계정 사용 제한

원격 접근권한 제거 : /etc/passwd 파일에서 /bin/bash과 같은 셸을 삭제

계정 사용기간 설정 : /etc/shadow 파일에서 사용기간 또는 만료일 설정

 

3) 자원 관리

- 프로세스 관리

   ps, kill, wait, su 등을 사용한 프로세스 관리

   wait : 프로세스가 끝나기를 기다리는 명령어

   nice : 프로세스의 우선순위를 변경할 수 있는 nice 값을 설정하는 명렁어

 

- 메모리 관리

   free : 시스템의 실제 메모리와 스왑 메모리에 대한 사용 현황을 확인할 수 있는 명령어

 

- 메일, 디스크 등의 자원 관리

   du : 디스크의 파일 사용량을 재귀적으로 보여줌

 

4) 네트워크 관리

 ifconfig, route, netstat, nslookup, ping, traceroute 등

 

 

 

2. 로그 설정과 관리

 

(1) 시스템 로그 분석

1) 로그에 대한 이해

 윈도우 - 이벤트(Event)라는 중앙 집중화된 로그 수집, 저장

 유닉스 - 로그를 여러 곳에 산발적으로 저장

 

2) 윈도우의 로그 분석과 설정

 - 해커에 대한 즉각적인 확인

 net session : 현재 로그인된 사용자 확인

 net session /delete : 세션 끊는 명령

 

 - 윈도우 시스템 이벤트 로그 종류

 응용 프로그램 로그, 보안 로그, 시스템 로그, 디렉터리 서비스 로그, 파일 복제 서비스 로그, DNS 서버 로그

 

 - 감사 정책

 개체 액세스 감사, 계정 관리 감사, 계정 로그인 이벤트 감사, 권한 사용 감사, 로그인 이벤트 감사, 디렉터리 서비스 액세스 감사, 정책 변경 감사, 프로세스 추적 감사, 시스템 이벤트 감사

 

 - 로그정책 설정

 - 이벤트 로그 파일

 

3) 유닉스/리눅스의 로그 분석과 설정

4) 유닉스/리눅스 시스템 로그 설정(/etc/syslog.conf)

5) 로그 관리

 

(2) 응용 프로그램 로그 관리

1) IIS 웹 서버 로그

 IIS(Internet Information Services)

 로그

날짜와 시간, 서버 IP, HTTP 접근 방법과 접근 URL, 서버 포트, 클라이언트 IP, 클라이언트이ㅡ 웹 브라우저, 실행 결과 코드, 서버에서 클라이언트로 전송한 데이터 크기, 클라이언트에서 서버로 전송한 데이터의 크기, 처리 소요 시간

 

2) Apache 웹 서버 로그

로그

클라이언트IP, 클라이언트 로그인명, 클라이언트 사용자명, 날짜와 시간, HTTP 접근 방법과 접근 URL, 실행 결과 코드, 서버에서 클라이언트로 전송한 데이터 크기, 클라이언트의 웹 브라우저

 

 

 

3. 공개 해킹도구에 대한 이해와 대응

 

(1) 크래킹 S/W

1) 크래킹의 개요

 악의적인 목적을 가지고 시스템에 침입하는 행위

 사용자의 ID, 패스워드를 찾는 도구로 활용되고 있는 데, 이 떄의 공격원리는 ID, 패스워드를 대입하여 맞는지, 틀리는지를 지속적으로 수행해보는 방법

 

2) 크래킹 S/W 사례

John the Ripper : 패스워드 점검도구로 가장 잘 알려진 프로그램

pwdump : 윈도우에서 패스워드를 덤프할 수 있는 도구

L0phtCrack : 패스워드 취약점 점검도구로 원격 및 로컬 서버나 PC에 대하여 패스워드 점검

ipccrack : 사용자 계정 패스워드를 원격지에서 추측하여 취약점을 점검

chntpw : 물리적 접근이 가능한 시스템에서 패스워드를 리셋시키는 프로그램

ERD Commander : 윈도우 시스템에서 패스워드를 복구해야 하는 경우

 

(2) 키로그 S/W

1) 개요

 설치된 컴퓨터에서 키보드로 입력한 정보를 로그로 남기는 프로그램

 

2) 키보드 해킹방지 프로그램

 사용자의 키보드 입력 자체를 보호하여 사용자가 입력하는 정보를 제 3자가 알아볼 수 없도록 해주는 프로그램

 

 

 

4. 서버보안용 S/W 설치 및 운영

 

(1) 취약점 분석 도구

1) 취약점 분석

일정한 보안 수준을 유지하기 위해서 정기적으로 수행해야 하며, 새로운 소프트웨어나 서비스가 추가되는 경우 혹은 새로운 장비를 구입하여 네트워크를 확장했을 경우에도 취약점 분석 실시

 

2) 취약점 분석 도구

- SATAN(Security Analysis Tool for Auditing Networks)

 해커와 똑같은 방식으로 시스템에 침입, 보안상의 약점을 찾아 보완할 수 있는 네트워크 분석용 보안 관리 도구

 해커에게 노출될 수 있는 약점을 사전에 발견, 이에 대한 보완 조치를 하도록 해주는 소프트웨어

 

- SARA

 SATAN이 업데이트가 되지 않는 상황에서 SATAN을 기반으로 개발된 취약점 분석도구로 네트워크 기반의 컴퓨터, 서버, 라우터 IDS에 대한 취약점 분석, 유닉스 플랫폼에서의 동작, HTML 형식의 보고서 기능이 있다.

 

- SAINT

 유닉스 플랫폼에서 동작하는 네트워크 취약점 분석도구로서 HTML 형식의 보고서 기능이 있다.

 원격에서 취약점을 점검하는 기능 있다.

 

- COPS

 유닉스 플랫폼에서 동작하며 시스템 내부에 존재하는 취약점을 점검하는 도구로서 취약한 패스워드를 체크한다.

 

- Nessus

 클라이언트-서버 구조로 클라이언트의 취약점을 점검하는 기능이 있다.

 사용이 자유롭고 플로그인 업데이트 등이 쉽다.

 HTML 등 여러 형태의 결과를 리포트 해준다.

 

- nmap

 포트스캐닝 도구로 TCP connect 방식뿐만 아니라 stealth 모드로 포트 스캐닝하는 기능을 포함한다.

 

3) 파일 무결성 점검(tripwire)

 정상적인 상태의 디렉터리 및 파일 정보를 백업하고 있다가 점검 수행 시점에서의 정보와 백업한 정보를 비교하여 변경된 사항을 점검하는 도구

 tripwire는 유닉스, 리눅스 환경에서 파일 시스템 무결성을 점검하는 대표적인 도구로 오픈소스 버전과 상용 버전이 있다.

 MD5, SHA, CRC-32 등의 다양한 해시 함수를 지원하고, 파일에 대한 데이터베이스를 만들어 이를 통해 공격자들에 의한 파일들의 변조여부를 판별한다.

 

(2) 스캔 탐지

1) 스캔 탐지 도구

 - mscan

 메인 전체를 스캔하여 그 도메인 내에 있는 wingate, test-cgi, NFS exports, statd, named, ipopd, imapd 등 최근 많이 이용되는 주요 취약점을 한 번에 스캔 할 수 있는 해킹 도구

 - sscan

 mscan을 업데이트하여 개발한 유닉스/윈도우 시스템에 대해 네트워크를 통하여 취약점 점검을 수해애할 수 있는 도구로 공격용으로도 많이 활용되고 있다.

 - portsentry

 실시간으로 포트 스캔을 탐지하고 대응하기 위한 프로그램으로 정상적인 스캔과 stealth 스캔을 탐지할 수 있으며, 스캔로그 남기기, 공격호스트를 /etc/hosts.deny 파일에 기록하여 자동 방어, 공격 호스트를 경유하여 오는 모든 트래픽을 자동 재구성하는 기능이 있다.

 

(3) 침입탐지 및 방화벽

1) 네트워크 모니터링 및 침입탐지 도구

 - snort

 실시간 트래픽분석과 IP 네트워크에서의 패킷 처리를 담당하는 공개 소스 네트워크 침입탐지시스템(IDS)이다.

 프로토콜 분석, 콘텐츠 검색 및 조합 작업을 할 수 있으며, 버퍼 오버플로우, 은폐형 포트 스캔, CGI 공격, SMB 프로브, OS 핑거프린팅 시도와 같은 다양한 공격을 감지할 수 있다.

 또한 유연한 언어 사용으로 트래픽을 분석하며 모듈화된 탐지 엔진을 지원하고 실시간 경고 기능도 지원

 

2) 방화벽

- TCP-Wrapper

 TCP-Wrapper는 네트워크 서비스에 관련한 트래픽을 제어하고 모니터링할 수 있는 UNIX 기반의 방화벽 툴이다.

 임의의 호스트가 서비스를 요청해 오면 실제 데몬을 구동하기 전에 접속을 허용한 시스템인지 여부를 확인하여 호스트명 및 서비스명을 로그에 남긴 다음, 허가된 시스템에는 서비스를 제공하고 허가되지 않은 경우에는 접속을 차단해 주는 도구

 

- IPchain/IPtable

 패킷 필터링 방화벽으로, 패킷 필터란 네트워크를 통과하는 모든 것이 패킷의 형태를 가지며, 패킷의 앞부분에는 패킷이 어디서 왔는지 어디로 향하는지, 어떤 프로토콜을 이용하는지 등과 같은 정보를 가지고 있다.

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[정보보안기사 PART 04] 시스템 보안 - 유닉스/리눅스 서버 보안


Section 17 유닉스/리눅스 서버 보안

 

1. 유닉스(UNIX)

 

(1) 개요

1) UNIX 시스템의 특징

구분 설명
대화식 운영체제 사용자와 운영체제(UNIX)간의 상호작용은 명령어 해석기인 셸(Shell)에 의해 이루어짐
멀티태스킹 여러 개의 명령어를 동시에 처리하는 방식
멀티유저 동시에 여러 사용자가 하나의 컴퓨터를 사용 가능
호환성 및 이식성 하드웨어적인 구조에 독립적으로 응용프로그램을 작성할 수 있는 환경 제공
계층적 파일시스템 계층적 파일시스템은 정보의 고유구조를 반영하도록 그룹화하는 기능으로 파일관리에 상당한 유연성 제공
뛰어난 통신 기능 TCP/IP에 기반한 통신기능을 운영체제 자체에 내장하고 있으며, 프로세스 간을 연결하는 파이프 기능이 있어서 명령어 간의 데이터 전달이 수월
다양한 기능의 유틸리티와 개발환경 제공 UNIX 시스템은 수백여 개의 명령어와 유틸리티를 사용자 및 개발자에게 제공하여 도움을 줌

 

(2) UNIX의 구성

1) 커널(kernel)

 메모리에 상주!, 가장 하위 수준에서 하드웨어와 직접 관계!

 CPU, 메인 메모리, 하드디스크 등의 하드웨어 자원 제어

 프로세스 스케줄링, 기억장치관리, 파일관리, 시스템호출 인터페이스, 입출력서비스 등의 기능 제공

 

2) 셸(Shell)

 운영체제와 사용자가 대화하기 위한 기반을 제공하는 중요한 프로그램

 명령어 해석기(Command Interpreter)

 ex) 본 셸, C 셸, 콘 셸, 배시 셸 등

 

3) 파일시스템(File System)

- 디렉터리 구조

  계층화된 트리구조를 가지며, 최상위 디렉터리는 루트(root)이다.

디렉터리 내용
/ root 디렉터리나 최상위 디렉터리이다.
/etc 시스템의 환경 설정 및 주요 설정 파일을 담고 있다.(passwd, hosts 등)
/dev 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일을 담고 있다.
/usr/bin 기본적으로 실행 가능한 파일을 담고 있다.(echo, mv, copy, pwd 등)
/usr/include C 언어 라이브러리 헤더 파일이 저장되는 디렉터리이다.
/usr/lib 기본 프로그램의 모듈을 담고 있다.
/usr/sbin 시스템 관리 명령어가 저장되는 디렉터리이다.
/home 사용자 홈 디렉터리가 저장되는 디렉터리이다.
/tmp 프로그램 실행 및 설치 시 생성되는 임시 파일을 담고 있다. 이 디렉터리에 파일을 저장하면 재부팅 시 임의로 삭제될 수 있다.
/var 시스템 로그가 저장되는 디렉터리이다.

 

- 파일시스템의 구조

  파티션에 생성된 파일시스템은 부트 블록(Boot Block), 슈퍼 블록(Super Block), i-node 리스트, 데이터 블록(Data Block)의 네가지 영역으로 분리된 자료구조를 갖는다.

 

- i-node

  유닉스에서 각 파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 구조체

  일반 파일이나 디렉터리 파일의 i-node는 각 파일의 디스크 블록의 위치를 포함하고 있으며, 특수파일의 i-node는 주변장치를 식별할 수 있는 정보 포함

 

- 슈퍼 블록(Super Block)

  파일시스템의 정보를 유지하는 자료구조

  좀 더 빠르고 효과적인 파일시스템의 관리 가능

  파일시스템의 요약정보와 함께 사용하지 않고 있는 i-node와 디스크 블록의 위치정보도 가지고 있다.

 

 

2. UNIX 기본 사용법

 

(1) 파일시스템 응용

1) 파일과 디렉터리 관리

 디렉터리(파일) 정보 출력(ls)

특정 디렉터리에 있는 디렉터리와 파일을 열거하고 추가 옵션으로 이들에 관한 여러가지 정보(크기, 소유주, 만든 시간, 변경 시간, 이름, 접근권한 등)도 알 수 있다.

 

- rw-r--r-- 1 root root 50316 2009-06-14 03:08 install.log

 

파일 유형   : -

문자 파일 유형
- 일반(정규) 파일
d 디렉터리 파일
| 심볼릭 링크 파일
b 블록 장치 특수 파일
c 문자 장치 특수 파일
p 파이프, 프로세스간 통신에 사용되는 특수 파일
s 소켓, 네트워크 통신에 사용되는 특수 파일

 

접근권한  : rw-r--r--

 user : 파일을 만든(생성) 소유주

 group : 파일을 만든 소유주가 속한 그룹의 사용자

 other : 기타 사용자

권한 파일
읽기 r (4) 파일을 읽거나 복사할 수 있다.
쓰기 w (2) 파일을 수정, 이동, 삭제할 수 있다.
실행 x (1) 파일을 실행할 수 있다.

 

하드 링크수(Hard Link)   : 1

 링크 카운터라고도 하며, 동일한 i-node를 참조하는 파이릐 수

 

소유주   : root

소유 그룹    : root

파일크기 (Byte)   : 50316

마지막 변경 날짜/시간   : 2009-06-14 03:08

파일 이름    : install.log

 

2) 파일 권한 관리

접근권한 변경(chmod)

 기존 파일 또는 디렉터리에 대한 접근권한을 변경할 때 사용

chmod [-R] permission file_name1 | directory_name1 [file_name2 | director_name2....]

- R : 하위 디렉터리와 파일의 권한까지 변경

permission : 기호나 8진수로 접근권한을 지정

 

접근권한을 기호로 기술하는 방법

대상 : u(user), g(group), o(other), a(ll)

연산자 : +(추가), -(제거), =(지정)

접근권한 : r(읽기), w(쓰기), x(실행)

ex) chmod go-w daemon.c : daemon.c의 group, others에 w 권한 제거

 

접근권한을 숫자로 기술하는 방법

파일의 접근권한을 세 개의 8진수로 기술

r(읽기)=4, w(쓰기)=2, x(실행)=1

ex) chmod 777 daemon.c : 모든 사용자에게 rwx권한 설정

 

소유권 또는 그룹 변경(chown/chgrp)

 파일이나 디렉터리의 소유주나 그룹을 변경할 때 사용한다. 명령을 실행하고 나면 파일의 이전 소유주는 해당 파일에 이 명령을 다시 실행할 수 없다.

chown [-hR] owner file_name1 | directory_name1 [file_name2 | director_name2....]
chgrp [-hR] group file_name1 | directory_name1 [file_name2 | director_name2....]

- h : 심볼릭 링크 파일 자체의 소유주나 그룹을 변경한다.

 

(2) 프로세스 응용

1) 프로세스 개요

 시스템 호출은 없는 대신, 유닉스에서는 기존의 프로세스를 복제한다.

 프로세스 id(PID)가 0인 swapper라는 첫 번째 프로세스는 부팅 시간 동안 운영체제에 의해서 생성

 이 프로세스는 PID 1과 2를 가지는 2개의 프로세스 init와 pagedaemon을 만들기 위해 fork/exec 두번 실행

 

 

 

3. UNIX 시스템 관리

 

(1) 시스템 시작과 종료

1) 부팅 관련 용어 정의

 런 레벨(Run Level)

런 레벨 시스템의 운영 상태
0 PROM(Programmable Read-Only Memory) 모드
S, s 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 되지 않은 상태
1 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 된 상태
2 멀티 유저 모드(NFS 클라이언트 모드)
3 멀티 유저 모드(NFS 서버 모드), UNIX 기본 Run Level
4 사용 안하
5 시스템 power Off 모드
6 시스템 리부팅

 

2) 시스템 종료

접속 중인 사용자에게 시스템의 종료를 공지하여 작업을 마무리하도록 한다.

 운영 중인 서비스(프로세스)를 안전하게 종료

 하드디스크를 갱신하여 파일시스템의 무결성 유지

 shutdown 명령은 시스템을 안전하게 종료할 때 사용!

 

(2) 파일시스템 관리

1) 파일시스템 연결(mount)

 보조기억장치에 들어 있는 데이터를 읽어 오고, 여기에 저장하려면 먼저 해당 장치를 UNIX 시스템에 연결 작업 필요

 mount 명령은 보조기억장치에 설치된 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결

 

2) 파일시스템 연결 해제(umount)

 마운트 된 파일시스템의 연결 해제

 마운트된 정보는 /etc/mtab에 기록되고, umount는 정보를 삭제한다.

 

(3) 프로세스 스케줄 관리

1) 정기적 스케줄 관리(cron)

 UNIX 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용

 

아래와 같은 특징을 가지면 cron 데몬 이용

- 일괄적으로 처리해야 하는작업인 경우

- 작업에 대한 요구가 불규칙하지 않은 경우

 

cron 데몬 프로세스를 사용하기 위한 3가지 구성요소

- 정기적으로 처리할 작업 목록을 정의한 crontab 파일

- crontab 파일을 제어(편집)하는 crontab 명령

- crontab 파일을 읽어서 내용에 정의된 대로 작업을 처리하는 cron 데몬 프로세스

 

2) crontab 파일의 구조

crontab 파일은 정기적으로 처리해야 하는 작업목록을 정의한 파일

구분 기술방법
필드 의미
필드1 분은 0-59까지의 숫자로 기술한다.
필드2 시은 0-23까지의 숫자로 기술한다.
필드3 일은 1-31까지의 숫자로 기술한다.
필드4 월은 1-12까지의 숫자로 기술한다.
필드5 요일 요일은 0-6까지의 숫자로 기술한다. (0: 일요일)
필드6 작업 지정 시간에 실행할 작업을 절대 경로로 기술하고 필요한 옵션 및 인수를 함께 나열한다.

ex) crontab -l

20 6 * * 1-5 /work/batch_job parm1

:매월 매일 월~금요일 오전 6시 20분에 /work/batch_job 명령을 param1 인수와 함께 실행

 

 

 

4. UNIX 서버 보안

 

(1) 시스템 보안

1) 사용자의 패스워드 관리

 사용자의 계정가 인증을 관리하는 것

/etc/passwd 파일에 등록된 사용자 계정마다 정보가 담겨있다.

최근에는 /etc/shadow 파일에 암호화된 패스워드를 저장하고 있다.

 

passwd 파일

UNIX 시스템은 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd 파일에 저장한다.

[user_account]:[user_password]:[user_ID]:[group_ID]:[comment]:[home_directory]:[login_shell]

ex) root:x:0:0:Super-User:/root:/bin/sh

1. 로그인 ID(root)

2. 비밀번호(x)

3. 사용자 ID(0) : 100번 이하는 시스템이 사용하는 값, 0번은 시스템 관리자

4. 그룹 ID(0)

5. 사용자 설명(Super-User) : 사용자 이름

6. 홈 디렉터리(root) : 홈 디렉터리의 절대 경로

7. 로그인 셸(/usr/bin/bash) : 로그인 셸의 절대 경로

 

shadow 파일

암호화된 패스워드를 저장하고 관리자만 읽을 수 있도록 제한

[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactivel]:[expires]

ex) root:$1$VE59oY1q$z74b9wxdTyB8oUenreT9g/:13115:0:99999:7:10::

1. User Account(root) : 사용자 계정

2 $1$VE59oY1q$z74b9wxdTyB8oUenreT9g/ : 암호화된 패스워드(일방향 해시 알고리즘 이용)

3. 13115 : 마지막으로 패스워드르 변경한 날

4. 0 : 최소 변경 일수

5. 99999 : 최대 변경 일수

6. 7 : 경고 일수

7. 10 : 최대 비활서 일수

8. EXPIRE DATE : 사용자계정이 만료되는 날

 

2) 접근권한 마스크(umask)

 파일을 생성할 때는 666에서 umask로 지정한 값을 빼고, 디렉터리의 경우 777에서 umask로 지정한 값을 빼게한다.

 

3) 권한 상승(SetUID, SetGID)

 사용자의 권한이 아닌 프로그램 소유주의 권한이 되어야한다.

파일종류 특수권한(3bit) user(3bit) group(3bit) other(3bit)
-,d,c,b,s,l,p 4 2 1 4 2 1 4 2 1 4 2 1
suid sgid sticky-bit r w x r w x r w x

 

4) 디렉터리 접근권한(Sticky-bit)

 sticky-bit를 이용하여 디렉터리에 트별한 접근권한을 부여할 수 있다.

 공유모드라고도 한다.

구분 기호방식 8진수 방식 특수권한 설정
setuid(4) s 4000 chmod 4777 a.out
chmod u+s a.out
setgid(2) s 2000 chmod 2777 a.out
chmod g+s a.out
sticky-bit(1) r 1000 chmod 1777 /testdir
chmod o+t /testdir

 

(2) 네트워크 보안

1) 슈퍼 서버[inetd 데몬]

 inetd 데몬은 N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올때마다 해당 서비스와 관련된 실행 모듈(FTP, Telnet, TFTP 등)을 실행해준다.

 

2) 접근 통제(TCP Wrapper)

 외부에서 들어오는 클라이언트에 대해 접근통제 기능 제공

 클라이언트의 IP주소를 확인하여 시스템관리자가 접근을 허용한 호스트들에 대해서만 서비스 허용하기 때문에 외부의 해킹으로부터 시스템 보호 가능!

 모든 프로토콜에 대한 접근 제어 할 수 없다. standalone 데몬 같은 경우 inetd 데몬 통제 불가능, TCP 외의 일부 프로토콜에 대해서만 통제 가능

 

3) PAM(Pluggalbe Authentication Modules, 장착형 인증 모듈)

 사용자 인증의 핵심, 각 응용 프로그램에 대한 인증 형태, 사용자 권한, 접근 자원 등을 선택할 수 있는 라이브러리

 

 

 

5. 리눅스(Linux)

 

1) 파일시스템의 종류

minix, ext, ext2, ext3, ext4, nfs 등

 

 

 

6. 유닉스/리눅스 서버 취약점 분석, 평가

 

(1) 계정 관리

1) root 계정 원격 접속 제한

2) 패스워드 복잡성 설정

3) 계정 잠금 임계값 설정

4) 패스워드 파일 보호

5) root 이외의 UID가 '0' 금지

6) 패스워드 최소 길이 설정

7) 패스워드 최대 사용 기간 설정

8) 패스워드 최소 사용기간 설정

 

(2) 파일 및 디렉터리 관리

1) root, 홈, 패스 디렉터리 권한 및 패스 설정

2) 패스 및 디렉터리 소유자 설정

3) HOME/.rhosts, hosts.quiv 사용 금지

 

(3) 서비스 관리

1) Anonymous FTP 비활성화

 

 

 

 

*출처:[알기사] 2019 정보보안기사&산업기사

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

+ Recent posts