#!/bin/bash
#
# Namn: ipt.sh
# Version: 0.5
# Beskrivning:Iptables init script för att på ett
# enkelt sätt blocka inkommande trafik
# som inte är initierad från lokala datorn.
# Jag tar det för givet att datorn enbart
# har ett nätverkskort och inte använder ppp,
# Alltså en dator kopplad via bredband.
#
# Av:_--- Rodrigo Hidalgo ---_
#
# Tillägg:
# Under årens lopp har det tillkommit en hel del,
# ev.misstag får jag helt ensam stå för. Ta bort
# "kommentaren" (#) om du vill att regeln ska gälla. 
# 
#--Håkan Nilsson--

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# kolla om vi fått med argument
if [[ "$1" = "" ]] ;then
echo "Usage: ipt.sh start/stop"
exit
fi

echo -e " --___ Startar lokal firewall ___--\n"
logger Startar lokal firewall
# -- -- Fas1 -- -- #
IPT="/usr/sbin/iptables" # iptables binär
#IF="eth0"# första nätverks interfacet (på laptopen=trådlöst)
IF="eth1"# "Fasta kortet" på laptopen 

# Ta reda på ip adress. För att kunna få dhcp_ip så kör denna script efter dhcp init

ETH0_IP=`ifconfig $IF|grep inet|awk '{print $2}'|tr -d addr:`

# Sätt kernel inställningar

# ingen ip_forwarding =0 annars =1
echo "0" > /proc/sys/net/ipv4/ip_forward
# inga redirects
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
# inga source route
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
# logga ovanliga paket
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians 

# -- -- Fas2 -- -- #

# Kontrollera att iptables finns och att vi har ett ip på eth0

if [[ -f $IPT && -x $IPT ]];then
echo -e "Fint vi har iptables och vi kan exekvera den!\n"
else
echo -e "Hum jag kan inte hitta iptables eller så kan man inte exekvera den"
exit
fi

if [[ "$ETH0_IP" = "" ]];then
echo -e "Vi fick inte tag på eth ip, sorry"
exit
else
echo -e "Du har ip $ETH0_IP\n"
fi

start()
{
# rensa nuvarande regler och kedjor
$IPT -F
$IPT -X

# sätt standard policyn
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# det här är amsn
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 6890:6900 -j ACCEPT

# det här är NFS
# för "portmapper"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 111 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 111 -j ACCEPT

# för "NFS Daemon"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 2049 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 2049 -j ACCEPT

# för "statd"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 4000 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 4000 -j ACCEPT

# för "mountd"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 4002 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 4002 -j ACCEPT

# för "lockd"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 1030 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 1028 -j ACCEPT

#det här är ssh
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 22 -j ACCEPT

# det här är VNC
# för "X"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 6000 -j ACCEPT

# för "x11vnc"
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 5900 -j ACCEPT

#det här är för samba
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 135 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 139 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 445 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 137 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 138 -j ACCEPT

#det här är för cups
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 631 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 631 -j ACCEPT

#det här är för dcgui-qt
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 9176 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 9176 -j ACCEPT

#det här är loggen
#$IPT -A INPUT -m limit --limit 5/minute --limit-burst 3 -j LOG --log-prefix "MAIN_DROP"

#det här är bit-torrent
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 6881:6889 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 6881:6889 -j ACCEPT

#det här är för Skype
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 32975 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p udp --dport 32975 -j ACCEPT

#det här är för Piave
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 6100 -j ACCEPT

#det här är för filservern
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 20 -j ACCEPT
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 21 -j ACCEPT

#det här är för att "Apache" och min filserver ska fungera
#$IPT -A INPUT -i $IF -d $ETH0_IP -p tcp --dport 8080 -j ACCEPT

#det här är för att laptopen (Toshiba'n) ska komma ut på nätet
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -A INPUT -i $IF -m state --state NEW, INVALID -j DROP
#iptables -A FORWARD -i $IF -m state --state NEW, INVALID -j DROP
#iptables -I FORWARD -o $IF -j DROP
#iptables -I FORWARD -s 10.0.1.0/24 -d 10.0.1.1 -j ACCEPT
}

stop()
{
#rensa alla regler och kedjor
$IPT -F
$IPT -X

#sätt accept regel
$IPT -P INPUT ACCEPT
}


if [[ "$1" = "start" ]];then
start
echo -e "Startar brandväggen!\n"
fi

if [[ "$1" = "stop" ]];then
stop
echo -e "Stoppar brandväggen!\n"
fi

exit

Valid XHTML 1.0 Transitional