21
Linux palomuurina (iptables) sekä squid-proxy

Linux palomuurina (iptables) sekä squid-proxy

  • 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

Page 1: Linux palomuurina (iptables) sekä squid-proxy

Linux palomuurina (iptables) sekä squid-proxy

Page 2: 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ä.

Page 3: Linux palomuurina (iptables) sekä squid-proxy

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)

Page 4: Linux palomuurina (iptables) sekä squid-proxy

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).

Page 5: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 6: Linux palomuurina (iptables) sekä squid-proxy

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).

Page 7: Linux palomuurina (iptables) sekä squid-proxy

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).

Page 8: Linux palomuurina (iptables) sekä squid-proxy

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ä.

Page 9: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 10: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 11: Linux palomuurina (iptables) sekä squid-proxy

Squid – välimuisti

• Välimuistilla (cache) tarkoitetaan Internetistä haettavan tiedon tallentamista paikallisesti välimuistipalvelua ajavalle palvelimelle.

• Etuina hakuaikojen paraneminen ja ulkoverkon kuorman aleneminen.

Page 12: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 13: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 14: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 15: Linux palomuurina (iptables) sekä squid-proxy

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.

Page 16: Linux palomuurina (iptables) sekä squid-proxy

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

Page 17: Linux palomuurina (iptables) sekä squid-proxy

# 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

Page 18: Linux palomuurina (iptables) sekä squid-proxy

# 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)

Page 19: Linux palomuurina (iptables) sekä squid-proxy

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

Page 20: Linux palomuurina (iptables) sekä squid-proxy

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

Page 21: Linux palomuurina (iptables) sekä squid-proxy

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