firewall
12 years agoclassify.m4, functions.m4: Multiple interfaces can have default nets.
Mark Wooding [Sun, 10 Jul 2011 20:42:38 +0000 (21:42 +0100)]
classify.m4, functions.m4: Multiple interfaces can have default nets.

Following on from the last change: if a net can be reachable through
several interfaces, then logically the default net might be reachable
through several interfaces too.  Therefore, we must be able to cope with
this situation.

12 years agofunctions.m4: Allow multiple interfaces to be defined by defiface.
Mark Wooding [Sun, 10 Jul 2011 20:35:54 +0000 (21:35 +0100)]
functions.m4: Allow multiple interfaces to be defined by defiface.

With the upcoming network reorganization, it will be possible for
particular networks to be routed over several different interfaces.  It
will make describing the individual routers easier if we can get
defiface to deal with the commonality.

12 years agofunctions.m4, local.m4: Workaround for option parser fragmentation bugs.
Mark Wooding [Sun, 10 Jul 2011 20:19:47 +0000 (21:19 +0100)]
functions.m4, local.m4: Workaround for option parser fragmentation bugs.

There are some nasty option parser bugs in iptables 1.4.11.1.  Most
obviously, it refuses to accept `! -f' even though it always used to
work.  (This is Debian #632695.)  Secondly, it sees that ip6tables has
stopped accepting `! --fragfirst'.  I'm not sure this is unintentional,
though it's certainly annoying.

Work around both of these problems by introducing additional chains.
That is, we replace

iptables -A chain -j action ! --test

by

iptables -A newchain -j RETURN --test
iptables -A newchain -j action
iptables -A chain -j newchain

which is rather unpleasant, really.

12 years agobase.m4: Fix LSB init-script ordering.
Mark Wooding [Sun, 10 Jul 2011 20:52:07 +0000 (21:52 +0100)]
base.m4: Fix LSB init-script ordering.

We were coming up too early in the boot sequence, and sysctl wasn't
working.  Fix this.

12 years agobookends, classify, local: Fixes for IP multicasting.
Mark Wooding [Sun, 19 Jun 2011 18:01:34 +0000 (19:01 +0100)]
bookends, classify, local: Fixes for IP multicasting.

  * Allow reception of multicast packets.

  * Ensure that link-local multicasts aren't forwarded.  (Though
    currently no multicasts are forwarded, this isn't necessarily always
    going to be the case).

  * Turn /off/ iptables filtering of bridged packets.  I'm currently
    taking the view that the bridges are a hack introduced because I
    can't just plug all of the guests into a physical switch.  If I need
    to do better filtering, I'll either use ebtables or do something
    more complicated later.

12 years agolocal, vampire, ibanez: Centralize definition of NTP servers.
Mark Wooding [Sun, 19 Jun 2011 17:53:22 +0000 (18:53 +0100)]
local, vampire, ibanez: Centralize definition of NTP servers.

We now have multiple independent NTP servers, so it makes sense to
have the list of upstream servers in only one place.  Make it so.

12 years agoibanez, radius: Move NTP service to ibanez.
Mark Wooding [Tue, 7 Jun 2011 12:14:53 +0000 (13:14 +0100)]
ibanez, radius: Move NTP service to ibanez.

Turns out running NTP in guests is a bad plan.

12 years agobase.m4: Include an LSB header so that insserv can order it properly.
Mark Wooding [Mon, 6 Jun 2011 23:55:16 +0000 (00:55 +0100)]
base.m4: Include an LSB header so that insserv can order it properly.

12 years agoMakefile: Better rule hacking for installation.
Mark Wooding [Mon, 6 Jun 2011 23:54:42 +0000 (00:54 +0100)]
Makefile: Better rule hacking for installation.

If I use static pattern rules, I can set them as phony.  But I must
exclude the local host rule.

12 years agoprologue.m4: Use iptables-{save,restore} for the molly-guard.
Mark Wooding [Mon, 6 Jun 2011 23:29:46 +0000 (00:29 +0100)]
prologue.m4: Use iptables-{save,restore} for the molly-guard.

This seems generally more reliable than hoping that there's a saved copy
lying around which is likely to work, and also means that we have
an escape plan for an initial installation.

12 years agoHost changeover.
Mark Wooding [Tue, 31 May 2011 21:24:42 +0000 (22:24 +0100)]
Host changeover.

Remove metalzone, which is defunct; add all of the new machines.

12 years agoconfig.m4: Stupid typo.
Mark Wooding [Tue, 31 May 2011 21:23:54 +0000 (22:23 +0100)]
config.m4: Stupid typo.

12 years agobase.m4: Fix missing comma in `setconf', which has never ever worked.
Mark Wooding [Tue, 31 May 2011 21:23:38 +0000 (22:23 +0100)]
base.m4: Fix missing comma in `setconf', which has never ever worked.

12 years agobase.m4: On second thoughts, this one is more m4 than shell.
Mark Wooding [Tue, 31 May 2011 21:23:11 +0000 (22:23 +0100)]
base.m4: On second thoughts, this one is more m4 than shell.

12 years agolocal.m4: Disable forwarding multicasts until I work out how.
Mark Wooding [Tue, 31 May 2011 20:48:20 +0000 (21:48 +0100)]
local.m4: Disable forwarding multicasts until I work out how.

12 years agoclassify.m4: Dislike multicast addresses as a source address.
Mark Wooding [Tue, 31 May 2011 20:48:01 +0000 (21:48 +0100)]
classify.m4: Dislike multicast addresses as a source address.

I think they're not permitted.  They're certainly hard to deal with if
they are.

12 years agoprologue, Makefile, local.mk: Overhaul installation.
Mark Wooding [Tue, 31 May 2011 20:47:12 +0000 (21:47 +0100)]
prologue, Makefile, local.mk: Overhaul installation.

The prologue mollyguard is abstracted and generalized a bit so that we
can install stuff remotely without too much worry.  Installation is moved
into the main Makefile (with slightly spruced-up documentation), leaving
only a few very minor tweaks in the local configuration.

12 years agoMakefie: Give the main build the silent treatment.
Mark Wooding [Tue, 31 May 2011 20:44:41 +0000 (21:44 +0100)]
Makefie: Give the main build the silent treatment.

12 years agoMakefile: Add licence block at the top.
Mark Wooding [Tue, 31 May 2011 20:42:50 +0000 (21:42 +0100)]
Makefile: Add licence block at the top.

It's going to get more complicated later.  Also provide a bit more
guidance on what can be in local.mk.

12 years ago*.m4: Use `sh' mode for editing these.
Mark Wooding [Tue, 31 May 2011 20:37:29 +0000 (21:37 +0100)]
*.m4: Use `sh' mode for editing these.

They're far more shell than m4, for the most part.

12 years agoIPv6 firewall support.
Mark Wooding [Sun, 22 May 2011 20:43:32 +0000 (21:43 +0100)]
IPv6 firewall support.

Introduce half-hearted IPv6 support.  A surprising amount of the
firewall structure carries over unchanged.  The way fragmentation is
handled differs between IPv4 and IPv6, which is annoying.  And
ip6tables(8) doesn't have the `addrtype' match which was so useful in
IPv4.

12 years agolocal.mk: Introduce new target for testing.
Mark Wooding [Sun, 22 May 2011 22:25:59 +0000 (23:25 +0100)]
local.mk: Introduce new target for testing.

This avoids trashing other hosts with maybe broken firewalls.

12 years agoWhitespace fixing.
Mark Wooding [Sun, 22 May 2011 21:12:01 +0000 (22:12 +0100)]
Whitespace fixing.

12 years agovampire: Allow incoming IMAPS and Submission.
Mark Wooding [Fri, 20 May 2011 14:15:51 +0000 (15:15 +0100)]
vampire: Allow incoming IMAPS and Submission.

Should have been done a while ago, when vampire took over responsibility
for mail.

13 years agoMerge branch 'master' of /home/mdw/public-git/firewall
Mark Wooding [Mon, 7 Mar 2011 11:06:51 +0000 (11:06 +0000)]
Merge branch 'master' of /home/mdw/public-git/firewall

* 'master' of /home/mdw/public-git/firewall:
  vampire: Allow outside access to squid.
  vampire: Allow SMB from the untrusted network.

13 years agovampire: Allow outside access to squid.
Mark Wooding [Mon, 7 Mar 2011 11:02:35 +0000 (11:02 +0000)]
vampire: Allow outside access to squid.

This is to provide an escape hatch against the office's cretinous web
filter thing.

13 years agovampire: Allow SMB from the untrusted network.
Mark Wooding [Mon, 7 Mar 2011 11:01:43 +0000 (11:01 +0000)]
vampire: Allow SMB from the untrusted network.

This lets the Wii get to the media library, which is nice.

13 years agometalzone: Allow incoming `submission' connections.
Mark Wooding [Mon, 17 Jan 2011 15:31:07 +0000 (15:31 +0000)]
metalzone: Allow incoming `submission' connections.

Like SMTP, but allows authenticated users to send mail anywhere.  Useful
for mobile devices.

13 years agoMerge branch 'master' of /home/mdw/public-git/firewall
Mark Wooding [Mon, 17 Jan 2011 15:30:06 +0000 (15:30 +0000)]
Merge branch 'master' of /home/mdw/public-git/firewall

* 'master' of /home/mdw/public-git/firewall:
  local.m4: Put the default network stanza at the end.
  local.m4: Note terror's participation in the VPN.

14 years agolocal.m4: Put the default network stanza at the end.
Mark Wooding [Sun, 9 May 2010 16:09:51 +0000 (17:09 +0100)]
local.m4: Put the default network stanza at the end.

Otherwise packets get mistakenly classified as being to-untrusted and
stuff doesn't work properly.  Most notably, forwarding between VPN hosts
fails.

14 years agolocal.m4: Note terror's participation in the VPN.
Mark Wooding [Sun, 9 May 2010 09:47:37 +0000 (10:47 +0100)]
local.m4: Note terror's participation in the VPN.

14 years agoMerge branch 'master' of /home/mdw/public-git/firewall
Mark Wooding [Tue, 27 Apr 2010 15:25:53 +0000 (16:25 +0100)]
Merge branch 'master' of /home/mdw/public-git/firewall

* 'master' of /home/mdw/public-git/firewall:
  vampire: Allow incoming I2P traffic.

14 years agovampire: Allow incoming I2P traffic.
Mark Wooding [Mon, 26 Apr 2010 19:52:42 +0000 (20:52 +0100)]
vampire: Allow incoming I2P traffic.

14 years agometalzone: Open up incoming IMAPS.
Mark Wooding [Sat, 24 Apr 2010 22:17:04 +0000 (23:17 +0100)]
metalzone: Open up incoming IMAPS.

14 years agoMerge branch 'master' of /home/mdw/public-git/firewall
Mark Wooding [Sat, 17 Apr 2010 15:39:42 +0000 (16:39 +0100)]
Merge branch 'master' of /home/mdw/public-git/firewall

* 'master' of /home/mdw/public-git/firewall:
  vampire.m4: Allow MPD again.
  Add iodine support..
  vampire: Open `disorder' port; close `mpd'.
  vampire: Allow MPD traffic through.

14 years agovampire.m4: Allow MPD again.
Mark Wooding [Sat, 17 Apr 2010 15:38:56 +0000 (16:38 +0100)]
vampire.m4: Allow MPD again.

14 years agoMerge branch 'master' of metalzone:public-git/firewall
Mark Wooding [Sat, 17 Apr 2010 15:37:28 +0000 (16:37 +0100)]
Merge branch 'master' of metalzone:public-git/firewall

* 'master' of metalzone:public-git/firewall:
  functions.m4, local.m4: Handle fragments in a useful way.
  classify.m4: Correct summary line at the top.
  vampire.m4: Remove the magical DNS DDoS hack.

14 years agoAdd iodine support..
Mark Wooding [Sat, 17 Apr 2010 15:35:24 +0000 (16:35 +0100)]
Add iodine support..

This introduces a new section of the network which needs to be dealt
with properly.  The externally facing DNS server is actually the iodine
daemon, which listens on 5353 and is mapped from 53 by guvnor.  It
proxies requests outside io.distorted.org.uk on to the usual server
listening on port 53.

14 years agolocal.mk: Fix spurious failure.
Mark Wooding [Thu, 15 Apr 2010 15:23:39 +0000 (16:23 +0100)]
local.mk: Fix spurious failure.

`false && mumble' bug; should know better.

14 years agofunctions.m4, local.m4: Handle fragments in a useful way.
Mark Wooding [Thu, 15 Apr 2010 14:49:49 +0000 (15:49 +0100)]
functions.m4, local.m4: Handle fragments in a useful way.

Add a function for defining standard rules on a chain: currently it only
provides fragment-handling policy.

The fragment policy is to pass fragments unmolested, except for TCP.  An
IP stack which can't reassemble fragments safely needs more protection
than we can provide here.

Note that this only affects `inbound' chains.  The forwarding rules
don't usually work at the level of individual ports, so this is OK; the
ones that do have been nobbled to refuse IP fragments.

14 years agoclassify.m4: Correct summary line at the top.
Mark Wooding [Thu, 15 Apr 2010 12:53:56 +0000 (13:53 +0100)]
classify.m4: Correct summary line at the top.

Wow, that must have been wrong for a long time.

14 years agovampire.m4: Remove the magical DNS DDoS hack.
Mark Wooding [Thu, 8 Apr 2010 19:18:30 +0000 (20:18 +0100)]
vampire.m4: Remove the magical DNS DDoS hack.

We're going to use fail2ban for this job (and others).  So we don't need
logtrawl any more.

14 years agovampire: Open `disorder' port; close `mpd'.
Mark Wooding [Mon, 1 Feb 2010 16:55:22 +0000 (16:55 +0000)]
vampire: Open `disorder' port; close `mpd'.

14 years agovampire: Allow MPD traffic through.
Mark Wooding [Thu, 28 Jan 2010 12:24:35 +0000 (12:24 +0000)]
vampire: Allow MPD traffic through.

14 years agovampire.m4: Log messages when rejecting DNS DDOS packets.
Mark Wooding [Thu, 23 Jul 2009 11:24:08 +0000 (12:24 +0100)]
vampire.m4: Log messages when rejecting DNS DDOS packets.

14 years agovampire: Add special hook for DNS badness.
Mark Wooding [Thu, 4 Jun 2009 14:55:44 +0000 (15:55 +0100)]
vampire: Add special hook for DNS badness.

There's a DDOS attack which works by sending DNS servers bogus requests
with spoofed source addresses.  The servers' error reports end up
bombarding the victim.

The `logtrawl' program maintains an ipset listing the known victim IP
addresses based on the DNS server's logs; here, we /drop/ matching
packets -- otherwise the ICMP fallout would do just as well as the DNS
errors at clobbering the victim.  Fortunately this isn't very evil,
since DNS over UDP is unreliable anyway.

It may be that `logtrawl' grows up to do more of this stuff later.

15 years agovampire: Add accounting rules for Tor on the OUTPUT chain.
Mark Wooding [Tue, 13 Jan 2009 18:11:39 +0000 (18:11 +0000)]
vampire: Add accounting rules for Tor on the OUTPUT chain.

This will tell me what I actually wanted to know.

15 years agovampire: Move tor ports to a separate rule.
Mark Wooding [Mon, 12 Jan 2009 21:40:20 +0000 (21:40 +0000)]
vampire: Move tor ports to a separate rule.

This way we can get separate accounting for tor traffic.

15 years agovampire: Open up public ports for tor.
Mark Wooding [Mon, 12 Jan 2009 15:10:22 +0000 (15:10 +0000)]
vampire: Open up public ports for tor.

15 years agolocal.mk: Add install rule.
Mark Wooding [Wed, 7 Jan 2009 19:04:52 +0000 (19:04 +0000)]
local.mk: Add install rule.

15 years agoMakefile: Put default rule before local makefile.
Mark Wooding [Wed, 7 Jan 2009 19:04:36 +0000 (19:04 +0000)]
Makefile: Put default rule before local makefile.

Otherwise rules in local.mk become the default.

15 years agobookends: Prevent packets with destination localhost.
Mark Wooding [Wed, 7 Jan 2009 19:03:59 +0000 (19:03 +0000)]
bookends: Prevent packets with destination localhost.

Linux blocks these anyway, but it's good to be sure.

15 years agofunctions: Don't prefix log messages with `new' any more.
Mark Wooding [Wed, 7 Jan 2009 18:55:01 +0000 (18:55 +0000)]
functions: Don't prefix log messages with `new' any more.

This was done to distinguish messages from the old firewall script.
We don't need it any more.

15 years agofilter: Bogus file, unused.
Mark Wooding [Wed, 7 Jan 2009 18:54:22 +0000 (18:54 +0000)]
filter: Bogus file, unused.

Not sure how this one got left behind.

15 years agoInitial commit of fancy firewall infrastructure.
Mark Wooding [Wed, 10 Dec 2008 10:00:35 +0000 (10:00 +0000)]
Initial commit of fancy firewall infrastructure.