Newsgroup: it.comp.os.linux.sys
Titolo: iptables per proxy server.

Salve.
Forse chiedo troppo ma non riesco a venirne a capo.
Ho installato un proxy server per permettere ai client di una lan di accedere
ad internet.
Per maggiore sicurezza, anche se il server non e' accessibile dall'esterno,
vorrei configurare un firewall.
Ho settato le seguenti regole con iptables:
DNS="151.99.125.2 151.99.250.2"
IN_TCP_ALLOW="80 443 1080 2370 3128"
EX_TCP_ALLOW="21 22 80 443 8080 8082 8085 8092 6667"
HOST_ALLOW="192.168.8.122 192.168.5.3"
INTERNAL_LAN="
192.168.0.0/16
"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F INETIN > /dev/null 2>&1
iptables -X INETIN > /dev/null 2>&1
iptables -N INETIN
iptables -F INETOUT > /dev/null 2>&1
iptables -X INETOUT > /dev/null 2>&1
iptables -N INETOUT
iptables -A INPUT -j INETIN
iptables -A OUTPUT -j INETOUT
iptables -A INETIN -p icmp --icmp-type echo-request -m limit --limit 1/s -j
ACCEPT
iptables -A INETIN -p icmp --icmp-type ! echo-request -j ACCEPT
iptables -A INETIN -p tcp ! --syn -m state --state NEW -j DROP
for server in ${DNS} ; do
  iptables -A INETOUT -p udp -d ${server} --dport 53 -j ACCEPT
done
for exPort in ${EX_TCP_ALLOW} ; do
  iptables -A INETOUT -p tcp --dport ${exPort} -j ACCEPT
done
for inPort in ${IN_TCP_ALLOW} ; do
  iptables -A INETIN -p tcp -s ${INTERNAL_LAN} --dport ${inPort} -j ACCEPT
done
for host in ${HOST_ALLOW} ; do
  iptables -A INETIN -p tcp -s ${host} --dport 22 -j ACCEPT
done
iptables -A INETIN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INETOUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INETIN -j DROP
iptables -A INETOUT -j DROP
Scusate se sono stato prolisso.
Gli host indicati autorizzati a collegarsi in ssh so collegano tranquillamente.
Il problema e' che nn riesco a far navigare i clientes.
Se tolgo le regole tutto funziona regolarmente.
cosa mi sfugge?
Grazie.

ciao,
1) Ma in tutto questo il proxy cosa c'entra?
2) Il firewall ha 2 schede di rete oppure una? mi sembra che siano 2, allora
forse devi anche provvedere alle chain di Forward, di NAT e DNAT.
3) per renderti la vita più semplice prova a vedere i paccheti che giro
fanno, magari fatti aiutare da tcpdump.

 ad internet.
Prova con iptables -P OUTPUT ACCEPT
e guarda se funziona...

 allora forse devi anche provvedere alle chain di Forward, di NAT e DNAT.
Sono due schede, eth0 e eth1, pero' pre il momento e' attiva solo la eth0.


In che senso scusa?
Hai una cosa di questo tipo?
LAN <-> (eth0)FIREWALL(eth1) <-> INTERNET
Quindi le macchine usano il firewall per andare sul web? Allora perchč dici
che č attiva solo la eth0?
Scusa ma non capisco cosa intendi quando parli di "client di una lan di
accedere ad internet".
Per farlo devi avere per forza il firewall con 2 schede di rete attive e le
l'utilizzo di regole di NAT e DNAT altrimenti non puoi dalla rete.
Ovviamente la macchina Firewall deve anche essere gateway delle macchine
Lan.
Ciao

 Lan.
La configurazione e' questa.
LAN 192.168.0.0 con diverse subnet 192.168.2.0 192.168.5.0 ecc. ecc.
tutte collegate attraverso dei router.
Nella subnet 192.168.4.0 ho un firewall hardware collegato ad internet.
Nella stessa subnet ho il server proxy.
Tale server usa il firewall hardware come gateway per uscire su internet.
Il server proxy infatti esce in toto su internet.
Tutti i client della lan per uscire su internet devono passare attraverso il
proxy settando opportunamente i loro browser.
L'unca scheda di rete attiva del proxy e' la eth0.
LAN<->proxy-firewall->internet
La eth0 e' configurata affinche' utilizzi come gateway il firewall hardware
per uscire su internet e sempre la eth0 e' collegata al resto della lan.
Non so se sono riuscito ad essere chiaro.
Ciao.

 Ciao.
Puoi iniziare a cercare di capire che fine fanno i pacchetti che arrivano al
firewall.
Prova a loggare tutto ciň che finisce nella chain Drop e usa tcpdump per
vedere il traffico.
Prova anche ad aggiungere queste regole al firewall.
  $IPTABLES -A INPUT -p ALL -i LO -s 127.0.0.0 -j ACCEPT
  $IPTABLES -A INPUT -p ALL -i LO -s $INDIRIZZO_IP_DELLA_SCHEDA_FIREWALL -j
ACCEPT
  $IPTABLES -A OUTPUT -p ALL -s LO -j ACCEPT
Altra cosa che puoi fare č quella di caricare le regole sul Firewall un pň
per volta e vedere quando smette di far passare i pacchetti.