1. 침입탐지 시스템(snort)
(1) 개요
- 기능 : 패킷 스니퍼(네트워크상의 패킷을 스니핑하여 보여주기), 패킷 로거(모니터링한 패킷을 저장하고 로그 남기기), 네트워크 IDS/IPS(네트워크 트래픽 분석하여 공격 탐지/차단하는 기능)
(2) snort rule 설정
1) 개요
- snort 룰은 헤더 부분과 바디 부분으로 구성
- 헤더 부분은 처리할 패킷을 판단하는 기준을 명시
- 바디 부분은 패킷을 탐지하기 위한 규칙을 명시
2) 룰 헤더 설정
- action : 패킷이 탐지되었을 때 처리방식
- protocol : 탐지할 프로토콜, TCP, UDP, ICMP, IP 중 하나
- ip address : 출발지/목적지 ip
- port : 출발지/목적지 port
- direction : 방향 지시자, -> : 왼쪽이 출발지이고 오른쪽이 목적지, <> : 양방향을 의미
action | 설명 |
alert | alert 발생시키고 패킷을 로그에 남김 |
log | 패킷을 로그에 남김 |
pass | 패킷을 무시 |
activate | alert 발생시키고, 대응하는 dynamic rule 활성화 |
dynamic | activate rule에 의해 활성화되고, log rule과 동일하게 동작 |
drop | 패킷을 차단하고 로그 남김 |
reject | 패킷 차단하고 로그 남김 + TCP일 경우 TCP Reset 전송, UDP일 경우 ICMP port unreachable 메시지 전송 |
sdrop | 패킷을 차단하고 로그 남기지 않음 |
- 예시
action | protocol | ip address | port | direction | ip address | port |
alert | tcp | any | any | -> | 192.168.0.130/24 | 80 |
3) 룰 바디 설정 : 일반옵션
옵션 | 설명 |
msg | msg 옵션에 기록된 내용이 alert 발생시 이벤트 이름으로 사용됨 |
reference | rule과 관련된 외부 취약점 정보 참조시 사용 |
sid | snort rule id 99 이하 : 시스템에 예약된 sid 100~1,000,000 : snort에서 배포하는 룰셋에서 사용 1,000,000~ : 사용자 정의 rule에서 사용하는 sid |
classtype | 공격유형과 기본 우선순위를 정의 |
priority | rule의 우선순위(위험도)를 숫자로 표기 |
rev | rule 버전번호로 수정 횟수를 표기, 수정할 때마다 +1 ex) 1:100300:3 에서 3 |
예시 | 1:100300:3 -> 100300은 sid를 의미, 3은 rev xref -> http://cve.`~~mitre.!!org/cgo-bin/cvename.cg~~~ -> reference를 의미 |
4) 룰 바디 설정 : 페이로드(payload) 범위 관련 옵션
action | 설명 |
content | 페이로드에서 검사할 문자열을 지정 text 형식의 경우 : content:"문자열" -> 해당 문자열 검사 binary 형식의 경우 : content:"|문자열|" ! 사용의 경우 : content:!"문자열" -> 해당 문자열이 없는지 검사 |
uricontent | content 문자열을 전체 패킷과 비교하는 대신, HTTP 클라이언트 요청 URI 정보를 검사할 문자열 지정 |
offset | 페이로드에서 content 패턴을 검사할 시작위치 절대위치 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -> 따라서 offset이 2이면 2부터 시작 |
depth | offset에서 몇 바이트까지 검사할 것인지 지정 |
distance | 이전 content 패턴이 매치된 경우, 매치 이후 몇 바이트 떨어진 위치에서 다시 검사할지 지정 |
within | distance부터 몇 바이트까지 검사할 것인지 지정 |
nocase | 페이로드 검사시 대,소문자 구분하지 않음 |
- 페이로드 전체에 대해 패턴 매치하는 것보다 일부분에 대해 수행하는 것이 성능향상 및 오탐 줄여주는 장점 있음
5) 룰 바디 설정 : 페이로드 정규표현식 관련 옵션
메타문자 | 설명 |
\ | 특수문자 기능을 제거하는 이스케이프 문자 |
^ | ^다음에 오는 문자가 문자열의 시작을 의미 |
$ | $바로 앞에 있는 문자가 문자열의 끝을 의미 |
. | 임의의 문자 1개를 의미 |
[] | 집합 안에 지정한 문자들 중 하나와 일치 |
[^] | 집합 안에 지정한 문자들을 제외한 임의의 문자 하나와 일치 |
| | |앞에 오는 문자열과 뒤에 오는 문자열 중 하나와 일치 |
* | *앞에 오는 문자가 0회 이상 나타남 |
+ | +앞에 오는 문자가 1회 이상 나타남 |
? | ?앞에 오는 문자가 0회 또는 1회 이상 나타남 |
{x} | {x}앞에 오는 문자가 정확히 x회 나타남 |
{x,} | {x,}앞에 오는 문자가 x회 이상 나타남 |
{x,y} | {x,y}앞에 오는 문자가 정확히 x회 이상, y회 이하 나타남 |
- pcre 옵션은 / 기호 사이에 정규표현식을 입력하여 문자열 탐지의 유연성을 제공한다.
ex) pcre:"/^(GET|PORT)/";
6) 룰 바디 설정 : 페이로드 HTTP 관련 옵션
옵션 | 설명 |
http_method | HTTP method 부분을 검사 |
http_uri | HTTP URI 부분을 검사 |
http_header | HTTP Header 부분을 검사 |
http_cookie | HTTP cookie 부분을 검사 |
http_client_body | HTTP 클라이언트 요청의 바디 부분을 검사 |
http_stat_code | HTTP 응답의 status 코드 부분을 검사 |
http_stat_msg | HTTP 응답의 status 메시지 부분을 검사 |
예시 | GET /index.php HTTP/1.1 -> GET은 http_method에서, /index.php는 http_uri에서 검사 HTTP/1.1 200 OK -> 200은 http_stat_code에서, OK는 http_stat_msg에서 검사 |
7) 룰 바디 설정 : Event Threshold(이벤트 제한) 관련 옵션
- 특정 시간동안 발생되는 이벤트 수를 제한하기 위한 옵션
- threshold type <limit|threshold|both>, track <by_src|by_dst>, count <c>, seconds <s>
- type limit : 매 s초 동안 c번째 이벤트까지 action을 수행, threshold : 매 s초 동안 c번째 이벤트마다 action을 수행, both : 매 s초 동안 c번째 이벤트시 action을 수행
- track by_src : 출발지 IP를 기준으로 추적, by_dst : 목적지 IP를 기준으로 추적
(3) 실습 - 공격 패킷 탐지
1) FTP root 로그인 시도/성공 탐지(FTP이므로 포트번호 21)
- root 로그인 시도, 성공시 데이터 전달되는 내용을 보고 snort 작성할 수 있다.
- alert tcp any any -> 10.10.10.0/24 21 (msg:"FTP root user access"; content:"USER root"; nocase; sid:100100;)
- alert 액션의 경우 alert 메시지와 탐지 패킷 로그를 남긴다. 탐지 패킷 로그는 tcpdump, wireshark와 같은 패킷 분석 도구를 통해 패킷 내용을 확인할 수 있다.
- alert tcp any any -> 10.10.10.0/24 21 (msg:"Telnet root login success"; content:"login"; pcre:"/root@.*#/"; nocase; sid:100100;)
- root 계정 로그인시 [root@hong ~]# 으로 데이터 주어지기 때문에 pcre 작성
2) 온라인 패스워드 크래킹 공격 탐지
- alert tcp 10.10.10.0/24 23 -> any any (msg:"Telnet login brute force attack"; content:"Login incorrect"; nocase; threshold:type limit, track by_dst, count 1, seconds 5; sid:1000120;)
- Telnet 서버로부터 응답 데이터 탐지하기 위해 출발지 포트를 23번으로 지정
(4) 실습 - 비정상 패킷 탐지
2. 침입차단 시스템(iptables)
(1) 개요
- 패킷 필터링 기능을 가지고 있는 리눅스 커널에 내장된 netfilter 기능을 관리하기 위한 툴
- 기능 : rule 기반 패킷 필터링, 상태추적, NAT(네트워크 주소 변환), 패킷 레벨에서의 로깅, 확장 모듈
(2) 용어 정리
- 테이블(Table) : iptables가 제공하는 기능을 의미, Filter, Nat, Mangle이 있음, 명시하지 않을 경우 Filter 테이블을 의미
- 체인(Chain) : 패킷이 이동하는 경로, INPUT Chain(방화벽을 최종 목적지로 하는 체인), OUTPUT Chain(방화벽을 최초 출발지로 하는 체인), FORWARD Chain(방화벽을 통화하는 채널, 방화벽을 별도 서버로 구성해서 서비스할 때 사용)
- 룰(Rule) : 패킷을 필터링하기 위한 룰
(3) 사용법
1) 기본 구문
- 형식 : iptables [테이블] [체인] [룰] [타겟]
2) 테이블 설정
- 형식 : -t [테이블]
- 테이블 명시하지 않으면 디폴트로 Filter 테이블이 적용
3) 체인 설정
- 형식 : iptables -[A | I | D] [체인]
-A | append 모드, 해당 체인의 제일 마지막에 룰을 추가 |
-I | insert 모드, 해당 체인의 첫 행에 룰을 추가(-I 체인 n : 행번호 지정가능) |
-D | delete 모드, 특정 룰 삭제 |
4) 룰 설정
- IP/ICMP/TCP/UDP 모두 호스트를 식별하기 위해서 IP를 이용한다.
-s [IP 또는 IP 대역] | 출발지 IP를 명시, 명시하지 않으면 any를 의미 |
-d [IP 또는 대역] | 목적지 IP |
- TCP/UDP의 경우 포트번호를 통해 서비스를 식별한다.
--sport [포트번호] | 출발지 포트를 명시 |
--dport [포트번호] | 목적지 포트를 명시 |
- ICMP의 경우 타입과 코드를 통해서 메시지를 식별한다.
- 형식 : --icmp-type [메시지타입] : 메시지 타입을 명시
- -m state --state [탐지할 상태] : 상태추적기능 사용위해 관련상태 유형을 명시
5) 타겟 설정
- 형식 : -j [정책] : 룰에 매치될 때 적용할 정책을 지정한다.
-j ACCEPT | 해당 패킷을 허용 |
-j DROP | 해당 패킷을 차단 |
-j REJECT | 해당 패킷을 차단한 후 ICMP 에러 메시지 응답 |
-j LOG | 탐지 로그를 남김 |
6) 기타 옵션
- iptables -L [체인] -n : 해당 체인에 등록된 룰 리스트를 확인, IP와 포트를 숫자형식으로 출력
- iptables -F [체인] : 해당 체인에 등록된 모든 룰 정보를 삭제
- iptables -P [체인] [ACCEPT | DROP | REJECT] : 해당 체인의 기본정책을 지정
(4) 상태추적(connection tracking) 기능 활용
- NEW 상태 : 최초로 들어온 패킷의 상태를 의미, 테이블에 연결정보를 가지고 있지 않은 패킷(TCP의 경우 SYN 패킷)
- ESTABLISHED 상태 : 상태추적 테이블에 연결정보를 가지고 있는 패킷의 상태
- RELATED 상태 : 상태추적 테이블에 연관된 연결정보를 가지고 있는 패킷의 상태
- INVALID 상태 : 어떤 상태에도 해당되지 않는 패킷 상태, 연결상태를 알 수 없거나 잘못된 헤더를 가지고 있는 경우
(5) iptables 확장 모듈
1) connlimit 모듈
- 동일한 IP 또는 대역의 동시 연결 개수에 대한 제한을 할 수 있는 모듈, 디도스 공격에 효과적으로 대응 가능
- 형식 : -m connlimit --connlimit-옵션 ~
- 옵션
--connlimit-above n | n을 초과하는 동시연결을 제한 |
--connlimit-mask mask | 0~32범위의 mask값을 지정, IP 대역에 대한 동시연결을 제한 |
2) limit 모듈
- 룰에 매치되는 비율을 제한할 수 있는 기능, 불필요한 로그 남기지 않도록 할 때 유용
- 형식 : -m limit --limit : 초당/분당/시간당/하루당 매칭되는 제한건수를 지정
3) recent 모듈
- 동적으로 출발지 IP 목록을 생성하여 이를 기반으로 패킷을 제어하는 기능을 제공
- 형식 : -m recent --옵션
- 옵션
--name | 목록 이름을 지정 |
--set | 해당 목록에 새로운 entry를 추가, 이미 존재할 경우 업데이트 |
--rcheck | 해당 목록에 패킷의 출발지 ip가 있는지 체크 |
--update | 해당 목록에 패킷의 출발지 ip가 있는지 체크하고 있으면 "last seen" timestamp 갱신 |
--seconds | 해당 entry의 "last seen" timestamp가 지정한 초 범위 내에 있는지 체크 |
--hitcount | 해당 entry의 hit count가 지정한 값 이상인지를 체크 |
3. 보안 솔루션 종류 및 특징
네트워크 보안 솔루션 | 웹방화벽(WAF), 네트워크 방화벽(Firewall), 침입탐지시스템(IDS), 침입방지시스템(IPS), 디도스차단시스템, APT대응시스템, 네트워크포렌식시스템, 무선침입방지시스템(WIPS), 네트워크접근제어(NAC), 통합보안시스템(UTM), 가상사설망(VPN) |
시스템(단말) 보안 솔루션 | 백신, 엔드포인트탐지및대응솔루션, 시스템접근통제, 스팸차단솔루션, 보안운영체제 |
컨텐츠/정보유출방지 보안 솔루션 | DB보안/암호, 보안USB, 디지털저작권관리(DRM), 네트워크/단말 정보유출방지(DLP) |
보안관리(관제) | 전사적보안관리시스템, 보안정보및이벤트관리시스템, 보안오케스트레이션자동화및대응시스템, 위협관리시스템, 패치관리시스템(PMS), 자산관리시스템(RMS), 백업/복구관리시스템, 취약점분석시스템, 디지털포렌식시스템 |
인증 및 암호 | 보안스마트카드, 하드웨어보안모듈(HSM), 일회용비밀번호(OTP), 공개키기반구조(PKI), SSO, 통합접근관리(EAM), 통합계정관리(IAM) |
(1) 네트워크 보안 솔루션
1) 무선침입방지시스템(WIPS, Wireless Intrusion Prevention System)
- 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기(AP)를 탐지
2) 네트워크접근제어(NAC, Network Access Control)
- 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공
- 네트워크 제어 및 통제 기능을 통해서 내부 네트워크가 바이러스나 웜 등 보안 위협으로부터 안전한 단말기들로 이루어질 수 있도록 강제하는 역할을 수행
- 대표적인 오픈소스 NAC : PacketFence, FreeNAC
3) 통합보안시스템(UTM, Unified Threat Management)
- 방화벽, IDS, IPS, VPN 등 다양한 보안 기능을 하나의 장비로 통합하여 제공하는 보안 솔루션
(2) 시스템(단말) 보안 솔루션
1) 엔드포인트 탐지 및 대응 솔루션(EDR, Endpoint Detection Response)
구분 | 안티 바이러스 솔루션(백신) | APT 대응 솔루션 | EDR 솔루션 |
악성행위 판단기준 | 패턴 매칭 방식 | 행위 기반 탐지 | 행위 기반 탐지 |
악성코드 행위정보 수집위치 | - | 샌드박스(가상머신) 환경에서 실행 및 정보수집 | 엔드포인트(실제환경)에서 정보수집 |
제로데이 악성코드 공격대응속도 | 느림(업데이트 방식) | 빠름 | 가장 빠름 |
- PC, 모바일, 서버 등 엔드포인트에서 발생하는 악성행위를 실시간으로 감지하고 분석 및 대응하는 솔루션
- 행위기반탐지이므로 알려지지 않은 악성행위에 대해서도 사전대응 가능
(3) 컨텐츠/정보유출방지 보안 솔루션
1) 디지털저작권관리(DRM, Digital Rights Management)
- 저작권자가 배포한 디지털 자료나 하드웨어의 사용을 제어하고 이를 의도한 용도로만 사용하도록 제어하는데 사용되는 모든 기술
(4) 보안관리(관제) 솔루션
1) 전사적 보안관리 시스템(ESM, Enterprise Security Management)
- 다양한 보안장비에서 발생하는 보안정보(로그,이벤트 등)를 통합적으로 수집 및 관리하여 불법적인 행위에 대응할 수 있도록 하기 위함
- 구성요소 : ESM 에이전트, ESM 매니저, ESM 콘솔
- ESM 에이전트 : 관리대상 보안장비에 설치되어 사전에 정의된 규칙에 따른 로그 및 이벤트 데이터를 수집하여 ESM 매니저로 전달하는 기능을 수행
- ESM 매니저 : 수집된 데이터를 저장, 분석하여 그 결과를 ESM 콘솔로 전달하는 기능을 제공
- ESM 콘솔 : 전달된 정보의 시각적 전달, 상황 판단 및 리포팅 등 기능을 제공, 에이전트와 매니저에 대한 제어를 수행
2) 보안정보 및 이벤트관리 시스템(SIEM, Security Information & Event Management)
- ESM의 진화된 형태로 보안장비 뿐만 아니라 각종 서버장비, 네트워크장비, 어플리케이션 등 다양한 범위에서 발생하는 로그와 이벤트를 수집하여 빅데이터 기반 상관관계 분석을 통해 위협을 사전에 차단하는 통합 보안 관제 솔루션
- 기능 : 데이터 통합, 상관관계 분석, 알림, 대시보드
3) 보안 오케스트레이션, 자동화 및 대응 시스템(SOAR, Security Orchestration, Automation and Response)
- 보안 위협에 대한 자동화된 분석과 대응환경을 만들어 보안인력을 효율적으로 운영하면서 분석의 정확도를 높이고 대응시간을 단축시키기 위한 솔루션
- 기능 : SIRP(보안사고대응플랫폼), SOA(보안오케스트레이션 및 자동화), TIP(위협 인텔리전스 플랫폼)
- 위협 인텔리전스 서비스 : 위협정보를 수집,분석,활용하여 생성해내는 증거기반정보로 SIEM,SOAR 등 보안관제 솔루션과 연계하여 위협에 대한 분석과 대응을 효과적으로 수행, 알려지지 않은 위협이나 지능형지속위협(APT)과 같은 공격에도 효과적으로 대응가능
(5) 인증 및 암호 솔루션
1) SSO, Single Sign On
- 한번의 사용자 인증으로 여러 시스템에 접근할 수 있는 통합인증 솔루션으로 단일 인증을 통해 여러 시스템에 접근함으로서 사용자 편의성 증대
4. 네트워크 보안장비 운영
(1) 물리적 네트워크 보안장비 구성
1) 디도스 차단 시스템
- 일반적으로 디도스 공격으로부터 다른 장비를 보호하기 위해 네트워크 구성상 가장 상단에 위치
2) 네트워크 방화벽(Firewall)
- 네트워크 계층의 IP 주소와 전송 계층의 Port 주소를 기반으로 방화벽 룰셋(필터링 정책)에 따라 패킷 필터링을 수행하는 보안장비
- 상태검사기능 : 방화벽을 통과하는 모든 패킷에 대하여 ip,port 정보만 보는 것이 아니라 일정시간 프로토콜별 연결상태 정보를 유지하여 추적하는 기능
3) SSL 오프로드(Offload) 장비
- SSL 서버를 대신해서 SSL 트래픽에 대한 모든 암복호화 처리를 수행하는 기능, 대상 서버의 SSL 서버 인증서 설치 필요
- 장점 : SSL 오프로드 장비를 통해 복호화된 트래픽 이용하여 다양한 네트워크 보안장비 탐지활동에 활용, SSL 서버 성능향상, SSL 서버 인증서 효율적 관리
4) 침입탐지시스템(IDS, Intrusion Detection System)
- 사전에 등록된 알려진 공격 패턴에 따라 공격을 탐지하는 보안장비
- 차단목적이 아닌 탐지목적 장비이기 때문에 NIDS(Network based IDS)인 경우 일반적으로 미러링모드로 설치한다.
- 오용탐지 : 지식기반탐지 또는 시그니처기반탐지, 상대적으로 오탐률이 낮은 장점, 미탐률이 높은 단점
- 이상탐지 : 행위기반탐지 또는 통계기반탐지, 미탐률이 낮은 장점, 오탐률이 높은 단점
cf) 오탐률 : 공격행위가 아닌 것을 공격으로 탐지, 미탐률 : 공격행위를 인식 못하는 것
- HIDS(호스트 기반 IDS) : 호스트에 설치되어 호스트 정보 수집하여 탐지활동을 수행, 오픈소스 HIDS로는 tripwire
- NIDS(네트워크 기반 IDS) : 네트워크 트래픽을 수집하여 탐지활동을 수행, 오픈소스 NIDS로는 Snort, Suricata
5) 침입방지시스템(IPS, Intrusion Prevention System)
- 사전에 등록된 알려진 공격 패턴에 따라 공격을 탐지하고 차단하는 보안장비
- 일반적으로 공격행위로 탐지된 패킷의 실시간 차단을 위해 인라인 모드로 설치한다.
6) APT 대응 시스템
7) 네트워크 포렌식 장비
- 설치된 네트워크 구간을 통과하는 모든 트래픽을 수집하고 분석할 수 있는 장비
- 수집한 트래픽은 침해사고 분석 및 내부감사 등의 목적으로 활용
8) 웹방화벽(WAF, Web Application Firewall)
- 웹 어플리케이션 공격에 대응하기 위해 웹 트래픽의 웹 컨텐츠를 분석하고 탐지 및 차단할 수 있는 기능
- 직접적인 웹 공격대응 외에도 정보유출방지, 부정로그인방지, 웹사이트 위변조방지 등으로 활용가능
(2) 네트워크 보안장비 설치모드
1) 인라인 모드
- 물리적 네트워크 경로상에 설치되어 연결된 네트워크를 통과하는 모든 트래픽이 거쳐 가도록 하는 모드
- 실제 패킷을 탐지하고 차단할 수 있는 장점 있으나, 장비에 장애 발생할 경우 전체 네트워크 장애로 확산 가능한 위험
2) 미러링 모드
- 미러링 장비를 통해 복제된 패킷을 받아서 탐지하는 모드
- 전체 네트워크 가용성에 영향을 주지 않으면서 패킷 탐지할 수 있다는 장점 있으나, 실제 패킷 차단은 어렵다.
5. 보안 솔루션(장비) 취약점
(1) 계정 관리
- 보안장비 default 계정 변경
- 보안장비 default 패스워드 변경
- 보안장비 계정별 권한 설정
- 보안장비 계정 관리
(2) 접근 관리
- 보안장비 원격 관리 접근통제
- 보안장비 보안 접속
- 세션 타임아웃 설정