[Postfix-es] Spam por formulario web

Gorka gorkapostfix en yahoo.es
Mar Mayo 15 10:46:27 CEST 2007


 

> -----Mensaje original-----
> De: postfix-es-bounces en lists.wl0.org 
> [mailto:postfix-es-bounces en lists.wl0.org] En nombre de Jorge 
> Armando Medina
> Enviado el: martes, 15 de mayo de 2007 2:24
> Para: postfix-es en lists.wl0.org
> Asunto: Re: [Postfix-es] Spam por formulario web
> 
> On Monday 14 May 2007 16:43:38 jmas wrote:
> > Buenas lista, me he dado cuenta de que mi servidor está 
> enviando spam, 
> > y estoy practicamente seguro que es a través de un 
> formulario web.  De 
> > entrada, estoy quitando el formulario web, espero que con eso tenga 
> > suficiente.  Pero mi duda es?, donde debería corregir esto?.  Es un 
> > error de configuración de mi servidor o es un error de 
> programación en 
> > PHP.
> 
> En tu caso con formas web el metodo de envio es definido 
> dependiendo de la funcion que se use en PHP, yo siempre trato 
> de usar Pear-Mail para usar smtp-auth en las formas, pero 
> mucha gente simplemente usa mail() y esta funcion hace uso 
> del comando /usr/bin/sendmail por lo el servicio «pickup» es 
> quien envia el correo, en este caso obedece las restricciones 
> para localhost,
> 
> algo como 
> 
> smtpd_recipient_restrictions = permit_mynetwors
> 
> en este caso no hay mucho que filtrar si permites todo lo del 
> localhost, entonces o arreglas tus php formas para prevenir 
> injeccion smtp o bloqueas el usuario que ejecuta tu servidor web,
> 
> https://help.webstrikesolutions.com/index.php?_m=knowledgebase
> &_a=viewarticle&kbarticleid=130&nav=0
> 
> en esa liga hay algo de informacion acerca de injeccion smtp 
> en formas web, y algo basico para prevenirlo.
> 
> aqui algo mas
> 
> http://www.nyphp.org/phundamentals/email_header_injection.php
> 
> Si no quieres permitir que ciertos users como el usuario que 
> ejeucte apache envie correo puedes hacer algo asi:
> 
> Para Postfix 2.2 o mas nuevo:
> 
> /etc/postfix/main.cf:
>     authorized_submit_users = !www, static:all
> 
> 
> >
> > Estoy usando ubuntu 6.06.1 LTS, postfix 2.2.10, sasl y 
> squirrel mail.
> >
> > Gracias por sus opiniones.
> >
> > Soy nuevo en la lista, y no sé si los siguientes datos 
> debería postearlos:
> >
> > Uno de los muchos mails en el mail.log:
> > from=<www-data en biblioteca>, size=11549, nrcpt=50 (queue 
> active) May 14 
> > 06:33:45 nombre_host postfix/qmgr[23226]: 310BC68CC49:
> > to=<trae en attbi.com>, relay=none, delay=212184, status=deferred 
> > (delivery temporarily suspended: connect to attbi.com[\
> > 208.67.219.130]: Connection refused)
> >
> > #postconf -n
> > alias_database = hash:/etc/aliases
> > alias_maps = hash:/etc/aliases
> > append_dot_mydomain = no
> > biff = no
> > command_directory = /usr/sbin
> > config_directory = /etc/postfix
> > content_filter = smtp-amavis:[127.0.0.1]:10024  daemon_directory = 
> >/usr/lib/postfix  delay_warning_time = 4h  
> disable_vrfy_command = yes  
> >inet_interfaces = all  inet_protocols = all  mailbox_size_limit = 0  
> >mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
> > mydestination = $myhostname, localhost, $mydomain  mydomain = 
> >biblioteca.asuc.edu.gt  myhostname = biblioteca.asuc.edu.gt  
> mynetworks 
> >= 127.0.0.0/8  myorigin = /etc/mailname  recipient_delimiter = +  
> >relayhost =  sender_canonical_maps = 
> hash:/etc/postfix/sender_canonical
> > setgid_group = postdrop
> > smtp_sasl_auth_enable = no
> > smtp_tls_loglevel = 0
> > smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)  
> >smtpd_client_restrictions = permit_sasl_authenticated,
> > check_recipient_access hash:/etc/postfix/acces,	
> check_sender_access
> > hash:/etc/postfix/acces,	reject_unauth_pipelining,	reject
> > smtpd_data_restrictions = reject_unauth_pipelining,        permit
> > smtpd_helo_required = yes
> > smtpd_recipient_restrictions = reject_invalid_hostname,
> > reject_non_fqdn_hostname,        reject_non_fqdn_sender,
> > reject_non_fqdn_recipient,        reject_unknown_sender_domain,
> > reject_unknown_recipient_domain,	permit_mynetworks,	
> permit_sasl_authenticat
> >ed,	reject_unauth_destination,	check_recipient_access
> > pcre:/etc/postfix/recipient_checks.pcre,	check_recipient_access
> > hash:/etc/postfix/acces        check_helo_access
> > hash:/etc/postfix/helo_checks,	check_sender_access
> > hash:/etc/postfix/acces        reject_rbl_client relays.ordb.org,
> >   reject_unknown_client,	permit
> > smtpd_sasl_auth_enable = yes
> > smtpd_sasl_local_domain = biblioteca
> > smtpd_sasl_security_options = noanonymous  
> strict_rfc821_envelopes = 
> >yes
> >
> >
> > *********Código de php (solo por referencia)  mail.php  <?php
> >         $nombre= $HTTP_POST_VARS["Nombre"];
> >         $email= $HTTP_POST_VARS["Email"];
> >         $mensaje= $HTTP_POST_VARS["Mensaje"];
> >         $estado = 0;
> >         $todo = "Mensaje de: ".$nombre."\nEmail: 
> ".$email."\n\n".$mensaje;
> >         if (mail("webmaster en bibliteca.asuc.edu.gt","Mensaje de  
> >Comentario",$todo,"From:".$email."\nReply_TO:webmaster en biblio
> teca.asuc.edu.
> >gt\nX-Mailer:PHP/" . phpversion()))
> >                 //echo "mensaje enviado con exito 2";
> >                 $estado = 1;
> >         else
> >                 //echo "mensaje no enviado 2";
> >                 $estado = 0;
> > ?>
> > ...

Hola. A mí me pasó lo mismo hace poco. Finalmente lo que hice fue comprobar
que mi función era llamada desde mi web (y no desde cualquier otro sitio).
Hay variables PHP con las que puedes controlar la procedencia de una
petición web. No lo recuerdo de memoria, pero busca algo así como REFERER. 
Espero que te sirva. Un saludo.



Más información sobre la lista de distribución Postfix-es