210 likes | 428 Views
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.
E N D
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) palomuurientoteuttamisen. Iptables pitää kirjaa muodostetuista TCP- ja UDP-yhteyksistä ja sallii vain yhteyteen kuuluvat paketit. • Ipchains:illavoidaanrakentaa vain tilattomia (stateless) ratkaisuja (poislukienmuutamahyvinrajoitettutapaus).
Iptables - tulevaisuus • Iptableskorvautuutulevaisuudessanftables-nimisellätoteutuksella (tällähetkellä alpha-kehitysvaiheessa) tai • vaihtoehtoisesti Xtables2:illa (jonkaajatuspohjautuukernelissäjoolevankoodinhienovaraiseenparantamiseenasteittain).
Iptables - mahdollisuudet • Iptablesillavoidaantoteuttaaerilaistenpalomuurienlisäksi: • NAT- japiilotus(masquerading)palveluitaInternet-yhteydenjakamiseksimuilleverkonkäyttäjille • Pakettienpriorisointia (Qos) • Jopabittitasonmuutoksialäpikulkevienpakettienotsikko(header)tietoihin. • Erityyppisiäproxyjä.
Mikä Squid on? • Squid on välitys(proxy)- javälimuistipalvelu. • Pääasiallisetkäyttökohteet HTTP ja FTP. • On lisäksikattavatyökaluliikenteensuodatukseenjauudelleenohjaukseeniptablesinrinnalla. • TarkoitettuajettavaksiUnix-tyylisissäjärjestelmissä, muttatoimiimyös Windows-pohjaisissa.
Squid - historia • Kehitystyönalullepanijaoli Duane Wessels, Coloradonyliopistosta. • Kehitystyönykyäänläheskokonaanvapaaehtoistyönvarassa. • Squid on ilmainenjajulkaistuGNU GPL:n (General Public License) alaisena.
Squid – välimuisti • Välimuistilla (cache) tarkoitetaanInternetistähaettavantiedontallentamistapaikallisestivälimuistipalveluaajavallepalvelimelle. • Etuinahakuaikojenparaneminenjaulkoverkonkuormanaleneminen.
Squid - välityspalvelu • Välityspalvelin(proxy) toimiivälittäjänäasiakaskoneenjaesimerkiksihaettavanwww-sivunpalvelimenvälissä. • Haluttaessakaikkiliikenneajetaanmäärätynvälityspalvelimenläpi. • Menetelmätarjoaaosittaisenanonymiteetinulkoverkkoonlähtevänliikenteensuhteen.
Squid – välityspalvelu, vastuu • Menetelmätarjoaamyösmahdollisuudenrajoittaatietyillesivustoillepääsyä, tallentaahaetuistasivuistalogejajaasettaaosasivuista tai palveluistamäärätyillekäyttäjillesallituiksi. • Välitettäväätietoavoidaanhalutessamyöstarkkaillaesimerkiksiviruksienvaralta. • Mahdollisuudettuovatriskejäjavastuuta -> kirjesalaisuus, yksilönsuoja.
Squid – transparent proxy • Käyttötarkoituksenmukaanerilaisiavälityspalvelintyyppejäon monia. • Squid on mahdollistakonfiguroidasuhteellisenhelpostihalutuntyyppiseksijatarvittaessamuuttaatoiseksi. • Yksinäistätyypeistä on läpinäkyvävälityspal-velin(transparent proxy), termillätarkoitetaanyleensäkeskeyttäväävälityspalvelinta.
Squid – transparent proxy • Keskeyttävävälityspalvelineinäysuoraankäyttäjälle, eikävelvoitakäyttöönottoaasiakaspuolenkoneelta (käyttäjä on yleensätietämätönkyseisenproxynolemassaolosta) • Käyttäjäeiitsepääsevaikuttamaansiihen, ajetaankoliikenneproxynläpivaiei.
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
Perusasetuksetlöydyttävä: • cache_dir • Välimuistinhakemisto, tallennustapajakoko • Esimerkiksi: cache_dirufs /usr/local/squid/cache 100 16 256 (100 tarkoittaa 100Mt välimuistinkokoa.) • http_port • Välimuistinportti (tämäselaimen cache-kenttään), 3128 vakio. • cache_effective_user& cache_effective_ group • Käyttäjäjaryhmä, jonkaoikeuksillasquid:iaajetaan. Käyttäjälläoltavaluku-/kirjoitusoikeudetasetetunvälimuistinhakemistoonja 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 • acllansrc192.168.0.1 192.168.0.0/24 <- sallitutyhteydenottajat • http_accessallow localhost • http_accessallow 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_iptables_firewall.html • http://www.netfilter.org/ • http://www.squid-cache.org/ • http://wiki.squid-cache.org/ConfigExamples/FullyTransparentWithTPROXY?highlight=%28ConfigExamples/Strange%29|%28ConfigExamples/Reverse%29|%28ConfigExamples/Authenticate%29|% • http://www.visolve.com/squid/Squid_tutorial.php