iptables - Projecte: Servidor Proxy transparent basat en Linux

Download Report

Transcript iptables - Projecte: Servidor Proxy transparent basat en Linux

Proxy Transparent basat
en Linux mode text
M. Angel Esteban - ASIX2
24/06/2014
http://www.projectelinux.com
Què és un Proxy?
És un hardware/software que fa d'intermediari entre
els nostres clients web i Internet
Què significa Transparent?
Un Proxy Transparent és aquell que té els
mecanismes necessaris per què no calgui cap
configuració per part del client.
Configuració zero
Avantatges
•
Filtrat: Podrem decidir a quins continguts es
podran accedir
•
Velocitat: Sistema de memòria cau que accelera
l’accés a pàgines redundants
•
Simplicitat: No cal cap tipus de configuració als
clients
Desavantatges
•
Autentificació: Els proxies en mode transparent
perden les seves característiques d’autentificació
d’usuari.
Ingredients (Hardware)
Adaptador /dev/eth0 (internet)
Ingredients (Hardware)
Adaptador /dev/eth1 (xarxa interna)
Ingredients (Hardware)
Esquema
Ingredients (Software)
•
Sistema Operatiu: Debian Linux
•
DHCP: isc-dhcp-server
•
DNS: bind9
•
Proxy: squid
•
Tallafocs / Router: iptables
•
OpenDNS
Debian Linux 7
A aquest projecte s’ha optat per treballar amb
Debian Linux en mode texte
http://www.debian.org
DHCP
•
DHCP és un servei que permetrà assignar
adreces IP automàticament a les màquines de la
nostra xarxa Interna.
•
Utilitzarem el paquet isc-dhcp-server de debian
•
Per tal de fer-lo funcionat va caldre editar l’arxiu
/etc/dhcp/dhcpd.conf on definirem rangs IP i
reserves IP
DHCP
Reinicia el servei
DHCP
service isc-dhcp-server restart
DNS
•
No és 100% necessari, però ens permetrà
simplificar l’accés a les nostres màquines ja que
no caldrà conèixer la seva IP
•
El nostre server (172.20.0.1) s’anomenarà trasto i
la màquina client windows 8 amb reserva IP
tindrá de nom windows8.
DNS
• Utilitzarem el software BIND9
• El servei bind es reinicialitzarà amb aquesta ordre:
service bind9 restart
named.conf.options
named.conf.local
DNS
db.casa.local
db.0.20.172
Squid
•
Es tracta d’un software que fa que el nostre
servidor actuï com a proxy.
•
Per defecte escolta al port 3128 i haurem de
configurar els navegadors clients per tal que
puguin navegar a través d’ell.
•
Permet definir una llista ACL amb regles d’accés.
Squid
Configurarem Squid editant l’arxiu squid.conf
Squid: squid.conf
acl
acl
acl
acl
acl
acl
acl
localhost src 127.0.0.1/32
to_localhost dst 127.0.0.0/8 0.0.0.0/32
entraip src "/etc/squid/entraip"
nodomini url_regex "/etc/squid/nodomini"
noextensions url_regex "/etc/squid/noextensions"
nomac arp "/etc/squid/nomac"
horarioficina time M T W H F 08:00-14:00
.facebook.com
.faq-mac.com
.exe$
.avi$
.mpg$
.mpeg$
.mp3$
Squid: squid.conf
http_access allow localhost
http_access deny nodomini
http_access deny noextensions
reply_body_max_size 100 MB all
http_access deny nomac
http_access allow entraip horarioficina
http_access deny all
Squid: Port per defecte
Squid escolta per defecte el port 3128. Nosaltres
modificarem aquest port pel 8080 i farem que actuï de
manera transparent
http_port 172.20.0.1:8080 transparent
Ara només caldrà ‘enganyar’ a l’ordinador per que
redirigeixi totes les peticions rebudes al port 80 cap al port
8080. Això ho farem amb iptables
iptables
•
Iptables farà que el nostre ordinador actuï com a
•
Tallafocs
•
Router
iptables
•
Cada cop que executem IPTables definirem una
regla de tipus
•
INPUT
•
OUTPUT
•
FORWARD
iptables
Les definirem mitjançant un script
A continuació veurem alguna de les regles que he utilitzat
al projecte
iptables: Filtres Generals
Amb el paràmetre -P definim filtres generals. Amb els dos
comandaments següents tallo tot el tràfic d’entrada però
permetré el tràfic de sortida
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
Més tard definirem regles més particulars que definiran
excepcions com ara accessos ssh (port 22) o web (port
80) que ara per ara estan tallats.
iptables: Filtres
Amb el paràmetre -A afegim més normes (append) a les
generals ja definides. Aquesta permetrà tot el tràfic
d’entrada i sortida de la interficie eth1. La interficie eth0
romandrà tancada per la regla general anterior.
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables: Filtres
També podem obrir ports. La interfície eth0 està tancada
per defecte, però aquest comandament obrirà el port 22
de la mateixa, permetent l’accés SSH des de l’exterior.
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables: NAT
Regla NAT, modifica el destí de les trames web (port 80) i
fa que vagin directes al port 8080 de la IP 172.20.0.1
(servidor proxy transparent)
iptables -t nat -A PREROUTING -i eth1 -p tcp -s
172.20.0.0/24 --dport 80 -j DNAT --to 172.20.0.1:8080
OpenDNS
208.67.222.222
208.67.220.220
OpenDNS
OpenDNS ens aporta característiques exteses com
ara:
•
Filtrat de continguts per categories
•
Protecció contra Phishing, malware, etc…
•
Personalització
OpenDNS: Filtrat
OpenDNS: Personalització
OpenDNS: Estadístiques
Gràcies