Coder Social home page Coder Social logo

waffle's People

Contributors

cebilon123 avatar deepto98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

waffle's Issues

TLS introduction

We need to introduce TLS as the first layer of the defense. Basically, after its introduction, we will be able to validate client handshake which will be useful to guard applications from botnets and related attacks ie. DDOS

Add support for ip addresses from headers

This is a email I've got:

hi, please add support ratelimit cf-connecting-ip? original visitor IP
address appears in an appended HTTP header called CF-Connecting-IP.

YAML config

We need to have YAML config in order to configure domains and ip addresses.

Add request data visualisation

Context:

Currently, there is no way to visualize what requests are coming through our WAF. At the very beginning, we need a frontend that simply visualizes the incoming requests.

It could be done as a list of incoming requests and some kind of graph.

TODO

  • add a request visualization (currently we don't have any metrics gathering code, so this needs to be done as well)

AC

  • we have an incoming request visualization
  • there is high test coverage

Info

We could create our custom frontend i.e. in React, or we can try using Grafana, share some ideas here, and let's discuss ๐Ÿ˜„

Reverse proxy

We have TLS based server set up, but we are missing the initial functionality of reverse proxy.
We need to introduce redirect mechanism and the possibility to read possible redirections from config file.

TODO:

  • reverse proxy logic
  • possible redirect domain : address map from config and database

AC

  • we have reverse proxy logic
  • we have redirect domain : address mapping from config and database

How to test?

  • execute unit tests
  • try adding domain : address map to database or/and config

Refactor how config and certificates are being read

Context

Currently the config and the certificates are embedded in the main.go. It is good approach for now but it would be nice to refactor it, in order to make it simpler to set up and edit during the development.

TODO

  • Refactor how the config and certificates are being read
  • Add unit tests for the changes
  • Fix other tests accordingly (if it's needed)

AC

  • There is a new approach of reading the configs and certificates
  • There are unit tests made for the changes and others are fixed

How to test?

  • The pipeline should succeed
  • Unit tests should pass
  • WAF should read configs and certificates

Add TCP proxy

Context:
We have http proxy, but we want to copy Cloudflare and their Spectrum service, which means that we need to have TCP reverse proxy.
(Later it could be used for the HTTP proxy as well)

TODO:

  • Add simple outline of TCP reverse proxy
  • Add unit tests

AC:

  • we have functional TCP reverse proxy

Add XSS protection

We need to create an outline of the defense system, with the first defense: XSS protection

Add BPF provider

Context

Currently we have packet reading, and network interface provider tho it's problematic to listen for valid packets from network interfaces and protocols. To accomplish that we can use BPF filter

TODO

  • add BPF filter configuration to the collector worker
  • add yaml configuration to the collector worker

AC

  • there is possibility to write the PBF filter in the config
  • we can configure application from the config

MySQL database migrations

We need to have the possibility to create migrations to the database, we can also use GORM to simplify stuff in the beginning.

TLS fingerprinting research + implementation

Context:

There is an method founded by the Salesforce engineers called "TLS fingerprinting" which can be used to found out the exact OS, browser, client data while making the TLS Handshake.

TODO:

  • found out how TLS fingerprint works
  • add implementation of it to the application

AC:

  • there is a rich comment with the exact information, articles and other resources about TLS fingerprint
  • there is an implementation of the whole thing
  • there is high test coverage in the newly written code

Comment:

I have been doing some research about the subject and in order to make it real and fully functional we need to somehow rewrite the server, in order to have access to all the data send in the TLS Handshake. Currently we have access to the method in the TLS config struct, which gives us access to the thing, but there aren't all the needed data about request in order to make it functional.

There are also already made implementation of the TLS Fingerprinting for the server side and client side in golang.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.