Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
크라켄PADOCON2010
소개
크라켄 개발팀
양봉열: [email protected] (총괄)강창민: [email protected] (TCP/IP 스택, DNS, RSS)이보영: [email protected] (Cron, Bloom Filter)황원근: [email protected] (RRD)임현수: [email protected] (Aho-Corasick)
발표자
양봉열
2009 ~ 현재: ㈜엔초비 대표이사2005 ~ 2008: ㈜인젠 젂임연구원2002 ~ 현재: 서울대 컴퓨터공학부
엔초비 네트워크감사시스템 개발엔초비 인터넷스톰센터 개발 및 운영에어스캔 무선보안관제시스템 개발인젠 네오와처 IDS 드라이버 개발인젠 시큐플랫 ESM 닷넷 개발
문제
공통 보안 플랫폼의 부재
- 회사 내부에서도 솔루션마다 밑바닥부터 새로 개발- 대부분의 보안 솔루션은 유사핚 아키텍처를 갖추고 있음
제품 생명 주기를 고려하지 않은 설계
- 운영 단계의 문제점 짂단과 트러블슈팅의 어려움- 선택적 기능 제공 불가능, 불필요 기능의 배포로 인핚 문제
반복되는 불필요한 개발
- 스위치, 방화벽 등 네트워크 장비 연동 제어- 메일, SMS, Syslog, SNMP Trap 등 경보 젂송- 각종 로그의 파싱 및 정규화- 시갂 단위별 추이 그래프 생성
크라켄의역사
2008년초기 목표 기능
- 운영체제에 관계없이 자바로 동작하는 ESM 서버- 런타임에 모듈을 동적으로 설치하거나 제거핛 수 있는 기능- 웹 콘솔을 서비스하는데 필요핚 서블릿 컨테이너- 로그 수싞 및 API 서비스에 필요핚 통싞 프로토콜
2009년OSGi의 발견
- 처음에는 직접 클래스로더를 구현하여 플러그인을 지원하려 함- 자바용 동적 모듈 시스템을 목표로 작성된 OSGi 기술을 알게 됨- Apache Felix 프레임워크를 기반으로 재작성- OSGi 홖경에 호홖되지 않는 자바 라이브러리를 올리는데 많은 시갂 소모(특히 하이버네이트 JPA)
크라켄의현재
핵심 기반
- 핵심 플랫폼 엔짂- 동적인 필터 파이프라인- 서블릿 컨테이너- 작업 스케줄링- 데이터베이스 연동- iPOJO 컴포넌트 관리
알고리즘
- Aho-Corasick- Bloom Filter
통신 프로토콜
- Syslog- SNMP- JSON- RSS, ATOM- XML-RPC- DNS
TCP/IP 스택
- PCAP- TCP/IP 스택- HTTP 디코더- SMTP 디코더- POP3 디코더- MSN 디코더- SNMP 디코더- FTP 디코더
로그 파서
- CSV- WELF- Snort- OpenSSH
그래프
- RRD
서블릿 지원
- Plain Text- XML- XML-RPC- JSON- FusionCharts
별도의 WAS 필요 없이 크라켄 모듈만으로 보안 솔루션 스택 구성 가능크라켄 코어만 배포핚 후 패키지 설치 가능하여 손쉬운 배포
레퍼런스
에어스캔
Syslog Receiver
Log Handler JPA
Database
Business Logicwith
JsonMethod,XmlMethod
FusionChartsData Service
Jetty
XML ServletJSON Servlet
Web StaticResource
Web Browser
Agents
SNMP4JPerformanceMonitoring
net-snmpd
Kraken Bundles
External Components
Custom Application
Legend
Web based Monitoring System
레퍼런스
엔초비 ISAC / ESM / NAS
크라켄코어
주요기능– Apache Felix 2.0 기반 OSGi 플랫폼
– 런타임모듈 설치와 제거가능
– 패키지관리
– 텔넷을이용한 세밀한 상태 진단및제어 (명령어 자동 완성지원)
– 손쉬운사용자 정의 스크립트 확장
– 중앙집중화된 로깅
패키지 설치 및 제거
pkg.install kraken-syslogpkg.update kraken-syslogpkg.uninstall kraken-syslog
로깅 제어
logger.listlogger.set org.krakenapps.syslog.SyslogReceiver trace onlogger.tail (터미널에 실시갂 로그 출력)
번들 설치 및 제거
bundle.install org.krakenapps kraken-ipojo 1.0.0(maven 저장소에서 검색하여 자동 설치)
스크립트 확장
ScriptFactory 인터페이스 구현Script 인터페이스 구현
크라켄 iPOJO
iPOJO– OSGi 응용을 손쉽게 개발할 수있도록 만들어주는 서비스 컴포넌트 런타임
–컴포넌트가 필요로 하는다른컴포넌트 객체를 iPOJO가 자동으로 주입함
–코어를제외한 대부분의 크라켄 모듈은 iPOJO 컴포넌트로 구성되어 있음
주요기능– iPOJO 컴포넌트가 비활성화 된경우 의존성 문제를추적하는데 사용
– iPOJO 컴포넌트 팩토리관리
– iPOJO 컴포넌트 인스턴스 관리
– iPOJO 핸들러 관리
컴포넌트 인스턴스 관리
ipojo.create [factory name] [instance name]ipojo.delete [instance name]ipojo.instancesipojo.instance [instance name]Ipojo.handlers
컴포넌트 팩토리 관리
ipojo.factoriesipojo.factory [factory name]
크라켄필터
필요성
로그 수집 로그 저장
로그 통계
로그 분석
새로운 메시지 경로가 생기는 경우
기존 방식: 새로운 모듈을 호출하도록호출자 코드 수정 및 재컴파일 필요
개선 방식: 동적으로 모듈 로딩하고 필터 바인딩기존 코드 수정 불필요
주요기능
필터 생성 및 제거
filter.load org.krakenapps.snmp.TrapReceiver trapdfilter.unload trapd
필터 연결 및 해제
filter.bind trapd logpumpfilter.unbind trapd logpump
필터 설정 및 연결 상태 조회
filter.set syslogd charset euc-krfilter.status syslogd
필터 실행 및 정지
filter.run log-archive 2000 (2초마다 run 실행)filter.stop log-archive
크라켄필터
<<interface>>
Filter+getInputMessageSpecs()+getOutputMessageSpec()+process(Message)+getProperty(String)+setPropety(String, String)+unsetProperty(String)+validateConfiguration()
DefaultFilterimplemented
property operations
ActiveFilter+isRunning()+setRunning()+open()+close()+run()
<<interface>>
FilterChain+process(Message)
<<interface>>
FilterManager+loadFilter()+unloadFilter()+runFilter()+stopFilter()+bindFilter()+unbindFilter()+getFilter()+getInputFilters()+getOutputFilters()+registerFilter()+unregisterFilter()+subscribeFilterEvent()+unsubscribeFilterEvent()+getPropertyKeys()+getProperty()+setProperty()+unsetProperty()
<<interface>>
FilterEventListener+onFilterLoaded()+onFilterUnloading()+onFilterBound()+onFilterUnbinding()+onFilterSet()+onFilterUnset()
Implemented as aniPOJO component
registered as OSGi service
FilterChain implementationis injected by iPOJO
크라켄필터
SyslogReceiver SyslogSender
Input Message Specifications
kraken.syslog 1.0kraken.syslog.sender 1.0
Output Message Specification
kraken.syslog 1.0
filter.bind syslogd senderkraken.syslog 1.0 match
filterChain.process(message)
instance.name = senderaddress = 61.250.92.151port = 514encoding = euc-kr
instance.name = syslogdaddress = 192.168.88.88port = 514encoding = utf-8
Syslog Relay with transcoding
크라켄 CRON
주요기능–월, 주, 일, 시, 분단위작업 예약가능 (UNIX Cron 문법 호환)
–어노테이션 기반자동 작업예약지원
작업 예약
cron.usage (사용법 출력)cron.list (젂체 예약 목록)cron.queue (실행 예정 시각)cron.register (작업 예약 등록)cron.unregister (작업 예약 취소)cron.runnables (예약 가능핚 작업 목록 출력)cron.run (즉시 작업 실행)
시간 단위 인-메모리 로그 통계 요약
@HourlyJobpublic class HourlyStatsGenerator implements Runnable {
@Overridepublic void run() { .. 생략 .. }
}
크라켄 Cron 스케줄 자동 등록
어노테이션 지원
@PeriodicJob (복잡핚 예약)@HourlyJob@DailyJob@WeeklyJob@MonthlyJob
크라켄 JPA
주요기능– OSGi 환경에서 동작가능한 하이버네이트3 JPA 모듈
–선언적트랜잭션 지원
로그 저장 배치 처리
public class LogArchive implements ActiveFilter {private ThreadLocalEntityManagerService entityManagerService;
@Transactional@Overridepublic void run() { .. 생략 .. }
}
크라켄 JPA선언적 트랜잭션
JPA EntityManagerFactory 관리
jpa.listjpa.register [bundle id] [alias]jpa.unregister [alias]
크라켄 HTTP
주요기능– HTTP 파일 서버동작
–서블릿컨테이너 (Jetty 6)
– OSGi Compendium HTTP 서비스 호환
웹 서버 목록 조회, 생성, 삭제
http.listhttp.open web1 80http.openSsl web2 443http.close web1
HTTP 파일서버 설정
http.addFilesystemResources web1 / /c:/fileserverhttp.addBundleResources web1 /path 11
서블릿 목록 조회, 등록, 삭제
http.servletshttp.servletFactorieshttp.createServlet web1 summary-servlet /sumhttp.removeServlet web1 summary-servlet-0
크라켄 XML-RPC
주요기능–선언적 XML-RPC 서비스개발 지원
CVE 검색 Open API (XMLRPC)
@Component(name = "isc-cve-service", immediate = true)@Providespublic class DefaultCveService implements CveService {
@ServiceProperty(name = "index.dir", value = "/home/www/index/cve")private String indexDirectory;
@XmlRpcMethod(alias = "cve", method = "search")public Map<String, Object> search(String apiKey, String q) throws Exception {
return search(apiKey, q, "content", 0, 20);}
}
선언적 XMLRPC 메소드 노출
XML-RPC 메소드 관리
xmlrpc.list
크라켄 DNS
주요기능– DNS 요청과응답을 상세하게 분석 (아직미완성)
–프로그래밍 API 제공
kraken> dns.dig xeraph.comTransaction ID: 2Flags:
Response: trueOpcode: 0x0Authoritative: falseTruncated: falseRecursion desired: trueRecursion available: trueReply Code: 0x0
Questions: 1Answer RRs: 1Authority RRs: 4Additional RRs: 0
Queries:xeraph.com, type 1, class 1
Answers:Name: 211.234.242.174Type: 1Class: 0x1Time to live: 86400Data length: 4Primary name server: nullMail Exchange: null
Authoritative nameservers:Name server: ns2.nchovy.comName server: ns4.nchovy.comName server: ns1.nchovy.comName server: ns3.nchovy.com
크라켄 SYSLOG
주요기능– SYSLOG 수신및송신 (인코딩 지정가능)
–크라켄콘솔에서 실시간으로 로그확인 가능
kraken.syslog 1.0 메시지 명세
date: 수싞 시각remote_ip: 원격지 IPremote_port: 원격지 포트local_ip: 로컬 IPlocal_port: 로컬 포트message: 로그 내용
kraken.syslog.sender 1.0 메시지 명세
message: 로그 내용
SYSLOG 관리
syslog.listsyslog.send [address] [port] [message](즉시 지정된 원격지로 syslog 젂송)syslog.trace [alias] (실시갂 콘솔 로깅)syslog.load (수싞기 생성)syslog.unload [alias] (수싞기 삭제)
크라켄 TCP/IP 스택
kraken-pcap
PCAP 라이브 캡처PCAP 덤프 파일 로딩
kraken-tcpip-stack
IP 단편 재조립TCP 세그먼트 재조립멀티 세션 프로토콜 추적 가능
kraken-http-decoder
HTTP 디코딩, gzip 지원
kraken-ftp-decoder
FTP 디코딩, 첨부 파일 추출 가능
kraken-msn-decoder
MSN 디코딩, 대화 내용 복원 가능
kraken-smtp-decoder
SMTP 디코딩MIME 메시지 파싱, 첨부 파일 추출 가능
kraken-pop3-decoder
POP3 디코딩MIME 메시지 파싱, 첨부 파일 추출 가능
kraken-snmp-decoder
SNMP 디코딩SNMP v1, v2
쉽게 확장 가능핚 네트워크 분석 엔짂(콜백 설정만 하면 데이터 홗용 가능)
mysql, tds, tftp, telnet 2월 중 지원프로토콜 디코더는 계속 추가 예정
크라켄 RRD
주요기능–시계열데이터의 기록과 그래프 작성에 최적화된 라운드 로빈데이터베이스
–기존 RRDTool을순수자바 기반으로 구현
–기존 RRDTool에없는 Aggregation 기능지원 (단순누적합산)
크라켄의미래
패시브 네트워크 스캐너
- 운영체제 식별- 응용 프로그램 및 서비스 식별- 소프트웨어 버젂 기준으로 취약점 목록화- IPS, ESM 등 기존 보안시스템의 오탐 제거
호스트 보안 진단
- OVAL 인터프리터- 윈도우, 리눅스 스키마 우선 지원- MITRE 저장소 7천개 룰 사용 가능- ESM 연동
네트워킹 서버
- DHCP 서버 (네트워크 접근 제어)- TFTP 서버 (라우터/스위치 설정 지원)- FTP 서버 (파일 젂송)- SMTP 서버 (스팸 필터 및 경보 메일 젂송)- SSH 서버
네트워크 장비 제어
- 스위치, 라우터, 방화벽 등- ACL 차단 및 일정 시갂 후 자동 차단 해제- IDS, ESM 등 네트워크 접근 제어에 홗용- NAC 솔루션 구축 가능- 네트워크 장비 제조사의 협력 필요
다운로드및사용
공식사이트– http://krakenapps.org
소스– svn co http://krakenapps.org/svn/
Maven 저장소– http://krakenapps.org/mvn/
–이클립스에서 m2eclipse 플러그인을 사용하면 바로 의존성 설정가능
바이너리– http://code.google.com/p/krakenapps/downloads/list
포럼– http://groups.google.com/group/krakenapps