[강의정리] 데이터통신과네트워크 침입탐지시스템
네트워크 트래픽 분석과 악성코드
- 악성코드를 분석하는데 네트워크 트래픽 분석이 왜 필요할까?
- 악성코드는 네트워크 기술이 발달함에 따라 배포 및 명령 전달이 용이해짐
- 86년도부터 급격히 증가한 배경은 인터넷 기술의 발전
- 출현개수와 새로운 종의 출현은 인터넷 보급속도와 유사하게 증가
인터넷을 통한 악성코드 감염 경로
- 인터넷 브라우저
- 불법 크랙 프로그램
- 피싱/파밍
- 외부 문서의 매크로
파악
네트워크 트래픽 분석을 통해 악성코드의 정확한 행위를 파악 가능
- 대부분 악성코드는 네트워크 사용
- DDoS 공격을 위한 좀비 PC를 모으거나, 특정사용자 파일 감시, 악의적인 파일 암호화등의 악성행위는 네트워크가 필요한 경우가 많음
네트워크 트래픽을 통한 악성코드 통신 차단 기능
- 방화벽을 통한 의심 ip, 포트 차단
- Intrusion Detection System(IDS)를 통한 네트워크 공격 탐지 및 Intrusion Prevention System (IPS)를 통한 네트워크 트래픽 차단
보안 관점에서 바라본 OSI 7계층
- L2: MAC
- L3: IP
- L4: 프로토콜(TCP/UDP)
- L7: 페이로드
L2 계층
- 데이터 링크 계층으로 MAC과 가장 관련이 깊음
- Source MAC주소와 Destination MAC 주소를 보고 Switch에서 차단 가능
L2 방화벽
L2와 가장 관계가 깊은 보안 시스템은 방화벽
일반적으로 방화벽의 경우 최소 2개 이상의 NIC 필요
장점
- L2 방화벽을 설치 할 때 일반적으로 네트워크 디자인을 바꾸지 않아도 됨
단점
- 동일한 네트워크 안에서만 가능, 다양한 네트워크 환경에는 적용 불가능
L3 계층
네트워크 계층으로 IP 주소와 연관 있음
하나의 네트워크 장비(e.g., 방화벽)를 통해 여러개의 네트워크 망을 구성
- NAT와 VLAN기술 필요
L3 방화벽
장점
- L2 방화벽에선 하지 못했던 좀 더 다양한 접근 제어 가능
- NAT과 VLAN 활용
단점
- L3 방화벽을 설치할 때 일반적으로 네트워크 디자인을 바꿔야 할 수도 있음
L4 계층
- 전송계층
- 패킷을 포트수준까지 확인
L7 계층
- L5는 세션계층, L6는 표현계층, L7은 응용계층
- 요즘에는 L5,6,7을 통틀어 L7이라 부르기도 함
- L7 방화벽에서는 패킷 페이로드를 활용하여 운용 가능
방화벽
- 하드웨어 기반 방화벽: 여러대의 PC와 서버를 커버함
- 소프트웨어 기반 방화벽: 설치된 host PC만 보호
방화벽: 1세대 방화벽
패킷 필터링 기반의 1세대 방화벽
src IP dst IP src Port dst Port Control any 1.1.1.1 any 80 permit 80포트 listen
80포트에 대한 접근 허용(HTTP 포트)
무수히 많은 룰을 셋팅해야함
80번 포트를 열때 나가는 포트에 대해 많은 포트를 열어줘야함
- 룰관리 이슈
- 포트 개방에 따른 이슈
방화벽: 2세대 방화벽
Stateful Inspection: TCP 접속 시 방화벽에서 패킷의 payload를 보면서 3way handshake의 state 추적, rule을 자동으로 추가
장점:
- Response 패킷에 대한 룰을 불필요하게 작성할필요 없음
- 동작하는 동안 checksum도 계산, 잘못된패킷은 폐기 가능
방화벽: 3세대 방화벽
L7 방화멱 또는 애플리케이션 방화벽
실제 패킷 내용 검사, 단순한 포트/IP 조사뿐만 아니라 어떤 애플리케이션과 통신하고있는지 파악
- 2세대 방화벽: 80/443 허용이나 차단 가능
- 3세대 방화벽: 페이스북 차단, 인스타 허용같은 룰 가능
L2, L3, L4 모두 커버 가능하지만 성능 이슈로 L7에 집중하기도 함
- 범용적인 서비스보단 오피스용
방화벽 구성
- Intranet: 직원 내부망
- 서비스대역(DMZ): 네트워크 중립지역, 외부에 서비스를 제공할때 내부 네트워크와 분리시킨 공간
A구간: 외부에서 서버 접속 (서비스 대역으로 오는 접속)
- 외부로 공개된 웹서버가 존재하면, HTTP(80), HTTPS(443) 포트 허용
- 그밖의 모든 포트 차단 (E.g., RDP(3389), SSH(22))
B구간: 내부망에서 서버로 접속
- 내부망에 존재하는 엔지니어들을 위해 다양한 제어 포트를 열어둠
- E.g., HTTP(80), HTTPS(443), SSH(22), RDP(3389) 등
C구간: 서버에서 외부망 접속
- 서버 패치를 위해 Linux Repository 접근 허용
- 일반 사이트는 접속 불허용!
D구간: 내부망에서 외부망으로 접속
- 서버 패치를 위해 Linux Repository 접근 허용
- 파일 유출 방지를 위해 구글드라이브, 네이버 드라이브 불허용
- 악성코드 감염 방지를 위해 악성 사이트 접근 불허용
High Availability (HA)
High Availability: 2대의 방화벽을 통해, 1개의 방화벽에 장애가 생길경우를 대비
한대는 온라인 상태, 한대는 대기/레디 상태 (Active-Standby)
두개가 항상 온라인 상태 (Active-Active)
바이패스 스위치
- 방화벽에 장애가 생겼을 경우, 우회경로 만들어줌
- 보안보다 서비스가 중요하다고 판단될 경우
Full Mesh
- 네트워크 장비를 2대 이상 준비한 후, 모두 연결
방화벽 룰 관리
- 오래된 룰은 정기적으로 확인 후, 필요없는 경우 해당룰을 지워줌
- 룰이 겹치지 않도록 튜닝하는것도 필요
침입탐지시스템
탐지 방법
Signature 기반 공격 탐지
- 악성 공격의 일정한 패턴(Signature)을 탐지 룰에 추가함으로 공격을 탐지
- 알려지지 않은 공격을 탐지하지 못함
- 한계를 극복하기 위해 Anomaly 기반 공격 탐지가 설계됨
Anomaly 기반 공격 탐지
- 비정상적인 트래픽이 발생하면 공격으로 감지
- E.g., 평소 IP주소당 최대 1Mbps, 어느날 20Mbps? 공격이다!
- 오탐존재
Signature 기반 공격 탐지
- IDS는 다음과 같은 탐지 룰을 기반으로 작동
1
2Alert tcp any any -> any any (msg: "LoCAL-RULE Test for TestMyIDS";
content: "testmyids.com"; classtype:misc-activity; sid:1000001;rev:1;) - 알람 조건
- Source ip 주소와 Destination ip 주소 any any
- Source port number와 Destination port number any any
- Payload에 “testmyids.com” 문구 포함
Anomaly 기반 공격 탐지
- IPS 트래픽을 학습하는 방법: 다양한 Machine learning 기반 방법
IDS 종류
NIDS (Network-based IDS)
- 네트워크 인프라를 기준으로 동작하는 IDS
HIDS (Host-based IDS)
- Host를 관리하는 상황헤서 동작하는 IDS
장점
- NIDS: 네트워크 전체를 한군데서 분석 가능
- HIDS: Host별 상세 분석 가능, 사용자단위 분석도 가능
단점
- NIDS: IDS를 경우한 공격만 확인 가능, 암호화된 트래픽도 못봄
- HIDS: 개별로 관리해야함
NIDS
탐지 위주 정책, 인라인으로 들어가지 않음(따로 삐져나와있음)
- 장애를 예방하기위한 이중화 구성이 필수가아님
- NIDS에 장애가 발생해도 네트워크 로그의 저장이 필요하면 이중화구성 해야함(Backup 장비 이용)
NIDS에 필요한것: 전체 네트워크 패킷
- 네트워크 패킷을 복사해서 IDS로 전송
- Cisco에서는 트래픽복사하는 행위를 SPAN(Switch Port Analyzer)
- 대부분의 스위치가 SPAN or 포트미러링 제공
HIDS의 경우 호스트 네트워크 패킷, 시스템 로그 필요
포트 미러링
스위치 환경에서 포트 미러링을 통해 스니핑(패킷 엿듣기) 제공
- 스위치 환경에서 패킷 분석을 위해 스위치포트에 스니퍼 연결
스위치가 포트미러링을 지원, 스니퍼를 연결하기 위한 포트가 있어야함
- 포트 미러링을 할 때 미러링하는 포트의 처리율을 알아야 함.
HIDS
HIDS 필요한것: 호스트 네트워크 데이터 + 시스템 로그 데이터
utmp(x) 로그
- utmp 데몬: utmp(x) 파일에 로그 남기는 프로그램
- utmp 데몬은 리눅스의 가장 기본 로깅을 제공하는 데몬
- 현재 시스템에 로그인한 사용자의 상태 출력
- utmp 데몬에 저장된 로그를 출력하는 명령: w, who, users, whodo, finger 등
- w: 현재 시스템에 로그인된 계정, 셸종류, 로그인시간, 실행중인 프로세스 종류
- who: 접속한 시스템의 IP 확인
wtmp(x) 로그
- wtmp 데몬: wtmp(x) 파일에 로그 남김, /usr/include/utmp.h 파일 구조체 사용
- utmp데몬과 비슷한 역할, 사용자들의 로그인,로그아웃,재부팅 정보 수록
- last명령 이용
su(switch user) 로그
- 권한 변경에 대한 로그
- cat /var/adm/sulog
pacct 로그
- 시스템에 로그인한 모든 사용자가 수행한 프로그램 정보 저장
- acctcom 명령 이용
- root 계정으로 vi에디터 실행한 기록: acctcom -u root -n vi
lastcomm명령: 실행된 날짜 출력
리눅스 로그 분석과 설정
syslog
- 시스템의 로그 정보를 대부분 수집해서 로깅
- 로그종류와 수준은 /etc/syslog.conf 파일
authlog/loginlog
- 실패한 로그인 시도에 대한 로깅 (loginlog 파일에 저장)
- 설정: etc/default/login, 재부팅후 적용
IDS vs. IPS
Intrusion Detection System
Intrusion Prevention System
IDS는 공격에 대한 블록기능 X, 탐지만 하는경우가 많음
IPS | IDS | |
---|---|---|
시스템 타입 | 액티브(모니터링, 차단까지) | 패시브(모니터링, 경고) |
매커니즘 | Anomaly based detection\nSigniture detection | Anomaly based detection\nSigniture detection |
위치 | Inline형태로 설치 | Out of band |
대응방법 | 경고를 주거나 패킷을 Drop | 알람 보냄 |
퍼포먼스 영향 | 패킷속도에 저하가 생길 수 있음 | 복사해서 분석하기 때문에 퍼포먼스적 영향 X |
benefits | 자동화되고, 방지도 되기 때문에 회사에서 선호 | IPS가 차단할 합법적인 traffic을 차단하지 않음 |