Per chi non digerisce bene netfilter iptables ed affini ecco lo script che permette di settare un firewall rispondendo a delle semplici domande ( ps settate bene le vostre interfaccie da proteggere)
#!/bin/bash ## clear ## #################### VERSION="2003.06.11" #################### ## ## Interfaccia interna fidata 'settare la propria' IIF="eth0" # IIF="eth1" ## ## Interfaccia esterna da proteggere 'settare la propria' ## in genere l'interfaccia esterna e' configurata da un DHCP quindi ha indirizzo dinamico. EIF="ppp0" # EIF="eth0" # EIF="eth1" ## Se l'interfaccia esterna ha un IP statico, dichiararlo # EIP="xx.xx.xx.xx" ## ## Indirizzo macchina router (si presume che il firewall giri sulla macchina router ## in caso contrario correggere manualmente questo indirizzo) ## ## Se preferite utilizzare un indirizzo statico, decommentate la linea che indica un IP ## altrimenti se utilizzate un DHCP o non conoscete l'indirizzo ## usate il riconoscimento tramite ifconfig ## controllare comunque che lo script riconosca l'indirizzo IP (potrebbe non andare su macchine che ## utilizzano shell particolari o che formattano ifconfig diversamente. ## SERVER=` ifconfig $IIF | grep inet | cut -d : -f2 | cut -d ' ' -f1` # SERVER="192.168.10.2" ## ## Indirizzo macchina client da inserire a mano, se il server condivide la connessione ## internet, questa macchina sarà autorizzata ad accedere al firewall via eth0 ## al posto di un singolo host e' possibile utilizzare una rete intera usando ## la notazione RETE/NETMASK ## attenzione alla banda disponibile perchè una rete genera parecchio traffico..;) CLIENT="10.22.115.11" # CLIENT"192.168.10.0/24" ## ## Loopback LOCALHOST="127.0.0.1" ## ## Rete interna ## controllare che gli script ottengano i valori corretti ## o sostituire con valori statici. net=` ifconfig $IIF | grep inet | cut -d : -f2 | cut -d ' ' -f1 | cut -d . -f1,2,3` mask=` ifconfig $IIF | grep inet | cut -d : -f4 | cut -d ' ' -f1` LOCALNET="$net.0/$mask" ## ## Broadcast BROADCAST=` ifconfig $IIF | grep inet | cut -d : -f3 | cut -d ' ' -f1` ## ## Provider1 DNS 'inserire i propri dns' # DNS1="212.216.172.62" DNS1="195.130.224.18" ## ## Provider2 DNS #DNS2="195.130.224.18" DNS2="192.160.10.31" ## ## Local DNS DNS3="212.245.255.2" ## questo potrebbe essere il DNS locale, in seguito sara' prevista la configurazione ## per il funzionamento di un dns locale. ## ## Per qualunque problema...;) EMAIL="m.m.asciutti@email.it" ## ## PATH di iptables 'adattare alla propria macchina, se necessario' IPT=` which iptables` ## ## NOTA: ## Dopo aver modificato i parametri base per adattare lo ## script alle proprie esigenze, salvarlo e renderlo eseguibile ## in particolare adattare l'indirizzo del client o della rete che ## verra' nattata ## verificare inoltre che lo script che preleva ## l'indirizzo IP da ifconfig sia funzionante ## sul proprio sistema. ## ## Decommentare se si desidera aggiungere lo script al PATH di sistema # export PATH=$PATH:$NPATH ## ## Nome dello script e Posizione assoluta NFILE="firewall" NPATH="/etc/rc.d" ## ## NOTA: ## il percorso predefinito e' "/etc/rc.d/" ed ## il nome predefinito e' "firewall" ## ma e' possibile utilizzare qualsiasi nome / percorso ## avendo cura di modificare le variabili NFILE e NPATH' ## ## Setto permessi e proprietario chown root $NPATH/$NFILE chmod 700 $NPATH/$NFILE ## ## NOTA: ## questa funzione viene richiamata solo con ## l'opzione stop e serve a rimuovere i moduli ## caricati dal firewall ## #ANSI COLOR MAGENTA='\e[35m' GREEN='\e[32m' YELLOW='\e[33m' WHITE='\e[37m' BLUE='\e[34m' CYAN='\e[36m' RED='\e[31m' NULL='\e[0m' COLOR=$BLUE ## case "$1" in #**************************************************************START start) clear COLOR=$RED msg=" Attivo il firewall ..." echo -e "$COLOR$msg$NULL\n" ## ## Politica INPUT chain="DROP" ## ## Politica OUTPUT outchain="ACCEPT" ## ## Routing fw="ACCEPT" CF="1" ## ## Opzioni diverse dalle standard ## ## Politica OUTPUT ## 'se si attiva, decommentare le regole relative all'uscita dei pacchetti' ## outchain="DROP" ## ## Non funziona da router # fw="DROP" # CF="0" ## ## Opzioni kernel SC="1" ER="1" DE="1" TW="1" SR="0" DR="0" ASR="0" ISR="1" SAV="1" LOG="1" DSR="1" ## ## Solo cosmetico SET="Abilito" MSET="Abilito" function netfilter() { exit 0 } ;; #*******************************************************************STOP stop) clear COLOR=$GREEN msg=" Disattivo il firewall ..." echo -e "$COLOR$msg$NULL\n" ## ## Politica INPUT chain="ACCEPT" ## ## Politica OUTPUT outchain="ACCEPT" ## ## Non funziona da router fw="DROP" CF="0" ## ## Opzioni kernel SC="0" ER="0" DE="0" TW="0" SR="1" DR="1" ASR="1" ISR="0" SAV="0" LOG="0" DSR="0" ## ## Solo cosmetico SET="Disabilito" MSET="Disabilito" ## function netfilter() { if [ -f /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_tables.o ]; then ( rmmod ip_contrackt \ ip_contrack_ftp \ ip_nat_ftp \ ip_queue \ ip_tables \ ipt_LOG \ ipt_MARK \ ipt_MASQUERADE \ ipt_MIRROR \ ipt_REDIRECT \ ipt_TCPMSS \ ipt_TOS \ ipt_limit \ ipt_mac \ ipt_mark \ ipt_multiport \ ipt_owner \ ipt_state \ ipt_tcpmss \ ipt_tos \ ipt_unclean \ iptable_filter \ iptable_mangle \ iptable_net ) > /dev/null 2> /dev/null ( rmmod ipfwadm; rmmod ipchains; modprobe ip_tables ) > /dev/null 2> /dev/null fi exit 0 } ;; #*************************************************************ROUTER router) clear COLOR=$YELLOW msg=" Attenzione, disattivo il firewall ed attivo il forwarding.
Commenti
Inviato da kripsio il Mer, 22/09/2004 - 02:16.
Note sullo script di firewalling
Provato e funzionalissimo
Note: L'installazione di debian di base da sarge installa il supporto ipv6 (credo, correggetemi se sbaglio) e ci sono, di conseguenza, due righe inet.
La riga 48 che definisce la maschera va quindi cambiata aggiungendo una pipe ad head -1 cosi:
mask=` ifconfig $IIF | grep inet | cut -d : -f4 | cut -d ' ' -f1 | head -1`
Le righe 723 e 724 se attivate mi inibiscono qualsiasi accesso da remoto:
722 #echo "Dirotto pacchetti NEW e INVALID verso CHAIN..."
723 #$IPT -A INPUT -i $EIF -m state --state NEW,INVALID -j chain-log
724 #$IPT -A INPUT -i $IIF -m state --state NEW,INVALID -j chain-log
non mi sono ancora documentato in merito, lo faro' quanto prima
ciau
Inviato da kripsio il Sab, 16/10/2004 - 12:43.
Re: Note sullo script di firewalling
Altro giochino da aggiungervi.
Se usate un "modem" dlink dsl-300t (diffuso in quanto molto economico) avrete inibite diverse funzioni. Il modem in oggetto contiene una minidistro linux con uno script iptables.
Aggiornando il firmware si risolve qualche problema (il firewall divenata meno invadente) ma non e' possibile ancora connettersi via ssh a macchine remote (per me molto male).
Seguendo i consigli che trovate qua: http://www.magwag.plus.com/jim/tips-300t.html
potete scoprire come segare il firewall del router (molto utile per avere il controllo pieno della politica di firewalling sulla vostra macchina).
Per rendere possibile l'ssh remoto dovete aggiungere allo script di sopra qte righe:
824 $IPT --table mangle --append OUTPUT --jump DSCP --set-dscp 0x0
841 $IPT --table mangle --append PREROUTING --jump DSCP --set-dscp 0x0
ciao