#!/bin/sh ### BEGIN INIT INFO # Provides: firewall # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: 0 1 6 # Short-Description: Firewall script by ytti and juhtolv # Description: This file should be used by /etc/network/interfaces ### END INIT INFO # ytti (at) iki (dot) fi, toimii mulla, ei välttämättä sulla, avh. # Alkuperäinen konfis oli joskus täällä: http://ytti.fi/firewall # Juhapekka "naula" Tolvanen # http://iki.fi/juhtolv # juhtolv (at) iki (dot) fi : # Muokkasin tätä ja tää yhä toimii mulla muttei välttämättä sulla. # Mitään takuuta en anna enkä ota vastuuta seurauksista. # Aina häviää - ihan joka päivä. PATH='/usr/sbin:/sbin:/usr/bin:/bin' export PATH case "$1" in start) #for m in iptable_filter ip_tables ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_REJECT ipt_multiport ipt_state ipt_LOG #do # modprobe $m #done if [ $2 ]; then int=$2; else int=`tail -n1 /proc/net/route|sed "s/\([^ ]\+\).*/\1/"`; fi echo int=$int mie="`ifconfig $int|grep 'inet addr'|sed -e 's/.*inet addr:\([0-9\.]\+\).*/\1/'`/32" echo mie=$mie # tiputetan kaikki iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # luodaan loggaava tiputusketju iptables -N droplog iptables -F droplog iptables -A droplog -m limit -j LOG --log-level debug iptables -A droplog -j DROP # sallitaan localhostissa liikenne molempiin suuntiin iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ##################################################### # sallitaan yhteydet ulospäin iptables -A OUTPUT -s $mie -o $int -j ACCEPT # sallitaan muodostetut yhteydet tilatietoisesti sisään iptables -A INPUT -m state --state ESTABLISHED,RELATED -d $mie -i $int -j ACCEPT # sallitaan ICMP-viestit sisään iptables -A INPUT -p icmp -m limit --limit 1/second -d $mie -i $int -j ACCEPT # sallitaan ssh sisään iptables -A INPUT -p tcp -d $mie --dport ssh -i $int -j ACCEPT # sallitaan yhteydet porttiin 10000, jonka takana on debtorrent #iptables -A FORWARD -p tcp -d $mie --dport 10000 -i $int -j ACCEPT #iptables -t mangle -A INPUT -p tcp -d $mie --dport 9988 --sport 10000 -i $int -j ACCEPT #iptables -t mangle -A FORWARD -p tcp -d $mie --sport 9988 --dport 10000 -i $int -j ACCEPT # sallitaan irkiltä ident-pyynnöt #iptables -A INPUT -p tcp -s irc.jyu.fi -d $mie --dport auth -i $int -j ACCEPT # sallitaan tunnetuilta IRC-servereiltä ident-pyynnöt # (lisää nuo IRC-serverit IRC-klienttisi konfikseen): #IRCSERVERS_IRCNET="irc.jyu.fi irc.cs.hut.fi aapo.it.lut.fi irc.stealth.net" #IRCSERVERS_IRCNET="irc.saunalahti.fi miekka.saunalahti.fi irc.jyu.fi irc.cs.hut.fi aapo.it.lut.fi irc.stealth.net" #IRCSERVERS_FREENODE="orwell.freenode.net" #IRCSERVERS_DALNET="irc.dal.net ced.se.eu.dal.net powertech.no.eu.dal.net matrix.de.eu.dal.net starburst.nl.eu.dal.net tiscali.uk.eu.dal.net gaston.se.eu.dal.net brain.hub.eu.dal.net" #IRCSERVERS="$IRCSERVERS_IRCNET" #IRCSERVERS="$IRCSERVERS_IRCNET $IRCSERVERS_DALNET" #IRCSERVERS="$IRCSERVERS_IRCNET $IRCSERVERS_FREENODE $IRCSERVERS_DALNET" #IRCSERVERS="$IRCSERVERS_FREENODE" #for i in $IRCSERVERS #do # iptables -A INPUT -p tcp -s $i -d $mie --dport auth -i $int -j ACCEPT #done # Sallitaan BitTorrent -liikenne: for s in `seq 6881 6999` 6666 12466 do iptables -A INPUT -p tcp -d $mie --dport $s -i $int -j ACCEPT done iptables -A INPUT -p udp -d $mie --dport 12466 -i $int -j ACCEPT # Sallitaan Napster/OpenNap-liikenne #for n in `seq 6699 6799` #do # iptables -A INPUT -p tcp -d $mie --dport $n -i $int -j ACCEPT #done # Sallitaan Gnutella- ja OpenFT-liikenne #for o in 3825 1764 2216 #do # iptables -A INPUT -p tcp -d $mie --dport $o -i $int -j ACCEPT #done # Sallitaan aMule-liikenne #for p in 4662 #do # iptables -A INPUT -p tcp -d $mie --dport $p -i $int -j ACCEPT #done #for q in 4672 #do # iptables -A INPUT -p udp -d $mie --dport $q -i $int -j ACCEPT #done # Sallitaan SoulSeek-liikenne #for r in `seq 2234 2239` #do # iptables -A INPUT -p tcp -d $mie --dport $r -i $int -j ACCEPT #done # Sallitaan Peercast -liikenne: #for t in 7144 7145 #do # iptables -A INPUT -p tcp -d $mie --dport $s -i $int -j ACCEPT #done # Sallitaan DC++ -liikenne: ##for s in 411 555 `seq 1025 32000` #for s in 411 555 #do # iptables -A INPUT -p tcp -d $mie --dport $s -i $int -j ACCEPT #done # hylätään ident ja socks, eikä logata iptables -A INPUT -p tcp -m multiport -d $mie --dport auth,socks -i $int -j REJECT # hylätään socks, eikä logata iptables -A INPUT -p tcp -m multiport -d $mie --dport socks -i $int -j REJECT # logataan tiputetut iptables -A INPUT -j droplog ;; stop) iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F droplog iptables -X droplog #modprobe -r ipt_REJECT ipt_multiport ipt_state ipt_LOG ip_conntrack_ftp ip_conntrack iptable_filter ip_tables ;; restart) $0 stop ; $0 start ;; reload) $0 start ;; Pre-Up) iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ;; status) iptables -L ;; adv-status) iptables -L -v --line-numbers ;; *) echo "Usage: $0 {start|stop|restart|reload|status|adv-status}" >&2 exit 1 esac exit 0