Rich Kulawiec on 21 Oct 2016 10:58:22 -0700

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] spamassassin help: create a rule to score by sender TLD

On Wed, Oct 19, 2016 at 01:30:37PM +0200, ac wrote:
> funny. but it proves my point exactly.
> no I am sending from a well known and maintained ipv4 space, from a
> reputable .com mail server... that is blacklisted exactly nowhere -
> anytime in the past ten+ years
> and you are not receiving my email...
> imagine you relied on your email as a business tool (to buy food)
> you would be screwed.

No, it doesn't prove your point.  Let me try to correct some of your
misconceptions about how email and the Internet work (or don't).

With very few exceptions, nobody is obligated to furnish services to
anybody.  (The exceptions are things like (1) government entities required
to furnish services to citizens and (2) people who have contractual
agreements to do so.)  We *mostly* do so because the Internet works
best via cooperation.

And for many years, that cooperation worked beautifully.  We all took
care of our own operations *and* we took care to make sure that what
we were doing didn't have a negative effect on others.  (And when it
did?  We fixed it and apologized and made sure it didn't happen again.)

But that was a long time ago.  It's all different now.  It's quite routine
for large operations to be systemic, chronic sources of abuse and attacks,
sometimes on a massive basis.  Sometimes this is because the people running
those are malicious.  Sometimes it's because they're incompetent.  But
whatever the cause, it still has to be dealt with.  With that in mind,
let me quote one of the best things ever said on NANOG:

	If you give people the means to hurt you, and they do it, and
	you take no action except to continue giving them the means to
	hurt you, and they take no action except to keep hurting you,
	then one of the ways you can describe the situation is "it isn't
	scaling well".  --- Paul Vixie

For a number of years, it was possible to adequately defend mail systems
by enumerating the addresses, domains, network allocations, etc. from
which SMTP abuse emanated and blocking those.  That's because the number
of benign sources greatly outnumbered the malicious ones, and thus it
was reasonable to try this approach.

But it's not reasonable any more, because that underlying assumption
(goodness >> badness) is no longer true.  Not even close.

Thanks to a combination of factors, including botnets, senseless
proliferation of TLDs, hijacked networks, negligently-run cloud
operations, and other things, it's less reasonable every day.  Sad,
unfortunate, annoying, inconvenient...but true.  And not only have
the attack/abuses become far more numerous, they've become much
more virulent and much more capable of inflicting damage.  Anyone
who reads full-disclosure or breachexchange or any of the numerous
mailing lists/web sites cataloging the ongoing litany of massive
security failures knows this because they get new lessons in it all
day, every day.  And email-borne attacks are a big part of that.

So one of the things that anyone who runs an email operation of any
size/diversity and *actually pays attention to their logs* will notice
is that the amount of badness now greatly exceeds the amount of goodness.
For example, at this particular domain on these particular servers,
inbound traffic is about 95% to 98% badness depending on the metrics used.

	[ This also true, by the way, of other services.  It's no
	longer reasonable to leave, let's say, SSH service open to
	the world and then try to reactively block hosts that attack it.
	That is now a deprecated approach in all but a very few use
	cases.  A far better approach is to block *everything* and
	then only permit connections originating from the places that
	real live actual legitimate connections will originate.  This
	is facilitated by using a decent firewall -- like "pf" -- and
	by using network allocations -- like those at

	Or as I recently put it to someone, "Why are your logs overflowing
	with SSH attempts originating in China when, in the entire history
	of your operation, nobody has ever actually logged in from there?"

	Yes, this is more work.  But provided you use the right tools,
	provided you use revision control, and provided you pay attention
	to your own logs, it's really not that hard.  I know, I've done
	it many times many different ways for many years.

	Or you can spend a small fortune in time and money and energy
	doing pointless SIEM on things that you would never even have
	seen had you done something sensible like "drop all packets
	from Chinese IP space with destination port 22 because nobody
	is ever going to log in from there".

	Default permit as a security strategy is dead.  Evolve or perish. ]

Thus "might someone with a domain in .me want to send me email one day?"
is no longer the correct question.  The correct question is "do I care
to arrange things so that they can be successful?" and my answer is "no,
probably not".  It's not about you.  It's about what I want.  I can
deny you SMTP service because you have a .me domain or the sending IP
address is an even number or because it's Friday and I felt like it.
You don't get a vote because it's not your service.

Of course I don't recommend being arbitrary and capricious: that would
be foolish.  I made the decision to block .me based on a rather large
amount of data, including detailed logfile analysis spanning a number
of years on a number of diverse mail servers *and* the data I maintain as
part of an anti-spam research project that covers well over 100M domains.

Yes, that might one day have some possible negative consequence for me
or for other people with addresses in this domain.  I'm okay with that,
and it's *my* decision to be okay/not-okay with that because I run it.
Again: you don't get a vote.  You are free to run *your* services
*your* way and block .ru or everyone with a "j" in their address or
block nobody or whatever you want.  And I don't get a vote about that.

Shifting gears slightly:

One of things that lots of people need to get past is that refusing
an email message is a horribly bad insurmountably bad heinously bad
thing.  It's not, provide (a) you do it properly (b) you do it
consistently (c) you do it noisily.  "Properly" means with a suitable
SMTP 5xx response and hopefully with an error message that says
something useful.  (Although some horrible mail systems, like Exchange,
are known to mangle those error messages, thereby destroying their
usefulness.)  "Consistently" means don't accept a message and then
deny another one an hour apart.  "Noisily" means don't just accept
the message and then silently discard it.  These things are important
because *if* it's a mistake, these maximize the probability of
someone noticing it.

And if it's a mistake, so what?  Senders receive a response that makes
it abundantly clear why their message was refused and how they can
report it (if they think that rejection was in error).  They might
choose to do that, they might not: their call.  I think if they're
sufficiently interested in sending email they probably will.
And if they're not?  Almost never worth worrying about.

	[ Side note: in addition to providing a very clear, very
	easy way for senders to report suspected FPs, I also do
	periodic log analysis to look for FPs.  I recommend that
	for everyone: yeah, it's after-the-fact, but of course
	there are no logs to analyze before-the-fact.  This isn't
	a panacea by any means, but I think it's due diligence
	and it's often quite informative. ]

There is far too much pointless hand-wringing over false positives
(real and/or perceived).  That energy is far better invested in
log analysis (as I've repeatedly emphasized in this message and
elsewhere) because unless you have a detailed understanding of
what your mail system is doing (or isn't) you're simply not in
a position to decide how to change its behavior.

Moreover, the issues arising from false positives are dwarfed by all
the other issues.  Read the nanog or mailop or outages or other
mailing lists for a few years, and keep track of the number of
incidents involving mail disappearing into blackholes or mass
mail account compromises or mail being refused (rather than deferred)
because of DNS hiccups or unannounced deployment of not-ready-for-prime-time
measures or or or...

	[ While I was composing this message, a timely thread
	on nanog appeared discussing yet another serious DDoS attack.
	That single attack will probably disrupt far more email than all
	of our combined false positives for the year.  Or recall
	this little gem:

	Yahoo breaks every mailing list in the world including the IETF's

	There were probably more FPs generated by that bonehead move than
	any of our mail servers will produce during their lifetime. ]

This is not to say that FPs are never a problem.  Yeah, sometimes
they are.  But compared to all this other stuff, they're really
rather insignificant.  We have much larger fish to fry.  So my advice
to everyone is -- as I said above -- make sure you do refusals
properly and then *don't worry about it*.  Soon enough, any mistakes
you've made will become readily apparent and you can fix them.

Hopefully you'll also learn from them. ;)

And if you have users (other than yourself): abandon default permit. [1]
It's no longer viable.   Carefully answer the question "where do I
really need/want mail from?" and then implement it.  Don't hesitate
to block 37 countries or 281 TLDs if that's what *your* answer indicates
will work for *you*.  Because otherwise you're in the position of my
client (see above) watching the logs scroll by too fast to read,
wasting resources on a problem that can be solved in 60 seconds with
a single firewall rule and a list of allocations in CIDR format.

Or worse, you will be in the positions of other clients who were much
too worried about false positive and far too blase' about the risks
of permitting email from all kinds of dubious sources...until the
day they were burned by it, and it cost them a thousand times more
than any imaginable FP ever could.  So if my recommendations seem
draconian: yeah, they are.  I think it's a better alternative than
volunteering to be the next object lesson.

I don't like that it's come to this.  I argued vociferously against
allowing this to come to pass, but I didn't win that argument.  Oh well.
So now that it's reality, there's no point in denying it or pretending
things are otherwise.  Competent email system defense is now based on
an aggressive default-deny strategy grounded in the operational requirements
of receivers -- not senders.


[1] I have to give a good deal of credit to Marcus Ranum, for writing
the single best thing on security I've ever read (and I've read *a lot*):

	The Six Dumbest Ideas in Computer Security

Dumb idea #1: default permit.

Philadelphia Linux Users Group         --
Announcements -
General Discussion  --