Newsgroup: it.comp.os.linux.sys
Titolo: firewall migliorato ma...

Salve fino a ieri non avevo un firewall, oggi ho letto l'"Iptables HOW TO"
di Andreasson e mi sono scritto questo:
#Clearing any previous configuration
echo "   clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
#Traffic destined OUT from local host
$IPTABLES -A OUTPUT -p ALL -m state --state NEW,RELATED,ESTABLISHED -j
ACCEPT
#Traffic destined TO local host
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW
-j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p ALL -m state --state RELATED,ESTABLISHED -j ACCEPT
#Traffic destined to internal LAN
$IPTABLES -A FORWARD -p ALL -s $LAN -i $INTIF -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p ALL -d $LAN -i $EXTIF -m state --state
RELATED,ESTABLISHED -j ACCEPT
#NAT of LAN
$IPTABLES -t nat -A POSTROUTING -s $LAN -o $EXTIF -j MASQUERADE #(maschero
tutto quello che arriva dalla LAN)
$IPTABLES -t nat -A POSTROUTING -d $LAN -o $INTIF -j MASQUERADE #(maschero
tutto quello destinato alla LAN)
#Port forwarding of internal HTTP server
$IPTABLES -t nat -A PREROUTING -p udp -i $EXTIF --dport 80 -j DNAT
--to-destination 
192.168.1.82:80
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 -j DNAT
--to-destination 
192.168.1.82:80
$IPTABLES -I FORWARD 2 -p tcp -i $EXTIF --dport 80 -d $LAN -j ACCEPT
(scusate la lunghezza ma non saprei indicare dove sta il problema)
funziona tutto tranne Gaim (jabber e icq). Qualcuno mi saprebbe indicare
l'errore.
Grazie per l'eventuale pazienza
dat
-- 
mandi

 HOW TO" di Andreasson e mi sono scritto questo:
Io ho configurato un server in questo modo...
vedi se ti va meglio con questo:
#
echo "   Ignora ping verso il server.."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "   Ignora ping da indirizzi broadcast.."
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "   Abilita il Forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "   Abilita TCP_ECN.."
#echo "1" > /proc/sys/net/ipv4/tcp_ecn
echo "   Abilita TCP_ECN.."
echo "0" > /proc/sys/net/ipv4/tcp_ecn
# attivo 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
# logga in /var/log/messages i pacchetti malformati e scartati 
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
#
#Clearing any previous configuration
#
#  Unless specified, the defaults for INPUT and OUTPUT is ACCEPT
#    The default for FORWARD is DROP (REJECT is not a valid policy)
#
echo "   Clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A INPUT -s 211.23.132.29 -j DROP
$IPTABLES -A INPUT -s 138.100.11.70 -j DROP
$IPTABLES -A INPUT -s 213.203.248.2 -j DROP
$IPTABLES -A INPUT -s 200.56.125.157 -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp --dport auth -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp --dport netbios-ssn  -j DROP
# Configurazione transparent proxy
#
#$IPTABLES -t nat -A PREROUTING -p tcp -d localhost --dport 80 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -p tcp -d / --dport 80 -j ACCEPT
# Per utilizzare DansGuadian commenta la riga seguente e de-commenta le due 
successive
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j 
REDIRECT --to-port 3128
#$IPTABLES      -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP
#$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j 
REDIRECT --to-port 8080
echo "   FWD: Allow all connections OUT and only existing and related ones 
IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state 
ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG
# disabilito pacchetti ICMP di tipo echo-request
iptables -t filter -A INPUT -p icmp ! --icmp-type 8 -j ACCEPT
echo "   Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Non sono certo che sia perfetto... anzi, ma credo funzioni benino.
Ciao
Giulio 

 $IPTABLES -I FORWARD 2 -p tcp -i $EXTIF --dport 80 -d $LAN -j ACCEPT
Aggiungici un -d 192.168.1.82

 Aggiungici un -d 192.168.1.82
ok
tutto quello che mi dici e' giusto, pero' non riesco ancora a capire come
mai gaim  mi connette a jabber e icq, mi fa vedere le icone con la gente
online ma quando tento di inviare un messaggio si pianta la finestra 
e mi tocca killarlo (irc ad esempio funziona bene).
in teoria e' come dici tu, in OUTPUT e' come se avessi ACCEPT ma non funzia
lo stesso, prob blocca i pacchetti di ritorno da qualche parte.
continuero' la ricerca...
grazie mille
dat
-- 
mandi

la soluzione era proprio banale
andando a spulciare /proc/net/ip_conntrack ho trovato che gaim si piantava
su questa connessione:
tcp      6 118 SYN_SENT src=127.0.0.1 dst=127.0.0.1 sport=32973 dport=16001
[UNREPLIED] src=127.0.0.1 dst=127.0.0.1 sport=16001 dport=32973 use=1
ed infatti aspettando i 118 secondi poi tutto funzionava a dovere.
Io come un idiota mi ero scordato di inserire 
$IPTABLES -A INPUT -p ALL -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
ne firewall (a quanto pare solo gaim, tra i programmi che uso io, utilizza
il loopback).
spero che questo serva ad altri
dat
P.S. chi mi spiega perche' scaduto il tempo poi il messaggio passa. Non
dovrebbe essere droppato?
-- 
mandi

 il loopback).
Io consiglierei invece di dare un
iptables -A INPUT -i lo -j ACCEPT
-- 
Здрасти!
cat: .signature: No such file or directory

 iptables -A INPUT -i lo -j ACCEPT
per quale motivo? problemi di sicurezza?
comunque non mi costa niente =)
ciao
dat
-- 
mandi


Stile ;-)
A te non interessa far passare il traffico diretto a 127.0.0.1, ma il 
traffico che passa sull'interfaccia di loopback, ovvero il traffico 
"locale".
Il che non è la stessa cosa.
Es 1:
Se un processo locale comunica con un altro e lo contatta su un 
indirizzo locale (ipotizziamo l'indirizzo assegnato alla eth1, per dire) 
il traffico passa per l'interfaccia lo, e non per la ethernet, 
nonostante l'indirizzo destinazione *non sia* 127.0.0.1.
Es 2:
Se sulla interfaccia di rete (ipotizziamo eth0) arriva un pacchetto 
diretto a 127.0.0.1, non deve essere accettato: nonostante l'ip in 
causa, quello non è un pacchetto locale.
Ci sono comunque delle condizioni mitiganti per entrambi i casi:
1) raramente i processi locali comunicano tra loro su ip "esterni", 
tranne nel caso in cui non sappiano (e/o non debbano sapere) di stare 
sulla stessa macchina, e in quest'ultimo caso il fatto di non "lasciarli 
fare" può essere voluto
2) al filtraggio di pacchetti siffatti provvede comunque rp_filter, che 
scarterebbe tali pacchetti come comportamento predefinito
Nell'approccio a iptables (ma anche a qualsiasi altro packet filter) 
conviene sempre abituarsi a ragionare per interfacce di ingresso/uscita, 
piuttosto che a mittenti/destinatari. La ragione è banalmente il fatto 
che il mittente è falsificabile, ma l'interfaccia su cui passa il 
pacchetto no.
E' molto più facile tenere le cose sulla giusta strada con un ruleset 
"pulito", piuttosto che ritrovarsi a gestire *poi* 8000 regole antispoof 
per correggerne i buchi.


grazie Skull per le precisazioni
ciao
dat
-- 
mandi