Commit Graph

138 Commits

Author SHA1 Message Date
Michael Tremer
ce31144c62 firewall: Only check relevant bits for NAT fix rules
In order to use the highest two bits for surciata bypass, we will need
to make sure that whenever we compare any other marks, we do not care
about anything else.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2021-10-13 11:45:48 +00:00
Stefan Schantl
21b37391f9 Firewall: Proper allow to create REDIRECT rules.
This patch now proper allows to create rules for redirecting requests of a
given host, group or network(s) to a specified port or service to the
local IPFire system.

So it implements a very generic and easy to use feature to redirect
(for example all DNS, NTP, or whatever) requests to the a local running
instance and so to force usage of that local hosted service.

* The feature supports specifiying a single port and redirect the requests to another given one.
  ( For example requests to UDP 123 can be redirected to local UDP 1234
  if you run an NTP server on that port.)

* It also supports direct usage of services or even service groups.
  ( So you can create a service group for DNS and redirect them to the
  local recursor, or create a "redirected services" group which easily
  can be managed...)

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2021-08-16 06:18:00 +00:00
Michael Tremer
053a582d3a ipsec-policy: Do no create DROP rules for on-demand mode
This is not necessary and gets in the way if users have SNAT rules or
other things that make the check be in the wrong place.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-06-11 16:15:37 +00:00
Peter Müller
2293e1de0b rules.pl: apply location filter to ppp0 if configured
In order to prevent collateral damage to internal traffic, commit
c69c820025 introduced applying location
block on red0 as a sanity check.

On systems configured to use PPPoE, however, traffic appears on the ppp0
interface instead. This patch checks if a system is configured to use
this connection method, and applies the location filter to this
interface. red0 is used otherwise.

Fixes: #12519

Cc: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2020-11-11 15:53:05 +00:00
Michael Tremer
c69c820025 firewall: Filter only on RED and exclude any private address space
Since libloc is built as a tree we cannot simply exclude any address
space in the middle of it. Therefore we create some firewall rules
which simply avoid checking non-globally routable address space.

Fixes: #12499
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2020-10-14 11:32:05 +01:00
Stefan Schantl
18c9fd2820 firewall-lib.pl: Fix typo.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2020-06-13 19:10:15 +02:00
Stefan Schantl
006e3c6c31 firewall-lib.pl: Rework code to use location-functions.pl
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2020-06-12 19:21:27 +02:00
Stefan Schantl
46269ee5fb Transform geoipblock into locationblock settings file.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2020-06-12 19:09:29 +02:00
Stefan Schantl
5730a5bcdf firewall/rules.pl: Rework code to use location-functions.pl
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2020-06-12 19:06:01 +02:00
Michael Tremer
0e6eca78b8 firewall: Rename GEOIPBLOCK table to LOCATIONBLOCK
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2020-06-12 16:00:34 +02:00
Stefan Schantl
4852f77e33 Revert "firewall/rules.pl: Add code to collect and export all required country"
This reverts commit ad47d2ae80.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2020-06-10 21:29:04 +02:00
Stefan Schantl
38a8d40142 Revert "firewall/rules.pl: Only try to export locations if needed."
This reverts commit 693b8513df.
2020-06-10 21:28:16 +02:00
Stefan Schantl
8b58dbf32a Merge branch 'switch-to-libloc' into next-switch-to-libloc 2020-05-25 19:58:54 +02:00
Michael Tremer
c22369a916 firewall: Log accepted connections even when NAT is active
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-05-09 12:21:16 +00:00
Stefan Schantl
c4b7692ad9 rules.pl: Fix SNAT over VPN.
This commit adds flags which will are applied if SNAT should be used on
the red address or any configured alias.

They prevent doing the SNAT when tranismitting packet through a VPN over the red interface.

Fixes #12162.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Tested-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-03-21 16:24:44 +00:00
Stefan Schantl
693b8513df firewall/rules.pl: Only try to export locations if needed.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2019-12-09 18:36:54 +01:00
Stefan Schantl
ad47d2ae80 firewall/rules.pl: Add code to collect and export all required country
codes.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2019-12-09 11:08:23 +01:00
Stefan Schantl
f5ad4246de firewall/rules.pl: Make geoipsettings hash and locations array
script-wide available.

This allows to re-use them.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
2019-12-09 11:04:30 +01:00
Stefan Schantl
dba780a784 firewall-lib.pl: Populate GeoIP rules only if location is available.
In case a GeoIP related firewall rule should be created, the script
now will check if the given location is still available.

Fixes #12054.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2019-10-29 13:23:43 +00:00
peter.mueller@ipfire.org
a85a7a60fc firewall: raise log rate limit for user generated rules, too
Having raised the overall log rate limit to 10 packet per second
in Core Update 136, this did not affected rules generated by the
user. In order to stay consistent, this patch also raises log rate
limit for these.

In order to avoid side effects on firewalls with slow disks, it
was probably better touch these categories separately, so testing
users won't be DoSsed instantly. :-)

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Reviewed-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2019-10-08 18:30:31 +00:00
Arne Fitzenreiter
5653e55107 perl-scripts: suppress smartmatch experimental warning
smartmatch was introduced with perl 5.10 and was marked
as experimental in 5.14

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2019-08-16 12:21:26 +02:00
Michael Tremer
249839b0ca firewall: Fix source/destination interface settings
When a forwarding rule is being created, we sometimes create
INPUT/OUTPUT rules, too. Those were slightly invalid because
the source and destination interfaces where passed, too.

This could render some rules in certain circumstances useless.

This patch fixes this and only adds -i for INPUT and -o for
OUTPUT rules.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-04-30 10:56:05 +01:00
Michael Tremer
ae93dd3deb firewall: Add more rules to input/output when adding rules to forward
The special_input/output_targets array assumed that firewall access
will always be denied. However, rules also need to be created when
access is granted. Therefore the ACCEPT target needs to be included
in this list and rules must be created in INPUTFW/OUTGOINGFW too
when ACCEPT rules are created in FORWARDFW.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-04-30 10:45:34 +01:00
Michael Tremer
7ba652af8c firewall: Write correct rules bound to interface for routes IPsec tunnels
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
6826364580 ipsec-*: Name some more configuration variables
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
c32fc72e36 ipsec-policy: Correct open ports for connections on aliases
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
5a9c9ff312 ipsec-policy: Don't install any block rules for connections with an interface
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
b54cd874b9 ipsec-policy: Permit GRE traffic for GRE connections
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
2704dbbc28 ipsec-policy: Variables don't match those from the CGI
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
4cf4f8f623 ipsec-policy: Parse all configuration settings
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
6cf8bc9161 IPsec: Move opening ports from ipsecctrl into ipsec-policy script
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
6c920b19cd IPsec: Rename ipsec-block script to ipsec-policy
This is a more general name for a script that will be extended
soon to do more than just add blocking rules.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-02-04 18:20:36 +00:00
Michael Tremer
5cf83d56fa firewall-lib.pl: Fix incorrect path to geoip-functions.pl
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-01-13 11:53:41 +01:00
Stefan Schantl
8ff42d82c4 firewall-lib.pl: Use get_geoip_locations from geoip-functions.pl
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-01-10 22:43:00 +00:00
Michael Tremer
9f60aa9679 syslog: Listen to network and block access from anywhere but localhost
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-11-07 20:07:53 +00:00
Michael Tremer
475ae4b3db firewall: Suppress more warnings when initialising without GREEN
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-07-01 11:49:57 +01:00
Alexander Marx
8b20ca2de4 BUG11559: firewall-lib
When creating firewallrules or using firewall groups,
it should be possible to select a single IpSec subnet if there is more than one.

This patch has neccessary changes for the firewall-lib. While the network name of the IpSec changes
on save (subnet is added to name) we need to split the name or normalise the field before using it.
Signed-off-by: Alexander Marx <alexander.marx@ipfire.org>
Tested-by: Peter Müller <peter.mueller@link38.eu>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-05-09 14:48:42 +01:00
Michael Tremer
1f91201011 firewall: Suppress warning about uninitialized array in GeoIP code
Fixes #11597

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-01-22 13:20:04 +00:00
Michael Tremer
cda384a280 ipsec: Do not reject connections in on-demand mode
When an on-demand VPN connection is not up, the packets will
traverse the firewall and be rejected by the IPSECBLOCK chain
which will cause that an ICMP error message will be sent to
the client. If that does not happen and the packet is being
silently dropped, the client will retransmit and by then
the VPN connection will hopefully be up.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2017-03-24 13:24:42 +01:00
Michael Tremer
645378fbb9 firewall: Fix MAC filter
Packets destined for the firewall coming in from the blue
device where accepted too early to be processed by the
firewall input chain rules.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2016-02-05 10:24:03 +00:00
Alexander Marx
306098a498 BUG10994: SNAT rules are missing the outgoing interface
When creating SNAT rules, the outgoing interface is not set. As a side
effect, traffic that should be send unnatted to a vpn tunnel can be
natted which is a BUG.
With this patch the SNAT rules are getting a outgoing interface
according to the configuration. When selecting the RED Target network,
all SNAT rules will be configured with "-o red0". Otherwise if "all" is
selected, there is no interface in the rule, which matches all networks.

Signed-off-by: Alexander Marx <alexander.marx@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2015-12-15 13:53:03 +00:00
Alexander Marx
0cf6bacad2 BUG10984: Fix portforwardconverter for upgrades before core 77
When upgrading from a post core-77 installation, the portforwarding
rules seem to get broken. With this patch the sourceports and the
subnetmasks from the rules are converted correctly.

Signed-off-by: Alexander Marx <alexander.marx@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2015-11-19 12:53:38 +00:00
Michael Tremer
80fbd89949 ipsec: Add block rules to avoid conntrack entries
If an IPsec VPN connections is not established, there are
rare cases when packets are supposed to be sent through
that said tunnel and incorrectly handled.

Those packets are sent to the default gateway an entry
for this connection is created in the connection tracking
table (usually only happens to UDP). All following packets
are sent the same route even after the tunnel has been
brought up. That leads to SIP phones not being able to
register among other things.

This patch adds firewall rules that these packets are
rejected. That will sent a notification to the client
that the tunnel is not up and avoid the connection to
be added to the connection tracking table.

Apart from a small performance penalty there should
be no other side-effects.

Fixes: #10908

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Cc: tomvend@rymes.com
Cc: daniel.weismueller@ipfire.org
Cc: morlix@morlix.de
Reviewed-by: Timo Eissler <timo.eissler@ipfire.org>
2015-10-15 22:44:47 +01:00
Michael Tremer
7c8e022c4b firewall: Support multiple subnets per IPsec tunnel
Fixes #10929

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2015-09-22 00:26:37 +01:00
Michael Tremer
7af1cf3949 firewall: Disable the P2P blocker by default
P2P networks have come a bit out of fashion. Disabling
the P2P blocker by default will save us some CPU cycles
for each packet that goes through the firewall.

The P2P blocker has also caused lots of false-positives
and has therefore become a bit more of a problem than
a solution.
2015-05-20 13:37:35 +02:00
Arne Fitzenreiter
0505af9dc0 rules.pl: fix geoip initialisation. 2015-04-20 23:14:11 +02:00
Stefan Schantl
0bb4b135d1 rules.pl: Flush GEOIPBLOCK chain when the feature will be switched off.
Otherwise existing rules still remain in the chain and will be processed
even geoipblock has been disabled.
2015-03-15 11:40:46 +01:00
Stefan Schantl
93bfe63d55 Merge branch 'seventeen-geoip' into next-geoip 2015-03-15 11:38:45 +01:00
Alexander Marx
2d0c7a9f7b BUG10620: move reload of firewall.local to main() 2015-03-11 17:11:59 +01:00
Alexander Marx
b9ca2fa60f Add support for generating GeoIP-based firewall rules.
This commit adds support to the rules.pl and firewall-lib.pl to generate
correct iptables commands for inserting GeoIP-based firewall rules
into the kernel.
2015-02-17 18:00:52 +01:00