kraken - egloospds16.egloos.com/pds/200909/01/57/kraken-introduction... · 2009-09-01 · kraken...

24
Kraken Introduction to the OSGi based security platform [email protected]

Upload: others

Post on 24-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

KrakenIntroduction to theOSGi based security platform

[email protected]

Page 2: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Target Audience– Information security solution developer

– Java developer who is interest on OSGi application stack

Page 3: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Security Platform– Most security solutions shares common requirements

• Aggregate some informations from agents or sensors

– System status (performance, software versions, etc)

– Log from various data store (file, database, syslog, snmp trap, etc)

• Inspect informations and applies security policies

• Trigger configured actions

– Send event or alarm through various media (e.g. sms, email)

– Control other security solutions (e.g. firewall policy)

– Drop packet

• Generate statistics and reports

– Security Platform provides

• common functionalities as components

• reliable and solid development framework

Page 4: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Common Problems– Lack of pipeline architecture style

• Security solutions need pipelined message processing

– IDS message flow

» Generate intrusion event

» Apply response policy to event

» Respond to an intrusion (syslog, trap, sms, RST packet, etc)

– ESM message flow

» Read logs from file, database, network, and so on.

» Parse logs and normalize them

» Filter logs by policy

» Send event to realtime view of console

» Summarize logs and generate reports

Page 5: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Common Problems– Lack of pipeline architecture style

• Solutions that did not consider pipelining encounter following problems:

– Hard wiring of message path

» You should modify caller side if you want to add new feature

– Hard to provide optional feature and remove unused feature

» You should maintain many branches

– Long downtime

» You should kill the process, patch some files, and start it

– Lack of troubleshooting support

• Do you think logging is sufficient?

– Error log does not provide detail information

– It’s not that easy to trace a tons of debug logs

– Add debug log to code and wait until problem appears again?

Page 6: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Common Problems– Lack of configurability

• Security appliances should provide runtime configuration through CLI

• Dynamic update and version control are also needed

– Lack of integration

• There are well-known open source libraries but you should write glue codes

• There are well-known use cases but no simplified API provided

– Lack of reusable and standardized security components

• Vendors use their own log formats

– Everyone writes log parsers again and again

• Response engine requires log merging or compression

– Maybe you don’t want to send hundreds of alarm mails per second

• Poor interoperability

– Data model and API can be standardized per product group

Page 7: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Kraken– OSGi based security platform

• Highly configurable

– Interactive Console

– Hot Deploy

– Version and Dependency Control

• Component based Development

– Using iPOJO (injected POJO)

– Managed Lifecycle

– Declarative Services (e.g. Transaction, Web Service)

• Prebuilt Infrastructure and security components

– Infrastructure: Filter, HTTP, JPA

– Web services: JSON, XML, Text, FusionCharts Servlets

– Networking: Syslog, SNMP, JPCAP, DNS

– and more

– Distributed under Apache Software License 2

Page 8: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Real world example

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

Page 9: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Architecture

JavaSE 1.5+

Apache Felix

iPOJO 1.2.0

Filter

Kraken Core

MavenHTTPInfra

iPOJO

Kernel

Runtime

OSGi R4

Kra

ken S

crip

t API

JPASNMP

JPA

Syslog JSON

ApplicationLayer

Export-Package

Import-Package

Private-Package

Bundle-Version

Bundle-SymbolicName

META-INF

OSGI-INF

OSGi Bundle

iPOJO-Components

Kraken Application Stack

Page 10: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Introduction

Reference– AirSCAN (Wavesoft Inc.)

• Monitor and block wired, wireless, adhoc, wibro, hsdpa, bluetooth devices

• Register wireless devices to AirTight SpectraGuard Enterprise

– WatchCat (NCHOVY Inc.)

• ESM as a Service

• Minimize service downtime

• Highly extensible architecture

• Under development

Page 11: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken APIlearn by example

Page 12: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

Class diagram

ScriptContextImpl

<<interface>>

ScriptContext<<interface>>

ScriptInputStream+read(): char+readLine(): string

<<interface>>

Script+setScriptContext()

<<interface>>

ScriptOutputStream+print()+println()

<<interface>>

ScriptFactory+createScript(): Script

ConsoleInputStreamBundleScript

command(String[] args)

ConsoleOutputStream

BundleScriptFactorycalled by reflectionvoid script(String[]args) {}

documented by@ScriptUsage

Page 13: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– Create project using maven

• mvn architecture:create -DarchetypeGroupId=org.apache.felix-DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.2.0-DgroupId=YOUR_GROUP_ID-DartifactId=YOUR_ARTIFACT_ID-Dversion=YOUR_VERSION-DpackageName=YOUR_DEFAULT_PACKAGE

• Assumptions on this example:

– YOUR_GROUP_ID is org.krakenapps

– YOUR_ARTIFACT_ID is kraken-example

– YOUR_VERSION is 1.0.0

– YOUR_DEFAULT_PACKAGE is org.krakenapps.example

Page 14: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– Maven Configuration

• Edit POM file

– <name>Kraken Example</name>

– <Export-Package>org.krakenapps.example</Export-Package>

– Remove <Private-Package> element

– Remove <Import-Package> element

– Add Kraken API dependency

» <dependency><groupId>org.krakenapps</groupId><artifactId>kraken-api</artifactId><version>1.0.0</version>

</dependency>

– Add <version>1.2.0</version> below the maven-ipojo-plugin element

Page 15: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– iPOJO Configuration

• Edit metadata.xml<ipojo>

<component className="org.krakenapps.example.ExampleScriptFactory"name="exampleScriptFactory" immediate="true" factory="false“>

<provides><property name="alias" type="string" value="example" />

</provides></component><instance component="exampleScriptFactory" />

</ipojo>

• All console command is prefixed with alias

– example.hello means void hello(String[] args) method of a script created from ExampleScriptFactory

• Above configuration declares and instanciates an iPOJO component. See the Apache Felix iPOJO Wiki documentations.

Page 16: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– Edit ExampleScriptFactory.java

package org.krakenapps.example;

import org.krakenapps.api.Script;

import org.krakenapps.api.ScriptFactory;

public class ExampleScriptFactory implements ScriptFactory {

@Override

public Script createScript() {

return new ExampleScript();

}

}

– ScriptFactory constructor can receive BundleContext parameter

• Finds other OSGi services and create Script object with them

• e.g. bundleContext.getServiceReference(interfaceName);

Page 17: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– Edit ExampleScript.java

package org.krakenapps.example;

import org.krakenapps.api.Script;import org.krakenapps.api.ScriptContext;

public class ExampleScript implements Script {private ScriptContext context;

@Overridepublic void setScriptContext(ScriptContext context) {

this.context = context;}

public void hello(String[] args) {context.println("hello kraken");

}}

– Control your components at console• Add command methods as many as you want

Page 18: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken API

First script example– Build

• mvn package

• will generate kraken-example-1.0.0.jar in target directory

– Connect Kraken Console and Install

• telnet localhost 7004

• kraken> bundle.install org.apache.felix org.apache.felix.ipojo 1.2.0download from maven central repository and install

• kraken> bundle.install file:///c:/DIRECTORY/target/kraken-example-1.0.0.jar

• kraken> bundle.listsee id number of bundles and start them

• kraken> bundle.start 1 2

– Test

• kraken> example.hellohello kraken

Page 19: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filterruntime filter composition

Page 20: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filter

Filter

<<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

Page 21: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filter

Message Specification– Source’s output spec and destination’s input spec have to be matched.

• Bind failed if specification does not match

Message

<<interface>>

MessageSpec+getName()+getDescription()+getLatestVersion()+getVersionRange()

<<interface>>

MessageSpecVersion+getMajorVersion()+getMinorVersion()+isInRange()

<<interface>>

MessageSpecVersionRange+getLowerBound()+getUpperBound()

<<interface>>

Message+getMessageSpec()+headerKeySet()+keySet()+containsHeader()+containsKey()+getHeader()+get()

MessageBulider+setBase(Message)+setHeader(String, Object)+set(String, Object)+build()

Message is immutablefor multithreaded processing

support method chaining

Page 22: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filter

Message Flow Example– Provides complex functionality by runtime filter binding

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

Page 23: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filter

Filter Script– backed by filter manager

• filter.list

• filter.load [filter class name] [alias]

• filter.unload [alias]

• filter.bind [source alias] [destination alias]

• filter.unbind [source alias] [destination alias]

• filter.status [alias]

– show properties and bind status of the filter

– list all loaded filter instances if alias is omitted

• filter.run [alias] [interval]

– only for active filter

– 1second if interval is omitted

• filter.stop [alias]

– only for active filter

• filter.set [alias] [key] [value]

• filter.unset [alias] [key]

Page 24: Kraken - Egloospds16.egloos.com/pds/200909/01/57/Kraken-Introduction... · 2009-09-01 · Kraken Filter Message Flow Example –Provides complex functionality by runtime filter binding

Kraken Filter

Syslog example– to be continued