Add a per-IP connection limit on planet.osm.org
authorTom Hughes <tom@compton.nu>
Sun, 25 Sep 2016 14:18:26 +0000 (15:18 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 25 Sep 2016 14:19:17 +0000 (15:19 +0100)
cookbooks/networking/attributes/default.rb
cookbooks/networking/definitions/firewall_rule.rb
cookbooks/networking/recipes/default.rb
cookbooks/networking/templates/default/shorewall-rules.erb
roles/planet.rb

index a672bee7e057f59b237eadb94d1f76405f050e38..88a4091f526af4ea058b8b59ee76067cf0ed4fbb 100644 (file)
@@ -1,5 +1,6 @@
 default[:networking][:firewall][:inet] = []
 default[:networking][:firewall][:inet6] = []
+default[:networking][:firewall][:http_connection_limit] = "-"
 default[:networking][:interfaces] = {}
 default[:networking][:nameservers] = []
 default[:networking][:search] = []
index 388470b9cdf3898963bc55c1379efc8b803adf0a..eb60a684c9adb3b527ec835e7ab1b841e785115b 100644 (file)
@@ -25,7 +25,8 @@ define :firewall_rule, :action => :accept do
     :proto => params[:proto],
     :dest_ports => params[:dest_ports] || "-",
     :source_ports => params[:source_ports] || "-",
-    :rate_limit => params[:rate_limit] || "-"
+    :rate_limit => params[:rate_limit] || "-",
+    :connection_limit => params[:connection_limit] || "-"
   ]
 
   if params[:family].nil?
index 0ed0841bfe0b1f5f81d1d0ab08db703bc8026123..16dd48269c87b18b091abd3f43fb4a1ada5c2dda 100644 (file)
@@ -336,6 +336,7 @@ firewall_rule "accept-http" do
   dest "fw"
   proto "tcp:syn"
   dest_ports "http"
+  connection_limit node[:networking][:firewall][:http_connection_limit]
 end
 
 firewall_rule "accept-https" do
@@ -344,4 +345,5 @@ firewall_rule "accept-https" do
   dest "fw"
   proto "tcp:syn"
   dest_ports "https"
+  connection_limit node[:networking][:firewall][:http_connection_limit]
 end
index 7cda2fbf174a4a5c572d19b0f4caeb3a5f9877f8..0b13f7ba0f5d37939a5e6ab20fa8e5c2291dad75 100644 (file)
@@ -6,8 +6,8 @@
 SECTION NEW
 <% end -%>
 
-# ACTION       SOURCE  DEST    PROTO           DEST            SOURCE  ORIGINAL        RATE
+# ACTION       SOURCE  DEST    PROTO           DEST            SOURCE  ORIGINAL        RATE    USER    MARK    CONNLIMIT
 #                                              PORTS           PORTS   DEST            LIMIT
 <% node[:networking][:firewall][@family].each do |r| # ~FC034 -%>
-<%= r[:action] %>              <%= r[:source] %>       <%= r[:dest] %> <%= r[:proto] %>                <%= r[:dest_ports] %>   <%= r[:source_ports] %> -       <%= r[:rate_limit] %>
+<%= r[:action] %>              <%= r[:source] %>       <%= r[:dest] %> <%= r[:proto] %>                <%= r[:dest_ports] %>   <%= r[:source_ports] %> -       <%= r[:rate_limit] %>   -       -       <%= r[:connection_limit] %>
 <% end -%>
index 8ee1ce9e95f572a6a73ee2a491fe79328726c183..8c2870767b62c3be9c45961b762355afcfd5d5b2 100644 (file)
@@ -31,6 +31,11 @@ default_attributes(
       }
     }
   },
+  :networking => {
+    :firewall => {
+      :http_connection_limit => 10
+    }
+  },
   :apache => {
     :mpm => "event",
     :keepalive => true,