PDA

Visualizza la versione completa : iptables per firewall - caso concreto


tommy_bo
31-12-2008, 14:19
ciao a tutti
ciappinando con iptables ho creato il seguente script per il seguente caso (vedi l'allegato) dove ho 2 sottoreti collegate dalle interfacce eth1 e eth2 dove:
. eth1 abilitata alla navigazione diretta e ad alcuni servizi (vedi porte aperte)
. eth2 abilitata solamente alla navigazione tramite proxy impostato nel browser sulla porta 8080

lo script lo potete trovare qui: http://pastebin.com/m416d8f6d

Mentre per eth2 tutto funziona come vorrei (si naviga solo se si mette il proxy) per eth1 succede la stessa cosa nonostante ho aperto le porte 80 443 etc.. e non riesco a pingare il gateway .254
ovviamente c' un errore ben piu' grave e per questo chiedo il vostro aiuto.
Mi interessa in pratica solamente "uscire" e per adesso all'interno della sottorete non ho intenzione di mettere server web o simili..
grazie per l'attenzione

oppure di seguito........................................... .....................

#!/bin/bash

# delete all existing rules.
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# DEFAULT policies
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # alternativa
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# eth1 open ports
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8080 -j ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 115 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 995 -j ACCEPT

# eth2 open ports
iptables -A INPUT -i eth2 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth2 -p tcp --dport 8080 -j ACCEPT

# enable ping
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# to allow ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

dvds
02-01-2009, 02:34
Originariamente inviato da tommy_bo
# DEFAULT policies
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


Regola di base: tutti i pacchetti che la macchina riceve e che dovrebbe routare da qualche parte sono invece eliminati.


Originariamente inviato da tommy_bo
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Qui i pacchetti relativi ad una connessione gi esistente vengono routati da un'interfaccia all'altra.


Originariamente inviato da tommy_bo
# eth1 open ports
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8080 -j ACCEPT

iptables -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 115 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 995 -j ACCEPT

# eth2 open ports
iptables -A INPUT -i eth2 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth2 -p tcp --dport 8080 -j ACCEPT

# enable ping
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT

E qui fai tutte regole di INPUT e non di FORWARD. Va benissimo per il proxy (se installato sulla stessa macchina), visto che i client stabiliscono connessioni che risultano in entrata sul firewall, ma non credo sia giusto per le connessioni che devono essere routate.


Originariamente inviato da tommy_bo
# to allow ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

E questo non sono sicuro che basti, altrimenti potrebbero essere routate (leggi potrebbero navigare) entrambe le reti.

Loading