#!/bin/bash # # kidnet - start/stop masquerading for child's machine # (C) 2003 Glenn R. Stone - http://www.liawol.org # GPL Version 2 - # http://www.gnu.org/copyleft/gpl.html # # Usage - crontab: # mm hh dd MM WW /usr/local/bin/kidnet down # # mm hh dd MM WW /usr/local/bin/kidnet up # # from command line: # kidnet up - bring up NOW. Yells if GROUNDED. # kidnet down - bring down NOW. Yells if FREE. # kidnet ground - bring down NOW and stay down. # kidnet free - bring net up NOW and stay up. # kidnet unground - undo GROUNDED, *brings net up.* # **** FIXME if you don't want unground to auto-up, modify the script # kidnet unfree - undo FREE - DOES NOT BRING NET DOWN # # customizeables VICTIM=192.168.0.101 SUBNET=192.168.0.0/24 RULE="FORWARD -s $VICTIM -o eth0 -j REJECT" PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin test -x /sbin/iptables || exit 0 set -e case "$1" in up) if [ -f /var/run/kidnet.GROUNDED ] then echo "Kidnet is GROUNDED... sorry." else iptables -D $RULE || true; rm -f /var/run/kidnet.DOWN touch /var/run/kidnet.UP echo "Kidnet access is UP." fi ;; down) if [ -f /var/run/kidnet.FREE ] then echo "FREE is set. Kidnet still UP." else if [ -f /var/run/kidnet.DOWN ] then echo "Kidnet already DOWN." else iptables -I $RULE touch /var/run/kidnet.DOWN rm -f /var/run/kidnet.UP echo "Kidnet is DOWN." fi fi ;; ground) rm -f /var/run/kidnet.FREE touch /var/run/kidnet.GROUNDED $0 down echo "Kidnet is GROUNDED." ;; unground) rm -f /var/run/kidnet.GROUNDED $0 up echo "Kidnet is UNGROUNDED" ;; free) rm -f /var/run/kidnet.GROUNDED touch /var/run/kidnet.FREE $0 up echo "Kidnet is FREE." ;; unfree) rm -f /var/run/kidnet.FREE echo "Kidnet is returned to normal operation." $0 status ;; status) for i in $(ls -1 /var/run/kidnet.* | sed -e 's/.*\.//') do echo Kidnet is $i done ;; *) echo "Usage: kidnet {up|down|ground|free|unground|unfree|status}" >&2 exit 1 ;; esac exit 0