All pastes #142142 Raw Edit

dls-128

public text v1 · immutable
#142142 ·published 2006-08-21 09:02 UTC
rendered paste body
#!/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