[hack] Firewall

Lorenzo linux4@tin.it
Mar 11 Feb 2003 11:00:52 CET


On Tue, 11 Feb 2003 10:14:45 +0100 (CET)
"Hal" <hal@linux.it> ha scritto:

> Ciao Lorenzo,
> 
> poiche' questa e' una lista tecnica io direi di mandare il
> firewall senza problemi.

Ok. Eccolo qui:

---------------INIZIO-----------------

#!/bin/sh

LOOPBACK="127.0.0.1"
# I seguenti sono i dns di telecom vanno cmabiati in base al proprio provider 
DNS1="80.19.134.152" 
DNS2="212.216.112.122"

IPTABLES="/sbin/iptables"

if [ -e $IPTABLES ]
then
case "$1" in
  start)
    echo "Starting firewall..."
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
    # Pulisco le regole
    $IPTABLES -F
    # Proibisco il forwarding dei pacchetti
    $IPTABLES -P FORWARD DROP
    # Abilito il computer locale a fare tutto
    $IPTABLES -A INPUT -s $LOOPBACK -p all -j ACCEPT
    # Scarto tutti i pacchetti tcp col flag syn attivo
    $IPTABLES -A INPUT -p tcp --syn -j DROP
    # Blocco i pacchetti con flag tcp nn corrette (per i portscan con nmap)
    $IPTABLES -A INPUT -p all -m unclean -j DROP
    $IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
    $IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    # Lascio passare il traffico per il dns e blocco il resto delle porte udp
    $IPTABLES -A INPUT -p udp -s $DNS1 --sport 53 -j ACCEPT
    $IPTABLES -A INPUT -p udp -s $DNS2 --sport 53 -j ACCEPT
    $IPTABLES -A INPUT -p udp -j DROP
    echo "Firewall started."
    exit 0
    ;;
    
  stop) # per fermare il firewall
    echo "Stopping Firewall..."
    $IPTABLES -P INPUT ACCEPT
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -P FORWARD ACCEPT
    $IPTABLES -F
    echo "Firewall Stopped."
    exit 0
    ;;
    
  add) # per aprire una regola al volo
    echo "** Open a service **"
    echo "Protocol:"
    read PROTOCOL
    echo "Port:"
    read PORT
    echo "Ip: (specify 0 tu permit access to all)"
    read IP
    if [ $IP = "0" ]
    then
    $IPTABLES -I INPUT 1 -p $PROTOCOL --dport $PORT -j ACCEPT
    else
    $IPTABLES -I INPUT 1 -p $PROTOCOL --dport $PORT -s $IP -j ACCEPT
    fi
    echo "Rule added"
    exit 0
    ;;
  
  delete) # per chiudere una porta aperta al volo
    echo "** Close a service **"
    echo "Protocol:"
    read PROTOCOL
    echo "Port:"
    read PORT
    echo "Ip: (specify 0 tu permit access to all)"
    read IP
    if [ $IP = "0" ]
    then
    $IPTABLES -D INPUT -p $PROTOCOL --dport $PORT -j ACCEPT
    else
    $IPTABLES -D INPUT -p $PROTOCOL --dport $PORT -s $IP -j ACCEPT
    fi
    echo "Rule deleted"
    exit 0
    ;;
    
   *)
    echo "Usage $0 {start|stop|add|delete}"
    exit 1
    ;;
esac
else 
echo "Iptables not found"
exit 1
fi

-------------------FINE------------------

Ovviamente ogni suggerimento, di qualsiasi tipo mi sarà utilissimo.

Ciao 
Lorenzo



Maggiori informazioni sulla lista golem-hack