Snapshot: do requests for /file/<hash> directly from the filesystem
[mirror/dsa-puppet.git] / modules / roles / manifests / snapshot_web.pp
index 56b1a44..37e1711 100644 (file)
@@ -1,5 +1,6 @@
 class roles::snapshot_web {
        include apache2
+       include apache2::headers
        include apache2::rewrite
 
        # snapshot abusers
@@ -21,9 +22,18 @@ class roles::snapshot_web {
        #  52.59.71.13
        # 20180821 mirroring
        #  99.137.191.34
+       # 20181110 crawler
+       #  51.15.215.91
+       # 20181222, excessive number of requests
+       #  208.91.68.213
+       # 198.11.128.0/18
+       # running jugdo against snapshot
+       #  159.226.95.0/24
+       #  84.204.194.0/24
+       #  211.13.205.0/24
        @ferm::rule { 'dsa-snapshot-abusers':
                prio  => "005",
-               rule  => "saddr (61.69.254.110 18.128.0.0/9 3.120.0.0/14 35.156.0.0/14 52.58.0.0/15 99.137.191.34) DROP",
+               rule  => "saddr (61.69.254.110 18.128.0.0/9 3.120.0.0/14 35.156.0.0/14 52.58.0.0/15 99.137.191.34 51.15.215.91 208.91.68.213 198.11.128.0/18 159.226.95.0/24 84.204.194.0/24 211.13.205.0/24) DROP",
        }
 
        ensure_packages ( [
@@ -53,6 +63,14 @@ class roles::snapshot_web {
                }
        }
 
+       @ferm::rule { 'dsa-snapshot-connlimit':
+               domain => '(ip ip6)',
+               prio  => "005",
+               rule  => "proto tcp mod state state (NEW) interface ! lo daddr (${ipv4addr} ${ipv6addr})  mod multiport destination-ports (80 443) mod connlimit connlimit-above 3 DROP;
+                         proto tcp mod state state (NEW) interface ! lo                                                dport 6081                 mod connlimit connlimit-above 3 DROP
+                          ",
+       }
+
        # varnish cache
        ###############
        @ferm::rule { 'dsa-nat-snapshot-varnish-v4':