5.5. Rendere sicuri gli accessi alla stampante (specifico per lpd ed lprng)
Immaginate di arrivare al lavoro e trovarvi una montagna di carta uscita dalla stampante perché il demone di stampa ha subito un attacco DoS. Lo trovereste piacevole?
In qualsiasi architettura per la stampa in Unix, ci deve essere un modo per ottenere dal client i dati per il server di stampa. Tradizionalmente, lpr
ed lp
sono i client che si occupano di fornire i comandi per copiare o creare dei link simbolici ai dati contenuti nella directory spool (che è il motivo per il quale usualmente questi programmi sono SUID o SGID).
Per evitare questi problemi, dovreste mantenere il vostro server di stampa particolarmente sicuro. Questo significa necessariamente, configurare il vostro servizio di stampa per far sì che consenta connessioni solamente dai server fidati. In merito a questo, aggiungete i server a cui volete consentire la stampa nel vostro /etc/hosts.lpd
.
In ogni caso, il demone lpr
accetta in ingresso connessioni sulla porta 515 da qualsiasi interfaccia. Dovreste considerare la possibilità di usare un firewall per le connessioni tra la rete e gli host a cui non è consentito stampare (così il demone lpr
può rimanere in attesa solo da determinati indirizzi IP).
Lprng
dovrebbe essere preferito a lpr
visto che può essere configurato per avere il controllo sugli accessi IP. Potete anche specificare quale interfaccia proteggere (sebbene piuttosto bizzarro).
If you are using a printer in your system, but only locally, you will not want to share this service over a network. You can consider using other printing systems, like the one provided by
cups or
http://pdq.sourceforge.net/ which is based on user permissions of the
/dev/lp0
device.
In cups, la stampa dei dati viene trasferita al server mediante il protocollo http. Questo significa che il client non ha bisogno di particolari privilegi, ma richiede che il server sia in ascolto su qualche porta.
Tuttavia, se desiderate usare
cups
in locale potete configurarlo proteggendo l'interfaccia di loopback, modificando il file
/etc/cups/cupsd.conf
:
Listen 127.0.0.1:631
Vi sono molte altre opzioni per la sicurezza simili a quelle contenute nel file di configurazione hosts, che permettono di consentire o negare l'accesso dalla rete. Tuttavia, se non ne avete bisogno, una soluzione migliore potrebbe essere quella di limitare o escludere le connessioni sulle porte in attesa.
Cups
utilizza la porta di comunicazione HTTP, se desiderate non divulgare informazioni potenzialmente utili ad eventuali attaccanti, aggiungete (e chiudete verso l'esterno le porte aperte) anche:
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
This configuration file can be modified to add some more features including SSL/TLS certificates and crypto. The manuals are available at http://localhost:631/ or at
http://cups.org.
FIXME: Controllare se PDG è disponibile in Debian e se lo fosse, suggerirlo come sistema di stampa preferito.
FIXME: Controllare se Farmer/Wietse ha rimpiazzato il demone di stampa e se è disponibile in Debian.