Re: Block certain remote hosts on submission port

2013-08-24 Thread LuKreme

On 22 Aug 2013, at 21:28 , Stan Hoeppner s...@hardwarefreak.com wrote:

 ~$ wget http://ipdeny.com/ipblocks/data/countries/us.zone
 ~$ sed 's/$/   OK/g' us.zone  us.cidr
 ~$ cp us.cidr /etc/postfix
 ~$ postfix reload
 
 and you're off to the races.

Interesting idea. I'm in much the same boat. Although I do have international 
users, they all use webmail to access mail, so I'm interested in trying this.

A couple of questions:

1) I wouldn't think that CIDR list changes very often, but how often should it 
be refreshed?

2) If I did this I also would like to log these rejections to a separate file, 
possible?

Under 2.10, would it make sense to put those restriction in the 
smtpd_relay_restrictions if port 25 is open for connections?

-- 
Rosa sat, so Martin could walk. Martin walked, so Obama could run.
Obama ran, so our children can fly. (paraphrased from NPR)



Re: Block certain remote hosts on submission port

2013-08-24 Thread Stan Hoeppner
On 8/24/2013 1:18 PM, LuKreme wrote:
 
 On 22 Aug 2013, at 21:28 , Stan Hoeppner s...@hardwarefreak.com wrote:
 
 ~$ wget http://ipdeny.com/ipblocks/data/countries/us.zone
 ~$ sed 's/$/   OK/g' us.zone  us.cidr
 ~$ cp us.cidr /etc/postfix
 ~$ postfix reload

 and you're off to the races.
 
 Interesting idea. I'm in much the same boat. Although I do have international 
 users, they all use webmail to access mail, so I'm interested in trying this.

 A couple of questions:
 
 1) I wouldn't think that CIDR list changes very often, but how often should 
 it be refreshed?

How often does APNIC reassign, for example, a /22 from an entity in
Vietnam to one in Japan, if ever?  I don't have the answer to that.  But
this is the only type of situation that would prompt you to refresh, now
that all IPv4 space has been allocated to the RIRs.  We now know every
IP by region, but what country it is assigned in may or may not change
in future.

And BTW, it's better to do this at the firewall if at all practical.

 2) If I did this I also would like to log these rejections to a separate 
 file, possible?

Not directly.  You'd specify a custom reject code then parse your mail
log for that, pipe to another file.  If you do it at the firewall it
would depend on the firewall's features.

 Under 2.10, would it make sense to put those restriction in the 
 smtpd_relay_restrictions if port 25 is open for connections?

In the other half of the instructions I gave, which you cut, I show that
this needs to be done in master.cf.  smtpd_foo_restrictions in main.cf
are global.  You want this restriction only on the submission port, not
the public smtp port.

-- 
Stan



Re: Block certain remote hosts on submission port

2013-08-24 Thread Noel Jones
On 8/24/2013 3:52 PM, Stan Hoeppner wrote:
 On 8/24/2013 1:18 PM, LuKreme wrote:

 On 22 Aug 2013, at 21:28 , Stan Hoeppner s...@hardwarefreak.com wrote:

 ~$ wget http://ipdeny.com/ipblocks/data/countries/us.zone
 ~$ sed 's/$/   OK/g' us.zone  us.cidr
 ~$ cp us.cidr /etc/postfix
 ~$ postfix reload

 and you're off to the races.

...
 
 And BTW, it's better to do this at the firewall if at all practical.

If you do the reject in postfix you'll be able to see the sender
details, which may be valuable for seeing which accounts have been
compromised and/or troubleshooting false positive reports.

All the firewall can show is some IP was blocked.

 
 2) If I did this I also would like to log these rejections to a separate 
 file, possible?
 
 Not directly.  You'd specify a custom reject code then parse your mail
 log for that, pipe to another file.  If you do it at the firewall it
 would depend on the firewall's features.

You can append a wildcard reject AT THE END of the cidr file with a
custom message. That message will be sent to the client and will be
included in your log.

# us cidr table
... everything else
0.0.0.0/0  REJECT submission not allowed from your location geoip


 
 Under 2.10, would it make sense to put those restriction in the 
 smtpd_relay_restrictions if port 25 is open for connections?
 
 In the other half of the instructions I gave, which you cut, I show that
 this needs to be done in master.cf.  smtpd_foo_restrictions in main.cf
 are global.  You want this restriction only on the submission port, not
 the public smtp port.
 


Yes indeed.



  -- Noel Jones


Re: Block certain remote hosts on submission port

2013-08-23 Thread Mikael Bak
On 08/22/2013 01:51 PM, Charles Marcus wrote:
[snip]
 
 The simple fact is, we do not have any users based *anywhere* but the
 US, so, is what is the simplest way to block any/all non-US based client
 connections on my submission port?
 
[snip]

Hi,
Sometimes it seems like a good solution to filter out all countries but
your own.

In fact it's not a good idea at all IMO.

People do travel and they need to read and write email while they are
abroad.
Laptop and/or smartphone users will not like your new restriction policy
when they try to get some work done while visiting a partner company in
Germany.

Use fail2ban as suggested by others.

Mikael



Re: Block certain remote hosts on submission port

2013-08-23 Thread Patrick Lists

On 08/23/2013 12:47 PM, Mikael Bak wrote:
[snip]

In fact it's not a good idea at all IMO.

People do travel and they need to read and write email while they are
abroad.
Laptop and/or smartphone users will not like your new restriction policy
when they try to get some work done while visiting a partner company in
Germany.


Unless they fire up a VPN and still be able to send their email.

Regards,
Patrick


Re: Block certain remote hosts on submission port

2013-08-22 Thread Simon B
On 22 Aug 2013 13:52, Charles Marcus cmar...@media-brokers.com wrote:

 Hi all,

 This isn't about spam, this is about blocking obvious attempts to
hack/connect to my submission port.

 I know and understand the argument against just blanket blocking hosts
based on the country of origin, but I've recently been seeing random
connections on my submission port from hosts @ .ru and .cn domains.

 The simple fact is, we do not have any users based *anywhere* but the US,
so, is what is the simplest way to block any/all non-US based client
connections on my submission port?

 I'd also like to be able to whitelist certain domains, in the rare case
where someone might be on vacation abroad, and when they call me
complaining that they cannot send email, I can see the country they are in
my reject logs and whitelist that country temporarily.

Surely the simplest solution is fail2ban with the false attempts in x
minutes resulting in a 20 minute ban?  This works for me...

Otherwise you'd get more flexibility at the firewall level for geoip
ranges..

Simon


Re: Block certain remote hosts on submission port

2013-08-22 Thread Charles Marcus

On 2013-08-22 8:03 AM, Simon B simon.buongio...@gmail.com wrote:


Surely the simplest solution is fail2ban with the false attempts in x 
minutes resulting in a 20 minute ban?




No for two reasons...

1. Again, we have ZERO users who are outside the US, so why allow 
connections at all?


and

2. I am not currently seeing massive hack/crack attempts from the same 
IP, just random connections from lots of different IP's.


Otherwise you'd get more flexibility at the firewall level for geoip 
ranges..




Actually, yeah, that is probably a better way to do this anyway, seeing 
as we don't need to allow users from anywhere else to connect...


Now to figure out how to log these firewall rejections to a separate log 
file, so I can see them if/when someone complains about not being able 
to connect.


Thanks Simon.

--

Best regards,

*/Charles/*


Re: Block certain remote hosts on submission port

2013-08-22 Thread li...@rhsoft.net

Am 22.08.2013 14:23, schrieb Charles Marcus:
 Now to figure out how to log these firewall rejections to a separate log 
 file, so I can see them if/when someone
 complains about not being able to connect

nothing easier than that

* the first rule logs with rate-control to avoid self-DOS
* the second one rejects
* the same works for any iptables rule (log-line excatly like the other rule, 
different action)

iptables -A INPUT -p tcp --dport 587 -s source-range/ip -m conntrack 
--ctstate NEW -m limit --limit 1/m -j LOG
--log-level debug --log-prefix Firewall: 
iptables -A INPUT -p tcp --dport 587 -s source-range/ip -m conntrack 
--ctstate NEW -j REJECT --reject-with
icmp-admin-prohibited
___

rsyslog.conf *before* all other rules

:msg, contains, Firewall  -/var/log/firewall.log
 ~


Re: Block certain remote hosts on submission port

2013-08-22 Thread Stan Hoeppner
On 8/22/2013 6:51 AM, Charles Marcus wrote:

 The simple fact is, we do not have any users based *anywhere* but the
 US, so, is what is the simplest way to block any/all non-US based client
 connections on my submission port?


Use the us.zone ipdeny file to build a CIDR table to accept any US
client IPs and reject everything else.

http://ipdeny.com/ipblocks/data/countries/us.zone

But not now as it's currently broken.  Already notified the OPs.  Not
sure how this happened.  This is a big deal as automated systems rely on
this data.  I'd think it'll be fixed today, within hours.

Anyway, your solution should be as simple as something like this:

submission inet n  -   -   -   -   smtpd
...
-o smtpd_client_restrictions=check_client_access\
 /etc/postfix/us.cidr, reject

You could do the reverse and reject the rest of the world with your
table, however building an maintaining that CIDR file is a massive PITA.

If you have personnel traveling in other countries they use a VPN client
to get into your network.  That's what roaming VPN clients are for.  You
can setup a FLOSS VPN server for no cost but your labor/learning curve.
 Or simply enable/configure it on your edge router if it has VPN capability.

-- 
Stan



Re: Block certain remote hosts on submission port

2013-08-22 Thread Stan Hoeppner
On 8/22/2013 9:57 AM, Stan Hoeppner wrote:
 On 8/22/2013 6:51 AM, Charles Marcus wrote:
 
 The simple fact is, we do not have any users based *anywhere* but the
 US, so, is what is the simplest way to block any/all non-US based client
 connections on my submission port?
 
 
 Use the us.zone ipdeny file to build a CIDR table to accept any US
 client IPs and reject everything else.
 
 http://ipdeny.com/ipblocks/data/countries/us.zone
 
 But not now as it's currently broken.  

It's fixed now.

 Anyway, your solution should be as simple as something like this:
 
 submission inet n  -   -   -   -   smtpd
   ...
   -o smtpd_client_restrictions=check_client_access\
/etc/postfix/us.cidr, reject

After you modify master.cf as above, do

~$ wget http://ipdeny.com/ipblocks/data/countries/us.zone
~$ sed 's/$/   OK/g' us.zone  us.cidr
~$ cp us.cidr /etc/postfix
~$ postfix reload

and you're off to the races.

-- 
Stan