diff options
Diffstat (limited to 'firewall')
-rw-r--r-- | firewall/Makefile | 62 | ||||
-rw-r--r-- | firewall/files/firewall.config | 195 | ||||
-rw-r--r-- | firewall/files/firewall.hotplug | 11 | ||||
-rwxr-xr-x | firewall/files/firewall.init | 61 | ||||
-rw-r--r-- | firewall/files/firewall.user | 7 | ||||
-rw-r--r-- | firewall/patches/0001-zones-apply-tcp-mss-clamping-also-on-ingress-path.patch | 33 | ||||
-rw-r--r-- | firewall/patches/0002-options-fix-parsing-of-boolean-attributes.patch | 38 | ||||
-rw-r--r-- | firewall/patches/0003-Allow-NAT-for-IPv6.patch | 54 |
8 files changed, 0 insertions, 461 deletions
diff --git a/firewall/Makefile b/firewall/Makefile deleted file mode 100644 index 012b289..0000000 --- a/firewall/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright (C) 2013-2016 OpenWrt.org -# Copyright (C) 2016 LEDE project -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=firewall -PKG_RELEASE:=4 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall3.git -PKG_SOURCE_DATE:=2019-11-22 -PKG_SOURCE_VERSION:=8174814a507489ebbe8bb85c1004e1f02919ca82 -PKG_MIRROR_HASH:=84e0cca2d47470bdb1788a8ae044cc425be8ff650a1137474ba43a15040085da -PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> -PKG_LICENSE:=ISC - -PKG_CONFIG_DEPENDS := CONFIG_IPV6 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/cmake.mk - -define Package/firewall - SECTION:=net - CATEGORY:=Base system - TITLE:=OpenWrt C Firewall - DEPENDS:=+libubox +libubus +libuci +libip4tc +IPV6:libip6tc +libxtables +kmod-ipt-core +kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +kmod-ipt-nat -endef - -define Package/firewall/description - This package provides a config-compatible C implementation of the UCI firewall. -endef - -define Package/firewall/conffiles -/etc/config/firewall -/etc/firewall.user -endef - -TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto -TARGET_LDFLAGS += -Wl,--gc-sections -flto -CMAKE_OPTIONS += $(if $(CONFIG_IPV6),,-DDISABLE_IPV6=1) - -define Package/firewall/install - $(INSTALL_DIR) $(1)/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/firewall3 $(1)/sbin/fw3 - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/firewall.init $(1)/etc/init.d/firewall - $(INSTALL_DIR) $(1)/etc/hotplug.d/iface - $(INSTALL_CONF) ./files/firewall.hotplug $(1)/etc/hotplug.d/iface/20-firewall - $(INSTALL_DIR) $(1)/etc/config/ - $(INSTALL_CONF) ./files/firewall.config $(1)/etc/config/firewall - $(INSTALL_DIR) $(1)/etc/ - $(INSTALL_CONF) ./files/firewall.user $(1)/etc/firewall.user - $(INSTALL_DIR) $(1)/usr/share/fw3 - $(INSTALL_CONF) $(PKG_BUILD_DIR)/helpers.conf $(1)/usr/share/fw3 -endef - -$(eval $(call BuildPackage,firewall)) diff --git a/firewall/files/firewall.config b/firewall/files/firewall.config deleted file mode 100644 index 8874e98..0000000 --- a/firewall/files/firewall.config +++ /dev/null @@ -1,195 +0,0 @@ -config defaults - option syn_flood 1 - option input ACCEPT - option output ACCEPT - option forward REJECT -# Uncomment this line to disable ipv6 rules -# option disable_ipv6 1 - -config zone - option name lan - list network 'lan' - option input ACCEPT - option output ACCEPT - option forward ACCEPT - -config zone - option name wan - list network 'wan' - list network 'wan6' - option input REJECT - option output ACCEPT - option forward REJECT - option masq 1 - option mtu_fix 1 - -config forwarding - option src lan - option dest wan - -# We need to accept udp packets on port 68, -# see https://dev.openwrt.org/ticket/4108 -config rule - option name Allow-DHCP-Renew - option src wan - option proto udp - option dest_port 68 - option target ACCEPT - option family ipv4 - -# Allow IPv4 ping -config rule - option name Allow-Ping - option src wan - option proto icmp - option icmp_type echo-request - option family ipv4 - option target ACCEPT - -config rule - option name Allow-IGMP - option src wan - option proto igmp - option family ipv4 - option target ACCEPT - -# Allow DHCPv6 replies -# see https://dev.openwrt.org/ticket/10381 -config rule - option name Allow-DHCPv6 - option src wan - option proto udp - option src_ip fc00::/6 - option dest_ip fc00::/6 - option dest_port 546 - option family ipv6 - option target ACCEPT - -config rule - option name Allow-MLD - option src wan - option proto icmp - option src_ip fe80::/10 - list icmp_type '130/0' - list icmp_type '131/0' - list icmp_type '132/0' - list icmp_type '143/0' - option family ipv6 - option target ACCEPT - -# Allow essential incoming IPv6 ICMP traffic -config rule - option name Allow-ICMPv6-Input - option src wan - option proto icmp - list icmp_type echo-request - list icmp_type echo-reply - list icmp_type destination-unreachable - list icmp_type packet-too-big - list icmp_type time-exceeded - list icmp_type bad-header - list icmp_type unknown-header-type - list icmp_type router-solicitation - list icmp_type neighbour-solicitation - list icmp_type router-advertisement - list icmp_type neighbour-advertisement - option limit 1000/sec - option family ipv6 - option target ACCEPT - -# Allow essential forwarded IPv6 ICMP traffic -config rule - option name Allow-ICMPv6-Forward - option src wan - option dest * - option proto icmp - list icmp_type echo-request - list icmp_type echo-reply - list icmp_type destination-unreachable - list icmp_type packet-too-big - list icmp_type time-exceeded - list icmp_type bad-header - list icmp_type unknown-header-type - option limit 1000/sec - option family ipv6 - option target ACCEPT - -config rule - option name Allow-IPSec-ESP - option src wan - option dest lan - option proto esp - option target ACCEPT - -config rule - option name Allow-ISAKMP - option src wan - option dest lan - option dest_port 500 - option proto udp - option target ACCEPT - -# include a file with users custom iptables rules -config include - option path /etc/firewall.user - - -### EXAMPLE CONFIG SECTIONS -# do not allow a specific ip to access wan -#config rule -# option src lan -# option src_ip 192.168.45.2 -# option dest wan -# option proto tcp -# option target REJECT - -# block a specific mac on wan -#config rule -# option dest wan -# option src_mac 00:11:22:33:44:66 -# option target REJECT - -# block incoming ICMP traffic on a zone -#config rule -# option src lan -# option proto ICMP -# option target DROP - -# port redirect port coming in on wan to lan -#config redirect -# option src wan -# option src_dport 80 -# option dest lan -# option dest_ip 192.168.16.235 -# option dest_port 80 -# option proto tcp - -# port redirect of remapped ssh port (22001) on wan -#config redirect -# option src wan -# option src_dport 22001 -# option dest lan -# option dest_port 22 -# option proto tcp - -### FULL CONFIG SECTIONS -#config rule -# option src lan -# option src_ip 192.168.45.2 -# option src_mac 00:11:22:33:44:55 -# option src_port 80 -# option dest wan -# option dest_ip 194.25.2.129 -# option dest_port 120 -# option proto tcp -# option target REJECT - -#config redirect -# option src lan -# option src_ip 192.168.45.2 -# option src_mac 00:11:22:33:44:55 -# option src_port 1024 -# option src_dport 80 -# option dest_ip 194.25.2.129 -# option dest_port 120 -# option proto tcp diff --git a/firewall/files/firewall.hotplug b/firewall/files/firewall.hotplug deleted file mode 100644 index f1eab00..0000000 --- a/firewall/files/firewall.hotplug +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0 -[ "$ACTION" = ifupdate -a -z "$IFUPDATE_ADDRESSES" -a -z "$IFUPDATE_DATA" ] && exit 0 - -/etc/init.d/firewall enabled || exit 0 - -fw3 -q network "$INTERFACE" >/dev/null || exit 0 - -logger -t firewall "Reloading firewall due to $ACTION of $INTERFACE ($DEVICE)" -fw3 -q reload diff --git a/firewall/files/firewall.init b/firewall/files/firewall.init deleted file mode 100755 index ee3ed1a..0000000 --- a/firewall/files/firewall.init +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=19 -USE_PROCD=1 -QUIET="" - -validate_firewall_redirect() -{ - uci_validate_section firewall redirect "${1}" \ - 'proto:or(uinteger, string)' \ - 'src:string' \ - 'src_ip:cidr' \ - 'src_dport:or(port, portrange)' \ - 'dest:string' \ - 'dest_ip:cidr' \ - 'dest_port:or(port, portrange)' \ - 'target:or("SNAT", "DNAT")' -} - -validate_firewall_rule() -{ - uci_validate_section firewall rule "${1}" \ - 'proto:or(uinteger, string)' \ - 'src:string' \ - 'dest:string' \ - 'src_port:or(port, portrange)' \ - 'dest_port:or(port, portrange)' \ - 'target:string' -} - -service_triggers() { - procd_add_reload_trigger firewall - - procd_open_validate - validate_firewall_redirect - validate_firewall_rule - procd_close_validate -} - -restart() { - fw3 restart -} - -start_service() { - fw3 ${QUIET} start -} - -stop_service() { - fw3 flush -} - -reload_service() { - fw3 reload -} - -boot() { - # Be silent on boot, firewall might be started by hotplug already, - # so don't complain in syslog. - QUIET=-q - start -} diff --git a/firewall/files/firewall.user b/firewall/files/firewall.user deleted file mode 100644 index 6f79906..0000000 --- a/firewall/files/firewall.user +++ /dev/null @@ -1,7 +0,0 @@ -# This file is interpreted as shell script. -# Put your custom iptables rules here, they will -# be executed with each firewall (re-)start. - -# Internal uci firewall chains are flushed and recreated on reload, so -# put custom rules into the root chains e.g. INPUT or FORWARD or into the -# special user chains, e.g. input_wan_rule or postrouting_lan_rule. diff --git a/firewall/patches/0001-zones-apply-tcp-mss-clamping-also-on-ingress-path.patch b/firewall/patches/0001-zones-apply-tcp-mss-clamping-also-on-ingress-path.patch deleted file mode 100644 index 9e23dfd..0000000 --- a/firewall/patches/0001-zones-apply-tcp-mss-clamping-also-on-ingress-path.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 4a7df7d8c4e40fd2ce0d9f125755249dee17a8bd Mon Sep 17 00:00:00 2001 -From: Yousong Zhou <yszhou4tech@gmail.com> -Date: Fri, 24 Jul 2020 12:52:59 +0800 -Subject: [PATCH] zones: apply tcp mss clamping also on ingress path - -Fixes FS#3231 - -Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> -Acked-by: Jo-Philipp Wich <jo@mein.io> -(cherry picked from commit e9b90dfac2225927c035f6a76277b850c282dc9a) ---- - zones.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/zones.c b/zones.c -index 01fb706..3d54a76 100644 ---- a/zones.c -+++ b/zones.c -@@ -552,6 +552,14 @@ print_interface_rule(struct fw3_ipt_handle *handle, struct fw3_state *state, - fw3_ipt_rule_target(r, "TCPMSS"); - fw3_ipt_rule_addarg(r, false, "--clamp-mss-to-pmtu", NULL); - fw3_ipt_rule_replace(r, "FORWARD"); -+ -+ r = fw3_ipt_rule_create(handle, &tcp, dev, NULL, sub, NULL); -+ fw3_ipt_rule_addarg(r, false, "--tcp-flags", "SYN,RST"); -+ fw3_ipt_rule_addarg(r, false, "SYN", NULL); -+ fw3_ipt_rule_comment(r, "Zone %s MTU fixing", zone->name); -+ fw3_ipt_rule_target(r, "TCPMSS"); -+ fw3_ipt_rule_addarg(r, false, "--clamp-mss-to-pmtu", NULL); -+ fw3_ipt_rule_replace(r, "FORWARD"); - } - } - else if (handle->table == FW3_TABLE_RAW) diff --git a/firewall/patches/0002-options-fix-parsing-of-boolean-attributes.patch b/firewall/patches/0002-options-fix-parsing-of-boolean-attributes.patch deleted file mode 100644 index c7a4593..0000000 --- a/firewall/patches/0002-options-fix-parsing-of-boolean-attributes.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 78d52a28c66ad0fd2af250038fdcf4239ad37bf2 Mon Sep 17 00:00:00 2001 -From: Remi NGUYEN VAN <remi.nguyenvan+openwrt@gmail.com> -Date: Sat, 15 Aug 2020 13:50:27 +0900 -Subject: [PATCH] options: fix parsing of boolean attributes - -Boolean attributes were parsed the same way as string attributes, -so a value of { "bool_attr": "true" } would be parsed correctly, but -{ "bool_attr": true } (without quotes) was parsed as false. - -Fixes FS#3284 - -Signed-off-by: Remi NGUYEN VAN <remi.nguyenvan+openwrt@gmail.com> ---- - options.c | 6 ++++++ - 1 file changed, 6 insertions(+) - ---- a/options.c -+++ b/options.c -@@ -1170,6 +1170,9 @@ fw3_parse_blob_options(void *s, const st - if (blobmsg_type(e) == BLOBMSG_TYPE_INT32) { - snprintf(buf, sizeof(buf), "%d", blobmsg_get_u32(e)); - v = buf; -+ } else if (blobmsg_type(o) == BLOBMSG_TYPE_BOOL) { -+ snprintf(buf, sizeof(buf), "%d", blobmsg_get_bool(o)); -+ v = buf; - } else { - v = blobmsg_get_string(e); - } -@@ -1189,6 +1192,9 @@ fw3_parse_blob_options(void *s, const st - if (blobmsg_type(o) == BLOBMSG_TYPE_INT32) { - snprintf(buf, sizeof(buf), "%d", blobmsg_get_u32(o)); - v = buf; -+ } else if (blobmsg_type(o) == BLOBMSG_TYPE_BOOL) { -+ snprintf(buf, sizeof(buf), "%d", blobmsg_get_bool(o)); -+ v = buf; - } else { - v = blobmsg_get_string(o); - } diff --git a/firewall/patches/0003-Allow-NAT-for-IPv6.patch b/firewall/patches/0003-Allow-NAT-for-IPv6.patch deleted file mode 100644 index 826a8a2..0000000 --- a/firewall/patches/0003-Allow-NAT-for-IPv6.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 531831dffa2d1a87b8157d76a46f1fb407e3c77e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= <cynerd@email.cz> -Date: Sat, 15 May 2021 13:15:32 +0200 -Subject: [PATCH] Allow NAT for IPv6 - ---- - defaults.c | 4 ++-- - zones.c | 8 ++++---- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/defaults.c b/defaults.c -index f03765c..435227f 100644 ---- a/defaults.c -+++ b/defaults.c -@@ -29,8 +29,8 @@ static const struct fw3_chain_spec default_chains[] = { - C(ANY, FILTER, CUSTOM_CHAINS, "forwarding_rule"), - C(ANY, FILTER, SYN_FLOOD, "syn_flood"), - -- C(V4, NAT, CUSTOM_CHAINS, "prerouting_rule"), -- C(V4, NAT, CUSTOM_CHAINS, "postrouting_rule"), -+ C(ANY, NAT, CUSTOM_CHAINS, "prerouting_rule"), -+ C(ANY, NAT, CUSTOM_CHAINS, "postrouting_rule"), - - { } - }; -diff --git a/zones.c b/zones.c -index 3d54a76..64c75b1 100644 ---- a/zones.c -+++ b/zones.c -@@ -37,8 +37,8 @@ static const struct fw3_chain_spec zone_chains[] = { - C(ANY, FILTER, REJECT, "zone_%s_dest_REJECT"), - C(ANY, FILTER, DROP, "zone_%s_dest_DROP"), - -- C(V4, NAT, SNAT, "zone_%s_postrouting"), -- C(V4, NAT, DNAT, "zone_%s_prerouting"), -+ C(ANY, NAT, SNAT, "zone_%s_postrouting"), -+ C(ANY, NAT, DNAT, "zone_%s_prerouting"), - - C(ANY, RAW, HELPER, "zone_%s_helper"), - C(ANY, RAW, NOTRACK, "zone_%s_notrack"), -@@ -47,8 +47,8 @@ static const struct fw3_chain_spec zone_chains[] = { - C(ANY, FILTER, CUSTOM_CHAINS, "output_%s_rule"), - C(ANY, FILTER, CUSTOM_CHAINS, "forwarding_%s_rule"), - -- C(V4, NAT, CUSTOM_CHAINS, "prerouting_%s_rule"), -- C(V4, NAT, CUSTOM_CHAINS, "postrouting_%s_rule"), -+ C(ANY, NAT, CUSTOM_CHAINS, "prerouting_%s_rule"), -+ C(ANY, NAT, CUSTOM_CHAINS, "postrouting_%s_rule"), - - { } - }; --- -2.31.1 - |