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: 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.