docker: block external connections
This commit is contained in:
		
							parent
							
								
									7b670efc67
								
							
						
					
					
						commit
						be3686db82
					
				
					 3 changed files with 42 additions and 1 deletions
				
			
		
							
								
								
									
										33
									
								
								scripts/_docker-block-external-connections
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								scripts/_docker-block-external-connections
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create the DOCKER-USER chain if it doesn't exist
 | 
				
			||||||
 | 
					iptables -N DOCKER-USER || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Flush existing rules in the DOCKER-USER chain
 | 
				
			||||||
 | 
					iptables -F DOCKER-USER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get all external network interfaces
 | 
				
			||||||
 | 
					interfaces=$(
 | 
				
			||||||
 | 
					    ip -o -f inet addr show |
 | 
				
			||||||
 | 
					    awk '{print $2}' |
 | 
				
			||||||
 | 
					    grep -E '^(enp|eth|wlan|wlp)' |
 | 
				
			||||||
 | 
					    sort -u
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for iface in $interfaces; do
 | 
				
			||||||
 | 
					    # Allow traffic from LAN
 | 
				
			||||||
 | 
					    iptables -A DOCKER-USER -i "$iface" -s 127.0.0.1 -j ACCEPT
 | 
				
			||||||
 | 
					    iptables -A DOCKER-USER -i "$iface" -s 10.0.0.0/8 -j ACCEPT
 | 
				
			||||||
 | 
					    iptables -A DOCKER-USER -i "$iface" -s 192.168.0.0/16 -j ACCEPT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Allow established and related connections
 | 
				
			||||||
 | 
					    iptables -A DOCKER-USER -i "$iface" -m state --state RELATED,ESTABLISHED -j ACCEPT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Drop all other traffic
 | 
				
			||||||
 | 
					    iptables -A DOCKER-USER -i "$iface" -j DROP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "iptables rules have been set up for interface: $iface"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Return to the previous chain
 | 
				
			||||||
 | 
					iptables -A DOCKER-USER -j RETURN
 | 
				
			||||||
| 
						 | 
					@ -139,6 +139,12 @@
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    vrr-fullscreen = [ ];
 | 
					    vrr-fullscreen = [ ];
 | 
				
			||||||
    controller-battery = [ ];
 | 
					    controller-battery = [ ];
 | 
				
			||||||
 | 
					    _docker-block-external-connections = [
 | 
				
			||||||
 | 
					      iptables
 | 
				
			||||||
 | 
					      gawk
 | 
				
			||||||
 | 
					      gnugrep
 | 
				
			||||||
 | 
					      iproute2
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // lib.mapAttrs importScript {
 | 
					  // lib.mapAttrs importScript {
 | 
				
			||||||
    wdmenu = ./wdmenu.nix;
 | 
					    wdmenu = ./wdmenu.nix;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
{ pkgs, ... }:
 | 
					{ pkgs, lib, ... }:
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  services.flatpak.enable = true;
 | 
					  services.flatpak.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,8 @@
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  networking.firewall.extraCommands = lib.getExe pkgs._docker-block-external-connections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  programs.extra-container.enable = true;
 | 
					  programs.extra-container.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  programs.firejail.enable = true;
 | 
					  programs.firejail.enable = true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue