#!/bin/bash # Firewall ############################################ ######################### # Definizione Variabili # ######################### IPTABLES="/sbin/iptables" IFLO="lo" IFEXT="ppp0" # Da sostituire con la propria interfaccia: eth0, eth1, ppp0, etc case "$1" in start) ######################## # Attivazione Firewall # ######################## echo -n "Attivazione Firewall: " ################################# # Caricamento Moduli del Kernel # ################################# modprobe ip_tables modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_LOG modprobe ipt_MARK modprobe ipt_MASQUERADE modprobe ipt_REDIRECT modprobe ipt_REJECT modprobe ipt_TOS modprobe ipt_limit modprobe ipt_mac modprobe ipt_mark modprobe ipt_multiport modprobe ipt_state modprobe ipt_tos modprobe iptable_mangle ############################ # Reset delle impostazioni # ############################ $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle $IPTABLES -X $IPTABLES -X -t nat $IPTABLES -X -t mangle ################################ # Impostazione Policy standard # ################################ $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT ################################# # Abilitazione traffico interno # ################################# $IPTABLES -A INPUT -i $IFLO -j ACCEPT $IPTABLES -A OUTPUT -o $IFLO -j ACCEPT # Drop & log dei pacchetti ping iptables -A INPUT -i $IFEXT -p icmp -m icmp --icmp-type 3 -j ACCEPT iptables -A INPUT -i $IFEXT -p icmp -m icmp --icmp-type 5 -j ACCEPT iptables -A INPUT -i $IFEXT -p icmp -m icmp --icmp-type 11 -j ACCEPT iptables -A INPUT -p icmp -j LOG --log-prefix "ICMP drop:" iptables -A INPUT -p icmp -j DROP #Drop & log dei pacchettip pericolosi bad iptables -A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "Nuova non syn:" iptables -A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP iptables -A INPUT -p tcp -m state --state INVALID -j LOG --log-prefix "Invalida:" iptables -A INPUT -p tcp -m state --state INVALID -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -m limit --limit 5/min -j LOG --log-prefix "NMAP-XMAS:" iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/min -j LOG --log-prefix "SYN/RST:" iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m limit --limit 5/min -j LOG --log-prefix "SYN/FIN:" iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP iptables -A INPUT -p tcp -m tcp --dport 137:139 -m limit --limit 5/min -j LOG --log-prefix "NO SMB:" iptables -A INPUT -p tcp -m tcp --sport 137:139 -m limit --limit 5/min -j LOG --log-prefix "NO SMB:" iptables -A INPUT -p tcp -m tcp --dport 137:139 -j DROP iptables -A INPUT -p tcp -m tcp --sport 137:139 -j DROP iptables -A INPUT -p tcp -m tcp --dport 2049 -m limit --limit 5/min -j LOG --log-prefix "NO NFS:" iptables -A INPUT -p tcp -m tcp --sport 2049 -m limit --limit 5/min -j LOG --log-prefix "NO NFS:" iptables -A INPUT -p tcp -m tcp --dport 2049 -j DROP iptables -A INPUT -p tcp -m tcp --sport 2049 -j DROP iptables -A INPUT -p tcp -m tcp --dport 6000:6063 -m limit --limit 5/min -j LOG --log-prefix "NO X:" iptables -A INPUT -p tcp -m tcp --sport 6000:6063 -m limit --limit 5/min -j LOG --log-prefix "NO X:" iptables -A INPUT -p tcp -m tcp --dport 6000:6063 -j DROP iptables -A INPUT -p tcp -m tcp --sport 6000:6063 -j DROP iptables -A INPUT -p tcp -m tcp --dport 20034 -m limit --limit 5/min -j LOG --log-prefix "NO NetBus2:" iptables -A INPUT -p tcp -m tcp --sport 20034 -m limit --limit 5/min -j LOG --log-prefix "NO NetBus2:" iptables -A INPUT -p tcp -m tcp --dport 20034 -j DROP iptables -A INPUT -p tcp -m tcp --sport 20034 -j DROP iptables -A INPUT -p tcp -m tcp --dport 12345:12346 -m limit --limit 5/min -j LOG --log-prefix "NO NetBus:" iptables -A INPUT -p tcp -m tcp --sport 12345:12346 -m limit --limit 5/min -j LOG --log-prefix "NO NetBus:" iptables -A INPUT -p tcp -m tcp --dport 12345:12346 -j DROP iptables -A INPUT -p tcp -m tcp --sport 12345:12346 -j DROP iptables -A INPUT -p tcp -m tcp --dport 27374 -m limit --limit 5/min -j LOG --log-prefix "NO SubSeven:" iptables -A INPUT -p tcp -m tcp --sport 27374 -m limit --limit 5/min -j LOG --log-prefix "NO SubSeven:" iptables -A INPUT -p tcp -m tcp --dport 27374 -j DROP iptables -A INPUT -p tcp -m tcp --sport 27374 -j DROP ############################################################################# # Abilitazione traffico in entrata solo se relativo a pacchetti in risposta # ############################################################################# $IPTABLES -A INPUT -p tcp -i $IFEXT -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p icmp -i $IFEXT -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p udp -i $IFEXT -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT ############################################################################# # Abilito porte amule in entrata amule configurato di default ############################################################################# $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 4662 -j ACCEPT $IPTABLES -A INPUT -p udp -i $IFEXT --dport 4665 -j ACCEPT $IPTABLES -A INPUT -p udp -i $IFEXT --dport 4672 -j ACCEPT # Abilito porta 6346 e 24882 in entrata per Frostwire $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 6346 -j ACCEPT $IPTABLES -A INPUT -p udp -i $IFEXT --dport 6346 -j ACCEPT # Abilito porta ssh in entrata $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 22 -j ACCEPT # Abilito porta per sessioni vnc in entrata 5000 da 0 a 2 per tre sessioni di vnc $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 5900 -j ACCEPT $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 5901 -j ACCEPT $IPTABLES -A INPUT -p tcp -i $IFEXT --dport 5902 -j ACCEPT # Abilito porte tcp ed udp 80 web server in entrata #$IPTABLES -A INPUT -p tcp -i $IFEXT --sport 80 -j ACCEPT #$IPTABLES -A INPUT -p tcp -i $IFEXT --dport 80 -j ACCEPT #$IPTABLES -A INPUT -p udp -i $IFEXT --sport 80 -j ACCEPT #$IPTABLES -A INPUT -p udp -i $IFEXT --dport 80 -j ACCEPT # all'ultimo mettiamo un default drop iptables -A INPUT -i $IFEXT -j LOG --log-prefix "Default drop:" iptables -A INPUT -i $IFEXT -j DROP echo "ok" ;; stop) ########################### # Disattivazione Firewall # ########################### echo -n "Disattivazione Firewall: " $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle $IPTABLES -X $IPTABLES -X -t nat $IPTABLES -X -t mangle $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT echo "ok" ;; status) ############################## # Display stato del Firewall # ############################## echo -n "Regole attuali nel Firewall: " $IPTABLES -L ;; restart|reload) $0 stop $0 start ;; *) echo "Utilizzo: firewall {start|stop|restart|reload|status}" >&2 exit 1 ;; esac exit 0