13,233 karma · joined October 12, 2007
Twitter: http://twitter.com/mbuckbee
email: mike@expeditedsecurity.com
2. If you were making it today would you just use SQLite?
- Really strong support across multiple platforms (we have clients for most of the major web frameworks)
- Efficiency, sure we have lots of RAM on servers nowdays but on some platforms it's constrained and if you don't have to burn it, we'd just rather not.
- When we started mapping this out, we ended up with something that looked like a JSON format that we were adding indexes to....and then we were re-inventing SQLite.
In the article, we refer to this as "decimal lexical" formatting, where we're taking the IPs and making them integers but actually treating them as strings. We're doing this in both Redis with sorted sets and then in a single table in SQLite.
I was going to explain all this in the article, but it was too long already, so it will be a future blog post.
The client is responsible for checking with our servers and, if rule updates are found, downloading a new database file. To avoid locking and contention issues, these are each uniquely named, and which DB is "current" is just updated.
Note: This is only in "managed" mode. If you'd rather, you can distribute a SQLite database of the rules alongside your app.
1 - Redis sorted sets - https://redis.io/docs/latest/develop/data-types/sorted-sets/
With that in mind, it's setting higher levels of limiting and doing the math to push that out over many machines/instances/dynos. That helps for things like scraping prevention, etc.
For issues like credential stuffing attacks, you'd want a lower limit but also coupled with mitigations like IP bans, IP reputation, etc. to deal with underlying issue.
They're taking a somewhat well-known cavity prevention and enamel remineralization treatment that has the unfortunate side effect of turning your teeth black and replicating steps from a study to avoid that.
One of several studies they link to: https://www.scielo.br/j/bdj/a/rHSG9jRQDdY7sCFZzpNXYXy/?lang=...
To your questions: there's an OSS core in that you can use the firewall itself without a connection to Wafris Hub.
We're in a transition where we're moving from our v1 (which required Redis) to a v2 on all clients (which uses locally replicated SQLite) and the docs and clients are in different states.
Some what's driving this is:
1. Solutions like Fastly + Cloudflare are out there, but there's still way too many sites without any "default" type protection.
2. It remains a big issue to try and sync and scale these types of systems if implemented within a framework.
3. It's easy to find stuff to block (look in your logs and it's all sorts of dumb attacks, scrapers, bots, etc.) but much harder to close the loop on discovering what to block. This is really "Wafris Hub" (the web gui) that tries to close the loop on this.
Would love more feedback, either here or mike@wafris.org
https://wafris.org/docs/installation/nodejs/ should work for you now.
There is a saying, “You can’t fool an honest man,” which is much quoted by people who make a profitable living by fooling honest men. Moist never tried it, knowingly anyway. If you did fool an honest man, he tended to complain to the local Watch, and these days they were harder to buy off. Fooling dishonest men was a lot safer and, somehow, more sporting. And, of course, there were so many more of them. You hardly had to aim.
There is an inverse correlation between how much a robot looks like a _robot_ and how useful it is in the real world.
I saw this firsthand with a pizza shop that went to computerized ordering from paper tickets. The drivers could no longer "lose" tickets and pocket the cash payment (resulting in a wage loss of ~$10/hour or more).
I've anecdotally heard similar from lots of folks that used to work fast food and service jobs.
Though that being said, I feel like we're flipped on which is more "out there" as Ra feels much less slippery of an idea.
My personal concerns are more that we are going to see the botnets get smarter and smarter and more automated.
Just imagine if every script kiddie running a "dumb" botnet suddenly got 2x more effective.