#!/bin/sh #ytti@iki.fi, toimii mulla, ei välttämättä sulla, avh. # editoinut laiti (at) iki.fi, toimii myös mulla # vaatii käynnissä olevan ja toimivan ulogd:n PATH='/usr/sbin:/sbin:/usr/bin:/bin' #modprobe iptable_filter #modprobe ip_conntrack_ftp case "$1" in start) echo -n "Starting firewall: " # jos laitetta ei ole määritelty, yritetään arvata routen avulla mikä laite halutaan muurata if [ $2 ]; then int=$2; else int=`tail -n1 /proc/net/route|sed "s/\([^ ]\+\).*/\1/"`; fi # kaivetaan laitteen ip mie="`ifconfig $int|grep 'inet addr'|sed -e 's/.*inet addr:\([0-9\.]\+\).*/\1/'`/32" # ipv6-tunnelintarjoajan ip sics_ip="193.10.66.219" # lähiverkon ip ceicel="172.18.55.1" # koko lähiverkko lanaddr="172.18.55.0/29" # 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 -j ULOG --ulog-nlgroup 1 --ulog-prefix firewall: --ulog-qthreshold 10 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 liikenne lähiverkossa for kone in $lanaddr; do iptables -A OUTPUT -s $ceicel -d $kone -o $int -j ACCEPT iptables -A INPUT -s $kone -d $ceicel -i $int -j ACCEPT done # 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 IP protocol 41 ipv6-tunnelintarjoajalta iptables -A INPUT -s $sics_ip -i $int -d $mie --proto 41 -j ACCEPT # sallitaan ICMP-viestit sisään iptables -A INPUT -p icmp -m limit --limit 2/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 portit 62100-63400 tavallisia käyttäjiä varten iptables -A INPUT -p tcp -d $mie --dport 62100:63400 -i $int -j ACCEPT iptables -A INPUT -p udp -d $mie --dport 62100:63400 -i $int -j ACCEPT # sallitaan irkiltä ident-pyynnöt iptables -A INPUT -p tcp -s 195.197.52.90 -d $mie --dport auth -i $int -j ACCEPT iptables -A INPUT -p tcp -s 192.98.101.228 -d $mie --dport auth -i $int -j ACCEPT # hylätään ident ja socks eikä logata iptables -A INPUT -p tcp -m multiport -d $mie --dport auth,socks -i $int -j REJECT # tiputetaan netbios- ja bootp-pyynnöt, eikä logata iptables -A INPUT -p udp -m multiport -i $int --dport bootps,bootpc,netbios-dgm,netbios-ns,netbios-ssn,microsoft-ds -j DROP # netbios-liikenne ulospäin ei ole suotavaa iptables -A OUTPUT -m multiport -p tcp --dport 137,138,139,445 -s $mie -o $int -j DROP iptables -A OUTPUT -m multiport -p udp --dport 137,138,139,445 -s $mie -o $int -j DROP # hylätään turhat broadcastit eikä logata iptables -A INPUT -d 255.255.255.255 -i $int -j DROP # logataan tiputetut iptables -A INPUT -j droplog echo "ytti." ;; stop) echo -n "Stopping firewall: " 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 echo "ytti." ;; restart) $0 stop ; $0 start ;; reload) $0 start ;; Pre-Up) iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ;; *) echo "Usage: $0 {start|stop|restart|reload}" >&2 exit 1 ;; esac exit 0