124 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
<HTML>
 | 
						|
<!-- SECTION: Getting Started -->
 | 
						|
<HEAD>
 | 
						|
	<TITLE>Server Security</TITLE>
 | 
						|
	<LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
 | 
						|
</HEAD>
 | 
						|
<BODY>
 | 
						|
 | 
						|
<H1 CLASS="title">Server Security</H1>
 | 
						|
 | 
						|
<P>In the default "standalone" configuration, there are few
 | 
						|
potential security risks - the CUPS server does not accept remote
 | 
						|
connections, and only accepts shared printer information from the
 | 
						|
local subnet. When you share printers and/or enable remote
 | 
						|
administration, you expose your system to potential unauthorized
 | 
						|
access. This help page provides an analysis of possible CUPS
 | 
						|
security concerns and describes how to better secure your
 | 
						|
server.</P>
 | 
						|
 | 
						|
<H2 CLASS="title"><A NAME="AUTHENTICATION">Authentication Issues</A></H2>
 | 
						|
 | 
						|
<P>When you enable remote administration, the server will use Basic authentication for administration tasks. The current CUPS server supports Basic, Kerberos, and local certificate authentication:</P>
 | 
						|
 | 
						|
<OL>
 | 
						|
 | 
						|
	<LI>Basic authentication essentially places the clear
 | 
						|
	text of the username and password on the network.
 | 
						|
 | 
						|
	<P>Since CUPS uses the system username and password
 | 
						|
	account information, the authentication information could
 | 
						|
	be used to gain access to possibly privileged accounts on
 | 
						|
	the server.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> Enable encryption to hide the
 | 
						|
	username and password information - this is the default on
 | 
						|
	macOS and systems with GNU TLS installed.</P></LI>
 | 
						|
 | 
						|
	<LI>Local certificate authentication passes 128-bit
 | 
						|
	"certificates" that identify an authenticated user.
 | 
						|
	Certificates are created on-the-fly from random data and
 | 
						|
	stored in files under <VAR>/var/run/cups/certs</VAR>.
 | 
						|
	They have restricted read permissions: root +
 | 
						|
	system-group(s) for the root certificate, and lp + lp
 | 
						|
	for CGI certificates.
 | 
						|
 | 
						|
	<P>Because certificates are only available on the local
 | 
						|
	system, the CUPS server does not accept local
 | 
						|
	authentication unless the client is connected to the
 | 
						|
	loopback interface (127.0.0.1 or ::1) or domain
 | 
						|
	socket.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> Ensure that unauthorized users
 | 
						|
	are not added to the system group(s).</P></LI>
 | 
						|
 | 
						|
</OL>
 | 
						|
 | 
						|
<H2 CLASS="title"><A NAME="DOS">Denial of Service Attacks</A></H2>
 | 
						|
 | 
						|
<P>When printer sharing or remote administration is enabled, the
 | 
						|
CUPS server, like all Internet services, is vulnerable to a
 | 
						|
variety of denial of service attacks:</P>
 | 
						|
 | 
						|
<OL>
 | 
						|
 | 
						|
	<LI>Establishing multiple connections to the server until
 | 
						|
	the server will accept no more.
 | 
						|
 | 
						|
	<P>This cannot be protected against by any known
 | 
						|
	software. The <CODE>MaxClientsPerHost</CODE> directive
 | 
						|
	can be used to configure CUPS to limit the number of
 | 
						|
	connections allowed from a single host, however that does
 | 
						|
	not prevent a distributed attack.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> Limit access to trusted systems
 | 
						|
	and networks.</P></LI>
 | 
						|
 | 
						|
	<LI>Repeatedly opening and closing connections to the
 | 
						|
	server as fast as possible.
 | 
						|
 | 
						|
	<P>There is no easy way of protecting against this in the
 | 
						|
	CUPS software. If the attack is coming from outside the
 | 
						|
	local network, it may be possible to filter such an
 | 
						|
	attack. However, once the connection request has been
 | 
						|
	received by the server it must at least accept the
 | 
						|
	connection to find out who is connecting.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> None.</P></LI>
 | 
						|
 | 
						|
	<LI>Sending partial IPP requests; specifically, sending
 | 
						|
	part of an attribute value and then stopping
 | 
						|
	transmission.
 | 
						|
 | 
						|
	<P>The current code will wait up to 1 second before
 | 
						|
	timing out the partial value and closing the connection.
 | 
						|
	This will slow the server responses to valid requests and
 | 
						|
	may lead to dropped browsing packets, but will otherwise
 | 
						|
	not affect the operation of the server.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> Block IPP packets from foreign
 | 
						|
	or untrusted networks using a router or
 | 
						|
	firewall.</P></LI>
 | 
						|
 | 
						|
	<LI>Sending large/long print jobs to printers, preventing
 | 
						|
	other users from printing.
 | 
						|
 | 
						|
	<P>There are limited facilities for protecting against
 | 
						|
	large print jobs (the <CODE>MaxRequestSize</CODE>
 | 
						|
	attribute), however this will not protect printers from
 | 
						|
	malicious users and print files that generate hundreds or
 | 
						|
	thousands of pages.</P>
 | 
						|
 | 
						|
	<P><B>Recommendation:</B> Restrict printer access to
 | 
						|
	known hosts or networks, and add user-level access
 | 
						|
	controls as needed for expensive printers.</P></LI>
 | 
						|
 | 
						|
</OL>
 | 
						|
 | 
						|
<H2 CLASS="title"><A NAME="ENCRYPTION">Encryption Issues</A></H2>
 | 
						|
 | 
						|
<P>CUPS supports 128-bit TLS encryption of network connections via the GNU TLS library, macOS Security framework, and Windows Schannel APIs. Secure deployment of TLS depends on proper certificate management and software maintenance.</P>
 | 
						|
 | 
						|
</BODY>
 | 
						|
</HTML>
 |