|
From: <abe...@us...> - 2016-07-10 15:10:20
|
Revision: 7747
http://sourceforge.net/p/astlinux/code/7747
Author: abelbeck
Date: 2016-07-10 15:10:17 +0000 (Sun, 10 Jul 2016)
Log Message:
-----------
arnofw, add Deny LAN to DMZ traffic for internal interfaces, rc.conf variable DMZ_DENYLAN, defaults to allow as before. Simple rework of the astlinux.shim script making all the intermediate variables 'local' so as not to appear in the AIF script.
Modified Paths:
--------------
branches/1.0/package/arnofw/arnofw.wrapper
branches/1.0/project/astlinux/target_skeleton/stat/etc/rc.conf
Modified: branches/1.0/package/arnofw/arnofw.wrapper
===================================================================
--- branches/1.0/package/arnofw/arnofw.wrapper 2016-07-09 16:14:30 UTC (rev 7746)
+++ branches/1.0/package/arnofw/arnofw.wrapper 2016-07-10 15:10:17 UTC (rev 7747)
@@ -1,9 +1,11 @@
-#
-# In this shim, we're invoked after /etc/arno-iptables-firewall/firewall.conf
-# has been read. We then read /etc/rc.conf, and paste in variables from
-# the latter file that will override whatever values were configured in
-# firewall.conf.
-#
+##
+## Custom AstLinux Variables -> AIF Configuration
+##
+## This script is called by AIF as a LOCAL_CONFIG_FILE which occurs after
+## the /etc/arno-iptables-firewall/firewall.conf defaults are read.
+## The AstLinux variables are then sourced from /etc/rc.conf, which together
+## with this script allows AIF variables to be configured as needed.
+##
. /etc/rc.conf
@@ -25,7 +27,7 @@
isNATinterface()
{
# args: IF
- local IFS
+ local intf IFS
unset IFS
for intf in $NONAT; do
@@ -40,9 +42,10 @@
addINTERNALnet()
{
# args: IF, IP, NM
+ local NETWORK PREFIX
+
if [ -n "$1" -a "$1" != "none" -a -n "$2" -a -n "$3" ]; then
- local NETWORK PREFIX
- eval `ipcalc -np $2 $3`
+ eval $(ipcalc -np $2 $3)
INT_IF="$INT_IF${INT_IF:+ }$1"
INTERNAL_NET="$INTERNAL_NET${INTERNAL_NET:+ }$NETWORK/$PREFIX"
@@ -56,9 +59,10 @@
addNOnatINTERNALnet()
{
# args: IF, IP, NM
+ local NETWORK PREFIX
+
if [ -n "$1" -a "$1" != "none" -a -n "$2" -a -n "$3" ]; then
- local NETWORK PREFIX
- eval `ipcalc -np $2 $3`
+ eval $(ipcalc -np $2 $3)
INT_IF="$INT_IF${INT_IF:+ }$1"
INTERNAL_NET="$INTERNAL_NET${INTERNAL_NET:+ }$NETWORK/$PREFIX"
@@ -68,9 +72,10 @@
setDMZnet()
{
# args: IF, IP, NM
+ local NETWORK PREFIX
+
if [ -n "$1" -a "$1" != "none" -a -n "$2" -a -n "$3" ]; then
- local NETWORK PREFIX
- eval `ipcalc -np $2 $3`
+ eval $(ipcalc -np $2 $3)
DMZ_IF="$1"
DMZ_NET="$NETWORK/$PREFIX"
@@ -95,9 +100,10 @@
setIPSECnet()
{
# args: IP, NM
+ local NETWORK PREFIX
+
if [ -n "$1" -a -n "$2" ]; then
- local NETWORK PREFIX
- eval `ipcalc -np $1 $2`
+ eval $(ipcalc -np $1 $2)
NAT_INTERNAL_NET="$NAT_INTERNAL_NET${NAT_INTERNAL_NET:+ }$NETWORK/$PREFIX"
NAT=1
@@ -106,8 +112,9 @@
getLANinterface()
{
+ # args: LAN
local lanif=""
-
+
case $1 in
INTIF)
lanif="$INTIF"
@@ -123,7 +130,7 @@
if [ -z "$lanif" ]; then
return 1
fi
-
+
echo "$lanif"
return 0
}
@@ -141,172 +148,194 @@
esac
}
-## Disable TOS mangling
-MANGLE_TOS=0
+astlinux_wrapper()
+{
+ local intf lan lans extCIDR ovpnIF ovpnIP ovpnNM allowif allowifs denyif count IFS
-if [ "$IPV6" = "yes" ]; then
- IPV6_SUPPORT=1
-fi
+ MANGLE_TOS=0
-if [ -z "$PPPOEIF" ]; then
- EXT_IF=""
- unset IFS
- for intf in $EXTIF $EXT2IF; do
- EXT_IF="$EXT_IF${EXT_IF:+ }$intf"
- done
-else
- EXT_IF="${PPPOE_EXTIF:-ppp+}"
- unset IFS
- for intf in $EXTIF $EXT2IF; do
- case "$intf" in
- ppp[0-9]*) ;;
- *) EXT_IF="$EXT_IF $intf" ;;
- esac
- done
-fi
+ if [ "$IPV6" = "yes" ]; then
+ IPV6_SUPPORT=1
+ fi
-# Add external interface 'ip6tun' if an IPv6 tunnel is defined
-if [ "$IPV6" = "yes" -a -n "$IPV6_TUNNEL" ]; then
- EXT_IF="$EXT_IF ip6tun"
-fi
+ if [ -z "$PPPOEIF" ]; then
+ EXT_IF=""
+ unset IFS
+ for intf in $EXTIF $EXT2IF; do
+ EXT_IF="$EXT_IF${EXT_IF:+ }$intf"
+ done
+ else
+ EXT_IF="${PPPOE_EXTIF:-ppp+}"
+ unset IFS
+ for intf in $EXTIF $EXT2IF; do
+ case "$intf" in
+ ppp[0-9]*) ;;
+ *) EXT_IF="$EXT_IF $intf" ;;
+ esac
+ done
+ fi
-if [ -z "$EXTERNAL_NET" ]; then
- unset IFS
- for intf in $EXTIF $EXT2IF; do
- extCIDR="$(get_network_cidr "$intf")"
- if [ -n "$extCIDR" ]; then
- EXTERNAL_NET="$EXTERNAL_NET${EXTERNAL_NET:+ }$extCIDR"
- fi
- done
-fi
+ # Add external interface 'ip6tun' if an IPv6 tunnel is defined
+ if [ "$IPV6" = "yes" -a -n "$IPV6_TUNNEL" ]; then
+ EXT_IF="$EXT_IF ip6tun"
+ fi
-INT_IF=""
-INTERNAL_NET=""
-NAT_INTERNAL_NET=""
-NAT=0
+ if [ -z "$EXTERNAL_NET" ]; then
+ unset IFS
+ for intf in $EXTIF $EXT2IF; do
+ extCIDR="$(get_network_cidr "$intf")"
+ if [ -n "$extCIDR" ]; then
+ EXTERNAL_NET="$EXTERNAL_NET${EXTERNAL_NET:+ }$extCIDR"
+ fi
+ done
+ fi
-addINTERNALnet "$INTIF" "$INTIP" "$INTNM"
+ INT_IF=""
+ INTERNAL_NET=""
+ NAT_INTERNAL_NET=""
+ NAT=0
-addINTERNALnet "$INT2IF" "$INT2IP" "$INT2NM"
+ addINTERNALnet "$INTIF" "$INTIP" "$INTNM"
-addINTERNALnet "$INT3IF" "$INT3IP" "$INT3NM"
+ addINTERNALnet "$INT2IF" "$INT2IP" "$INT2NM"
-setDMZnet "$DMZIF" "$DMZIP" "$DMZNM"
+ addINTERNALnet "$INT3IF" "$INT3IP" "$INT3NM"
-MODEM_IF=""
+ setDMZnet "$DMZIF" "$DMZIP" "$DMZNM"
-if [ -n "$NAT_FOREIGN_NETWORK" ]; then
- setFOREIGNnet
-fi
+ MODEM_IF=""
-EXT_IF_DHCP_IP=0
-if [ -n "$EXTIF" -a -z "$EXTIP" ] && [ "$EXTIF" != "ppp0" -o -z "$PPPOEIF" ]; then
- EXT_IF_DHCP_IP=1
-fi
-if [ -n "$EXT2IF" -a -z "$EXT2IP" ] && [ "$EXT2IF" != "ppp0" -o -z "$PPPOEIF" ]; then
- EXT_IF_DHCP_IP=1
-fi
+ if [ -n "$NAT_FOREIGN_NETWORK" ]; then
+ setFOREIGNnet
+ fi
-if [ "$EXTDHCP" = "yes" -a -n "$EXTIP" -a -n "$EXTGW" -a -z "$EXT2IF" -a -z "$PPPOEIF" ]; then
- EXTERNAL_DHCP_SERVER=1
-fi
+ EXT_IF_DHCP_IP=0
+ if [ -n "$EXTIF" -a -z "$EXTIP" ] && [ "$EXTIF" != "ppp0" -o -z "$PPPOEIF" ]; then
+ EXT_IF_DHCP_IP=1
+ fi
+ if [ -n "$EXT2IF" -a -z "$EXT2IP" ] && [ "$EXT2IF" != "ppp0" -o -z "$PPPOEIF" ]; then
+ EXT_IF_DHCP_IP=1
+ fi
-if isVPNtype racoon || isVPNtype ipsecmobile; then
- RP_FILTER=0
-fi
+ if [ "$EXTDHCP" = "yes" -a -n "$EXTIP" -a -n "$EXTGW" -a -z "$EXT2IF" -a -z "$PPPOEIF" ]; then
+ EXTERNAL_DHCP_SERVER=1
+ fi
-if isVPNtype ipsecmobile && [ "$IPSECM_AUTH_METHOD" = "xauth_rsa_server" ]; then
- setIPSECnet "$IPSECM_XAUTH_POOLBASE" "$IPSECM_XAUTH_POOLMASK"
-fi
+ if isVPNtype racoon || isVPNtype ipsecmobile; then
+ RP_FILTER=0
+ fi
-if isVPNtype openvpn; then
- if [ -n "$OVPN_SERVER" ]; then
- ovpnIP="`echo $OVPN_SERVER | awk '{ print $1; }'`"
- ovpnNM="`echo $OVPN_SERVER | awk '{ print $2; }'`"
- if [ -z "$OVPN_DEV" -o "$OVPN_DEV" = "tun" ]; then
- ovpnIF="tun+"
+ if isVPNtype ipsecmobile && [ "$IPSECM_AUTH_METHOD" = "xauth_rsa_server" ]; then
+ setIPSECnet "$IPSECM_XAUTH_POOLBASE" "$IPSECM_XAUTH_POOLMASK"
+ fi
+
+ if isVPNtype openvpn; then
+ if [ -n "$OVPN_SERVER" ]; then
+ ovpnIP="$(echo $OVPN_SERVER | awk '{ print $1; }')"
+ ovpnNM="$(echo $OVPN_SERVER | awk '{ print $2; }')"
+ if [ -z "$OVPN_DEV" -o "$OVPN_DEV" = "tun" ]; then
+ ovpnIF="tun+"
+ else
+ ovpnIF="$OVPN_DEV"
+ fi
+ addINTERNALnet "$ovpnIF" "$ovpnIP" "$ovpnNM"
+ if [ -n "$OVPN_ALLOWLAN" ]; then
+ unset IFS
+ for lan in $OVPN_ALLOWLAN; do
+ allowif="$(getLANinterface "$lan")"
+ if [ $? -eq 0 ]; then
+ IFS=' ,'
+ for intf in $INT_IF; do
+ if [ "$intf" = "$allowif" ]; then
+ IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowif $ovpnIF"
+ break
+ fi
+ done
+ fi
+ done
+ fi
else
- ovpnIF="$OVPN_DEV"
+ # Failsafe if /mnt/kd/openvpn/openvpn.conf is used
+ # and OVPN_SERVER is not defined.
+ TRUSTED_IF="tun+"
fi
- addINTERNALnet "$ovpnIF" "$ovpnIP" "$ovpnNM"
- if [ -n "$OVPN_ALLOWLAN" ]; then
- unset IFS
- for lan in $OVPN_ALLOWLAN; do
- allowif="$(getLANinterface "$lan")"
- if [ $? -eq 0 ]; then
- IFS=' ,'
- for intf in $INT_IF; do
- if [ "$intf" = "$allowif" ]; then
- IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowif $ovpnIF"
- break;
- fi
- done
- fi
- done
- fi
- else
- # Failsafe if /mnt/kd/openvpn/openvpn.conf is used
- # and OVPN_SERVER is not defined.
- TRUSTED_IF="tun+"
fi
-fi
-if isVPNtype openvpnclient; then
- if [ -n "$OVPNC_SERVER" ]; then
- ovpnIP="`echo $OVPNC_SERVER | awk '{ print $1; }'`"
- ovpnNM="`echo $OVPNC_SERVER | awk '{ print $2; }'`"
- if [ -z "$OVPNC_DEV" -o "$OVPNC_DEV" = "tun" ]; then
- ovpnIF="tun+"
+ if isVPNtype openvpnclient; then
+ if [ -n "$OVPNC_SERVER" ]; then
+ ovpnIP="$(echo $OVPNC_SERVER | awk '{ print $1; }')"
+ ovpnNM="$(echo $OVPNC_SERVER | awk '{ print $2; }')"
+ if [ -z "$OVPNC_DEV" -o "$OVPNC_DEV" = "tun" ]; then
+ ovpnIF="tun+"
+ else
+ ovpnIF="$OVPNC_DEV"
+ fi
+ addNOnatINTERNALnet "$ovpnIF" "$ovpnIP" "$ovpnNM"
+ if [ -n "$OVPNC_ALLOWLAN" ]; then
+ unset IFS
+ for lan in $OVPNC_ALLOWLAN; do
+ allowif="$(getLANinterface "$lan")"
+ if [ $? -eq 0 ]; then
+ IFS=' ,'
+ for intf in $INT_IF; do
+ if [ "$intf" = "$allowif" ]; then
+ IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowif $ovpnIF"
+ break
+ fi
+ done
+ fi
+ done
+ fi
else
- ovpnIF="$OVPNC_DEV"
+ # Failsafe if /mnt/kd/openvpn/openvpnconf.conf is used
+ # and OVPNC_SERVER is not defined.
+ TRUSTED_IF="tun+"
fi
- addNOnatINTERNALnet "$ovpnIF" "$ovpnIP" "$ovpnNM"
- if [ -n "$OVPNC_ALLOWLAN" ]; then
- unset IFS
- for lan in $OVPNC_ALLOWLAN; do
+ fi
+
+ if [ -n "$ALLOWLANS" ]; then
+ IFS='~'
+ for lans in $ALLOWLANS; do
+ allowifs=""
+ count=0
+ IFS=' '
+ for lan in $lans; do
allowif="$(getLANinterface "$lan")"
if [ $? -eq 0 ]; then
IFS=' ,'
for intf in $INT_IF; do
if [ "$intf" = "$allowif" ]; then
- IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowif $ovpnIF"
- break;
+ allowifs="$allowifs${allowifs:+ }$allowif"
+ count=$((count + 1))
+ break
fi
done
fi
done
- fi
- else
- # Failsafe if /mnt/kd/openvpn/openvpnconf.conf is used
- # and OVPNC_SERVER is not defined.
- TRUSTED_IF="tun+"
+ if [ -n "$allowifs" ] && [ $count -gt 1 ]; then
+ IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowifs"
+ fi
+ done
fi
-fi
-if [ -n "$ALLOWLANS" ]; then
- IFS='~'
- for lans in $ALLOWLANS; do
- allowifs=""
- count=0
- IFS=' '
- for lan in $lans; do
- allowif="$(getLANinterface "$lan")"
- if [ $? -eq 0 ]; then
- IFS=' ,'
- for intf in $INT_IF; do
- if [ "$intf" = "$allowif" ]; then
- allowifs="$allowifs${allowifs:+ }$allowif"
- count=$((count + 1))
- break;
+ if [ -n "$DMZ_DENYLAN" ]; then
+ IFS=' ,'
+ for intf in $INT_IF; do
+ allowif="$intf"
+ unset IFS
+ for lan in $DMZ_DENYLAN; do
+ denyif="$(getLANinterface "$lan")"
+ if [ $? -eq 0 ]; then
+ if [ "$intf" = "$denyif" ]; then
+ allowif=""
+ break
fi
- done
+ fi
+ done
+ if [ -n "$allowif" ]; then
+ LAN_DMZ_ALLOW_IF="$LAN_DMZ_ALLOW_IF${LAN_DMZ_ALLOW_IF:+ }$allowif"
fi
done
- if [ -n "$allowifs" ] && [ "$count" -gt 1 ]; then
- IF_TRUSTS="$IF_TRUSTS${IF_TRUSTS:+|}$allowifs"
- fi
- done
-fi
-
-unset IFS
-
+ fi
+}
+astlinux_wrapper
Modified: branches/1.0/project/astlinux/target_skeleton/stat/etc/rc.conf
===================================================================
--- branches/1.0/project/astlinux/target_skeleton/stat/etc/rc.conf 2016-07-09 16:14:30 UTC (rev 7746)
+++ branches/1.0/project/astlinux/target_skeleton/stat/etc/rc.conf 2016-07-10 15:10:17 UTC (rev 7747)
@@ -290,13 +290,17 @@
## Note: Use the /mnt/kd/rc.elocal script to define the necessary static routes.
#NAT_FOREIGN_NETWORK="192.168.6.0/24 192.168.7.0/24"
-## Allow LAN to LAN traffic for internal interfaces, defaults to disallow
+## Allow LAN to LAN traffic for internal interfaces, defaults to disallow.
## Space separate "INTIF" for 1st, "INT2IF" for 2nd, and "INT3IF" for 3rd Internal Interface
## Separate groups using a ~ (tilde)
#ALLOWLANS="INTIF INT2IF"
#ALLOWLANS="INTIF INT2IF~INTIF INT3IF"
#ALLOWLANS="INTIF INT2IF INT3IF"
+## Deny LAN to DMZ traffic for internal interfaces, defaults to allow.
+## Use "INTIF" for 1st, "INT2IF" for 2nd, or "INT3IF" for 3rd Internal Interface, space separated for multiple
+#DMZ_DENYLAN="INT2IF INT3IF"
+
## Traffic Shaping
## Shapetype. This defines the qdisc type. Traffic shaping currently supports htb
## (default and well tested) or the newer hfsc version (less tested). You can
@@ -653,8 +657,9 @@
#username1 password1
#username2 password2
#"
-## Allow OpenVPN Server tunnel to LAN Interface(s), defaults to disallow
+## Allow OpenVPN Server tunnel to LAN Interface(s), defaults to disallow.
## Use "INTIF" for 1st, "INT2IF" for 2nd, or "INT3IF" for 3rd Internal Interface, space separated for multiple
+## Note: OpenVPN Server tunnel to DMZ Interface is allowed.
#OVPN_ALLOWLAN="INTIF"
##
## Firewall Options, automatically supported via AIF openvpn-server plugin.
@@ -692,8 +697,9 @@
#OVPNC_USER_PASS="user pass"
## Define ns-cert-type if set
#OVPNC_NSCERTTYPE="server"
-## Allow OpenVPN Client tunnel to LAN Interface(s), defaults to disallow
+## Allow OpenVPN Client tunnel to LAN Interface(s), defaults to disallow.
## Use "INTIF" for 1st, "INT2IF" for 2nd, or "INT3IF" for 3rd Internal Interface, space separated for multiple
+## Note: OpenVPN Client tunnel to DMZ Interface is allowed.
#OVPNC_ALLOWLAN="INTIF"
## Racoon support - VPN above must include "racoon"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|