Product SiteDocumentation Site

5.5. Tornando o servidor de impressão mais seguro (sobre o lpd e lprng)

Imagine, você chegando ao trabalho e a impressora jogando fora uma quantidade impressionante de papel porque alguém esta fazendo um DoS em seu daemon de impressão. Desagradável, não é?
Em qualquer arquitetura de impressão do unix, deverá existir uma forma de enviar os dados do cliente para o servidor de impressão. No tradicional lpr e lp, os comandos do cliente copiam ou fazem um link simbólico de dados no diretório de spool (este é o motivo porque estes programas normalmente são SUID ou SGID).
Para evitar quaisquer anormalidade, você deverá manter o seu servidor de impressão especialmente seguro. Isto significa que precisa configurar seu serviço de impressão de forma que só permita conexões de um conjunto de máquinas confiáveis. Para fazer isto, adicione os servidores que deseja permitir a impressão em seu arquivo /etc/hosts.lpd.
No entanto, até mesmo se fizer isto, o lpr aceitará conexões de entrada na porta 515 de qualquer interface. Você deverá considerar fazer um firewall das conexões de redes/hosts que não tenham permissão de impressão (o daemon lpr não tem a possibilidade de aceitar conexões em somente um determinado endereço IP).
O Lprng deverá ser o preferido em cima do lpr pois ele pode ser configurado para fazer controle de acesso por IP. E você poderá especificar qual interface escutará por conexões (embora algumas vezes pareça um pouco estranho).
Se utilizar uma impressora em seu sistema, mas somente localmente, você não desejará compartilhar este serviço através de uma rede. Você poderá considerar o uso de outros sistemas de impressão, tal como o fornecido pelo pacote cups ou pelo http://pdq.sourceforge.net/ que é baseado em permissões do usuário no dispositivo /dev/lp0.
No cups, os dados de impressão são transferidos ao servidores via protocolo http. Isto significa que o programa cliente não precisa de qualquer privilégio especial, mas requer que o servidor escute em uma porta, em algum lugar.
No entanto, se quiser usar o cups, mas somente localmente, você poderá configura-lo para escutar na interface loopback alterando o arquivo de configuração /etc/cups/cupsd.conf:
Listen 127.0.0.1:631
Existem muitas outras opções de segurança como permitir ou bloquear redes e máquinas neste arquivo de configuração. No entanto, se você não precisar delas, será melhor que limite simplesmente a porta onde o programa espera por conexões. O Cups também serve documentações através da porta HTTP. Se não quiser revelar informações úteis em potencial para invasores externos também adicione:
<Location />
  Order Deny,Allow
   Deny From All
    Allow From 127.0.0.1
</Locationi>
Este arquivo de configuração pode ser modificado para adicionar algumas outras características incluindo certificados SSL/TLS e criptografia. Os manuais estão disponíveis em http://localhost:631/ ou em cups.org.
FIXME: Adicionar mais conteúdo (o artigo em http://www.rootprompt.org fornecendo visões mais interessantes).
FIXME: Verificar se o PDG está disponível no Debian, e se estiver, sugerir como sistema de impressão preferido.
FIXME: Verificar se o Farmer/Wietse possui um substituto para daemon de impressão e se está disponível no Debian.