PDA

View Full Version : Firewall.......secondo voi..........


stefanoxjx
21-01-2005, 09:31
Mi sono fatto un serverino con debian che mi fa da router e firewall e poi farà anche altre funzioni non ancora implementate.
Il serverino in questione ha 2 schede di rete.
Sotto trovate lo script che configura il mio firewall e router, ma volevo sapere se secondo voi mi conviene configurare il firewall in modo che gestisca separatemente le due schede di rete o se va bene anche com'è.
Grazie.

Ecco gli script:
----------------------------------------------------------------------------------------------------
server:/etc/scripts# more firewall.sh
#!/bin/bash

# Policy di default delle catene
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Accetta tutti i pacchetti in input e output dalla rete
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

# Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accetto tutti i paccheti in ingresso per le connessioni che vengono generate dall'interno
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Apro la porta
# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# www
iptables -A INPUT -p tcp --dport www -j ACCEPT
# smtp
iptables -A INPUT -p tcp --dport smtp -j ACCEPT

# Loggo tutto quello che NON deriva da connessioni che io ho instaurato
# a livello 7 (debug) del syslog. Questo significa, per esempio in Debian, che i pacchetti
# bloccati verranno visualizzati in /var/log/syslog.
iptables -A INPUT -j LOG --log-level 7 --log-prefix "Blocked Packet: "
------------------------------------------------------------------------------------------------------
server:/etc/scripts# more router.sh
#!/bin/bash

EXTERNAL=eth0
INTERNAL=eth1

iptables="/usr/sbin/iptables"

# Blocca il forward fino a quando non vengono stabilite tutte le regole.
echo '0' > /proc/sys/net/ipv4/ip_forward

# Carica i moduli necessari
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
modprobe ipt_MASQUERADE


# Attiva il nat (routing)
iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Forwarda tutti i pacchetti inerenti alla nostra rete locale
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

# Forwarda i pacchetti destinati alla porte 4661-4662 per il pc 192.168.0.253
# iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4661 -j DNAT --to-destination 192.168.0.1:4661
# iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4662 -j DNAT --to-destination 192.168.0.1:4662

# iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4661 -j ACCEPT
# iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4662 -j ACCEPT

iptables -A FORWARD -j DROP

# Attiva il forward
echo '1' > /proc/sys/net/ipv4/ip_forward

bort_83
21-01-2005, 09:52
Originariamente inviato da stefanoxjx
# Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accetto tutti i paccheti in ingresso per le connessioni che vengono generate dall'interno
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


queste due regole nn hanno credo l'effetto che desideri, dato che soprattuto nella 2° nn hai specificato l'interfaccia ... quindi si presuppone entrambe le interfaccie....

anke qui:


# Accetta tutti i pacchetti in input e output dalla rete
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT


questo ti rende vulnerabile ad attacchi "man in the middle" (mi pare ;) )

dopodichè io metteri assieme i 2 script in modo tale che sei sicuro che le regole vengano scritte in maniera concatenata...

metterei prima quello "router" e poi "firewall"

stefanoxjx
21-01-2005, 10:09
Re: Firewall.......secondo voi..........


Originariamente inviato da stefanoxjx
# Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accetto tutti i paccheti in ingresso per le connessioni che vengono generate dall'interno
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

queste due regole nn hanno credo l'effetto che desideri, dato che soprattuto nella 2° nn hai specificato l'interfaccia ... quindi si presuppone entrambe le interfaccie....


Non riesco a capire il problema, perchè nella prima regola gli dico di accettare tutte le connessioni che il serverino mi crea e nella seconda gli dico di accettare tutti i pacchetti in entrata per le connessioni che il serverino mi ha creato.
Tutto questo sia per l'interfaccia Wan che quella Lan.
Mi spiegheresti meglio cos'è che non va secondo te?


anke qui:

quote:

# Accetta tutti i pacchetti in input e output dalla rete
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

questo ti rende vulnerabile ad attacchi "man in the middle" (mi pare )


Anche quì non riesco a capire bene, perchè da come la vedo io :oink: , gli dico di accettare tutte le connessioni in ingresso e uscita per la mia rete Lan, dando per scontato che dalla Wan non accederà mai nessuno con ip 192.168.0.


dopodichè io metteri assieme i 2 script in modo tale che sei sicuro che le regole vengano scritte in maniera concatenata...
metterei prima quello "router" e poi "firewall"


Questo avevo già intenzione di farlo, anche per ordine mentale!!!! :D

Grazie.

bort_83
21-01-2005, 10:23
effettivamente nn mi ricordo bene cosa volevo dire... :confused:

per quanto riguarda invece questo :


dando per scontato che dalla Wan non accederà mai nessuno con ip 192.168.0.


io nn lo darei per scontato... è difficile ma possibile... magari nn proprio delle connessioni comprete ma anke solo dei syn flood con indirizzo ip spoofato...

aggiungerei anke un

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

per evitare di rispondere ai ping broadcast se nn addirittura

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

per evitare di rispondere ai ping in generale

se nn rispondi il + delle volte eviti di essere scannato...

stefanoxjx
21-01-2005, 10:30
OK, thanks.
Mi rimettero a scrivere poesie -> iptables -A.............. :D

bort_83
21-01-2005, 10:43
potrebbe essere utile aprire un 3d per creare uno script per iptables per un firewall dual homed

... con tanti bei trucchettini per evitare scansioni e azzi e mazzi...

magari se viene bene può essere aggiunto neglio howto

stefanoxjx
21-01-2005, 10:48
Appena ho un attimo, mi metto al lavoro e poi quando (secondo me) sarà finito, mi dite se ci sono correzzioni da fare.
Grazie.
Ciao.

Psycotic
21-01-2005, 11:01
io aggiungerei una regola per i syn

cioe' devi droppare quando ti arrivano troppe richieste di connessione..
seno ti muore il tutto....

HexDEF6
21-01-2005, 14:26
Originariamente inviato da Psycotic
io aggiungerei una regola per i syn

cioe' devi droppare quando ti arrivano troppe richieste di connessione..
seno ti muore il tutto....

discutibile.... cosa intendi per troppe?
e se sono richieste legali (magari un casino di gente che visita il sito web)...
comunque se uno ha la "forza bruta" (da leggersi: molta piu' banda di te) e vuole romperti le scatole, che tu droppi o non droppi i syn non cambia niente!

comunque se avete in mente di mettere in piedi un firewall abbastanza generale (e ben commentato!) posso dare una mano!

o si potrebbe fare un firewall modulare dovo lo script principale richiama i vari "moduli" (commentando quelli che non servono allo scopo) e mettere in piedi qualcosa di piu' che il firewall per il mio computer per navigare...

Ciao!

bort_83
21-01-2005, 14:42
mitico HexDEF .. era proprio quello che avevo in testa.. commenti chiari e comprensibili

per quanto riguarda la protezione da synflood ho provato un paio di script una volta .. (script che indirizzano i syn in un'altra chain e li vengono contati) ma ho avuto spesso problemi...

HexDEF6
21-01-2005, 14:53
Originariamente inviato da bort_83
mitico HexDEF .. era proprio quello che avevo in testa.. commenti chiari e comprensibili


anche a me farebbe comodo... ma da solo riesco a combinare dei bei casini! :D

Originariamente inviato da bort_83
per quanto riguarda la protezione da synflood ho provato un paio di script una volta .. (script che indirizzano i syn in un'altra chain e li vengono contati) ma ho avuto spesso problemi...

ovviamente un protezione per i syn si puo' utilizzare in certi casi (se non hai su server vari) altrimenti rischi che lo script contro i syn diventi un DOS piu' efficace che il syn flood stesso.

Allora... chi ha le idee chiare su quello che si vuole progettare? (una cosa utile ai piu')
io sparo la mia:

macchina firewall router con 3 schede di rete:
1 per internet
2 per la rete locale, da trattare in maniera differente (tipo una rete puo' navigare, l'altra no se non attraverso proxy ecc.)

fatemi sapere cosa avete in mente e poi iniziamo a scrivere qualcosa.

Ciao!