web-dev-qa-db-fra.com

Faire de postfix Rejeter Entrant Email Spoofed à partir de mon propre domaine

J'ai un serveur postfix correctement configuré pour permettre à mon courrier entrant à mon domaine et d'exiger l'authentification afin d'envoyer un courrier à tout autre réseau.

Un grand nombre de spams que je reçois a une adresse forgée "de" des utilisateurs inexistants de mon propre domaine. SPF pourrait arrêter cela et j'ai configuré SPF dans mon DNS, mais je ne suis pas sûr de vouloir aller la voie de bloquer complètement tout le SPF échoue au niveau SMTP.

Existe-t-il un élément de configuration postfix rapide que je peux ajouter qui rejeterait le courrier électronique entrant qui vient de Mydomain et n'était pas authentifié?

Pour être très précis, c'est mon postfix Conf:

smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    reject_rhsbl_sender dbl.spamhaus.org,
    permit
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname

pourtant, il est toujours possible de se connecter au port 25 et

MAIL FROM: [email protected] RCPT TO: [email protected] Sans authentification.

7
dataless

Si vous activez le service de soumission de message de Postfix (sur le port 587), vous pouvez séparer "Soumission de message du relais de message, permettant à chaque service de fonctionner en fonction de ses propres règles (pour la sécurité, la stratégie, etc.)" ( RFC 4409 ).

Dans cette configuration, étant donné que les utilisateurs légitimes doivent s'authentifier pour utiliser le port 587 pour la soumission de message, vous pouvez refuser en toute sécurité le courrier spoofé et non authentifié soumis via le port 25.

Pour activer la soumission de message (SASL-authentifié) sur le port 587, ajoutez une section comme ci-après au Master.cf de Postfix:

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

( Source )

Ensuite, créez une table d'accès postfix (sur/etc/postfix/accès) spécifiant comment Postfix doit répondre à certains expéditeurs:

[email protected]    OK
[email protected]            HOLD
mydomain.com                               REJECT

Voir la page access Pour plus de détails.

Run postmap sur le fichier d'accès (pour créer une table de recherche indexée):

postmap /etc/postfix/access

Ajouter appropriée restrictions de l'expéditeur à main.cf:

smtpd_sender_restrictions = permit_sasl_authenticated,
        check_sender_access hash:/etc/postfix/access

Enfin, rechargez la nouvelle configuration. Sur les systèmes basés sur Debian, cela est fait en utilisant:

Sudo service postfix reload
7
ThatGuy

Existe-t-il un élément de configuration postfix rapide que je peux ajouter qui rejeterait le courrier électronique entrant qui vient de Mydomain et n'était pas authentifié?

Pas si rapide, mais vous pouvez implémenter une stratégie simple SMTPD et choisir le sender et sasl_username Et vérifiez si le premier provient de votre domaine et que le second existe et vient également de votre domaine, le cas échéant, retour DUNNO, sinon, REJECT. De cette façon, vous vous assurez que pour tout courrier entrant, s'il s'agit de vos utilisateurs, il doit être authentifié SASL.

Pour être très précis, c'est mon postfix Conf:

Il y a quelques éléments supplémentaires que vous pouvez ajouter à votre smtpd_recipient_restrictions Politique d'essayer d'arrêter le spam et d'améliorer votre sécurité:

smtpd_sender_restrictions =
    permit_mynetworks
    reject_unknown_sender_domain
    reject_sender_login_mismatch
    reject_unauth_pipelining
    reject_non_fqdn_sender
    permit

Quels moyens peuvent être trouvés dans la page Postfix Configuration Paramètres page.

Vous voudrez peut-être inclure certains éléments supplémentaires pour arrêter le spam:

  • SPF est l'un d'entre eux, mais je suis d'accord que le blocage de tout test de non-correspondance est assez lourd que certains listes de messagerie mal implémentés envoient des courriers électroniques avec l'adresse de l'expéditeur d'origine de leurs serveurs afin qu'ils échouent.

  • DKIM est également très puissant (check OpenDKIM).

  • SpamAssassin pourrait être très utile dans ce cas. Il ne bloquera pas le courrier, mais il sera ajouté une en-tête de spam et, par conséquent, être classée.

  • Vous n'avez pas fourni de message postfix d'une de ces tentatives spoofed, mais vous pouvez vérifier s'ils proviennent de la même adresse IP ou du moins une adresse CIDR concrete et de les mettre dans une liste noire avec le smtpd_client_restrictions Paramètre.

  • Même peut être appliqué sur le HELO/EHLO message et pourrait être placé dans smtpd_helo_restrictions.

Comme vous pouvez le constater, vous pouvez peut-être trouver une combinaison d'entre eux qui convient à votre cas et arrêtez toutes les tentatives de spoofed.

8
nKn

J'ai trouvé une façon de le résoudre, bien que je suis curieux si quelqu'un a une réponse plus directe/simple.

J'ai utilisé le reject_sender_login_mismatch Réglage de sorte que si Postfix puisse trouver un mappage de l'adresse "de" à un nom d'utilisateur, il nécessite que ce nom d'utilisateur soit authentifié.

Ensuite, la tâche consiste à créer une carte qui gère toutes les adresses @MyDomain, mais qui permet correctement aux utilisateurs locaux envoi de courrier pour leur adresse.

Sur ma configuration particulière, j'utilise

virtual_alias_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf

pour cartographier les adresses aux utilisateurs réels.

J'ai ajouté une autre base de données d'adresse pcre:/etc/postfix/db-sender-logins-fallback.cf qui a une regex de tous mes domaines à mon utilisateur principal. Alors maintenant, alors combiné:

smtpd_sender_login_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf pcre:/etc/postfix/db-sender-logins-fallback.cf
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

chaque alias ne peut être envoyé de l'utilisateur qu'à partir de l'utilisateur qui est acheminé et que toutes les autres adresses de mes domaines ne peuvent être envoyées que de mon compte d'utilisateur principal, et donc tout spammer qui tente d'envoyer de: Mon domaine échouera parce qu'ils ne sont pas enregistrés en tant que moi.

Bien que cela soit une bonne amélioration de mon configuration de messagerie (les utilisateurs locaux ne peuvent plus s'impressionner l'autre chose), il pourrait être trop compliqué pour les personnes ayant des configurations de compte d'utilisateur très avancées. Je suis toujours curieux s'il y a un moyen de dire "pour que ces domaines à partir de :, utilisateur doivent être connectés".

1
dataless

Ma section d'authentification Conf. Fonctionne bien:

smtpd_sender_restrictions =
 reject_non_fqdn_sender
 reject_sender_login_mismatch
 reject_unknown_sender_domain
 reject_unauth_pipelining
 reject_non_fqdn_sender
 reject_unlisted_sender
 reject_unverified_sender
 permit_sasl_authenticated
 reject_unknown_reverse_client_hostname
 reject_unknown_client_hostname

smtpd_recipient_restrictions =
 permit_sasl_authenticated
 reject_unauth_destination
 reject_rbl_client            zen.spamhaus.org
 reject_rhsbl_reverse_client  dbl.spamhaus.org
 reject_rhsbl_helo            dbl.spamhaus.org
 reject_rhsbl_sender          dbl.spamhaus.org

smtpd_relay_restrictions =
 permit_sasl_authenticated
 reject_unauth_destination

smtpd_helo_required = yes
smtpd_helo_restrictions =
 permit_sasl_authenticated
 reject_invalid_helo_hostname
 reject_non_fqdn_helo_hostname
 reject_unknown_helo_hostname
0
Daniel Moreno