Amazon WAF (Web Application Firewall)
- Configured against Cloudfront distributions
- Filters:
- IP
- string matching against requests
- SQLi
- 1 minute rule propagation
- 1 minute metrics
- Allow, Deny and Record requests
FROM alpine | |
COPY server.sh /srv/server.sh | |
EXPOSE 3000 | |
ENTRYPOINT ["/bin/sh", "/srv/server.sh"] |
#!/bin/bash | |
# setup ssl certificate formatter | |
exec 3> >(awk '$2 != "None" {split($2, a, "/"); $2=a[length(a)]; print; system("")}') | |
# inspect nlb | |
aws elb describe-load-balancers \ | |
--query 'LoadBalancerDescriptions[].{Name: LoadBalancerName, SSLCertificate: ListenerDescriptions[?Listener.Protocol==`HTTPS`].Listener.SSLCertificateId | [0]}' \ | |
--output text >&3 |
import boto3, json | |
def lambda_handler(event, context): | |
client = boto3.client('codebuild') | |
for e in event['Records']: | |
source = e['EventSource'] | |
if source == 'aws:sns': | |
message = json.loads(e['Sns']['Message']) | |
project = message['repository']['name'] |
#!/bin/bash | |
# | |
# Generate random urls for Siege | |
# | |
# $1: url | |
# $2: count | |
if [[ -z $1 ]]; then | |
echo "Usage: $0 http://my.site 1000" |
#!/bin/bash | |
shopt -s lastpipe | |
exec 3> >(egrep '^EVENTS' | egrep -o '{.+}' | json -gac 'this.userIdentity && this.userIdentity.accessKeyId == "<UR_KEY>"') | |
NEXT="" | |
TOKEN="" | |
COUNT=0 | |
while [ -n "$TOKEN" ] || [ $COUNT -eq 0 ]; do | |
test -n "$TOKEN" && NEXT="--next-token '$TOKEN'" |
#!/bin/bash | |
DOMAIN=$1 | |
PORT=$2 | |
TYPES=(A CNAME) | |
# resolve zone id | |
ZONE=$(aws route53 list-hosted-zones --query 'HostedZones[?Name==`'$DOMAIN'.`].Id' --output text) | |
if [[ -z "$ZONE" ]]; then | |
echo "Unrecognized domain: $1" >&2 |
#!/bin/bash | |
# | |
# Update SSL certs with letsencrypt | |
# | |
LE_HOME=/usr/src/letsencrypt | |
# stop nginx temporarily | |
echo "Stopping nginx" |
-----BEGIN PGP SIGNED MESSAGE----- | |
Hash: SHA256 | |
I am transitioning to a new GPG key. I have no reason to believe my | |
old key has been compromised and it will continue to be valid for some | |
time. | |
This transition document is signed with both keys to validate the | |
transition. |
// require() some stuff from npm (like you were using browserify) | |
// and then hit Run Code to run it on the right | |
var _ = require('lodash'); | |
// shuffle the things | |
function shuffle(list) { | |
var len = list.length | |
, result = Array(len) | |
; | |
for (var i = 0; i < len; i++) { |