Linux

네트워크 보안

laughcryrepeat 2020. 9. 28. 23:58

네트워크 침해 유형 및 특징

 

1) 스니핑 Sniffing 공격

 

1. 스니핑 공격의 개념

한 서브 네트워크 내에서 전송되는 패킷의 내용을 임의로 확인하는 공격 기법

 

2. 네트워크 무작위 모드

  • 네트워크 설정을 무작위 모드로 변경한 후 TCP Dump를 이용하면, 네트워트 내의 모든 패킷을 확인할 수 있음.
  • ifconfig [네트워크 인터페이스 이름] promisc 명령으로 무작위 모드로 변경하며,
    ifconfig [네트워크 인터페이스 이름] -promisc 로 일반 모드로 다시 전환.
  • tcpdump 는 네트워크 패킷을 확인하는 명령어.

3. 스니핑 공격의 대응방안

 

중요한 데이터는 SSL (Secure Socker Layer)와 같은 암호화 통신 방식을 이용.

 

2) 스푸핑 Spoofing 공격

 

1. 스푸핑 공격의 개념

  • 네트워크 서비스, 패킷 정보를 임의로 변경하여 공격에 사용하는 기법
  • IP, DNS, MAC 주소 등의 정보를 변조하여 공격의 탐지 및 역추적을 어렵게 함.

 

2. 스푸핑 공격의 세부 기법 및 대응 방안

 

IP Spoofing - TCP/IP 의 구조적 취약점을 악용해 공격자가 자신의 IP를 변조하므로
  IP 기반 인증 등의 서비스를 무력화시키는 공격기법
- 대응방안 : IP 기반 인증 최소화. TCP sequence 번호를 랜덤하게 구성
ARP Spoofing - IP 주소를 MAC 주소로 변환하는 ARP 프로토콜의 취약점을 악용한 공격
- IP주소와 MAC 주소의 매핑정보를 네트워크에 브로드캐스트해 대상 호스트들의 ARP테이블이 악의적인 정보로 변조되도록 함.
- 대응방안 : arp -s [IP][MAC] 명령을 이용해 정적 ARP 매핑정보를 등록.
DNS Spoofing - DNS 요청에 위조된 정보를 응답 패킷으로 보내는 공격기법
- DNS Spoofing에 의해 도메인에 대한 IP 주소가 공격자의 IP 주소로 응답될 경우
  사용자는 공격자의 IP에 위치한 서비스로 접속하게 됨.

 

3) Dos (Denial of Service) 와 DDos(Distributed Dos) 공격

 

1. DoS 공격의 개념

 

공격대상의 시스템 및 네트워크 취약점을 공격해 과부하를 발생시키고 정상 서비스 불가하게 하는 가용성 침해공격.

 

2. Dos 공격의 유형

 

  • 파괴공격
    : 시스템의 한계 용량을 초과하는 부하 발생시켜 연산장치, 저장장치, 데이터 등을 파괴하는 공격
  • 시스템 자원 고갈 공격
    : 반복적인 프로세스 생성, 메모리 할당, 데이터 중복 저장 등을 통해 CPU, 메모리, 디스크 등 주요자원을 고갈시키는 공격.
  • 네트워크 자원 고갈 공격
    : 대용량의 과도한 패킷을 유발해 네트워크 대역폭을 고갈시키는 공격

 

3. Dos 공격의 세부 기법

 

Ping of Death - ICMP Echo 패킷을 정상적인 크기64k 를 초과해 전송해 시스템 문제를 일으키는 공격.
- 전송된 데이터는 라우팅하는 동안 Fragment로 분할되 처리되므로 과부하가 발생함.
Teardrop Attack - IP fragmentation에 따라 패킷을 재조립할 때 오프셋을 임의로 변호해 공격.
- 잘못된 오프셋 정보는 재조립 과정에서 과부하 및 시스템 크래쉬를 유발.
TCP SYN Flooding - TCP의 3-way 핸드쉐이킹 연결방식을 악용한 공격기법
- 공격자는 TCP 연결 시 사용하는 SYN flag를 대량으로 공격대상에서 발송
  SYN-ACK에 대한 최종 응답 ACK를 전송하지 않음.
- 피해 시스템은 TCP 연결을 처리하기 위해 자원을 계속 할당하게 되므로 정상 서비스 불가.
UDP Flooding - 대량의 UDP 패킷을 전송해 공격대상의 자원을 소모시키는 공격기법.
- 시스템은 UDP 패킷을 처리하기 위해 서비스 및 포트를 반복해서 점검하므로 정상 서비스 불가.
- 공격시 발신자의 IP 주소가 임의로 변조되 응답메시지는 공격자에 전달되지 않음.
Land Attack - 공격 대상에 IP 패킷을 보낼때, 발신자IP 수신자 IP를 모두 공격 대상의 IP로 하여 문제를 일으키게 하는 공격
Smurf Attack - 공격자는 IP 주소를 공격 대상의 IP 주소로 위장하고 ICMP Request 패킷을 브로드 캐스트를 통해 다수의 시스템에 전송.
- 브로드캐스트를 수신한 다수의 시스템은 ICMP Echo Reply 패킷을 공격자가 아닌 공격 대상으로 전송하게 되면서 부하 발생시킴.
Mail Bomb - 동일한 이메일 주소를 대상으로 대량의 메일을 동시에 발송하는 공격 기법.
- Mail Bomb 공격은 네트워크 자원뿐 아니라 메일 데이터 저장을 위한 디스크 자원도 고갈시킴.
NTP 증폭 공격 - NTP 서비스의 monlist 요청 방식을 악용한 DDoS 공격 기법.
- 공격자의 적은 공격 패킷이 증폭되 공격대상에 전송되므로 피해가 증가함.

 

4. DDoS (Distributed Denial of Service)

 

  • 공격을 위한 에이전트를 분산된 시스템에 배치한 후 , DoS 공격을 동시에 실행하는 공격 기법.
  • Agent에 명령을 내리는 명령 서버를 C&C서버라고 한다.
  • Agent가 설치되 DDoS 공격에 사용되는 호스트를 좀비 PC라 하고, 좀비 PC의 네트워킹을 봇넷 Botnet이라 함.
  • DDoS 공격을 위해 다양한 도구를 사용한다.
Stacheldraht DDos의 에이전트 역할을 하는 악성 코드로 Smurf 공격에 사용.
통신 시 암호화 기능을 지원, 공격자 확인을 위해 패스워드 지정가능.
TFN 공격자 시스템과 마스터 시스템 간 연결이 평문으로 되어있고,
UDP Flooding, TCP SYN Flooding, ICMP 브로드 캐스트 공격이 가능.
TFN 2K TFN의 발전된 형태로 UDP,TCP, ICMP를 복합적으로 사용하고 포트도 임의로 결정되며 암호화를 사용. 지정된 TCP 포트에 백도어를 실행할 수 있음.
Trinoo UDP Flooding 분산 서비스 거부 공격을 할 수 있는 통합 도구.

 

5. DoS 및 DDoS 공격의 대응방안

 

  • 침입 차단 시스템을 이용해 패킷 및 포트 필터링
  • 침입 탐지 시스템을 이용해 공격 탐지
  • 로드 밸런싱을 통한 대용량 트래팩 분산 처리 구성
  • 시스템 최신 패치를 적용해 취약점 제거
  • 불필요한 서비스를 제거하고 포트를 닫음.

 


해킹 프로그램을 이용한 공격

 

1) 무작위 공격 Brute Force Attack 도구

 

1. 무작위 공격의 개념과 특징

 

  • 무작위 공격은 사전 파일을 기반으로 임의의 정보를 무작위로 대입해 인증을 우회할 수 있는 공격기법.
  • root, Admin 과 같이 고정된 아이디를 사용할 경우 무작위 공격을 사용할 수 있으므로 보안에 취약

2. 무작위 공격 도구 및 대응 방안

  • 리눅스 시스템의 대표적인 무작위 공격도구로 John the Ripper
  • 입력 회수제한 등을 통해 무작위 공격에 대응.

2) 기타 해킹 프로그램 및 악성 코드

 

Prorat 해킹 대상 시스템에 원격접속 및 제어하여 해킹을 수행할 수 있는 전용 프로그램
Netbus 네트워크를 통해 윈도우즈 컴퓨터 시스템을 원격으로 제어하기 위한 소프트웨어
Back orifice 윈도우의 TCP/IP 기능을 이용해 시스템끼리 원격제어
랜섬웨어 시스템을 잠그거나 데이터를 암호화해 사용할 수 없도록 만든후 금전요구하는 악성 프로그램.
최근 국내 웹 호스팅 업체가 이 공격으로 인해 큰 비용을 지불.
트로이목마 정상적인 프로그램으로 가장하였으나 내부에 악성 코드를 담고있는 프로그램을 의미
웜바이러스 스스로 실행되는 악성 소프트웨어로 자기 복제와 다른 시스템으로 전파되는 특징.

 


보안 솔루션을 이용한 대비 및 대처

 

1) 방화벽 Firewall

 

1. 방화벽의 개념과 주요 기능

  • 외부로부터 들어오는 악의적 트래픽을 막고, 허가된 트래픽만 내부 네트워크로 유입될 수 있도록 통제하는 하드웨어나 소프트웨어
  • 내부에서 외부로 나가는 패킷도 룰에 따라 통제 가능
  • Access Control, Logging and Auditiong, Authentication 기능 등을 제공.

2. 방화벽의 종류

스크리닝 라우터 Screening Router
내부 네트워크와 외부 네트워크를 방화벽 기능을 탑재한 라우터로 연결
장점 : 필터링 속도가 빠르고 네트워크 전체를 방어
단점 : 패킷 필터링 규칙 구성, 검증 및 로그 관리가 어려움,
베스천 호스트 Bastion Host
방화벽 기능을 탑재한 호스트를 이용하여 내부 네트워크와 외부 네트워크를 연결
장점 : 호스트 기반의 소프트웨어로 지능적인 정보 분석을 지원
단점 : 자체 보안 취약점이 있을 가능성.
듀얼홈 게이트웨이 Dual-Homed Gateway
2개의 네트워크 카드를 내장한 Bastion을 이용해 외부 네트워크와 내부 네트워크를 각각 연결
장점 : 네트워크가 분리되어 내부 IP주소가 노출 안되므로 높은 보안성을 제공
단점: 자체 보안 취약점 있을 가능성
스크린드 호스트
게이트웨이
Screened Host Gateway
Dual-Homed Gateway 와 Screening Router를 혼합한 형태
장점 : 네트워크와 응용걔층에서 함께 방어하므로 높은 보안성을 제공
단점: 시스템 구축 비용이 높으며 스크리닝 라우터의 라우팅 테이블 변조 공격에 취약.
스크린드 서브넷 게이트웨이 Screened Subnet Gateway
Screening Router를 Bastion Host를 중심으로 양쪽에 연결하는 형태
Bastion Host는 Proxy 서버를 이용해 명확하게 허용되지 않은 모든 트래픽 거부
장점 : 다단계로 방어하므로 높은 보안성을 제공
단점 : 구축 비용이 높으며 서비스 응답성이 낮음.

 

2) 침입 탐지 시스템 (IDS: Intrusion Detection System)

 

1. IDS 개념

 

네트워크 및 서비스에 대한 공격을 실시간으로 탐지하는 보안 시스템.

 

2. IDS 의 주요 기능

 

  • 데이터 수집
    호스트 혹은 네트워크로부터 분석을 위한 데이터를 수집
  • 정보 분석
    시스템 설정한 패턴 DB 및 분석 룰을 이용해 정보를 분석
  • 침입 탐지
    분석한 정보를 기반으로 침입 여부를 실시간으로 탐지
  • 추적 및 보고
    통계적 분석과 보고 기능으로 공격의 근원과 패턴을 리포팅.

 

3. IDS의 시스템 유형

 

운영방식

  • 호스트 기반 HIDS
    - 서버에 직접 설치되어 다양한 정보를 이용한 침입 탐지를 수행
  • 네트워크 기반 NIDS
    - 네트워크 세그먼트별로 탐지 장비를 설치하여 운영

침입 탐지 방식을 기준으로 구분

  • 오용 탐지 Misuse
    - 알려진 공격 패턴을 등록한 후 비교하여 탐지하는 방식
    - 오탐율은 낮으나 알려지지 않은 공격에 취약한 단점.
  • 이상 탐지 Anormaly
    - 정상적인 패턴 대비 이상적 패턴일 경우 공격으로 판단하는 방식
    - 인공지능 알고리즘 등을 활용해 새로운 공격 패턴에 대응할 수 있으나, 정상적 행동을 침입으로 오탐할 가능성.

 

3) 침입 방지 시스템 (IPS: Intrusion Prevention System)

 

1. IPS 의 개념

  • 침입 탐지의 수동적인 방어 시스템에서 더 발전하여 능동적인 방어와 차단 등 사전 공격대응을 중심으로 한 보안 시스템.
  • 침입 경고 이전에 공격을 차단하는 것을 주요 목적으로 함.

Snort를 이용한 대비 및 대처

 

1) Snort의 개요

 

1. Snort의 특징

  • 리눅스 시스템에서 사용할 수 있는 공개형 IDS 프로그램
  • 스니퍼 Sniffer, 프리 프로세서 Pre-processor, 탐지엔진, 로깅(출력) 으로 구성

 

2. Snort의 주요기능

탐지룰을 이용해 네트워크 트래픽을 분석하고 침입을 탐지.

 

주요기능

  • 패킷 스니퍼
    네트워크의 패킷을 읽고 표시
  • 패킷 로거
    모니터링한 패킷을 저장 및 로그에 기록
  • 네트워크 IDS
    네트워크 패킷을 분석하여 공격을 탐지
    Buffer Overflow 공격, Port Scan 등 다양한 공격 탐지

 

2) Snort의 Rule 설정

 

1. Snort Rule의 구조

 

헤더 Header action : 동작방식
protocol : 점검 대상 프로토콜
source IP/Port : 소스 IP 및 포트
direction : 패킷의 흐름 방향
destination IP/Port
룰 옵션 Rule Option General, Payload, non-payload, post-detection 4가지로 분류
Payload 탐지 룰 옵션을 주로 사용

 

옵션의 주요 항목

msg 출력할 메시지 지정
sid 설정한 룰의 식별자를 지정하며 사용자가 작성한 룰은 1000000 이상으로 함
content 페이로드 내부에서 검색할 문자열을 지정
depth 검사할 바이트 수를 지정
offset 검사를 시작할 위치를 지정
distance 앞에 설정한 룰의 결과에서 지정한 숫자(바이트) 만큼 떨어진 지점부터 검사
within 시작점부터 검사하되 지정한 바이트 수 내에서만 검사
nocase 문자열 검색 시 대소문자를 구별하지 않음
sameip 소스와 목표 IP 주소가 동일한 것을 검사

 

2. Snort Rule의 설정 예제

 

외부에서 내부 (192.168.10.0/24) 대역의 80포트로 이동하는 패킷 중 passwd 문자열이 포함된 패킷이

발견되면 passwd detected 라는 alert 메시지 발생시킴.

alert tcp any any -> 192.168.10.0/24 80 (msg:"passwd detected"; content:"passwd"; nocase; sid:1000001;)

 

Land Attack 탐지

alert ip any any -> any any (msg:"Land Attack"; sameip; sid:1000001;)

 


iptables 를 이용한 대비 및 대처

 

1) iptables의 개요

 

1. iptables의 특징

  • 리눅스의 방화벽. 패킷 필터링 정책을 사용해 특정 패킷을 분석하고 허용 혹은 차단.
  • 커널의 넷필터 Netfilter 모듈을 이용해 네트워크 패킷을 필터링
  • 모든 것을 허용한 후, 일부 패킷 제한방식 or 모든것을 거부한 후, 일부 패킷 허용방식

2. iptables의 패킷 흐름

 

패킷 흐름 개념도

 

2) iptables의 데이블 구조

 

1. iptables의 테이블 종류

filter iptables의 기본테이블로 패킷 필터링 기능을 담당
nat Network Address Translation. IP 주소 및 포트를 변환하고 관리
하나의 공인 IP를 여러 호스트가 사용하고자 할 때 주로 사용.
mangle 성능 향상을 위한 TOS 설정과 같이 패킷 데이터를 변경하는 특수 규칙 적용.
raq 연결추적을 위한 세부 기능을 제공

 

2. filter 테이블

filter 테이블에는 미리 정의된 3가지 체인이 있으며, 이를 이용해 네트워크 패킷을 대상으로

정해진 규칙을 수행하고 패킷 필터링 및 방화벽 기능을 수행.

 

filter 테이블의 체인

INPUT 호스트를 목적지로 유입되는 패킷을 필터링하는데 사용
OUTPUT 호스트를 출발지로 하여 나가는 패킷을 필터링하는데 사용
FOWARD 라우터로 사용되는 호스트를 통과하는 패킷
호스트 컴퓨터가 목적지가 아닌 패킷을 관리.

 

3. nat 테이블

 

nat 테이블의 체인

PREROUTING 패킷의 도착지 주소를 변경
POSTROUTING 패킷의 출발지 주소를 변경하며 masquerade 라고 함.
OUTPUT 호스트에서 밖으로 흐르는 패킷의 도착지 주소를 변경
INPUT 호스트 밖에서 안으로 흐르는 패킷의 주소를 변경

 

3) iptables 사용하기

 

1. iptables의 사용법

 

iptables [-t 테이블이름][action][체인이름][match 규칙][-j 타깃]

 

2. 패킷 필터링 예제

 

INPUT 체인에서 소스주소가 192.168.10.0 대역이고 ICMP 패킷이 아닌경우 모든 패킷을 허용

$iptables -A INPUT -s 192.168.10.0/24 ! -p icmp -j ACCEPT

기본설정으로 들어오는 모든 패킷을 거부하게하고 192.168.10.7에서 오는 패킷만 허용.

$iptables -P INPUT DROP
$iptables -A INPUT -s 192.168.10.7 -j ACCEPT

초당 허용 접속 개수를 제한하여 TCP flooding 공격에 대응

$iptables -A INPUT -p tcp --dport 80 --syn -m limit --limit 100/s -j ACCEPT

 

3. 설정 정책 저장과 자동적용

 

  • iptables 설정 정책은 시스템이 리부팅되면 사라지게 되므로 파일로 저장하고 부팅과 함께 재설정 해야함.
  • iptables-save 는 iptables 정책을 파일로 저장하는 명령어로 iptables-save > 파일명 의 형식
  • iptables-restore 는 저장된 iptables 정책파일을 읽어들여 적용하는 명령어로 iptables-restore < 파일명 형식
  • service iptables save 명령으로 정책을 /etc/sysconfig/iptables 에 저장.
    이렇게 저장한 정책값은 service iptables start 명령 실행시 자동으로 읽어들려 적용.

 

4) iptables 이용한 NAT 구성

 

1. NAT의 개념

 

  • Network Address Translation 은 네트워크 주소를 변환하는 기능을 수행
  • 하나의 공인 IP를 호스트가 공유해서 사용
  • 운영방식에 따라 여러가지 종류로 구분

 

2. NAT 지원 방식

 

  • SNAT 과 DNAT 을 지원
  • SNAT을 이용하면 공인 IP 주소 하나를 다수의 호스트가 공유하여 인터넷을 사용 가능
  • DNAT 을 이용하면 하나의 공인 IP로 여러개의 서버에 접속하도록 구성.

3. SNAT 구성

 

  • SNAT 은 소스 IP주소를 변경하는 것으로 외부 서비스에 연결하여 통신할 때 사설 IP를 공인IP로 변경하게 됨.
  • SNAT 은 NAT 테이블의 POSTROUTING 체인에 정책을 설정

4. DNAT 구성

 

목적지 IP주소를 변경하는 것으로 NAT 테이블의 PREROUTING 체인에 정책을 설정