Newsgroup: it.comp.os.linux.sys
Titolo: Regole Iptables

Salve a tutti.. sto cercando di configurare il mio iptables su red
hat, e ho preso spunto da varie guide su internet, questo è quello che
sono riuscito a fare:
#!/bin/bash
set -x
# SCHEMA DI RETE:
#
# router verso Internet:      IP dinamico
# router verso server:        10.10.10.1	con rete 
10.10.10.0/25
# server verso router:        10.10.10.24	con rete 
10.10.10.0/25
(eth0)
# server verso desktop:       10.10.11.1	con rete 
10.10.11.0/25
 (eth1)
# desktop verso server:       10.10.11.2	con rete 
10.10.11.0/25
# stampante da/verso router:  10.10.10.21
# router verso DMZ:           da settare
#-------------------------------------------------------------------------
# Abilito il forward di pacchetti su tutte le interfacce
echo 1 > /proc/sys/net/ipv4/ip_forward
#-------------------------------------------------------------------------
# Ripulisco le catene #
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
#-------------------------------------------------------------------------
# Setto il target di default per le catene #
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#-------------------------------------------------------------------------
# Disabilito la risposta al traffico ICMP BROADCAST #
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Disabilito la risposta per il traffico ICMP fasullo #
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Disabilito i messaggi ICMP REDIRECT #
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
# Abilito la protezione ANTISPOOFING #
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
# Abilito il logging per gli IP sconosciuti #
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
#-------------------------------------------------------------------------
# Consento connessioni localhost #
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
#-------------------------------------------------------------------------
# Abilito il FORWARD della rete interna e consento le connessioni già
stabilite o correlate #
iptables -A FORWARD -i eth1 -o eth0 -s 
10.10.11.0/24
 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 
10.10.10.0/24
 -j ACCEPT
iptables -A FORWARD -d 
10.10.11.0/24
 -j ACCEPT
iptables -A FORWARD -s 
10.10.11.0/24
 -j ACCEPT
iptables -A FORWARD -d 
10.10.10.0/24
 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------------------------------
# Consento SSH #
iptables -A INPUT -i eth1 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 22 -j ACCEPT
#-------------------------------------------------------------------------
# Consento FTP #
iptables -A INPUT -i eth1 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 21 -j ACCEPT
iptables -A INPUT -i eth1 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 20 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.10.0/24
 -d 
10.10.10.24/24
 -p tcp --
dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.10.0/24
 -d 
10.10.10.24/24
 -p tcp --
dport 20 -j ACCEPT
iptables -A OUTPUT -i eth1 -s 
10.10.11.1/24
 -d 
10.10.11.0/24
 -p tcp --
dport 21 -j ACCEPT
iptables -A OUTPUT -i eth1 -s 
10.10.11.1/24
 -d 
10.10.11.0/24
 -p tcp --
dport 20 -j ACCEPT
iptables -A OUTPUT -i eth0 -s 
10.10.10.24/24
 -d 
10.10.10.0/24
 -p tcp --
dport 21 -j ACCEPT
iptables -A OUTPUT -i eth0 -s 
10.10.10.24/24
 -d 
10.10.10.0/24
 -p tcp --
dport 20 -j ACCEPT
#-------------------------------------------------------------------------
# Consento HTTP e HTTPS #
iptables -A INPUT -i eth0 -s 
10.10.10.0/24
 -d 
10.10.10.24/24
 -p tcp --
dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.10.0/24
 -d 
10.10.10.24/24
 -p tcp --
dport 8080 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.10.0/24
 -d 
10.10.10.24/24
 -p tcp --
dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 8080 -j ACCEPT
iptables -A INPUT -i eth0 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 443 -j ACCEPT
#-------------------------------------------------------------------------
# Consento Emule #
iptables -A OUTPUT -i eth0 -s 
10.10.11.1/24
 -d 
10.10.10.0/24
 -p tcp --
dport 4663 -j ACCEPT
iptables -A OUTPUT -i eth0 -s 
10.10.11.1/24
 -d 
10.10.10.0/24
 -p udp --
dport 4673 -j ACCEPT
iptables -A INPUT -i eth1 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p tcp --
dport 4663 -j ACCEPT
iptables -A INPUT -i eth1 -s 
10.10.11.0/24
 -d 
10.10.11.1/24
 -p udp --
dport 4673 -j ACCEPT
# Configuro la translazione degli indirizzi della rete interna per
accedere alla rete esterna
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Avrei un paio di domande
dato che ho gia la stringa:
iptables -A FORWARD -i eth1 -o eth0 -s 
10.10.11.0/24
 -j ACCEPT
queste 4 sono inutili?:
iptables -A FORWARD -s 
10.10.10.0/24
 -j ACCEPT
iptables -A FORWARD -d 
10.10.11.0/24
 -j ACCEPT
iptables -A FORWARD -s 
10.10.11.0/24
 -j ACCEPT
iptables -A FORWARD -d 
10.10.10.0/24
 -j ACCEPT
dato che già gia il forward lan-wan, le prime due regole di emule sono
inutili?:
iptables -A OUTPUT -i eth0 -s 
10.10.11.1/24
 -d 
10.10.10.0/24
 -p tcp --
dport 4663 -j ACCEPT
iptables -A OUTPUT -i eth0 -s 
10.10.11.1/24
 -d 
10.10.10.0/24
 -p udp --
dport 4673 -j ACCEPT
C'è qualcos'altro di inutile, o che manca?
Si accettano critiche!
Grazie, saluti

 Si accettano critiche!
Non ho letto il tuo script, ma di default ti consiglierei vivissimamente di 
installarti shorewall e gestire il firewall con quello.
http://www.shorewall.net/
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 sono riuscito a fare:
]zac[
Dando per scontato che il tuo è un uso casalingo il consiglio di usare le
interfacce grafiche di configurazione è largamente il migliore, ma tanto
per curiosità questo è il mio per uso casalingo:
cat imposta-regole_IPFN
#!/bin/sh
#
# Interface delle rete esterna
WAN_IFACE="ppp0"
# WAN_IFACE="eth0"
# Any and all addresses from anywhere.
ANYWHERE="0/0"
# Azzera le regole di tutti i chains.
iptables -F
iptables -X
# Imposta le politiche di default dei built-in chains.
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
# Chains utente
iptables -N DROPLOG
iptables -N NEWCONN
iptables -N INVPACK
## Chains di drop e di log
# Non logga i pacchetti relativi a SQL server, http
iptables -A DROPLOG -p tcp -m multiport --dports 1433,1434,80 -j DROP
# Non logga i pacchetti relativi al multicast
iptables -A DROPLOG -d 
224.0.0.0/8
 -j DROP
# Non logga i pacchetti relativi alle porte 1026, 1027
iptables -A DROPLOG -p udp -m multiport --dports 1026,1027 -j DROP
#iptables -A DROPLOG -p icmp -j DROP
#iptables -A DROPLOG -d ! localhost -j DROP
iptables -A DROPLOG -j LOG -m limit --limit 10/minute --log-prefix "IPNF:
Dropping: "
iptables -A DROPLOG -j DROP
## Chains dei pacchetti in stato 'NEW'
# Reject delle conferme di inizio connessione di connessioni non iniziate
iptables -A NEWCONN -p tcp --tcp-flags SYN,ACK SYN,ACK -j
REJECT --reject-with tcp-reset
# Accetta le richieste di inizio connessione delle rete virtuale locale
iptables -A NEWCONN -i tap+ -j ACCEPT
iptables -A NEWCONN -i tun+ -j ACCEPT
# Drop delle richieste di inizio connessioni non locali
iptables -A NEWCONN -i ! lo -j DROPLOG
#iptables -A NEWCONN -s ! localhost -j DROPLOG
# Accetta le richieste di inizio connessione locali o della rete locale
iptables -A NEWCONN -i ! $WAN_IFACE -j ACCEPT
## Chains dei pacchetti in stato 'INVALID'
# Reject delle conferme di connessioni non iniziate
iptables -A INVPACK -i $WAN_IFACE -p tcp --tcp-flags SYN,ACK ACK -j
REJECT -m limit --limit 10/minute
iptables -A INVPACK -i $WAN_IFACE -p tcp -j DROPLOG
# SNAT per le connessione delle rete virtuale locale
#
# Controlla il traffico relativo a nuove connessioni
iptables -A FORWARD -m state --state NEW -j NEWCONN
# Accetta il traffico relativo a connessioni gi� iniziate
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Reject delle conferme di connessioni non iniziate
iptables -A FORWARD -m state --state INVALID -j INVPACK
iptables -A FORWARD -j LOG -m limit --limit 10/minute --log-prefix "IPNF:
Forward def. dropping: "
# Attiva il nat per le connessione delle rete virtuale locale
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Imposta le regole di filtro
#
# Can still ping out.
#iptables -A INPUT -p icmp --icmp-type echo-reply -i $WAN_IFACE -j  ACCEPT
#iptables -A INPUT -p icmp --icmp-type destination-unreachable -i
$WAN_IFACE -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type time-exceeded -i $WAN_IFACE -j ACCEPT
# Log degli ack con window a 0
#iptables -A INPUT -p tcp --tcp-flags SYN,ACK ACK -m u32 --u32 "4&0x1FFF=0
&& 0>>22&0x3C@12&0xFFFF=0x0" -j LOG -m limit --limit
10/minute --log-prefix "IPNF: Window 0: "
# Controlla il traffico relativo a nuove connessioni
iptables -A INPUT -m state --state NEW -j NEWCONN
# Accetta il traffico relativo a connessioni gi� iniziate
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Reject delle conferme di connessioni non iniziate
iptables -A INPUT -m state --state INVALID -j INVPACK
# Deve essere posta prima dei DROP/REJECT/LOG ma impedirebbe i test
con 'dummy'
# # Accetta il traffico localhost/loopback.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j LOG -m limit --limit 10/minute --log-prefix "IPNF: Def.
dropping: "
echo "Impostate regole firewall il `date`."

 Si accettano critiche!
Dopo aver generato il tuo firewall usa iptables save per salvarlo in
/etc/sysconfig/iptables, ricordati di caricare il modulo per l'ftp in
/etc/sysconfig/iptables-config
Davide
-- 
If Microsoft were to vanish, who would we hate next?
   -- From a Slashdot.org post