PDA

View Full Version : Script Generico per Firewall per LAN


_Jc_
15-12-2003, 12:32
Dopo varie difficolta (almeno per me ed il mio amico) siamo riusciti a produrre questo script per firewall da usare in piccole lan su una macchina a se stante.
Lo pubblico in modo che tutti volendo lo possano utilizzare ma sopratutto anche per cercare una conferma da quegli utenti che ne capiscono pių di me
Sopratutto non mi piace molto come abbiamo creato le regoler per l'ftp mi sembra di aprire troppe porte ma se non faccio cosė (almeno per quello che ne so io...) l'ftp mi da grossi problemi

Ciao e grazie a tutti

P.S. Linux Rulez x sempre :D

#!/bin/sh
#
## ========== IMPOSTAZIONE VARIABILI ========== ##
#
ipt="/usr/sbin/iptables"
echo="/bin/echo"
lan=10.10.5.0/24
red=eth0
green=eth1
#
# =========== CARICAMENTO MODULI FTP ======== ##
modprobe ip_conntrack
modprobe ip_nat_ftp
## ========== PULIZIA DELLE CATENE ========== ##
#
# RESET DELLE REGOLE INPUT, OUTPUT, FORWARD
$ipt -F
#
# DELETE DELLE CATENE CREATE DALL'UTENTE
$ipt -X
#
# RESET DEI CONTATORI
$ipt -Z
#
# RESET DELLE TABELLE DI MANGLE E DI NAT
$ipt -t mangle -F
$ipt -t nat -F
#
## ========== SETTAGGI DELLE REGOLE DI DEFAULT ========== ##
#
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
$ipt -P FORWARD DROP
#
## ========== SETTAGGI DI IP FORWARDING ========== ##
#
# DISABILITA L'IP FORWARDING
$echo "0" > /proc/sys/net/ipv4/ip_forward
#
# DISABILITA TUTTI GLI ECHO ICMP
$echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
#
# DISABILITA GLI ECHO BROADCAST ICMP
$echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#
# IMPOSTA LA PROTEZIONE CONTRO ATTACCHI SPOOFING
$echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
$echo "1" > /proc/sys/net/ipv4/tcp_syncookies
$echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#
# ABILITA IL LOG IN /var/log/messages DEI PACCHETTI MALFORMATI E LI SCARTA AUTOMATICAMENTE
$echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
$echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
$echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
#
## ========== SETTAGGI NAT ========== ##
#
# ABILITA IL MASCHERAMENTO DEGLI INDIRIZZI LAN
$ipt -t nat -A POSTROUTING -s $lan -j MASQUERADE
#
## ========== SETTAGGI PERSONALIZZAZIONE FIREWALL ========== ##
#
#PROTESIONE DAGLI ATTACCHI DoS
$ipt -N syn-flood
$ipt -A INPUT -i $red -p tcp --syn -j syn-flood
$ipt -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$ipt -A syn-flood -j DROP
#
# SCARTO DEI PACCHETTI MALFORMATI
$ipt -A INPUT -m unclean -j DROP
#
# ABILITA LA CONNESSIONE SSH LATO LAN
$ipt -A INPUT -s $lan -i $green -p tcp --dport 22 -j ACCEPT
$ipt -A OUTPUT -d $lan -o $green -p tcp --sport 22 -j ACCEPT
#
# SCARTA I PACCHETTI DESTINATI AL FIREWALL PROVENIENTI DALLA WAN
$ipt -A INPUT -i $red -j DROP
#
# BLOCCA I PACCHETTI IN USCITA DAL FIREWALL LATO WAN
$ipt -A OUTPUT -o $red -j DROP
#
#
$ipt -A FORWARD -j LOG --log-prefix="FORWARD:"
#
#
# ACCETTA IN FORWARD SOLO PACCHETTI PROVENIENTI DA CONNESSIONI GIA' STABILITE
$ipt -A FORWARD -d $lan -m state --state ESTABLISH,RELATED -j ACCEPT
#
# ABILITA DNS (53)
$ipt -A FORWARD -s $lan -p tcp --dport 53 -j ACCEPT
$ipt -A FORWARD -s $lan -p udp --dport 53 -j ACCEPT
#
# ABILITA HTTP (80), HTTPS (443), PROXY (8080), FTP (20,21)
$ipt -A FORWARD -s $lan -p tcp --dport 80 -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --dport 8080 -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --dport 443 -j ACCEPT
#$ipt -A FORWARD -p tcp --dport 20 -i $red -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --dport 21 -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --dport 20 -j ACCEPT

#$ipt -A FORWARD -s $red -p tcp ! --syn --sport ftp -j ACCEPT

$ipt -A FORWARD -s $lan -p tcp --sport 1024: --dport ftp -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --sport 1024: --dport ftp-data -j ACCEPT
$ipt -A FORWARD -s $lan -p tcp --sport 1024: -j ACCEPT

# ABILITA SMTP (25)
$ipt -A FORWARD -s $lan -p tcp --dport 25 -j ACCEPT
#
# ABILITA POP3 (110)
$ipt -A FORWARD -s $lan -p tcp --dport 110 -j ACCEPT
#
#
# LOG
$ipt -A FORWARD -p tcp -m state --state NEW -j LOG --log-prefix "{Nuove connessioni}--> "
#
$ipt -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "{Nuove senza syn}--> "
#
# BLOCCA TUTTI I PACCHETTI IN TRANSITO CHE NON SODDISFANO LE REGOLE
$ipt -A FORWARD -j DROP
#
# ABILITA L'IP FORWARD
$echo "1" > /proc/sys/net/ipv4/ip_forward
#
#
## ========== SETTAGGI LOG FIREWALL ========== ##
#
#$ipt -A FORWARD -j LOG --log-prefix="FORWARD:"
#

Athlon
17-12-2003, 01:19
io mettererei

# DISABILITA L'IP FORWARDING
$echo "0" > /proc/sys/net/ipv4/ip_forward
come default di boot

non ha senso che un firewall si avvi con IP forward abilitato , quando non ha ancora configurato le catene.


Se vuoi tenere questa istruzione nello script mettila come prima istruzione.

Attulmente il tuo script ha un buco in quanto in avvio hai una situazione indefinita , poi fai il flush delle policy e DOPO blocchi l' ip-forward.

In pratica tra l'inizio dello script e l'istruzione che disattiva l' IP-forward puo' succedere di tutto

ZoD
17-12-2003, 09:46
Originariamente inviato da Athlon
io mettererei

# DISABILITA L'IP FORWARDING
$echo "0" > /proc/sys/net/ipv4/ip_forward
come default di boot

non ha senso che un firewall si avvi con IP forward abilitato , quando non ha ancora configurato le catene.

Non ho capito che intendi con "come default di boot"...

Come mai metti un:
# BLOCCA TUTTI I PACCHETTI IN TRANSITO CHE NON SODDISFANO LE REGOLE
$ipt -A FORWARD -j DROP

se hai gia` cambiato la policy di FORWARD in DROP?
Non e` superfluo?

Poi le catene create dall'utente, se ci fossero, andrebbero prima svuotate e poi cancellate altrimenti non le cancella!


Cia`