#!/bin/bash
# (c) SC Teletrans SA http://www.teletrans.ro
PATH=/sbin:/usr/sbin:/bin:/usr/bin
UP_IF="eth0" # interfata externa
LAN_IF="eth1" # interfata interna
NAT="192.168.13.150" # ip-ul pe care se face NAT
INT="10.0.0.0/24" # reteaua interna
function start() {
echo "Starting firewall..."
# incarcam modulele esentiale
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
# setam politica implicita de acceptare
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
##### Reguli pe lantul INPUT, toate interfetele #####
# permitem ICMP
for tip_icmp in echo-request echo-reply destination-unreachable time-exceeded parameter-problem
do
iptables -A INPUT -p icmp --icmp-type ${tip_icmp} -j ACCEPT
done
# Interfata LOOPBACK
# acceptam orice trafic pe loopback
iptables -A INPUT -i lo -j ACCEPT
# Interfata externa UP_IF
# permitem servicii publice TCP
for port in domain ftp ftp-data http https smtp pop3s
do
iptables -A INPUT -p tcp -i ${UP_IF} --dport ${port} -m state --state NEW -j ACCEPT
done
# permitem servicii publice UDP
for port in domain
do
iptables -A INPUT -p udp -i ${UP_IF} --dport ${port} -m state --state NEW -j ACCEPT
done
##### Reguli NAT #####
iptables -t nat -A POSTROUTING -s $INT -d ! $INT -j SNAT --to $NAT
# Interfata internata LAN_IF
iptables -A INPUT -i ${LAN_IF} -j ACCEPT
# INPUT - refuzam restul pachetelor
iptables -A INPUT -j DROP
#### Reguli pe lantul FORWARD
# permitem conexiunile deja initiate, le respingem pe cele invalide
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# permitem ICMP
for tip_icmp in echo-request echo-reply destination-unreachable time-exceeded parameter-problem
do
iptables -A FORWARD -p icmp --icmp-type ${tip_icmp} -j ACCEPT
done
# permitem orice conexiuni din reteaua interna
iptables -A FORWARD -i $LAN_IF -o $UP_IF -j ACCEPT
# orice alta conexiune in lant este respinsa
iptables -A FORWARD -j DROP
}
function stop() {
echo "Stopping firewall..."
iptables -P INPUT ACCEPT
iptables -F
iptables -t nat -F
}
# main
case "$1" in
start)
stop; start
;;
stop)
stop
;;
restart)
esac
exit 0