Upload
braith
View
57
Download
0
Embed Size (px)
DESCRIPTION
Linux palomuurina (iptables) sekä squid-proxy. Mikä Iptables on?. Linux-kernelin sisäänrakennetun palomuurin, netfilter , käyttöliittymä . Mukana kaikissa moderneissa Linux-distroissa. Käytetään komentoriviltä, mutta saatavissa myös graafisia käyttöliittymiä. . Iptables - historia. - PowerPoint PPT Presentation
Citation preview
Linux palomuurina (iptables) sekä squid-proxy
Mikä Iptables on?
• Linux-kernelin sisäänrakennetun palomuurin, netfilter, käyttöliittymä.
• Mukana kaikissa moderneissa Linux-distroissa.• Käytetään komentoriviltä, mutta saatavissa
myös graafisia käyttöliittymiä.
Iptables - historia
• Netfilter/iptables -projektin aloitti Rusty Russell vuonna 1998
• Netfilter valmis 2000, jolloin se liitettiin kernelin versioon 2.3.Ipfw(BSD)-> ipfwadm(Kernel 2.0)-> Netfilter(Kernel 2.3(devel kernel)->2.2) -> Iptables(Kernel 2.4,2.6)
Iptables - toiminta
• Iptablesin käyttämiseen tarvitaan root-käyttäjän oikeudet.
• Iptables luo netfilterille sääntöjä(rules), jotka kootaan ketjuiksi (chain) -> Ketjut muodostavat taulukoita (tables).
Iptables - ipfwadm ->
• Ipfwadm:in toimintamallissa oli lista sääntöjä, joista jokainen määritteli paketin, johon kyseinen sääntö kohdennettiin, ja toiminnan.
• Ipchains lisäsi ajatusmallin sääntöjen ketjuttamisesta
• Iptables laajensi ajatusta edelleen tekemällä näistä säännöistä tauluja.
Iptables – tilallinen vs. tilaton
• Iptablesissa käytetyt ratkaisut mahdollistavat tarkkojen ns. tilallisten (stateful) palomuurien toteuttamisen. Iptables pitää kirjaa muodostetuista TCP- ja UDP-yhteyksistä ja sallii vain yhteyteen kuuluvat paketit.
• Ipchains:illa voidaan rakentaa vain tilattomia (stateless) ratkaisuja (poislukien muutama hyvin rajoitettu tapaus).
Iptables - tulevaisuus
• Iptables korvautuu tulevaisuudessa nftables-nimisellä toteutuksella (tällä hetkellä alpha-kehitysvaiheessa)tai
• vaihtoehtoisesti Xtables2:illa (jonka ajatus pohjautuu kernelissä jo olevan koodin hienovaraiseen parantamiseen asteittain).
Iptables - mahdollisuudet
• Iptablesilla voidaan toteuttaa erilaisten palomuurien lisäksi:– NAT- ja piilotus(masquerading) palveluita Internet-
yhteyden jakamiseksi muille verkon käyttäjille– Pakettien priorisointia (Qos)– Jopa bittitason muutoksia läpikulkevien pakettien
otsikko(header)tietoihin.– Erityyppisiä proxyjä.
Mikä Squid on?
• Squid on välitys(proxy)- ja välimuistipalvelu.• Pääasialliset käyttökohteet HTTP ja FTP.• On lisäksi kattava työkalu liikenteen
suodatukseen ja uudelleenohjaukseen iptablesin rinnalla.
• Tarkoitettu ajettavaksi Unix-tyylisissä järjestelmissä, mutta toimii myös Windows-pohjaisissa.
Squid - historia
• Kehitystyön alullepanija oli Duane Wessels, Coloradon yliopistosta.
• Kehitystyö nykyään lähes kokonaan vapaaehtoistyön varassa.
• Squid on ilmainen ja julkaistu GNU GPL:n (General Public License) alaisena.
Squid – välimuisti
• Välimuistilla (cache) tarkoitetaan Internetistä haettavan tiedon tallentamista paikallisesti välimuistipalvelua ajavalle palvelimelle.
• Etuina hakuaikojen paraneminen ja ulkoverkon kuorman aleneminen.
Squid - välityspalvelu
• Välityspalvelin(proxy) toimii välittäjänä asiakaskoneen ja esimerkiksi haettavan www-sivun palvelimen välissä.
• Haluttaessa kaikki liikenne ajetaan määrätyn välityspalvelimen läpi.
• Menetelmä tarjoaa osittaisen anonymiteetin ulkoverkkoon lähtevän liikenteen suhteen.
Squid – välityspalvelu, vastuu
• Menetelmä tarjoaa myös mahdollisuuden rajoittaa tietyille sivustoille pääsyä, tallentaa haetuista sivuista logeja ja asettaa osa sivuista tai palveluista määrätyille käyttäjille sallituiksi.
• Välitettävää tietoa voidaan halutessa myös tarkkailla esimerkiksi viruksien varalta.
• Mahdollisuudet tuovat riskejä ja vastuuta -> kirjesalaisuus, yksilönsuoja.
Squid – transparent proxy
• Käyttötarkoituksen mukaan erilaisia välityspalvelintyyppejä on monia.
• Squid on mahdollista konfiguroida suhteellisen helposti halutuntyyppiseksi ja tarvittaessa muuttaa toiseksi.
• Yksi näistä tyypeistä on läpinäkyvä välityspal-velin(transparent proxy), termillä tarkoitetaan yleensä keskeyttävää välityspalvelinta.
Squid – transparent proxy
• Keskeyttävä välityspalvelin ei näy suoraan käyttäjälle, eikä velvoita käyttöönottoa asiakaspuolen koneelta (käyttäjä on yleensä tietämätön kyseisen proxyn olemassaolosta)
• Käyttäjä ei itse pääse vaikuttamaan siihen, ajetaanko liikenne proxyn läpi vai ei.
Esimerkkiskripti iptablesille, jolla mahdollistetaan keskeyttävä proxy ja toteutetaan pakettisuodatusta#!/bin/shLAN="eth1"INTERNET="eth0"IPTABLES="/sbin/iptables”SQUID_SERVER=”192.168.0.1”SQUID_PORT=”3128”
# Drop ICMP echo-request messages sent to broadcast or multicast addressesecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Drop source routed packetsecho 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Enable TCP SYN cookie protection from SYN floodsecho 1 > /proc/sys/net/ipv4/tcp_syncookies
# Don't accept ICMP redirect messagesecho 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Don't send ICMP redirect messagesecho 0 > /proc/sys/net/ipv4/conf/all/send_redirects
# Enable source address spoofing protectionecho 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# Log packets with impossible source addressesecho 1 > /proc/sys/net/ipv4/conf/all/log_martians
# Flush all chains$IPTABLES --flush
# Allow unlimited traffic on the loopback interface$IPTABLES -A INPUT -i lo -j ACCEPT$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Set default policies$IPTABLES --policy INPUT DROP$IPTABLES --policy OUTPUT DROP$IPTABLES --policy FORWARD DROP
# Previously initiated and accepted exchanges bypass rule checking$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow incoming port 22 (ssh) connections on LAN interface$IPTABLES -A INPUT -i $LAN -p tcp --destination-port 22 -m state \--state NEW -j ACCEPT
# Allow incoming port (squid) connections on LAN interface$IPTABLES -A INPUT -i $LAN -p tcp --destination-port $SQUID_PORT -m state \--state NEW -j ACCEPT
# Allow ICMP ECHO REQUESTS on LAN interface$IPTABLES -A INPUT -i $LAN -p icmp --icmp-type echo-request -j ACCEPT
# DNAT port 80 request coming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT# if it is same system$IPTABLES -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# Allow ssh on LAN interface$IPTABLES -A OUTPUT -o $LAN -p tcp --destination-port 22 -m state \--state NEW -j ACCEPT
# Allow Squid-proxy on http, https$IPTABLES -A OUTPUT -o $INTERNET -p tcp --destination-port 80 -m state \--state NEW -j ACCEPT$IPTABLES -A OUTPUT -o $INTERNET -p tcp --destination-port 443 -m state \--state NEW -j ACCEPT
# LOGDROP chain -> log and drop packets$IPTABLES -N LOGDROP$IPTABLES -A LOGDROP -j LOG$IPTABLES -A LOGDROP -j DROP
# Drop all other traffic$IPTABLES -A INPUT -j LOGDROP
# Have these rules take effect when iptables is started/sbin/service iptables save
TAI/etc/rc.localin sisään rivi./path/to/firewall/firewall.script (sisältää mainitun skriptin, tiedostolla ajo-oikeudet -> chmod +x)
Squid - asennus
• Debianissa:– su– apt-get install squid– nano –w /etc/squid/squid.conf (4350 riviä, joka
pääasiassa koostuu inline dokumentoinnista)– /etc/init.d/squid restart
Perusasetukset löydyttävä:– cache_dir
• Välimuistin hakemisto, tallennustapa ja koko• Esimerkiksi: cache_dir ufs /usr/local/squid/cache 100 16 256
(100 tarkoittaa 100Mt välimuistin kokoa.)
– http_port• Välimuistin portti (tämä selaimen cache-kenttään), 3128 vakio.
– cache_effective_user & cache_effective_ group• Käyttäjä ja ryhmä, jonka oikeuksilla squid:ia ajetaan. Käyttäjällä oltava luku-/kirjoitusoikeudet asetetun
välimuistin hakemistoon ja log-tiedostoihin.
Määritellään proxyn toimintatila(Tässä tapauksessa keskeyttävä(intercepting):
– httpd_accel_host virtual– httpd_accel_port 80– httpd_accel_with_proxy on– httpd_accel_uses_host_header on– acl lan src 192.168.0.1 192.168.0.0/24 <- sallitut yhteydenottajat– http_access allow localhost– http_access allow lan
Lähteet• http://en.wikipedia.org/wiki/Internet_Cache_Protocol• http://en.wikipedia.org/wiki/Iptables• http://en.wikipedia.org/wiki/Network_address_translation• http://en.wikipedia.org/wiki/Proxy_server• http://en.wikipedia.org/wiki/Squid_%28software%29• http://fi.wikipedia.org/wiki/Iptables• http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html• http://www.deckle.co.za/squid-users-guide/• http://www.frozentux.net/documents/iptables-tutorial/• http://www.linuxp2p.net/mirrors/www.brandonhutchinson.com/squid_iptable
s_firewall.html• http://www.netfilter.org/• http://www.squid-cache.org/• http://wiki.squid-cache.org/ConfigExamples/FullyTransparentWithTPROXY?hig
hlight=%28ConfigExamples/Strange%29|%28ConfigExamples/Reverse%29|%28ConfigExamples/Authenticate%29|%
• http://www.visolve.com/squid/Squid_tutorial.php