Package: netscript-2.4
Version: 5.2.11
Severity: serious
Tags: patch
Missing quotes when setting up bridge resulted in vlaned eth0 interface being
on bridge brg0 with its vlan1 vlan interface. vlan2 was connected to internet.
vlan1 traffic was slow, and connectivity came and went. This happened when
IPv6 was explicitly disabled for eth0, and etho was not configured onto a
bridge. It is a corner case configuration with a serious result iin network
not functioning, and in the case of this system involved, leaking internal
traffic to the Internet. Network configuration was not such that a system on
Internet could connect internally.
Quotes put on 3rd and 4th arguments to brg_iface <interface> up in if.conf
fixes this siuation.
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages netscript-2.4 depends on:
ii bash 4.2-2
ii bridge-utils 1.5-4
ii iproute 20120521-3
ii iptables 1.4.14-2
ii isc-dhcp-client [dhcp3-client] 4.2.2.dfsg.1-5
ii netbase 5.0
Versions of packages netscript-2.4 recommends:
ii quagga 0.99.21-3
Versions of packages netscript-2.4 suggests:
ii dnsmasq 2.62-3
ii quagga 0.99.21-3
pn resolvconf <none>
pn whereami <none>
pn wicd <none>
pn wpasupplicant <none>
-- Configuration Files:
/etc/netscript/if.conf changed:
SED_IFSTR='s/\([A-Za-z]*\)[0-9]*$/\1/'
SED_IPV4STR='s/^.*inet \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+[/0-9]\+\) .*$/\1/'
SED_IPV6STR='s/^.*inet6 \([0-9a-f]\+\:.*\:[0-9a-f]\+[/0-9]\+\) .*$/\1/'
SED_IPV6ADDR="sed -e 's/:0\+\([0-9a-fA-F]\+\)/:\1/g' | sed -e
's/^0\+\([0-9a-fA-F]\+\)/\1/'| sed -e 's/\(:0\)\+:\(:0\)*\|\(:0\)*:\(:0\)\+/:/'"
SED_IPV4ADDR="sed -e 's/\.0\+\([0-9a-fA-F]\+\)/.\1/g' | sed -e
's/^0\+\([0-9a-fA-F]\+\)/\1/'"
if_addr_start () {
local IPADDR2 ADDR ADDR2
local ADDRS
local ANS
local OIFS
local IFACE=$1
# Glue stuff
if [ -n "$MASKLEN" ]; then
IPADDR="${IPADDR}/${MASKLEN}"
fi
if [ -n "$PTPADDR" ]; then
IPADDR="${IPADDR}_peer_${PTPADDR}"
fi
if [ -n "$BROADCAST" ]; then
IPADDR="${IPADDR}_brd_${BROADCAST}"
fi
if [ -n "$IP_EXTRA_ADDRS" ]; then
IPADDR="$IPADDR $IP_EXTRA_ADDRS"
fi
# Take care of leading zeroes in supplied addresses
for ADDR in $IPADDR; do
if echo $ADDR | grep -q ':'; then
#IPv6
ADDR2=`echo $ADDR | eval $SED_IPV6ADDR`
IPADDR2="$IPADDR2 $ADDR2"
else
#IPv4
ADDR2=`echo $ADDR | eval $SED_IPV4ADDR`
IPADDR2="$IPADDR2 $ADDR2"
fi
done
IPADDR="$IPADDR2"
# Set up link MTU etc
ip link set $1 $IFCFG_MULTICAST $IFCFG_MTU
# Set up IPv6 Interface sysctl here before interface goes up
ifv6_setproc $1 accept_redirects $IPV6_ACCEPT_REDIRECTS
ifv6_setproc $1 accept_ra $IPV6_ACCEPT_RA
ifv6_setproc $1 accept_ra_pinfo $IPV6_ACCEPT_RA_PINFO
ifv6_setproc $1 accept_ra_rt_info_max_plen
$IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN
ifv6_setproc $1 disable_ipv6 $IPV6_DISABLE
ifv6_setproc $1 forwarding $IPV6_FWDING
ifv6_setproc $1 router_solicitations $IPV6_ROUTER_SOLICITATIONS
ifv6_setproc $1 use_tempaddr $IPV6_PRIVACY
# Bring the interface up
ip link set dev $1 up
# This one has to be set after interface up
ifv6_setproc $1 mtu $IPV6_MTU
# Set up the addresses on the interface
ADDRS=`ip addr show dev $IFACE | grep '^.*inet[ 46]' \
| sed -e "$SED_IPV4STR" | sed -e "$SED_IPV6STR"`
for ADDR in $IPADDR; do
for ADDR2 in $ADDRS; do
ADDR2=`echo $ADDR2 | sed -e 's/\/32\|\/128//'`
ANS=${ADDR#$ADDR2}
if [ "$ANS" != "$ADDR" ]; then
continue 2
fi
done
OIFS=$IFS
IFS="${IFS}_"
ip addr add $ADDR dev $IFACE
IFS=$OIFS
done
# Strip out addresses that should not be there
for ADDR in $ADDRS; do
# Don't delete IPv6 link local addresses
if echo $ADDR | grep -q -i '^fe[89ab]'; then
continue
fi
ANS=`echo $IPADDR | grep $ADDR`
if [ -z "$ANS" ]; then
ip addr del $ADDR dev $IFACE
fi
done
return 0
}
if_addr_stop () {
local FILE
qt ip link set $1 down
qt ip addr flush dev $1
}
if_up () {
local ADDR
# sort out a few things to make life easier - here so that you
# can see what is done and so that you can add anything if needed
eval IPADDR=\${"$1"_IPADDR:-""} # I am also a good genius
eval MASKLEN=\${"$1"_MASKLEN:-""}
eval BROADCAST=\${"$1"_BROADCAST:-""}
eval PTPADDR=\${"$1"_PTPADDR:-""}
eval IP_EXTRA_ADDRS=\${"$1"_IP_EXTRA_ADDRS:-""}
eval MTU=\${"$1"_MTU:-""}
eval MULTICAST=\${"$1"_MULTICAST:-""}
eval HB_TICKLE=\${"$1"_HB_TICKLE:-""}
eval BRIDGE=\${"$1"_BRIDGE:-""}
eval RESOLVCONF=\${"$1"_RESOLVCONF:-""}
eval local DEFAULT_GW=\${"$1"_DEFAULT_GW:-""}
eval local FAIRQ=\${"$1"_FAIRQ:-""}
eval local TXQLEN=\${"$1"_TXQLEN:-""}
eval local IP_SPOOF=\${"$1"_IP_SPOOF:-""}
eval local IP_KRNL_LOGMARTIANS=\${"$1"_IP_KRNL_LOGMARTIANS:-""}
eval local IP_SHARED_MEDIA=\${"$1"_IP_SHARED_MEDIA:-""}
eval local IP_SEND_REDIRECTS=\${"$1"_IP_SEND_REDIRECTS:-""}
eval local PROXY_ARP=\${"$1"_PROXY_ARP:-""}
eval IPV6_ACCEPT_REDIRECTS=\${"$1"_IPV6_ACCEPT_REDIRECTS:-""}
eval IPV6_ACCEPT_RA=\${"$1"_IPV6_ACCEPT_RA:-""}
eval IPV6_ACCEPT_RA_PINFO=\${"$1"_IPV6_ACCEPT_RA_PINFO:-""}
eval
IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=\${"$1"_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN:-""}
eval IPV6_DISABLE=\${"$1"_IPV6_DISABLE:-""}
eval IPV6_FWDING=\${"$1"_IPV6_FWDING:-""}
eval IPV6_PRIVACY=\${"$1"_IPV6_PRIVACY:-""}
eval IPV6_ROUTER_SOLICITATIONS=\${"$1"_IPV6_ROUTER_SOLICITATIONS:-""}
eval IPV6_MTU=\${"$1"_IPV6_MTU:-""}
if [ -n "DEFAULT_GW" -a -z "$IPV4_DEFAULT_GW" ]; then
IPV4_DEFAULT_GW="$DEFAULT_GW"
IPV4_DEFAULT_GWDEV="$1"
fi
unset IFCFG_BROADCAST IFCFG_MULTICAST IFCFG_MTU
if [ -n "$BROADCAST" ] ; then
IFCFG_BROADCAST="broadcast $BROADCAST"
fi
if [ -n "$MTU" ] ; then
IFCFG_MTU="mtu $MTU"
fi
if [ -n "$MULTICAST" ] ; then
case $MULTICAST in
No|no|NO|off|Off|OFF)
IFCFG_MULTICAST="multicast off"
;;
Yes|YES|yes|on|On|ON)
IFCFG_MULTICAST="multicast on"
;;
*)
unset IFCFG_MUTLICAST
;;
esac
fi
local IFTYPE=`echo $1 | sed -e $SED_IFSTR`
# Do dee global bridge stuff
brg_global
# Set default interface flags here - used for PPP and WAN interfaces
# IPv4
ifv4_setproc default rp_filter $DEF_IP_SPOOF
ifv4_setproc default log_martians $DEF_IP_KRNL_LOGMARTIANS
ifv4_setproc all accept_redirects $ALLIF_ACCEPT_REDIRECTS
# Set up each interface
if qt type ${1}_start ; then
# execute user supplied individual interface start up
${1}_start $1
elif qt type ${IFTYPE}_start ; then
# execute user supplied typed interface start up
${IFTYPE}_start $1
else
# default interface startup
brg_iface $1 up "$BRIDGE" "$IPV6_DISABLE"
# Start interface
if_addr_start $1
fi
# Do universal interface config items here
# QoS setup
ip_QoSclear $1
ip_QoS $1
# Set the TX Queue Length
[ -n "$TXQLEN" ] \
&& ip link set $1 txqlen $TXQLEN
# Default route support
ipv4_default_route $1
ipv6_default_route $1
# Set up routes and ARP etc
if qt type ${1}_network ; then
${1}_network $1
fi
# Resolvconf support
if [ -n "$RESOLVCONF" ]; then
if_resolvconf_up $1 "$RESOLVCONF"
fi
# Interface sysctl stuff here
# IPv4
# Spoof protection
ifv4_setproc $1 rp_filter $IP_SPOOF
# Kernel logging of martians on this interface
ifv4_setproc $1 log_martians $IP_KRNL_LOGMARTIANS
# Shared Media stuff
ifv4_setproc $1 shared_media $IP_SHARED_MEDIA
# Sending of Redirects
ifv4_setproc $1 send_redirects $IP_SEND_REDIRECTS
# Proxy ARP support
ifv4_setproc $1 proxy_arp $PROXY_ARP
# Emit required upstart event - this can be adjusted
iface_upstart_emit 'net-device-up' "IFACE=${1}" 'LOGICAL=${1}' \
'ADDRFAM=inet' 'METHOD=static'
unset IPADDR MASKLEN BROADCAST PTPADDR IP_EXTRA_ADDRS MTU MULTICAST
unset BROADCAST RESOLVCONF
unset IPV6_ACCEPT_REDIRECTS IPV6_ACCEPT_RA IPV6_FWDING IPV6_MTU
unset IPV6_ROUTER_SOLICITATIONS IPV6_PRIVACY IPV6_ACCEPT_RA_PINFO
unset IPV6_DISABLE
unset IFCFG_BROADCAST IFCFG_MULTICAST IFCFG_MTU
return 0
}
if_down () {
local IFTYPE=`echo $1 | sed -e $SED_IFSTR`
# Clean up any resolvconf stuff
if_resolvconf_down $1
# Do Dee global bridge stuff
brg_global
if qt type ${1}_stop ; then
# execute user supplied individual interface shutdown
${1}_stop $1
elif qt type ${IFTYPE}_stop ; then
# execute user supplied typed interface shutdown
${IFTYPE}_stop $1
else
# default action
brg_iface $1 down $IPV6_DISABLE
if_addr_stop $1
fi
# Clean up any QoS/fair queuing stuff
ip_QoSclear $1
# Clean up IPv6 stuff
if [ -d ${IPV6_PROC}/conf/${1} ]; then
for FILE in accept_redirects accept_ra forwarding \
router_solicitations use_tempaddr; do
echo `cat $IPV6_PROC/conf/default/$FILE` \
> $IPV6_PROC/conf/$1/$FILE
done
fi
# Emit required upstart event - this can be adjusted
iface_upstart_emit 'net-device-down' "IFACE=${1}" "LOGICAL=${1}" \
'ADDRFAM=inet' 'METHOD=static'
true
} #END if_down
if_lo_up () {
# Bring up interface lo
case "$IPV4_DISABLE" in
YES|Yes|yes)
;;
*)
qt ip addr add 127.0.0.1/8 broadcast 127.255.255.255 dev lo
;;
esac
ip link set lo up \
&& iface_upstart_emit 'net-device-up' 'IFACE=lo' 'LOGICAL=lo' \
'ADDRFAM=inet' 'METHOD=static'
}
if_resolvconf_up () {
if [ $# != 2 -a $# != 3 ]; then
echo " Usage: `basename $0`: fn if_resolvconf_up <if-name>
<search-path> <ns1-ip>" 1>&2
echo " `basename $0`: fn if_resolvconf_up <if-name>
<resolvconf-stdin>" 1>&2
return 1;
fi
! qt type resolvconf && return 1
if [ $# = 3 ]; then
echo -ne "search ${2}\nnameserver ${3}\n" | resolvconf -a $1
else
echo -ne "$2" | resolvconf -a $1
fi
}
if_resolvconf_down () {
if [ $# != 1 ]; then
echo " Usage: `basename $0`: fn if_resolvconf_down <if-name>"
1>&2
return 1;
fi
! qt type resolvconf && return 1
# Go and do it...
resolvconf -d $1
}
/etc/netscript/ipfilter-defs/README [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/README'
/etc/netscript/ipfilter-defs/dnat-defs [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/dnat-defs'
/etc/netscript/ipfilter-defs/example.def [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/example.def'
/etc/netscript/ipfilter-defs/example2.def [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/example2.def'
/etc/netscript/ipfilter-defs/local.def [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/local.def'
/etc/netscript/ipfilter-defs/masq-defs [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/masq-defs'
/etc/netscript/ipfilter-defs/network-defs [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/network-defs'
/etc/netscript/ipfilter-defs/prototypes-defs [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/prototypes-defs'
/etc/netscript/ipfilter-defs/prototypes.sh [Errno 13] Permission denied:
u'/etc/netscript/ipfilter-defs/prototypes.sh'
/etc/netscript/network.conf changed:
VERBOSE=YES
IPV6_MODULE=Yes
IPV6_DISABLE=NO
IPV4_DISABLE=NO
IPV4_FWDING_KERNEL=NO
IPV6_FWDING_KERNEL=NO
IPV4_DEFAULT_GW=192.168.110.254
IPV4_DEFAULT_GWDEV=brg0
IP_FILTER_KERNEL=NONE
NET_GLOBAL_SYSCTL="
ipv4/ip_nonlocal_bind NO
ipv4/ip_dynaddr NO
ipv4/icmp_echo_ignore_all NO
ipv4/icmp_echo_ignore_broadcasts YES
ipv4/tcp_ecn NO
"
BACKUP_LEVELS=3
IF_AUTO="brg0 bdmz0 binet0 bvm0 eth0 vlan1 vlan2"
IF_DYNAMIC="tun0 vlan1 vlan2"
ALLIF_ACCEPT_REDIRECTS=NO
IF_DEFAULT_IPV6_DISABLE=YES
DEF_IP_SPOOF=YES
DEF_IP_KRNL_LOGMARTIANS=YES
BRG_SWITCH=1
BRG_LIST="bdmz0 bvm0 binet0"
brg0_IPADDR="192.168.110.1/24_brd_192.168.110.255
fd14:828:ba69:1:21c:f0ff:fefa:f3c0/64 2001:470:f012:1:21c:f0ff:fefa:f3c0/64"
eth0_IP_SPOOF=NO
eth0_IP_KRNL_LOGMARTIANS=NO
eth0_IPV6_DISABLE=YES
bvm0_IPV6_DISABLE=YES
bdmz0_IPV6_DISABLE=YES
binet0_IPV6_DISABLE=YES
brg0_IPV6_DISABLE=NO
brg0_IPV6_ACCEPT_RA=YES
brg0_IPV6_ACCEPT_RA_PINFO=NO
brg0_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=64
eth0_IF_CHAIN_AUTO="vlan1 vlan2"
vlan1_BRIDGE=brg0
vlan2_BRIDGE=binet0
ipsec0_IP_SPOOF=NO
ppp1_IPADDR=192.168.2.1
chdlc0_IPADDR=192.168.10.1_peer_192.168.10.2
tun_start () {
local PIDFILE="/var/run/openvpn.${1}.pid"
# don't run openvpn if link already exists...
[ -f $PIDFILE ] && kill -0 `cat $PIDFILE` && return 0
openvpn --config /etc/openvpn/$1.netscript \
--writepid $PIDFILE \
--cd /etc/openvpn \
--daemon openvpn.$1
}
tun_stop () {
local PIDFILE="/var/run/openvpn.${1}.pid"
[ ! -f $PIDFILE ] && return 0
qt kill `cat $PIDFILE`
[ -f $PIDFILE ] && rm $PIDFILE
sleep 5 # Wait for openvpn to die
}
tap_start () {
tun_start "$@"
}
tap_stop () {
tun_stop "$@"
}
vlan1_start () {
ip link add link eth0 name $1 type vlan id 1
# default interface startup
brg_iface $1 up "$BRIDGE" "$IPV6_DISABLE"
# Start interface
if_addr_start $1
}
vlan2_start () {
ip link add link eth0 name $1 type vlan id 2
# default interface startup
brg_iface $1 up "$BRIDGE" "$IPV6_DISABLE"
# Start interface
if_addr_start $1
}
vlan_stop () {
# default action
brg_iface $1 down $IPV6_DISABLE
if_addr_stop $1
# Take out vlan device
ip link delete $1
}
wlan0_start () {
# don't run pppd if link already exists...
#[ -f "/var/run/hostapd-${1}.pid" ] && kill -0 `cat
"/var/run/hostapd-${1}.pid"` && return 0
#ip link set dev $1 up
#/usr/sbin/hostapd -B -P "/var/run/hostapd-${1}.pid"
/etc/hostapd/hostapd.conf
brg_iface $1 up $BRIDGE
}
wlan0_stop () {
#[ ! -f "/var/run/hostapd-${1}.pid" ] && return 0
#qt kill `cat "/var/run/hostapd-${1}.pid"`
#ip link set dev $1 down
brg_iface $1 down
}
MRK_CRIT=0x1 # Critical traffic, routing, DNS
MRK_IA=0x2 # Interactive traffic - telnet, ssh, IRC
MRK_T1=0xa
MRK_T2=0x14
CLS_FAIRQ="${MRK_CRIT}_89_0/0 ${MRK_CRIT}_udp_0/0_route ${MRK_CRIT}_tcp_0/0_bgp
${MRK_CRIT}_tcp_0/0_domain ${MRK_CRIT}_udp_0/0_domain ${MRK_IA}_tcp_0/0_telnet
${MRK_IA}_tcp_0/0_ssh"
IPV6_CLS_FAIRQ="${MRK_CRIT}_89_0/0 ${MRK_CRIT}_udp_0/0_route
${MRK_CRIT}_tcp_0/0_bgp ${MRK_CRIT}_tcp_0/0_domain ${MRK_CRIT}_udp_0/0_domain
${MRK_IA}_tcp_0/0_telnet ${MRK_IA}_tcp_0/0_ssh"
MANGLE_OUTPUT_BYPASS="gre_0/0 esp_0/0 ah_0/0 ipip_0/0 encap_0/0"
IPV6_MANGLE_OUTPUT_BYPASS="gre_0/0 esp_0/0 ipip_0/0 encap_0/0"
LOG_LEVEL=warning
LOG_MAXRATE=3 # messages per second
LOG_TARGET=REJECT
IPV6_LOG_TARGET=REJECT
MARTIAN_BYPASS="192.168.110.0/24"
MARTIAN_NETS="" # List of additional martian/invalid
# IP source addresses - network/mask
IPV6_MARTIAN_NETS=""
SNMP_MANAGER_IPS="192.168.1.1"
SNMP_DEST_BLOCK=0/0
LINK_NET="192.168.1.0/30"
IP_BLOCKS="10.0.100.2 10.0.0.0/8"
SMB_BLOCK=YES
BLOCKED_INSRC="all_10.200.1.1"
LOGGED_BLOCKED_INSRC="all_10.200.1.2"
BLOCKED_INDEST="tcp_10.0.2.1_23 udp_10.0.3.4_domain"
LOGGED_BLOCKED_INDEST="tcp_192.168.45.6_smtp"
DNS_IPS="202.36.174.1"
BLOCKED_OUTDEST="tcp_10.0.0.1_23 udp_10.0.0.2_domain"
LOGGED_BLOCKED_OUTDEST="tcp_10.0.0.1_smtp"
-- debconf-show failed
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]