ti pasto il mio firewall:
#!/bin/bash
# Firewall by OhiOhiOhi
# AVVIATE QUESTO FIREWALL DA ROOT
# Settare i seguenti valori in base alle proprie esigenze
INT=eth0
LOCALHOST="127.0.0.1"
DNS1="130.244.127.161" # In questi due punti inserite i DNS del vostro
DNS2="130.244.127.169" # provider. In default ho messo quelli tele2
ETH="192.168.1.1"
IPT=iptables
echo "Firewall by OhiOhiOhi"
echo " "
case $1 in
## START
start)
echo "Sto attivando il firewall..."
# Politiche
input=DROP
output=ACCEPT
fw=DROP
## Inizio bash scripting per iptables
## Opzioni kernel
echo "Carico i moduli del kernel"
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_tables
modprobe ipt_mac
modprobe ipt_limit
modprobe ip_queue
modprobe ipt_state
modprobe ipt_owner
modprobe ipt_REJECT
modprobe ipt_unclean
modprobe ipt_multiport
echo "Setto contromisure contro attacchi"
## Contromisure contro attacchi DoS: da usare solo sotto attacco
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# echo "100" > /proc/sys/net/ipv4/vs/timeout_synack
# echo "10" > /proc/sys/net/ipv4/vs/timeout_synrecv
# echo "128" > /proc/sys/net/ipv4/tcp_max_syn_backlog
# Questo comando ignora tutti i ping alla vostra macchina, abilitandolo
# potreste avere problemi di rete
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Riduce il numero di SYN-FLOOD
echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
# Protezione contro SYS-FLOOD attack
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# Ignora i pacchetti indirizzati a broadcast
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# serve per abilitare il trasferimento di pacchetti tra interfacce
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Protezione contro spoofing e sourcerouting
echo "1" > /proc/sys/net/ipv4/tcp_rfc1337
# Una protezione in più anche se utilizzata in combinazione con router
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
# Da disabilitare solo se non si usa un Router
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
# non logga i pacchetti con difetti
echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
# Effettua controlli sui pacchetti ICMP
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
# Protezione da proxy ARP
echo "0" > /proc/sys/net/ipv4/conf/all/proxy_arp
# Controlla il routing: Serve per prevenire in piccola parte un
# ip_spoofing al computer
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
# Questo comando logga i pacchetti martirians ovvero i pacchetti senza
# tragitto certo
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
# Abilita il dynamic socket address rewriting
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Setta le porte locali
echo "56000:65096" > /proc/sys/net/ipv4/ip_local_port_range
# Disabilita il Forwarding
echo "0" > /proc/sys/net/ipv4/ip_forward
# Torsmo
echo "Firewall ON" > /documenti/.torsmo_firez
## IPTABLES
echo "Setto iptables"
# Preparo le chain
$IPT -F
$IPT -P INPUT $input
$IPT -P OUTPUT $output
$IPT -P FORWARD $fw
$IPT -N CHAIN-SCAN
$IPT -N SYN-FLOOD
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Utile comando per accettare solo alcuni tipi di icmp
for ic in 0 3 11 ; do
$IPT -A INPUT -i $INT -p icmp --icmp-type $ic -j ACCEPT
done
# Abilita i DNS replays
$IPT -A INPUT -i $INT -p udp -s $DNS1 --dport 53 -j ACCEPT
$IPT -A INPUT -i $INT -p udp -s $DNS2 --dport 53 -j ACCEPT
$IPT -A INPUT -i $INT -p udp -s $ETH --dport 53 -j ACCEPT
$IPT -A INPUT -i $INT -p udp -s $DNS1 --sport 53 -j ACCEPT
$IPT -A INPUT -i $INT -p udp -s $DNS2 --sport 53 -j ACCEPT
# Blocca pacchetti broadcast
$IPT -A INPUT -p ALL -d 255.255.255.255 -j $input
$IPT -A INPUT -s 10.128.0.0/255.255.0.0 -j $input
# Crea catene SYN-FLOOD
$IPT -A INPUT -p tcp --syn -j SYN-FLOOD
$IPT -t filter -A SYN-FLOOD -m limit --limit 1/s --limit-burst 4 -j CHAIN-SCAN
# Protezione contro Xmas scan
$IPT -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j CHAIN-SCAN
$IPT -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK -j CHAIN-SCAN
# Blocccare scansioni senza flag
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j CHAIN-SCAN
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j CHAIN-SCAN
# Bloccare pacchetti SYN+RST e SYN+FIN
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j CHAIN-SCAN
# Bloccare scansioni FIN
$IPT -A INPUT -p tcp --tcp-flags FIN FIN -j CHAIN-SCAN
# Sicurezze alternative
$IPT -A INPUT -p udp --dport 135:139 -j DROP
$IPT -A INPUT -p tcp --dport 6000 -j DROP
# Abilito localhost
$IPT -A INPUT -s $LOCALHOST -j ACCEPT
# Usare questi parametri per abilitare aMule
$IPT -A INPUT -p tcp --sport 4661:4662 -j ACCEPT
$IPT -A INPUT -p udp --sport 4661:4666 -j ACCEPT
$IPT -A INPUT -p tcp --dport 4662 -j ACCEPT
$IPT -A INPUT -p udp --dport 4665 -j ACCEPT
# Azureus
$IPT -A INPUT -p tcp --dport 6881 -j ACCEPT
$IPT -A INPUT -p udp --dport 6881 -j ACCEPT
# Usare per abilitare scambio file in aMsn
$IPT -A INPUT -p tcp --dport 6891:6895 -j ACCEPT
# Usare per abilitare DCC
$IPT -A INPUT -p tcp --dport 3333 -j ACCEPT
# NetCat
$IPT -A INPUT -p tcp --dport 1234 -j ACCEPT
$IPT -A INPUT -p udp --dport 1234 -j ACCEPT
echo " "
echo "Firewall attivato "
;;
## STOP
stop)
echo "Risistemo tutto come era prima"
# Politiche
input=ACCEPT
output=ACCEPT
fw=ACCEPT
# Risetto i valori di kernel
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "0" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "0" > /proc/sys/net/ipv4/tcp_rfc1337
echo "1" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/log_martians
echo "0" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Firewall OFF" > /documenti/.torsmo_firez
# Risetto le politiche di default
$IPT -F
$IPT -X CHAIN-SCAN
$IPT -X SYN-FLOOD
$IPT -P INPUT $input
$IPT -P OUTPUT $output
$IPT -P FORWARD $fw
echo " "
echo "Firewall disattivato...ora prova a pararti your butt :P"
;;
*)
echo "firez [start|stop]"
echo "Nel caso attiviate il firewall due volte consecutive"
echo "potrebbero esserci degli errori di esistenza di chain"
echo "Ignorateli pure

"
echo "Eventualmente se riscontrate errori di altro tipo"
echo "verificate la correttezza dei parametri..."
echo " "
echo "Mi raccomando leggete con attenzione il firewall e"
echo "settate i parametri prima di dare start ... ENJOY!"
;;
esac
echo " "