네트워크 보안
네트워크 침해 유형 및 특징
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 체인에 정책을 설정