rendered paste body#!/bin/bash
# /etc/rc.d/rc.rc.firewall
# firewall start up script
# (c) Proteus
do_start() {
# Proceed only if a bridge is ready and ruuning
if ! grep -q br0 /proc/net/dev ; then
printf "Brigde not set up ...$0 Aborted!\n"
exit 1
fi
MODULES="ip_conntrack ip_conntrack_ftp iptable_nat ip_nat_ftp"
for module in $MODULES; do
modprobe $module
done
############################################################################
# the firewall rules.
#
# only traffic eth1-->eth2 is permitted
# and related return traffic
# everything else is blocked.
iptables -P FORWARD DROP
iptables -A FORWARD -m physdev --physdev-in eth1 --physdev-out eth2 -j ACCEPT
iptables -A FORWARD -m physdev --physdev-in eth2 --physdev-out eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# emule ports to p800
#
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 113 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 113 -j DNAT --to 192.168.1.5:113
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 4662 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 4662 -j DNAT --to 192.168.1.5:4662
iptables -A FORWARD -m physdev --physdev-is-bridged -p udp --dport 4672 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p udp --dport 4672 -j DNAT --to 192.168.1.5:4672
iptables -A FORWARD -m physdev --physdev-is-bridged -p udp --dport 4665 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p udp --dport 4665 -j DNAT --to 192.168.1.5:4665
#
# bittorrent ports to p800
#
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 6881 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 6881 -j DNAT --to 192.168.1.5:6881
iptables -A FORWARD -m physdev --physdev-is-bridged -p udp --dport 6881 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p udp --dport 6881 -j DNAT --to 192.168.1.5:6881
iptables -A FORWARD -m physdev --physdev-is-bridged -p udp --dport 4444 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p udp --dport 4444 -j DNAT --to 192.168.1.5:4444
#
# ftp ports to router
#
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 21 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 20 -j DNAT --to 192.168.1.4:20
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 21 -j DNAT --to 192.168.1.4:21
#
#
# web port for router
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 80 -j DNAT --to 192.168.1.4:80
#
# smtp port router
#
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 25 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 25 -j DNAT --to 192.168.1.4:25
# Diogenes router
iptables -A FORWARD -m physdev --physdev-is-bridged -p tcp --dport 8888 -j ACCEPT
iptables -t nat -A PREROUTING -m physdev --physdev-is-bridged -p tcp --dport 8888 -j DNAT --to 192.168.1.4:8888
echo "Firewall is up!"
}
do_stop() {
echo "Stopping Firewall..."
iptables -t nat -F PREROUTING
iptables -F FORWARD
iptables -P FORWARD ACCEPT
echo "Firewall is down."
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
sleep 1
do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0