| 
				
			 | 
			
			
				@@ -482,4 +482,29 @@ function firewall_drop_spoofed_packets { 
			 | 
		
	
		
			
			| 
				482
			 | 
			
				482
			 | 
			
			
				     mark_completed $FUNCNAME 
			 | 
		
	
		
			
			| 
				483
			 | 
			
				483
			 | 
			
			
				 } 
			 | 
		
	
		
			
			| 
				484
			 | 
			
				484
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				485
			 | 
			
			
				+function firewall_rate_limits { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				486
			 | 
			
			
				+    if [[ $(is_completed $FUNCNAME) == "1" ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				487
			 | 
			
			
				+        return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				488
			 | 
			
			
				+    fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				489
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				490
			 | 
			
			
				+    # Limit connections per source IP 
			 | 
		
	
		
			
			| 
				
			 | 
			
				491
			 | 
			
			
				+    iptables -A INPUT -p tcp -m connlimit --connlimit-above 111 -j REJECT --reject-with tcp-reset 
			 | 
		
	
		
			
			| 
				
			 | 
			
				492
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				493
			 | 
			
			
				+    # Limit RST packets 
			 | 
		
	
		
			
			| 
				
			 | 
			
				494
			 | 
			
			
				+    iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				495
			 | 
			
			
				+    iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP 
			 | 
		
	
		
			
			| 
				
			 | 
			
				496
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				497
			 | 
			
			
				+    # Limit new TCP connections per second per source IP 
			 | 
		
	
		
			
			| 
				
			 | 
			
				498
			 | 
			
			
				+    iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				499
			 | 
			
			
				+    iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP 
			 | 
		
	
		
			
			| 
				
			 | 
			
				500
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				501
			 | 
			
			
				+    # SSH brute-force protection 
			 | 
		
	
		
			
			| 
				
			 | 
			
				502
			 | 
			
			
				+    iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --set 
			 | 
		
	
		
			
			| 
				
			 | 
			
				503
			 | 
			
			
				+    iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP 
			 | 
		
	
		
			
			| 
				
			 | 
			
				504
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				505
			 | 
			
			
				+    function_check save_firewall_settings 
			 | 
		
	
		
			
			| 
				
			 | 
			
				506
			 | 
			
			
				+    save_firewall_settings 
			 | 
		
	
		
			
			| 
				
			 | 
			
				507
			 | 
			
			
				+    mark_completed $FUNCNAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				508
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				509
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				485
			 | 
			
				510
			 | 
			
			
				 # NOTE: deliberately no exit 0 
			 |