Spamming and DDoS attacks have increased by a large margin in the past few years. While there are already a lot of rigid mitigation methods for guarding against lower-layer attacks(such as SYN or ICMP flooding, Smurf attack, DNS amplification, and more), implementation on application layer prove to be more troubling.
Application layer DDoS mitigation requires the service itself to differentiate between bot and human, in order to provide services only to legit human users and to curb mass spamming. Attempts at so-called Turing tests were implemented to do so, hence the original captchas. However, bot-makers rendered them useless with text recognition powered by machine learning.
Google then led the switch to image-based ReCaptcha, which is seriously very bad user experience, due to the fact that to make the test harder for bots, the images are barely categorizable in plenty cases. Personally, I really hate Recaptchas, especially when the topic is something like “Choose all the Bridges”. Therefore, I decided to provide an easy alternative with a much better UX: “simply wait for your browser does the rest for you”.
How it Works
So basically, PoW Shield works as a proxy in front of the actual web app/service. It conducts verification and only proxies authorized traffic through to the actual server. The proxy is easily installable, and is capable of protecting low security applications.
Here’s what happens behind the scenes when a user browses a PoW Shield-protected webservice:
- The server generates a random hex-encoded “prefix” and sends it along with the PoW Shield page to the client.
- The server starts proxying the now authenticated client traffic to the server.
Installation and Configuration
Simply pull the docker image or clone the repository to the server you want PoW to run on, install dependencies, edit configurations, and you’re all set.
Project dedicated to provide DDoS protection with proof-of-work PoW Shield provides DDoS protection on OSI application…
For details, please refer to the project page
- WAF: additional web application firewall to provide an extra layer of protection
- Dynamic Difficulty: alter difficulty base on bandwidth and number of requests
- Unit Testing: unit testing for services and library
- Multi-Instance Syncing: sync blacklist and authentication information between multiple instances for deployment on multiple instances behind a load-balancer
PoW Shield is currently still a work in progress, feel free to lend me a hand on implementing these features or provide suggestions(features or optimization)