rules.json 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. [
  2. {
  3. "name": "api limit",
  4. "interval": 60,
  5. "limit": 1000,
  6. "filters": ["Path=^/api"],
  7. "aggregations": ["Path"],
  8. "actions": [
  9. {"name": "block"}
  10. ],
  11. "subrules": [
  12. {
  13. "name": "drop put",
  14. "interval": 60,
  15. "limit": 100,
  16. "filters": ["Method=PUT"],
  17. "aggregations": ["Header:X-Forwarded-For"],
  18. "actions": [
  19. {"name": "shell",
  20. "params": {"cmd": "iptables -A INPUT -s %v -j DROP", "args": ["Header:X-Forwarded-For"]}}
  21. ]
  22. }
  23. ]
  24. },
  25. {
  26. "name": "log'n'block rss",
  27. "interval": 300,
  28. "limit": 2500,
  29. "filters": ["Path=^/$", "GET:format=rss"],
  30. "actions": [
  31. {"name": "log"},
  32. {"name": "block"}
  33. ]
  34. },
  35. {
  36. "name": "log rule",
  37. "filters": ["Path=/"],
  38. "actions": [ {"name": "log"} ],
  39. "subrules": [
  40. {
  41. "name": "block missing accept-language",
  42. "filters": ["!Header:Accept-Language"],
  43. "actions": [
  44. {"name": "block"}
  45. ]
  46. },
  47. {
  48. "name": "block curl",
  49. "filters": ["Header:User-Agent=[Cc]url"],
  50. "actions": [
  51. {"name": "block"}
  52. ]
  53. }
  54. ]
  55. }
  56. ]