39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<section xmlns="http://docbook.org/ns/docbook"
							 | 
						||
| 
								 | 
							
								         xmlns:xlink="http://www.w3.org/1999/xlink"
							 | 
						||
| 
								 | 
							
								         xmlns:xi="http://www.w3.org/2001/XInclude"
							 | 
						||
| 
								 | 
							
								         version="5.0"
							 | 
						||
| 
								 | 
							
								         xml:id="sec-firewall">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<title>Firewall</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>NixOS has a simple stateful firewall that blocks incoming
							 | 
						||
| 
								 | 
							
								connections and other unexpected packets.  The firewall applies to
							 | 
						||
| 
								 | 
							
								both IPv4 and IPv6 traffic. It is enabled by default. It can be
							 | 
						||
| 
								 | 
							
								disabled as follows:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<programlisting>
							 | 
						||
| 
								 | 
							
								networking.firewall.enable = false;
							 | 
						||
| 
								 | 
							
								</programlisting>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If the firewall is enabled, you can open specific TCP ports to the
							 | 
						||
| 
								 | 
							
								outside world:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<programlisting>
							 | 
						||
| 
								 | 
							
								networking.firewall.allowedTCPPorts = [ 80 443 ];
							 | 
						||
| 
								 | 
							
								</programlisting>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that TCP port 22 (ssh) is opened automatically if the SSH daemon
							 | 
						||
| 
								 | 
							
								is enabled (<option>services.openssh.enable = true</option>).  UDP
							 | 
						||
| 
								 | 
							
								ports can be opened through
							 | 
						||
| 
								 | 
							
								<option>networking.firewall.allowedUDPPorts</option>.  Also of
							 | 
						||
| 
								 | 
							
								interest is
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<programlisting>
							 | 
						||
| 
								 | 
							
								networking.firewall.allowPing = true;
							 | 
						||
| 
								 | 
							
								</programlisting>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								to allow the machine to respond to ping requests.  (ICMPv6 pings are
							 | 
						||
| 
								 | 
							
								always allowed.)</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 |