[ale] Limiting web browsing with IPTables?
James Sumners
james at sumners.ath.cx
Tue Jun 17 09:43:27 EDT 2003
Thanks.
On Tue, 17 Jun 2003 09:20:04 -0400
"Michael D. Hirsch" <mhirsch at nubridges.com> wrote:
> On Monday 16 June 2003 10:05 pm, James Sumners wrote:
>
> > I started looking at gShield but it doesn't seem configurable to do what
> > I want. Does anyone know some simple rules that would do this?
>
> I founds fwbuilder to be a really powerful and flexible firewall builder.
> The Linux Journal has a couple of tutorials on it (last month and the
> month before) that explains it pretty well.
>
> As a test, I just tried it. I defined two hosts (1.2.3.4 and 9.8.7.6) and
> then put them in a group named "Allowed hosts". I defined a firewall
> named "Web filter".
>
> I then used the wizard, telling it to allow ssh connections in and any
> connection on loopback. I specified Linux and iptables as the destination
> rule set.
>
> Then I made two custom rules by drag'n'dropping the objects. The first
> rule said to allow http and https connections from Web filter to allowed
> hosts. The second said to deny any http https connections to anywhere.
>
> I turned on logging on those two rules and saved my config file.
>
> Finally, I ran the rules compiler. This is what I got:
>
> #!/bin/sh
> #
> # This is automatically generated file. DO NOT MODIFY !
> #
> # Firewall Builder fwb_ipt v1.0.9-1
> #
> # Generated Tue Jun 17 09:13:04 2003 EDT by hirsch
> #
> #
> #
> #
>
> check() {
> N=$1
> F=$2
> test "Z$F" = "Z" && F=$N
> F=`which $F 2>/dev/null`
> test ! -x "$F" && {
> echo "$1 not found or is not executable"
> exit 1
> }
> }
>
>
> log() {
> test -x "$LOGGER" && logger -p info "$1"
> }
>
> va_num=1
>
> add_addr() {
> addr=$1
> nm=$2
> dev=$3
> ( $IP -4 addr show dev $dev | grep -q "${addr}/" ) ||
> {
> echo "$dev: $addr/$nm"
> $IP -4 addr add $addr/$nm dev $dev brd + scope global label
> $dev:FWB${va_num}
> va_num=$((va_num + 1))
> }
> }
>
>
> LSMOD="/sbin/lsmod"
> MODPROBE="/sbin/modprobe"
> IPTABLES="/sbin/iptables"
> IP="/sbin/ip"
> LOGGER="/usr/bin/logger"
>
> check lsmod $LSMOD
> check modprobe $MODPROBE
> check iptables $IPTABLES
> check ip $IP
>
> cd /etc || exit 1
>
> log "Activating firewall script generated Tue Jun 17 09:13:04 2003 EDT by
> hirsch"
>
>
> INTERFACES="lo "
> for i in $INTERFACES ; do
> $IP link show "$i" > /dev/null 2>&1 || {
> echo Interface $i does not exist
> exit 1
> }
> done
>
>
>
> FWD=`cat /proc/sys/net/ipv4/ip_forward`
> echo "0" > /proc/sys/net/ipv4/ip_forward
>
>
>
>
> add_addr 127.0.0.1 8 lo
>
> $IPTABLES -P OUTPUT DROP
> $IPTABLES -P INPUT DROP
> $IPTABLES -P FORWARD DROP
>
>
>
> cat /proc/net/ip_tables_names | while read table; do
> $IPTABLES -t $table -L -n | while read c chain rest; do
> if test "X$c" = "XChain" ; then
> $IPTABLES -t $table -F $chain
> fi
> done
> $IPTABLES -t $table -X
> done
>
>
>
> MODULE_DIR="/lib/modules/`uname -r`/kernel/net/ipv4/netfilter/"
> MODULES=`(cd $MODULE_DIR; ls *_conntrack_* | sed 's/\.o.*$//')`
> for module in $(echo $MODULES); do
> if $LSMOD | grep ${module} >/dev/null; then continue; fi
> if [ -e "${MODULE_DIR}/${module}.o" -o -e "${MODULE_DIR}/${module}.o.gz"
> ]; then
> $MODPROBE ${module} || exit 1
> fi
> done
>
>
> $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
> $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
> $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> #
> # Rule 0(lo)
> #
> # allow everything on loopback
> #
> $IPTABLES -A FORWARD -i lo -j ACCEPT
> $IPTABLES -A FORWARD -o lo -j ACCEPT
> #
> # Rule 0(global)
> #
> # Only allow web connections to these hosts
> #
> $IPTABLES -N Cid3EEF1322.0
> $IPTABLES -A OUTPUT -d 1.2.3.4 -m state --state NEW -j Cid3EEF1322.0
> $IPTABLES -A OUTPUT -d 9.8.7.6 -m state --state NEW -j Cid3EEF1322.0
> $IPTABLES -N RULE_0
> $IPTABLES -A Cid3EEF1322.0 -p tcp -m multiport --destination-port 80,443
> -m state --state NEW -j RULE_0
> $IPTABLES -A RULE_0 -j LOG --log-level info --log-prefix "RULE 0 --
> ACCEPT "
> $IPTABLES -A RULE_0 -j ACCEPT
> #
> # Rule 1(global)
> #
> # Deny web connections evrywhere else
> #
> $IPTABLES -N RULE_1
> $IPTABLES -A OUTPUT -p tcp -m multiport --destination-port 80,443 -j
> RULE_1
> $IPTABLES -A RULE_1 -j LOG --log-level info --log-prefix "RULE 1 -- DROP
> "
> $IPTABLES -A RULE_1 -j DROP
> #
> # Rule 2(global)
> #
> #
> #
> $IPTABLES -A INPUT -p tcp --destination-port 22 -m state --state NEW -j
> ACCEPT
> #
> # Rule 3(global)
> #
> # allow all outgoing connections
> #
> $IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT
> #
> # Rule 4(global)
> #
> # 'catch all' rule
> #
> $IPTABLES -N RULE_4
> $IPTABLES -A INPUT -j RULE_4
> $IPTABLES -A RULE_4 -j LOG --log-level info --log-prefix "RULE 4 -- DROP
> "
> $IPTABLES -A RULE_4 -j DROP
> #
> #
> echo 1 > /proc/sys/net/ipv4/ip_forward
>
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
--
All governments suffer a recurring problem: Power attracts pathological
personalities. It is not that power corrupts but that it is magnetic to the
corruptible. Such people have a tendency to become drunk on violence, a
condition to which they are quickly addicted.
Missionara Protectiva, Text QIV (decto)
CH:D 59
_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale
More information about the Ale
mailing list