#!/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