NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
12 de dezembro de 1997 | volume 1, número 7

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Como Evitar os Famigerados Spams de Mail

Antonio Paulo Salgado Forster <>

Rede Nacional de Ensino e Pesquisa (RNP)

Introdução
Compilação do Sendmail 8.8
Configuração
Configuração do Sendmail.CF
Execução
Cuidados com a segurança
Trouble-Shooting
Conclusão
Referências bibliográficas
Sites relacionados

Suponha que um certo usuário resolva fazer propaganda de seu novo produto na Web através de e-mail e, por acaso, escolha seu site para fazer a distribuição das mensagens. De repente, verificando os logs do sendmail, você percebe que seu mailserver enviou 50.000 e-mails aos quatro cantos do mundo, sendo que a origem dessas mensagens é algum endereço desconhecido ou inexistente.

O que fazer diante do ocorrido? Para dizer a verdade, praticamente nada. O que pode ser feito é prevenir-se para que isso não aconteça mais. Seu sistema foi usado como relay para distribuição de Unsolicited Commercial Email (UCE). As conseqüências deste fato podem ser várias: desde reclamações informais, até sites se recusando a receber mensagens de seu domínio.

Essa suposição, no entanto, é ou foi realidade para muitos administradores de rede ao redor do mundo.

^

Introdução

Como muitos sabem, o sendmail, devido às informações que ele pode fornecer e a sua complexidade - que conseqüentemente implica em problemas escondidos - sempre foi um pacote razoavelmente visado por crackers.

A grande maioria dos usuários da Internet, senão todos, já recebeu propagandas de produtos ou as chamadas correntes via e-mail. Os famosos bulk mail, Unsolicited Commercial E-mail (UCE) ou junk mail são motivos de preocupação para muitos, devido a seu caráter anti-ético, e devido aos recursos por eles disperdiçados.

O que fazer diante desses problemas? Existem algumas formas de combater o uso inadequado dos serviços de seu mailserver, e é nisto que se baseia este artigo. Apresentaremos o processo completo de instalação de um mailserver (sendmail V8), algumas alterações que tornarão seu servidor um pouco mais seguro, além de dicas de manutenção.

^

Compilação do Sendmail 8.8

Para explanação no artigo, escolhemos o sendmail 8.8.8, última versão disponível no momento. O pacote pode ser obtido em vários sites via ftp, sendo um deles o NetTools . Outro pacote que será utilizado será o Claus Aßmann's check_* routines , um pacote com regras adicionais ao sendmail.

Tendo descompactado o pacote do sendmail 8.8.8, a compilação e a instalação dão-se de forma bem simples, bastando um comando para cada:

# cd sendmail-8.8.8/src
# sh makesendmail
# sh makesendmail install


O script makesendmail, através do comando uname, seleciona o Makefile a ser usado de acordo com o sistema operacional da máquina. Caso haja algum problema durante a compilação, é interessante verificar o tipo de banco de dados que está sendo utilizado. O sendmail aceita trabalhar com dois tipos de bancos de dados: new DBM (NDBM) e o novo banco de dados de Berkeley (NEWDB); além de trabalhar, também, com bancos de dados remotos, como o NIS ou NIS+. Outro ponto que deve ser verificado é o formatador de textos para as páginas man, pois alguns sistemas utilizam o groff, enquanto outros utilizam nroff.

^

Configuração

O sendmail é um software que depende de vários arquivos de configuração para que seja executado perfeitamente. São eles:


Os arquivos descritos abaixo não fazem parte da distribuição normal do sendmail, mas serão utilizados pelas novas regras inseridas pelo pacote check_*. É importante frisar que, dependendo de como o administrador queira configurar seu servidor, nem todos os arquivos abaixo serão utilizados. Neste artigo, trataremos de uma configuração utilizando os recursos de Anti-Spam e Anti-Relay.

Existem também outras versões do check_* mais novas, mas decidimos não abordá-las por dependerem da instalação de bibliotecas do NDBM, o que deixaria o assunto um tanto longo para um único artigo.

^

Configuração do Sendmail.CF

O arquivo sendmail.cf, gerado da forma citada na seção anterior, é bastante genérico, e para que sua configuração possa ser considerada ideal, algumas alterações são necessárias para sua "customização". Estas mesmas alterações serão descritas nesta seção.

^

Execução

A execução do sendmail é bastante simples, sendo necessário apenas uma linha de comando com poucos argumentos. Para o boot da máquina, um pequeno script colocado em /etc/rc (BSD), ou em /etc/rc2.d (System V *) cuida da inicialização do serviço, como veremos no exemplo a seguir. A linha destacada é a responsável pela inicialização do serviço, e pode ser executada em uma linha de comando como root.

if [ -f  /usr/sbin/sendmail -a -f  /etc/sendmail.cf]; then
      (cd /var/spool/mqueue; rm -f [lnx]f*)
      /usr/sbin/sendmail -bd -q30 &
      echo -n 'sendmail' > /dev/console

* No caso do System V, todos os scripts a serem executados durante o boot devem, obrigatoriamente, ser iniciados pela letra "S".

Um cuidado especial deve ser dado aos PATHs pois, dependendo do sistema operacional, eles podem ser alterados. Como exemplo, podemos citar que, no Solaris, o PATH /usr/sbin/sendmail deveria ser alterado para /usr/lib/sendmail.

O sendmail também pode ser utilizado para o envio de mensagens, como um mailer comum do UNIX. Isto demonstra a versatilidade do software, que pode ter muitas de suas funções alteradas em sua chamada na linha de comando:

-b: Modo de operação
d: Entra em execução como daemon
i: Inicialização do banco de dados de aliases (exatamente o mesmo que newaliases)
p: Exibe a fila de mensagens (o mesmo que mailq)
t: Modo de teste: somente resolução de endereços
v: Executa o comando vrfy do SMTP para os endereços dados como próximos argumentos
s: Recebe mensagem SMTP a partir da entrada padrão, envia-a, e termina a execução
-v: Verbose
-d: Mode de debug
-I: O mesmo que -bi
-C: Indica PATH para arquivo de configuração
-n: Desabilita o uso de aliases
-o: Ativa uma Option da configuração. Ex.: -oQ/tmp utilizará o diretório "/tmp" como o diretório da fila de mensagens
-q: Processa a fila de mensagens. Ex.: -q30m processa a fila de 30 em 30 minutos

^

Cuidados com a segurança

O sendmail pode ser uma porta aberta a invasões no caso de uma configuração inadequada. Por ser um processo que é executado com SUID root, trata-se de um alvo primário para ataques que podem render ao invasor um acesso privilegiado ao sistema.

Os maiores problemas, e aqueles que abrem espaço a outros, são relacionados às permissões. Várias das formas de um usuário local conseguir acesso privilegiado ao sistema são através de alterações no sendmail.cf ou outros arquivos de configuração do sendmail. Estes arquivos de configuração devem ter permissões 0644, inclusive arquivos "~/.forward" de usuários e os bancos de dados de aliases (aliases.pag, aliases.dir ou aliases.db). As exceções a essa regra são:

Deve-se tomar bastante cuidado no desenvolvimento de regras de reescritura (Rewriting Rules) que, se mal escritas, podem causar core dump (as regras não passam por nenhum tipo de teste de consistência) e devolver um rootshell ao usuário remoto.

^

Trouble-Shooting

A inclusão das regras anti-relay na configuração do sendmail pode acarretar em alguns problemas, principalmente em máquinas que são responsáveis por listas, ou máquinas que são regularmente utilizadas como relay. Discutiremos abaixo esses dois problemas, considerados os mais comuns.

^

Conclusão

Ao mesmo tempo em que é extremamente versátil, o sendmail pode ser uma ameaça a segurança do sistema se mal utilizado. A cada dia, descobrem-se novas formas de ataque e invasão de sistemas, o que demanda uma constante preocupação por parte dos administradores no sentido de se atualizarem.

Neste artigo, apresentamos alguns procedimentos e dicas para facilitar um pouco a montagem de um servidor de e-mail com um mínimo de segurança, mostrando métodos para combater spamming, além de como evitar que seu mailserver seja usado como relay.

Novas formas de exploração de problemas com e-mail certamente aparecerão e, para combatê-las, o administrador deverá estar ciente de novos métodos de controle e novas tecnologias.

^

Referências bibliográficas

Sendmail
by Bryan Costales with Eric Allman and Neil Rickert
1993, O'Really & Associates, Inc.

^

Sites relacionados

Nettools
Sendmail Home Page
Claus Aßmann's check_* routines

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004