Cloud&Security&@&Ne0lix 
Adap%ng(Security(for(Modern(So4ware 
Jason&Chan 
chan@ne'lix.com.:.@chanjbs 
Sea$le&AWS&Architects&&&Engineers
Me 
Current:(Ne*lix(Security 
Product,)app,)ops,)infra,)corp,)fraud,)privacy,)abuse,)IR 
Previous: 
Infosec(@(VMware,(consul2ng:(@stake,(iSEC(Partners
14m$users$in$1+$year
14m$users$in$1+$year 
150m%photos
14m$users$in$1+$year 
150m%photos 
3"engineers
14m$users$in$1+$year 
150m%photos 
3"engineers 
$1B$acquisi+on$by$FB
So#.#.#.
idea%+%cloud%=%profit!
So#.#.#.
Goal:&Cloud&&&AWS&benefits,&securely
Typically,)how)do)you:
Create&a&user&account
Create&a&user&account 
Inventory)your)systems
Create&a&user&account 
Inventory)your)systems 
Update'a'firewall'config
Create&a&user&account 
Inventory)your)systems 
Update'a'firewall'config 
Make%a%forensic%image
Create&a&user&account 
Inventory)your)systems 
Update'a'firewall'config 
Make%a%forensic%image 
Disable(a(MFA(token
In#AWS#.#.#.
CreateUser() 
DescribeInstances() 
AuthorizeSecurityGroupIngress() 
CreateSnapshot() 
Deac%vateMFADevice()
So#ware,)now
Agile
Microservices
Immutable) 
Infrastructure
DevOps/NoOps
So#.#.#.#what#about#security?
Visibility 
Knowing'the'Environment
Discover
Discover 
Inventory
Discover 
Inventory 
Test
Discover 
Inventory 
Test 
Report
Open%ELB%Example 
1. Dump'list'of'ELBs'with'listeners 
2. Connect'to'ELBs'from'arbitrary'Internet'IP 
3. Evaluate'status'code'(200/300'or'403) 
4. Compare'results'against'expected 
5. Fix'anomalies,'educate'engineers,'and'update'expected'(manual)'
Knowing'the'Environment'/'Takeaways 
Tailor'discovery'to'rate'of'change 
Think&about&normaliza0on&of&discovery&data
Visibility 
Risk%Priori)za)on
Connec&vity+ 
Analysis+via+Ne1lix+ 
OSS
Risk%Priori)za)on%-%Takeaways 
What%is%measurable?%(objec3vely) 
Use$as$an$input,$not$law
Visibility 
Mul$%Layer+Security+Tes$ng
Deconstruc*ng,security,tes*ng
Ne#lix'Deployment'Pipeline
Integrated)tes+ng)for)CI/CD
Mul$%Layer+Security+Tes$ng+%+Takeaways 
What%conversa-ons%can%you%avoid? 
Is#there#a#pyramid#you#can#leverage?
Visibility 
Configura)on*Monitoring
AWS$Op'ons
Bill$as$IDS 
AWS$Billing$Alerts
CloudTrail 
Logging&of&API&calls
{ 
"Records": [{ 
"eventVersion": "1.0", 
"userIdentity": { 
"type": "IAMUser", 
"principalId": "EX_PRINCIPAL_ID", 
"arn": "arn:aws:iam::123456789012:user/Alice", 
"accessKeyId": "EXAMPLE_KEY_ID", 
"accountId": "123456789012", 
"userName": "Alice" 
}, 
"eventTime": "2014-03-06T21:22:54Z", 
"eventSource": "ec2.amazonaws.com", 
"eventName": "StartInstances", 
"awsRegion": "us-west-2", 
"sourceIPAddress": "205.251.233.176", 
"userAgent": "ec2-api-tools 1.6.12.2", 
"requestParameters": { 
"instancesSet": { 
"items": [{ 
"instanceId": "i-ebeaf9e2" 
}] 
} 
},
"responseElements": { 
"instancesSet": { 
"items": [{ 
"instanceId": "i-ebeaf9e2", 
"currentState": { 
"code": 0, 
"name": "pending" 
}, 
"previousState": { 
"code": 80, 
"name": "stopped" 
} 
}] 
} 
} 
}, 
... additional entries ... 
] 
}
Trusted(Advisor 
Checks'config'vs.'best'prac3ces
Shameless(Plug(Sec-on(of(the(Talk
Edda 
AWS$config$history
What%instance%has%a%given%public%IP? 
$ curl "http://edda/api/v2/view/instances;publicIpAddress=1.2.3.4;_since=0" 
["i-0123456789","i-012345678a","i-012345678b"]
What%is%the%most%recent%change%to%a%security% 
group? 
$ curl "http://edda/api/v2/aws/securityGroups/sg-0123456789;_diff;_all;_limit=2"
$ curl "http://edda/api/v2/aws/securityGroups/sg-0123456789;_diff;_all;_limit=2" 
--- /api/v2/aws.securityGroups/sg-0123456789;_pp;_at=1351040779810 
+++ /api/v2/aws.securityGroups/sg-0123456789;_pp;_at=1351044093504 
@@ -1,33 +1,33 @@ 
{ 
"class" : "com.amazonaws.services.ec2.model.SecurityGroup", 
"description" : "App1", 
"groupId" : "sg-0123456789", 
"groupName" : "app1-frontend", 
"ipPermissions" : [ 
{ 
"class" : "com.amazonaws.services.ec2.model.IpPermission", 
"fromPort" : 80, 
"ipProtocol" : "tcp", 
"ipRanges" : [ 
"10.10.1.1/32", 
"10.10.1.2/32", 
+ "10.10.1.3/32", 
- "10.10.1.4/32" 
], 
"toPort" : 80, 
"userIdGroupPairs" : [ ] 
} 
], 
"ipPermissionsEgress" : [ ], 
"ownerId" : "2345678912345", 
"tags" : [ ], 
"vpcId" : null 
}
Security)Monkey
Configura)on*Monitoring*.*Takeaways 
Config&changes&have&a&con-nuum&of&safety 
Find%ways%to%observe%and%differen1ate
Conclusions
AWS$Security$Resources 
h"p://&ny.cc/awssecurity
Thank&you! 
chan@ne'lix.com.:.@chanjbs

Cloud Security @ Netflix