[hack] Rieccomi!!!

Lorenzo linux4@tin.it
Ven 2 Maggio 2003 18:00:21 CEST


Rieccomi!!!
Ciao lista!!!
Finalmente le Telecom mi ha ridato la linea :)))
Per la felicità di Hal vi incollo lo script per iptables che mi aveva chiesto. 
Fa quasi tutto da se. Legge pure i dns da solo :P 
Basta seguire i commenti per impostare le (poche) variabili che io nn potevo impostare per voi :P

----Taglia qui------

#!/bin/sh
# Controllo che lo script venga avviato da root in caso contrario 
# restituisce un errore
if [ $USER != "root" ];
then 
echo "$USER, devi essere root per usare il firewall."
exit 1
fi

# Lo script tenta di trovare automaticamente i dns che dovrebbero essere 
# scritti nel file /etc/resolv.conf. Funziona bene solo se ci sono 2 dns
# nel caso questo sistema nn funzioni si impostino le variabili DNS1 e DNS2
# manualmente.
# Se il file nn esiste restituisce un errore
if [ -e /etc/resolv.conf ];
then 
DNS1=`cat /etc/resolv.conf | grep nameserver | head -n 1 | cut -f 2 -d ' '` 
DNS2=`cat /etc/resolv.conf | grep nameserver | tail -n 1 | cut -f 2 -d ' '`
else 
echo "File /etc/resolv.conf inesistente"
fi

# Per impostare i dns manualmente decommentare le seguenti righe e inserire
# i dns giusti (questi sono quelli di telecom)
#DNS1="80.19.134.152"
#DNS2="212.216.112.122"

# Lo script cerca iptables e guarda se è eseguibile. Nel caso nn lo sia 
# restituisce un errore.
IPTABLES=`which iptables`
if [ -z $IPTABLES ];
then
echo "Non trovo iptables"
exit 1 
fi
if [ -x $IPTABLES ];
then
    echo "Faccio partire il firewall..."
    # Carica i moduli necessari per il NAT
    modprobe ip_tables
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp ip_nat_ftp
    modprobe iptable_nat
    modprobe ipt_MASQUERADE
    
    # Scarta i ping e impedisco momentaneamente il forwarding dei pacchetti
    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
    echo '0' > /proc/sys/net/ipv4/ip_forward
    
    # Indirizzi dei computer della rete
    COMPUTER2=""
    # Indirizzi di altri eventuali computer (decommentare le righe)
    # COMPUTER3=""
    # COMPUTER4=""
    
    # Pulisco le regole
    $IPTABLES -F
    
    # Abilito il forwarding dei pacchetti solo all'altro computer della mia rete
    $IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    $IPTABLES -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s COMPUTER2 -j ACCEPT
    # Per abilitare il forwarding anche per altri computer della rete 
    # decommentare le seguenti righe:
    # $IPTABLES -A FORWARD -s COMPUTER3 -j ACCEPT
    # $IPTABLES -A FORWARD -s COMPUTER4 -j ACCEPT
    $IPTABLES -A FORWARD -j DROP
    
    # Abilito il computer locale e l'altro computer della rete a fare tutto
    $IPTABLES -A INPUT -i lo -p all -j ACCEPT
    $IPTABLES -A INPUT -s $COMPUTER2 -p all -j ACCEPT
    
    # Per permettere tutto anche a altri computer basta decommentare e copilare 
    # le seguenti righe:
    #$IPTABLES -A INPUT -s $COMPUTER3 -p all -j ACCEPT
    #$IPTABLES -A INPUT -s $COMPUTER4 -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
    
    # Riabilito il forwarding dei pacchetti
    echo '1' > /proc/sys/net/ipv4/ip_forward
    
    echo "Firewall partito."
    exit 0
else
echo "Iptables non è un eseguibile"
exit 1
fi

----Taglia qui------

Chiaramente se ci sono errori (e sicuramente ce ne saranno) fatemelo sapere e io proverò a metterci una pezza. 

ciao
Lorenzo



Maggiori informazioni sulla lista golem-hack